499 lines
9.6 KiB
Plaintext
499 lines
9.6 KiB
Plaintext
|
// SPDX-License-Identifier: GPL-2.0-only
|
||
|
/*
|
||
|
* Copyright (C) 2021 Stephan Gerhold
|
||
|
*/
|
||
|
|
||
|
/dts-v1/;
|
||
|
|
||
|
#include "msm8916-pm8916.dtsi"
|
||
|
#include <dt-bindings/gpio/gpio.h>
|
||
|
#include <dt-bindings/input/input.h>
|
||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||
|
#include <dt-bindings/leds/common.h>
|
||
|
#include <dt-bindings/sound/apq8016-lpass.h>
|
||
|
|
||
|
/*
|
||
|
* Note: The original firmware from Huawei can only boot 32-bit kernels.
|
||
|
* To boot this device tree using arm64 it is necessary to flash 64-bit TZ/HYP
|
||
|
* firmware (e.g. taken from the DragonBoard 410c).
|
||
|
* See https://wiki.postmarketos.org/wiki/Huawei_Ascend_G7_(huawei-g7)
|
||
|
* for suggested installation instructions.
|
||
|
*/
|
||
|
|
||
|
/ {
|
||
|
model = "Huawei Ascend G7";
|
||
|
compatible = "huawei,g7", "qcom,msm8916";
|
||
|
chassis-type = "handset";
|
||
|
|
||
|
aliases {
|
||
|
serial0 = &blsp1_uart2;
|
||
|
};
|
||
|
|
||
|
chosen {
|
||
|
stdout-path = "serial0";
|
||
|
};
|
||
|
|
||
|
gpio-keys {
|
||
|
compatible = "gpio-keys";
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&gpio_keys_default>;
|
||
|
|
||
|
label = "GPIO Buttons";
|
||
|
|
||
|
button-volume-up {
|
||
|
label = "Volume Up";
|
||
|
gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
|
||
|
linux,code = <KEY_VOLUMEUP>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
leds {
|
||
|
compatible = "gpio-leds";
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&gpio_leds_default>;
|
||
|
|
||
|
led-0 {
|
||
|
gpios = <&msmgpio 8 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_RED>;
|
||
|
default-state = "off";
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
};
|
||
|
|
||
|
led-1 {
|
||
|
gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_GREEN>;
|
||
|
default-state = "off";
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
};
|
||
|
|
||
|
led-2 {
|
||
|
gpios = <&msmgpio 10 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_BLUE>;
|
||
|
default-state = "off";
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
usb_id: usb-id {
|
||
|
compatible = "linux,extcon-usb-gpio";
|
||
|
id-gpio = <&msmgpio 117 GPIO_ACTIVE_HIGH>;
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&usb_id_default>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&blsp_i2c2 {
|
||
|
status = "okay";
|
||
|
|
||
|
magnetometer@c {
|
||
|
compatible = "asahi-kasei,ak09911";
|
||
|
reg = <0x0c>;
|
||
|
|
||
|
vdd-supply = <&pm8916_l17>;
|
||
|
vid-supply = <&pm8916_l6>;
|
||
|
|
||
|
reset-gpios = <&msmgpio 36 GPIO_ACTIVE_LOW>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&mag_reset_default>;
|
||
|
};
|
||
|
|
||
|
accelerometer@1e {
|
||
|
compatible = "kionix,kx023-1025";
|
||
|
reg = <0x1e>;
|
||
|
|
||
|
interrupt-parent = <&msmgpio>;
|
||
|
interrupts = <115 IRQ_TYPE_EDGE_RISING>;
|
||
|
|
||
|
vdd-supply = <&pm8916_l17>;
|
||
|
vddio-supply = <&pm8916_l6>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&accel_irq_default>;
|
||
|
|
||
|
mount-matrix = "-1", "0", "0",
|
||
|
"0", "1", "0",
|
||
|
"0", "0", "1";
|
||
|
};
|
||
|
|
||
|
proximity@39 {
|
||
|
compatible = "avago,apds9930";
|
||
|
reg = <0x39>;
|
||
|
|
||
|
interrupt-parent = <&msmgpio>;
|
||
|
interrupts = <113 IRQ_TYPE_EDGE_FALLING>;
|
||
|
|
||
|
vdd-supply = <&pm8916_l17>;
|
||
|
vddio-supply = <&pm8916_l6>;
|
||
|
|
||
|
led-max-microamp = <100000>;
|
||
|
amstaos,proximity-diodes = <1>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&prox_irq_default>;
|
||
|
};
|
||
|
|
||
|
regulator@3e {
|
||
|
compatible = "ti,tps65132";
|
||
|
reg = <0x3e>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <®_lcd_en_default>;
|
||
|
|
||
|
reg_lcd_pos: outp {
|
||
|
regulator-name = "outp";
|
||
|
regulator-min-microvolt = <5400000>;
|
||
|
regulator-max-microvolt = <5400000>;
|
||
|
enable-gpios = <&msmgpio 97 GPIO_ACTIVE_HIGH>;
|
||
|
regulator-active-discharge = <1>;
|
||
|
};
|
||
|
|
||
|
reg_lcd_neg: outn {
|
||
|
regulator-name = "outn";
|
||
|
regulator-min-microvolt = <5400000>;
|
||
|
regulator-max-microvolt = <5400000>;
|
||
|
enable-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>;
|
||
|
regulator-active-discharge = <1>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&blsp_i2c5 {
|
||
|
status = "okay";
|
||
|
|
||
|
rmi4@70 {
|
||
|
compatible = "syna,rmi4-i2c";
|
||
|
reg = <0x70>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
|
||
|
interrupt-parent = <&msmgpio>;
|
||
|
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
|
||
|
|
||
|
vdd-supply = <&pm8916_l17>;
|
||
|
vio-supply = <&pm8916_l16>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&ts_irq_default>;
|
||
|
|
||
|
syna,startup-delay-ms = <100>;
|
||
|
|
||
|
rmi4-f01@1 {
|
||
|
reg = <0x1>;
|
||
|
syna,nosleep-mode = <1>; /* Allow sleeping */
|
||
|
};
|
||
|
|
||
|
rmi4-f11@11 {
|
||
|
reg = <0x11>;
|
||
|
syna,sensor-type = <1>; /* Touchscreen */
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&blsp_i2c6 {
|
||
|
status = "okay";
|
||
|
|
||
|
nfc@28 {
|
||
|
compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
|
||
|
reg = <0x28>;
|
||
|
|
||
|
interrupt-parent = <&msmgpio>;
|
||
|
interrupts = <21 IRQ_TYPE_EDGE_RISING>;
|
||
|
|
||
|
enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
|
||
|
firmware-gpios = <&msmgpio 2 GPIO_ACTIVE_HIGH>;
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&nfc_default>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&blsp1_uart2 {
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&lpass {
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&pm8916_resin {
|
||
|
status = "okay";
|
||
|
linux,code = <KEY_VOLUMEDOWN>;
|
||
|
};
|
||
|
|
||
|
&pm8916_vib {
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&pronto {
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&sdhc_1 {
|
||
|
status = "okay";
|
||
|
|
||
|
pinctrl-names = "default", "sleep";
|
||
|
pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
|
||
|
pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
|
||
|
};
|
||
|
|
||
|
&sdhc_2 {
|
||
|
status = "okay";
|
||
|
|
||
|
pinctrl-names = "default", "sleep";
|
||
|
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdhc2_cd_default>;
|
||
|
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdhc2_cd_default>;
|
||
|
|
||
|
/*
|
||
|
* The Huawei device tree sets cd-gpios = <&msmgpio 38 GPIO_ACTIVE_HIGH>.
|
||
|
* However, gpio38 does not change its state when inserting/removing the
|
||
|
* SD card, it's just low all the time. The Huawei kernel seems to use
|
||
|
* polling for SD card detection instead.
|
||
|
*
|
||
|
* However, looking closer at the GPIO debug output it turns out that
|
||
|
* gpio56 switches its state when inserting/removing the SD card.
|
||
|
* It behaves just like gpio38 normally does. Usually GPIO56 is used as
|
||
|
* "UIM2_PRESENT", i.e. to check if a second SIM card is inserted.
|
||
|
* Maybe Huawei decided to replace the second SIM card slot with the
|
||
|
* SD card slot and forgot to re-route to gpio38.
|
||
|
*/
|
||
|
cd-gpios = <&msmgpio 56 GPIO_ACTIVE_LOW>;
|
||
|
};
|
||
|
|
||
|
&sound {
|
||
|
status = "okay";
|
||
|
|
||
|
model = "msm8916";
|
||
|
audio-routing =
|
||
|
"AMIC1", "MIC BIAS External1",
|
||
|
"AMIC2", "MIC BIAS External2",
|
||
|
"AMIC3", "MIC BIAS External1";
|
||
|
|
||
|
pinctrl-names = "default", "sleep";
|
||
|
pinctrl-0 = <&cdc_pdm_lines_act>;
|
||
|
pinctrl-1 = <&cdc_pdm_lines_sus>;
|
||
|
|
||
|
primary-dai-link {
|
||
|
link-name = "WCD";
|
||
|
cpu {
|
||
|
sound-dai = <&lpass MI2S_PRIMARY>;
|
||
|
};
|
||
|
codec {
|
||
|
sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
tertiary-dai-link {
|
||
|
link-name = "WCD-Capture";
|
||
|
cpu {
|
||
|
sound-dai = <&lpass MI2S_TERTIARY>;
|
||
|
};
|
||
|
codec {
|
||
|
sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&usb {
|
||
|
status = "okay";
|
||
|
extcon = <&usb_id>, <&usb_id>;
|
||
|
};
|
||
|
|
||
|
&usb_hs_phy {
|
||
|
extcon = <&usb_id>;
|
||
|
};
|
||
|
|
||
|
&wcd_codec {
|
||
|
qcom,micbias-lvl = <2800>;
|
||
|
qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
|
||
|
qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
|
||
|
qcom,hphl-jack-type-normally-open;
|
||
|
};
|
||
|
|
||
|
&smd_rpm_regulators {
|
||
|
vdd_l1_l2_l3-supply = <&pm8916_s3>;
|
||
|
vdd_l4_l5_l6-supply = <&pm8916_s4>;
|
||
|
vdd_l7-supply = <&pm8916_s4>;
|
||
|
|
||
|
s3 {
|
||
|
regulator-min-microvolt = <1200000>;
|
||
|
regulator-max-microvolt = <1300000>;
|
||
|
};
|
||
|
|
||
|
s4 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <2100000>;
|
||
|
};
|
||
|
|
||
|
l1 {
|
||
|
regulator-min-microvolt = <1225000>;
|
||
|
regulator-max-microvolt = <1225000>;
|
||
|
};
|
||
|
|
||
|
l2 {
|
||
|
regulator-min-microvolt = <1200000>;
|
||
|
regulator-max-microvolt = <1200000>;
|
||
|
};
|
||
|
|
||
|
l4 {
|
||
|
regulator-min-microvolt = <2050000>;
|
||
|
regulator-max-microvolt = <2050000>;
|
||
|
};
|
||
|
|
||
|
l5 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
};
|
||
|
|
||
|
l6 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
};
|
||
|
|
||
|
l7 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
};
|
||
|
|
||
|
l8 {
|
||
|
regulator-min-microvolt = <2950000>;
|
||
|
regulator-max-microvolt = <2950000>;
|
||
|
};
|
||
|
|
||
|
l9 {
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
};
|
||
|
|
||
|
l10 {
|
||
|
regulator-min-microvolt = <2700000>;
|
||
|
regulator-max-microvolt = <2800000>;
|
||
|
};
|
||
|
|
||
|
l11 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <2950000>;
|
||
|
regulator-allow-set-load;
|
||
|
regulator-system-load = <200000>;
|
||
|
};
|
||
|
|
||
|
l12 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <2950000>;
|
||
|
};
|
||
|
|
||
|
l13 {
|
||
|
regulator-min-microvolt = <3075000>;
|
||
|
regulator-max-microvolt = <3075000>;
|
||
|
};
|
||
|
|
||
|
l14 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
};
|
||
|
|
||
|
l15 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
};
|
||
|
|
||
|
l16 {
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
};
|
||
|
|
||
|
l17 {
|
||
|
regulator-min-microvolt = <2850000>;
|
||
|
regulator-max-microvolt = <2850000>;
|
||
|
};
|
||
|
|
||
|
l18 {
|
||
|
regulator-min-microvolt = <2700000>;
|
||
|
regulator-max-microvolt = <2700000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&msmgpio {
|
||
|
accel_irq_default: accel-irq-default-state {
|
||
|
pins = "gpio115";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
gpio_keys_default: gpio-keys-default-state {
|
||
|
pins = "gpio107";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-pull-up;
|
||
|
};
|
||
|
|
||
|
gpio_leds_default: gpio-leds-default-state {
|
||
|
pins = "gpio8", "gpio9", "gpio10";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
nfc_default: nfc-default-state {
|
||
|
pins = "gpio2", "gpio20", "gpio21";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
mag_reset_default: mag-reset-default-state {
|
||
|
pins = "gpio36";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
prox_irq_default: prox-irq-default-state {
|
||
|
pins = "gpio113";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
reg_lcd_en_default: reg-lcd-en-default-state {
|
||
|
pins = "gpio32", "gpio97";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
sdhc2_cd_default: sdhc2-cd-default-state {
|
||
|
pins = "gpio56";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
ts_irq_default: ts-irq-default-state {
|
||
|
pins = "gpio13";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <2>;
|
||
|
bias-disable;
|
||
|
};
|
||
|
|
||
|
usb_id_default: usb-id-default-state {
|
||
|
pins = "gpio117";
|
||
|
function = "gpio";
|
||
|
|
||
|
drive-strength = <8>;
|
||
|
bias-pull-up;
|
||
|
};
|
||
|
};
|