Re: [PATCH v1 1/1] iio: adc: mxs-lradc-adc: Get rid of OF specifics

From: Andy Shevchenko
Date: Tue Jun 21 2022 - 07:00:50 EST


On Mon, Jun 20, 2022 at 06:13:53PM -0300, Fabio Estevam wrote:
> On Mon, May 30, 2022 at 2:33 PM Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:

...

> I tried to apply the same change inside
> drivers/input/touchscreen/mxs-lradc-ts.c:
>
> --- a/drivers/input/touchscreen/mxs-lradc-ts.c
> +++ b/drivers/input/touchscreen/mxs-lradc-ts.c
> @@ -675,11 +675,9 @@ static int mxs_lradc_ts_probe(struct platform_device *pdev)
> if (irq < 0)
> return irq;
>
> - virq = irq_of_parse_and_map(node, irq);
> -
> mxs_lradc_ts_stop(ts);
>
> - ret = devm_request_irq(dev, virq,
> + ret = devm_request_irq(dev, irq,
> mxs_lradc_ts_handle_irq,
> 0, mxs_lradc_ts_irq_names[i], ts);
> if (ret)
>
> but I still get the following warning:

So just to be sure. You got it before the above change applied, correct?

I'm wondering how this all LRADC was supposed to work. The IRQs are assigned
based on abstract numbering without any IRQ domain behind it. This is not how
it's designed in Linux. Adding Ksenija and Marek to shed a light.

> [ 6.135583] ------------[ cut here ]------------
> [ 6.140366] WARNING: CPU: 0 PID: 1 at drivers/base/platform.c:449
> __platform_get_irq_byname+0x74/0x90
> [ 6.151053] 0 is an invalid IRQ number
> [ 6.155201] Modules linked in:
> [ 6.158444] CPU: 0 PID: 1 Comm: swapper Not tainted
> 5.18.5-00001-g3e38be7e4832 #108
> [ 6.166537] Hardware name: Freescale MXS (Device Tree)
> [ 6.172040] unwind_backtrace from show_stack+0x10/0x14
> [ 6.177503] show_stack from __warn+0xc4/0x1cc
> [ 6.182356] __warn from warn_slowpath_fmt+0x90/0xc8
> [ 6.187549] warn_slowpath_fmt from __platform_get_irq_byname+0x74/0x90
> [ 6.194698] __platform_get_irq_byname from platform_get_irq_byname+0x10/0x30
> [ 6.202286] platform_get_irq_byname from mxs_lradc_ts_probe+0x19c/0x380
> [ 6.209216] mxs_lradc_ts_probe from platform_probe+0x58/0xb8
> [ 6.215383] platform_probe from really_probe+0xfc/0x288
> [ 6.220907] really_probe from __driver_probe_device+0x80/0xe4
> [ 6.227145] __driver_probe_device from driver_probe_device+0x30/0xd8
> [ 6.234010] driver_probe_device from __driver_attach+0x70/0xf4
> [ 6.240137] __driver_attach from bus_for_each_dev+0x74/0xc0
> [ 6.246195] bus_for_each_dev from bus_add_driver+0x154/0x1e8
> [ 6.252359] bus_add_driver from driver_register+0x74/0x108
> [ 6.258131] driver_register from do_one_initcall+0x8c/0x2fc
> [ 6.264198] do_one_initcall from kernel_init_freeable+0x184/0x210
> [ 6.270588] kernel_init_freeable from kernel_init+0x10/0x108
> [ 6.276756] kernel_init from ret_from_fork+0x14/0x3c
> [ 6.282224] Exception stack(0xc8819fb0 to 0xc8819ff8)
> [ 6.287444] 9fa0: 00000000
> 00000000 00000000 00000000
> [ 6.295988] 9fc0: 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
> [ 6.304631] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> [ 6.311392] irq event stamp: 128211
> [ 6.315220] hardirqs last enabled at (128221): [<c0069c44>]
> __up_console_sem+0x54/0x64
> [ 6.323632] hardirqs last disabled at (128230): [<c0069c30>]
> __up_console_sem+0x40/0x64
> [ 6.331821] softirqs last enabled at (128200): [<c00098e4>]
> __do_softirq+0x31c/0x4bc
> [ 6.340041] softirqs last disabled at (128191): [<c0020f04>]
> irq_exit+0x150/0x18c
> [ 6.347913] ---[ end trace 0000000000000000 ]---
> [ 6.364587] input: mxs-lradc-ts as
> /devices/soc0/80000000.apb/80040000.apbx/80050000.lradc/mxs-lradc-ts/input/input0
>
> Any suggestions?

--
With Best Regards,
Andy Shevchenko