From: Arnd Bergmann <arnd@arndb.de> To: Brad Larson <brad@pensando.io> Cc: Linux ARM <linux-arm-kernel@lists.infradead.org>, Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <bgolaszewski@baylibre.com>, Mark Brown <broonie@kernel.org>, Serge Semin <fancer.lancer@gmail.com>, Adrian Hunter <adrian.hunter@intel.com>, Ulf Hansson <ulf.hansson@linaro.org>, Olof Johansson <olof@lixom.net>, "open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>, linux-spi <linux-spi@vger.kernel.org>, linux-mmc <linux-mmc@vger.kernel.org>, DTML <devicetree@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 5/8] mmc: sdhci-cadence: Add Pensando Elba SoC support Date: Thu, 4 Mar 2021 10:41:13 +0100 [thread overview] Message-ID: <CAK8P3a2mQ9Tk+xeL-kdpQh3oqgNQeT6c-_KwNLQQ7mEc21fDvg@mail.gmail.com> (raw) In-Reply-To: <20210304034141.7062-6-brad@pensando.io> On Thu, Mar 4, 2021 at 4:41 AM Brad Larson <brad@pensando.io> wrote: > + > +static void elba_write_l(struct sdhci_host *host, u32 val, int reg) > +{ > + struct sdhci_cdns_priv *priv = sdhci_cdns_priv(host); > + unsigned long flags; > + > + spin_lock_irqsave(&priv->wrlock, flags); > + writel(0x78, priv->ctl_addr); > + writel(val, host->ioaddr + reg); > + spin_unlock_irqrestore(&priv->wrlock, flags); > +} Please be aware that the spinlock does not actually guarantee serializing a series of mmio writes unless the MMIO mapping is non-posted, or you follow it with a readl() from the same device before the spin_unlock(). > @@ -453,8 +441,14 @@ static const struct dev_pm_ops sdhci_cdns_pm_ops = { > static const struct of_device_id sdhci_cdns_match[] = { > { > .compatible = "socionext,uniphier-sd4hc", > - .data = &sdhci_cdns_uniphier_pltfm_data, > + .data = &sdhci_cdns_uniphier_drv_data, > }, > +#ifdef CONFIG_MMC_SDHCI_CADENCE_ELBA > + { > + .compatible = "pensando,elba-emmc", > + .data = &sdhci_elba_drv_data > + }, > +#endif > { .compatible = "cdns,sd4hc" }, > { /* sentinel */ } > }; This introduces a reverse dependency between the modules, which will cause problems at link time depending on how you configure it. There are two ways to avoid this: a) the simple method is to always link every backend into the driver module, usually leaving them all enabled at compile time. b) once this gets out of hand because there are too many variants, or the differences between them are too big, you refactor the common code into a library module that just exports a functions but has no module_init() itself, plus a front-end driver for each variant, which now calls into the common code rather than being called by the common code. Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de> To: Brad Larson <brad@pensando.io> Cc: Linux ARM <linux-arm-kernel@lists.infradead.org>, Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <bgolaszewski@baylibre.com>, Mark Brown <broonie@kernel.org>, Serge Semin <fancer.lancer@gmail.com>, Adrian Hunter <adrian.hunter@intel.com>, Ulf Hansson <ulf.hansson@linaro.org>, Olof Johansson <olof@lixom.net>, "open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>, linux-spi <linux-spi@vger.kernel.org>, linux-mmc <linux-mmc@vger.kernel.org>, DTML <devicetree@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 5/8] mmc: sdhci-cadence: Add Pensando Elba SoC support Date: Thu, 4 Mar 2021 10:41:13 +0100 [thread overview] Message-ID: <CAK8P3a2mQ9Tk+xeL-kdpQh3oqgNQeT6c-_KwNLQQ7mEc21fDvg@mail.gmail.com> (raw) In-Reply-To: <20210304034141.7062-6-brad@pensando.io> On Thu, Mar 4, 2021 at 4:41 AM Brad Larson <brad@pensando.io> wrote: > + > +static void elba_write_l(struct sdhci_host *host, u32 val, int reg) > +{ > + struct sdhci_cdns_priv *priv = sdhci_cdns_priv(host); > + unsigned long flags; > + > + spin_lock_irqsave(&priv->wrlock, flags); > + writel(0x78, priv->ctl_addr); > + writel(val, host->ioaddr + reg); > + spin_unlock_irqrestore(&priv->wrlock, flags); > +} Please be aware that the spinlock does not actually guarantee serializing a series of mmio writes unless the MMIO mapping is non-posted, or you follow it with a readl() from the same device before the spin_unlock(). > @@ -453,8 +441,14 @@ static const struct dev_pm_ops sdhci_cdns_pm_ops = { > static const struct of_device_id sdhci_cdns_match[] = { > { > .compatible = "socionext,uniphier-sd4hc", > - .data = &sdhci_cdns_uniphier_pltfm_data, > + .data = &sdhci_cdns_uniphier_drv_data, > }, > +#ifdef CONFIG_MMC_SDHCI_CADENCE_ELBA > + { > + .compatible = "pensando,elba-emmc", > + .data = &sdhci_elba_drv_data > + }, > +#endif > { .compatible = "cdns,sd4hc" }, > { /* sentinel */ } > }; This introduces a reverse dependency between the modules, which will cause problems at link time depending on how you configure it. There are two ways to avoid this: a) the simple method is to always link every backend into the driver module, usually leaving them all enabled at compile time. b) once this gets out of hand because there are too many variants, or the differences between them are too big, you refactor the common code into a library module that just exports a functions but has no module_init() itself, plus a front-end driver for each variant, which now calls into the common code rather than being called by the common code. Arnd _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-03-04 9:45 UTC|newest] Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-04 3:41 [PATCH 0/8] Support Pensando Elba SoC Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 3:41 ` [PATCH 1/8] gpio: Add Elba SoC gpio driver for spi cs control Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 8:29 ` Linus Walleij 2021-03-04 8:29 ` Linus Walleij 2021-03-04 9:10 ` Serge Semin 2021-03-04 9:10 ` Serge Semin 2021-03-04 13:38 ` Linus Walleij 2021-03-04 13:38 ` Linus Walleij 2021-08-23 1:05 ` Brad Larson 2021-08-23 1:05 ` Brad Larson 2021-08-29 21:09 ` Linus Walleij 2021-08-29 21:09 ` Linus Walleij 2021-10-04 16:46 ` Brad Larson 2021-10-04 16:46 ` Brad Larson 2021-10-12 23:51 ` Linus Walleij 2021-10-12 23:51 ` Linus Walleij 2021-10-14 20:06 ` Brad Larson 2021-10-14 20:06 ` Brad Larson 2021-03-30 2:44 ` Brad Larson 2021-03-30 2:44 ` Brad Larson 2021-08-23 1:05 ` Brad Larson 2021-08-23 1:05 ` Brad Larson 2021-03-04 20:43 ` Elliott, Robert (Servers) 2021-03-04 20:43 ` Elliott, Robert (Servers) 2021-08-23 1:06 ` Brad Larson 2021-08-23 1:06 ` Brad Larson 2021-03-05 11:25 ` Krzysztof Kozlowski 2021-03-05 11:25 ` Krzysztof Kozlowski 2021-08-23 1:07 ` Brad Larson 2021-08-23 1:07 ` Brad Larson 2021-03-05 13:57 ` Geert Uytterhoeven 2021-03-05 13:57 ` Geert Uytterhoeven 2021-08-23 1:08 ` Brad Larson 2021-08-23 1:08 ` Brad Larson 2021-03-07 19:21 ` Andy Shevchenko 2021-03-07 19:21 ` Andy Shevchenko 2021-03-29 1:19 ` Brad Larson 2021-03-29 1:19 ` Brad Larson 2021-03-29 10:39 ` Andy Shevchenko 2021-03-29 10:39 ` Andy Shevchenko 2021-08-23 1:13 ` Brad Larson 2021-08-23 1:13 ` Brad Larson 2021-08-23 7:50 ` Geert Uytterhoeven 2021-08-23 7:50 ` Geert Uytterhoeven 2021-08-23 16:30 ` Brad Larson 2021-08-23 16:30 ` Brad Larson 2021-08-23 20:11 ` Geert Uytterhoeven 2021-08-23 20:11 ` Geert Uytterhoeven 2021-10-04 17:14 ` Brad Larson 2021-10-04 17:14 ` Brad Larson 2021-10-04 17:16 ` Geert Uytterhoeven 2021-10-04 17:16 ` Geert Uytterhoeven 2021-08-23 1:10 ` Brad Larson 2021-08-23 1:10 ` Brad Larson 2021-03-04 3:41 ` [PATCH 2/8] spi: cadence-quadspi: Add QSPI support for Pensando Elba SoC Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 9:29 ` Arnd Bergmann 2021-03-04 9:29 ` Arnd Bergmann 2021-03-04 3:41 ` [PATCH 3/8] spi: dw: Add support for Pensando Elba SoC SPI Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 6:44 ` Serge Semin 2021-03-04 6:44 ` Serge Semin 2021-08-23 1:17 ` Brad Larson 2021-08-23 1:17 ` Brad Larson 2021-03-04 8:48 ` Linus Walleij 2021-03-04 8:48 ` Linus Walleij 2021-03-10 3:52 ` Brad Larson 2021-03-10 3:52 ` Brad Larson 2021-03-04 3:41 ` [PATCH 4/8] spidev: Add Pensando CPLD compatible Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 9:33 ` Arnd Bergmann 2021-03-04 9:33 ` Arnd Bergmann 2021-03-04 3:41 ` [PATCH 5/8] mmc: sdhci-cadence: Add Pensando Elba SoC support Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 9:41 ` Arnd Bergmann [this message] 2021-03-04 9:41 ` Arnd Bergmann 2021-03-04 3:41 ` [PATCH 6/8] arm64: Add config for Pensando SoC platforms Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 9:42 ` Arnd Bergmann 2021-03-04 9:42 ` Arnd Bergmann 2021-03-04 3:41 ` [PATCH 7/8] arm64: dts: Add Pensando Elba SoC support Brad Larson 2021-03-04 3:41 ` Brad Larson 2021-03-04 8:03 ` Serge Semin 2021-03-04 8:03 ` Serge Semin 2021-03-29 1:07 ` Brad Larson 2021-03-29 1:07 ` Brad Larson 2021-08-23 0:54 ` Brad Larson 2021-08-23 0:54 ` Brad Larson 2021-03-04 8:51 ` Linus Walleij 2021-03-04 8:51 ` Linus Walleij 2021-03-29 0:54 ` Brad Larson 2021-03-29 0:54 ` Brad Larson 2021-03-04 9:06 ` Arnd Bergmann 2021-03-04 9:06 ` Arnd Bergmann 2021-03-04 20:47 ` Rob Herring 2021-03-04 20:47 ` Rob Herring 2021-03-05 11:22 ` Krzysztof Kozlowski 2021-03-05 11:22 ` Krzysztof Kozlowski 2021-03-04 3:41 ` [PATCH 8/8] MAINTAINERS: Add entry for PENSANDO Brad Larson 2021-03-04 3:41 ` Brad Larson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAK8P3a2mQ9Tk+xeL-kdpQh3oqgNQeT6c-_KwNLQQ7mEc21fDvg@mail.gmail.com \ --to=arnd@arndb.de \ --cc=adrian.hunter@intel.com \ --cc=bgolaszewski@baylibre.com \ --cc=brad@pensando.io \ --cc=broonie@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=fancer.lancer@gmail.com \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ --cc=olof@lixom.net \ --cc=ulf.hansson@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.