On 2020-07-21 05:04, Rob Herring wrote: > On Wed, Jul 15, 2020 at 03:01:34PM +0200, Felix Fietkau wrote: >> This subnode can be used to set per-rate tx power limits either per >> country code / regdomain or globally. >> These limits are typically provided by the device manufacturers and are >> used to limit sideband emissions and stay within regulatory limits >> >> Co-developed-by: Shayne Chen <shayne.chen@xxxxxxxxxxxx> >> Signed-off-by: Shayne Chen <shayne.chen@xxxxxxxxxxxx> >> Signed-off-by: Felix Fietkau <nbd@xxxxxxxx> >> --- >> v3: >> - fix S-o-b order >> v2: >> - merge 802.11ax rate changes from Shayne's patch >> - document txs-delta property > > This is an extensive enough change that I think it needs to be in schema > format. Okay, I will convert the existing file soon and then add these changes afterwards. >> .../bindings/net/wireless/mediatek,mt76.txt | 59 +++++++++++++++++++ >> 1 file changed, 59 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt >> index ab7e7a00e534..e4859c974ef4 100644 >> --- a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt >> +++ b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt >> @@ -36,6 +36,7 @@ Optional nodes: >> - led: Properties for a connected LED >> Optional properties: >> - led-sources: See Documentation/devicetree/bindings/leds/common.txt >> +- power-limits: contains per-regdomain/channel rate power limit subnodes >> >> &pcie { >> pcie0 { >> @@ -76,3 +77,61 @@ wmac: wmac@18000000 { >> >> power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>; >> }; >> + >> + >> +Subnodes of power-limits: >> + >> +Properties: >> +- country: One or more country codes, as used by the cfg80211 regdomain code > > What are the values? cfg80211 is a Linux thing and doesn't belong in > bindings. I'll change the description to leave out cfg80211. It's a simple alpha2 country code. >> +- regdomain: "FCC", "ETSI" or "JP" > > These aren't implied by the country code? You use either country code or regdomain. >> +If neither country, nor regdomain is specified, the power limits node is used >> +as a fallback when no other subnode matches. >> + >> +Subnodes txpower-2g, txpower-5g: >> + >> +Properties: >> +- channels: pairs of first and last channel number > > What's the range in terms of channel numbers and pairs? 802.11 channel numbers (0-255) >> +- cck: 4 half-dBm per-rate power limit values >> +- ofdm: 8 half-dBm per-rate power limit values >> +- mcs: >> + sets of per-rate power limit values for 802.11n/802.11ac rates for >> + multiple channel bandwidth settings. >> + Each set starts with the number of channel bandwidth settings for >> + which the rate set applies, followed by either 8 (MT7603/MT7628) or >> + 10 (all other chips) power limit values. >> + The order of the channel bandwidth settings is: 20, 40, 80, 160 MHz. > > The example only has 2 sets, so which channels are they? The format is <number_of_sets set_data>, so a set starting with <3 ...> would contain the values for 20, 40 and 80 MHz and you'd add another one with <1 ...> to describe 160 MHz. Sets often contain the same data for multiple channel bandwidths, so this reduces duplication. >> +- ru: >> + sets of per-rate power limit values for 802.11ax rates for multiple >> + channel bandwidth or resource unit settings. >> + Each set starts with the number of channel bandwidth or resource unit >> + settings for which the rate set applies, followed by 12 power limit >> + values. The order of the channel resource unit settings is: >> + RU26, RU52, RU106, RU242/SU20, RU484/SU40, RU996/SU80, RU2x996/SU160. > > Could be 8-bit? Doesn't really matter much for the example, but what's > the worst/typical case? Yes, 8 bit would also work. >> +- txs-delta: half-dBm power delta for different numbers of antennas (1, 2, ...) >> + >> + >> +power-limit example: >> + >> +power-limits { >> + r0 { > > What's 'r0'? Not documented. > >> + regdomain = "FCC"; >> + txpower-5g { >> + r1 { > > What's 'r1' and 'r2'? Not documented. You add an arbitrary number of subnodes (I just used r0, r1, ...) containing rules with the documented properties. - Felix