2022-05-09 07:17:20

by Nícolas F. R. A. Prado

[permalink] [raw]
Subject: [PATCH v2 00/16] Introduce support for MediaTek MT8192 Google Chromebooks


This series introduces Devicetrees for the MT8192-based Asurada platform
as well as Asurada Spherion and Asurada Hayato boards.

Support for the boards is added to the extent that is currently enabled
in the mt8192.dtsi, as to not add any dependencies to this series.

Besides the other dt-binding fixes already on linux-next to avoid new
warnings by this series, [1] is already merged but not on next yet.

This series was peer-reviewed internally before submission.

[1] https://lore.kernel.org/all/[email protected]/

v1: https://lore.kernel.org/all/[email protected]/

Changes in v2:
- Added patches 1-2 for Mediatek board dt-bindings
- Added patches 13-16 enabling hardware for Asurada that has since been
enabled on mt8192.dtsi

Nícolas F. R. A. Prado (16):
dt-bindings: arm64: dts: mediatek: Add mt8192-asurada-spherion
dt-bindings: arm64: dts: mediatek: Add mt8192-asurada-hayato
arm64: dts: mediatek: Introduce MT8192-based Asurada board family
arm64: dts: mediatek: asurada: Document GPIO names
arm64: dts: mediatek: asurada: Add system-wide power supplies
arm64: dts: mediatek: asurada: Enable and configure I2C and SPI busses
arm64: dts: mediatek: asurada: Add ChromeOS EC
arm64: dts: mediatek: asurada: Add keyboard mapping for the top row
arm64: dts: mediatek: asurada: Add Cr50 TPM
arm64: dts: mediatek: asurada: Add Elan eKTH3000 I2C trackpad
arm64: dts: mediatek: asurada: Add I2C touchscreen
arm64: dts: mediatek: spherion: Add keyboard backlight
arm64: dts: mediatek: asurada: Enable XHCI
arm64: dts: mediatek: asurada: Enable PCIe and add WiFi
arm64: dts: mediatek: asurada: Add MT6359 PMIC
arm64: dts: mediatek: asurada: Add SPMI regulators

.../devicetree/bindings/arm/mediatek.yaml | 13 +
arch/arm64/boot/dts/mediatek/Makefile | 2 +
.../dts/mediatek/mt8192-asurada-hayato-r1.dts | 18 +
.../mediatek/mt8192-asurada-spherion-r0.dts | 33 +
.../boot/dts/mediatek/mt8192-asurada.dtsi | 777 ++++++++++++++++++
5 files changed, 843 insertions(+)
create mode 100644 arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi

--
2.36.0



2022-05-09 08:03:45

by Nícolas F. R. A. Prado

[permalink] [raw]
Subject: [PATCH v2 05/16] arm64: dts: mediatek: asurada: Add system-wide power supplies

Add system-wide power supplies present on all of the boards in the
Asurada family.

Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
---

(no changes since v1)

.../boot/dts/mediatek/mt8192-asurada.dtsi | 64 +++++++++++++++++++
1 file changed, 64 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
index e10636298639..5cb7580a13cf 100644
--- a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
@@ -19,6 +19,70 @@ memory@40000000 {
device_type = "memory";
reg = <0 0x40000000 0 0x80000000>;
};
+
+ /* system wide LDO 1.8V power rail */
+ pp1800_ldo_g: pp1800-ldo-g {
+ compatible = "regulator-fixed";
+ regulator-name = "pp1800_ldo_g";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&pp3300_g>;
+ };
+
+ /* system wide switching 3.3V power rail */
+ pp3300_g: pp3300-g {
+ compatible = "regulator-fixed";
+ regulator-name = "pp3300_g";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&ppvar_sys>;
+ };
+
+ /* system wide LDO 3.3V power rail */
+ pp3300_ldo_z: pp3300-ldo-z {
+ compatible = "regulator-fixed";
+ regulator-name = "pp3300_ldo_z";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&ppvar_sys>;
+ };
+
+ /* separately switched 3.3V power rail */
+ pp3300_u: pp3300-u {
+ compatible = "regulator-fixed";
+ regulator-name = "pp3300_u";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ /* enable pin wired to GPIO controlled by EC */
+ vin-supply = <&pp3300_g>;
+ };
+
+ /* system wide switching 5.0V power rail */
+ pp5000_a: pp5000-a {
+ compatible = "regulator-fixed";
+ regulator-name = "pp5000_a";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&ppvar_sys>;
+ };
+
+ /* system wide semi-regulated power rail from battery or USB */
+ ppvar_sys: ppvar-sys {
+ compatible = "regulator-fixed";
+ regulator-name = "ppvar_sys";
+ regulator-always-on;
+ regulator-boot-on;
+ };
};

&pio {
--
2.36.0


2022-05-09 08:38:15

by Nícolas F. R. A. Prado

[permalink] [raw]
Subject: [PATCH v2 09/16] arm64: dts: mediatek: asurada: Add Cr50 TPM

The Asurada platform has a Google Security Chip connected to the SPI5
bus. It runs the cr50 firmware and provides TPM functionality. Add
support for it.

Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
---

(no changes since v1)

.../arm64/boot/dts/mediatek/mt8192-asurada.dtsi | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
index a1cbf7a375b6..5221f1d1b7dc 100644
--- a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
@@ -5,6 +5,7 @@
*/
/dts-v1/;
#include "mt8192.dtsi"
+#include <dt-bindings/gpio/gpio.h>

/ {
aliases {
@@ -353,6 +354,13 @@ &pio {
"AUD_DAT_MISO0",
"AUD_DAT_MISO1";

+ cr50_int: cr50-irq-default-pins {
+ pins-gsc-ap-int-odl {
+ pinmux = <PINMUX_GPIO171__FUNC_GPIO171>;
+ input-enable;
+ };
+ };
+
cros_ec_int: cros-ec-irq-default-pins {
pins-ec-ap-int-odl {
pinmux = <PINMUX_GPIO5__FUNC_GPIO5>;
@@ -517,6 +525,15 @@ &spi5 {
mediatek,pad-select = <0>;
pinctrl-names = "default";
pinctrl-0 = <&spi5_pins>;
+
+ cr50@0 {
+ compatible = "google,cr50";
+ reg = <0>;
+ interrupts-extended = <&pio 171 IRQ_TYPE_EDGE_RISING>;
+ spi-max-frequency = <1000000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cr50_int>;
+ };
};

&uart0 {
--
2.36.0


2022-05-09 11:05:36

by Nícolas F. R. A. Prado

[permalink] [raw]
Subject: [PATCH v2 07/16] arm64: dts: mediatek: asurada: Add ChromeOS EC

Add support for the ChromeOS Embedded Controller present on the Asurada
platform. It is connected through the SPI1 bus and offers several
functionalities: base detection, PWM controller, I2C tunneling,
regulators, Type-C connector management, keyboard and Smart Battery
Metrics (SBS).

Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
Reviewed-by: AngeloGioacchino Del Regno <[email protected]>

---

Changes in v2:
- Renamed PWM subnode to avoid dt-binding warning (ec-pwm -> pwm)

.../boot/dts/mediatek/mt8192-asurada.dtsi | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
index 3c5b1e475cf6..662207d0eb75 100644
--- a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
@@ -353,6 +353,14 @@ &pio {
"AUD_DAT_MISO0",
"AUD_DAT_MISO1";

+ cros_ec_int: cros-ec-irq-default-pins {
+ pins-ec-ap-int-odl {
+ pinmux = <PINMUX_GPIO5__FUNC_GPIO5>;
+ input-enable;
+ bias-pull-up;
+ };
+ };
+
i2c0_pins: i2c0-default-pins {
pins-bus {
pinmux = <PINMUX_GPIO204__FUNC_SCL0>,
@@ -432,6 +440,74 @@ &spi1 {
mediatek,pad-select = <0>;
pinctrl-names = "default";
pinctrl-0 = <&spi1_pins>;
+
+ cros_ec: ec@0 {
+ compatible = "google,cros-ec-spi";
+ reg = <0>;
+ interrupts-extended = <&pio 5 IRQ_TYPE_LEVEL_LOW>;
+ spi-max-frequency = <3000000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cros_ec_int>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ base_detection: cbas {
+ compatible = "google,cros-cbas";
+ };
+
+ cros_ec_pwm: pwm {
+ compatible = "google,cros-ec-pwm";
+ #pwm-cells = <1>;
+
+ status = "disabled";
+ };
+
+ i2c_tunnel: i2c-tunnel {
+ compatible = "google,cros-ec-i2c-tunnel";
+ google,remote-bus = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ mt6360_ldo3_reg: regulator@0 {
+ compatible = "google,cros-ec-regulator";
+ reg = <0>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ mt6360_ldo5_reg: regulator@1 {
+ compatible = "google,cros-ec-regulator";
+ reg = <1>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ typec {
+ compatible = "google,cros-ec-typec";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_c0: connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "left";
+ power-role = "dual";
+ data-role = "host";
+ try-power-role = "source";
+ };
+
+ usb_c1: connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ label = "right";
+ power-role = "dual";
+ data-role = "host";
+ try-power-role = "source";
+ };
+ };
+ };
};

&spi5 {
@@ -446,3 +522,6 @@ &spi5 {
&uart0 {
status = "okay";
};
+
+#include <arm/cros-ec-keyboard.dtsi>
+#include <arm/cros-ec-sbs.dtsi>
--
2.36.0