Skip to content

Commit

Permalink
Input: wacom - install LED/OLED sysfs files in the HID device instead…
Browse files Browse the repository at this point in the history
… of USB

Removes one more dependency over USB, but requires some changes in
the user space to find the sysfs files correctly.

This patch breaks the user space. However, the number of program
accessing the LEDs is quite limited and we can easily patch them
to handle the new HID behavior.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: Jason Gerecke <killertofu@gmail.com>
Tested-by: Jason Gerecke <killertofu@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Benjamin Tissoires authored and Dmitry Torokhov committed Jul 26, 2014
1 parent 01c846f commit c31a408
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions drivers/input/tablet/wacom_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,7 @@ static int wacom_led_putimage(struct wacom *wacom, int button_id, const void *im
static ssize_t wacom_led_select_store(struct device *dev, int set_id,
const char *buf, size_t count)
{
struct hid_device *hdev = dev_get_drvdata(dev);
struct hid_device *hdev = container_of(dev, struct hid_device, dev);
struct wacom *wacom = hid_get_drvdata(hdev);
unsigned int id;
int err;
Expand Down Expand Up @@ -703,7 +703,7 @@ static ssize_t wacom_led##SET_ID##_select_store(struct device *dev, \
static ssize_t wacom_led##SET_ID##_select_show(struct device *dev, \
struct device_attribute *attr, char *buf) \
{ \
struct hid_device *hdev = dev_get_drvdata(dev); \
struct hid_device *hdev = container_of(dev, struct hid_device, dev);\
struct wacom *wacom = hid_get_drvdata(hdev); \
return snprintf(buf, 2, "%d\n", wacom->led.select[SET_ID]); \
} \
Expand Down Expand Up @@ -738,7 +738,7 @@ static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest,
static ssize_t wacom_##name##_luminance_store(struct device *dev, \
struct device_attribute *attr, const char *buf, size_t count) \
{ \
struct hid_device *hdev = dev_get_drvdata(dev); \
struct hid_device *hdev = container_of(dev, struct hid_device, dev);\
struct wacom *wacom = hid_get_drvdata(hdev); \
\
return wacom_luminance_store(wacom, &wacom->led.field, \
Expand All @@ -754,7 +754,7 @@ DEVICE_LUMINANCE_ATTR(buttons, img_lum);
static ssize_t wacom_button_image_store(struct device *dev, int button_id,
const char *buf, size_t count)
{
struct hid_device *hdev = dev_get_drvdata(dev);
struct hid_device *hdev = container_of(dev, struct hid_device, dev);
struct wacom *wacom = hid_get_drvdata(hdev);
int err;

Expand Down Expand Up @@ -845,7 +845,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.llv = 10;
wacom->led.hlv = 20;
wacom->led.img_lum = 10;
error = sysfs_create_group(&wacom->intf->dev.kobj,
error = sysfs_create_group(&wacom->hdev->dev.kobj,
&intuos4_led_attr_group);
break;

Expand All @@ -857,7 +857,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.hlv = 0;
wacom->led.img_lum = 0;

error = sysfs_create_group(&wacom->intf->dev.kobj,
error = sysfs_create_group(&wacom->hdev->dev.kobj,
&cintiq_led_attr_group);
break;

Expand All @@ -874,7 +874,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.hlv = 0;
wacom->led.img_lum = 0;

error = sysfs_create_group(&wacom->intf->dev.kobj,
error = sysfs_create_group(&wacom->hdev->dev.kobj,
&intuos5_led_attr_group);
} else
return 0;
Expand All @@ -885,7 +885,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
}

if (error) {
dev_err(&wacom->intf->dev,
hid_err(wacom->hdev,
"cannot create sysfs group err: %d\n", error);
return error;
}
Expand All @@ -900,13 +900,13 @@ static void wacom_destroy_leds(struct wacom *wacom)
case INTUOS4S:
case INTUOS4:
case INTUOS4L:
sysfs_remove_group(&wacom->intf->dev.kobj,
sysfs_remove_group(&wacom->hdev->dev.kobj,
&intuos4_led_attr_group);
break;

case WACOM_24HD:
case WACOM_21UX2:
sysfs_remove_group(&wacom->intf->dev.kobj,
sysfs_remove_group(&wacom->hdev->dev.kobj,
&cintiq_led_attr_group);
break;

Expand All @@ -917,7 +917,7 @@ static void wacom_destroy_leds(struct wacom *wacom)
case INTUOSPM:
case INTUOSPL:
if (wacom->wacom_wac.features.device_type == BTN_TOOL_PEN)
sysfs_remove_group(&wacom->intf->dev.kobj,
sysfs_remove_group(&wacom->hdev->dev.kobj,
&intuos5_led_attr_group);
break;
}
Expand Down

0 comments on commit c31a408

Please sign in to comment.