From: Rasmus Villemoes <ravi@prevas.dk>
To: Lee Jones <lee@kernel.org>
Cc: Colin Foster <colin.foster@in-advantage.com>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
Felix Blix Everberg <felix.blix@prevas.dk>
Subject: Re: [PATCH 1/8] mfd: ocelot: refactor bus-specific regmap initialization
Date: Fri, 21 Mar 2025 13:39:01 +0100 [thread overview]
Message-ID: <87r02qeexm.fsf@prevas.dk> (raw)
In-Reply-To: <20250321114159.GJ1750245@google.com> (Lee Jones's message of "Fri, 21 Mar 2025 11:41:59 +0000")
On Fri, Mar 21 2025, Lee Jones <lee@kernel.org> wrote:
> On Wed, 19 Mar 2025, Colin Foster wrote:
>
>> On Wed, Mar 19, 2025 at 01:30:51PM +0100, Rasmus Villemoes wrote:
>> > diff --git a/drivers/mfd/ocelot-core.c b/drivers/mfd/ocelot-core.c
>> > index 41aff27088548..78b5fe15efdd2 100644
>> > --- a/drivers/mfd/ocelot-core.c
>> > +++ b/drivers/mfd/ocelot-core.c
>> > @@ -200,10 +200,12 @@ static const struct mfd_cell vsc7512_devs[] = {
>> > static void ocelot_core_try_add_regmap(struct device *dev,
>> > const struct resource *res)
>> > {
>> > + struct ocelot_ddata *ddata = dev_get_drvdata(dev);
>> > +
>> > if (dev_get_regmap(dev, res->name))
>> > return;
>> >
>> > - ocelot_spi_init_regmap(dev, res);
>> > + ddata->init_regmap(dev, res);
>>
>> I remember changing this from function pointers to the direct function
>> call during initial development, per Lee's suggestion. I like it though,
>> and I'm glad to see multiple users now.
>
> Yeah, we're still not going to be putting call-backs into device data.
OK. Can you explain why that is such a bad design?
> Either pass the differentiating config through to the core driver
So you mean something like defining a new struct ocelot_backend_ops { } with
those function pointers, and pass an instance of that to
ocelot_core_init (and from there down to the static helper functions)?
That should be doable.
> or handle the differentiation inside the *-i2c.c / *-spi.c files.
I really fail to see how that could be done. Currently, the core file
has a hard-coded call of ocelot_spi_init_regmap(). I don't suppose you
mean to teach that function to realize "hey, this struct device is not
really a struct spi_device, let's delegate to ocelot_mdio_init_regmap()
instead". So _somehow_ the core will need to know to call one or the
other init_regmap implementation. I could add some "enum ocelot_type"
and switch on that and then call the appropriate bus-specific function,
but that's morally equivalent to having the function pointers.
Thanks,
Rasmus
next prev parent reply other threads:[~2025-03-21 12:39 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 12:30 [PATCH 0/8] mfd: ocelot: add support for MDIO managed switch Rasmus Villemoes
2025-03-19 12:30 ` [PATCH 1/8] mfd: ocelot: refactor bus-specific regmap initialization Rasmus Villemoes
2025-03-19 20:08 ` Colin Foster
2025-03-21 11:41 ` Lee Jones
2025-03-21 12:39 ` Rasmus Villemoes [this message]
2025-03-28 8:37 ` Lee Jones
2025-03-19 12:30 ` [PATCH 2/8] mfd: ocelot: move SPI specific macros to ocelot-spi.c Rasmus Villemoes
2025-03-19 20:11 ` Colin Foster
2025-03-19 12:30 ` [PATCH 3/8] mfd: ocelot: rework SPI (re-)initialization after chip reset Rasmus Villemoes
2025-03-19 22:08 ` Colin Foster
2025-03-20 11:17 ` Rasmus Villemoes
2025-03-22 13:36 ` Colin Foster
2025-03-25 15:35 ` Rasmus Villemoes
2025-03-19 12:30 ` [PATCH 4/8] mfd: ocelot: lift chip reset logic to ocelot-core.c Rasmus Villemoes
2025-03-19 22:44 ` Colin Foster
2025-03-19 12:30 ` [PATCH 5/8] mfd: ocelot: make ocelot_chip_init() static Rasmus Villemoes
2025-03-19 22:45 ` Colin Foster
2025-03-19 12:30 ` [PATCH 6/8] mfd: ocelot: correct Kconfig dependency Rasmus Villemoes
2025-03-19 22:48 ` Colin Foster
2025-03-19 12:30 ` [PATCH 7/8] mfd: ocelot: enable support for mdio management Rasmus Villemoes
2025-03-19 12:30 ` [PATCH 8/8] dt-bindings: mfd: ocelot: mention MDIO management and add example Rasmus Villemoes
2025-03-19 13:24 ` Rob Herring (Arm)
2025-03-20 14:25 ` Rasmus Villemoes
2025-03-19 19:55 ` [PATCH 0/8] mfd: ocelot: add support for MDIO managed switch Colin Foster
2025-06-30 15:14 ` Colin Foster
2025-07-01 10:52 ` Rasmus Villemoes
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=87r02qeexm.fsf@prevas.dk \
--to=ravi@prevas.dk \
--cc=colin.foster@in-advantage.com \
--cc=devicetree@vger.kernel.org \
--cc=felix.blix@prevas.dk \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox