aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorStefan Achatz <stefan_achatz@web.de>2012-11-11 00:20:52 -0500
committerJiri Kosina <jkosina@suse.cz>2012-11-12 09:30:26 -0500
commit94a8fcf9a1a816199efc29546040172aa1383be0 (patch)
tree1edb31f25daa805e3c62b202fdcc7c528e9dc2b6 /drivers/hid
parentf114fec54c30ba9c6842ac1121d3e16d3d3c6bdd (diff)
HID: roccat: cleanup of kovaplus module
Partially removed unneeded informations and data caching. Moved code nearer to format of newer drivers. Added "info" sysfs attribute to support device reset and deprecate other attributes. Signed-off-by: Stefan Achatz <erazor_de@users.sourceforge.net> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-roccat-kovaplus.c235
-rw-r--r--drivers/hid/hid-roccat-kovaplus.h14
2 files changed, 121 insertions, 128 deletions
diff --git a/drivers/hid/hid-roccat-kovaplus.c b/drivers/hid/hid-roccat-kovaplus.c
index ca6527ac655d..1589fd3bcf0f 100644
--- a/drivers/hid/hid-roccat-kovaplus.c
+++ b/drivers/hid/hid-roccat-kovaplus.c
@@ -70,13 +70,6 @@ static int kovaplus_select_profile(struct usb_device *usb_dev, uint number,
70 return kovaplus_send_control(usb_dev, number, request); 70 return kovaplus_send_control(usb_dev, number, request);
71} 71}
72 72
73static int kovaplus_get_info(struct usb_device *usb_dev,
74 struct kovaplus_info *buf)
75{
76 return roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_INFO,
77 buf, sizeof(struct kovaplus_info));
78}
79
80static int kovaplus_get_profile_settings(struct usb_device *usb_dev, 73static int kovaplus_get_profile_settings(struct usb_device *usb_dev,
81 struct kovaplus_profile_settings *buf, uint number) 74 struct kovaplus_profile_settings *buf, uint number)
82{ 75{
@@ -88,15 +81,7 @@ static int kovaplus_get_profile_settings(struct usb_device *usb_dev,
88 return retval; 81 return retval;
89 82
90 return roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_PROFILE_SETTINGS, 83 return roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_PROFILE_SETTINGS,
91 buf, sizeof(struct kovaplus_profile_settings)); 84 buf, KOVAPLUS_SIZE_PROFILE_SETTINGS);
92}
93
94static int kovaplus_set_profile_settings(struct usb_device *usb_dev,
95 struct kovaplus_profile_settings const *settings)
96{
97 return roccat_common2_send_with_status(usb_dev,
98 KOVAPLUS_COMMAND_PROFILE_SETTINGS,
99 settings, sizeof(struct kovaplus_profile_settings));
100} 85}
101 86
102static int kovaplus_get_profile_buttons(struct usb_device *usb_dev, 87static int kovaplus_get_profile_buttons(struct usb_device *usb_dev,
@@ -110,15 +95,7 @@ static int kovaplus_get_profile_buttons(struct usb_device *usb_dev,
110 return retval; 95 return retval;
111 96
112 return roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_PROFILE_BUTTONS, 97 return roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_PROFILE_BUTTONS,
113 buf, sizeof(struct kovaplus_profile_buttons)); 98 buf, KOVAPLUS_SIZE_PROFILE_BUTTONS);
114}
115
116static int kovaplus_set_profile_buttons(struct usb_device *usb_dev,
117 struct kovaplus_profile_buttons const *buttons)
118{
119 return roccat_common2_send_with_status(usb_dev,
120 KOVAPLUS_COMMAND_PROFILE_BUTTONS,
121 buttons, sizeof(struct kovaplus_profile_buttons));
122} 99}
123 100
124/* retval is 0-4 on success, < 0 on error */ 101/* retval is 0-4 on success, < 0 on error */
@@ -147,122 +124,140 @@ static int kovaplus_set_actual_profile(struct usb_device *usb_dev,
147 &buf, sizeof(struct kovaplus_actual_profile)); 124 &buf, sizeof(struct kovaplus_actual_profile));
148} 125}
149 126
150static ssize_t kovaplus_sysfs_read_profilex_settings(struct file *fp, 127static ssize_t kovaplus_sysfs_read(struct file *fp, struct kobject *kobj,
151 struct kobject *kobj, struct bin_attribute *attr, char *buf, 128 char *buf, loff_t off, size_t count,
152 loff_t off, size_t count) 129 size_t real_size, uint command)
153{ 130{
154 struct device *dev = 131 struct device *dev =
155 container_of(kobj, struct device, kobj)->parent->parent; 132 container_of(kobj, struct device, kobj)->parent->parent;
156 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev)); 133 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev));
134 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev));
135 int retval;
157 136
158 if (off >= sizeof(struct kovaplus_profile_settings)) 137 if (off >= real_size)
159 return 0; 138 return 0;
160 139
161 if (off + count > sizeof(struct kovaplus_profile_settings)) 140 if (off != 0 || count != real_size)
162 count = sizeof(struct kovaplus_profile_settings) - off; 141 return -EINVAL;
163 142
164 mutex_lock(&kovaplus->kovaplus_lock); 143 mutex_lock(&kovaplus->kovaplus_lock);
165 memcpy(buf, ((char const *)&kovaplus->profile_settings[*(uint *)(attr->private)]) + off, 144 retval = roccat_common2_receive(usb_dev, command, buf, real_size);
166 count);
167 mutex_unlock(&kovaplus->kovaplus_lock); 145 mutex_unlock(&kovaplus->kovaplus_lock);
168 146
169 return count; 147 if (retval)
148 return retval;
149
150 return real_size;
170} 151}
171 152
172static ssize_t kovaplus_sysfs_write_profile_settings(struct file *fp, 153static ssize_t kovaplus_sysfs_write(struct file *fp, struct kobject *kobj,
173 struct kobject *kobj, struct bin_attribute *attr, char *buf, 154 void const *buf, loff_t off, size_t count,
174 loff_t off, size_t count) 155 size_t real_size, uint command)
175{ 156{
176 struct device *dev = 157 struct device *dev =
177 container_of(kobj, struct device, kobj)->parent->parent; 158 container_of(kobj, struct device, kobj)->parent->parent;
178 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev)); 159 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev));
179 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev)); 160 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev));
180 int retval = 0; 161 int retval;
181 int difference;
182 int profile_index;
183 struct kovaplus_profile_settings *profile_settings;
184 162
185 if (off != 0 || count != sizeof(struct kovaplus_profile_settings)) 163 if (off != 0 || count != real_size)
186 return -EINVAL; 164 return -EINVAL;
187 165
188 profile_index = ((struct kovaplus_profile_settings const *)buf)->profile_index;
189 profile_settings = &kovaplus->profile_settings[profile_index];
190
191 mutex_lock(&kovaplus->kovaplus_lock); 166 mutex_lock(&kovaplus->kovaplus_lock);
192 difference = memcmp(buf, profile_settings, 167 retval = roccat_common2_send_with_status(usb_dev, command,
193 sizeof(struct kovaplus_profile_settings)); 168 buf, real_size);
194 if (difference) {
195 retval = kovaplus_set_profile_settings(usb_dev,
196 (struct kovaplus_profile_settings const *)buf);
197 if (!retval)
198 memcpy(profile_settings, buf,
199 sizeof(struct kovaplus_profile_settings));
200 }
201 mutex_unlock(&kovaplus->kovaplus_lock); 169 mutex_unlock(&kovaplus->kovaplus_lock);
202 170
203 if (retval) 171 if (retval)
204 return retval; 172 return retval;
205 173
206 return sizeof(struct kovaplus_profile_settings); 174 return real_size;
207} 175}
208 176
209static ssize_t kovaplus_sysfs_read_profilex_buttons(struct file *fp, 177#define KOVAPLUS_SYSFS_W(thingy, THINGY) \
210 struct kobject *kobj, struct bin_attribute *attr, char *buf, 178static ssize_t kovaplus_sysfs_write_ ## thingy(struct file *fp, \
211 loff_t off, size_t count) 179 struct kobject *kobj, struct bin_attribute *attr, char *buf, \
212{ 180 loff_t off, size_t count) \
213 struct device *dev = 181{ \
214 container_of(kobj, struct device, kobj)->parent->parent; 182 return kovaplus_sysfs_write(fp, kobj, buf, off, count, \
215 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev)); 183 KOVAPLUS_SIZE_ ## THINGY, KOVAPLUS_COMMAND_ ## THINGY); \
184}
216 185
217 if (off >= sizeof(struct kovaplus_profile_buttons)) 186#define KOVAPLUS_SYSFS_R(thingy, THINGY) \
218 return 0; 187static ssize_t kovaplus_sysfs_read_ ## thingy(struct file *fp, \
188 struct kobject *kobj, struct bin_attribute *attr, char *buf, \
189 loff_t off, size_t count) \
190{ \
191 return kovaplus_sysfs_read(fp, kobj, buf, off, count, \
192 KOVAPLUS_SIZE_ ## THINGY, KOVAPLUS_COMMAND_ ## THINGY); \
193}
219 194
220 if (off + count > sizeof(struct kovaplus_profile_buttons)) 195#define KOVAPLUS_SYSFS_RW(thingy, THINGY) \
221 count = sizeof(struct kovaplus_profile_buttons) - off; 196KOVAPLUS_SYSFS_W(thingy, THINGY) \
197KOVAPLUS_SYSFS_R(thingy, THINGY)
222 198
223 mutex_lock(&kovaplus->kovaplus_lock); 199#define KOVAPLUS_BIN_ATTRIBUTE_RW(thingy, THINGY) \
224 memcpy(buf, ((char const *)&kovaplus->profile_buttons[*(uint *)(attr->private)]) + off, 200{ \
225 count); 201 .attr = { .name = #thingy, .mode = 0660 }, \
226 mutex_unlock(&kovaplus->kovaplus_lock); 202 .size = KOVAPLUS_SIZE_ ## THINGY, \
203 .read = kovaplus_sysfs_read_ ## thingy, \
204 .write = kovaplus_sysfs_write_ ## thingy \
205}
206
207#define KOVAPLUS_BIN_ATTRIBUTE_R(thingy, THINGY) \
208{ \
209 .attr = { .name = #thingy, .mode = 0440 }, \
210 .size = KOVAPLUS_SIZE_ ## THINGY, \
211 .read = kovaplus_sysfs_read_ ## thingy, \
212}
227 213
228 return count; 214#define KOVAPLUS_BIN_ATTRIBUTE_W(thingy, THINGY) \
215{ \
216 .attr = { .name = #thingy, .mode = 0220 }, \
217 .size = KOVAPLUS_SIZE_ ## THINGY, \
218 .write = kovaplus_sysfs_write_ ## thingy \
229} 219}
230 220
231static ssize_t kovaplus_sysfs_write_profile_buttons(struct file *fp, 221KOVAPLUS_SYSFS_RW(info, INFO)
222KOVAPLUS_SYSFS_W(profile_settings, PROFILE_SETTINGS)
223KOVAPLUS_SYSFS_W(profile_buttons, PROFILE_BUTTONS)
224
225static ssize_t kovaplus_sysfs_read_profilex_settings(struct file *fp,
232 struct kobject *kobj, struct bin_attribute *attr, char *buf, 226 struct kobject *kobj, struct bin_attribute *attr, char *buf,
233 loff_t off, size_t count) 227 loff_t off, size_t count)
234{ 228{
235 struct device *dev = 229 struct device *dev =
236 container_of(kobj, struct device, kobj)->parent->parent; 230 container_of(kobj, struct device, kobj)->parent->parent;
237 struct kovaplus_device *kovaplus = hid_get_drvdata(dev_get_drvdata(dev));
238 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev)); 231 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev));
239 int retval = 0; 232 ssize_t retval;
240 int difference;
241 uint profile_index;
242 struct kovaplus_profile_buttons *profile_buttons;
243 233
244 if (off != 0 || count != sizeof(struct kovaplus_profile_buttons)) 234 retval = kovaplus_select_profile(usb_dev, *(uint *)(attr->private),
245 return -EINVAL; 235 KOVAPLUS_CONTROL_REQUEST_PROFILE_SETTINGS);
236 if (retval)
237 return retval;
246 238
247 profile_index = ((struct kovaplus_profile_buttons const *)buf)->profile_index; 239 return kovaplus_sysfs_read(fp, kobj, buf, off, count,
248 profile_buttons = &kovaplus->profile_buttons[profile_index]; 240 KOVAPLUS_SIZE_PROFILE_SETTINGS,
241 KOVAPLUS_COMMAND_PROFILE_SETTINGS);
242}
249 243
250 mutex_lock(&kovaplus->kovaplus_lock); 244static ssize_t kovaplus_sysfs_read_profilex_buttons(struct file *fp,
251 difference = memcmp(buf, profile_buttons, 245 struct kobject *kobj, struct bin_attribute *attr, char *buf,
252 sizeof(struct kovaplus_profile_buttons)); 246 loff_t off, size_t count)
253 if (difference) { 247{
254 retval = kovaplus_set_profile_buttons(usb_dev, 248 struct device *dev =
255 (struct kovaplus_profile_buttons const *)buf); 249 container_of(kobj, struct device, kobj)->parent->parent;
256 if (!retval) 250 struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev));
257 memcpy(profile_buttons, buf, 251 ssize_t retval;
258 sizeof(struct kovaplus_profile_buttons));
259 }
260 mutex_unlock(&kovaplus->kovaplus_lock);
261 252
253 retval = kovaplus_select_profile(usb_dev, *(uint *)(attr->private),
254 KOVAPLUS_CONTROL_REQUEST_PROFILE_BUTTONS);
262 if (retval) 255 if (retval)
263 return retval; 256 return retval;
264 257
265 return sizeof(struct kovaplus_profile_buttons); 258 return kovaplus_sysfs_read(fp, kobj, buf, off, count,
259 KOVAPLUS_SIZE_PROFILE_BUTTONS,
260 KOVAPLUS_COMMAND_PROFILE_BUTTONS);
266} 261}
267 262
268static ssize_t kovaplus_sysfs_show_actual_profile(struct device *dev, 263static ssize_t kovaplus_sysfs_show_actual_profile(struct device *dev,
@@ -342,9 +337,20 @@ static ssize_t kovaplus_sysfs_show_actual_sensitivity_y(struct device *dev,
342static ssize_t kovaplus_sysfs_show_firmware_version(struct device *dev, 337static ssize_t kovaplus_sysfs_show_firmware_version(struct device *dev,
343 struct device_attribute *attr, char *buf) 338 struct device_attribute *attr, char *buf)
344{ 339{
345 struct kovaplus_device *kovaplus = 340 struct kovaplus_device *kovaplus;
346 hid_get_drvdata(dev_get_drvdata(dev->parent->parent)); 341 struct usb_device *usb_dev;
347 return snprintf(buf, PAGE_SIZE, "%d\n", kovaplus->info.firmware_version); 342 struct kovaplus_info info;
343
344 dev = dev->parent->parent;
345 kovaplus = hid_get_drvdata(dev_get_drvdata(dev));
346 usb_dev = interface_to_usbdev(to_usb_interface(dev));
347
348 mutex_lock(&kovaplus->kovaplus_lock);
349 roccat_common2_receive(usb_dev, KOVAPLUS_COMMAND_INFO,
350 &info, KOVAPLUS_SIZE_INFO);
351 mutex_unlock(&kovaplus->kovaplus_lock);
352
353 return snprintf(buf, PAGE_SIZE, "%d\n", info.firmware_version);
348} 354}
349 355
350static struct device_attribute kovaplus_attributes[] = { 356static struct device_attribute kovaplus_attributes[] = {
@@ -363,73 +369,66 @@ static struct device_attribute kovaplus_attributes[] = {
363}; 369};
364 370
365static struct bin_attribute kovaplus_bin_attributes[] = { 371static struct bin_attribute kovaplus_bin_attributes[] = {
366 { 372 KOVAPLUS_BIN_ATTRIBUTE_RW(info, INFO),
367 .attr = { .name = "profile_settings", .mode = 0220 }, 373 KOVAPLUS_BIN_ATTRIBUTE_W(profile_settings, PROFILE_SETTINGS),
368 .size = sizeof(struct kovaplus_profile_settings), 374 KOVAPLUS_BIN_ATTRIBUTE_W(profile_buttons, PROFILE_BUTTONS),
369 .write = kovaplus_sysfs_write_profile_settings
370 },
371 { 375 {
372 .attr = { .name = "profile1_settings", .mode = 0440 }, 376 .attr = { .name = "profile1_settings", .mode = 0440 },
373 .size = sizeof(struct kovaplus_profile_settings), 377 .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,
374 .read = kovaplus_sysfs_read_profilex_settings, 378 .read = kovaplus_sysfs_read_profilex_settings,
375 .private = &profile_numbers[0] 379 .private = &profile_numbers[0]
376 }, 380 },
377 { 381 {
378 .attr = { .name = "profile2_settings", .mode = 0440 }, 382 .attr = { .name = "profile2_settings", .mode = 0440 },
379 .size = sizeof(struct kovaplus_profile_settings), 383 .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,
380 .read = kovaplus_sysfs_read_profilex_settings, 384 .read = kovaplus_sysfs_read_profilex_settings,
381 .private = &profile_numbers[1] 385 .private = &profile_numbers[1]
382 }, 386 },
383 { 387 {
384 .attr = { .name = "profile3_settings", .mode = 0440 }, 388 .attr = { .name = "profile3_settings", .mode = 0440 },
385 .size = sizeof(struct kovaplus_profile_settings), 389 .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,
386 .read = kovaplus_sysfs_read_profilex_settings, 390 .read = kovaplus_sysfs_read_profilex_settings,
387 .private = &profile_numbers[2] 391 .private = &profile_numbers[2]
388 }, 392 },
389 { 393 {
390 .attr = { .name = "profile4_settings", .mode = 0440 }, 394 .attr = { .name = "profile4_settings", .mode = 0440 },
391 .size = sizeof(struct kovaplus_profile_settings), 395 .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,
392 .read = kovaplus_sysfs_read_profilex_settings, 396 .read = kovaplus_sysfs_read_profilex_settings,
393 .private = &profile_numbers[3] 397 .private = &profile_numbers[3]
394 }, 398 },
395 { 399 {
396 .attr = { .name = "profile5_settings", .mode = 0440 }, 400 .attr = { .name = "profile5_settings", .mode = 0440 },
397 .size = sizeof(struct kovaplus_profile_settings), 401 .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,
398 .read = kovaplus_sysfs_read_profilex_settings, 402 .read = kovaplus_sysfs_read_profilex_settings,
399 .private = &profile_numbers[4] 403 .private = &profile_numbers[4]
400 }, 404 },
401 { 405 {
402 .attr = { .name = "profile_buttons", .mode = 0220 },
403 .size = sizeof(struct kovaplus_profile_buttons),
404 .write = kovaplus_sysfs_write_profile_buttons
405 },
406 {
407 .attr = { .name = "profile1_buttons", .mode = 0440 }, 406 .attr = { .name = "profile1_buttons", .mode = 0440 },
408 .size = sizeof(struct kovaplus_profile_buttons), 407 .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,
409 .read = kovaplus_sysfs_read_profilex_buttons, 408 .read = kovaplus_sysfs_read_profilex_buttons,
410 .private = &profile_numbers[0] 409 .private = &profile_numbers[0]
411 }, 410 },
412 { 411 {
413 .attr = { .name = "profile2_buttons", .mode = 0440 }, 412 .attr = { .name = "profile2_buttons", .mode = 0440 },
414 .size = sizeof(struct kovaplus_profile_buttons), 413 .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,
415 .read = kovaplus_sysfs_read_profilex_buttons, 414 .read = kovaplus_sysfs_read_profilex_buttons,
416 .private = &profile_numbers[1] 415 .private = &profile_numbers[1]
417 }, 416 },
418 { 417 {
419 .attr = { .name = "profile3_buttons", .mode = 0440 }, 418 .attr = { .name = "profile3_buttons", .mode = 0440 },
420 .size = sizeof(struct kovaplus_profile_buttons), 419 .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,
421 .read = kovaplus_sysfs_read_profilex_buttons, 420 .read = kovaplus_sysfs_read_profilex_buttons,
422 .private = &profile_numbers[2] 421 .private = &profile_numbers[2]
423 }, 422 },
424 { 423 {
425 .attr = { .name = "profile4_buttons", .mode = 0440 }, 424 .attr = { .name = "profile4_buttons", .mode = 0440 },
426 .size = sizeof(struct kovaplus_profile_buttons), 425 .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,
427 .read = kovaplus_sysfs_read_profilex_buttons, 426 .read = kovaplus_sysfs_read_profilex_buttons,
428 .private = &profile_numbers[3] 427 .private = &profile_numbers[3]
429 }, 428 },
430 { 429 {
431 .attr = { .name = "profile5_buttons", .mode = 0440 }, 430 .attr = { .name = "profile5_buttons", .mode = 0440 },
432 .size = sizeof(struct kovaplus_profile_buttons), 431 .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,
433 .read = kovaplus_sysfs_read_profilex_buttons, 432 .read = kovaplus_sysfs_read_profilex_buttons,
434 .private = &profile_numbers[4] 433 .private = &profile_numbers[4]
435 }, 434 },
@@ -444,10 +443,6 @@ static int kovaplus_init_kovaplus_device_struct(struct usb_device *usb_dev,
444 443
445 mutex_init(&kovaplus->kovaplus_lock); 444 mutex_init(&kovaplus->kovaplus_lock);
446 445
447 retval = kovaplus_get_info(usb_dev, &kovaplus->info);
448 if (retval)
449 return retval;
450
451 for (i = 0; i < 5; ++i) { 446 for (i = 0; i < 5; ++i) {
452 msleep(wait); 447 msleep(wait);
453 retval = kovaplus_get_profile_settings(usb_dev, 448 retval = kovaplus_get_profile_settings(usb_dev,
diff --git a/drivers/hid/hid-roccat-kovaplus.h b/drivers/hid/hid-roccat-kovaplus.h
index f82daa1cdcb9..1189573daee2 100644
--- a/drivers/hid/hid-roccat-kovaplus.h
+++ b/drivers/hid/hid-roccat-kovaplus.h
@@ -14,6 +14,12 @@
14 14
15#include <linux/types.h> 15#include <linux/types.h>
16 16
17enum {
18 KOVAPLUS_SIZE_INFO = 0x06,
19 KOVAPLUS_SIZE_PROFILE_SETTINGS = 0x10,
20 KOVAPLUS_SIZE_PROFILE_BUTTONS = 0x17,
21};
22
17enum kovaplus_control_requests { 23enum kovaplus_control_requests {
18 /* write; value = profile number range 0-4 */ 24 /* write; value = profile number range 0-4 */
19 KOVAPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 0x10, 25 KOVAPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 0x10,
@@ -53,13 +59,6 @@ struct kovaplus_info {
53 uint8_t unknown[3]; 59 uint8_t unknown[3];
54} __packed; 60} __packed;
55 61
56/* writes 1 on plugin */
57struct kovaplus_a {
58 uint8_t command; /* KOVAPLUS_COMMAND_A */
59 uint8_t size; /* 3 */
60 uint8_t unknown;
61} __packed;
62
63enum kovaplus_commands { 62enum kovaplus_commands {
64 KOVAPLUS_COMMAND_ACTUAL_PROFILE = 0x5, 63 KOVAPLUS_COMMAND_ACTUAL_PROFILE = 0x5,
65 KOVAPLUS_COMMAND_PROFILE_SETTINGS = 0x6, 64 KOVAPLUS_COMMAND_PROFILE_SETTINGS = 0x6,
@@ -125,7 +124,6 @@ struct kovaplus_device {
125 int roccat_claimed; 124 int roccat_claimed;
126 int chrdev_minor; 125 int chrdev_minor;
127 struct mutex kovaplus_lock; 126 struct mutex kovaplus_lock;
128 struct kovaplus_info info;
129 struct kovaplus_profile_settings profile_settings[5]; 127 struct kovaplus_profile_settings profile_settings[5];
130 struct kovaplus_profile_buttons profile_buttons[5]; 128 struct kovaplus_profile_buttons profile_buttons[5];
131}; 129};