[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK8P3a0PKvqpTjNeKUm6EnxpmJAtmk1jv+b4YXxr+fXFpsWXtw@mail.gmail.com>
Date: Mon, 23 May 2022 12:44:06 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Tomer Maimon <tmaimon77@...il.com>
Cc: Avi Fishman <avifishman70@...il.com>,
Tali Perry <tali.perry1@...il.com>,
Joel Stanley <joel@....id.au>,
Patrick Venture <venture@...gle.com>,
Nancy Yuen <yuenn@...gle.com>,
Benjamin Fair <benjaminfair@...gle.com>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Philipp Zabel <p.zabel@...gutronix.de>,
gregkh <gregkh@...uxfoundation.org>,
Daniel Lezcano <daniel.lezcano@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>,
Wim Van Sebroeck <wim@...ux-watchdog.org>,
Guenter Roeck <linux@...ck-us.net>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>, Arnd Bergmann <arnd@...db.de>,
Olof Johansson <olof@...om.net>,
Jiri Slaby <jirislaby@...nel.org>,
Shawn Guo <shawnguo@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Geert Uytterhoeven <geert+renesas@...der.be>,
Marcel Ziswiler <marcel.ziswiler@...adex.com>,
Vinod Koul <vkoul@...nel.org>,
Biju Das <biju.das.jz@...renesas.com>,
Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@...hiba.co.jp>,
robert.hancock@...ian.com,
"nathan=20Neusch=C3=A4fer?=" <j.neuschaefer@....net>,
Lubomir Rintel <lkundrak@...sk>, SoC Team <soc@...nel.org>,
DTML <devicetree@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-clk <linux-clk@...r.kernel.org>,
"open list:SERIAL DRIVERS" <linux-serial@...r.kernel.org>,
LINUXWATCHDOG <linux-watchdog@...r.kernel.org>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>
Subject: Re: [PATCH v1 12/19] reset: npcm: Add NPCM8XX support
On Sun, May 22, 2022 at 5:50 PM Tomer Maimon <tmaimon77@...il.com> wrote:
> static const struct of_device_id npcm_rc_match[] = {
> { .compatible = "nuvoton,npcm750-reset"},
> + { .compatible = "nuvoton,npcm845-reset"},
> { }
> };
> +/*
> + * The following procedure should be observed in USB PHY, USB device and
> + * USB host initialization at BMC boot
> + */
> +static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
> +{
> + struct device_node *np = pdev->dev.of_node;
> + struct device *dev = &pdev->dev;
> +
> + rc->gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> + if (IS_ERR(rc->gcr_regmap)) {
> + dev_err(&pdev->dev, "Failed to find gcr syscon");
> + return PTR_ERR(rc->gcr_regmap);
> + }
> +
> + if (of_device_is_compatible(np, "nuvoton,npcm750-reset"))
> + npcm_usb_reset_npcm7xx(rc);
> + else if (of_device_is_compatible(np, "nuvoton,npcm845-reset"))
> + npcm_usb_reset_npcm8xx(rc);
> + else
> + return -ENODEV;
>
In place of the string comparison in of_device_is_compatible(), maybe just use
the .data field of the of_device_id structure to point to the actual
reset function.
Alternatively, register two separate platform_driver instances here and
use separate probe functions that do the soc specific bits and call into
shared functions for the bits that are the same.
Arnd
Powered by blists - more mailing lists