Messages in this thread Patch in this message | | | From | Dmitry Artamonow <> | Subject | [PATCH] mfd: asic3: fix asic3_gpio_to_irq | Date | Thu, 12 Apr 2012 15:33:34 +0400 |
| |
Assumption that irq numbers of asic3 gpios start at IRQ_BOARD_START is certainly wrong - driver may as well use any other base for its irqs (consider for example the imaginary case of two ASIC3 chips onboard)
Furthermore, some platforms even don't have IRQ_BOARD_START defined, so driver will fail to build on them: ------------------------------------------------------- drivers/mfd/asic3.c: In function 'asic3_gpio_to_irq': drivers/mfd/asic3.c:530: error: 'IRQ_BOARD_START' undeclared (first use in this function) drivers/mfd/asic3.c:530: error: (Each undeclared identifier is reported only once drivers/mfd/asic3.c:530: error: for each function it appears in.) -------------------------------------------------------
Fix it by using irq_base from driver data.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru> --- drivers/mfd/asic3.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
For reference: the build failure above can be reproduced for example when building kernel for some StrongARM machine, say: make h3600_defconfig make menuconfig #enable CONFIG_MFD_ASIC3 make
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c index 1895cf9..1582c3d 100644 --- a/drivers/mfd/asic3.c +++ b/drivers/mfd/asic3.c @@ -527,7 +527,9 @@ static void asic3_gpio_set(struct gpio_chip *chip, static int asic3_gpio_to_irq(struct gpio_chip *chip, unsigned offset) { - return (offset < ASIC3_NUM_GPIOS) ? IRQ_BOARD_START + offset : -ENXIO; + struct asic3 *asic = container_of(chip, struct asic3, gpio); + + return (offset < ASIC3_NUM_GPIOS) ? asic->irq_base + offset : -ENXIO; } static __init int asic3_gpio_probe(struct platform_device *pdev, -- 1.7.5.1.300.gc565c
| |