Commit c31a408f authored by Benjamin Tissoires's avatar Benjamin Tissoires Committed by Dmitry Torokhov

Input: wacom - install LED/OLED sysfs files in the HID device instead 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: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: default avatarJason Gerecke <killertofu@gmail.com>
Tested-by: default avatarJason Gerecke <killertofu@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 01c846f9
...@@ -675,7 +675,7 @@ static int wacom_led_putimage(struct wacom *wacom, int button_id, const void *im ...@@ -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, static ssize_t wacom_led_select_store(struct device *dev, int set_id,
const char *buf, size_t count) 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); struct wacom *wacom = hid_get_drvdata(hdev);
unsigned int id; unsigned int id;
int err; int err;
...@@ -703,7 +703,7 @@ static ssize_t wacom_led##SET_ID##_select_store(struct device *dev, \ ...@@ -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, \ static ssize_t wacom_led##SET_ID##_select_show(struct device *dev, \
struct device_attribute *attr, char *buf) \ 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); \ struct wacom *wacom = hid_get_drvdata(hdev); \
return snprintf(buf, 2, "%d\n", wacom->led.select[SET_ID]); \ return snprintf(buf, 2, "%d\n", wacom->led.select[SET_ID]); \
} \ } \
...@@ -738,7 +738,7 @@ static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest, ...@@ -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, \ static ssize_t wacom_##name##_luminance_store(struct device *dev, \
struct device_attribute *attr, const char *buf, size_t count) \ 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); \ struct wacom *wacom = hid_get_drvdata(hdev); \
\ \
return wacom_luminance_store(wacom, &wacom->led.field, \ return wacom_luminance_store(wacom, &wacom->led.field, \
...@@ -754,7 +754,7 @@ DEVICE_LUMINANCE_ATTR(buttons, img_lum); ...@@ -754,7 +754,7 @@ DEVICE_LUMINANCE_ATTR(buttons, img_lum);
static ssize_t wacom_button_image_store(struct device *dev, int button_id, static ssize_t wacom_button_image_store(struct device *dev, int button_id,
const char *buf, size_t count) 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); struct wacom *wacom = hid_get_drvdata(hdev);
int err; int err;
...@@ -845,7 +845,7 @@ static int wacom_initialize_leds(struct wacom *wacom) ...@@ -845,7 +845,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.llv = 10; wacom->led.llv = 10;
wacom->led.hlv = 20; wacom->led.hlv = 20;
wacom->led.img_lum = 10; 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); &intuos4_led_attr_group);
break; break;
...@@ -857,7 +857,7 @@ static int wacom_initialize_leds(struct wacom *wacom) ...@@ -857,7 +857,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.hlv = 0; wacom->led.hlv = 0;
wacom->led.img_lum = 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); &cintiq_led_attr_group);
break; break;
...@@ -874,7 +874,7 @@ static int wacom_initialize_leds(struct wacom *wacom) ...@@ -874,7 +874,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
wacom->led.hlv = 0; wacom->led.hlv = 0;
wacom->led.img_lum = 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); &intuos5_led_attr_group);
} else } else
return 0; return 0;
...@@ -885,7 +885,7 @@ static int wacom_initialize_leds(struct wacom *wacom) ...@@ -885,7 +885,7 @@ static int wacom_initialize_leds(struct wacom *wacom)
} }
if (error) { if (error) {
dev_err(&wacom->intf->dev, hid_err(wacom->hdev,
"cannot create sysfs group err: %d\n", error); "cannot create sysfs group err: %d\n", error);
return error; return error;
} }
...@@ -900,13 +900,13 @@ static void wacom_destroy_leds(struct wacom *wacom) ...@@ -900,13 +900,13 @@ static void wacom_destroy_leds(struct wacom *wacom)
case INTUOS4S: case INTUOS4S:
case INTUOS4: case INTUOS4:
case INTUOS4L: case INTUOS4L:
sysfs_remove_group(&wacom->intf->dev.kobj, sysfs_remove_group(&wacom->hdev->dev.kobj,
&intuos4_led_attr_group); &intuos4_led_attr_group);
break; break;
case WACOM_24HD: case WACOM_24HD:
case WACOM_21UX2: case WACOM_21UX2:
sysfs_remove_group(&wacom->intf->dev.kobj, sysfs_remove_group(&wacom->hdev->dev.kobj,
&cintiq_led_attr_group); &cintiq_led_attr_group);
break; break;
...@@ -917,7 +917,7 @@ static void wacom_destroy_leds(struct wacom *wacom) ...@@ -917,7 +917,7 @@ static void wacom_destroy_leds(struct wacom *wacom)
case INTUOSPM: case INTUOSPM:
case INTUOSPL: case INTUOSPL:
if (wacom->wacom_wac.features.device_type == BTN_TOOL_PEN) 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); &intuos5_led_attr_group);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment