aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ipmi.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ipmi.h')
-rw-r--r--include/linux/ipmi.h42
1 files changed, 40 insertions, 2 deletions
diff --git a/include/linux/ipmi.h b/include/linux/ipmi.h
index 65aae34759de..ca85cf894e33 100644
--- a/include/linux/ipmi.h
+++ b/include/linux/ipmi.h
@@ -111,7 +111,7 @@ struct ipmi_ipmb_addr {
111 * A LAN Address. This is an address to/from a LAN interface bridged 111 * A LAN Address. This is an address to/from a LAN interface bridged
112 * by the BMC, not an address actually out on the LAN. 112 * by the BMC, not an address actually out on the LAN.
113 * 113 *
114 * A concious decision was made here to deviate slightly from the IPMI 114 * A conscious decision was made here to deviate slightly from the IPMI
115 * spec. We do not use rqSWID and rsSWID like it shows in the 115 * spec. We do not use rqSWID and rsSWID like it shows in the
116 * message. Instead, we use remote_SWID and local_SWID. This means 116 * message. Instead, we use remote_SWID and local_SWID. This means
117 * that any message (a request or response) from another device will 117 * that any message (a request or response) from another device will
@@ -259,7 +259,7 @@ struct ipmi_recv_msg {
259 void (*done)(struct ipmi_recv_msg *msg); 259 void (*done)(struct ipmi_recv_msg *msg);
260 260
261 /* Place-holder for the data, don't make any assumptions about 261 /* Place-holder for the data, don't make any assumptions about
262 the size or existance of this, since it may change. */ 262 the size or existence of this, since it may change. */
263 unsigned char msg_data[IPMI_MAX_MSG_LENGTH]; 263 unsigned char msg_data[IPMI_MAX_MSG_LENGTH];
264}; 264};
265 265
@@ -454,6 +454,44 @@ unsigned int ipmi_addr_length(int addr_type);
454/* Validate that the given IPMI address is valid. */ 454/* Validate that the given IPMI address is valid. */
455int ipmi_validate_addr(struct ipmi_addr *addr, int len); 455int ipmi_validate_addr(struct ipmi_addr *addr, int len);
456 456
457/*
458 * How did the IPMI driver find out about the device?
459 */
460enum ipmi_addr_src {
461 SI_INVALID = 0, SI_HOTMOD, SI_HARDCODED, SI_SPMI, SI_ACPI, SI_SMBIOS,
462 SI_PCI, SI_DEVICETREE, SI_DEFAULT
463};
464
465union ipmi_smi_info_union {
466 /*
467 * the acpi_info element is defined for the SI_ACPI
468 * address type
469 */
470 struct {
471 void *acpi_handle;
472 } acpi_info;
473};
474
475struct ipmi_smi_info {
476 enum ipmi_addr_src addr_src;
477
478 /*
479 * Base device for the interface. Don't forget to put this when
480 * you are done.
481 */
482 struct device *dev;
483
484 /*
485 * The addr_info provides more detailed info for some IPMI
486 * devices, depending on the addr_src. Currently only SI_ACPI
487 * info is provided.
488 */
489 union ipmi_smi_info_union addr_info;
490};
491
492/* This is to get the private info of ipmi_smi_t */
493extern int ipmi_get_smi_info(int if_num, struct ipmi_smi_info *data);
494
457#endif /* __KERNEL__ */ 495#endif /* __KERNEL__ */
458 496
459 497