linux/drivers/soc
Marek Vasut 997a3c04d7 soc: imx8m: Probe the SoC driver as platform driver
[ Upstream commit 9cc832d377 ]

With driver_async_probe=* on kernel command line, the following trace is
produced because on i.MX8M Plus hardware because the soc-imx8m.c driver
calls of_clk_get_by_name() which returns -EPROBE_DEFER because the clock
driver is not yet probed. This was not detected during regular testing
without driver_async_probe.

Convert the SoC code to platform driver and instantiate a platform device
in its current device_initcall() to probe the platform driver. Rework
.soc_revision callback to always return valid error code and return SoC
revision via parameter. This way, if anything in the .soc_revision callback
return -EPROBE_DEFER, it gets propagated to .probe and the .probe will get
retried later.

"
------------[ cut here ]------------
WARNING: CPU: 1 PID: 1 at drivers/soc/imx/soc-imx8m.c:115 imx8mm_soc_revision+0xdc/0x180
CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.11.0-next-20240924-00002-g2062bb554dea #603
Hardware name: DH electronics i.MX8M Plus DHCOM Premium Developer Kit (3) (DT)
pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : imx8mm_soc_revision+0xdc/0x180
lr : imx8mm_soc_revision+0xd0/0x180
sp : ffff8000821fbcc0
x29: ffff8000821fbce0 x28: 0000000000000000 x27: ffff800081810120
x26: ffff8000818a9970 x25: 0000000000000006 x24: 0000000000824311
x23: ffff8000817f42c8 x22: ffff0000df8be210 x21: fffffffffffffdfb
x20: ffff800082780000 x19: 0000000000000001 x18: ffffffffffffffff
x17: ffff800081fff418 x16: ffff8000823e1000 x15: ffff0000c03b65e8
x14: ffff0000c00051b0 x13: ffff800082790000 x12: 0000000000000801
x11: ffff80008278ffff x10: ffff80008209d3a6 x9 : ffff80008062e95c
x8 : ffff8000821fb9a0 x7 : 0000000000000000 x6 : 00000000000080e3
x5 : ffff0000df8c03d8 x4 : 0000000000000000 x3 : 0000000000000000
x2 : 0000000000000000 x1 : fffffffffffffdfb x0 : fffffffffffffdfb
Call trace:
 imx8mm_soc_revision+0xdc/0x180
 imx8_soc_init+0xb0/0x1e0
 do_one_initcall+0x94/0x1a8
 kernel_init_freeable+0x240/0x2a8
 kernel_init+0x28/0x140
 ret_from_fork+0x10/0x20
---[ end trace 0000000000000000 ]---
SoC: i.MX8MP revision 1.1
"

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-12-14 20:03:40 +01:00
..
amlogic soc: amlogic: meson-gx-socinfo: add new SoCs id 2024-08-20 17:27:27 +02:00
apple soc: apple: mailbox: error pointers are negative integers 2024-01-30 11:34:49 -08:00
aspeed soc/aspeed: Convert to platform remove callback returning void 2023-10-13 15:04:12 +10:30
atmel ARM: at91: add support in SoC driver for new sam9x7 2024-08-07 19:24:46 +03:00
bcm SoC driver updates for 6.7 2023-11-01 14:46:51 -10:00
canaan soc: canaan: Deprecate SOC_CANAAN and use SOC_CANAAN_K210 for K210 2024-04-05 16:42:50 +01:00
cirrus soc: ep93xx: drop reference to removed EP93XX_SOC_COMMON config 2024-09-26 12:58:18 +00:00
dove soc: dove: add missing of_node_put 2023-09-20 11:28:02 +02:00
fsl soc: fsl: rcpm: fix missing of_node_put() in copy_ippdexpcr1_setting() 2024-12-05 14:02:57 +01:00
fujitsu soc/fujitsu: a64fx-diag: Convert to platform remove callback returning void 2023-10-14 23:27:01 +02:00
gemini soc: Add SoC driver for Gemini 2018-01-04 17:01:53 +01:00
hisilicon soc: hisilicon: kunpeng_hccs: replace MAILBOX dependency with PCC 2024-04-25 02:09:46 +00:00
imx soc: imx8m: Probe the SoC driver as platform driver 2024-12-14 20:03:40 +01:00
ixp4xx soc: add missing MODULE_DESCRIPTION() macros 2024-06-27 16:42:50 +02:00
lantiq soc: lantiq: convert to devm_platform_ioremap_resource 2020-01-10 11:44:52 -08:00
litex drivers/soc/litex: drop obsolete dependency on COMPILE_TEST 2024-06-27 16:33:39 +02:00
loongson Convert drivers/soc to struct platform_driver::remove_new() 2023-10-16 22:51:31 +02:00
mediatek soc: mediatek: mtk-mutex: Reduce type size for mtk_mutex_data members 2024-07-30 10:58:46 +02:00
microchip soc: microchip: Fix POLARFIRE_SOC_SYS_CTRL input prompt 2024-01-22 16:39:40 +00:00
nuvoton soc: nuvoton: Add SoC info driver for WPCM450 2023-02-01 17:11:36 +01:00
pxa spi: pxa2xx: Use proper SSP header in soc/pxa/ssp.c 2024-03-25 00:49:17 +00:00
qcom soc: qcom: pd-mapper: Add QCM6490 PD maps 2024-12-14 20:03:39 +01:00
renesas soc: renesas: Enable TMU support on R-Car Gen2 2024-03-26 09:25:06 +01:00
rockchip soc: rockchip: grf: Add rk3576 default GRF values 2024-08-23 12:33:58 +02:00
samsung - New Drivers 2024-07-17 17:42:20 -07:00
sunxi soc: sunxi: sram: Constify struct regmap_config 2024-07-11 00:47:13 +08:00
tegra soc/tegra: pmc: Simplify with scoped for each OF child loop 2024-08-29 17:43:43 +02:00
ti soc: ti: smartreflex: Use IRQF_NO_AUTOEN flag in request_irq() 2024-12-05 14:01:25 +01:00
ux500 ARM: ux500: do not directly dereference __iomem 2022-11-08 21:13:56 +01:00
versatile soc: versatile: enable compile testing 2024-08-30 15:40:11 +02:00
xilinx drivers: soc: xilinx: add the missing kfree in xlnx_add_cb_for_suspend() 2024-12-05 14:01:24 +01:00
Kconfig soc: Add SoC driver for Cirrus ep93xx 2024-09-12 14:33:10 +00:00
Makefile soc: convert ep93xx to devicetree 2024-09-26 12:00:25 -07:00