re: [PATCH] OMAP: Add keypad driver

9 messages, 5 authors, 2016-01-08 · open the first message on its own page

re: [PATCH] OMAP: Add keypad driver

From: Dan Carpenter <hidden>
Date: 2016-01-07 09:38:03

Hello file (standard input) matches,

The patch ad4e09b16ad3: "[PATCH] OMAP: Add keypad driver", leads to the
following static checker warning:

	drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
	warn: 'keycodes[]' is never negative.

drivers/input/keyboard/omap-keypad.c
   129  static void omap_kp_tasklet(unsigned long data)
   130  {
   131          struct omap_kp *omap_kp_data = (struct omap_kp *) data;
   132          unsigned short *keycodes = omap_kp_data->input->keycode;
                ^^^^^^^^^^^^^^^^^^^^^^^^
   133          unsigned int row_shift = get_count_order(omap_kp_data->cols);
   134          unsigned char new_state[8], changed, key_down = 0;
   135          int col, row;
   136          int spurious = 0;
   137  
   138          /* check for any changes */
   139          omap_kp_scan_keypad(omap_kp_data, new_state);
   140  
   141          /* check for changes and print those */
   142          for (col = 0; col < omap_kp_data->cols; col++) {
   143                  changed = new_state[col] ^ keypad_state[col];
   144                  key_down |= new_state[col];
   145                  if (changed == 0)
   146                          continue;
   147  
   148                  for (row = 0; row < omap_kp_data->rows; row++) {
   149                          int key;
                                ^^^^^^^
   150                          if (!(changed & (1 << row)))
   151                                  continue;
   152  #ifdef NEW_BOARD_LEARNING_MODE
   153                          printk(KERN_INFO "omap-keypad: key %d-%d %s\n", col,
   154                                 row, (new_state[col] & (1 << row)) ?
   155                                 "pressed" : "released");
   156  #else
   157                          key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.

   159                                  printk(KERN_WARNING
   160                                        "omap-keypad: Spurious key event %d-%d\n",
   161                                         col, row);
   162                                  /* We scan again after a couple of seconds */
   163                                  spurious = 1;
   164                                  continue;
   165                          }
   166  
   167                          if (!(kp_cur_group == (key & GROUP_MASK) ||
   168                                kp_cur_group == -1))
   169                                  continue;
   170  

regards,
dan carpenter

Re: [PATCH] OMAP: Add keypad driver

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2016-01-07 18:54:12

On Thu, Jan 7, 2016 at 1:37 AM, Dan Carpenter [off-list ref] wrote:
Hello file (standard input) matches,

The patch ad4e09b16ad3: "[PATCH] OMAP: Add keypad driver", leads to the
following static checker warning:

        drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
        warn: 'keycodes[]' is never negative.
It looks like you are not resolving commits correctly, the original
submission did not have this issue.
drivers/input/keyboard/omap-keypad.c
   129  static void omap_kp_tasklet(unsigned long data)
   130  {
   131          struct omap_kp *omap_kp_data = (struct omap_kp *) data;
   132          unsigned short *keycodes = omap_kp_data->input->keycode;
                ^^^^^^^^^^^^^^^^^^^^^^^^
   133          unsigned int row_shift = get_count_order(omap_kp_data->cols);
   134          unsigned char new_state[8], changed, key_down = 0;
   135          int col, row;
   136          int spurious = 0;
   137
   138          /* check for any changes */
   139          omap_kp_scan_keypad(omap_kp_data, new_state);
   140
   141          /* check for changes and print those */
   142          for (col = 0; col < omap_kp_data->cols; col++) {
   143                  changed = new_state[col] ^ keypad_state[col];
   144                  key_down |= new_state[col];
   145                  if (changed == 0)
   146                          continue;
   147
   148                  for (row = 0; row < omap_kp_data->rows; row++) {
   149                          int key;
                                ^^^^^^^
   150                          if (!(changed & (1 << row)))
   151                                  continue;
   152  #ifdef NEW_BOARD_LEARNING_MODE
   153                          printk(KERN_INFO "omap-keypad: key %d-%d %s\n", col,
   154                                 row, (new_state[col] & (1 << row)) ?
   155                                 "pressed" : "released");
   156  #else
   157                          key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.
It looks like this check was broken by
da1f026b532ce944d74461497dc6d8c16456466e (Keyboard: omap-keypad: use
matrix_keypad.h). Previously the driver would expect a list of known
keys and would scan it and return -1 if key was not found. Now we have
2 options:

1. Simply remove the check
2. Change the condition to "if (key == KEY_RESERVED)"

I do not really have preference. Tony?

Thanks.

-- 
Dmitry

Re: [PATCH] OMAP: Add keypad driver

From: Tony Lindgren <tony@atomide.com>
Date: 2016-01-07 20:13:21

Hi,

* Dmitry Torokhov [off-list ref] [160107 10:54]:
On Thu, Jan 7, 2016 at 1:37 AM, Dan Carpenter [off-list ref] wrote:
quoted
Hello file (standard input) matches,

The patch ad4e09b16ad3: "[PATCH] OMAP: Add keypad driver", leads to the
following static checker warning:

        drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
        warn: 'keycodes[]' is never negative.
It looks like you are not resolving commits correctly, the original
submission did not have this issue.
quoted
drivers/input/keyboard/omap-keypad.c
...
quoted
   152  #ifdef NEW_BOARD_LEARNING_MODE
   153                          printk(KERN_INFO "omap-keypad: key %d-%d %s\n", col,
   154                                 row, (new_state[col] & (1 << row)) ?
   155                                 "pressed" : "released");
   156  #else
   157                          key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.
It looks like this check was broken by
da1f026b532ce944d74461497dc6d8c16456466e (Keyboard: omap-keypad: use
matrix_keypad.h). Previously the driver would expect a list of known
keys and would scan it and return -1 if key was not found. Now we have
2 options:

1. Simply remove the check
2. Change the condition to "if (key == KEY_RESERVED)"

I do not really have preference. Tony?
Sounds like the check is not needed if it has not been used for
past five years, so my preference is option #1 then.

Regards,

Tony

Re: [PATCH] OMAP: Add keypad driver

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2016-01-07 23:22:33

On Thu, Jan 07, 2016 at 12:13:17PM -0800, Tony Lindgren wrote:
Hi,

* Dmitry Torokhov [off-list ref] [160107 10:54]:
quoted
On Thu, Jan 7, 2016 at 1:37 AM, Dan Carpenter [off-list ref] wrote:
quoted
Hello file (standard input) matches,

The patch ad4e09b16ad3: "[PATCH] OMAP: Add keypad driver", leads to the
following static checker warning:

        drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
        warn: 'keycodes[]' is never negative.
It looks like you are not resolving commits correctly, the original
submission did not have this issue.
quoted
drivers/input/keyboard/omap-keypad.c
...
quoted
quoted
   152  #ifdef NEW_BOARD_LEARNING_MODE
   153                          printk(KERN_INFO "omap-keypad: key %d-%d %s\n", col,
   154                                 row, (new_state[col] & (1 << row)) ?
   155                                 "pressed" : "released");
   156  #else
   157                          key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.
It looks like this check was broken by
da1f026b532ce944d74461497dc6d8c16456466e (Keyboard: omap-keypad: use
matrix_keypad.h). Previously the driver would expect a list of known
keys and would scan it and return -1 if key was not found. Now we have
2 options:

1. Simply remove the check
2. Change the condition to "if (key == KEY_RESERVED)"

I do not really have preference. Tony?
Sounds like the check is not needed if it has not been used for
past five years, so my preference is option #1 then.
OK, how about the below then?

-- 
Dmitry


Input: omap-keypad - remove dead check

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard: omap-keypad:
use matrix_keypad.h") switched the driver to use matrix keypad
infrastructure, which made array of keycodes to be unsigned short, and
caused the test for negativity never trigger. This leads to the following
static checker warning:

	drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
	warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already let's
simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/keyboard/omap-keypad.c |    8 --------
 1 file changed, 8 deletions(-)
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index 75ad666..e0d72c8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -155,14 +155,6 @@ static void omap_kp_tasklet(unsigned long data)
 			       "pressed" : "released");
 #else
 			key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
-			if (key < 0) {
-				printk(KERN_WARNING
-				      "omap-keypad: Spurious key event %d-%d\n",
-				       col, row);
-				/* We scan again after a couple of seconds */
-				spurious = 1;
-				continue;
-			}
 
 			if (!(kp_cur_group == (key & GROUP_MASK) ||
 			      kp_cur_group == -1))

RE: [PATCH] OMAP: Add keypad driver

From: Koskinen, Aaro (Nokia - FI/Espoo) <hidden>
Date: 2016-01-08 00:08:37

Hi,
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard: omap-keypad:
use matrix_keypad.h") switched the driver to use matrix keypad
infrastructure, which made array of keycodes to be unsigned short, and
caused the test for negativity never trigger. This leads to the following
static checker warning:

       drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
       warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already let's
simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Aaro Koskinen <redacted>
quoted hunk
---
 drivers/input/keyboard/omap-keypad.c |    8 --------
 1 file changed, 8 deletions(-)
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index 75ad666..e0d72c8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -155,14 +155,6 @@ static void omap_kp_tasklet(unsigned long data)
                               "pressed" : "released");
 #else
                        key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
-                       if (key < 0) {
-                               printk(KERN_WARNING
-                                     "omap-keypad: Spurious key event %d-%d\n",
-                                      col, row);
-                               /* We scan again after a couple of seconds */
-                               spurious = 1;
-                               continue;
-                       }

                        if (!(kp_cur_group == (key & GROUP_MASK) ||
                              kp_cur_group == -1))
Thanks,

A.

Re: [PATCH] OMAP: Add keypad driver

From: Tony Lindgren <tony@atomide.com>
Date: 2016-01-08 00:10:58

* Dmitry Torokhov [off-list ref] [160107 15:23]:
On Thu, Jan 07, 2016 at 12:13:17PM -0800, Tony Lindgren wrote:
quoted
Sounds like the check is not needed if it has not been used for
past five years, so my preference is option #1 then.
OK, how about the below then?
Looks good to me thanks: Acked-by: Tony Lindgren [off-list ref]

I've also corrected Aaro's email address, he may have some keyboard
input too.

Regards,

Tony

quoted hunk
Input: omap-keypad - remove dead check

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard: omap-keypad:
use matrix_keypad.h") switched the driver to use matrix keypad
infrastructure, which made array of keycodes to be unsigned short, and
caused the test for negativity never trigger. This leads to the following
static checker warning:

	drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
	warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already let's
simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/keyboard/omap-keypad.c |    8 --------
 1 file changed, 8 deletions(-)
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index 75ad666..e0d72c8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -155,14 +155,6 @@ static void omap_kp_tasklet(unsigned long data)
 			       "pressed" : "released");
 #else
 			key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
-			if (key < 0) {
-				printk(KERN_WARNING
-				      "omap-keypad: Spurious key event %d-%d\n",
-				       col, row);
-				/* We scan again after a couple of seconds */
-				spurious = 1;
-				continue;
-			}
 
 			if (!(kp_cur_group == (key & GROUP_MASK) ||
 			      kp_cur_group == -1))

Re: [PATCH] OMAP: Add keypad driver

From: Tony Lindgren <tony@atomide.com>
Date: 2016-01-08 00:13:49

* Koskinen, Aaro (Nokia - FI/Espoo) [off-list ref] [160107 16:08]:
Hi,
quoted
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard: omap-keypad:
use matrix_keypad.h") switched the driver to use matrix keypad
infrastructure, which made array of keycodes to be unsigned short, and
caused the test for negativity never trigger. This leads to the following
static checker warning:

       drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
       warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already let's
simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Aaro Koskinen <redacted>
Heh sorry I mis-corrected your email in my reply, old habit you know :)

Tony

Re: [PATCH] OMAP: Add keypad driver

From: Janusz Krzysztofik <hidden>
Date: 2016-01-08 02:09:58

On Thu, 7 Jan 2016 15:22:28 Dmitry Torokhov wrote:
On Thu, Jan 07, 2016 at 12:13:17PM -0800, Tony Lindgren wrote:
quoted
* Dmitry Torokhov [off-list ref] [160107 10:54]:
quoted
On Thu, Jan 7, 2016 at 1:37 AM, Dan Carpenter 
[off-list ref] wrote:
quoted
quoted
...
quoted
   157                          key = 
keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
quoted
quoted
quoted
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.
It looks like this check was broken by
da1f026b532ce944d74461497dc6d8c16456466e (Keyboard: omap-keypad: 
use
quoted
quoted
matrix_keypad.h). Previously the driver would expect a list of 
known
quoted
quoted
keys and would scan it and return -1 if key was not found. Now we 
have
quoted hunk
quoted
quoted
2 options:

1. Simply remove the check
2. Change the condition to "if (key == KEY_RESERVED)"

I do not really have preference. Tony?
Sounds like the check is not needed if it has not been used for
past five years, so my preference is option #1 then.
OK, how about the below then?

--
Dmitry


Input: omap-keypad - remove dead check

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard:
omap-keypad: use matrix_keypad.h") switched the driver to use matrix
keypad infrastructure, which made array of keycodes to be unsigned
short, and caused the test for negativity never trigger. This leads
to the following> 
static checker warning:
        drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
        warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already
let's simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

 drivers/input/keyboard/omap-keypad.c |    8 --------
 1 file changed, 8 deletions(-)
diff --git a/drivers/input/keyboard/omap-keypad.c
b/drivers/input/keyboard/omap-keypad.c index 75ad666..e0d72c8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -155,14 +155,6 @@ static void omap_kp_tasklet(unsigned long data) 
                               "pressed" : "released");  
 #else  
                        key = keycodes[MATRIX_SCAN_CODE(row, col, 
row_shift)]; 
-                       if (key < 0) {
-                               printk(KERN_WARNING
-                                     "omap-keypad: Spurious key event 
%d-%d\n",
-                                      col, row);
-                               /* We scan again after a couple of 
seconds */
-                               spurious = 1;
Hi,

That code was written before I played with it so I'm not really sure 
about its purpose, but it looks to me like something intended as a 
debouncer.

Since that was the only place where the spurious variable could be 
modified, I think we should also remove the now unreachable code that 
manipulates delay based on spurious value several lines below, as well 
as declaration and initialization of spurious at the beginning of 
omap_kp_tasklet().

Thanks,
Janusz
-                               continue;
-                       }

                        if (!(kp_cur_group == (key & GROUP_MASK) ||                         
                              kp_cur_group == -1))

Re: [PATCH] OMAP: Add keypad driver

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2016-01-08 06:38:53

On Fri, Jan 08, 2016 at 02:41:00AM +0100, Janusz Krzysztofik wrote:
On Thu, 7 Jan 2016 15:22:28 Dmitry Torokhov wrote:
quoted
On Thu, Jan 07, 2016 at 12:13:17PM -0800, Tony Lindgren wrote:
quoted
* Dmitry Torokhov [off-list ref] [160107 10:54]:
quoted
On Thu, Jan 7, 2016 at 1:37 AM, Dan Carpenter 
[off-list ref] wrote:
quoted
quoted
quoted
...
quoted
   157                          key = 
keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
quoted
quoted
quoted
quoted
   158                          if (key < 0) {
                                    ^^^^^^^
Never true.  Not sure what was intended.
It looks like this check was broken by
da1f026b532ce944d74461497dc6d8c16456466e (Keyboard: omap-keypad: 
use
quoted
quoted
quoted
matrix_keypad.h). Previously the driver would expect a list of 
known
quoted
quoted
quoted
keys and would scan it and return -1 if key was not found. Now we 
have
quoted
quoted
quoted
2 options:

1. Simply remove the check
2. Change the condition to "if (key == KEY_RESERVED)"

I do not really have preference. Tony?
Sounds like the check is not needed if it has not been used for
past five years, so my preference is option #1 then.
OK, how about the below then?

--
Dmitry


Input: omap-keypad - remove dead check

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Commit da1f026b532ce944d74461497dc6d8c16456466e ("Keyboard:
omap-keypad: use matrix_keypad.h") switched the driver to use matrix
keypad infrastructure, which made array of keycodes to be unsigned
short, and caused the test for negativity never trigger. This leads
to the following> 
static checker warning:
        drivers/input/keyboard/omap-keypad.c:158 omap_kp_tasklet()
        warn: 'keycodes[]' is never negative.

Given that we did not care about this check for a few years already
let's simply remove it.

Reported-by: Dan Carpenter <redacted>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

 drivers/input/keyboard/omap-keypad.c |    8 --------
 1 file changed, 8 deletions(-)
diff --git a/drivers/input/keyboard/omap-keypad.c
b/drivers/input/keyboard/omap-keypad.c index 75ad666..e0d72c8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -155,14 +155,6 @@ static void omap_kp_tasklet(unsigned long data) 
                               "pressed" : "released");  
 #else  
                        key = keycodes[MATRIX_SCAN_CODE(row, col, 
row_shift)]; 
quoted
-                       if (key < 0) {
-                               printk(KERN_WARNING
-                                     "omap-keypad: Spurious key event 
%d-%d\n",
quoted
-                                      col, row);
-                               /* We scan again after a couple of 
seconds */
quoted
-                               spurious = 1;
Hi,

That code was written before I played with it so I'm not really sure 
about its purpose, but it looks to me like something intended as a 
debouncer.

Since that was the only place where the spurious variable could be 
modified, I think we should also remove the now unreachable code that 
manipulates delay based on spurious value several lines below, as well 
as declaration and initialization of spurious at the beginning of 
omap_kp_tasklet().
Yeah, now that I look at it this driver needs some love. The probing is
racy, remove is incomplete, etc.

Do any of you guys have hardware that uses it?

Thanks.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help