323 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			323 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From a2e5abe104b6d593a1a0879b256a2c696acfac0e Mon Sep 17 00:00:00 2001
 | 
						|
From: Christian Hewitt <christianshewitt@gmail.com>
 | 
						|
Date: Wed, 24 Jun 2020 12:41:46 +0000
 | 
						|
Subject: [PATCH 73/88] arm64: dts: meson: add common SM1 ac2xx dtsi
 | 
						|
 | 
						|
Add a common dtsi for Android STB devices based on the Amlogic S905X3
 | 
						|
(AC213/AC214) and S905D3 (AC201/AC202) reference designs. The dtsi is
 | 
						|
loosely based on the existing SEI610 device-tree.
 | 
						|
 | 
						|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
 | 
						|
---
 | 
						|
 .../boot/dts/amlogic/meson-sm1-ac2xx.dtsi     | 298 ++++++++++++++++++
 | 
						|
 1 file changed, 298 insertions(+)
 | 
						|
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
 | 
						|
 | 
						|
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
 | 
						|
new file mode 100644
 | 
						|
index 000000000000..b3872983b5ce
 | 
						|
--- /dev/null
 | 
						|
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
 | 
						|
@@ -0,0 +1,298 @@
 | 
						|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 | 
						|
+/*
 | 
						|
+ * Copyright (c) 2019 BayLibre SAS. All rights reserved.
 | 
						|
+ * Copyright (c) 2020 Christian Hewitt <christianshewitt@gmail.com>
 | 
						|
+ *
 | 
						|
+ * AC200/AC202 = S905D3
 | 
						|
+ * AC213/AC214 = S905X3
 | 
						|
+ *
 | 
						|
+ */
 | 
						|
+
 | 
						|
+#include "meson-sm1.dtsi"
 | 
						|
+#include <dt-bindings/gpio/gpio.h>
 | 
						|
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
 | 
						|
+#include <dt-bindings/input/input.h>
 | 
						|
+
 | 
						|
+/ {
 | 
						|
+	aliases {
 | 
						|
+		serial0 = &uart_AO;
 | 
						|
+		ethernet0 = ðmac;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	chosen {
 | 
						|
+		stdout-path = "serial0:115200n8";
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	emmc_pwrseq: emmc-pwrseq {
 | 
						|
+		compatible = "mmc-pwrseq-emmc";
 | 
						|
+		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	cvbs-connector {
 | 
						|
+		compatible = "composite-video-connector";
 | 
						|
+
 | 
						|
+		port {
 | 
						|
+			cvbs_connector_in: endpoint {
 | 
						|
+				remote-endpoint = <&cvbs_vdac_out>;
 | 
						|
+			};
 | 
						|
+		};
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	hdmi-connector {
 | 
						|
+		compatible = "hdmi-connector";
 | 
						|
+		type = "a";
 | 
						|
+
 | 
						|
+		port {
 | 
						|
+			hdmi_connector_in: endpoint {
 | 
						|
+				remote-endpoint = <&hdmi_tx_tmds_out>;
 | 
						|
+			};
 | 
						|
+		};
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	memory@0 {
 | 
						|
+		device_type = "memory";
 | 
						|
+		reg = <0x0 0x0 0x0 0x40000000>;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	ao_5v: regulator-ao_5v {
 | 
						|
+		compatible = "regulator-fixed";
 | 
						|
+		regulator-name = "AO_5V";
 | 
						|
+		regulator-min-microvolt = <5000000>;
 | 
						|
+		regulator-max-microvolt = <5000000>;
 | 
						|
+		vin-supply = <&dc_in>;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	dc_in: regulator-dc_in {
 | 
						|
+		compatible = "regulator-fixed";
 | 
						|
+		regulator-name = "DC_IN";
 | 
						|
+		regulator-min-microvolt = <5000000>;
 | 
						|
+		regulator-max-microvolt = <5000000>;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	emmc_1v8: regulator-emmc_1v8 {
 | 
						|
+		compatible = "regulator-fixed";
 | 
						|
+		regulator-name = "EMMC_1V8";
 | 
						|
+		regulator-min-microvolt = <1800000>;
 | 
						|
+		regulator-max-microvolt = <1800000>;
 | 
						|
+		vin-supply = <&vddao_3v3>;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	vddao_3v3: regulator-vddao_3v3 {
 | 
						|
+		compatible = "regulator-fixed";
 | 
						|
+		regulator-name = "VDDAO_3V3";
 | 
						|
+		regulator-min-microvolt = <3300000>;
 | 
						|
+		regulator-max-microvolt = <3300000>;
 | 
						|
+		vin-supply = <&dc_in>;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	vddcpu: regulator-vddcpu {
 | 
						|
+		compatible = "pwm-regulator";
 | 
						|
+
 | 
						|
+		regulator-name = "VDDCPU";
 | 
						|
+		regulator-min-microvolt = <690000>;
 | 
						|
+		regulator-max-microvolt = <1050000>;
 | 
						|
+
 | 
						|
+		vin-supply = <&dc_in>;
 | 
						|
+
 | 
						|
+		pwms = <&pwm_AO_cd 1 1500 0>;
 | 
						|
+		pwm-dutycycle-range = <100 0>;
 | 
						|
+
 | 
						|
+		regulator-boot-on;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	vddio_ao1v8: regulator-vddio_ao1v8 {
 | 
						|
+		compatible = "regulator-fixed";
 | 
						|
+		regulator-name = "VDDIO_AO1V8";
 | 
						|
+		regulator-min-microvolt = <1800000>;
 | 
						|
+		regulator-max-microvolt = <1800000>;
 | 
						|
+		vin-supply = <&vddao_3v3>;
 | 
						|
+		regulator-always-on;
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	sdio_pwrseq: sdio-pwrseq {
 | 
						|
+		compatible = "mmc-pwrseq-simple";
 | 
						|
+		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
 | 
						|
+		clocks = <&wifi32k>;
 | 
						|
+		clock-names = "ext_clock";
 | 
						|
+	};
 | 
						|
+
 | 
						|
+	wifi32k: wifi32k {
 | 
						|
+		compatible = "pwm-clock";
 | 
						|
+		#clock-cells = <0>;
 | 
						|
+		clock-frequency = <32768>;
 | 
						|
+		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
 | 
						|
+	};
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cec_AO {
 | 
						|
+	pinctrl-0 = <&cec_ao_a_h_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+	status = "disabled";
 | 
						|
+	hdmi-phandle = <&hdmi_tx>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cecb_AO {
 | 
						|
+	pinctrl-0 = <&cec_ao_b_h_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+	status = "okay";
 | 
						|
+	hdmi-phandle = <&hdmi_tx>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cpu0 {
 | 
						|
+	cpu-supply = <&vddcpu>;
 | 
						|
+	operating-points-v2 = <&cpu_opp_table>;
 | 
						|
+	clocks = <&clkc CLKID_CPU_CLK>;
 | 
						|
+	clock-latency = <50000>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cpu1 {
 | 
						|
+	cpu-supply = <&vddcpu>;
 | 
						|
+	operating-points-v2 = <&cpu_opp_table>;
 | 
						|
+	clocks = <&clkc CLKID_CPU1_CLK>;
 | 
						|
+	clock-latency = <50000>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cpu2 {
 | 
						|
+	cpu-supply = <&vddcpu>;
 | 
						|
+	operating-points-v2 = <&cpu_opp_table>;
 | 
						|
+	clocks = <&clkc CLKID_CPU2_CLK>;
 | 
						|
+	clock-latency = <50000>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cpu3 {
 | 
						|
+	cpu-supply = <&vddcpu>;
 | 
						|
+	operating-points-v2 = <&cpu_opp_table>;
 | 
						|
+	clocks = <&clkc CLKID_CPU3_CLK>;
 | 
						|
+	clock-latency = <50000>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&cvbs_vdac_port {
 | 
						|
+	cvbs_vdac_out: endpoint {
 | 
						|
+		remote-endpoint = <&cvbs_connector_in>;
 | 
						|
+	};
 | 
						|
+};
 | 
						|
+
 | 
						|
+&hdmi_tx {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&hdmi_tx_tmds_port {
 | 
						|
+	hdmi_tx_tmds_out: endpoint {
 | 
						|
+		remote-endpoint = <&hdmi_connector_in>;
 | 
						|
+	};
 | 
						|
+};
 | 
						|
+
 | 
						|
+&ir {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&remote_input_ao_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&pwm_AO_ab {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&pwm_ao_a_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+	clocks = <&xtal>;
 | 
						|
+	clock-names = "clkin0";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&pwm_AO_cd {
 | 
						|
+	pinctrl-0 = <&pwm_ao_d_e_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+	clocks = <&xtal>;
 | 
						|
+	clock-names = "clkin1";
 | 
						|
+	status = "okay";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&pwm_ef {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&pwm_e_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+	clocks = <&xtal>;
 | 
						|
+	clock-names = "clkin0";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&saradc {
 | 
						|
+	status = "okay";
 | 
						|
+	vref-supply = <&vddio_ao1v8>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+/* SDIO */
 | 
						|
+&sd_emmc_a {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&sdio_pins>;
 | 
						|
+	pinctrl-1 = <&sdio_clk_gate_pins>;
 | 
						|
+	pinctrl-names = "default", "clk-gate";
 | 
						|
+	#address-cells = <1>;
 | 
						|
+	#size-cells = <0>;
 | 
						|
+
 | 
						|
+	bus-width = <4>;
 | 
						|
+	cap-sd-highspeed;
 | 
						|
+	max-frequency = <100000000>;
 | 
						|
+
 | 
						|
+	non-removable;
 | 
						|
+	disable-wp;
 | 
						|
+
 | 
						|
+	/* WiFi firmware requires power to be kept while in suspend */
 | 
						|
+	keep-power-in-suspend;
 | 
						|
+
 | 
						|
+	mmc-pwrseq = <&sdio_pwrseq>;
 | 
						|
+
 | 
						|
+	vmmc-supply = <&vddao_3v3>;
 | 
						|
+	vqmmc-supply = <&vddio_ao1v8>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+/* SD card */
 | 
						|
+&sd_emmc_b {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&sdcard_c_pins>;
 | 
						|
+	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
 | 
						|
+	pinctrl-names = "default", "clk-gate";
 | 
						|
+
 | 
						|
+	bus-width = <4>;
 | 
						|
+	cap-sd-highspeed;
 | 
						|
+	max-frequency = <50000000>;
 | 
						|
+	disable-wp;
 | 
						|
+
 | 
						|
+	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
 | 
						|
+	vmmc-supply = <&vddao_3v3>;
 | 
						|
+	vqmmc-supply = <&vddao_3v3>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+/* eMMC */
 | 
						|
+&sd_emmc_c {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
 | 
						|
+	pinctrl-1 = <&emmc_clk_gate_pins>;
 | 
						|
+	pinctrl-names = "default", "clk-gate";
 | 
						|
+
 | 
						|
+	bus-width = <8>;
 | 
						|
+	cap-mmc-highspeed;
 | 
						|
+	mmc-ddr-1_8v;
 | 
						|
+	mmc-hs200-1_8v;
 | 
						|
+	max-frequency = <200000000>;
 | 
						|
+	non-removable;
 | 
						|
+	disable-wp;
 | 
						|
+
 | 
						|
+	mmc-pwrseq = <&emmc_pwrseq>;
 | 
						|
+	vmmc-supply = <&vddao_3v3>;
 | 
						|
+	vqmmc-supply = <&emmc_1v8>;
 | 
						|
+};
 | 
						|
+
 | 
						|
+&uart_AO {
 | 
						|
+	status = "okay";
 | 
						|
+	pinctrl-0 = <&uart_ao_a_pins>;
 | 
						|
+	pinctrl-names = "default";
 | 
						|
+};
 | 
						|
+
 | 
						|
+&usb {
 | 
						|
+	status = "okay";
 | 
						|
+	dr_mode = "otg";
 | 
						|
+};
 | 
						|
-- 
 | 
						|
2.17.1
 | 
						|
 |