On Mon, Apr 12, 2021 at 02:54:46PM +0300, Kalle Valo wrote: > Shawn Guo <shawn.guo@xxxxxxxxxx> writes: > > > On Sun, Apr 11, 2021 at 10:57:54AM +0300, Kalle Valo wrote: > >> Shawn Guo <shawn.guo@xxxxxxxxxx> 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 <shawn.guo@xxxxxxxxxx> > >> > --- > >> > .../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