Thread (74 messages) 74 messages, 8 authors, 2020-06-10

Re: [PATCH v4 02/11] mfd: Add support for Kontron sl28cpld management controller

From: Michael Walle <hidden>
Date: 2020-06-10 07:49:11
Also in: linux-devicetree, linux-gpio, linux-hwmon, linux-pwm, linux-watchdog, lkml

Am 2020-06-10 09:19, schrieb Lee Jones:
On Wed, 10 Jun 2020, Michael Walle wrote:
quoted
Am 2020-06-09 21:45, schrieb Lee Jones:
quoted
On Tue, 09 Jun 2020, Michael Walle wrote:
quoted
quoted
We do not need a 'simple-regmap' solution for your use-case.

Since your device's registers are segregated, just split up the
register map and allocate each sub-device with it's own slice.
I don't get it, could you make a device tree example for my
use-case? (see also above)
    &i2cbus {
        mfd-device@10 {
            compatible = "simple-mfd";
            reg = <10>;

            sub-device@10 {
                compatible = "vendor,sub-device";
                reg = <10>;
            };
   };

The Regmap config would be present in each of the child devices.

Each child device would call devm_regmap_init_i2c() in .probe().
Ah, I see. If I'm not wrong, this still means to create an i2c
device driver with the name "simple-mfd".
Yes, it does.
quoted
Besides that, I don't like this, because:
 - Rob already expressed its concerns with "simple-mfd" and so on.
Where did this take place?  I'd like to read up on this.
In this thread:
https://lore.kernel.org/linux-devicetree/20200604211039.12689-1-michael@walle.cc/T/#m16fdba5962069e7cd4aa817582ee358c9fe2ecbf (local)
quoted
 - you need to duplicate the config in each sub device
You can have a share a single config.
quoted
 - which also means you are restricting the sub devices to be
   i2c only (unless you implement and duplicate other regmap configs,
   too). For this driver, SPI and MMIO may be viable options.
You could also have a shared implementation to choose between different
busses.
Then what is the difference between to have this shared config in the
parent driver only and use the functions which are already there, i.e.
dev_get_regmap(parent). But see, below, I'll wait with what you're
coming up.
quoted
Thus, I'd rather implement a simple-mfd.c which implement a common
I2C driver for now and populate its children using
devm_of_platform_populate(). This could be extended to support other
type of regmaps like SPI in the future.

Also some MFD drivers could be moved to this, a likely candidate is
the smsc-ece1099.c. Although I don't really understand its purpose,
if don't have CONFIG_OF.

Judging from the existing code, this simple-mfd.c wouldn't just be
"a list of compatible" strings but also additional quirks and tweaks
for particular devices in this list.
Hold off on the simple-mfd.c idea, as I'm not taken by it yet and
wouldn't want you to waste your time.  I have another idea which would
help.  Give me a few days to put something together.
Sure. I'm just glad there is now a discussion about this issue.

-michael

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help