forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
454 lines
8.8 KiB
454 lines
8.8 KiB
// 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> |
|
|
|
/* |
|
* Note: The original firmware from Huawei can only boot 32-bit kernels. |
|
* To boot arm64 kernels it is necessary to flash 64-bit TZ/HYP firmware |
|
* with EDL, e.g. taken from the DragonBoard 410c. This works because Huawei |
|
* forgot to set up (firmware) secure boot for some reason. |
|
* |
|
* Also note that Huawei no longer provides bootloader unlock codes. |
|
* This can be bypassed by patching the bootloader from a custom HYP firmware, |
|
* making it think the bootloader is unlocked. |
|
* |
|
* See: https://wiki.postmarketos.org/wiki/Huawei_Ascend_G7_(huawei-g7) |
|
*/ |
|
|
|
/ { |
|
model = "Huawei Ascend G7"; |
|
compatible = "huawei,g7", "qcom,msm8916"; |
|
|
|
aliases { |
|
serial0 = &blsp1_uart2; |
|
}; |
|
|
|
chosen { |
|
stdout-path = "serial0"; |
|
}; |
|
|
|
gpio-keys { |
|
compatible = "gpio-keys"; |
|
|
|
pinctrl-names = "default"; |
|
pinctrl-0 = <&gpio_keys_default>; |
|
|
|
label = "GPIO Buttons"; |
|
|
|
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"; |
|
}; |
|
|
|
&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>; |
|
}; |
|
|
|
&usb { |
|
status = "okay"; |
|
extcon = <&usb_id>, <&usb_id>; |
|
}; |
|
|
|
&usb_hs_phy { |
|
extcon = <&usb_id>; |
|
}; |
|
|
|
&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 { |
|
pins = "gpio115"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
gpio_keys_default: gpio-keys-default { |
|
pins = "gpio107"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-pull-up; |
|
}; |
|
|
|
gpio_leds_default: gpio-leds-default { |
|
pins = "gpio8", "gpio9", "gpio10"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
nfc_default: nfc-default { |
|
pins = "gpio2", "gpio20", "gpio21"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
mag_reset_default: mag-reset-default { |
|
pins = "gpio36"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
prox_irq_default: prox-irq-default { |
|
pins = "gpio113"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
reg_lcd_en_default: reg-lcd-en-default { |
|
pins = "gpio32", "gpio97"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
sdhc2_cd_default: sdhc2-cd-default { |
|
pins = "gpio56"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
ts_irq_default: ts-irq-default { |
|
pins = "gpio13"; |
|
function = "gpio"; |
|
|
|
drive-strength = <2>; |
|
bias-disable; |
|
}; |
|
|
|
usb_id_default: usb-id-default { |
|
pins = "gpio117"; |
|
function = "gpio"; |
|
|
|
drive-strength = <8>; |
|
bias-pull-up; |
|
}; |
|
};
|
|
|