Skip to content

Commit 2bbed15

Browse files
committed
input: misc: atmel_ptc: fix bug in configuration parsing
There were several bug in the parsing of the configuration file: - bad offsets - an error with the size given to for_each_set_byte() Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com>
1 parent 1dead7b commit 2bbed15

1 file changed

Lines changed: 7 additions & 18 deletions

File tree

drivers/input/misc/atmel_ptc.c

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ struct atmel_qtm_mailbox_map {
100100
unsigned int cmd_id_offset;
101101
unsigned int cmd_addr_offset;
102102
unsigned int cmd_data_offset;
103-
unsigned int config_offset;
104103
unsigned int node_group_config_offset;
105104
unsigned int node_group_config_count_offset;
106105
unsigned int node_config_offset;
@@ -129,22 +128,21 @@ static struct atmel_qtm_mailbox_map mailbox_map_v63 = {
129128
.cmd_id_offset = 0,
130129
.cmd_addr_offset = 2,
131130
.cmd_data_offset = 4,
132-
.config_offset = 0x100,
133-
.node_group_config_offset = 0x0,
131+
.node_group_config_offset = 0x100,
134132
.node_group_config_count_offset = 0,
135133
.node_config_offset = 0x106,
136134
.node_config_size = 12,
137135
.node_config_mask_x_offset = 0,
138136
.node_config_mask_y_offset = 2,
139-
.scroller_group_config_offset = 0x716,
137+
.scroller_group_config_offset = 0x816,
140138
.scroller_group_config_count_offset = 2,
141-
.scroller_config_offset = 0x71a,
139+
.scroller_config_offset = 0x81a,
142140
.scroller_config_size = 10,
143141
.scroller_config_type_offset = 0,
144142
.scroller_config_key_start_offset = 2,
145143
.scroller_config_key_count_offset = 4,
146144
.scroller_config_resol_deadband_offset = 5,
147-
.scroller_data_offset = 0x742,
145+
.scroller_data_offset = 0x842,
148146
.scroller_data_size = 10,
149147
.scroller_data_status_offset = 0,
150148
.scroller_data_position_offset = 6,
@@ -272,7 +270,7 @@ static u16 atmel_qtm_get_node_mask_x(struct atmel_ptc *ptc,
272270
unsigned int index)
273271
{
274272
void __iomem *addr = ptc->qtm_mb
275-
+ ptc->mb_map->config_offset
273+
+ ptc->mb_map->node_config_offset
276274
+ ptc->mb_map->node_config_size * index
277275
+ ptc->mb_map->node_config_mask_x_offset;
278276

@@ -283,7 +281,6 @@ static u32 atmel_qtm_get_node_mask_y(struct atmel_ptc *ptc,
283281
unsigned int index)
284282
{
285283
void __iomem *addr = ptc->qtm_mb
286-
+ ptc->mb_map->config_offset
287284
+ ptc->mb_map->node_config_offset
288285
+ ptc->mb_map->node_config_size * index
289286
+ ptc->mb_map->node_config_mask_y_offset;
@@ -294,7 +291,6 @@ static u32 atmel_qtm_get_node_mask_y(struct atmel_ptc *ptc,
294291
static u16 atmel_qtm_get_key_count(struct atmel_ptc *ptc)
295292
{
296293
void __iomem *addr = ptc->qtm_mb
297-
+ ptc->mb_map->config_offset
298294
+ ptc->mb_map->node_group_config_offset
299295
+ ptc->mb_map->node_group_config_count_offset;
300296

@@ -304,7 +300,6 @@ static u16 atmel_qtm_get_key_count(struct atmel_ptc *ptc)
304300
static u8 atmel_qtm_get_scroller_group_config_count(struct atmel_ptc *ptc)
305301
{
306302
void __iomem *addr = ptc->qtm_mb
307-
+ ptc->mb_map->config_offset
308303
+ ptc->mb_map->scroller_group_config_offset
309304
+ ptc->mb_map->scroller_group_config_count_offset;
310305

@@ -315,7 +310,6 @@ static u8 atmel_qtm_get_scroller_type(struct atmel_ptc *ptc,
315310
unsigned int index)
316311
{
317312
void __iomem *addr = ptc->qtm_mb
318-
+ ptc->mb_map->config_offset
319313
+ ptc->mb_map->scroller_config_offset
320314
+ ptc->mb_map->scroller_config_size * index
321315
+ ptc->mb_map->scroller_config_type_offset;
@@ -327,7 +321,6 @@ static u16 atmel_qtm_get_scroller_key_start(struct atmel_ptc *ptc,
327321
unsigned int index)
328322
{
329323
void __iomem *addr = ptc->qtm_mb
330-
+ ptc->mb_map->config_offset
331324
+ ptc->mb_map->scroller_config_offset
332325
+ ptc->mb_map->scroller_config_size * index
333326
+ ptc->mb_map->scroller_config_key_start_offset;
@@ -339,7 +332,6 @@ static u8 atmel_qtm_get_scroller_key_count(struct atmel_ptc *ptc,
339332
unsigned int index)
340333
{
341334
void __iomem *addr = ptc->qtm_mb
342-
+ ptc->mb_map->config_offset
343335
+ ptc->mb_map->scroller_config_offset
344336
+ ptc->mb_map->scroller_config_size * index
345337
+ ptc->mb_map->scroller_config_key_count_offset;
@@ -351,7 +343,6 @@ static u8 atmel_qtm_get_scroller_resolution(struct atmel_ptc *ptc,
351343
unsigned int index)
352344
{
353345
void __iomem *addr = ptc->qtm_mb
354-
+ ptc->mb_map->config_offset
355346
+ ptc->mb_map->scroller_config_offset
356347
+ ptc->mb_map->scroller_config_size * index
357348
+ ptc->mb_map->scroller_config_resol_deadband_offset;
@@ -363,7 +354,6 @@ static u8 atmel_qtm_get_scroller_status(struct atmel_ptc *ptc,
363354
unsigned int index)
364355
{
365356
void __iomem *addr = ptc->qtm_mb
366-
+ ptc->mb_map->config_offset
367357
+ ptc->mb_map->scroller_data_offset
368358
+ ptc->mb_map->scroller_data_size * index
369359
+ ptc->mb_map->scroller_data_status_offset;
@@ -375,7 +365,6 @@ static u16 atmel_qtm_get_scroller_position(struct atmel_ptc *ptc,
375365
unsigned int index)
376366
{
377367
void __iomem *addr = ptc->qtm_mb
378-
+ ptc->mb_map->config_offset
379368
+ ptc->mb_map->scroller_data_offset
380369
+ ptc->mb_map->scroller_data_size * index
381370
+ ptc->mb_map->scroller_data_position_offset;
@@ -525,7 +514,7 @@ static int atmel_ptc_request_pins(struct atmel_ptc *ptc)
525514
u16 mask_x = atmel_qtm_get_node_mask_x(ptc, i);
526515
u32 mask_y = atmel_qtm_get_node_mask_y(ptc, i);
527516

528-
for_each_set_bit(j, (unsigned long *)&mask_x, sizeof(mask_x)) {
517+
for_each_set_bit(j, (unsigned long *)&mask_x, 16) {
529518
if (ptc->x_lines_requested[j])
530519
continue;
531520

@@ -536,7 +525,7 @@ static int atmel_ptc_request_pins(struct atmel_ptc *ptc)
536525
ptc->x_lines_requested[j] = true;
537526
}
538527

539-
for_each_set_bit(j, (unsigned long *)&mask_y, sizeof(mask_y)) {
528+
for_each_set_bit(j, (unsigned long *)&mask_y, 32) {
540529
if (ptc->y_lines_requested[j])
541530
continue;
542531

0 commit comments

Comments
 (0)