[RFC 06/11] arm64: dts: mediatek: Add Elm Rev. 3 device tree

Paul Kocialkowski contact at paulk.fr
Tue May 1 01:00:43 PDT 2018


Hi,

Le mercredi 18 octobre 2017 à 16:49 +0800, Yingjoe Chen a écrit :
> Hi,
> 
> 
> On Fri, 2017-09-29 at 15:09 +0200, Ulrich Hecht wrote:
> > Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas at gmail.com>
> > ---
> >  arch/arm64/boot/dts/mediatek/Makefile            |    1 +
> >  arch/arm64/boot/dts/mediatek/mt8173-elm-rev3.dts |   21 +
> >  arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi     |  210 +++++
> >  arch/arm64/boot/dts/mediatek/mt8173-oak.dtsi     | 1014
> > ++++++++++++++++++++++
> >  4 files changed, 1246 insertions(+)
> >  create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm-rev3.dts
> >  create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> >  create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-oak.dtsi
> > 
> > diff --git a/arch/arm64/boot/dts/mediatek/Makefile
> > b/arch/arm64/boot/dts/mediatek/Makefile
> > index 151723b..0521e29 100644
> > --- a/arch/arm64/boot/dts/mediatek/Makefile
> > +++ b/arch/arm64/boot/dts/mediatek/Makefile
> > @@ -4,6 +4,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6795-evb.dtb
> >  dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-evb.dtb
> >  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-rfb1.dtb
> >  dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-evb.dtb
> > +dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-elm-rev3.dtb
> >  
> >  always		:= $(dtb-y)
> >  subdir-y	:= $(dts-dirs)
> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173-elm-rev3.dts
> > b/arch/arm64/boot/dts/mediatek/mt8173-elm-rev3.dts
> > new file mode 100644
> > index 0000000..68d4095
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173-elm-rev3.dts
> > @@ -0,0 +1,21 @@
> > +/*
> > + * Copyright 2016 MediaTek Inc.
> > + * Author: Eddie Huang <eddie.huang at mediatek.com>
> > + *
> > + * 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.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +/dts-v1/;
> > +#include "mt8173-elm.dtsi"
> > +
> > +/ {
> > +	model = "Mediatek Elm rev3 board";
> > +	compatible = "google,elm-rev3", "google,elm",
> > "mediatek,mt8173";
> > +};

When mainlining ARM Chromium OS devices, it seems that per-revision dts
files are often dropped and merged into a single-revision dts for the
whole device. This is perhaps because the early revisions of the devices
are for internal development and never make it to the market.

Also, I would suggest using an explicit model name instead of copying
the compatible. Here, that would be "Chromebook R13 CB5-312T".

> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > new file mode 100644
> > index 0000000..850037f
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > @@ -0,0 +1,210 @@
> > +/*
> > + * Copyright 2016 MediaTek Inc.
> > + * Author: Eddie Huang <eddie.huang at mediatek.com>
> > + *
> > + * 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.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#include "mt8173-oak.dtsi"
> > +
> > +/ {
> > +	hdmicon: connector {
> > +		compatible = "hdmi-connector";
> > +		label = "hdmi";
> > +		type = "a";
> > +
> > +		port {
> > +			hdmi_connector_in: endpoint {
> > +				remote-endpoint =
> > <&hdmi_mux_out_hdmi>;
> > +			};
> > +		};
> > +	};
> > +
> > +	hdmi_mux: hdmi_mux {
> > +		compatible = "gpio-display-mux";
> 
> Where is the binding for this?
> 
> > +		status = "okay";
> > +		detect-gpios = <&pio 36 GPIO_ACTIVE_HIGH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&hdmi_mux_pins>;
> 
> 
> If you use gpio_request or related api, it will set pinmux
> automatically.
> Do we really need this pinctrl?
> 
> > +		ddc-i2c-bus = <&hdmiddc0>;
> > +
> > +		ports {
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +
> > +			port at 0 { /* input */
> > +				reg = <0>;
> > +
> > +				hdmi_mux_in: endpoint {
> > +					remote-endpoint =
> > <&hdmi0_out>;
> > +				};
> > +			};
> > +
> > +			port at 1 { /* output */
> > +				reg = <1>;
> > +
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +
> > +				hdmi_mux_out_anx: endpoint at 0 {
> > +					reg = <0>;
> > +					remote-endpoint =
> > <&anx7688_in>;
> > +				};
> > +
> > +				hdmi_mux_out_hdmi: endpoint at 1 {
> > +					reg = <1>;
> > +					remote-endpoint =
> > <&hdmi_connector_in>;
> > +				};
> > +			};
> > +		};
> > +	};
> > +
> > +	sound: sound {
> > +		compatible = "mediatek,mt8173-rt5650";
> > +		mediatek,audio-codec = <&rt5650 &hdmi0>;
> > +		mediatek,mclk = <1>;
> > +		mediatek,platform = <&afe>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&aud_i2s2>;
> > +		codec-capture {
> > +			sound-dai = <&rt5650 1>;
> > +		};
> > +	};
> > +};
> > +
> > +&aud_i2s2 {
> > +	pins1 {
> > +		pinmux = <MT8173_PIN_128_I2S0_LRCK__FUNC_I2S1_WS>,
> > +			 <MT8173_PIN_129_I2S0_BCK__FUNC_I2S1_BCK>,
> > +			 <MT8173_PIN_130_I2S0_MCK__FUNC_I2S1_MCK>,
> > +			 <MT8173_PIN_131_I2S0_DATA0__FUNC_I2S1_DO_1
> > >,
> > +			 <MT8173_PIN_12_EINT12__FUNC_I2S2_WS>,
> > +			 <MT8173_PIN_13_EINT13__FUNC_I2S2_BCK>,
> > +			 <MT8173_PIN_132_I2S0_DATA1__FUNC_I2S2_DI_2
> > >;
> > +		bias-pull-down;
> > +	};
> > +};
> > +
> > +&cpu_thermal {
> > +	sustainable-power = <4500>; /* milliwatts */
> > +	trips {
> > +		threshold: trip-point at 0 {
> > +			temperature = <60000>;
> > +		};
> > +
> > +		target: trip-point at 1 {
> > +			temperature = <65000>;
> > +		};
> > +	};
> > +};
> > +
> > +&cros_ec {
> > +	i2c_tunnel_b: i2c-tunnel at 1 {
> > +		compatible = "google,cros-ec-i2c-tunnel";
> > +		google,remote-bus = <1>;
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +
> > +		anx7688: anx7688 at 2c {
> > +			compatible = "analogix,anx7688";
> > +			status = "okay";
> > +			reg = <0x2c>;
> > +
> > +			port {
> > +				anx7688_in: endpoint {
> > +					remote-endpoint =
> > <&hdmi_mux_out_anx>;
> > +				};
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&hdmi0 {
> > +	status = "okay";
> > +
> > +	ports {
> > +		port at 1 {
> > +			reg = <1>;
> > +			hdmi0_out: endpoint {
> > +				remote-endpoint = <&hdmi_mux_in>;
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&hdmi_phy {
> > +	status = "okay";
> > +	mediatek,ibias = <0xc>;
> > +};
> > +
> > +&i2c0 {
> > +	ps8640: edp-bridge at 8 {
> > +		compatible = "parade,ps8640";
> 
> binding?
> 
> > +		reg = <0x8>;
> > +		sleep-gpios = <&pio 127 GPIO_ACTIVE_HIGH>;
> > +		reset-gpios = <&pio 115 GPIO_ACTIVE_HIGH>;
> > +		mode-sel-gpios = <&pio 92 GPIO_ACTIVE_HIGH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&ps8640_pins>;
> 
> same here.
> Please check all pinctrl nodes that set FUNC to GPIO in this patch.
> 
> > +		vdd12-supply = <&ps8640_fixed_1v2>;
> > +		vdd33-supply = <&mt6397_vgp2_reg>;
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +
> > +		port at 0 {
> > +			reg = <0>;
> > +
> > +			ps8640_in: endpoint {
> > +				remote-endpoint = <&dsi0_out>;
> > +			};
> > +		};
> > +
> > +		port at 1 {
> > +			reg = <1>;
> > +
> > +			ps8640_out: endpoint {
> > +				remote-endpoint = <&panel_in>;
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&gpio_keys {
> > +	lid {
> > +		gpios = <&pio 69 GPIO_ACTIVE_LOW>;
> > +	};
> > +};
> > +
> > +&mt6397_vgp6_reg {
> > +	regulator-always-on;
> > +};
> > +
> > +&pio {
> > +	hdmi_mux_pins: hdmi_mux_pins {
> > +		pins1 {
> > +			pinmux =
> > <MT8173_PIN_36_DAISYNC__FUNC_GPIO36>;
> > +		};
> > +	};
> > +};
> > +
> > +&ps8640_fixed_1v2 {
> > +	regulator-enable-ramp-delay = <2000>;
> > +};
> > +
> > +&rt5650 {
> > +	#sound-dai-cells = <1>;
> > +	realtek,dmic1-data-pin = <2>;
> > +	realtek,jd-mode = <2>;
> > +};
> > +
> > +
> > +&trackpad {
> > +	vcc-supply = <&mt6397_vgp6_reg>;
> > +};
> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173-oak.dtsi
> > b/arch/arm64/boot/dts/mediatek/mt8173-oak.dtsi
> > new file mode 100644
> > index 0000000..33a5b07
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173-oak.dtsi
> > @@ -0,0 +1,1014 @@
> > +/*
> > + * 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.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#include <dt-bindings/input/input.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include "mt8173.dtsi"
> > +#include "mt8173-pinfunc.h"
> > +
> > +/ {
> > +	aliases {
> > +		serial0 = &uart0;
> > +		serial1 = &uart1;
> > +		serial2 = &uart2;
> > +		serial3 = &uart3;
> > +	};
> > +
> > +	memory at 40000000 {
> > +		device_type = "memory";
> > +		reg = <0 0x40000000 0 0x80000000>;
> > +	};
> > +
> > +	backlight_lcd: backlight_lcd {
> > +		compatible = "pwm-backlight";
> > +		pwms = <&pwm0 0 1000000>;
> > +		brightness-levels = <
> > +			  0  16  32  48  64  80  96 112
> > +			128 144 160 176 192 208 224 240
> > +			255
> > +		>;
> > +		default-brightness-level = <9>;
> > +		power-supply = <&bl_fixed_reg>;
> > +		enable-gpios = <&pio 95 GPIO_ACTIVE_HIGH>;
> > +
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&disp_pwm0_pins>;
> > +		status = "okay";
> > +	};
> > +
> > +	bl_fixed_reg: fixedregulator at 2 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "bl_fixed";
> > +		regulator-min-microvolt = <1800000>;
> > +		regulator-max-microvolt = <1800000>;
> > +		startup-delay-us = <1000>;
> > +		enable-active-high;
> > +		gpio = <&pio 32 GPIO_ACTIVE_HIGH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&bl_fixed_pins>;
> > +	};
> > +
> > +	chosen {
> > +		linux,stdout-path = &uart0;
> > +	};
> > +
> > +	firmware {
> > +		chromeos {
> > +			pinctrl-names = "default";
> > +			pinctrl-0 = <&chromeos_write_protect>;
> > +			write-protect-gpio = <&pio 4
> > GPIO_ACTIVE_LOW>;
> > +		};
> > +	};
> > +
> > +	gpio_keys: gpio-keys {
> > +		compatible = "gpio-keys";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&gpio_keys_pins>;
> > +
> > +		lid {
> > +			label = "Lid";
> > +			gpios = <&pio 12 GPIO_ACTIVE_LOW>;
> > +			linux,code = <0>; /* SW_LID */
> > +			linux,input-type = <5>; /* EV_SW */
> > +			gpio-key,wakeup;
> > +		};
> > +
> > +		power {
> > +			label = "Power";
> > +			gpios = <&pio 14 GPIO_ACTIVE_HIGH>;
> > +			linux,code = <KEY_POWER>;
> > +			debounce-interval = <30>;
> > +			gpio-key,wakeup;
> > +		};
> > +
> > +		tablet_mode {
> > +			label = "Tablet_mode";
> > +			gpios = <&pio 121 GPIO_ACTIVE_HIGH>;
> > +			linux,code = <1>; /* SW_TABLET_MODE */
> > +			linux,input-type = <5>; /* EV_SW */
> > +			gpio-key,wakeup;
> > +		};
> > +
> > +		volume_down {
> > +			label = "Volume_down";
> > +			gpios = <&pio 123 GPIO_ACTIVE_LOW>;
> > +			linux,code = <KEY_VOLUMEDOWN>;
> > +		};
> > +
> > +		volume_up {
> > +			label = "Volume_up";
> > +			gpios = <&pio 124 GPIO_ACTIVE_LOW>;
> > +			linux,code = <KEY_VOLUMEUP>;
> > +		};
> > +	};
> > +
> > +	panel: panel {
> > +		compatible = "lg,lp120up1";
> > +		power-supply = <&panel_fixed_3v3>;
> > +		ddc-i2c-bus = <&i2c4>;
> > +		backlight = <&backlight_lcd>;
> > +
> > +		port {
> > +			panel_in: endpoint {
> > +				remote-endpoint = <&ps8640_out>;
> > +			};
> > +		};
> > +	};
> > +
> > +	panel_fixed_3v3: regulator at 1 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "PANEL_3V3";
> > +		regulator-min-microvolt = <3300000>;
> > +		regulator-max-microvolt = <3300000>;
> > +		enable-active-high;
> > +		gpio = <&pio 41 GPIO_ACTIVE_HIGH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&panel_fixed_pins>;
> > +	};
> > +
> > +	ps8640_fixed_1v2: regulator at 2 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "PS8640_1V2";
> > +		regulator-min-microvolt = <1200000>;
> > +		regulator-max-microvolt = <1200000>;
> > +		enable-active-high;
> > +		regulator-boot-on;
> > +		gpio = <&pio 30 GPIO_ACTIVE_HIGH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&ps8640_fixed_pins>;
> > +	};
> > +
> > +	sdio_fixed_3v3: fixedregulator at 0 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "3V3";
> > +		regulator-min-microvolt = <3300000>;
> > +		regulator-max-microvolt = <3300000>;
> > +		gpio = <&pio 85 GPIO_ACTIVE_HIGH>;
> > +	};
> > +
> > +	usb_p1_vbus: regulator at 3 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "usb_vbus";
> > +		regulator-min-microvolt = <5000000>;
> > +		regulator-max-microvolt = <5000000>;
> > +		gpio = <&pio 130 GPIO_ACTIVE_HIGH>;
> > +		enable-active-high;
> > +	};
> > +
> > +	usb_p0_vbus: regulator at 4 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "vbus";
> > +		regulator-min-microvolt = <5000000>;
> > +		regulator-max-microvolt = <5000000>;
> > +		gpio = <&pio 9 GPIO_ACTIVE_HIGH>;
> > +		enable-active-high;
> > +	};
> > +};
> > +
> > +&cec {
> > +	status = "okay";
> > +};
> > +
> > +&cpu0 {
> > +	proc-supply = <&mt6397_vpca15_reg>;
> > +};
> > +
> > +&cpu1 {
> > +	proc-supply = <&mt6397_vpca15_reg>;
> > +};
> > +
> > +&cpu2 {
> > +	proc-supply = <&da9211_vcpu_reg>;
> > +	sram-supply = <&mt6397_vsramca7_reg>;
> > +};
> > +
> > +&cpu3 {
> > +	proc-supply = <&da9211_vcpu_reg>;
> > +	sram-supply = <&mt6397_vsramca7_reg>;
> > +};
> > +
> > +&cpu_thermal {
> > +	sustainable-power = <5000>; /* milliwatts */
> > +};
> > +
> > +&dsi0 {
> > +	status = "okay";
> > +	ports {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +
> > +		port at 1 {
> > +			reg = <1>;
> > +
> > +			dsi0_out: endpoint {
> > +				remote-endpoint = <&ps8640_in>;
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&dpi0 {
> > +	status = "okay";
> > +};
> > +
> > +&hdmi_phy {
> > +	status = "okay";
> > +	mediatek,ibias = <0x3f>;
> > +};
> > +
> > +&i2c0 {
> > +	status = "okay";
> > +
> > +	rt5650: audio-codec at 1a {
> > +		compatible = "realtek,rt5650";
> > +		reg = <0x1a>;
> > +		avdd-supply = <&mt6397_vgp1_reg>;
> > +		cpvdd-supply = <&mt6397_vcama_reg>;
> > +		interrupt-parent = <&pio>;
> > +		interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&rt5650_irq>;
> > +		realtek,jd-mode = <3>;
> > +	};
> > +};
> > +
> > +&i2c1 {
> > +	clock-frequency = <1500000>;
> > +	status = "okay";
> > +
> > +	da9211: da9211 at 68 {
> > +		compatible = "dlg,da9211";
> > +		reg = <0x68>;
> > +
> > +		regulators {
> > +			da9211_vcpu_reg: BUCKA {
> > +				regulator-name = "VBUCKA";
> > +				regulator-min-microvolt = <
> > 700000>;
> > +				regulator-max-microvolt =
> > <1310000>;
> > +				regulator-min-microamp  =
> > <2000000>;
> > +				regulator-max-microamp  =
> > <4400000>;
> > +				regulator-ramp-delay = <10000>;
> > +				regulator-always-on;
> > +/*				regulator-supported-modes =
> > +					<REGULATOR_OPERATION_MODE_F
> > AST
> > +					 REGULATOR_OPERATION_MODE_N
> > ORMAL>;*/
> 
> Please remove unused code.
> Same for all comment out parts in this patch.
> 
> 
> Joe.C
> 
> 
> 
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
-- 
Paul Kocialkowski,

developer of free digital technology and hardware support.

Website: https://www.paulk.fr/
Coding blog: https://code.paulk.fr/
Git repositories: https://git.paulk.fr/ https://git.code.paulk.fr/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180501/d3564428/attachment.sig>


More information about the linux-arm-kernel mailing list