Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxx> 於 2022年3月14日 週一 下午3:35寫道: > > On 13/03/2022 21:22, Avi Fishman wrote: > > On Fri, Mar 11, 2022 at 11:15 AM Krzysztof Kozlowski > > <krzysztof.kozlowski@xxxxxxxxxxxxx> wrote: > >> > >> On 11/03/2022 02:42, Medad CChien wrote: > >>> Add support for Nuvoton NPCM SoC. > >>> > >>> Signed-off-by: Medad CChien <ctcchien@xxxxxxxxxxx> > >>> --- > >>> drivers/edac/Kconfig | 9 + > >>> drivers/edac/Makefile | 1 + > >>> drivers/edac/npcm_edac.c | 714 +++++++++++++++++++++++++++++++++++++++ > >>> 3 files changed, 724 insertions(+) > >>> create mode 100644 drivers/edac/npcm_edac.c > >>> > >>> diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig > >>> index 58ab63642e72..757e1d160640 100644 > >>> --- a/drivers/edac/Kconfig > >>> +++ b/drivers/edac/Kconfig > >>> @@ -539,4 +539,13 @@ config EDAC_DMC520 > >>> Support for error detection and correction on the > >>> SoCs with ARM DMC-520 DRAM controller. > >>> > >>> +config EDAC_NPCM > >>> + tristate "Nuvoton NPCM DDR Memory Controller" > >>> + depends on ARCH_NPCM > >> > >> || COMPILE_TEST > >> (and test if it compiles) > >> > >> (...) > >> > >>> + > >>> +MODULE_DEVICE_TABLE(of, npcm_edac_of_match); > >>> + > >>> +static int npcm_edac_mc_probe(struct platform_device *pdev) > >>> +{ > >>> + const struct npcm_edac_platform_data *npcm_chip; > >>> + struct device *dev = &pdev->dev; > >>> + struct edac_mc_layer layers[1]; > >>> + const struct of_device_id *id; > >>> + struct priv_data *priv_data; > >>> + struct mem_ctl_info *mci; > >>> + struct resource *res; > >>> + void __iomem *reg; > >>> + int ret = -ENODEV; > >>> + int irq; > >>> + > >>> + id = of_match_device(npcm_edac_of_match, &pdev->dev); > >>> + if (!id) > >>> + return -ENODEV; > >> > >> Why do you need it? How such case is even possible? > >> > >>> + > >>> + npcm_chip = of_device_get_match_data(&pdev->dev); > >>> + if (!npcm_chip) > >>> + return -ENODEV; > >> > >> I wonder, how is it possible to have here NULL? > >> > > Both of_match_device() and of_device_get_match_data() can return NULL, > > are we missing something? > > I think your driver is OF-only, right? If yes, how is it possible to be > here in probe() (meaning: being matched by of_device_id) and a few lines > later do not match the same of_device_id? I got your point, thanks > Best regards, > Krzysztof