Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: sun4i-gpadc: Correct specified GPADC interrupt numbers

The identifiers are used as IRQ resource numbers, where 0 is treated
specially.

This fixes sun4i-gpadc-iio probe failed when request irq.

The backstack:
WARNING: CPU: 3 PID: 1 at drivers/base/platform.c:451
__platform_get_irq_byname+0xb8/0xc4
0 is an invalid IRQ number
Modules linked in:
CPU: 3 PID: 1 Comm: swapper/0 Not tainted 6.7.0-rc6 #9
Hardware name: Allwinner sun8i Family
unwind_backtrace
show_stack
dump_stack_lvl
__warn
warn_slowpath_fmt
__platform_get_irq_byname
platform_get_irq_byname
sun4i_irq_init
sun4i_gpadc_probe
platform_probe
really_probe
__driver_probe_device
driver_probe_device
__driver_attach
bus_for_each_dev
bus_add_driver
driver_register
do_one_initcall
do_initcall_level
do_initcalls
kernel_init_freeable
kernel_init

Log reports:
sun4i-gpadc-iio sun6i-a31-gpadc-iio.0: error -EINVAL: IRQ FIFO_DATA_PENDING
not found
sun4i-gpadc-iio: probe of sun6i-a31-gpadc-iio.0 failed with error -22

Signed-off-by: Fuyao Kashizuku <fuyao@sjterm.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/ZYuFbUUus9apiCpq@debian.cyg
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Fuyao Kashizuku and committed by
Lee Jones
dfebe38e fc99c013

+2 -2
+2 -2
include/linux/mfd/sun4i-gpadc.h
··· 81 81 #define SUN4I_GPADC_TEMP_DATA 0x20 82 82 #define SUN4I_GPADC_DATA 0x24 83 83 84 - #define SUN4I_GPADC_IRQ_FIFO_DATA 0 85 - #define SUN4I_GPADC_IRQ_TEMP_DATA 1 84 + #define SUN4I_GPADC_IRQ_FIFO_DATA 1 85 + #define SUN4I_GPADC_IRQ_TEMP_DATA 2 86 86 87 87 /* 10s delay before suspending the IP */ 88 88 #define SUN4I_GPADC_AUTOSUSPEND_DELAY 10000