[PATCH v3] input: MXC: add mxc-keypad driver to support the Keypad Port present in the mxc application processors family.
Alberto Panizzo
maramaopercheseimorto at gmail.com
Wed Jan 27 07:14:12 EST 2010
Hi Lothar,
On mer, 2010-01-27 at 11:33 +0100, Lothar Waßmann wrote:
> Hi,
>
> Alberto Panizzo writes:
> [...]
> > +#include <linux/input/matrix_keypad.h>
> > +
> > +#define MAX_MATRIX_KEY_ROWS (8)
> > +#define MAX_MATRIX_KEY_COLS (8)
> > +#define MATRIX_ROW_SHIFT (3)
> > +
> pointless '()'
Ok.
> > [...]
> > +
> > + /* Configure columns as output, rows as input (KDDR[15:0]) */
> > + reg_val = readw(keypad->mmio_base + KDDR);
> > + reg_val |= 0xff00;
> > + reg_val &= 0xff00;
> >
> This is effectively the same as: 'reg_val = 0xff00;' which makes the
> readw() above pointless. Was this really intended?
>
> > + writew(reg_val, keypad->mmio_base + KDDR);
Yes, it should be instead:
writew(0xff00, keypad->mmio_base + KDDR);
> > [...]
> > + /* Sanity control, not all the rows must be to 0s now. */
> > + if ((readw(keypad->mmio_base + KPDR) & keypad->rows_en_mask) == 0) {
> > + dev_err(&dev->dev, "Too much keys pressed for now, "
> > + "control pins initialisation\n");
> >
> It helps grepping for a message, if it is not split into multiple
> lines.
Ok.
>
> > [...]
> > +
> > + irq = platform_get_irq(pdev, 0);
> > + if (irq < 0) {
> > + dev_err(&pdev->dev, "failed to get keypad irq\n");
> > + return -ENXIO;
> > + }
> >
> This should be -ENODEV.
>
Lot of reference keyboard driver use -ENXIO..
May should be better: return irq ?
> > +
> > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > + if (res == NULL) {
> > + dev_err(&pdev->dev, "failed to get I/O memory\n");
> > + return -ENXIO;
> >
> same as above.
same as above?
> > +
> > + keypad->pdata = pdata;
> > + keypad->input_dev = input_dev;
> > + keypad->irq = irq;
> > +
> > + keypad->mmio_base = ioremap(res->start, resource_size(res));
> > + if (keypad->mmio_base == NULL) {
> > + dev_err(&pdev->dev, "failed to remap I/O memory\n");
> > + error = -ENXIO;
> >
> -ENOMEM;
Ok.
>
> > + goto failed_free_priv;
> > + }
> > +
> > + keypad->clk = clk_get(NULL, "kpp");
> >
> clk_get(&pdev->dev, "kpp");
>
Ok.
Alberto!
More information about the linux-arm-kernel
mailing list