{
        int error;
 
+       if (!(wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD))
+               return 0;
+
        /* Initialize default values */
        switch (wacom->wacom_wac.features.type) {
        case INTUOS4S:
        case INTUOSPS:
        case INTUOSPM:
        case INTUOSPL:
-               if (wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PEN) {
-                       wacom->led.select[0] = 0;
-                       wacom->led.select[1] = 0;
-                       wacom->led.llv = 32;
-                       wacom->led.hlv = 0;
-                       wacom->led.img_lum = 0;
-
-                       error = sysfs_create_group(&wacom->hdev->dev.kobj,
-                                                 &intuos5_led_attr_group);
-               } else
-                       return 0;
+               wacom->led.select[0] = 0;
+               wacom->led.select[1] = 0;
+               wacom->led.llv = 32;
+               wacom->led.hlv = 0;
+               wacom->led.img_lum = 0;
+
+               error = sysfs_create_group(&wacom->hdev->dev.kobj,
+                                         &intuos5_led_attr_group);
                break;
 
        default:
        if (!wacom->led_initialized)
                return;
 
+       if (!(wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PAD))
+               return;
+
        wacom->led_initialized = false;
 
        switch (wacom->wacom_wac.features.type) {
        case INTUOSPS:
        case INTUOSPM:
        case INTUOSPL:
-               if (wacom->wacom_wac.features.device_type & WACOM_DEVICETYPE_PEN)
-                       sysfs_remove_group(&wacom->hdev->dev.kobj,
-                                          &intuos5_led_attr_group);
+               sysfs_remove_group(&wacom->hdev->dev.kobj,
+                                  &intuos5_led_attr_group);
                break;
        }
 }
                wacom_wac1->features =
                        *((struct wacom_features *)id->driver_data);
                wacom_wac1->features.device_type |= WACOM_DEVICETYPE_PEN;
+               if (wacom_wac1->features.type != INTUOSHT &&
+                   wacom_wac1->features.type != BAMBOO_PT)
+                       wacom_wac1->features.device_type |= WACOM_DEVICETYPE_PAD;
                snprintf(wacom_wac1->name, WACOM_NAME_MAX, "%s (WL) Pen",
                         wacom_wac1->features.name);
                snprintf(wacom_wac1->pad_name, WACOM_NAME_MAX, "%s (WL) Pad",
                        wacom_wac2->features =
                                *((struct wacom_features *)id->driver_data);
                        wacom_wac2->features.pktlen = WACOM_PKGLEN_BBTOUCH3;
-                       wacom_wac2->features.device_type |= WACOM_DEVICETYPE_TOUCH;
                        wacom_wac2->features.x_max = wacom_wac2->features.y_max = 4096;
-                       if (wacom_wac2->features.touch_max)
-                               snprintf(wacom_wac2->name, WACOM_NAME_MAX,
-                                        "%s (WL) Finger",wacom_wac2->features.name);
-                       else
-                               snprintf(wacom_wac2->name, WACOM_NAME_MAX,
-                                        "%s (WL) Pad",wacom_wac2->features.name);
+                       snprintf(wacom_wac2->name, WACOM_NAME_MAX,
+                                "%s (WL) Finger",wacom_wac2->features.name);
                        snprintf(wacom_wac2->pad_name, WACOM_NAME_MAX,
-                                "%s (WL) Pad", wacom_wac2->features.name);
+                                "%s (WL) Pad",wacom_wac2->features.name);
+                       if (wacom_wac1->features.touch_max)
+                               wacom_wac2->features.device_type |= WACOM_DEVICETYPE_TOUCH;
+                       if (wacom_wac1->features.type == INTUOSHT ||
+                           wacom_wac1->features.type == BAMBOO_PT)
+                               wacom_wac2->features.device_type |= WACOM_DEVICETYPE_PAD;
                        wacom_wac2->pid = wacom_wac->pid;
                        error = wacom_allocate_inputs(wacom2) ||
                                wacom_register_inputs(wacom2);
                        "%s Pen", name);
        }
        else if (features->device_type & WACOM_DEVICETYPE_TOUCH) {
-               if (features->touch_max)
-                       snprintf(wacom_wac->name, sizeof(wacom_wac->name),
-                               "%s Finger", name);
-               else
-                       snprintf(wacom_wac->name, sizeof(wacom_wac->name),
-                               "%s Pad", name);
+               snprintf(wacom_wac->name, sizeof(wacom_wac->name),
+                       "%s Finger", name);
+       }
+       else if (features->device_type & WACOM_DEVICETYPE_PAD) {
+               snprintf(wacom_wac->name, sizeof(wacom_wac->name),
+                       "%s Pad", name);
        }
 }
 
        if (features->quirks & WACOM_QUIRK_MONITOR)
                error = hid_hw_open(hdev);
 
-       if (wacom_wac->features.type == INTUOSHT && wacom_wac->features.touch_max) {
-               if (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH)
+       if (wacom_wac->features.type == INTUOSHT && 
+           wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH) {
                        wacom_wac->shared->touch_input = wacom_wac->input;
        }
 
 
 {
        struct wacom_features *features = &wacom->wacom_wac.features;
 
+       /* The pen and pad share the same interface on most devices */
+       if (features->type == GRAPHIRE_BT || features->type == WACOM_G4 ||
+           features->type == DTUS || features->type == WACOM_MO ||
+           (features->type >= INTUOS3S && features->type <= WACOM_13HD && 
+            features->type != INTUOSHT)) {
+               if (features->device_type & WACOM_DEVICETYPE_PEN)
+                       features->device_type |= WACOM_DEVICETYPE_PAD;
+       }
+
        /* touch device found but size is not defined. use default */
        if (features->device_type & WACOM_DEVICETYPE_TOUCH && !features->x_max) {
                features->x_max = 1023;
        if ((features->type >= INTUOS5S && features->type <= INTUOSHT) ||
                (features->type == BAMBOO_PT)) {
                if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) {
-                       features->device_type |= WACOM_DEVICETYPE_TOUCH;
+                       if (features->touch_max)
+                               features->device_type |= WACOM_DEVICETYPE_TOUCH;
+                       if (features->type == BAMBOO_PT || features->type == INTUOSHT)
+                               features->device_type |= WACOM_DEVICETYPE_PAD;
 
                        features->x_max = 4096;
                        features->y_max = 4096;
                /* penabled devices have fixed resolution for each model */
                input_abs_set_res(input_dev, ABS_X, features->x_resolution);
                input_abs_set_res(input_dev, ABS_Y, features->y_resolution);
-       } else {
+       } else if (features->device_type & WACOM_DEVICETYPE_TOUCH) {
                if (features->touch_max == 1) {
                        input_set_abs_params(input_dev, ABS_X, 0,
                                features->x_max, features->x_fuzz, 0);
                break;
 
        case INTUOSHT:
-               if (features->touch_max &&
-                   features->device_type & WACOM_DEVICETYPE_TOUCH) {
+               if (features->device_type & WACOM_DEVICETYPE_TOUCH) {
                        input_dev->evbit[0] |= BIT_MASK(EV_SW);
                        __set_bit(SW_MUTE_DEVICE, input_dev->swbit);
                }
                __clear_bit(ABS_MISC, input_dev->absbit);
 
                if (features->device_type & WACOM_DEVICETYPE_TOUCH) {
-
-                       if (features->touch_max) {
-                               if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) {
-                                       input_set_abs_params(input_dev,
-                                                    ABS_MT_TOUCH_MAJOR,
-                                                    0, features->x_max, 0, 0);
-                                       input_set_abs_params(input_dev,
-                                                    ABS_MT_TOUCH_MINOR,
-                                                    0, features->y_max, 0, 0);
-                               }
-                               input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER);
-                       } else {
-                               /* buttons/keys only interface */
-                               __clear_bit(ABS_X, input_dev->absbit);
-                               __clear_bit(ABS_Y, input_dev->absbit);
-                               __clear_bit(BTN_TOUCH, input_dev->keybit);
-
-                               /* PAD is setup by wacom_setup_pad_input_capabilities later */
-                               return 1;
+                       if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) {
+                               input_set_abs_params(input_dev,
+                                            ABS_MT_TOUCH_MAJOR,
+                                            0, features->x_max, 0, 0);
+                               input_set_abs_params(input_dev,
+                                            ABS_MT_TOUCH_MINOR,
+                                            0, features->y_max, 0, 0);
                        }
-               } else if (features->device_type & WACOM_DEVICETYPE_PEN) {
+                       input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER);
+               }
+               if (features->device_type & WACOM_DEVICETYPE_PAD) {
+                       /* buttons/keys only interface */
+                       __clear_bit(ABS_X, input_dev->absbit);
+                       __clear_bit(ABS_Y, input_dev->absbit);
+                       __clear_bit(BTN_TOUCH, input_dev->keybit);
+
+                       /* PAD is setup by wacom_setup_pad_input_capabilities later */
+                       return 1;
+               }
+               if (features->device_type & WACOM_DEVICETYPE_PEN) {
                        __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
                        __set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
                        __set_bit(BTN_TOOL_PEN, input_dev->keybit);
        struct wacom_features *features = &wacom_wac->features;
        int i;
 
+       if (!(features->device_type & WACOM_DEVICETYPE_PAD))
+               return -ENODEV;
+
        input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
 
        /* kept for making legacy xf86-input-wacom working with the wheels */
 
        case INTUOS5S:
        case INTUOSPS:
-               /* touch interface does not have the pad device */
-               if (!(features->device_type & WACOM_DEVICETYPE_PEN))
-                       return -ENODEV;
-
                for (i = 0; i < 7; i++)
                        __set_bit(BTN_0 + i, input_dev->keybit);
 
 
        case INTUOSHT:
        case BAMBOO_PT:
-               /* pad device is on the touch interface */
-               if (!(features->device_type & WACOM_DEVICETYPE_TOUCH) ||
-                   /* Bamboo Pen only tablet does not have pad */
-                   ((features->type == BAMBOO_PT) && !features->touch_max))
-                       return -ENODEV;
-
                __clear_bit(ABS_MISC, input_dev->absbit);
 
                __set_bit(BTN_LEFT, input_dev->keybit);