Ticket #3744: wacom_bamboo.patch

File wacom_bamboo.patch, 4.8 KB (added by idefix, 11 years ago)

(patch) cleaned-up kernel addon and added four Bamboo models to input_server addon

  • src/add-ons/kernel/drivers/input/wacom/wacom.c

     
    115115
    116116    // we need these four for a Wacom tablet
    117117    size_t controlTransferLength;
    118     int i;
     118    int tryCount;
    119119    char repData[2] = { 0x02, 0x02 };
    120120    char retData[2] = { 0x00, 0x00 };
    121121
     
    206206        if (udd->vendor_id == 0x056a) {
    207207            // do the control transfers to set up absolute mode (default is HID
    208208            // mode)
    209            
     209
    210210            // see 'Device Class Definition for HID 1.11' (HID1_11.pdf),
    211211            // par. 7.2 (available at www.usb.org/developers/hidpage)
    212212
     
    227227            // absolute mode, pressure data, etc.)
    228228            controlTransferLength = 2;
    229229
    230             for (i = 0; i < 5; i++) {
     230            for (tryCount = 0; tryCount < 5; tryCount++) {
    231231                // HID Class-Specific Request, Host to device (=0x21):
    232232                // SET_REPORT (=0x09) type Feature (=3) with ID 2 (=2) of
    233233                // Interface #0 (=0) to repData (== { 0x02, 0x02 })
    234234                st = usb->send_request(dev, 0x21, 0x09, (3 << 8) + 2, 0, 2,
    235235                    repData, &controlTransferLength);
    236    
     236
    237237                if (st < B_OK) {
    238                     dprintf(ID "add_device() - control transfer 2 failed: %ld\
    239                         \n", st);
     238                    dprintf(ID "add_device() - control transfer 2 failed: %ld"
     239                        "\n", st);
    240240                }
    241    
     241
    242242                // check if registers are set correctly
    243    
     243
    244244                // HID Class-Specific Request, Device to host (=0xA1):
    245245                // GET_REPORT (=0x01) type Feature (=3) with ID 2 (=2) of
    246246                // Interface #0 (=0) to retData
    247247                st = usb->send_request(dev, 0xA1, 0x01, (3 << 8) + 2, 0, 2,
    248248                    retData, &controlTransferLength);
    249    
     249
    250250                if (st < B_OK) {
    251                     dprintf(ID "add_device() - control transfer 3 failed: %ld\
    252                         \n", st);
     251                    dprintf(ID "add_device() - control transfer 3 failed: %ld"
     252                        "\n", st);
    253253                }
    254    
    255                 dprintf(ID "retData: %u - %u\n", retData[0], retData[1]);
    256                 dprintf("====================================\n");
    257                
    258                 if (retData[0] == repData[0] && retData[1] == repData[1]) break;
    259                
     254
     255                DPRINTF_INFO((ID "add_device() - retData: %u - %u\n",
     256                    retData[0], retData[1]));
     257
     258                if (retData[0] == repData[0] && retData[1] == repData[1]) {
     259                    DPRINTF_INFO((ID "add_device() - successfully set "
     260                        "'Wacom'-mode\n"));
     261                    break;
     262                }
    260263            }
    261264
    262             dprintf(ID "count: %u\n", i);
    263            
    264             if (i > 4) {
     265            DPRINTF_INFO((ID "add_device() - number of tries: %u\n",
     266                tryCount + 1));
     267
     268            if (tryCount > 4) {
    265269                dprintf(ID "add_device() - set 'Wacom'-mode failed\n");
    266270            }
    267271        }
  • src/add-ons/input_server/devices/wacom/TabletDevice.h

     
    7575        DEVICE_VOLITO,
    7676        DEVICE_PENSTATION,
    7777        DEVICE_CINTIQ,
     78        DEVICE_BAMBOO,
    7879    };
    7980
    8081    enum {
  • src/add-ons/input_server/devices/wacom/TabletDevice.cpp

     
    134134        case 0x16:  // Graphire 4 6x8 (tested)
    135135            SetDevice(16704.0, 12064.0, DEVICE_GRAPHIRE);
    136136            break;
     137        case 0x17:  // BambooFun 4x5 (from Linux Wacom Project)
     138            SetDevice(14760.0, 9225.0, DEVICE_BAMBOO);
     139            break;
     140        case 0x18:  // BambooFun 6x8 (from Linux Wacom Project)
     141            SetDevice(21648.0, 13530.0, DEVICE_BAMBOO);
     142            break;
    137143        case 0x20:
    138144            SetDevice(12700.0, 10600.0, DEVICE_INTUOS);
    139145            break;
     
    202208//          SetDevice(3450.0, 2100.0, DEVICE_PENSTATION);
    203209            SetDevice(3248.0, 2320.0, DEVICE_PENSTATION);
    204210            break;
     211        case 0x65:  // Bamboo (from Linux Wacom Project)
     212            SetDevice(14760.0, 9225.0, DEVICE_BAMBOO);
     213            break;
     214        case 0x69:  // Bamboo1 (from Linux Wacom Project)
     215            SetDevice(5104.0,  3712.0, DEVICE_BAMBOO);
     216            break;
    205217        case 0xB0:
    206218            SetDevice(25400.0, 20320.0, DEVICE_INTUOS3);
    207219            break;
     
    264276            hasContact = true;
    265277            break;
    266278        }
    267         case DEVICE_GRAPHIRE: {
     279        case DEVICE_GRAPHIRE:
     280        case DEVICE_BAMBOO:
     281        {
    268282            xPos = data[3] << 8 | data[2];
    269283            yPos = data[5] << 8 | data[4];
    270284
     
    658672        case 0x16:
    659673            *name = "Wacom Graphire4 6x8\" USB";
    660674            break;
     675        case 0x17:
     676            *name = "Wacom BambooFun 4x5\" USB";
     677            break;
     678        case 0x18:
     679            *name = "Wacom BambooFun 6x8\" USB";
     680            break;
    661681        case 0x20:
    662682            *name = "Wacom Intuos 4x5\" USB";
    663683            break;
     
    727747        case 0x64:
    728748            *name = "Wacom PenPartner.1 USB";
    729749            break;
     750        case 0x65:
     751            *name = "Wacom Bamboo USB";
     752            break;
     753        case 0x69:
     754            *name = "Wacom Bamboo1 USB";
     755            break;
    730756
    731757        case 0xB0:
    732758            *name = "Wacom Intuos3 4x5 USB";