[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