When the driver starts, print the list of supported models. This should
help with any questions like "does my driver support this or that model".

For those models that don't have a defined name, print "usb:1234:5678"
instead, so users can at least try to match the usb IDs.

Sample log output:
[ 25950.166] (II) wacom: Driver for Wacom graphics tablets: PenPartner, 
PenPartner,
        Graphire, Graphire2 4x5, Graphire2 5x7, Graphire3 4x5, Graphire3 6x8,
        Graphire4 4x5, Graphire4 6x8, BambooFun 4x5, BambooFun 6x8,
        Bamboo1 Medium, Graphire4 6x8 BlueTooth, CTL-460, CTH-461, CTL-660,
        CTL-461/S, Bamboo Touch, CTH-460/K, CTH-461/S, CTH-661/S1, CTH-461/L,
        CTH-661/L, Intuos 4x5, Intuos 6x8, Intuos 9x12, Intuos 12x12,
        Intuos 12x18, PTU600, PL400, PL500, PL600, PL600SX, PL550, PL800,
        PL700, PL510, PL710, DTI520, DTF720, DTF720a, DTF521, DTU1931,
        DTU2231, DTU1631, Intuos2 4x5, Intuos2 6x8, Intuos2 9x12,
        Intuos2 12x12, Intuos2 12x18, Intuos2 6x8 , Volito, PenStation,
        Volito2 4x5, Volito2 2x3, PenPartner2, Bamboo, Bamboo1, Bamboo1 4x6,
        Bamboo1 5x8, Intuos3 4x5, Intuos3 6x8, Intuos3 9x12, Intuos3 12x12,
        Intuos3 12x19, Intuos3 6x11, Intuos3 4x6, Intuos4 4x6, Intuos4 6x9,
        Intuos4 8x13, Intuos4 12x19, Intuos4 WL USB Endpoint,
        Intuos4 WL Bluetooth Endpoint, Intuos5 touch S, Intuos5 touch M,
        Intuos5 touch L, Intuos5 S, Intuos5 M, Cintiq 21UX, Cintiq 20WSX,
        Cintiq 12WX, Cintiq 21UX2, Cintiq 24HD, Cintiq 22HD,
        Cintiq 24HD touch (EMR digitizer), Cintiq 13HD, DTK2241, DTH2242,
        Cintiq 22HDT, TabletPC 0x90, TabletPC 0x93, TabletPC 0x97,
        TabletPC 0x9A, CapPlus  0x9F, TabletPC 0xE2, TabletPC 0xE3,
        TabletPC 0xE5, TabletPC 0xE6, TabletPC 0xEC, TabletPC 0xED,
        TabletPC 0xEF, TabletPC 0x100, TabletPC 0x101, TabletPC 0x10D,
        TabletPC 0x4001, usb:172f:0024, usb:172f:0025, usb:172f:0026,
        usb:172f:0027, usb:172f:0028, usb:172f:0030, usb:172f:0031,
        usb:172f:0032, usb:172f:0033, usb:172f:0034, usb:172f:0035,
        usb:172f:0036, usb:172f:0037, usb:172f:0038, usb:172f:0039,
        usb:172f:0051, usb:172f:0052, usb:172f:0053, usb:172f:0054,
        usb:172f:0055, usb:172f:0056, usb:172f:0057, usb:172f:0058,
        usb:172f:0500, usb:172f:0501, usb:172f:0502, usb:172f:0503,
        usb:1b96:0001, usb:17ef:6004
[ 25950.167] (II) Using input driver 'wacom' for 'Wacom Intuos4 6x9'

Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
 src/wcmConfig.c |   3 +
 src/wcmUSB.c    | 312 ++++++++++++++++++++++++++++++++------------------------
 src/xf86Wacom.h |   1 +
 3 files changed, 182 insertions(+), 134 deletions(-)

diff --git a/src/wcmConfig.c b/src/wcmConfig.c
index 1955661..2d19944 100644
--- a/src/wcmConfig.c
+++ b/src/wcmConfig.c
@@ -659,6 +659,9 @@ static pointer wcmPlug(pointer module, pointer options, 
int* errmaj,
                int* errmin)
 {
        xf86AddInputDriver(&WACOM, module, 0);
+
+       usbListModels();
+
        return module;
 }
 
diff --git a/src/wcmUSB.c b/src/wcmUSB.c
index f1504cf..9bdd3e8 100644
--- a/src/wcmUSB.c
+++ b/src/wcmUSB.c
@@ -172,172 +172,216 @@ static unsigned short mouse_codes [] = {
        BTN_SIDE, BTN_EXTRA
 };
 
-static struct
+static struct WacomModelDesc
 {
        const unsigned int vendor_id;
        const unsigned int model_id;
        int yRes; /* tablet Y resolution in units/meter */
        int xRes; /* tablet X resolution in units/meter */
        WacomModelPtr model;
+       const char *name;
 } WacomModelDesc [] =
 {
-       { WACOM_VENDOR_ID, 0x00,  39370,  39370, &usbPenPartner }, /* 
PenPartner */
-       { WACOM_VENDOR_ID, 0x10,  80000,  80000, &usbGraphire   }, /* Graphire 
*/
-       { WACOM_VENDOR_ID, 0x11,  80000,  80000, &usbGraphire2  }, /* Graphire2 
4x5 */
-       { WACOM_VENDOR_ID, 0x12,  80000,  80000, &usbGraphire2  }, /* Graphire2 
5x7 */
-       { WACOM_VENDOR_ID, 0x13,  80000,  80000, &usbGraphire3  }, /* Graphire3 
4x5 */
-       { WACOM_VENDOR_ID, 0x14,  80000,  80000, &usbGraphire3  }, /* Graphire3 
6x8 */
-       { WACOM_VENDOR_ID, 0x15,  80000,  80000, &usbGraphire4  }, /* Graphire4 
4x5 */
-       { WACOM_VENDOR_ID, 0x16,  80000,  80000, &usbGraphire4  }, /* Graphire4 
6x8 */
-       { WACOM_VENDOR_ID, 0x17, 100000, 100000, &usbBambooFun  }, /* BambooFun 
4x5 */
-       { WACOM_VENDOR_ID, 0x18, 100000, 100000, &usbBambooFun  }, /* BambooFun 
6x8 */
-       { WACOM_VENDOR_ID, 0x19,  80000,  80000, &usbBamboo1    }, /* Bamboo1 
Medium*/
-       { WACOM_VENDOR_ID, 0x81,  80000,  80000, &usbGraphire4  }, /* Graphire4 
6x8 BlueTooth */
+       { WACOM_VENDOR_ID, 0x00,  39370,  39370, &usbPenPartner, "PenPartner"   
        },
+       { WACOM_VENDOR_ID, 0x00,  39370,  39370, &usbPenPartner, "PenPartner"   
        },
+       { WACOM_VENDOR_ID, 0x10,  80000,  80000, &usbGraphire,   "Graphire"     
        },
+       { WACOM_VENDOR_ID, 0x11,  80000,  80000, &usbGraphire2,  "Graphire2 
4x5"        },
+       { WACOM_VENDOR_ID, 0x12,  80000,  80000, &usbGraphire2,  "Graphire2 
5x7"        },
+       { WACOM_VENDOR_ID, 0x13,  80000,  80000, &usbGraphire3,  "Graphire3 
4x5"        },
+       { WACOM_VENDOR_ID, 0x14,  80000,  80000, &usbGraphire3,  "Graphire3 
6x8"        },
+       { WACOM_VENDOR_ID, 0x15,  80000,  80000, &usbGraphire4,  "Graphire4 
4x5"        },
+       { WACOM_VENDOR_ID, 0x16,  80000,  80000, &usbGraphire4,  "Graphire4 
6x8"        },
+       { WACOM_VENDOR_ID, 0x17, 100000, 100000, &usbBambooFun,  "BambooFun 
4x5"        },
+       { WACOM_VENDOR_ID, 0x18, 100000, 100000, &usbBambooFun,  "BambooFun 
6x8"        },
+       { WACOM_VENDOR_ID, 0x19,  80000,  80000, &usbBamboo1,    "Bamboo1 
Medium"       },
+       { WACOM_VENDOR_ID, 0x81,  80000,  80000, &usbGraphire4,  "Graphire4 6x8 
BlueTooth" },
 
-       { WACOM_VENDOR_ID, 0xD1, 100000, 100000, &usbBamboo     }, /* CTL-460 */
-       { WACOM_VENDOR_ID, 0xD4, 100000, 100000, &usbBamboo     }, /* CTH-461 */
-       { WACOM_VENDOR_ID, 0xD3, 100000, 100000, &usbBamboo     }, /* CTL-660 */
-       { WACOM_VENDOR_ID, 0xD2, 100000, 100000, &usbBamboo     }, /* CTL-461/S 
*/
-       { WACOM_VENDOR_ID, 0xD0, 100000, 100000, &usbBamboo     }, /* Bamboo 
Touch */
-       { WACOM_VENDOR_ID, 0xD6, 100000, 100000, &usbBamboo     }, /* CTH-460/K 
*/
-       { WACOM_VENDOR_ID, 0xD7, 100000, 100000, &usbBamboo     }, /* CTH-461/S 
*/
-       { WACOM_VENDOR_ID, 0xD8, 100000, 100000, &usbBamboo     }, /* 
CTH-661/S1 */
-       { WACOM_VENDOR_ID, 0xDA, 100000, 100000, &usbBamboo     }, /* CTH-461/L 
*/
-       { WACOM_VENDOR_ID, 0xDB, 100000, 100000, &usbBamboo     }, /* CTH-661/L 
*/
+       { WACOM_VENDOR_ID, 0xD1, 100000, 100000, &usbBamboo,     "CTL-460"      
        },
+       { WACOM_VENDOR_ID, 0xD4, 100000, 100000, &usbBamboo,     "CTH-461"      
        },
+       { WACOM_VENDOR_ID, 0xD3, 100000, 100000, &usbBamboo,     "CTL-660"      
        },
+       { WACOM_VENDOR_ID, 0xD2, 100000, 100000, &usbBamboo,     "CTL-461/S"    
        },
+       { WACOM_VENDOR_ID, 0xD0, 100000, 100000, &usbBamboo,     "Bamboo Touch" 
        },
+       { WACOM_VENDOR_ID, 0xD6, 100000, 100000, &usbBamboo,     "CTH-460/K"    
        },
+       { WACOM_VENDOR_ID, 0xD7, 100000, 100000, &usbBamboo,     "CTH-461/S"    
        },
+       { WACOM_VENDOR_ID, 0xD8, 100000, 100000, &usbBamboo,     "CTH-661/S1"   
        },
+       { WACOM_VENDOR_ID, 0xDA, 100000, 100000, &usbBamboo,     "CTH-461/L"    
        },
+       { WACOM_VENDOR_ID, 0xDB, 100000, 100000, &usbBamboo,     "CTH-661/L"    
        },
 
-       { WACOM_VENDOR_ID, 0x20, 100000, 100000, &usbIntuos     }, /* Intuos 
4x5 */
-       { WACOM_VENDOR_ID, 0x21, 100000, 100000, &usbIntuos     }, /* Intuos 
6x8 */
-       { WACOM_VENDOR_ID, 0x22, 100000, 100000, &usbIntuos     }, /* Intuos 
9x12 */
-       { WACOM_VENDOR_ID, 0x23, 100000, 100000, &usbIntuos     }, /* Intuos 
12x12 */
-       { WACOM_VENDOR_ID, 0x24, 100000, 100000, &usbIntuos     }, /* Intuos 
12x18 */
+       { WACOM_VENDOR_ID, 0x20, 100000, 100000, &usbIntuos,     "Intuos 4x5"   
        },
+       { WACOM_VENDOR_ID, 0x21, 100000, 100000, &usbIntuos,     "Intuos 6x8"   
        },
+       { WACOM_VENDOR_ID, 0x22, 100000, 100000, &usbIntuos,     "Intuos 9x12"  
        },
+       { WACOM_VENDOR_ID, 0x23, 100000, 100000, &usbIntuos,     "Intuos 12x12" 
        },
+       { WACOM_VENDOR_ID, 0x24, 100000, 100000, &usbIntuos,     "Intuos 12x18" 
        },
 
-       { WACOM_VENDOR_ID, 0x03,  20000,  20000, &usbCintiqPartner }, /* PTU600 
*/
+       { WACOM_VENDOR_ID, 0x03,  20000,  20000, &usbCintiqPartner, "PTU600"    
        },
 
-       { WACOM_VENDOR_ID, 0x30,  20000,  20000, &usbCintiq     }, /* PL400 */
-       { WACOM_VENDOR_ID, 0x31,  20000,  20000, &usbCintiq     }, /* PL500 */
-       { WACOM_VENDOR_ID, 0x32,  20000,  20000, &usbCintiq     }, /* PL600 */
-       { WACOM_VENDOR_ID, 0x33,  20000,  20000, &usbCintiq     }, /* PL600SX */
-       { WACOM_VENDOR_ID, 0x34,  20000,  20000, &usbCintiq     }, /* PL550 */
-       { WACOM_VENDOR_ID, 0x35,  20000,  20000, &usbCintiq     }, /* PL800 */
-       { WACOM_VENDOR_ID, 0x37,  20000,  20000, &usbCintiq     }, /* PL700 */
-       { WACOM_VENDOR_ID, 0x38,  20000,  20000, &usbCintiq     }, /* PL510 */
-       { WACOM_VENDOR_ID, 0x39,  20000,  20000, &usbCintiq     }, /* PL710 */
-       { WACOM_VENDOR_ID, 0x3A,  20000,  20000, &usbCintiq     }, /* DTI520 */
-       { WACOM_VENDOR_ID, 0xC0,  20000,  20000, &usbCintiq     }, /* DTF720 */
-       { WACOM_VENDOR_ID, 0xC2,  20000,  20000, &usbCintiq     }, /* DTF720a */
-       { WACOM_VENDOR_ID, 0xC4,  20000,  20000, &usbCintiq     }, /* DTF521 */
-       { WACOM_VENDOR_ID, 0xC7, 100000, 100000, &usbCintiq     }, /* DTU1931 */
-       { WACOM_VENDOR_ID, 0xCE, 100000, 100000, &usbCintiq     }, /* DTU2231 */
-       { WACOM_VENDOR_ID, 0xF0, 100000, 100000, &usbCintiq     }, /* DTU1631 */
+       { WACOM_VENDOR_ID, 0x30,  20000,  20000, &usbCintiq,     "PL400"        
        },
+       { WACOM_VENDOR_ID, 0x31,  20000,  20000, &usbCintiq,     "PL500"        
        },
+       { WACOM_VENDOR_ID, 0x32,  20000,  20000, &usbCintiq,     "PL600"        
        },
+       { WACOM_VENDOR_ID, 0x33,  20000,  20000, &usbCintiq,     "PL600SX"      
        },
+       { WACOM_VENDOR_ID, 0x34,  20000,  20000, &usbCintiq,     "PL550"        
        },
+       { WACOM_VENDOR_ID, 0x35,  20000,  20000, &usbCintiq,     "PL800"        
        },
+       { WACOM_VENDOR_ID, 0x37,  20000,  20000, &usbCintiq,     "PL700"        
        },
+       { WACOM_VENDOR_ID, 0x38,  20000,  20000, &usbCintiq,     "PL510"        
        },
+       { WACOM_VENDOR_ID, 0x39,  20000,  20000, &usbCintiq,     "PL710"        
        },
+       { WACOM_VENDOR_ID, 0x3A,  20000,  20000, &usbCintiq,     "DTI520"       
        },
+       { WACOM_VENDOR_ID, 0xC0,  20000,  20000, &usbCintiq,     "DTF720"       
        },
+       { WACOM_VENDOR_ID, 0xC2,  20000,  20000, &usbCintiq,     "DTF720a"      
        },
+       { WACOM_VENDOR_ID, 0xC4,  20000,  20000, &usbCintiq,     "DTF521"       
        },
+       { WACOM_VENDOR_ID, 0xC7, 100000, 100000, &usbCintiq,     "DTU1931"      
        },
+       { WACOM_VENDOR_ID, 0xCE, 100000, 100000, &usbCintiq,     "DTU2231"      
        },
+       { WACOM_VENDOR_ID, 0xF0, 100000, 100000, &usbCintiq,     "DTU1631"      
        },
 
-       { WACOM_VENDOR_ID, 0x41, 100000, 100000, &usbIntuos2    }, /* Intuos2 
4x5 */
-       { WACOM_VENDOR_ID, 0x42, 100000, 100000, &usbIntuos2    }, /* Intuos2 
6x8 */
-       { WACOM_VENDOR_ID, 0x43, 100000, 100000, &usbIntuos2    }, /* Intuos2 
9x12 */
-       { WACOM_VENDOR_ID, 0x44, 100000, 100000, &usbIntuos2    }, /* Intuos2 
12x12 */
-       { WACOM_VENDOR_ID, 0x45, 100000, 100000, &usbIntuos2    }, /* Intuos2 
12x18 */
-       { WACOM_VENDOR_ID, 0x47, 100000, 100000, &usbIntuos2    }, /* Intuos2 
6x8  */
+       { WACOM_VENDOR_ID, 0x41, 100000, 100000, &usbIntuos2,    "Intuos2 4x5"  
        },
+       { WACOM_VENDOR_ID, 0x42, 100000, 100000, &usbIntuos2,    "Intuos2 6x8"  
        },
+       { WACOM_VENDOR_ID, 0x43, 100000, 100000, &usbIntuos2,    "Intuos2 9x12" 
        },
+       { WACOM_VENDOR_ID, 0x44, 100000, 100000, &usbIntuos2,    "Intuos2 
12x12"        },
+       { WACOM_VENDOR_ID, 0x45, 100000, 100000, &usbIntuos2,    "Intuos2 
12x18"        },
+       { WACOM_VENDOR_ID, 0x47, 100000, 100000, &usbIntuos2,    "Intuos2 6x8 " 
        },
 
-       { WACOM_VENDOR_ID, 0x60,  50000,  50000, &usbVolito     }, /* Volito */
+       { WACOM_VENDOR_ID, 0x60,  50000,  50000, &usbVolito,     "Volito"       
        },
 
-       { WACOM_VENDOR_ID, 0x61,  50000,  50000, &usbVolito2    }, /* 
PenStation */
-       { WACOM_VENDOR_ID, 0x62,  50000,  50000, &usbVolito2    }, /* Volito2 
4x5 */
-       { WACOM_VENDOR_ID, 0x63,  50000,  50000, &usbVolito2    }, /* Volito2 
2x3 */
-       { WACOM_VENDOR_ID, 0x64,  50000,  50000, &usbVolito2    }, /* 
PenPartner2 */
+       { WACOM_VENDOR_ID, 0x61,  50000,  50000, &usbVolito2,    "PenStation"   
        },
+       { WACOM_VENDOR_ID, 0x62,  50000,  50000, &usbVolito2,    "Volito2 4x5"  
        },
+       { WACOM_VENDOR_ID, 0x63,  50000,  50000, &usbVolito2,    "Volito2 2x3"  
        },
+       { WACOM_VENDOR_ID, 0x64,  50000,  50000, &usbVolito2,    "PenPartner2"  
        },
 
-       { WACOM_VENDOR_ID, 0x65, 100000, 100000, &usbBamboo     }, /* Bamboo */
-       { WACOM_VENDOR_ID, 0x69,  39842,  39842, &usbBamboo1    }, /* Bamboo1 */
-       { WACOM_VENDOR_ID, 0x6A, 100000, 100000, &usbBamboo1    }, /* Bamboo1 
4x6 */
-       { WACOM_VENDOR_ID, 0x6B, 100000, 100000, &usbBamboo1    }, /* Bamboo1 
5x8 */
+       { WACOM_VENDOR_ID, 0x65, 100000, 100000, &usbBamboo,     "Bamboo"       
        },
+       { WACOM_VENDOR_ID, 0x69,  39842,  39842, &usbBamboo1,    "Bamboo1"      
        },
+       { WACOM_VENDOR_ID, 0x6A, 100000, 100000, &usbBamboo1,    "Bamboo1 4x6"  
        },
+       { WACOM_VENDOR_ID, 0x6B, 100000, 100000, &usbBamboo1,    "Bamboo1 5x8"  
        },
 
-       { WACOM_VENDOR_ID, 0xB0, 200000, 200000, &usbIntuos3    }, /* Intuos3 
4x5 */
-       { WACOM_VENDOR_ID, 0xB1, 200000, 200000, &usbIntuos3    }, /* Intuos3 
6x8 */
-       { WACOM_VENDOR_ID, 0xB2, 200000, 200000, &usbIntuos3    }, /* Intuos3 
9x12 */
-       { WACOM_VENDOR_ID, 0xB3, 200000, 200000, &usbIntuos3    }, /* Intuos3 
12x12 */
-       { WACOM_VENDOR_ID, 0xB4, 200000, 200000, &usbIntuos3    }, /* Intuos3 
12x19 */
-       { WACOM_VENDOR_ID, 0xB5, 200000, 200000, &usbIntuos3    }, /* Intuos3 
6x11 */
-       { WACOM_VENDOR_ID, 0xB7, 200000, 200000, &usbIntuos3    }, /* Intuos3 
4x6 */
+       { WACOM_VENDOR_ID, 0xB0, 200000, 200000, &usbIntuos3,    "Intuos3 4x5"  
        },
+       { WACOM_VENDOR_ID, 0xB1, 200000, 200000, &usbIntuos3,    "Intuos3 6x8"  
        },
+       { WACOM_VENDOR_ID, 0xB2, 200000, 200000, &usbIntuos3,    "Intuos3 9x12" 
        },
+       { WACOM_VENDOR_ID, 0xB3, 200000, 200000, &usbIntuos3,    "Intuos3 
12x12"        },
+       { WACOM_VENDOR_ID, 0xB4, 200000, 200000, &usbIntuos3,    "Intuos3 
12x19"        },
+       { WACOM_VENDOR_ID, 0xB5, 200000, 200000, &usbIntuos3,    "Intuos3 6x11" 
        },
+       { WACOM_VENDOR_ID, 0xB7, 200000, 200000, &usbIntuos3,    "Intuos3 4x6"  
        },
 
-       { WACOM_VENDOR_ID, 0xB8, 200000, 200000, &usbIntuos4    }, /* Intuos4 
4x6 */
-       { WACOM_VENDOR_ID, 0xB9, 200000, 200000, &usbIntuos4    }, /* Intuos4 
6x9 */
-       { WACOM_VENDOR_ID, 0xBA, 200000, 200000, &usbIntuos4    }, /* Intuos4 
8x13 */
-       { WACOM_VENDOR_ID, 0xBB, 200000, 200000, &usbIntuos4    }, /* Intuos4 
12x19*/
-       { WACOM_VENDOR_ID, 0xBC, 200000, 200000, &usbIntuos4    }, /* Intuos4 
WL USB Endpoint */
-       { WACOM_VENDOR_ID, 0xBD, 200000, 200000, &usbIntuos4    }, /* Intuos4 
WL Bluetooth Endpoint */
+       { WACOM_VENDOR_ID, 0xB8, 200000, 200000, &usbIntuos4,    "Intuos4 4x6"  
        },
+       { WACOM_VENDOR_ID, 0xB9, 200000, 200000, &usbIntuos4,    "Intuos4 6x9"  
        },
+       { WACOM_VENDOR_ID, 0xBA, 200000, 200000, &usbIntuos4,    "Intuos4 8x13" 
        },
+       { WACOM_VENDOR_ID, 0xBB, 200000, 200000, &usbIntuos4,    "Intuos4 
12x19"        },
+       { WACOM_VENDOR_ID, 0xBC, 200000, 200000, &usbIntuos4,    "Intuos4 WL 
USB Endpoint"      },
+       { WACOM_VENDOR_ID, 0xBD, 200000, 200000, &usbIntuos4,    "Intuos4 WL 
Bluetooth Endpoint"},
 
-       { WACOM_VENDOR_ID, 0x26, 200000, 200000, &usbIntuos5    }, /* Intuos5 
touch S */
-       { WACOM_VENDOR_ID, 0x27, 200000, 200000, &usbIntuos5    }, /* Intuos5 
touch M */
-       { WACOM_VENDOR_ID, 0x28, 200000, 200000, &usbIntuos5    }, /* Intuos5 
touch L */
-       { WACOM_VENDOR_ID, 0x29, 200000, 200000, &usbIntuos5    }, /* Intuos5 S 
*/
-       { WACOM_VENDOR_ID, 0x2A, 200000, 200000, &usbIntuos5    }, /* Intuos5 M 
*/
+       { WACOM_VENDOR_ID, 0x26, 200000, 200000, &usbIntuos5,    "Intuos5 touch 
S"      },
+       { WACOM_VENDOR_ID, 0x27, 200000, 200000, &usbIntuos5,    "Intuos5 touch 
M"      },
+       { WACOM_VENDOR_ID, 0x28, 200000, 200000, &usbIntuos5,    "Intuos5 touch 
L"      },
+       { WACOM_VENDOR_ID, 0x29, 200000, 200000, &usbIntuos5,    "Intuos5 S"    
        },
+       { WACOM_VENDOR_ID, 0x2A, 200000, 200000, &usbIntuos5,    "Intuos5 M"    
        },
 
-       { WACOM_VENDOR_ID, 0x3F, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
21UX */
-       { WACOM_VENDOR_ID, 0xC5, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
20WSX */
-       { WACOM_VENDOR_ID, 0xC6, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
12WX */
-       { WACOM_VENDOR_ID, 0xCC, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
21UX2 */
-       { WACOM_VENDOR_ID, 0xF4, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
24HD */
-       { WACOM_VENDOR_ID, 0xFA, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
22HD */
-       { WACOM_VENDOR_ID, 0xF8, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
24HD touch (EMR digitizer) */
-       { WACOM_VENDOR_ID, 0x304,200000, 200000, &usbCintiqV5   }, /* Cintiq 
13HD */
-       { WACOM_VENDOR_ID, 0x57, 200000, 200000, &usbCintiqV5   }, /* DTK2241 */
-       { WACOM_VENDOR_ID, 0x59, 200000, 200000, &usbCintiqV5   }, /* DTH2242 */
-       { WACOM_VENDOR_ID, 0x5B, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
22HDT */
+       { WACOM_VENDOR_ID, 0x3F, 200000, 200000, &usbCintiqV5,   "Cintiq 21UX"  
        },
+       { WACOM_VENDOR_ID, 0xC5, 200000, 200000, &usbCintiqV5,   "Cintiq 20WSX" 
        },
+       { WACOM_VENDOR_ID, 0xC6, 200000, 200000, &usbCintiqV5,   "Cintiq 12WX"  
        },
+       { WACOM_VENDOR_ID, 0xCC, 200000, 200000, &usbCintiqV5,   "Cintiq 21UX2" 
        },
+       { WACOM_VENDOR_ID, 0xF4, 200000, 200000, &usbCintiqV5,   "Cintiq 24HD"  
        },
+       { WACOM_VENDOR_ID, 0xFA, 200000, 200000, &usbCintiqV5,   "Cintiq 22HD"  
        },
+       { WACOM_VENDOR_ID, 0xF8, 200000, 200000, &usbCintiqV5,   "Cintiq 24HD 
touch (EMR digitizer)" },
+       { WACOM_VENDOR_ID, 0x304,200000, 200000, &usbCintiqV5,   "Cintiq 13HD"  
        },
+       { WACOM_VENDOR_ID, 0x57, 200000, 200000, &usbCintiqV5,   "DTK2241"      
        },
+       { WACOM_VENDOR_ID, 0x59, 200000, 200000, &usbCintiqV5,   "DTH2242"      
        },
+       { WACOM_VENDOR_ID, 0x5B, 200000, 200000, &usbCintiqV5,   "Cintiq 22HDT" 
        },
 
-       { WACOM_VENDOR_ID, 0x90, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x90 */
-       { WACOM_VENDOR_ID, 0x93, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x93 */
-       { WACOM_VENDOR_ID, 0x97, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x97 */
-       { WACOM_VENDOR_ID, 0x9A, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x9A */
-       { WACOM_VENDOR_ID, 0x9F, 100000, 100000, &usbTabletPC   }, /* CapPlus  
0x9F */
-       { WACOM_VENDOR_ID, 0xE2, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE2 */
-       { WACOM_VENDOR_ID, 0xE3, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE3 */
-       { WACOM_VENDOR_ID, 0xE5, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE5 */
-       { WACOM_VENDOR_ID, 0xE6, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE6 */
-       { WACOM_VENDOR_ID, 0xEC, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xEC */
-       { WACOM_VENDOR_ID, 0xED, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xED */
-       { WACOM_VENDOR_ID, 0xEF, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xEF */
-       { WACOM_VENDOR_ID, 0x100,100000, 100000, &usbTabletPC   }, /* TabletPC 
0x100 */
-       { WACOM_VENDOR_ID, 0x101,100000, 100000, &usbTabletPC   }, /* TabletPC 
0x101 */
-       { WACOM_VENDOR_ID, 0x10D,100000, 100000, &usbTabletPC   }, /* TabletPC 
0x10D */
-       { WACOM_VENDOR_ID, 0x4001,100000, 100000, &usbTabletPC   }, /* TabletPC 
0x4001 */
+       { WACOM_VENDOR_ID, 0x90, 100000, 100000, &usbTabletPC,   "TabletPC 
0x90"        },
+       { WACOM_VENDOR_ID, 0x93, 100000, 100000, &usbTabletPC,   "TabletPC 
0x93"        },
+       { WACOM_VENDOR_ID, 0x97, 100000, 100000, &usbTabletPC,   "TabletPC 
0x97"        },
+       { WACOM_VENDOR_ID, 0x9A, 100000, 100000, &usbTabletPC,   "TabletPC 
0x9A"        },
+       { WACOM_VENDOR_ID, 0x9F, 100000, 100000, &usbTabletPC,   "CapPlus  
0x9F"        },
+       { WACOM_VENDOR_ID, 0xE2, 100000, 100000, &usbTabletPC,   "TabletPC 
0xE2"        },
+       { WACOM_VENDOR_ID, 0xE3, 100000, 100000, &usbTabletPC,   "TabletPC 
0xE3"        },
+       { WACOM_VENDOR_ID, 0xE5, 100000, 100000, &usbTabletPC,   "TabletPC 
0xE5"        },
+       { WACOM_VENDOR_ID, 0xE6, 100000, 100000, &usbTabletPC,   "TabletPC 
0xE6"        },
+       { WACOM_VENDOR_ID, 0xEC, 100000, 100000, &usbTabletPC,   "TabletPC 
0xEC"        },
+       { WACOM_VENDOR_ID, 0xED, 100000, 100000, &usbTabletPC,   "TabletPC 
0xED"        },
+       { WACOM_VENDOR_ID, 0xEF, 100000, 100000, &usbTabletPC,   "TabletPC 
0xEF"        },
+       { WACOM_VENDOR_ID, 0x100,100000, 100000, &usbTabletPC,   "TabletPC 
0x100"       },
+       { WACOM_VENDOR_ID, 0x101,100000, 100000, &usbTabletPC,   "TabletPC 
0x101"       },
+       { WACOM_VENDOR_ID, 0x10D,100000, 100000, &usbTabletPC,   "TabletPC 
0x10D"       },
+       { WACOM_VENDOR_ID, 0x4001,100000, 100000, &usbTabletPC,  "TabletPC 
0x4001"      },
 
        /* IDs from Waltop's driver, available 
http://www.waltop.com.tw/download.asp?lv=0&id=2.
           Accessed 8 Apr 2010, driver release date 2009/08/11, fork of 
linuxwacom 0.8.4.
           Some more info would be nice for the ID's below... */
-       { WALTOP_VENDOR_ID, 0x24,  80000,  80000, &usbGraphire   },
-       { WALTOP_VENDOR_ID, 0x25,  80000,  80000, &usbGraphire2  },
-       { WALTOP_VENDOR_ID, 0x26,  80000,  80000, &usbGraphire2  },
-       { WALTOP_VENDOR_ID, 0x27,  80000,  80000, &usbGraphire3  },
-       { WALTOP_VENDOR_ID, 0x28,  80000,  80000, &usbGraphire3  },
-       { WALTOP_VENDOR_ID, 0x30,  80000,  80000, &usbGraphire4  },
-       { WALTOP_VENDOR_ID, 0x31,  80000,  80000, &usbGraphire4  },
-       { WALTOP_VENDOR_ID, 0x32, 100000, 100000, &usbBambooFun  },
-       { WALTOP_VENDOR_ID, 0x33, 100000, 100000, &usbBambooFun  },
-       { WALTOP_VENDOR_ID, 0x34,  80000,  80000, &usbBamboo1    },
-       { WALTOP_VENDOR_ID, 0x35,  80000,  80000, &usbGraphire4  },
-       { WALTOP_VENDOR_ID, 0x36,  80000,  80000, &usbGraphire4  },
-       { WALTOP_VENDOR_ID, 0x37,  80000,  80000, &usbGraphire4  },
-       { WALTOP_VENDOR_ID, 0x38, 100000, 100000, &usbBambooFun  },
-       { WALTOP_VENDOR_ID, 0x39, 100000, 100000, &usbBambooFun  },
-       { WALTOP_VENDOR_ID, 0x51, 100000, 100000, &usbBamboo     },
-       { WALTOP_VENDOR_ID, 0x52, 100000, 100000, &usbBamboo     },
+       { WALTOP_VENDOR_ID, 0x24,  80000,  80000, &usbGraphire,   NULL          
        },
+       { WALTOP_VENDOR_ID, 0x25,  80000,  80000, &usbGraphire2,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x26,  80000,  80000, &usbGraphire2,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x27,  80000,  80000, &usbGraphire3,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x28,  80000,  80000, &usbGraphire3,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x30,  80000,  80000, &usbGraphire4,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x31,  80000,  80000, &usbGraphire4,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x32, 100000, 100000, &usbBambooFun,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x33, 100000, 100000, &usbBambooFun,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x34,  80000,  80000, &usbBamboo1,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x35,  80000,  80000, &usbGraphire4,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x36,  80000,  80000, &usbGraphire4,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x37,  80000,  80000, &usbGraphire4,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x38, 100000, 100000, &usbBambooFun,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x39, 100000, 100000, &usbBambooFun,  NULL          
        },
+       { WALTOP_VENDOR_ID, 0x51, 100000, 100000, &usbBamboo,     NULL          
        },
+       { WALTOP_VENDOR_ID, 0x52, 100000, 100000, &usbBamboo,     NULL          
        },
 
-       { WALTOP_VENDOR_ID, 0x53,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x54,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x55,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x56,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x57,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x58,  100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x500, 100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x501, 100000, 100000, &usbBamboo    },
-       { WALTOP_VENDOR_ID, 0x502, 200000, 200000, &usbIntuos4   },
-       { WALTOP_VENDOR_ID, 0x503, 200000, 200000, &usbIntuos4   },
+       { WALTOP_VENDOR_ID, 0x53,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x54,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x55,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x56,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x57,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x58,  100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x500, 100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x501, 100000, 100000, &usbBamboo,    NULL          
        },
+       { WALTOP_VENDOR_ID, 0x502, 200000, 200000, &usbIntuos4,   NULL          
        },
+       { WALTOP_VENDOR_ID, 0x503, 200000, 200000, &usbIntuos4,   NULL          
        },
 
        /* N-Trig devices */
-       { NTRIG_VENDOR_ID,  0x01, 44173, 36772, &usbTabletPC    },
+       { NTRIG_VENDOR_ID,  0x01, 44173, 36772, &usbTabletPC,     NULL          
        },
 
        /* Add in Lenovo W700 Palmrest digitizer */
-       { LENOVO_VENDOR_ID, 0x6004, 100000, 100000, &usbTabletPC } /* Pen-only 
*/
+       { LENOVO_VENDOR_ID, 0x6004, 100000, 100000, &usbTabletPC, NULL          
        } /* Pen-only */
 };
 
+void usbListModels(void)
+{
+       int i;
+       char *usbnames[ARRAY_SIZE(WacomModelDesc)] = {0};
+       SymTabRec models[ARRAY_SIZE(WacomModelDesc) + 1];
+
+       for (i = 0; i < ARRAY_SIZE(WacomModelDesc); i++)
+       {
+               struct WacomModelDesc *m = &WacomModelDesc[i];
+
+               models[i].token = i;
+               if (m->name)
+                       models[i].name = m->name;
+               else {
+                       /* SymTabRec has a const char *name so we can't free
+                          without compiler warnings. keep allocated stuff
+                          in separate array.
+                        */
+                       usbnames[i] = malloc(64);
+                       if (!usbnames[i]) {
+                               /* if malloc fails, xf86PrintChipsets() 
terminates
+                                  here because models->name is NULL. then 
again,
+                                  malloc failed, so the rest is academic. */
+                               models[i].name = NULL;
+                               break;
+                       }
+                       sprintf(usbnames[i], "usb:%04x:%04x", m->vendor_id, 
m->model_id);
+                       models[i].name = usbnames[i];
+               }
+       }
+
+       models[ARRAY_SIZE(models) - 1].name = NULL;
+
+       xf86PrintChipsets("wacom",
+                         "Driver for Wacom graphics tablets",
+                         models);
+
+       for (i = 0; i < ARRAY_SIZE(usbnames); i++)
+               free(usbnames[i]);
+}
+
+
 static Bool usbWcmInit(InputInfoPtr pInfo, char* id, float *version)
 {
        int i;
diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h
index b9e8957..587bf48 100644
--- a/src/xf86Wacom.h
+++ b/src/xf86Wacom.h
@@ -182,6 +182,7 @@ extern void set_absolute(InputInfoPtr pInfo, Bool absolute);
 extern WacomCommonPtr wcmRefCommon(WacomCommonPtr common);
 extern void wcmFreeCommon(WacomCommonPtr *common);
 extern WacomCommonPtr wcmNewCommon(void);
+extern void usbListModels(void);
 
 enum WacomSuppressMode {
        SUPPRESS_NONE = 8,      /* Process event normally */
-- 
1.8.2.1


------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to