diff options
Diffstat (limited to 'drivers/staging/tidspbridge/include/dspbridge/cfg.h')
-rw-r--r-- | drivers/staging/tidspbridge/include/dspbridge/cfg.h | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/drivers/staging/tidspbridge/include/dspbridge/cfg.h b/drivers/staging/tidspbridge/include/dspbridge/cfg.h new file mode 100644 index 000000000000..05a8999070f8 --- /dev/null +++ b/drivers/staging/tidspbridge/include/dspbridge/cfg.h @@ -0,0 +1,222 @@ +/* + * cfg.h + * + * DSP-BIOS Bridge driver support functions for TI OMAP processors. + * + * PM Configuration module. + * + * Copyright (C) 2005-2006 Texas Instruments, Inc. + * + * This package is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef CFG_ +#define CFG_ +#include <dspbridge/host_os.h> +#include <dspbridge/cfgdefs.h> + +/* + * ======== cfg_exit ======== + * Purpose: + * Discontinue usage of the CFG module. + * Parameters: + * Returns: + * Requires: + * cfg_init(void) was previously called. + * Ensures: + * Resources acquired in cfg_init(void) are freed. + */ +extern void cfg_exit(void); + +/* + * ======== cfg_get_auto_start ======== + * Purpose: + * Retreive the autostart mask, if any, for this board. + * Parameters: + * dev_node_obj: Handle to the dev_node who's driver we are querying. + * auto_start: Ptr to location for 32 bit autostart mask. + * Returns: + * 0: Success. + * -EFAULT: dev_node_obj is invalid. + * -ENODATA: Unable to retreive resource. + * Requires: + * CFG initialized. + * Ensures: + * 0: *auto_start contains autostart mask for this devnode. + */ +extern int cfg_get_auto_start(struct cfg_devnode *dev_node_obj, + u32 *auto_start); + +/* + * ======== cfg_get_cd_version ======== + * Purpose: + * Retrieves the version of the PM Class Driver. + * Parameters: + * version: Ptr to u32 to contain version number upon return. + * Returns: + * 0: Success. version contains Class Driver version in + * the form: 0xAABBCCDD where AABB is Major version and + * CCDD is Minor. + * -EPERM: Failure. + * Requires: + * CFG initialized. + * Ensures: + * 0: Success. + * else: *version is NULL. + */ +extern int cfg_get_cd_version(u32 *version); + +/* + * ======== cfg_get_dev_object ======== + * Purpose: + * Retrieve the Device Object handle for a given devnode. + * Parameters: + * dev_node_obj: Platform's dev_node handle from which to retrieve + * value. + * value: Ptr to location to store the value. + * Returns: + * 0: Success. + * -EFAULT: dev_node_obj is invalid or device_obj is invalid. + * -ENODATA: The resource is not available. + * Requires: + * CFG initialized. + * Ensures: + * 0: *value is set to the retrieved u32. + * else: *value is set to 0L. + */ +extern int cfg_get_dev_object(struct cfg_devnode *dev_node_obj, + u32 *value); + +/* + * ======== cfg_get_exec_file ======== + * Purpose: + * Retreive the default executable, if any, for this board. + * Parameters: + * dev_node_obj: Handle to the dev_node who's driver we are querying. + * buf_size: Size of buffer. + * str_exec_file: Ptr to character buf to hold ExecFile. + * Returns: + * 0: Success. + * -EFAULT: dev_node_obj is invalid or str_exec_file is invalid. + * -ENODATA: The resource is not available. + * Requires: + * CFG initialized. + * Ensures: + * 0: Not more than buf_size bytes were copied into str_exec_file, + * and *str_exec_file contains default executable for this + * devnode. + */ +extern int cfg_get_exec_file(struct cfg_devnode *dev_node_obj, + u32 buf_size, char *str_exec_file); + +/* + * ======== cfg_get_object ======== + * Purpose: + * Retrieve the Driver Object handle From the Registry + * Parameters: + * value: Ptr to location to store the value. + * dw_type Type of Object to Get + * Returns: + * 0: Success. + * Requires: + * CFG initialized. + * Ensures: + * 0: *value is set to the retrieved u32(non-Zero). + * else: *value is set to 0L. + */ +extern int cfg_get_object(u32 *value, u8 dw_type); + +/* + * ======== cfg_get_perf_value ======== + * Purpose: + * Retrieve a flag indicating whether PERF should log statistics for the + * PM class driver. + * Parameters: + * enable_perf: Location to store flag. 0 indicates the key was + * not found, or had a zero value. A nonzero value + * means the key was found and had a nonzero value. + * Returns: + * Requires: + * enable_perf != NULL; + * Ensures: + */ +extern void cfg_get_perf_value(bool *enable_perf); + +/* + * ======== cfg_get_zl_file ======== + * Purpose: + * Retreive the ZLFile, if any, for this board. + * Parameters: + * dev_node_obj: Handle to the dev_node who's driver we are querying. + * buf_size: Size of buffer. + * str_zl_file_name: Ptr to character buf to hold ZLFileName. + * Returns: + * 0: Success. + * -EFAULT: str_zl_file_name is invalid or dev_node_obj is invalid. + * -ENODATA: couldn't find the ZLFileName. + * Requires: + * CFG initialized. + * Ensures: + * 0: Not more than buf_size bytes were copied into + * str_zl_file_name, and *str_zl_file_name contains ZLFileName + * for this devnode. + */ +extern int cfg_get_zl_file(struct cfg_devnode *dev_node_obj, + u32 buf_size, char *str_zl_file_name); + +/* + * ======== cfg_init ======== + * Purpose: + * Initialize the CFG module's private state. + * Parameters: + * Returns: + * TRUE if initialized; FALSE if error occured. + * Requires: + * Ensures: + * A requirement for each of the other public CFG functions. + */ +extern bool cfg_init(void); + +/* + * ======== cfg_set_dev_object ======== + * Purpose: + * Store the Device Object handle for a given devnode. + * Parameters: + * dev_node_obj: Platform's dev_node handle we are storing value with. + * value: Arbitrary value to store. + * Returns: + * 0: Success. + * -EFAULT: dev_node_obj is invalid. + * -EPERM: Internal Error. + * Requires: + * CFG initialized. + * Ensures: + * 0: The Private u32 was successfully set. + */ +extern int cfg_set_dev_object(struct cfg_devnode *dev_node_obj, + u32 value); + +/* + * ======== CFG_SetDrvObject ======== + * Purpose: + * Store the Driver Object handle. + * Parameters: + * value: Arbitrary value to store. + * dw_type Type of Object to Store + * Returns: + * 0: Success. + * -EPERM: Internal Error. + * Requires: + * CFG initialized. + * Ensures: + * 0: The Private u32 was successfully set. + */ +extern int cfg_set_object(u32 value, u8 dw_type); + +#endif /* CFG_ */ |