Re: [PATCH] arm64: dts: rockchip: Add on-board WiFi/BT support for Rock960 boards

From: Heiko Stübner
Date: Mon Feb 11 2019 - 07:33:21 EST


Am Montag, 11. Februar 2019, 12:31:28 CET schrieb Manivannan Sadhasivam:
> Hi Peter,
>
> On Fri, Feb 08, 2019 at 04:45:01PM +0000, Peter Robinson wrote:
> > Hi Mani,
> >
> > On Thu, Feb 7, 2019 at 5:54 AM Manivannan Sadhasivam
> >
> > <manivannan.sadhasivam@xxxxxxxxxx> wrote:
> > > Add on-board WiFi/BT support for Rock960 boards such as Rock960 based
> > > on AP6356S and Ficus based on AP6354 wireless modules.
> > >
> > > Firmwares for the respective boards are available here:
> > >
> > > http://people.linaro.org/~manivannan.sadhasivam/rock960_wifi/
> > > http://people.linaro.org/~manivannan.sadhasivam/ficus_wifi/
> > >
> > > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
> >
> > There's some warnings on building these I noticed in testing this on
Fedora:
> > DTC arch/arm64/boot/dts/rockchip/rk3399-ficus.dtb
> >
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:490.3-13: Warning
> > (reg_format): /dwmmc@fe310000/wifi@1:reg: property has invalid length
> > (4 bytes) (#address-cells == 2, #size-cells == 1)
> > arch/arm64/boot/dts/rockchip/rk3399-ficus.dtb: Warning
> > (pci_device_bus_num): Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-ficus.dtb: Warning (i2c_bus_reg):
> > Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-ficus.dtb: Warning (spi_bus_reg):
> > Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:488.16-496.4: Warning
> > (avoid_default_addr_size): /dwmmc@fe310000/wifi@1: Relying on default
> > #address-cells value
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:488.16-496.4: Warning
> > (avoid_default_addr_size): /dwmmc@fe310000/wifi@1: Relying on default
> > #size-cells value
> >
> > DTC arch/arm64/boot/dts/rockchip/rk3399-rock960.dtb
> >
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:490.3-13: Warning
> > (reg_format): /dwmmc@fe310000/wifi@1:reg: property has invalid length
> > (4 bytes) (#address-cells == 2, #size-cells == 1)
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtb: Warning
> > (pci_device_bus_num): Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtb: Warning
> > (i2c_bus_reg): Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtb: Warning
> > (spi_bus_reg): Failed prerequisite 'reg_format'
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:488.16-496.4: Warning
> > (avoid_default_addr_size): /dwmmc@fe310000/wifi@1: Relying on default
> > #address-cells value
> > arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi:488.16-496.4: Warning
> > (avoid_default_addr_size): /dwmmc@fe310000/wifi@1: Relying on default
> > #size-cells value
>
> Hmm. Since the parent node "sdio0" is missing the address/size cells
> property, the default value has been used by the DTC. I think it would
> make sense to just drop the reg property from "wifi" node instead of
> modifying the parent "sdio0" node.
>
> If no one has any issue over this, I'll send out another revision with the
> reg property removed.

actually I do think you might just want to add address+size-cells
to your &sdio0 instance instead. Especially as I'm not sure that the
system will find the card-node when matching against the card itself
without the reg property?

The core sdio0 does not necessarily have subnodes, so I guess
the *-cells may just live in the board dts?


Heiko



> > > ---
> > >
> > > .../boot/dts/rockchip/rk3399-rock960.dtsi | 96 ++++++++++++++++++-
> > > 1 file changed, 95 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi
> > > b/arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi index
> > > 56abbb08c133..1b2f7cd82244 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi
> > > @@ -9,6 +9,15 @@
> > >
> > > #include "rk3399-opp.dtsi"
> > >
> > > / {
> > >
> > > + sdio_pwrseq: sdio-pwrseq {
> > > + compatible = "mmc-pwrseq-simple";
> > > + clocks = <&rk808 1>;
> > > + clock-names = "ext_clock";
> > > + pinctrl-names = "default";
> > > + pinctrl-0 = <&wifi_enable_h>;
> > > + reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
> > > + };
> > > +
> > >
> > > vcc1v8_s0: vcc1v8-s0 {
> > >
> > > compatible = "regulator-fixed";
> > > regulator-name = "vcc1v8_s0";
> > >
> > > @@ -362,6 +371,20 @@
> > >
> > > };
> > >
> > > &pinctrl {
> > >
> > > + bt {
> > > + bt_enable_h: bt-enable-h {
> > > + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO
> > > &pcfg_pull_none>; + };
> > > +
> > > + bt_host_wake_l: bt-host-wake-l {
> > > + rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO
> > > &pcfg_pull_none>; + };
> > > +
> > > + bt_wake_l: bt-wake-l {
> > > + rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO
> > > &pcfg_pull_none>; + };
> > > + };
> > > +
> > >
> > > sdmmc {
> > >
> > > sdmmc_bus1: sdmmc-bus1 {
> > >
> > > rockchip,pins =
> > >
> > > @@ -387,6 +410,26 @@
> > >
> > > };
> > >
> > > };
> > >
> > > + sdio0 {
> > > + sdio0_bus4: sdio0-bus4 {
> > > + rockchip,pins =
> > > + <2 20 RK_FUNC_1 &pcfg_pull_up_20ma>,
> > > + <2 21 RK_FUNC_1 &pcfg_pull_up_20ma>,
> > > + <2 22 RK_FUNC_1 &pcfg_pull_up_20ma>,
> > > + <2 23 RK_FUNC_1 &pcfg_pull_up_20ma>;
> > > + };
> > > +
> > > + sdio0_cmd: sdio0-cmd {
> > > + rockchip,pins =
> > > + <2 24 RK_FUNC_1 &pcfg_pull_up_20ma>;
> > > + };
> > > +
> > > + sdio0_clk: sdio0-clk {
> > > + rockchip,pins =
> > > + <2 25 RK_FUNC_1 &pcfg_pull_none_20ma>;
> > > + };
> > > + };
> > > +
> > >
> > > pmic {
> > >
> > > pmic_int_l: pmic-int-l {
> > >
> > > rockchip,pins =
> > >
> > > @@ -403,6 +446,19 @@
> > >
> > > <1 14 RK_FUNC_GPIO &pcfg_pull_down>;
> > >
> > > };
> > >
> > > };
> > >
> > > +
> > > + sdio-pwrseq {
> > > + wifi_enable_h: wifi-enable-h {
> > > + rockchip,pins =
> > > + <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
> > > + };
> > > + };
> > > +
> > > + wifi {
> > > + wifi_host_wake_l: wifi-host-wake-l {
> > > + rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO
> > > &pcfg_pull_none>; + };
> > > + };
> > >
> > > };
> > >
> > > &pwm2 {
> > >
> > > @@ -413,6 +469,33 @@
> > >
> > > status = "okay";
> > >
> > > };
> > >
> > > +&sdio0 {
> > > + clock-frequency = <50000000>;
> > > + bus-width = <4>;
> > > + cap-sdio-irq;
> > > + cap-sd-highspeed;
> > > + no-emmc;
> > > + keep-power-in-suspend;
> > > + mmc-pwrseq = <&sdio_pwrseq>;
> > > + non-removable;
> > > + num-slots = <1>;
> > > + pinctrl-names = "default";
> > > + pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
> > > + sd-uhs-sdr104;
> > > +
> > > + status = "okay";
> > > +
> > > + brcmf: wifi@1 {
> > > + compatible = "brcm,bcm4329-fmac";
> > > + reg = <1>;
> > > + interrupt-parent = <&gpio0>;
> > > + interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
> > > + interrupt-names = "host-wake";
> > > + pinctrl-names = "default";
> > > + pinctrl-0 = <&wifi_host_wake_l>;
> > > + };
> > > +};
> > > +
> > >
> > > &sdhci {
> > >
> > > bus-width = <8>;
> > > mmc-hs400-1_8v;
> > >
> > > @@ -439,8 +522,19 @@
> > >
> > > &uart0 {
> > >
> > > pinctrl-names = "default";
> > >
> > > - pinctrl-0 = <&uart0_xfer &uart0_cts>;
> > > + pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
> > >
> > > status = "okay";
> > >
> > > +
> > > + bluetooth {
> > > + compatible = "brcm,bcm43438-bt";
> > > + clocks = <&rk808 1>;
> > > + clock-names = "ext_clock";
> > > + device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
> > > + host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
> > > + shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
> > > + pinctrl-names = "default";
> > > + pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
> > > + };
> > >
> > > };
> > >
> > > &uart2 {
> > >
> > > --
> > > 2.17.1