Re: [PATCH 4/4] ARM: dts: uniphier: change support card to simple-mfd from simple-bus

From: Masahiro Yamada
Date: Sun Jun 28 2020 - 22:03:03 EST


On Thu, Jun 25, 2020 at 11:57 PM Lee Jones <lee.jones@xxxxxxxxxx> wrote:
>
> On Thu, 25 Jun 2020, Masahiro Yamada wrote:
>
> > On Thu, Jun 25, 2020 at 3:16 AM Lee Jones <lee.jones@xxxxxxxxxx> wrote:
> > >
> > > On Thu, 25 Jun 2020, Masahiro Yamada wrote:
> > >
> > > > On Tue, Jun 23, 2020 at 9:24 PM Lee Jones <lee.jones@xxxxxxxxxx> wrote:
> > > > >
> > > > > On Tue, 23 Jun 2020, Masahiro Yamada wrote:
> > > > >
> > > > > > 'make ARCH=arm dtbs_check' emits the following warning:
> > > > > >
> > > > > > support-card@1,1f00000: $nodename:0: 'support-card@1,1f00000' does not match '^(bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
> > > > > >
> > > > > > Maybe, simple-mfd could be a better fit for this device.
> > > > >
> > > > > The two should be equivalent.
> > > >
> > > > Yes, I know.
> > > > That's why I can change "simple-bus" to "simple-mfd"
> > > > with no risk.
> > > >
> > > > The difference is schema-check.
> > > >
> > > > The node name for "simple-bus" is checked by 'make dtbs_check'.
> > > >
> > > > See this code:
> > > > https://github.com/robherring/dt-schema/blob/v2020.05/schemas/simple-bus.yaml#L17
> > > >
> > > > Even if I rename the node, it does not accept the
> > > > unit name '1,1f00000'
> > > >
> > > > > What do you mean by "maybe"? Does this squash the warning?
> > > >
> > > > "maybe" means I am not quite sure
> > > > which compatible is a better fit
> > > > to describe this device.
> > > >
> > > > As mentioned above, simple-bus and simple-mfd
> > > > are interchangeable from a driver point of view.
> > > >
> > > > This add-on board is integrated with various peripherals
> > > > such as 16550a serial, smsc9115 ether etc.
> > > > The address-decode is implemented in a CPLD device.
> > > > It has chip selects and local addresses, which are mapped to
> > > > the parent.
> > > >
> > > > It can be either simple-bus or simple-mfd, I think.
> > > >
> > > >
> > > > dt-schema checks the node name of simple-bus.
> > > > Currently, there is no check for simple-mfd.
> > > >
> > > > So, I think this patch is an easy solution
> > > > to fix the warning.
> > >
> > > Yes, looking at the documentation it seems as though 'simple-mfd'
> > > would be a better fit. Is the device a single IP with various
> > > different functions?
> >
> > Not an IP.
> >
> > This is a small board that consists of
> > a CPLD + ethernet controller + serial controller + LED, etc.
>
> Then simple MFD does not seem like a good fit.
>
> Neither does 'simple-bus'.

Then, I do not know what to do.


This board connection is so simple
that no hardware initialization needed to get access
to peripherals.

So, 'simple-bus' or 'simple-mfd' is preferred.

If this is not either simple-bus or simple-mfd,
I need a special driver to probe the
child devices such as ethernet, serial etc.



> What is it you're trying to describe in the device hierarchy?


The connection is as follows:


|-Main board -| |----- add-on board ----|
| | | (this board) |
| | | |
| (SoC) ---|------|--- CPLD --- ethernet |
| | | |- serial |
|-------------| | |- LED |
| |
|-----------------------|



uniphier-support-card.dtsi describes the
"add-on board" part.
Address-decode is implemented in CPLD.


So, the criteria to become MFD is
whether it is an IP integrated into SoC.


- implemented in an SoC --> MFD

- implemented in a board + CPLD --> not MFD


Right?




>
> > > > Rob is in Cc. Please add comments if any.
> > > >
> > > > > Isn't the issue caused by the ','?
> > > >
> > > > Right.
> > > >
> > > > The node name of simple-bus
> > > > must meet the regular expression:
> > > > "^(bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$"
> > > >
> > > >
> > > > Even if I rename the node
> > > > "support-card@1,1f00000"
> > > > to "bus@1,1f00000", the warning is still
> > > > displayed due to ','
> > > >
> > > > "1,1f00000" means
> > > > the address 0x01f00000 of chip select 1.
> > >
> > > Is this an officially accepted format?
> >
> > I am not sure if it is official.
> >
> > Rob said the data fields should be separated by commas.
> > https://www.spinics.net/lists/devicetree/msg201565.html
>
> Are you sure he doesn't mean in the 'reg' property.
>
> Rather than the node-name@NNNNNNNN syntax.
>
> BTW, I think the error you link to above is related to the
> node-name@NNNNNNNN not matching the value listed in the 'reg'
> property.


If I get rid of @NNNNNNNN part,
DTC warns the following for W=1 builds:

arch/arm/boot/dts/uniphier-support-card.dtsi:12.29-32.4: Warning
(unit_address_vs_reg): /soc/system-bus@58c00000/support-card: node has
a reg or ranges property, but no unit name



So, 'reg' or 'range' requires a unit name.

A unit name should be a base address.
If it has a chip select, the format is
<chip-select>,<base-address>

But the schema does not allow commas
in a unit name of simple-bus.

This is the problem I am trying to do something for.





>
> --
> Lee Jones [æçæ]
> Senior Technical Lead - Developer Services
> Linaro.org â Open source software for Arm SoCs
> Follow Linaro: Facebook | Twitter | Blog



--
Best Regards
Masahiro Yamada