jadonk / jadonk/whitherbone

Need to create device tree

Open
#14 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Seeed did most of this hack. I just added the WIFI LED.

This needs to be cleaned up.

```
From 6b8c1664318fc4ec7c0b2a9de9507e0a6be16978 Mon Sep 17 00:00:00 2001
From: Demo User
Date: Tue, 13 Nov 2018 04:41:26 +0000
Subject: [PATCH] Hack to enable Whitherbone

---
src/arm/BB-BBGW-WL1835-00A0.dts | 156 ++++++++++++++--------------------------
src/arm/BB-GREEN-HDMI-00A0.dts | 9 ++-
src/arm/BB-RELAY-4PORT-00A0.dts | 81 +++++++--------------
src/arm/whitherbone-leds.dts | 50 +++++++++++++
4 files changed, 134 insertions(+), 162 deletions(-)
create mode 100644 src/arm/whitherbone-leds.dts

diff --git a/src/arm/BB-BBGW-WL1835-00A0.dts b/src/arm/BB-BBGW-WL1835-00A0.dts
index e27759a..fede4f8 100644
--- a/src/arm/BB-BBGW-WL1835-00A0.dts
+++ b/src/arm/BB-BBGW-WL1835-00A0.dts
@@ -14,24 +14,37 @@
#include

/ {
- /*
- * Free up the pins used by the cape from the pinmux helpers.
- */
fragment@0 {
- target = <&ocp>;
+ target-path="/";
__overlay__ {
- P9_12_pinmux { status = "disabled"; }; /* gpmc_ad12.gpio1_28 BT_EN */
- P8_12_pinmux { status = "disabled"; }; /* gpmc_ad12.mmc2_dat0 */
- P8_11_pinmux { status = "disabled"; }; /* gpmc_ad13.mmc2_dat1 */
- P8_16_pinmux { status = "disabled"; }; /* gpmc_ad14.mmc2_dat2 */
- P8_15_pinmux { status = "disabled"; }; /* gpmc_ad15.mmc2_dat3 */
-
- P8_18_pinmux { status = "disabled"; }; /* gpmc_clk.mmc2_clk */
-
- //Audio...
- P9_28_pinmux { status = "disabled"; };
- P9_29_pinmux { status = "disabled"; };
- P9_31_pinmux { status = "disabled"; };
+ model = "TI AM335x BeagleBone Green Wireless";
+ compatible = "ti,am335x-bone-green-wireless", "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
+
+
+ wlan_en_reg: fixedregulator@2 {
+ compatible = "regulator-fixed";
+ regulator-name = "wlan-en-regulator";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ startup-delay-us= <70000>;
+
+
+ gpio = <&gpio3 9 0>;
+ enable-active-high;
+ };
+
+ leds {
+ pinctrl-names = "default";
+ pinctrl-0 = <&wl18xx_pins>;
+ compatible = "gpio-leds";
+
+ wl18xx_bt_en {
+ label = "wl18xx_bt_en";
+ gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
+ default-state = "off";
+ };
+
+ };
};
};

@@ -40,45 +53,47 @@
__overlay__ {
wl18xx_pins: pinmux_wl18xx_pins {
pinctrl-single,pins = <
- AM33XX_IOPAD(0x878, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_ad12.gpio1_28 BT_EN */
+ AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gmii1_txd0.gpio0_28 - BT_EN */
+ AM33XX_IOPAD(0x9b4, PIN_OUTPUT | MUX_MODE3) /* xdma_event_intr1.gpio0_20 */
>;
};

+
mmc3_pins: pinmux_mmc3_pins {
pinctrl-single,pins = <
- AM33XX_IOPAD(0x830, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad12.mmc2_dat0 */
- AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad13.mmc2_dat1 */
- AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad14.mmc2_dat2 */
- AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad15.mmc2_dat3 */
- AM33XX_IOPAD(0x888, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_csn3.mmc2_cmd */
- AM33XX_IOPAD(0x88c, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_clk.mmc2_clk */
+ AM33XX_IOPAD(0x93c, PIN_INPUT_PULLUP | MUX_MODE6 ) /* (L15) gmii1_rxd1.mmc2_clk */
+ AM33XX_IOPAD(0x914, PIN_INPUT_PULLUP | MUX_MODE6 ) /* (J16) gmii1_txen.mmc2_cmd */
+ AM33XX_IOPAD(0x918, PIN_INPUT_PULLUP | MUX_MODE5 ) /* (J17) gmii1_rxdv.mmc2_dat0 */
+ AM33XX_IOPAD(0x91c, PIN_INPUT_PULLUP | MUX_MODE5 ) /* (J18) gmii1_txd3.mmc2_dat1 */
+ AM33XX_IOPAD(0x920, PIN_INPUT_PULLUP | MUX_MODE5 ) /* (K15) gmii1_txd2.mmc2_dat2 */
+ AM33XX_IOPAD(0x908, PIN_INPUT_PULLUP | MUX_MODE5 ) /* (H16) gmii1_col.mmc2_dat3 */
>;
};

mmc3_pins_sleep: pinmux_mmc3_pins_sleep {
pinctrl-single,pins = <
- AM33XX_IOPAD(0x830, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_ad12.mmc2_dat0 */
- AM33XX_IOPAD(0x834, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_ad13.mmc2_dat1 */
- AM33XX_IOPAD(0x838, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_ad14.mmc2_dat2 */
- AM33XX_IOPAD(0x83c, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_ad15.mmc2_dat3 */
- AM33XX_IOPAD(0x888, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_csn3.mmc2_cmd */
- AM33XX_IOPAD(0x88c, PIN_INPUT_PULLDOWN | MUX_MODE3) /* gpmc_clk.mmc2_clk */
+ AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE6 ) /* (L15) gmii1_rxd1.mmc2_clk */
+ AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE6 ) /* (J16) gmii1_txen.mmc2_cmd */
+ AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE5 ) /* (J17) gmii1_rxdv.mmc2_dat0 */
+ AM33XX_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE5 ) /* (J18) gmii1_txd3.mmc2_dat1 */
+ AM33XX_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE5 ) /* (K15) gmii1_txd2.mmc2_dat2 */
+ AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE5 ) /* (H16) gmii1_col.mmc2_dat3 */
>;
};

/* wl18xx card enable/irq GPIOs. */
wlan_pins: pinmux_wlan_pins {
pinctrl-single,pins = <
- AM33XX_IOPAD(0x828, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad10.gpio0_26 WL_EN */
- AM33XX_IOPAD(0x82C, PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad11.gpio0_27 WL_IRQ */
+ AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gmii1_txclk.gpio3_9 WL_EN */
+ AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7) /* rmii1_refclk.gpio0_21 WL_IRQ */
>;
};

/* wl18xx card enable/irq GPIOs. */
wlan_pins_sleep: pinmux_wlan_pins_sleep {
pinctrl-single,pins = <
- AM33XX_IOPAD(0x828, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad10.gpio0_26 WL_EN */
- AM33XX_IOPAD(0x82C, PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad11.gpio0_27 WL_IRQ */
+ AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gmii1_txclk.gpio3_9 WL_EN */
+ AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7) /* rmii1_refclk.gpio0_21 WL_IRQ */
>;
};

@@ -103,60 +118,28 @@
};

fragment@2 {
- target-path="/";
- __overlay__ {
- model = "TI AM335x BeagleBone Green Wireless";
- compatible = "ti,am335x-bone-green-wireless", "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
-
- wlan_en_reg: fixedregulator@2 {
- compatible = "regulator-fixed";
- regulator-name = "wlan-en-regulator";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- startup-delay-us= <70000>;
-
- /* WL_EN */
- gpio = <&gpio0 26 0>;
- enable-active-high;
- };
-
- leds {
- pinctrl-names = "default";
- pinctrl-0 = <&wl18xx_pins>;
- compatible = "gpio-leds";
-
- wl18xx_bt_en {
- label = "wl18xx_bt_en";
- gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
- default-state = "off";
- };
- };
- };
- };
-
- fragment@3 {
target = <&mac>;
__overlay__ {
status = "disabled";
};
};

- fragment@4 {
+ fragment@3 {
target = <&mmc3>;
__overlay__ {
dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>;
dma-names = "tx", "rx";
status = "okay";
- vmmc-supply = <&wlan_en_reg>;
+ vmmc-supply = <&wlan_en_reg>;
bus-width = <4>;
non-removable;
cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend;
- pinctrl-names = "default", "sleep";
+ pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlan_pins>;
- pinctrl-1 = <&mmc3_pins_sleep &wlan_pins_sleep>;
+ /* pinctrl-1 = <&mmc3_pins_sleep &wlan_pins_sleep>;*/

#address-cells = <1>;
#size-cells = <0>;
@@ -164,12 +147,12 @@
compatible = "ti,wl1835";
reg = <2>;
interrupt-parent = <&gpio0>;
- interrupts = <27 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <21 IRQ_TYPE_EDGE_RISING>;
};
};
};

- fragment@5 {
+ fragment@4 {
target = <&uart3>;
__overlay__ {
pinctrl-names = "default", "sleep";
@@ -179,35 +162,4 @@
};
};

- fragment@6 {
- target = <&gpio1>;
- __overlay__ {
- ls_buf_en {
- gpio-hog;
- gpios = <29 GPIO_ACTIVE_HIGH>;
- output-high;
- line-name = "LS_BUF_EN";
- };
- };
- };
-
-/* BT_AUD_OUT from wl1835 has to be pulled low when WL_EN is activated.*/
-/* in case it isn't, wilink8 ends up in one of the test modes that */
-/* intruces various issues (elp wkaeup timeouts etc.) */
-/* On the BBGW this pin is routed through the level shifter (U21) that */
-/* introduces a pullup on the line and wilink8 ends up in a bad state. */
-/* use a gpio hog to force this pin low. An alternative may be adding */
-/* an external pulldown on U21 pin 4. */
-
- fragment@7 {
- target = <&gpio3>;
- __overlay__ {
- bt_aud_in {
- gpio-hog;
- gpios = <16 GPIO_ACTIVE_HIGH>;
- output-low;
- line-name = "MCASP0_AHCLKR";
- };
- };
- };
};
diff --git a/src/arm/BB-GREEN-HDMI-00A0.dts b/src/arm/BB-GREEN-HDMI-00A0.dts
index c7f605e..cab7460 100644
--- a/src/arm/BB-GREEN-HDMI-00A0.dts
+++ b/src/arm/BB-GREEN-HDMI-00A0.dts
@@ -25,7 +25,6 @@
/* the display pin header uses */
"P8.7", /* hdmi nrst: gpio2_2 */
"P8.8", /* hdmi en: gpio2_3 */
- "P8.10", /* hdmi int: gpio2_4 */
"P8.45", /* lcd: lcd_data0 */
"P8.46", /* lcd: lcd_data1 */
"P8.43", /* lcd: lcd_data2 */
@@ -56,6 +55,7 @@
/* the hardware IP uses */
"gpio2_2",
"gpio1_27",
+ "gpio1_25",
"gpio2_3",
"gpio2_4",
"mcasp0",
@@ -69,7 +69,6 @@
__overlay__ {
P8_07_pinmux { status = "disabled"; }; /* P8_07: gpio2_2, OUTPUT | MODE7 */
P8_08_pinmux { status = "disabled"; }; /* P8_08: gpio2_3, OUTPUT | MODE7 */
- P8_10_pinmux { status = "disabled"; }; /* P8_10: gpio2_4, INTPUT | MODE7 */

P8_45_pinmux { status = "disabled"; }; /* P8_45: lcd_data0.lcd_data0 */
P8_46_pinmux { status = "disabled"; }; /* P8_46: lcd_data1.lcd_data1 */
@@ -108,7 +107,7 @@

BONE_P8_07 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P8_07: gpio2_2, OUTPUT | MODE7 */
BONE_P8_08 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P8_08: gpio2_3, OUTPUT | MODE7 */
- BONE_P8_10 (PIN_INPUT | MUX_MODE7) /* P8_10: gpio2_4, INTPUT | MODE7 */
+ AM33XX_IOPAD(0x0864, PIN_INPUT | MUX_MODE7)

BONE_P8_45 (PIN_OUTPUT | MUX_MODE0) /* P8_45: lcd_data0.lcd_data0 */
BONE_P8_46 (PIN_OUTPUT | MUX_MODE0) /* P8_46: lcd_data1.lcd_data1 */
@@ -159,8 +158,8 @@

#sound-dai-cells = <0>;

- interrupt-parent = <&gpio2>;
- interrupts = <4 1>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <25 1>;
ports {
port@0 {
hdmi_0: endpoint@0 {
diff --git a/src/arm/BB-RELAY-4PORT-00A0.dts b/src/arm/BB-RELAY-4PORT-00A0.dts
index c5c88a5..6fd2694 100644
--- a/src/arm/BB-RELAY-4PORT-00A0.dts
+++ b/src/arm/BB-RELAY-4PORT-00A0.dts
@@ -14,56 +14,45 @@
#include

/ {
- compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green";
+ model = "TI AM335x BeagleBone Green Wireless";
+ compatible = "ti,am335x-bone-green-wireless", "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
+
+ /* identification */
+ part-number = "BB-RELAY-4PORT";
+ version = "00A0";

- /* identification */
- part-number = "BB-RELAY-4PORT";
- version = "00A0";
+ /* state the resources this cape uses */
+ exclusive-use =
+ /* the hardware ip uses */
+ "gpio0_21";

- /* state the resources this cape uses */
- exclusive-use =
- /* the pin header uses */
- "P9.15", /* gpio1_16 */
- "P9.23", /* gpio1_17 */
- "P9.12", /* gpio1_28 */
- "P9.27", /* gpio3_19 */
- /* the hardware ip uses */
- "gpio1_16",
- "gpio1_17",
- "gpio1_28",
- "gpio3_19";

- /*
- * Free up the pins used by the cape from the pinmux helpers.
- */
fragment@0 {
- target = <&ocp>;
- __overlay__ {
- P9_15_pinmux { status = "disabled"; }; /* P9_15: gpmc_a0.gpio1_16 */
- P9_23_pinmux { status = "disabled"; }; /* P9_23: gpmc_a1.gpio1_17 */
- P9_12_pinmux { status = "disabled"; }; /* P9_12: gpmc_be1n.gpio1_28 */
- P9_27_pinmux { status = "disabled"; }; /* P9_27: mcasp0_fsr.gpio3_19 */
-
- };
- };
-
- fragment@1 {
target = <&am33xx_pinmux>;
__overlay__ {

bb_gpio_relay_pins: pinmux_bb_gpio_relay_pins {
pinctrl-single,pins = <
- BONE_P9_15 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P9_15: gpmc_a0.gpio1_16 */
- BONE_P9_23 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P9_23: gpmc_a1.gpio1_17 */
- BONE_P9_12 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P9_12: gpmc_be1n.gpio1_28 */
- BONE_P9_27 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* P9_27: mcasp0_fsr.gpio3_19 */
+ AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLUP | MUX_MODE7) /* rmii1_refclk.gpio0_21 WL_IRQ */
+ AM33XX_IOPAD(0x93c, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (L15) gmii1_rxd1.mmc2_clk */
+ AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (J16) gmii1_txen.mmc2_cmd */
+ AM33XX_IOPAD(0x918, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (J17) gmii1_rxdv.mmc2_dat0 */
+ AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (J18) gmii1_txd3.mmc2_dat1 */
+ AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (K15) gmii1_txd2.mmc2_dat2 */
+ AM33XX_IOPAD(0x908, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (H16) gmii1_col.mmc2_dat3 */
>;
};

};
};
-
- fragment@2 {
+ fragment@2 {
+ target = <&mac>;
+ __overlay__ {
+ status = "disabled";
+ };
+ };
+
+ fragment@3 {
target-path="/";
__overlay__ {

@@ -75,25 +64,7 @@

jp@1 {
label = "relay-jp1";
- gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
- default-state = "keep";
- };
-
- jp@2 {
- label = "relay-jp2";
- gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
- default-state = "keep";
- };
-
- jp@3 {
- label = "relay-jp3";
- gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
- default-state = "keep";
- };
-
- jp@4 {
- label = "relay-jp4";
- gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
default-state = "keep";
};
};
diff --git a/src/arm/whitherbone-leds.dts b/src/arm/whitherbone-leds.dts
new file mode 100644
index 0000000..64fc2be
--- /dev/null
+++ b/src/arm/whitherbone-leds.dts
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 Texas Instruments
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+/plugin/;
+
+#include
+#include
+
+/ {
+ compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green";
+
+ // identification
+ part-number = "whitherbone-leds";
+
+#if 0
+ fragment@0 {
+ target = <&am33xx_pinmux>;
+ __overlay__ {
+ whitherbone_led_pins: pinmux_whitherbone_led_pins {
+ pinctrl-single,pins = <
+ AM33XX_IOPAD(0x090c, PIN_OUTPUT | MUX_MODE7) /* (H17) gmii1_crs.gpio3[1] - WIFI_LED */
+ >;
+ };
+ };
+ };
+#endif
+
+ fragment@1 {
+ target-path = "/";
+ __overlay__ {
+ whitherbone_leds {
+ //pinctrl-names = "default";
+ //pinctrl-0 = <&whitherbone_led_pins>;
+ compatible = "gpio-leds";
+
+ wifi_led {
+ label = "wifi";
+ gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+ default-state = "off";
+ linux,default-trigger = "phy0assoc";
+ };
+ };
+ };
+ };
+};
--
2.11.0
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the device-tree files under src/arm, especially BB-BBGW-WL1835-00A0.dts, whitherbone-leds.dts, BB-GREEN-HDMI-00A0.dts, and BB-RELAY-4PORT-00A0.dts, together with the embedded patch in this issue. Clarify the intended hardware configuration and cleanup scope before changing anything; done should mean the device-tree definitions are consistent and the WiFi LED remains represented.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.