Skip to contentSkip to conversation

ARM64: dts: meson-gxbb-vega-s95: Add SD/SDIO/MMC and PWM nodes

PATCH New Martin Blumenstingl 2 participants 2 messages Nov 12, 2016 – Nov 14, 2016

Subsystems (2)
lore
Share & tools
lore

Martin Blumenstingl

author reviewer
#0 lore raw

PATCH 1/1 ARM64: dts: meson-gxbb-vega-s95: Add SD/SDIO/MMC and PWM nodes

All boards from the Tronsmart Vega S95 series are sharing similar MMC based hardware.
sd_emmc_a is used to connect a Broadcom based SDIO wifi card (supported by the brcmfmac driver). The 32.768KHz LPO clock for the wifi chip is generated by PWM_E.
sd_emmc_b is routed to the SD-card. Unlike p20x there is no GPIO regulator, meaning it only supports 3.3V (which seems to be hard-wired). The eMMC chip is connected to sd_emmc_c and is implemented similar to the meson-gxbb-p20x boards (meaning that hard-wired fixed regulators are used).

---
 .../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi      | 104 +++++++++++++++++++++
 1 file changed, 104 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi +104 -0
index e93221a..e59ad30 100644
@@ -65,6 +65,39 @@
 		enable-active-high;
 	};
 
+	vcc_3v3: regulator-vcc_3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+	};
+
+	vcc_1v8: regulator-vcc_1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+	};
+
+	emmc_pwrseq: emmc-pwrseq {
+		compatible = "mmc-pwrseq-emmc";
+		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+	};
+
+	wifi32k: wifi32k {
+		compatible = "pwm-clock";
+		#clock-cells = <0>;
+		clock-frequency = <32768>;
+		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
+	};
+
+	sdio_pwrseq: sdio-pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>,
+				<&gpio GPIOX_20 GPIO_ACTIVE_LOW>;
+		clocks = <&wifi32k>;
+		clock-names = "ext_clock";
+	};
 };
 
 &uart_AO {
@@ -102,3 +135,74 @@
 &usb1 {
 	status = "okay";
 };
+
+/* Wireless SDIO Module */
+&sd_emmc_a {
+	status = "okay";
+	pinctrl-0 = <&sdio_pins &sdio_irq_pins>;
+	pinctrl-names = "default";
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	bus-width = <4>;
+	cap-sd-highspeed;
+	max-frequency = <100000000>;
+
+	non-removable;
+	disable-wp;
+
+	mmc-pwrseq = <&sdio_pwrseq>;
+
+	vmmc-supply = <&vcc_3v3>;
+	vqmmc-supply = <&vcc_1v8>;
+
+	brcmf: bcrmf at 1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+	};
+};
+
+/* SD card */
+&sd_emmc_b {
+	status = "okay";
+	pinctrl-0 = <&sdcard_pins>;
+	pinctrl-names = "default";
+
+	bus-width = <4>;
+	cap-sd-highspeed;
+	max-frequency = <100000000>;
+	disable-wp;
+
+	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
+	cd-inverted;
+
+	vmmc-supply = <&vcc_3v3>;
+};
+
+/* eMMC */
+&sd_emmc_c {
+	status = "okay";
+	pinctrl-0 = <&emmc_pins>;
+	pinctrl-names = "default";
+
+	bus-width = <8>;
+	cap-sd-highspeed;
+	cap-mmc-highspeed;
+	max-frequency = <200000000>;
+	non-removable;
+	disable-wp;
+	mmc-ddr-1_8v;
+	mmc-hs200-1_8v;
+
+	mmc-pwrseq = <&emmc_pwrseq>;
+	vmmc-supply = <&vcc_3v3>;
+	vmmcq-sumpply = <&vcc_1v8>;
+};
+
+&pwm_ef {
+	status = "okay";
+	pinctrl-0 = <&pwm_e_pins>;
+	pinctrl-names = "default";
+	clocks = <&clkc CLKID_FCLK_DIV4>;
+	clock-names = "clkin0";
+};
Signature · 1 line
2.10.2
maintainer Applied
#1 lore raw

PATCH 1/1 ARM64: dts: meson-gxbb-vega-s95: Add SD/SDIO/MMC and PWM nodes

Quoted 11 lines · Martin Blumenstingl

All boards from the Tronsmart Vega S95 series are sharing similar MMC based hardware.
sd_emmc_a is used to connect a Broadcom based SDIO wifi card (supported by the brcmfmac driver). The 32.768KHz LPO clock for the wifi chip is generated by PWM_E.
sd_emmc_b is routed to the SD-card. Unlike p20x there is no GPIO regulator, meaning it only supports 3.3V (which seems to be hard-wired). The eMMC chip is connected to sd_emmc_c and is implemented similar to the meson-gxbb-p20x boards (meaning that hard-wired fixed regulators are used).

Quoted 1 line

Applied to v4.10/dt64.

Kevin