From: Eric Miao <eric.y.miao@gmail.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Trilok Soni <soni.trilok@gmail.com>,
Paulius Zaleckas <paulius.zaleckas@teltonika.lt>,
Uli Luckas <u.luckas@road.de>,
linux-input@vger.kernel.org
Subject: Re: [PATCH] input: add support for generic GPIO-based matrix keypad
Date: Tue, 21 Jul 2009 16:26:47 +0800 [thread overview]
Message-ID: <4A657BC7.8090904@gmail.com> (raw)
In-Reply-To: <20090721080036.GA10168@dtor-d630.eng.vmware.com>
Dmitry Torokhov wrote:
> Hi Eric,
>
> On Mon, Jul 20, 2009 at 06:37:04PM +0800, Eric Miao wrote:
>>>>> Did you tried assigning max_keypmap_size in platform data to
>>>>> MATRIX_MAX_COLS * MATRIX_MAX_ROWS ?
>>>>>
>>>> Yes, this fixes crashes. But this is just workaround for bug in driver.
>>>>
>>> As you have access to h/w, care to submit a patch which fixes this?
>>>
>> Dmitry & Trilok,
>>
>> How about this? Due to the fact that we are not able to sort out the
>> proper solution for a dynamic maximum of columns/rows, let's simplify
>> the fix to the patch below:
>>
>>
>> From 61ea1bd16a3636f526fb12619e84a75fa16b7f38 Mon Sep 17 00:00:00 2001
>> From: Eric Miao <eric.y.miao@gmail.com>
>> Date: Mon, 20 Jul 2009 11:31:08 +0800
>> Subject: [PATCH] input: matrix keymap size fixed to maximum
>>
>> Introduced KEY_IDX(), merged keymap_data into 'matrix_keypad_platform_data'.
>>
>
> I would like to keep definitions in matrix_keymap.h useable to other
> drivers so we either make KEY_IDX() work with different number of
> columns or drop it.
What about:
#define KEY_IDX(row, col) (((row) * keypad->num_columns) + (col))
if we want to make it dynamic.
> I would also like to keep keymap data separate so
> drivers that don't use matrix encoding could still use it.
>
Do you mean there are possibilities that some drivers are not going to
define any matrix keycodes, and depend on EV_MSC to know the position
happened? That way, we may want to omit the ->keycodes[] accesses.
> Overall, I don't quite understand what the problem with the current
> drive is since it works fine as long as we set up max_keymap_size
> properly.
I think the root of this problem lies in the code below:
code = (row << 4) + col;
input_event(input_dev, EV_MSC, MSC_SCAN, code);
input_report_key(input_dev,
keypad->keycodes[code],
new_state[col] & (1 << row));
that 'code = (row << 4) + col;' is hardcoded to shift left by '4', and
is then used to index into keypad->keycodes[] array, the size of which
in turn is specified by 'max_keymap_size'. This is a bit inconsistent.
If written as (row << 4) + col, it means the max_keymap_size should be
setup as 'max_rows * 16', instead of expected 'max_rows * max_cols'.
And there seems to be a typo in the allocation:
keycodes = kzalloc(keymap_data->max_keymap_size *
sizeof(keypad->keycodes),
GFP_KERNEL);
that, 'sizeof(keypad->keycodes)' should be written as
'sizeof(keypad->keycodes[0])' if I guess it correct.
> We could improve diagnostic by checking row and cols values
> and warning users when they supply suspicious data and maybe adjust the
> documentation, right?
>
next prev parent reply other threads:[~2009-07-21 8:27 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-07 8:00 [PATCH] input: add support for generic GPIO-based matrix keypad Eric Miao
2009-05-07 8:41 ` Trilok Soni
2009-05-07 8:48 ` Eric Miao
2009-05-07 8:51 ` Trilok Soni
2009-05-08 1:29 ` Eric Miao
2009-05-08 4:54 ` Trilok Soni
2009-05-08 5:52 ` Arve Hjønnevåg
2009-05-25 3:36 ` Trilok Soni
2009-05-25 7:05 ` Eric Miao
2009-05-27 13:26 ` Uli Luckas
2009-05-31 14:12 ` Eric Miao
2009-05-31 14:20 ` Russell King - ARM Linux
2009-05-31 14:29 ` Eric Miao
2009-05-31 17:38 ` Dmitry Torokhov
2009-06-01 3:43 ` Eric Miao
2009-05-31 17:39 ` Robert Jarzmik
2009-06-01 4:02 ` Eric Miao
2009-06-02 14:55 ` Uli Luckas
2009-06-02 15:14 ` Uli Luckas
2009-06-03 6:24 ` Eric Miao
2009-06-10 4:10 ` Trilok Soni
2009-07-04 5:54 ` Marek Vasut
2009-07-06 6:02 ` Eric Miao
2009-07-06 10:58 ` Marek Vasut
[not found] ` <f17812d70906070704s10f8eac6ybc353041e2db5a03@mail.gmail.com>
2009-06-12 4:03 ` Dmitry Torokhov
2009-06-12 13:01 ` Trilok Soni
2009-06-12 13:26 ` Eric Miao
2009-06-19 6:54 ` Trilok Soni
2009-06-29 16:26 ` Dmitry Torokhov
2009-06-30 6:43 ` Trilok Soni
2009-07-01 12:14 ` Kim Kyuwon
2009-07-09 9:46 ` Eric Miao
2009-07-09 10:01 ` Trilok Soni
2009-07-17 7:51 ` Paulius Zaleckas
2009-07-17 8:32 ` Trilok Soni
2009-07-17 9:20 ` Paulius Zaleckas
2009-07-20 7:12 ` Trilok Soni
2009-07-20 10:37 ` Eric Miao
2009-07-20 10:43 ` Trilok Soni
2009-07-20 11:43 ` Eric Miao
2009-07-21 8:00 ` Dmitry Torokhov
2009-07-21 8:26 ` Eric Miao [this message]
2009-07-21 15:58 ` Dmitry Torokhov
2009-07-27 8:54 ` Eric Miao
2009-06-03 6:06 ` Eric Miao
2009-06-03 18:06 ` Trilok Soni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A657BC7.8090904@gmail.com \
--to=eric.y.miao@gmail.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=paulius.zaleckas@teltonika.lt \
--cc=soni.trilok@gmail.com \
--cc=u.luckas@road.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).