]> Devoid-pointer.net GitWeb - omnibook.git/commitdiff
Redo laptop model detection engine:
authorMathieu Bérard <mathieu.berard@crans.org>
Tue, 27 Jun 2006 23:23:47 +0000 (23:23 +0000)
committerMathieu Bérard <mathieu.berard@crans.org>
Tue, 27 Jun 2006 23:23:47 +0000 (23:23 +0000)
-Convert and merge omnibook_models_t and omnibook_tc_t structures into a giant dmi_system_id
-Use dmi_check_system + a dmi_mached function
-Kill cmp_with_glob, omnibook_ident and omnibook_get_tc

Make some functions static

blank.c
ec.c
ec.h
fan_policy.c
init.c
laptop.h
lcd.c
temperature.c
touchpad.c

diff --git a/blank.c b/blank.c
index 8659ee28ed2a847cb54f4abec48a1846ccc84baa..86d57e4c3f161080e99b410dffe62103a445e1be 100644 (file)
--- a/blank.c
+++ b/blank.c
@@ -22,7 +22,7 @@
 
 #include "ec.h"
 
-int omnibook_console_blank_enabled = 0;
+static int omnibook_console_blank_enabled = 0;
 
 extern int (*console_blank_hook) (int);
 
diff --git a/ec.c b/ec.c
index e31a7e2894f0dc6006da22be186700b6dee2c32c..e3f97e385f5633aade1e2a7f6f323d117b0a4c9a 100644 (file)
--- a/ec.c
+++ b/ec.c
@@ -13,6 +13,7 @@
  * General Public License for more details.
  *
  * Written by Soós Péter <sp@osb.hu>, 2002-2004
+ * Written by Mathieu Bérard <mathieu.berard@crans.org>, 2006
  */
 
 #include <linux/types.h>
diff --git a/ec.h b/ec.h
index 67ef19f8b3ddf24b7d5e05a5e789831a9c1f0faa..1521916fb2da3e36fed9940cbb793ce453974da9 100644 (file)
--- a/ec.h
+++ b/ec.h
@@ -13,6 +13,7 @@
  * General Public License for more details.
  *
  * Written by Soós Péter <sp@osb.hu>, 2002-2004
+ * Written by Mathieu Bérard <mathieu.berard@crans.org>, 2006
  */
 
 extern int omnibook_ec_read(u8 addr, u8 *data);
index 415f81f27b61813dad1e75302abc863d3abb8da9..db740cce4123a327e41ac9cab14667b699689809 100644 (file)
@@ -42,7 +42,7 @@
 #define OMNIBOOK_FAN6_DEFAULT                  95      /* Default value of fan level 6 temperature */
 #define OMNIBOOK_FAN7_DEFAULT                  95      /* Default value of fan level 7 temperature */
 
-u8 omnibook_fan_policy[OMNIBOOK_FAN_LEVELS];
+static u8 omnibook_fan_policy[OMNIBOOK_FAN_LEVELS];
 
 static int omnibook_get_fan_policy(void)
 {
diff --git a/init.c b/init.c
index a95252fdcc034a7cae4fa280361ad632cd0c1605..4f65f52ae53399c2be5b420a258a7902a2f74e15 100644 (file)
--- a/init.c
+++ b/init.c
@@ -12,6 +12,7 @@
  * General Public License for more details.
  *
  * Written by Soós Péter <sp@osb.hu>, 2002-2004
+ * Written by Mathieu Bérard <mathieu.berard@crans.org>, 2006
  */
 
 #ifdef OMNIBOOK_STANDALONE
@@ -38,6 +39,8 @@
 static struct proc_dir_entry *omnibook_proc_root = NULL;
 
 int omnibook_ectype = NONE;
+static char* laptop_model __initdata;
+
 static int omnibook_userset = 0;
 
 /*
@@ -89,68 +92,14 @@ static struct omnibook_feature *omnibook_available_feature;
 extern struct omnibook_feature _features_start[];
 extern struct omnibook_feature _features_end[];
 
-
-/*
- * Compare the saved DMI info at "index" with a string.
- * A '*' at the end of the string will match anything.
- * Returns 0 for a match.
- * 
- * This preserves the semantics of the old omnibook_features[]
- * table.  I don't know if its generally useful or not.
- */
-static int __init cmp_with_glob(int index, char *str)
+static int __init dmi_matched(struct dmi_system_id *dmi)
 {
-       int retval = 0;
-       char *glob;
-       unsigned int len;
-
-       if (str) {
-               glob = strchr(str, '*');
-               len = glob ? glob - str : strlen(str);
-               retval = strncmp(dmi_get_system_info(index), str, len);
-       }
-
-       return retval;
-}
-
-static int __init omnibook_ident(void)
-{
-       struct omnibook_models_t *mp;
-
-       for (mp = omnibook_models; mp->ectype != NONE; ++mp) {
-               /* Check all fields for a match */
-               if (cmp_with_glob(DMI_SYS_VENDOR, mp->sys_vendor))
-                       continue;
-               if (cmp_with_glob(DMI_PRODUCT_NAME, mp->product_name))
-                       continue;
-               if (cmp_with_glob(DMI_PRODUCT_VERSION, mp->product_version))
-                       continue;
-               if (cmp_with_glob(DMI_BOARD_NAME, mp->board_name))
-                       continue;
-
-               /* All required fields matched */
-               break;
-       }
-
-       return (mp - omnibook_models);
-}
-
-static int __init omnibook_get_tc(void)
-{
-       struct omnibook_tc_t *tc;
-
-       for (tc = omnibook_tc; tc->ectype != NONE; ++tc) {
-               /*
-                * Technology code appears in the first two chracters of BIOS version string
-                * ended by a dot, but it prefixed a space character on some models and BIOS
-                * versions.
-                * New HP/Compaq models use more characters (eg. KF_KH.).
-                */
-               if (strstr(dmi_get_system_info(DMI_BIOS_VERSION), tc->tc))
-                       break;
-       }
-
-       return (tc - omnibook_tc);
+       omnibook_ectype = (int) dmi->driver_data;
+       if (dmi->ident)
+               laptop_model = (char*) dmi->ident;
+       else
+               laptop_model = dmi_get_system_info(DMI_PRODUCT_VERSION);
+       return 0;
 }
 
 /* 
@@ -296,15 +245,8 @@ static int __init omnibook_probe(struct platform_device *dev)
                if (!feature->enabled)  
                        continue;
                
-               if ((omnibook_ectype & feature->ectypes) || (!feature->ectypes)) {
-/*                     printk("cursor is at: %p\n", (void*) feature);
-                       if(feature->name)
-                               printk("trying to init:%s\n",feature->name);
-                       else
-                               printk("trying to init nameless feature\n"); */
-
+               if ((omnibook_ectype & feature->ectypes) || (!feature->ectypes))
                        omnibook_init(feature);
-               }
        }
        
        printk(KERN_INFO "%s: Enabled features:",OMNIBOOK_MODULE_NAME);
@@ -409,10 +351,6 @@ static int get_ectype_param(char *buffer, struct kernel_param *kp)
 
 static int __init omnibook_module_init(void)
 {
-       int model = 0;
-       int tc = 0;
-       char *syslog_name;
-       char *glob;
        int retval;
 
        printk(KERN_INFO "%s: Driver version %s.\n", OMNIBOOK_MODULE_NAME,
@@ -422,40 +360,12 @@ static int __init omnibook_module_init(void)
                printk(KERN_WARNING
                       "%s: Forced load with EC firmware type %i.\n",
                       OMNIBOOK_MODULE_NAME, ffs(omnibook_ectype));
-
-       else {
-               model = omnibook_ident();
-               if (omnibook_models[model].ectype != NONE) {
-                       omnibook_ectype = omnibook_models[model].ectype;
-                       syslog_name = omnibook_models[model].syslog_name;
-                       if (!syslog_name) {
-                               syslog_name =
-                                   omnibook_models[model].product_version;
-                               glob = strchr(syslog_name, '*');
-                               if (glob)
-                                       *glob = '\0';
-                       }
-                       printk(KERN_INFO "%s: %s detected.\n",
-                              OMNIBOOK_MODULE_NAME, syslog_name);
-               } else {
-                       /* Without explicit informations try chechking for technology code of HP laptops */
-                       tc = omnibook_get_tc();
-                       if ((strncmp
-                            (dmi_get_system_info(DMI_SYS_VENDOR), HP_SIGNATURE,
-                             strlen(HP_SIGNATURE)) == 0)
-                           && (omnibook_tc[tc].ectype != NONE)) {
-                               omnibook_ectype = omnibook_tc[tc].ectype;
-                               printk(KERN_INFO
-                                      "%s: HP tecnology code %s detected.\n",
-                                      OMNIBOOK_MODULE_NAME,
-                                      omnibook_tc[tc].tc);
-                       } else {
-                               printk(KERN_INFO
-                                      "%s: Unknown model detected.\n",
-                                      OMNIBOOK_MODULE_NAME);
-                       }
-               }
-       }
+       else if ( dmi_check_system(omnibook_ids) ) 
+               printk(KERN_INFO "%s: %s detected.\n", 
+                       OMNIBOOK_MODULE_NAME, laptop_model);
+       else
+               printk(KERN_INFO "%s: Unknown model detected.\n",
+                       OMNIBOOK_MODULE_NAME);
 
        omnibook_proc_root = proc_mkdir(OMNIBOOK_MODULE_NAME, NULL);
        if (!omnibook_proc_root) {
@@ -525,7 +435,7 @@ static void __exit omnibook_module_cleanup(void)
 module_init(omnibook_module_init);
 module_exit(omnibook_module_cleanup);
 
-MODULE_AUTHOR("Soós Péter <sp@osb.hu>");
+MODULE_AUTHOR("Soós Péter, Mathieu Bérard");
 MODULE_DESCRIPTION("Kernel interface for HP OmniBook, HP Pavilion, Toshiba Satellite, Acer Aspire and Compal ACL00 laptops");
 MODULE_LICENSE("GPL");
 module_param_call(ectype, set_ectype_param, get_ectype_param, NULL, S_IRUGO);
index acc745fe3f5c83724591ab412cc1bd4ab69fb959..dd8c97517a34c06fd5c4c55868645e92895ff222 100644 (file)
--- a/laptop.h
+++ b/laptop.h
 
 #define HP_SIGNATURE   "Hewlett-Packard"
 
-struct omnibook_models_t {
-       /* DMI field matchers (table inputs) */
-       char *sys_vendor;
-       char *product_name;
-       char *product_version;
-       char *board_name;
-       /* Table outputs */
-       char *syslog_name;      /* Name which will appear in the syslog */
-       int ectype;     /* Type of the embedded controller firmware, see omnibook.h and README */
-};
-
-static struct omnibook_models_t omnibook_models[] __initdata = {
-  /* sys_vendor product_name                 product_version                   board_name syslog_name                  ectype */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XE3 GF*",            NULL,    NULL,                          XE3GF },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XT1000*",            NULL,    NULL,                          XE3GF },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XE2 DC*",            NULL,    NULL,                          XE2 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XE3 GC*",            NULL,    NULL,                          XE3GC },
-  /* HP Pavilion N5430 */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XE3 GD*",            NULL,    NULL,                          XE3GC },
-  /* HP Pavilion N5415 */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook XE3 GE*",            NULL,    NULL,                          XE3GC },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 500 FA*",            NULL,    NULL,                          OB500 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 510 FB*",            NULL,    NULL,                          OB510 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 4150*",              NULL,    NULL,                          OB4150 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 900 B*",             NULL,    NULL,                          OB4150 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 6000 EA*",           NULL,    NULL,                          OB6000 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 6100 EB*",           NULL,    NULL,                          OB6100 },
-  /* HP OmniBook xe4100 */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook xe4000*",            NULL,    NULL,                          XE4500 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook xe4400*",            NULL,    NULL,                          XE4500 },
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook xe4500*",            NULL,    NULL,                          XE4500 },
-  /* HP OmniBook vt6200 and xt6200 */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook 6200 EG*",           NULL,    NULL,                          XE4500 },
-  /* There are no model specific strings of some HP OmniBook XT1500 */
-  { NULL,       "HP OmniBook PC*",           "HP OmniBook*",                   NULL,    NULL,                          XE3GF },
-  /* HP Pavilion ze4125 */
-  { NULL,       "HP NoteBook PC*",           "HP NoteBook ze4000*",            NULL,    NULL,                          XE4500 },
-  /* There are no model specific strings of some HP Pavilion xt155 and some HP Pavilion ze4100 */
-  { NULL,       "HP NoteBook PC*",           "HP NoteBook PC*",                NULL,    NULL,                          XE4500 },
-  /* There are no model specific strings of some HP nx9000 */
-  { NULL,       "HP Notebook PC*",           "HP Notebook PC*",                NULL,    NULL,                          XE4500 },
-  /* HP Pavilion ZU1155 and ZU1175 */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion ZU1000 FA*",         NULL,    NULL,                          OB500 },
-  /* HP Pavilion N5290 */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion Notebook XE3 GC*",   NULL,    NULL,                          XE3GC },
-  /* HP Pavilion N5441 */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion Notebook Model GD*", NULL,    NULL,                          XE3GC },
-  /* HP Pavilion XH545 */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion Notebook Model GE*", NULL,    NULL,                          XE3GC },
-  /* HP Pavilion ZT1141 */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion Notebook ZT1000*",   NULL,    NULL,                          XE3GF },
-  /* There are no model specific strings of some HP Pavilion ZT1175 and ZT1195 notebooks */
-  { NULL,       "HP Pavilion Notebook PC*",  "HP Pavilion Notebook*",          NULL,    NULL,                          XE3GF },
-  { NULL,       "Pavilion ze4200*",          NULL,                             NULL,    "HP Pavilion ze4200 series",   XE4500 },
-  { NULL,       "Pavilion ze4300*",          NULL,                             NULL,    "HP Pavilion ze4300 series",   XE4500 },
-  { NULL,       "Pavilion ze8500*",          NULL,                             NULL,    "HP Pavilion ze8500 series",   XE4500 },
-  /* Compaq nx9000 */
-  { NULL,       "HP nx9000*",                NULL,                             NULL,    "HP Compaq nx9000",            XE4500 },
-  /* Compaq nx9005 */
-  { NULL,       "HP nx9005*",                NULL,                             NULL,    "HP Compaq nx9005",            XE4500 },
-  /* Compaq nx9010 */
-  { NULL,       "HP nx9010*",                NULL,                             NULL,    "HP Compaq nx9010",            XE4500 },
-  { "TOSHIBA",  "S1000*",                    NULL,                             NULL,    "Toshiba Satellite 1000",      XE3GF },
-  { "TOSHIBA",  "S1005*",                    NULL,                             NULL,    "Toshiba Satellite 1005",      XE3GF },
-  { "TOSHIBA",  "S1110*",                    NULL,                             NULL,    "Toshiba Satellite 1110",      XE3GF },
-  { "TOSHIBA",  "S1115*",                    NULL,                             NULL,    "Toshiba Satellite 1115",      XE3GF },
-  { "TOSHIBA",  "S1900*",                    NULL,                             NULL,    "Toshiba Satellite 1900",      XE3GF },
-  { "TOSHIBA",  "S1905*",                    NULL,                             NULL,    "Toshiba Satellite 1905",      XE3GF },
-  { "TOSHIBA",  "S1950*",                    NULL,                             NULL,    "Toshiba Satellite 1950",      XE3GF },
-  { "TOSHIBA",  "S1955*",                    NULL,                             NULL,    "Toshiba Satellite 1955",      XE3GF },
-  { "TOSHIBA",  "S2430*",                    NULL,                             NULL,    "Toshiba Satellite 2430",      XE3GF },
-  { "TOSHIBA",  "S2435*",                    NULL,                             NULL,    "Toshiba Satellite 2435",      XE3GF },
-  { "TOSHIBA",  "S3000*",                    NULL,                             NULL,    "Toshiba Satellite 3000",      XE3GF },
-  { "TOSHIBA",  "S3005*",                    NULL,                             NULL,    "Toshiba Satellite 3005",      XE3GF },
-  { "TOSHIBA",  "Satellite 1000*",           NULL,                             NULL,    "Toshiba Satellite 1000",      XE3GF },
-  { "TOSHIBA",  "Satellite 1005*",           NULL,                             NULL,    "Toshiba Satellite 1005",      XE3GF },
-  { "TOSHIBA",  "Satellite 1110*",           NULL,                             NULL,    "Toshiba Satellite 1110",      XE3GF },
-  { "TOSHIBA",  "Satellite 1115*",           NULL,                             NULL,    "Toshiba Satellite 1115",      XE3GF },
-  { "TOSHIBA",  "Toshiba 1115*",             NULL,                             NULL,    "Toshiba Satellite 1115",      XE3GF },
-  { "TOSHIBA",  "Satellite 1900*",           NULL,                             NULL,    "Toshiba Satellite 1900",      XE3GF },
-  { "TOSHIBA",  "Satellite 1905*",           NULL,                             NULL,    "Toshiba Satellite 1905",      XE3GF },
-  { "TOSHIBA",  "Satellite 1950*",           NULL,                             NULL,    "Toshiba Satellite 1950",      XE3GF },
-  { "TOSHIBA",  "Satellite 1955*",           NULL,                             NULL,    "Toshiba Satellite 1955",      XE3GF },
-  { "TOSHIBA",  "Satellite 2430*",           NULL,                             NULL,    "Toshiba Satellite 2430",      XE3GF },
-  { "TOSHIBA",  "Satellite 2435*",           NULL,                             NULL,    "Toshiba Satellite 2435",      XE3GF },
-  { "TOSHIBA",  "Satellite 3000*",           NULL,                             NULL,    "Toshiba Satellite 3000",      XE3GF },
-  { "TOSHIBA",  "Satellite 3005*",           NULL,                             NULL,    "Toshiba Satellite 3005",      XE3GF },
-  { "TOSHIBA",  "Satellite P10*",            NULL,                             NULL,    "Toshiba Satellite P10",       TSP10 },
-  { "TOSHIBA",  "Satellite P15*",            NULL,                             NULL,    "Toshiba Satellite P15",       TSP10 },
-  { "TOSHIBA",  "Satellite P20*",            NULL,                             NULL,    "Toshiba Satellite P20",       TSP10 },
-  { "TOSHIBA",  "Satellite M30X*",           NULL,                             NULL,    "Toshiba Satellite M30X",      TSM30X },
-  { "TOSHIBA",  "Satellite M35X*",           NULL,                             NULL,    "Toshiba Satellite M35X",      TSM30X },
-  { "TOSHIBA",  "Satellite M70*",            NULL,                             NULL,    "Toshiba Satellite M70",       TSM30X },
-  { "TOSHIBA",  "Satellite M40*",            NULL,                             NULL,    "Toshiba Satellite M40",       TSM40 },
-  { "COMPAL",   NULL,                        NULL,                             "ACL00", "Compal ACL00",                XE3GF },
-  { "COMPAL",   NULL,                        NULL,                             "ACL10", "Compal ACL10",                XE3GF },
-  { "Acer",     "Aspire 1400 series*",       NULL,                             NULL,    "Acer Aspire 1400 series",     XE3GF },
-  { "Acer",     "Aspire 1350*",              NULL,                             NULL,    "Acer Aspire 1350",            XE4500 },
-  { "FUJITSU SIEMENS", "Amilo D-Series*",    NULL,                             NULL,    "Fujitsu-Siemens Amilo D series", AMILOD },
-  /* This sentinel at the end catches all unsupported models */
-  { NULL, NULL, NULL, NULL, NULL, NONE }
-};
+static int __init dmi_matched(struct dmi_system_id *dmi);
 
-struct omnibook_tc_t {
-       char *tc;
-       int ectype;
-};
-
-/* HP technology codes */
-static struct omnibook_tc_t omnibook_tc[] __initdata = {
-       /* technology code      ectype */
-       {"CI.", OB4150},
-       {"CL.", OB4150},
-       {"DC.", XE2},
-       {"EA.", OB6000},
-       {"EB.", OB6100},
-       {"EG.", XE4500},
-       {"FA.", OB500},
-       {"FB.", OB510},
-       {"GC.", XE3GC},
-       {"GD.", XE3GC},
-       {"GE.", XE3GC},
-       {"GF.", XE3GF},
-       {"IB.", XE3GF},
-       {"IC.", XE3GF},
-       {"ID.", XE3GF},
-       {"KA.", XE4500},
-       {"KB.", XE4500},
-       {"KC.", XE4500},
-       {"KD.", XE4500},
-       {"KE.", XE4500},
-       {"KE_KG.", XE4500},
-       {"KF_KH.", XE4500},
-       {NULL, NONE}
+static struct  dmi_system_id omnibook_ids[] __initdata = {
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XE3 GF",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XE3 GF"),
+               },
+               .driver_data = (void *) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XT1000",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XT1000"),
+               },
+               .driver_data = (void *) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XE2 DC",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XE2 DC"),
+               },
+               .driver_data = (void *) XE2
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XE3 GC",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XE3 GC"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XE3 GD / Pavilion N5430",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XE3 GD"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XE3 GE / Pavilion N5415",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook XE3 GE"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 500 FA",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 500 FA"),
+               },
+               .driver_data = (void*) OB500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 510 FB",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 510 FB"),
+               },
+               .driver_data = (void*) OB510
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 4150",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 4150"),
+               },
+               .driver_data = (void*) OB4150
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 900 B",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 900 B"),
+               },
+               .driver_data = (void*) OB4150
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 6000 EA",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 6000 EA"),
+               },
+               .driver_data = (void*) OB6000
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 6100 EB",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 6100 EB"),
+               },
+               .driver_data = (void*) OB6100
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook xe4000/xe4100",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook xe4000"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook xe4400",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook xe4400"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook xe4500",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook xe4500"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook 6200 EG / vt6200 / xt 6200",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook 6200 EG"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       /* There are no model specific strings of some HP OmniBook XT1500 */
+       {
+               .callback = dmi_matched,
+               .ident = "HP OmniBook XT1500",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP OmniBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP OmniBook"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ze4000 / ze4125",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP NoteBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP NoteBook ze4000"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       /* There are no model specific strings of some HP Pavilion xt155 and some HP Pavilion ze4100 
+        * There are no model specific strings of some HP nx9000 */
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion xt155 / ze4100 / nx9000",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP NoteBook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP NoteBook PC"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ZU1000 FA / ZU1000 FA / ZU1175",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion ZU1000 FA"),
+               },
+               .driver_data = (void*) OB500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion Notebook XE3 GC / N5290",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook XE3 GC"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion Notebook GD / N5441",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GD"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion Notebook GE / XH545",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion Notebook ZT1000 / ZT1141",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       /* There are no model specific strings of some HP Pavilion ZT1175 and ZT1195 notebooks */
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ZT1175 / ZT1195",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ze4200 series",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ze4200"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ze4300 series",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ze4300"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Pavilion ze8500 series",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ze8500"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       /* Compaq nx9000 */
+       {
+               .callback = dmi_matched,
+               .ident = "HP Compaq nx9000",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP nx9000"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Compaq nx9005",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP nx9005"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP Compaq nx9010",
+               .matches = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "HP nx9010"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1000",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1000"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1005",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1005"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1110",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1110"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1115",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1115"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1900",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1900"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1905",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1905"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1950",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1950"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1955",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S1955"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 2430",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S2430"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 2435",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S2435"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 3000",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S3000"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 3005",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "S3005"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1000",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1000"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1005",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1005"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1110",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1110"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1115",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1115"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1115",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Toshiba 1115"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1900",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1900"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1905",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1905"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1950",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1950"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 1955",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 1955"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 2430"),
+               },
+               .ident = "Toshiba Satellite 2430",
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 2435",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 2435"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 3000",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 3000"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite 3005",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite 3005"),
+               },
+               .driver_data = (void*) XE3GF,
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite P10",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"),
+               },
+               .driver_data = (void*) TSP10
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite P15",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P15"),
+               },
+               .driver_data = (void*) TSP10
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite P20",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P20"),
+               },
+               .driver_data = (void*) TSP10
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite M30X",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite M30X"),
+               },
+               .driver_data = (void*) TSM30X
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite M35X",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite M35X"),
+               },
+               .driver_data = (void*) TSM30X
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite M70",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite M70"),
+               },
+               .driver_data = (void*) TSM30X
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Toshiba Satellite M40",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Satellite M40"),
+               },
+               .driver_data = (void*) TSM40
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Compal ACL00",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"),
+                       DMI_MATCH(DMI_BOARD_NAME, "ACL00"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Compal ACL10",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"),
+                       DMI_MATCH(DMI_BOARD_NAME, "ACL10"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Acer Aspire 1400 series",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1400 series"),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Acer Aspire 1350",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1350"),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "Fujitsu-Siemens Amilo D series",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Amilo D-Series"),
+               },
+               .driver_data = (void*) AMILOD
+       },
+/* HP Technology code Matching:
+ * Technology code appears in the first two chracters of BIOS version string
+ * ended by a dot, but it prefixed a space character on some models and BIOS
+ * versions.
+ * New HP/Compaq models use more characters (eg. KF_KH.).
+ */
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code CI",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "CI."),
+               },
+               .driver_data = (void*) OB4150
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code CL",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "CL."),
+               },
+               .driver_data = (void*) OB4150
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code DC",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "DC."),
+               },
+               .driver_data = (void*) XE2
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code EA",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "EA."),
+               },
+               .driver_data = (void*) OB6000
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code EB",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "EB."),
+               },
+               .driver_data = (void*) OB6100
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code EG",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "EG."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code FA",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "FA."),
+               },
+               .driver_data = (void*) OB500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code FB",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "FB."),
+               },
+               .driver_data = (void*) OB510
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code GC",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "GC."),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code GD",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "GD."),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code GE",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "GE."),
+               },
+               .driver_data = (void*) XE3GC
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code GF",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "GF."),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code IB",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "IB."),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code IC",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "IC."),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code ID",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "ID."),
+               },
+               .driver_data = (void*) XE3GF
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KA",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KA."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KB",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KB."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KC",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KC."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KD",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KD."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KE",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KE."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KE_KG",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KE_KG."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       {
+               .callback = dmi_matched,
+               .ident = "HP model with technology code KF_KH",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, HP_SIGNATURE),
+                       DMI_MATCH(DMI_BIOS_VERSION, "KF_KH."),
+               },
+               .driver_data = (void*) XE4500
+       },
+       { NULL, }
 };
diff --git a/lcd.c b/lcd.c
index aa09c15488bd732f638b1badf2949d93e338175b..1e973e5c2f8902af0b509144aa43efa64c65cece 100644 (file)
--- a/lcd.c
+++ b/lcd.c
@@ -35,8 +35,8 @@ static int omnibook_max_brightness;
 
 static struct backlight_device *omnibook_backlight_device;
 
-int omnibook_get_backlight(struct backlight_device *bd);
-int omnibook_set_backlight(struct backlight_device *bd);
+static int omnibook_get_backlight(struct backlight_device *bd);
+static int omnibook_set_backlight(struct backlight_device *bd);
 
 static struct backlight_properties omnibookbl_data = {
        .owner = THIS_MODULE,
@@ -125,12 +125,12 @@ static int omnibook_set_lcd_brightness(int brgt)
 }
 
 #ifdef CONFIG_OMNIBOOK_BACKLIGHT
-int omnibook_get_backlight(struct backlight_device *bd)
+static int omnibook_get_backlight(struct backlight_device *bd)
 {
        return omnibook_get_lcd_brightness();
 }
 
-int omnibook_set_backlight(struct backlight_device *bd)
+static int omnibook_set_backlight(struct backlight_device *bd)
 {
        int intensity = bd->props->brightness;
        return omnibook_set_lcd_brightness(intensity);
index 5a72268555d044740d439e74f2186dbee652b256..18dddabf20f97b3086c94b07acfa037a28ea2c5f 100644 (file)
@@ -72,7 +72,7 @@ static int omnibook_get_cpu_temp(void)
        return retval;
 }
 
-int omnibook_temperature_read(char *buffer)
+static int omnibook_temperature_read(char *buffer)
 {
        int len = 0;
        int cpu_temp;
index e4f2d3be800cd935985dace3710798967229272d..5ba5abb48be011c81bebd571fc032074c5697762 100644 (file)
@@ -23,7 +23,7 @@
 #include "ec.h"
 
 /* Touchpad is enabled by default */
-int omnibook_touchpad_enabled = 1;
+static int omnibook_touchpad_enabled = 1;
 
 static int omnibook_touchpad_on(void)
 {