[RFC v1 PATCH 0/3] support soc_device_match to return -EPROBE_DEFER

Alice Guo (OSS)
2021-04-19T04:27:39Z

From: Alice Guo <alice.guo@nxp.com>

In patch "soc: imx8m: change to use platform driver", change soc-imx8m.c to use
module platform driver and use NVMEM APIs to ocotp register, the reason is that
directly reading ocotp egister causes kexec kernel hang because kernel will
disable unused clks after kernel boots up. This patch makes the SoC driver
ready. This patch makes the SoC driver ready later than before, and causes device
depends on soc_device_match() for initialization are affected, resulting in
kernel boot error.

CAAM driver is one of these affected drivers. It uses soc_device_match() to find
the first matching entry of caam_imx_soc_table, if none of them match, the next
instruction will be executed without any processing because CAAM driver is used
not only on i.MX and LS, but also PPC and Vybrid. We hope that
soc_device_match() could support to return -EPROBE_DEFER(or some other error
code, e.g. -ENODEV, but not NULL) in case of “no SoC device registered” to SoC
bus. We tried it and updated all the code that is using soc_device_match()
throughout the tree.

Alice Guo (3):
drivers: soc: add support for soc_device_match returning -EPROBE_DEFER
caam: add defer probe when the caam driver cannot identify SoC
driver: update all the code that use soc_device_match

drivers/base/soc.c | 5 +++++
drivers/bus/ti-sysc.c | 2 +-
drivers/clk/renesas/r8a7795-cpg-mssr.c | 4 +++-
drivers/clk/renesas/rcar-gen2-cpg.c | 2 +-
drivers/clk/renesas/rcar-gen3-cpg.c | 2 +-
drivers/crypto/caam/ctrl.c | 3 +++
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c | 7 ++++++-
drivers/dma/ti/k3-psil.c | 3 +++
drivers/dma/ti/k3-udma.c | 2 +-
drivers/gpu/drm/bridge/nwl-dsi.c | 2 +-
drivers/gpu/drm/meson/meson_drv.c | 4 +++-
drivers/gpu/drm/omapdrm/dss/dispc.c | 2 +-
drivers/gpu/drm/omapdrm/dss/dpi.c | 4 +++-
drivers/gpu/drm/omapdrm/dss/dsi.c | 3 +++
drivers/gpu/drm/omapdrm/dss/dss.c | 3 +++
drivers/gpu/drm/omapdrm/dss/hdmi4_core.c | 3 +++
drivers/gpu/drm/omapdrm/dss/venc.c | 4 +++-
drivers/gpu/drm/omapdrm/omap_drv.c | 3 +++
drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 4 +++-
drivers/gpu/drm/rcar-du/rcar_lvds.c | 2 +-
drivers/gpu/drm/tidss/tidss_dispc.c | 4 +++-
drivers/iommu/ipmmu-vmsa.c | 7 +++++--
drivers/media/platform/rcar-vin/rcar-core.c | 2 +-
drivers/media/platform/rcar-vin/rcar-csi2.c | 2 +-
drivers/media/platform/vsp1/vsp1_uif.c | 4 +++-
drivers/mmc/host/renesas_sdhi_core.c | 2 +-
drivers/mmc/host/renesas_sdhi_internal_dmac.c | 2 +-
drivers/mmc/host/sdhci-of-esdhc.c | 21 ++++++++++++++-----
drivers/mmc/host/sdhci-omap.c | 2 +-
drivers/mmc/host/sdhci_am654.c | 2 +-
drivers/net/ethernet/renesas/ravb_main.c | 4 +++-
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +-
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/phy/ti/phy-omap-usb2.c | 4 +++-
drivers/pinctrl/renesas/core.c | 2 +-
drivers/pinctrl/renesas/pfc-r8a7790.c | 5 ++++-
drivers/pinctrl/renesas/pfc-r8a7794.c | 5 ++++-
drivers/soc/fsl/dpio/dpio-driver.c | 13 ++++++++----
drivers/soc/renesas/r8a774c0-sysc.c | 5 ++++-
drivers/soc/renesas/r8a7795-sysc.c | 2 +-
drivers/soc/renesas/r8a77990-sysc.c | 5 ++++-
drivers/soc/ti/k3-ringacc.c | 2 +-
drivers/staging/mt7621-pci/pci-mt7621.c | 2 +-
drivers/thermal/rcar_gen3_thermal.c | 4 +++-
drivers/thermal/ti-soc-thermal/ti-bandgap.c | 10 +++++++--
drivers/usb/gadget/udc/renesas_usb3.c | 2 +-
drivers/usb/host/ehci-platform.c | 4 +++-
drivers/usb/host/xhci-rcar.c | 2 +-
drivers/watchdog/renesas_wdt.c | 2 +-
50 files changed, 139 insertions(+), 52 deletions(-)

--
2.17.1