diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ipmi.h | 38 | ||||
| -rw-r--r-- | include/linux/ipmi_smi.h | 8 | 
2 files changed, 46 insertions, 0 deletions
diff --git a/include/linux/ipmi.h b/include/linux/ipmi.h index 65aae34759d..045f2f275cd 100644 --- a/include/linux/ipmi.h +++ b/include/linux/ipmi.h @@ -454,6 +454,44 @@ unsigned int ipmi_addr_length(int addr_type);  /* Validate that the given IPMI address is valid. */  int ipmi_validate_addr(struct ipmi_addr *addr, int len); +/* + * How did the IPMI driver find out about the device? + */ +enum ipmi_addr_src { +	SI_INVALID = 0, SI_HOTMOD, SI_HARDCODED, SI_SPMI, SI_ACPI, SI_SMBIOS, +	SI_PCI,	SI_DEVICETREE, SI_DEFAULT +}; + +union ipmi_smi_info_union { +	/* +	 * the acpi_info element is defined for the SI_ACPI +	 * address type +	 */ +	struct { +		void *acpi_handle; +	} acpi_info; +}; + +struct ipmi_smi_info { +	enum ipmi_addr_src addr_src; + +	/* +	 * Base device for the interface.  Don't forget to put this when +	 * you are done. +	 */ +	struct device *dev; + +	/* +	 * The addr_info provides more detailed info for some IPMI +	 * devices, depending on the addr_src.  Currently only SI_ACPI +	 * info is provided. +	 */ +	union ipmi_smi_info_union addr_info; +}; + +/* This is to get the private info of ipmi_smi_t */ +extern int ipmi_get_smi_info(int if_num, struct ipmi_smi_info *data); +  #endif /* __KERNEL__ */ diff --git a/include/linux/ipmi_smi.h b/include/linux/ipmi_smi.h index 4b48318ac54..906590aa690 100644 --- a/include/linux/ipmi_smi.h +++ b/include/linux/ipmi_smi.h @@ -39,6 +39,7 @@  #include <linux/module.h>  #include <linux/device.h>  #include <linux/platform_device.h> +#include <linux/ipmi.h>  /* This files describes the interface for IPMI system management interface     drivers to bind into the IPMI message handler. */ @@ -86,6 +87,13 @@ struct ipmi_smi_handlers {  	int (*start_processing)(void       *send_info,  				ipmi_smi_t new_intf); +	/* +	 * Get the detailed private info of the low level interface and store +	 * it into the structure of ipmi_smi_data. For example: the +	 * ACPI device handle will be returned for the pnp_acpi IPMI device. +	 */ +	int (*get_smi_info)(void *send_info, struct ipmi_smi_info *data); +  	/* Called to enqueue an SMI message to be sent.  This  	   operation is not allowed to fail.  If an error occurs, it  	   should report back the error in a received message.  It may  |