[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 09:39:53 EST 2010


On mer, 2010-01-27 at 13:18 +0100, Lothar Waßmann wrote:
> Hi,
> 
> Alberto Panizzo writes:
> > > > +	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 ?
> > 
> Yes, of course. If a function returns an error code that should be
> promoted to the caller instead of inventing a new error code.
> 
> 
> Lothar Waßmann

But, errno.h say:
#define ENXIO           6                // Device not configured
#define ENODEV          19               // Operation not supported by device

And looking at the code of platform_get* these functions return only what
it is written in the platform_device data.
So the only way these functions fails is a not configured platform_device 
with IRQ and I/O memory.

Maybe the error outputs are wrong. What about these:
	if (pdata == NULL) {
		dev_err(&pdev->dev, "no platform data defined\n");
		return -ENXIO;
	}

	irq = platform_get_irq(pdev, 0);
	if (irq < 0) {
		dev_err(&pdev->dev, "no irq defined in platform data\n");
		return -ENXIO;
	}

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (res == NULL) {
		dev_err(&pdev->dev, "no I/O memory defined in platform data\n");
		return -ENXIO;
	}

	res = request_mem_region(res->start, resource_size(res), pdev->name);
	if (res == NULL) {
		dev_err(&pdev->dev, "failed to request I/O memory\n");
		return -EBUSY;
	}





More information about the linux-arm-kernel mailing list