arm64: dts: allwinner: h616: Add BigTreeTech CB1 SoM & boards support
authorMartin Botka <martin.botka@somainline.org>
Tue, 12 Sep 2023 11:20:49 +0000 (13:20 +0200)
committerJernej Skrabec <jernej.skrabec@gmail.com>
Sun, 24 Sep 2023 19:58:21 +0000 (21:58 +0200)
CB1 is Compute Module style board that plugs into Rpi board style adapter or
Manta 3D printer boards (M4P/M8P).

The SoM features:
  - H616 SoC
  - 1GiB of RAM
  - AXP313A PMIC
  - RTL8189FTV WiFi

Boards feature:
  - 4x USB via USB2 hub (usb1 on SoM).
  - SDcard slot for loading images.
  - Ethernet port wired to the internal PHY. (100M)
  - 2x HDMI 2.0. (Only 1 usable on CB1)
  - Power and Status LEDs. (Only Status LED usable on CB1)
  - 40 pin GPIO header

Currently working:
  - Booting
  - USB
  - UART
  - MMC
  - Status LED
  - WiFi (RTL8189FS via out of tree driver)

I didnt want to duplicate things so the manta DTS can also be used on BTT pi4b adapter.
CB1 SoM has its own DTSI file in case other boards shows up that accept this SoM.

Signed-off-by: Martin Botka <martin.botka@somainline.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20230912-b4-cb1-v6-3-bb11238f3a9c@somainline.org
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
arch/arm64/boot/dts/allwinner/Makefile
arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-manta.dts [new file with mode: 0644]
arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi [new file with mode: 0644]

index 3b0ad5406238176ef62255c641f0028633cb6627..42e525b9d4b97600ac158cc471f59027ce43beb2 100644 (file)
@@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-cb1-manta.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-manta.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-manta.dts
new file mode 100644 (file)
index 0000000..dbce61b
--- /dev/null
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+/*
+ * Copyright (C) 2023 Martin Botka <martin.botka@somainline.org>.
+ */
+
+/dts-v1/;
+
+#include "sun50i-h616-bigtreetech-cb1.dtsi"
+
+/ {
+       model = "BigTreeTech CB1";
+       compatible = "bigtreetech,cb1-manta", "bigtreetech,cb1", "allwinner,sun50i-h616";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_ph_pins>;
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi
new file mode 100644 (file)
index 0000000..1fed2b4
--- /dev/null
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+/*
+ * Copyright (C) 2023 Martin Botka <martin.botka@somainline.org>.
+ */
+
+/dts-v1/;
+
+#include "sun50i-h616.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       aliases {
+               ethernet0 = &rtl8189ftv;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+               };
+       };
+
+       reg_vcc5v: regulator-vcc5v {
+               /* board wide 5V supply from carrier boards */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_vcc33_wifi: vcc33-wifi {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc33-wifi";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               vin-supply = <&reg_vcc5v>;
+       };
+
+       reg_vcc_wifi_io: vcc-wifi-io {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-wifi-io";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               vin-supply = <&reg_vcc33_wifi>;
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rtc 1>;
+               clock-names = "ext_clock";
+               reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
+               post-power-on-delay-ms = <200>;
+       };
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_dldo1>;
+       /* Card detection pin is not connected */
+       broken-cd;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&mmc1 {
+       vmmc-supply = <&reg_vcc33_wifi>;
+       vqmmc-supply = <&reg_vcc_wifi_io>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       bus-width = <4>;
+       non-removable;
+       mmc-ddr-1_8v;
+       status = "okay";
+
+       rtl8189ftv: wifi@1 {
+               reg = <1>;
+       };
+};
+
+&r_i2c {
+       status = "okay";
+
+       axp313a: pmic@36 {
+               compatible = "x-powers,axp313a";
+               reg = <0x36>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+
+               regulators{
+                       reg_dcdc1: dcdc1 {
+                               regulator-name = "vdd-gpu-sys";
+                               regulator-min-microvolt = <810000>;
+                               regulator-max-microvolt = <990000>;
+                               regulator-always-on;
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-name = "vdd-cpu";
+                               regulator-min-microvolt = <810000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-ramp-delay = <200>;
+                               regulator-always-on;
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-name = "vcc-dram";
+                               regulator-min-microvolt = <1350000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-always-on;
+                       };
+
+                       reg_aldo1: aldo1 {
+                               regulator-name = "vcc-1v8-pll";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       reg_dldo1: dldo1 {
+                               regulator-name = "vcc-3v3-io";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&usbphy {
+       status = "okay";
+};