Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b4bd7d59451960d4e1d994c01581b31b08fe3720
Commit:     b4bd7d59451960d4e1d994c01581b31b08fe3720
Parent:     13050d89019a4127178c0945733fb23649f9f3fe
Author:     Wim Van Sebroeck <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 04:20:58 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Feb 8 09:22:37 2008 -0800

    SMBIOS/DMI: add type 41 = Onboard Devices Extended Information
    
    From version 2.6 of the SMBIOS standard, type 10 (On Board Devices
    Information) becomes obsolete.  The reason for this is that no further
    fields can be added to this structure without adversely affecting existing
    software's ability to properly parse the data.
    
    Therefore type 41 (Onboard Devices Extended Information) was added.
    The structure is as follows:
    
    struct smbios_type_41 {
        u8 type;
        u8 length;
        u16 handle;
        u8 reference_designation_string;
        u8 device_type;         /* same device type as in type 10 */
        u8 device_type_instance;
        u16 segment_group_number;
        u8 bus_number;
        u8 device_function_number;
    };
    
    For more info: http://www.dmtf.org/standards/smbios
    
    Signed-off-by: Wim Van Sebroeck <[EMAIL PROTECTED]>
    Cc: Jean Delvare <[EMAIL PROTECTED]>
    Cc: Len Brown <[EMAIL PROTECTED]>
    Cc: Jeff Garzik <[EMAIL PROTECTED]>
    Cc: Tejun Heo <[EMAIL PROTECTED]>
    Cc: Alan Cox <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/firmware/dmi_scan.c |   25 +++++++++++++++++++++++++
 include/linux/dmi.h         |    5 ++++-
 2 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 1412d7b..653265a 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -250,6 +250,28 @@ static void __init dmi_save_ipmi_device(const struct 
dmi_header *dm)
        list_add(&dev->list, &dmi_devices);
 }
 
+static void __init dmi_save_extended_devices(const struct dmi_header *dm)
+{
+       const u8 *d = (u8*) dm + 5;
+       struct dmi_device *dev;
+
+       /* Skip disabled device */
+       if ((*d & 0x80) == 0)
+               return;
+
+       dev = dmi_alloc(sizeof(*dev));
+       if (!dev) {
+               printk(KERN_ERR "dmi_save_extended_devices: out of memory.\n");
+               return;
+       }
+
+       dev->type = *d-- & 0x7f;
+       dev->name = dmi_string(dm, *d);
+       dev->device_data = NULL;
+
+       list_add(&dev->list, &dmi_devices);
+}
+
 /*
  *     Process a DMI table entry. Right now all we care about are the BIOS
  *     and machine entries. For 2.5 we should pull the smbus controller info
@@ -292,6 +314,9 @@ static void __init dmi_decode(const struct dmi_header *dm)
                break;
        case 38:        /* IPMI Device Information */
                dmi_save_ipmi_device(dm);
+               break;
+       case 41:        /* Onboard Devices Extended Information */
+               dmi_save_extended_devices(dm);
        }
 }
 
diff --git a/include/linux/dmi.h b/include/linux/dmi.h
index bbc9992..325acdf 100644
--- a/include/linux/dmi.h
+++ b/include/linux/dmi.h
@@ -35,8 +35,11 @@ enum dmi_device_type {
        DMI_DEV_TYPE_ETHERNET,
        DMI_DEV_TYPE_TOKENRING,
        DMI_DEV_TYPE_SOUND,
+       DMI_DEV_TYPE_PATA,
+       DMI_DEV_TYPE_SATA,
+       DMI_DEV_TYPE_SAS,
        DMI_DEV_TYPE_IPMI = -1,
-       DMI_DEV_TYPE_OEM_STRING = -2
+       DMI_DEV_TYPE_OEM_STRING = -2,
 };
 
 struct dmi_header {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to