[PATCH v3 3/3] ramips: mt7621-dts: add pinctrl properties for ethernet
Arınç ÜNAL
arinc.unal at arinc9.com
Sun Feb 13 05:06:17 PST 2022
Hey Sander,
On 13/02/2022 15:31, Sander Vanheule wrote:
> Hi Arınç,
>
> On Sun, 2022-02-13 at 11:15 +0300, Arınç ÜNAL wrote:
>> Add the missing pinctrl properties on the ethernet node.
>> GMAC1 will start working with this change.
>>
>> Link: https://lore.kernel.org/netdev/83a35aa3-6cb8-2bc4-2ff4-64278bbcd8c8@arinc9.com/
>>
>> Overwrite pinctrl-0 property without rgmii2_pins on devicetrees which use
>> the rgmii2 pins as GPIO (22 - 33).
>>
>> Add rgmii2 pin group to gpio function on mt7621_tplink_archer-x6-v3.dtsi
>> which uses GPIO 28.
>>
>> Signed-off-by: Arınç ÜNAL <arinc.unal at arinc9.com>
>> ---
>> target/linux/ramips/dts/mt7621.dtsi | 3 +++
>> target/linux/ramips/dts/mt7621_alfa-network_quad-e4g.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_buffalo_wsr-1166dhp.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_buffalo_wsr-600dhp.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_d-team_pbr-m1.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_firefly_firewrt.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_gnubee_gb-pc1.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_gnubee_gb-pc2.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_mediatek_ap-mt7621a-v60.dts | 4 ++++
>> .../linux/ramips/dts/mt7621_mediatek_mt7621-eval-board.dts | 4 ++++
>> .../linux/ramips/dts/mt7621_mikrotik_routerboard-m11g.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_mtc_wr1201.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_netgear_ex6150.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_sercomm_na502.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_telco-electronics_x1.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_tplink_archer-x6-v3.dtsi | 6 +++++-
>> target/linux/ramips/dts/mt7621_tplink_re350-v1.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_tplink_rexx0-v1.dtsi | 4 ++++
>> target/linux/ramips/dts/mt7621_ubnt_edgerouter-x.dtsi | 4 ++++
>> target/linux/ramips/dts/mt7621_wavlink_wl-wn531a6.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_wevo_w2914ns-v2.dtsi | 4 ++++
>> target/linux/ramips/dts/mt7621_winstars_ws-wn583a6.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_xzwifi_creativebox-v1.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi | 4 ++++
>> target/linux/ramips/dts/mt7621_zbtlink_zbt-wg2626.dts | 4 ++++
>> target/linux/ramips/dts/mt7621_zbtlink_zbt-wg3526.dtsi | 4 ++++
>> target/linux/ramips/dts/mt7621_zyxel_nr7101.dts | 4 ++++
>> 27 files changed, 108 insertions(+), 1 deletion(-)
>>
>
> Are you sure this is the only way to make this work? Overwriting a default in this many
> files doesn't make it look like a great default. This is probably happening because these
This is actually a minority of devicetrees. 26 opposed to 156 (minus
devicetrees that #include any of the 26 devicetrees) which use all 3 pin
groups on ethernet.
It's also upstreamed so I'd like to stick with it as much as I can.
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/commit/?h=staging-testing&id=0a93c0d75809582893e82039143591b9265b520e
> files already specify rgmii2 to be used with the GPIO function, and you're causing some
> sort of race as to what setting gets applied in the end, by adding rmgii2_pins to the
> default state for the ðernet node.
Agreed:
[ 1.177349] rt2880-pinmux pinctrl: pin io22 already requested by
pinctrl; cannot claim for 1e100000.ethernet
[ 1.196966] rt2880-pinmux pinctrl: pin-22 (1e100000.ethernet) status -22
[ 1.210312] rt2880-pinmux pinctrl: could not request pin 22 (io22)
from group rgmii2 on device rt2880-pinmux
[ 1.230058] mtk_soc_eth 1e100000.ethernet: Error applying setting,
reverse things back
[ 1.245853] mtk_soc_eth: probe of 1e100000.ethernet failed with error -22
That's why I overwrite the property without it for the 26 devicetrees.
>
> What would make more sense to me, is if the rgmii settings could be enabled in the gmac-s
> themselves:
>
> &gmac0 {
> pinctrl-names = "default";
> pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
> }
>
> &gmac1 {
> /* Has state = "disabled" by default */
> pinctrl-names = "default";
> pinctrl-0 = <&mdio_pins>, <&rgmii2_pins>;
> }
>
> That way, if the pinctrl-s are processed properly, the rgmii2_pins setting would be
> applied automatically when gmac1 is enabled. mdio_pins would be applied when either (or
> both) gmac-s is (are) active.
This is also what I thought would be best but unfortunately that won't
work. Please read the responses on this thread:
https://lore.kernel.org/netdev/83a35aa3-6cb8-2bc4-2ff4-64278bbcd8c8@arinc9.com/T/
>
>> diff --git a/target/linux/ramips/dts/mt7621.dtsi b/target/linux/ramips/dts/mt7621.dtsi
>> index bfb66740a2..56799201c0 100644
>> --- a/target/linux/ramips/dts/mt7621.dtsi
>> +++ b/target/linux/ramips/dts/mt7621.dtsi
>> @@ -456,6 +456,9 @@
>>
>> mediatek,ethsys = <&sysc>;
>>
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
>
> Note that this should be a list of size-1 items like above. In binary form, both come down
> to the same thing, but this notation would be used on specifications with non-zero cells
> (cf. "#interrupts-cells = <1>" and "<&int_ctl 16>").
This is something I should address here and on upstream, thanks for
reporting this!
Let me know what do you think of this patch, I don't want to send v4
until we're on the same page.
Cheers.
Arınç
More information about the openwrt-devel
mailing list