2021-04-13 09:22:31

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-binding: bcm43xx-fmac: add optional brcm,ccode-map

On Mon, Apr 12, 2021 at 02:54:46PM +0300, Kalle Valo wrote:
> Shawn Guo <[email protected]> writes:
>
> > On Sun, Apr 11, 2021 at 10:57:54AM +0300, Kalle Valo wrote:
> >> Shawn Guo <[email protected]> writes:
> >>
> >> > Add optional brcm,ccode-map property to support translation from ISO3166
> >> > country code to brcmfmac firmware country code and revision.
> >> >
> >> > Signed-off-by: Shawn Guo <[email protected]>
> >> > ---
> >> > .../devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt | 7 +++++++
> >> > 1 file changed, 7 insertions(+)
> >> >
> >> > diff --git a/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt b/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt
> >> > index cffb2d6876e3..a65ac4384c04 100644
> >> > --- a/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt
> >> > +++ b/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt
> >> > @@ -15,6 +15,12 @@ Optional properties:
> >> > When not specified the device will use in-band SDIO interrupts.
> >> > - interrupt-names : name of the out-of-band interrupt, which must be set
> >> > to "host-wake".
> >> > + - brcm,ccode-map : multiple strings for translating ISO3166 country code to
> >> > + brcmfmac firmware country code and revision. Each string must be in
> >> > + format "AA-BB-num" where:
> >> > + AA is the ISO3166 country code which must be 2 characters.
> >> > + BB is the firmware country code which must be 2 characters.
> >> > + num is the revision number which must fit into signed integer.
> >> >
> >> > Example:
> >> >
> >> > @@ -34,5 +40,6 @@ mmc3: mmc@1c12000 {
> >> > interrupt-parent = <&pio>;
> >> > interrupts = <10 8>; /* PH10 / EINT10 */
> >> > interrupt-names = "host-wake";
> >> > + brcm,ccode-map = "JP-JP-78", "US-Q2-86";
> >>
> >> The commit log does not answer "Why?". Why this needs to be in device
> >> tree and, for example, not hard coded in the driver?
> >
> > Thanks for the comment, Kalle. Actually, this is something I need some
> > input from driver maintainers. I can see this country code mapping
> > table is chipset specific, and can be hard coded in driver per chip id
> > and revision. But on the other hand, it makes some sense to have this
> > table in device tree, as the country code that need to be supported
> > could be a device specific configuration.
>
> Could be? Does such a use case exist at the moment or are just guessing
> future needs?

I hope that the patch [1] from RafaƂ (copied) is one use case. And
also, the device I'm working on only needs to support some of the
countries in the mapping table.

>
> From what I have learned so far I think this kind of data should be in
> the driver, but of course I might be missing something.

I agree with you that such data are chipset specific and should ideally
be in the driver. However, the brcmfmac driver implementation has been
taking the mapping table from platform_data [2][3], which is a logical
equivalent of DT data in case of booting with device tree.

Shawn

[1] https://gitlab.dai-labor.de/nadim/powquty-coap/-/blob/563b2bd658822375dcfa8e87707304b94de9901c/kernel/mac80211/patches/863-brcmfmac-add-in-driver-tables-with-country-codes.patch
[2] https://elixir.bootlin.com/linux/v5.12-rc7/source/include/linux/platform_data/brcmfmac.h#L154
[3] https://elixir.bootlin.com/linux/v5.12-rc7/source/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c#L433