Subject: [PATCH 01/11] mfd: add the Berlin controller driver

From: [email-masked] (Sebastian Hesselbarth)
Date: Wed, 18 Feb 2015 12:10:05 +0100

On 18.02.2015 11:40, Lee Jones wrote:
> On Wed, 18 Feb 2015, Antoine Tenart wrote:
[...]
>> chip: chip-controller at ea0000 {
>>          compatible = "marvell,berlin2q-chip-ctrl", "syscon";
>>          reg = <0xea0000 0x400>, <0xdd0170 0x10>;
>>          #clock-cells = <1>;
>>          clocks = <&refclk>;
>>          clock-names = "refclk";
>>
>>          soc_pinctrl: pin-controller {
>>                  compatible = "marvell,berlin2q-soc-pinctrl";
>>
>>                  twsi0_pmux: twsi0-pmux {
>>                          groups = "G6";
>>                          function = "twsi0";
>>                  };
>>
>>                  twsi1_pmux: twsi1-pmux {
>>                          groups = "G7";
>>                          function = "twsi1";
>>                  };
>>          };
>>
>>          chip_rst: reset {
>>                  compatible = "marvell,berlin2-reset";
>>                  #reset-cells = <2>;
>>          };
>> };
>
> This is what I'd expect to see in DT, so we're heading in the right
> direction.  So make to my original question, what's the point of this
> MFD driver, and why don't you just let DT framework register these
> devices for you?
>
> You issue a compatible string here, then duplicate it in the driver,
> why do you think this is necessary?

Lee,

there is no DT framework that automatically probes for
compatible<->driver matches. You either make it "simple-bus" compatible
which will call of_foo_populate() or you have to register each of the
devices yourself. It clearly is not a bus, so if we use this as a
workaround, we'll get yelled at by others.

Sebastian