linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] arm64: dts: meson: add libretech-pc support
@ 2019-12-06 10:02 Jerome Brunet
  2019-12-06 10:02 ` [PATCH 1/4] arm64: dts: meson: gxl: add i2c C pins Jerome Brunet
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Jerome Brunet @ 2019-12-06 10:02 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: Jerome Brunet, linux-amlogic, devicetree, linux-kernel

This patchset adds support the new libretech PC platform, aka tartiflette.
There is two variants of this platform, one with the S905D and another
with the S912.

Jerome Brunet (4):
  arm64: dts: meson: gxl: add i2c C pins
  arm64: defconfig: enable FUSB302 as module
  dt-bindings: arm: amlogic: add libretech-pc bindings
  arm64: dts: meson: add libretech-pc boards support

 .../devicetree/bindings/arm/amlogic.yaml      |   2 +
 arch/arm64/boot/dts/amlogic/Makefile          |   2 +
 .../dts/amlogic/meson-gx-libretech-pc.dtsi    | 362 ++++++++++++++++++
 .../amlogic/meson-gxl-s905d-libretech-pc.dts  |  16 +
 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi    |   9 +
 .../amlogic/meson-gxm-s912-libretech-pc.dts   |  63 +++
 arch/arm64/configs/defconfig                  |   2 +
 7 files changed, 456 insertions(+)
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-libretech-pc.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxm-s912-libretech-pc.dts

-- 
2.23.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] arm64: dts: meson: gxl: add i2c C pins
  2019-12-06 10:02 [PATCH 0/4] arm64: dts: meson: add libretech-pc support Jerome Brunet
@ 2019-12-06 10:02 ` Jerome Brunet
  2019-12-06 10:02 ` [PATCH 2/4] arm64: defconfig: enable FUSB302 as module Jerome Brunet
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Jerome Brunet @ 2019-12-06 10:02 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: Jerome Brunet, linux-amlogic, devicetree, linux-kernel

Add the DV18 and DV19 pinmux setting for the i2c C of the gxl family

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
index ed33d8efaf62..259d86399390 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
@@ -533,6 +533,15 @@
 			};
 		};
 
+		i2c_c_dv18_pins: i2c_c_dv18 {
+			mux {
+				groups = "i2c_sck_c_dv19",
+				      "i2c_sda_c_dv18";
+				function = "i2c_c";
+				bias-disable;
+			};
+		};
+
 		eth_pins: eth_c {
 			mux {
 				groups = "eth_mdio",
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] arm64: defconfig: enable FUSB302 as module
  2019-12-06 10:02 [PATCH 0/4] arm64: dts: meson: add libretech-pc support Jerome Brunet
  2019-12-06 10:02 ` [PATCH 1/4] arm64: dts: meson: gxl: add i2c C pins Jerome Brunet
@ 2019-12-06 10:02 ` Jerome Brunet
  2019-12-06 10:02 ` [PATCH 3/4] dt-bindings: arm: amlogic: add libretech-pc bindings Jerome Brunet
  2019-12-06 10:02 ` [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support Jerome Brunet
  3 siblings, 0 replies; 7+ messages in thread
From: Jerome Brunet @ 2019-12-06 10:02 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: Jerome Brunet, linux-amlogic, devicetree, linux-kernel

Enable the type C fusb302 driver as module

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 arch/arm64/configs/defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 47d1b8fb1969..5ccb2100db92 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -618,6 +618,8 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_RENESAS_USBHS_UDC=m
 CONFIG_USB_RENESAS_USB3=m
 CONFIG_TYPEC=m
+CONFIG_TYPEC_TCPM=m
+CONFIG_TYPEC_FUSB302=m
 CONFIG_TYPEC_HD3SS3220=m
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK_MINORS=32
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] dt-bindings: arm: amlogic: add libretech-pc bindings
  2019-12-06 10:02 [PATCH 0/4] arm64: dts: meson: add libretech-pc support Jerome Brunet
  2019-12-06 10:02 ` [PATCH 1/4] arm64: dts: meson: gxl: add i2c C pins Jerome Brunet
  2019-12-06 10:02 ` [PATCH 2/4] arm64: defconfig: enable FUSB302 as module Jerome Brunet
@ 2019-12-06 10:02 ` Jerome Brunet
  2019-12-06 10:02 ` [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support Jerome Brunet
  3 siblings, 0 replies; 7+ messages in thread
From: Jerome Brunet @ 2019-12-06 10:02 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: Jerome Brunet, linux-amlogic, devicetree, linux-kernel

Add the board bindings for the libretech PC form factor

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 Documentation/devicetree/bindings/arm/amlogic.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
index c6a443352ef8..2660ba3b129b 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -104,6 +104,7 @@ properties:
           - enum:
               - amlogic,p230
               - amlogic,p231
+              - libretech,aml-s905d-pc
               - phicomm,n1
           - const: amlogic,s905d
           - const: amlogic,meson-gxl
@@ -115,6 +116,7 @@ properties:
               - amlogic,q201
               - khadas,vim2
               - kingnovel,r-box-pro
+              - libretech,aml-s912-pc
               - nexbox,a1
               - tronsmart,vega-s96
           - const: amlogic,s912
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support
  2019-12-06 10:02 [PATCH 0/4] arm64: dts: meson: add libretech-pc support Jerome Brunet
                   ` (2 preceding siblings ...)
  2019-12-06 10:02 ` [PATCH 3/4] dt-bindings: arm: amlogic: add libretech-pc bindings Jerome Brunet
@ 2019-12-06 10:02 ` Jerome Brunet
  2019-12-08 18:05   ` Martin Blumenstingl
  3 siblings, 1 reply; 7+ messages in thread
From: Jerome Brunet @ 2019-12-06 10:02 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: Jerome Brunet, linux-amlogic, devicetree, linux-kernel

Add support for the the amlogic libretech-pc platform, aka tartiflette.
There is 2 variants of the platform, one with the s905d, the other with
the s912.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 arch/arm64/boot/dts/amlogic/Makefile          |   2 +
 .../dts/amlogic/meson-gx-libretech-pc.dtsi    | 362 ++++++++++++++++++
 .../amlogic/meson-gxl-s905d-libretech-pc.dts  |  16 +
 .../amlogic/meson-gxm-s912-libretech-pc.dts   |  63 +++
 4 files changed, 443 insertions(+)
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-libretech-pc.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxm-s912-libretech-pc.dts

diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 63400538d39f..6071a4081eb2 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -29,11 +29,13 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-phicomm-n1.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s805x-p241.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-p281.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-tx3-mini.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-libretech-pc.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-nexbox-a1.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q201.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
new file mode 100644
index 000000000000..cf0a02b0e0a2
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
@@ -0,0 +1,362 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2019 BayLibre SAS.
+ * Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+/* Libretech Amlogic GX PC form factor - AKA: Tartiflette */
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	adc_keys {
+		compatible = "adc-keys";
+		io-channels = <&saradc 0>;
+		io-channel-names = "buttons";
+		keyup-threshold-microvolt = <1800000>;
+
+		button-onoff {
+			label = "On/Off";
+			linux,code = <KEY_VENDOR>;
+			press-threshold-microvolt = <1300000>;
+		};
+	};
+
+	aliases {
+		serial0 = &uart_AO;
+		ethernet0 = &ethmac;
+		spi0 = &spifc;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	cvbs-connector {
+		compatible = "composite-video-connector";
+		status = "disabled";
+
+		port {
+			cvbs_connector_in: endpoint {
+				remote-endpoint = <&cvbs_vdac_out>;
+			};
+		};
+	};
+
+	emmc_pwrseq: emmc-pwrseq {
+		compatible = "mmc-pwrseq-emmc";
+		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+	};
+
+	hdmi-connector {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_connector_in: endpoint {
+				remote-endpoint = <&hdmi_tx_tmds_out>;
+			};
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		poll-interval = <100>;
+
+		power-button {
+			label = "power";
+			linux,code = <KEY_POWER>;
+			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x80000000>;
+	};
+
+	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;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		green {
+			label = "librecomputer:green:disk";
+			gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "disk-activity";
+		};
+
+		blue {
+			label = "librecomputer:blue:cpu";
+			gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+			panic-indicator;
+		};
+	};
+
+	vcc_card: regulator-vcc_card {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC_CARD";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vddio_ao3v3>;
+
+		gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	vcc5v: regulator-vcc5v {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&ao_5v>;
+
+		gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>;
+	};
+
+	vddio_ao18: regulator-vddio_ao18 {
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_AO18";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&ao_5v>;
+		regulator-always-on;
+	};
+
+	vddio_ao3v3: regulator-vddio_ao3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_AO3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&ao_5v>;
+		regulator-always-on;
+	};
+
+	vddio_boot: regulator-vddio_boot {
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_BOOT";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vddio_ao3v3>;
+		regulator-always-on;
+	};
+
+	vddio_card: regulator-vddio-card {
+		compatible = "regulator-gpio";
+		regulator-name = "VDDIO_CARD";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>;
+		gpios-states = <0>;
+
+		states = <3300000 0>,
+			 <1800000 1>;
+
+		regulator-settling-time-up-us = <200>;
+		regulator-settling-time-down-us = <50000>;
+	};
+};
+
+&cec_AO {
+	pinctrl-0 = <&ao_cec_pins>;
+	pinctrl-names = "default";
+	hdmi-phandle = <&hdmi_tx>;
+	status = "okay";
+};
+
+&cvbs_vdac_port {
+	cvbs_vdac_out: endpoint {
+		remote-endpoint = <&cvbs_connector_in>;
+	};
+};
+
+&ethmac {
+	pinctrl-0 = <&eth_pins>;
+	pinctrl-names = "default";
+	phy-handle = <&external_phy>;
+	amlogic,tx-delay-ns = <2>;
+	phy-mode = "rgmii";
+	status = "okay";
+};
+
+&external_mdio {
+	external_phy: ethernet-phy@0 {
+		reg = <0>;
+		max-speed = <1000>;
+		reset-assert-us = <10000>;
+		reset-deassert-us = <30000>;
+		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
+		interrupt-parent = <&gpio_intc>;
+		interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+&pinctrl_periphs {
+	/*
+	 * Make sure the reset pin of the usb HUB is driven high to take
+	 * it out of reset.
+	 */
+	usb1_rst_pins: usb1_rst_irq {
+		mux {
+			groups = "GPIODV_3";
+			function = "gpio_periphs";
+			bias-disable;
+			output-high;
+		};
+	};
+};
+
+&hdmi_tx {
+	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
+	pinctrl-names = "default";
+	hdmi-supply = <&vcc5v>;
+	status = "okay";
+};
+
+&hdmi_tx_tmds_port {
+	hdmi_tx_tmds_out: endpoint {
+		remote-endpoint = <&hdmi_connector_in>;
+	};
+};
+
+&ir {
+	pinctrl-0 = <&remote_input_ao_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&i2c_C {
+	pinctrl-0 = <&i2c_c_dv18_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	rtc: rtc@51 {
+		reg = <0x51>;
+		compatible = "nxp,pcf8563";
+		#clock-cells = <0>;
+		clock-output-names = "rtc_clkout";
+	};
+};
+
+&pwm_AO_ab {
+	pinctrl-0 = <&pwm_ao_a_3_pins>;
+	pinctrl-names = "default";
+	clocks = <&clkc CLKID_FCLK_DIV4>;
+	clock-names = "clkin0";
+	status = "okay";
+};
+
+&pwm_ab {
+	pinctrl-0 = <&pwm_b_pins>;
+	pinctrl-names = "default";
+	clocks = <&clkc CLKID_FCLK_DIV4>;
+	clock-names = "clkin0";
+	status = "okay";
+};
+
+&pwm_ef {
+	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
+	pinctrl-names = "default";
+	clocks = <&clkc CLKID_FCLK_DIV4>;
+	clock-names = "clkin0";
+	status = "okay";
+};
+
+&saradc {
+	vref-supply = <&vddio_ao18>;
+	status = "okay";
+};
+
+/* SD card */
+&sd_emmc_b {
+	pinctrl-0 = <&sdcard_pins>;
+	pinctrl-1 = <&sdcard_clk_gate_pins>;
+	pinctrl-names = "default", "clk-gate";
+
+	bus-width = <4>;
+	cap-sd-highspeed;
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	sd-uhs-sdr50;
+	sd-uhs-ddr50;
+	max-frequency = <200000000>;
+	disable-wp;
+
+	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
+
+	vmmc-supply = <&vcc_card>;
+	vqmmc-supply = <&vddio_card>;
+
+	status = "okay";
+};
+
+/* eMMC */
+&sd_emmc_c {
+	pinctrl-0 = <&emmc_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>;
+	disable-wp;
+
+	mmc-pwrseq = <&emmc_pwrseq>;
+	vmmc-supply = <&vddio_ao3v3>;
+	vqmmc-supply = <&vddio_boot>;
+
+	status = "okay";
+};
+
+&spifc {
+	pinctrl-0 = <&nor_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	gd25lq128: spi-flash@0 {
+		compatible = "jedec,spi-nor";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0>;
+		spi-max-frequency = <12000000>;
+	};
+};
+
+&uart_AO {
+	pinctrl-0 = <&uart_ao_a_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+};
+
+&usb2_phy0 {
+	pinctrl-0 = <&usb1_rst_pins>;
+	pinctrl-names = "default";
+	phy-supply = <&vcc5v>;
+};
+
+&usb2_phy1 {
+	phy-supply = <&vcc5v>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-libretech-pc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-libretech-pc.dts
new file mode 100644
index 000000000000..100a1cfeea15
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-libretech-pc.dts
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2019 BayLibre SAS. All rights reserved.
+ * Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+/dts-v1/;
+
+#include "meson-gxl-s905d.dtsi"
+#include "meson-gx-libretech-pc.dtsi"
+
+/ {
+	compatible = "libretech,aml-s905d-pc", "amlogic,s905d",
+		     "amlogic,meson-gxl";
+	model = "Libre Computer AML-S905D-PC";
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-s912-libretech-pc.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-s912-libretech-pc.dts
new file mode 100644
index 000000000000..fa2d2b25861c
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-s912-libretech-pc.dts
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2019 BayLibre SAS. All rights reserved.
+ * Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+/dts-v1/;
+
+#include "meson-gxm.dtsi"
+#include "meson-gx-libretech-pc.dtsi"
+
+/ {
+	compatible = "libretech,aml-s912-pc", "amlogic,s912",
+		     "amlogic,meson-gxm";
+	model = "Libre Computer AML-S912-PC";
+
+	typec2_vbus: regulator-typec2_vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "TYPEC2_VBUS";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc5v>;
+
+		gpio = <&gpio GPIODV_1 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+};
+
+&pinctrl_periphs {
+	/*
+	 * Make sure the irq pin of the TYPE C controller is not driven
+	 * by the SoC.
+	 */
+	fusb302_irq_pins: fusb302_irq {
+		mux {
+			groups = "GPIODV_0";
+			function = "gpio_periphs";
+			bias-pull-up;
+			output-disable;
+		};
+	};
+};
+
+&i2c_C {
+	fusb302@22 {
+		compatible = "fcs,fusb302";
+		reg = <0x22>;
+
+		pinctrl-0 = <&fusb302_irq_pins>;
+		pinctrl-names = "default";
+
+		interrupt-parent = <&gpio_intc>;
+		interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
+
+		vbus-supply = <&typec2_vbus>;
+
+		status = "okay";
+	};
+};
+
+&usb2_phy2 {
+	phy-supply = <&typec2_vbus>;
+};
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support
  2019-12-06 10:02 ` [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support Jerome Brunet
@ 2019-12-08 18:05   ` Martin Blumenstingl
  2019-12-09 10:15     ` Jerome Brunet
  0 siblings, 1 reply; 7+ messages in thread
From: Martin Blumenstingl @ 2019-12-08 18:05 UTC (permalink / raw)
  To: Jerome Brunet; +Cc: Kevin Hilman, linux-amlogic, devicetree, linux-kernel

Hi Jerome,

this is looking good overall - I have some questions / nit-picks below

On Fri, Dec 6, 2019 at 11:02 AM Jerome Brunet <jbrunet@baylibre.com> wrote:
[...]
> +       adc_keys {
on most boards we use "adc-keys" instead of "adc_keys"

[...]
> +               button-onoff {
> +                       label = "On/Off";
> +                       linux,code = <KEY_VENDOR>;
based on the label I assumed that the code is KEY_POWER
why is KEY_VENDOR the better choice here?

[...]
> +       cvbs-connector {
> +               compatible = "composite-video-connector";
> +               status = "disabled";
is there CVBS on the board? if I remember correctly the VPU driver
works fine when omitting the CVBS connector
so if the board doesn't have it you may drop the whole node instead of
keeping it disabled

[...]
> +       leds {
> +               compatible = "gpio-leds";
> +
> +               green {
> +                       label = "librecomputer:green:disk";
you can use the "function" and "color" properties instead of the (now
deprecated) "label"

[...]
> +&external_mdio {
> +       external_phy: ethernet-phy@0 {
> +               reg = <0>;
it would be great to have a comment above which PHY is used on this board

> +               max-speed = <1000>;
> +               reset-assert-us = <10000>;
> +               reset-deassert-us = <30000>;
> +               reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
> +               interrupt-parent = <&gpio_intc>;
a comment like /* MAC_INTR on GPIOZ_15 */ would be great here
> +               interrupts = <25 IRQ_TYPE_LEVEL_LOW>;

[...]
> +&pinctrl_periphs {
> +       /*
> +        * Make sure the reset pin of the usb HUB is driven high to take
> +        * it out of reset.
> +        */
> +       usb1_rst_pins: usb1_rst_irq {
> +               mux {
> +                       groups = "GPIODV_3";
> +                       function = "gpio_periphs";
> +                       bias-disable;
> +                       output-high;
> +               };
> +       };
on other boards (like Odroid-C2) we use a GPIO hog for this. I'm not
sure which one is better

[...]
> +&pinctrl_periphs {
> +       /*
> +        * Make sure the irq pin of the TYPE C controller is not driven
> +        * by the SoC.
is this because the SoC default configuration pulls the IRQ line LOW,
which then generates "phantom" IRQs?

[...]
> +       fusb302@22 {
typec-portc@22

[...]
> +               interrupt-parent = <&gpio_intc>;
> +               interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
a comment above with the GPIO number would be great


Martin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support
  2019-12-08 18:05   ` Martin Blumenstingl
@ 2019-12-09 10:15     ` Jerome Brunet
  0 siblings, 0 replies; 7+ messages in thread
From: Jerome Brunet @ 2019-12-09 10:15 UTC (permalink / raw)
  To: Martin Blumenstingl; +Cc: Kevin Hilman, linux-amlogic, devicetree, linux-kernel


On Sun 08 Dec 2019 at 19:05, Martin Blumenstingl <martin.blumenstingl@googlemail.com> wrote:

> Hi Jerome,
>
> this is looking good overall - I have some questions / nit-picks below
>
> On Fri, Dec 6, 2019 at 11:02 AM Jerome Brunet <jbrunet@baylibre.com> wrote:
> [...]
>> +       adc_keys {
> on most boards we use "adc-keys" instead of "adc_keys"
>
> [...]
>> +               button-onoff {
>> +                       label = "On/Off";
>> +                       linux,code = <KEY_VENDOR>;
> based on the label I assumed that the code is KEY_POWER
> why is KEY_VENDOR the better choice here?
>

My bad - The button is labeled with "UPDATE" ... nothing really matches
in the KEYs ... so VENDOR it is.

I have just copy/pasted the section and forgot to update the rest

> [...]
>> +       cvbs-connector {
>> +               compatible = "composite-video-connector";
>> +               status = "disabled";
> is there CVBS on the board? if I remember correctly the VPU driver
> works fine when omitting the CVBS connector
> so if the board doesn't have it you may drop the whole node instead of
> keeping it disabled

The CVBS output could be provided on one the GPIO header.
Since it is not really standard, I prefer to keep off and leave to
option to easily turn it on if someone wants to use it.

I'll had a comment for that.

>
> [...]
>> +       leds {
>> +               compatible = "gpio-leds";
>> +
>> +               green {
>> +                       label = "librecomputer:green:disk";
> you can use the "function" and "color" properties instead of the (now
> deprecated) "label"
>
> [...]
>> +&external_mdio {
>> +       external_phy: ethernet-phy@0 {
>> +               reg = <0>;
> it would be great to have a comment above which PHY is used on this board
>
>> +               max-speed = <1000>;
>> +               reset-assert-us = <10000>;
>> +               reset-deassert-us = <30000>;
>> +               reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
>> +               interrupt-parent = <&gpio_intc>;
> a comment like /* MAC_INTR on GPIOZ_15 */ would be great here
>> +               interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
>
> [...]
>> +&pinctrl_periphs {
>> +       /*
>> +        * Make sure the reset pin of the usb HUB is driven high to take
>> +        * it out of reset.
>> +        */
>> +       usb1_rst_pins: usb1_rst_irq {
>> +               mux {
>> +                       groups = "GPIODV_3";
>> +                       function = "gpio_periphs";
>> +                       bias-disable;
>> +                       output-high;
>> +               };
>> +       };
> on other boards (like Odroid-C2) we use a GPIO hog for this. I'm not
> sure which one is better
>

This is at least tied to the related device.

I have discussed "hog" vs "pinctrl" matter with Bartosz Golaszewski and
we could not find any reason not proceed with pinctrl when possible.

> [...]
>> +&pinctrl_periphs {
>> +       /*
>> +        * Make sure the irq pin of the TYPE C controller is not driven
>> +        * by the SoC.
> is this because the SoC default configuration pulls the IRQ line LOW,
> which then generates "phantom" IRQs?

No. It is just making sure the pin is claimed and properly configured.

Since our interrupt and gpio controller are completly de-coupled it is
not necessarily the case without it (... and yes, the same is true for the
other device using gpio irqs)

>
> [...]
>> +       fusb302@22 {
> typec-portc@22
>
> [...]
>> +               interrupt-parent = <&gpio_intc>;
>> +               interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
> a comment above with the GPIO number would be great
>
>
> Martin


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-12-09 10:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-06 10:02 [PATCH 0/4] arm64: dts: meson: add libretech-pc support Jerome Brunet
2019-12-06 10:02 ` [PATCH 1/4] arm64: dts: meson: gxl: add i2c C pins Jerome Brunet
2019-12-06 10:02 ` [PATCH 2/4] arm64: defconfig: enable FUSB302 as module Jerome Brunet
2019-12-06 10:02 ` [PATCH 3/4] dt-bindings: arm: amlogic: add libretech-pc bindings Jerome Brunet
2019-12-06 10:02 ` [PATCH 4/4] arm64: dts: meson: add libretech-pc boards support Jerome Brunet
2019-12-08 18:05   ` Martin Blumenstingl
2019-12-09 10:15     ` Jerome Brunet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).