Message ID | 20190823094228.6540-1-megous@megous.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: dts: allwinner: orange-pi-3: Enable WiFi | expand |
Hi, On Fri, Aug 23, 2019 at 11:42:28AM +0200, megous@megous.com wrote: > From: Ondrej Jirman <megous@megous.com> > > Orange Pi 3 has AP6256 WiFi/BT module. WiFi part of the module is called > bcm43356 and can be used with the brcmfmac driver. The module is powered by > the two always on regulators (not AXP805). > > WiFi uses a PG port with 1.8V voltage level signals. SoC needs to be > configured so that it sets up an 1.8V input bias on this port. This is done > by the pio driver by reading the vcc-pg-supply voltage. > > You'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt > configuration that can be found in the Xulongs's repository for H6: > > https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256 > > Mainline brcmfmac driver expects the firmware and nvram at the following > paths relative to the firmware directory: > > brcm/brcmfmac43456-sdio.bin > brcm/brcmfmac43456-sdio.txt > > Signed-off-by: Ondrej Jirman <megous@megous.com> > --- > > Since RTC patches for H6 were merged, this can now go in too, if it looks ok. > > Other patches for this WiFi chip support were merged in previous cycles, > so this just needs enabling in DTS now. > > Sorry for the links in the commit log, but this information is useful, > even if the link itself goes bad. Any pointer what to google for > (file names, tree name) is great for anyone searching in the future. I understand, but this should (also?) be in the wiki. Please add it there too. > Please take a look. > > Thank you, > Ondrej > > .../dts/allwinner/sun50i-h6-orangepi-3.dts | 48 +++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > index eda9d5f640b9..49d954369087 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > @@ -56,6 +56,34 @@ > regulator-max-microvolt = <5000000>; > regulator-always-on; > }; > + > + reg_vcc33_wifi: vcc33-wifi { > + /* Always on 3.3V regulator for WiFi and BT */ > + compatible = "regulator-fixed"; > + regulator-name = "vcc33-wifi"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + vin-supply = <®_vcc5v>; > + }; > + > + reg_vcc_wifi_io: vcc-wifi-io { > + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ > + compatible = "regulator-fixed"; > + regulator-name = "vcc-wifi-io"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + vin-supply = <®_vcc33_wifi>; > + }; > + > + wifi_pwrseq: wifi_pwrseq { > + compatible = "mmc-pwrseq-simple"; > + clocks = <&rtc 1>; > + clock-names = "ext_clock"; > + reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ > + post-power-on-delay-ms = <200>; > + }; > }; > > &cpu0 { > @@ -91,6 +119,25 @@ > status = "okay"; > }; > > +&mmc1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&mmc1_pins>; This is the default already. I've removed it and applied. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
On Fri, Aug 23, 2019 at 6:08 PM Maxime Ripard <mripard@kernel.org> wrote: > > Hi, > > On Fri, Aug 23, 2019 at 11:42:28AM +0200, megous@megous.com wrote: > > From: Ondrej Jirman <megous@megous.com> > > > > Orange Pi 3 has AP6256 WiFi/BT module. WiFi part of the module is called > > bcm43356 and can be used with the brcmfmac driver. The module is powered by > > the two always on regulators (not AXP805). > > > > WiFi uses a PG port with 1.8V voltage level signals. SoC needs to be > > configured so that it sets up an 1.8V input bias on this port. This is done > > by the pio driver by reading the vcc-pg-supply voltage. > > > > You'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt > > configuration that can be found in the Xulongs's repository for H6: > > > > https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256 > > > > Mainline brcmfmac driver expects the firmware and nvram at the following > > paths relative to the firmware directory: > > > > brcm/brcmfmac43456-sdio.bin > > brcm/brcmfmac43456-sdio.txt > > > > Signed-off-by: Ondrej Jirman <megous@megous.com> > > --- > > > > Since RTC patches for H6 were merged, this can now go in too, if it looks ok. > > > > Other patches for this WiFi chip support were merged in previous cycles, > > so this just needs enabling in DTS now. > > > > Sorry for the links in the commit log, but this information is useful, > > even if the link itself goes bad. Any pointer what to google for > > (file names, tree name) is great for anyone searching in the future. > > I understand, but this should (also?) be in the wiki. Please add it > there too. > > > Please take a look. > > > > Thank you, > > Ondrej > > > > .../dts/allwinner/sun50i-h6-orangepi-3.dts | 48 +++++++++++++++++++ > > 1 file changed, 48 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > index eda9d5f640b9..49d954369087 100644 > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > @@ -56,6 +56,34 @@ > > regulator-max-microvolt = <5000000>; > > regulator-always-on; > > }; > > + > > + reg_vcc33_wifi: vcc33-wifi { > > + /* Always on 3.3V regulator for WiFi and BT */ > > + compatible = "regulator-fixed"; > > + regulator-name = "vcc33-wifi"; > > + regulator-min-microvolt = <3300000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-always-on; > > + vin-supply = <®_vcc5v>; > > + }; > > + > > + reg_vcc_wifi_io: vcc-wifi-io { > > + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ > > + compatible = "regulator-fixed"; > > + regulator-name = "vcc-wifi-io"; > > + regulator-min-microvolt = <1800000>; > > + regulator-max-microvolt = <1800000>; > > + regulator-always-on; > > + vin-supply = <®_vcc33_wifi>; > > + }; > > + > > + wifi_pwrseq: wifi_pwrseq { IIRC we shouldn't use underscores in node names. Maxime can you fix that up? ChenYu > > + compatible = "mmc-pwrseq-simple"; > > + clocks = <&rtc 1>; > > + clock-names = "ext_clock"; > > + reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ > > + post-power-on-delay-ms = <200>; > > + }; > > }; > > > > &cpu0 { > > @@ -91,6 +119,25 @@ > > status = "okay"; > > }; > > > > +&mmc1 { > > + pinctrl-names = "default"; > > + pinctrl-0 = <&mmc1_pins>; > > This is the default already. I've removed it and applied. > > Maxime > > -- > Maxime Ripard, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com
Hello Maxime, On Fri, Aug 23, 2019 at 12:08:07PM +0200, Maxime Ripard wrote: > Hi, > > On Fri, Aug 23, 2019 at 11:42:28AM +0200, megous@megous.com wrote: > > From: Ondrej Jirman <megous@megous.com> > > > > Orange Pi 3 has AP6256 WiFi/BT module. WiFi part of the module is called > > bcm43356 and can be used with the brcmfmac driver. The module is powered by > > the two always on regulators (not AXP805). > > > > WiFi uses a PG port with 1.8V voltage level signals. SoC needs to be > > configured so that it sets up an 1.8V input bias on this port. This is done > > by the pio driver by reading the vcc-pg-supply voltage. > > > > You'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt > > configuration that can be found in the Xulongs's repository for H6: > > > > https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256 > > > > Mainline brcmfmac driver expects the firmware and nvram at the following > > paths relative to the firmware directory: > > > > brcm/brcmfmac43456-sdio.bin > > brcm/brcmfmac43456-sdio.txt > > > > Signed-off-by: Ondrej Jirman <megous@megous.com> > > --- > > > > Since RTC patches for H6 were merged, this can now go in too, if it looks ok. > > > > Other patches for this WiFi chip support were merged in previous cycles, > > so this just needs enabling in DTS now. > > > > Sorry for the links in the commit log, but this information is useful, > > even if the link itself goes bad. Any pointer what to google for > > (file names, tree name) is great for anyone searching in the future. > > I understand, but this should (also?) be in the wiki. Please add it > there too. Added. Thank you. http://linux-sunxi.org/Xunlong_Orange_Pi_3#Firmware_files regards, Ondrej > > Please take a look. > > > > Thank you, > > Ondrej > > > > .../dts/allwinner/sun50i-h6-orangepi-3.dts | 48 +++++++++++++++++++ > > 1 file changed, 48 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > index eda9d5f640b9..49d954369087 100644 > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > @@ -56,6 +56,34 @@ > > regulator-max-microvolt = <5000000>; > > regulator-always-on; > > }; > > + > > + reg_vcc33_wifi: vcc33-wifi { > > + /* Always on 3.3V regulator for WiFi and BT */ > > + compatible = "regulator-fixed"; > > + regulator-name = "vcc33-wifi"; > > + regulator-min-microvolt = <3300000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-always-on; > > + vin-supply = <®_vcc5v>; > > + }; > > + > > + reg_vcc_wifi_io: vcc-wifi-io { > > + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ > > + compatible = "regulator-fixed"; > > + regulator-name = "vcc-wifi-io"; > > + regulator-min-microvolt = <1800000>; > > + regulator-max-microvolt = <1800000>; > > + regulator-always-on; > > + vin-supply = <®_vcc33_wifi>; > > + }; > > + > > + wifi_pwrseq: wifi_pwrseq { > > + compatible = "mmc-pwrseq-simple"; > > + clocks = <&rtc 1>; > > + clock-names = "ext_clock"; > > + reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ > > + post-power-on-delay-ms = <200>; > > + }; > > }; > > > > &cpu0 { > > @@ -91,6 +119,25 @@ > > status = "okay"; > > }; > > > > +&mmc1 { > > + pinctrl-names = "default"; > > + pinctrl-0 = <&mmc1_pins>; > > This is the default already. I've removed it and applied. > > Maxime > > -- > Maxime Ripard, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Fri, Aug 23, 2019 at 06:10:30PM +0800, Chen-Yu Tsai wrote: > On Fri, Aug 23, 2019 at 6:08 PM Maxime Ripard <mripard@kernel.org> wrote: > > > > Hi, > > > > On Fri, Aug 23, 2019 at 11:42:28AM +0200, megous@megous.com wrote: > > > From: Ondrej Jirman <megous@megous.com> > > > > > > Orange Pi 3 has AP6256 WiFi/BT module. WiFi part of the module is called > > > bcm43356 and can be used with the brcmfmac driver. The module is powered by > > > the two always on regulators (not AXP805). > > > > > > WiFi uses a PG port with 1.8V voltage level signals. SoC needs to be > > > configured so that it sets up an 1.8V input bias on this port. This is done > > > by the pio driver by reading the vcc-pg-supply voltage. > > > > > > You'll need a fw_bcm43456c5_ag.bin firmware file and nvram.txt > > > configuration that can be found in the Xulongs's repository for H6: > > > > > > https://github.com/orangepi-xunlong/OrangePiH6_external/tree/master/ap6256 > > > > > > Mainline brcmfmac driver expects the firmware and nvram at the following > > > paths relative to the firmware directory: > > > > > > brcm/brcmfmac43456-sdio.bin > > > brcm/brcmfmac43456-sdio.txt > > > > > > Signed-off-by: Ondrej Jirman <megous@megous.com> > > > --- > > > > > > Since RTC patches for H6 were merged, this can now go in too, if it looks ok. > > > > > > Other patches for this WiFi chip support were merged in previous cycles, > > > so this just needs enabling in DTS now. > > > > > > Sorry for the links in the commit log, but this information is useful, > > > even if the link itself goes bad. Any pointer what to google for > > > (file names, tree name) is great for anyone searching in the future. > > > > I understand, but this should (also?) be in the wiki. Please add it > > there too. > > > > > Please take a look. > > > > > > Thank you, > > > Ondrej > > > > > > .../dts/allwinner/sun50i-h6-orangepi-3.dts | 48 +++++++++++++++++++ > > > 1 file changed, 48 insertions(+) > > > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > > index eda9d5f640b9..49d954369087 100644 > > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts > > > @@ -56,6 +56,34 @@ > > > regulator-max-microvolt = <5000000>; > > > regulator-always-on; > > > }; > > > + > > > + reg_vcc33_wifi: vcc33-wifi { > > > + /* Always on 3.3V regulator for WiFi and BT */ > > > + compatible = "regulator-fixed"; > > > + regulator-name = "vcc33-wifi"; > > > + regulator-min-microvolt = <3300000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-always-on; > > > + vin-supply = <®_vcc5v>; > > > + }; > > > + > > > + reg_vcc_wifi_io: vcc-wifi-io { > > > + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ > > > + compatible = "regulator-fixed"; > > > + regulator-name = "vcc-wifi-io"; > > > + regulator-min-microvolt = <1800000>; > > > + regulator-max-microvolt = <1800000>; > > > + regulator-always-on; > > > + vin-supply = <®_vcc33_wifi>; > > > + }; > > > + > > > + wifi_pwrseq: wifi_pwrseq { > > IIRC we shouldn't use underscores in node names. Maxime can you fix that up? Done, thanks! Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts index eda9d5f640b9..49d954369087 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts @@ -56,6 +56,34 @@ regulator-max-microvolt = <5000000>; regulator-always-on; }; + + reg_vcc33_wifi: vcc33-wifi { + /* Always on 3.3V regulator for WiFi and BT */ + compatible = "regulator-fixed"; + regulator-name = "vcc33-wifi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + vin-supply = <®_vcc5v>; + }; + + reg_vcc_wifi_io: vcc-wifi-io { + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ + compatible = "regulator-fixed"; + regulator-name = "vcc-wifi-io"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + vin-supply = <®_vcc33_wifi>; + }; + + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&rtc 1>; + clock-names = "ext_clock"; + reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ + post-power-on-delay-ms = <200>; + }; }; &cpu0 { @@ -91,6 +119,25 @@ status = "okay"; }; +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins>; + vmmc-supply = <®_vcc33_wifi>; + vqmmc-supply = <®_vcc_wifi_io>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + status = "okay"; + + brcm: sdio-wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; + interrupt-parent = <&r_pio>; + interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */ + interrupt-names = "host-wake"; + }; +}; + &ohci0 { status = "okay"; }; @@ -102,6 +149,7 @@ &pio { vcc-pc-supply = <®_bldo2>; vcc-pd-supply = <®_cldo1>; + vcc-pg-supply = <®_vcc_wifi_io>; }; &r_i2c {