cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

msm8916-huawei-g7.dts (9718B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2// Copyright (C) 2021 Stephan Gerhold
      3
      4/dts-v1/;
      5
      6#include "msm8916-pm8916.dtsi"
      7#include <dt-bindings/gpio/gpio.h>
      8#include <dt-bindings/input/input.h>
      9#include <dt-bindings/interrupt-controller/irq.h>
     10#include <dt-bindings/leds/common.h>
     11#include <dt-bindings/sound/apq8016-lpass.h>
     12
     13/*
     14 * Note: The original firmware from Huawei can only boot 32-bit kernels.
     15 * To boot this device tree using arm64 it is necessary to flash 64-bit TZ/HYP
     16 * firmware (e.g. taken from the DragonBoard 410c).
     17 * See https://wiki.postmarketos.org/wiki/Huawei_Ascend_G7_(huawei-g7)
     18 * for suggested installation instructions.
     19 */
     20
     21/ {
     22	model = "Huawei Ascend G7";
     23	compatible = "huawei,g7", "qcom,msm8916";
     24	chassis-type = "handset";
     25
     26	aliases {
     27		serial0 = &blsp1_uart2;
     28	};
     29
     30	chosen {
     31		stdout-path = "serial0";
     32	};
     33
     34	gpio-keys {
     35		compatible = "gpio-keys";
     36
     37		pinctrl-names = "default";
     38		pinctrl-0 = <&gpio_keys_default>;
     39
     40		label = "GPIO Buttons";
     41
     42		volume-up {
     43			label = "Volume Up";
     44			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
     45			linux,code = <KEY_VOLUMEUP>;
     46		};
     47	};
     48
     49	leds {
     50		compatible = "gpio-leds";
     51
     52		pinctrl-names = "default";
     53		pinctrl-0 = <&gpio_leds_default>;
     54
     55		led-0 {
     56			gpios = <&msmgpio 8 GPIO_ACTIVE_HIGH>;
     57			color = <LED_COLOR_ID_RED>;
     58			default-state = "off";
     59			function = LED_FUNCTION_INDICATOR;
     60		};
     61
     62		led-1 {
     63			gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>;
     64			color = <LED_COLOR_ID_GREEN>;
     65			default-state = "off";
     66			function = LED_FUNCTION_INDICATOR;
     67		};
     68
     69		led-2 {
     70			gpios = <&msmgpio 10 GPIO_ACTIVE_HIGH>;
     71			color = <LED_COLOR_ID_BLUE>;
     72			default-state = "off";
     73			function = LED_FUNCTION_INDICATOR;
     74		};
     75	};
     76
     77	usb_id: usb-id {
     78		compatible = "linux,extcon-usb-gpio";
     79		id-gpio = <&msmgpio 117 GPIO_ACTIVE_HIGH>;
     80		pinctrl-names = "default";
     81		pinctrl-0 = <&usb_id_default>;
     82	};
     83};
     84
     85&blsp_i2c2 {
     86	status = "okay";
     87
     88	magnetometer@c {
     89		compatible = "asahi-kasei,ak09911";
     90		reg = <0x0c>;
     91
     92		vdd-supply = <&pm8916_l17>;
     93		vid-supply = <&pm8916_l6>;
     94
     95		reset-gpios = <&msmgpio 36 GPIO_ACTIVE_LOW>;
     96
     97		pinctrl-names = "default";
     98		pinctrl-0 = <&mag_reset_default>;
     99	};
    100
    101	accelerometer@1e {
    102		compatible = "kionix,kx023-1025";
    103		reg = <0x1e>;
    104
    105		interrupt-parent = <&msmgpio>;
    106		interrupts = <115 IRQ_TYPE_EDGE_RISING>;
    107
    108		vdd-supply = <&pm8916_l17>;
    109		vddio-supply = <&pm8916_l6>;
    110
    111		pinctrl-names = "default";
    112		pinctrl-0 = <&accel_irq_default>;
    113
    114		mount-matrix = "-1", "0", "0",
    115				"0", "1", "0",
    116				"0", "0", "1";
    117	};
    118
    119	proximity@39 {
    120		compatible = "avago,apds9930";
    121		reg = <0x39>;
    122
    123		interrupt-parent = <&msmgpio>;
    124		interrupts = <113 IRQ_TYPE_EDGE_FALLING>;
    125
    126		vdd-supply = <&pm8916_l17>;
    127		vddio-supply = <&pm8916_l6>;
    128
    129		led-max-microamp = <100000>;
    130		amstaos,proximity-diodes = <1>;
    131
    132		pinctrl-names = "default";
    133		pinctrl-0 = <&prox_irq_default>;
    134	};
    135
    136	regulator@3e {
    137		compatible = "ti,tps65132";
    138		reg = <0x3e>;
    139
    140		pinctrl-names = "default";
    141		pinctrl-0 = <&reg_lcd_en_default>;
    142
    143		reg_lcd_pos: outp {
    144			regulator-name = "outp";
    145			regulator-min-microvolt = <5400000>;
    146			regulator-max-microvolt = <5400000>;
    147			enable-gpios = <&msmgpio 97 GPIO_ACTIVE_HIGH>;
    148			regulator-active-discharge = <1>;
    149		};
    150
    151		reg_lcd_neg: outn {
    152			regulator-name = "outn";
    153			regulator-min-microvolt = <5400000>;
    154			regulator-max-microvolt = <5400000>;
    155			enable-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>;
    156			regulator-active-discharge = <1>;
    157		};
    158	};
    159};
    160
    161&blsp_i2c5 {
    162	status = "okay";
    163
    164	rmi4@70 {
    165		compatible = "syna,rmi4-i2c";
    166		reg = <0x70>;
    167		#address-cells = <1>;
    168		#size-cells = <0>;
    169
    170		interrupt-parent = <&msmgpio>;
    171		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
    172
    173		vdd-supply = <&pm8916_l17>;
    174		vio-supply = <&pm8916_l16>;
    175
    176		pinctrl-names = "default";
    177		pinctrl-0 = <&ts_irq_default>;
    178
    179		syna,startup-delay-ms = <100>;
    180
    181		rmi4-f01@1 {
    182			reg = <0x1>;
    183			syna,nosleep-mode = <1>; /* Allow sleeping */
    184		};
    185
    186		rmi4-f11@11 {
    187			reg = <0x11>;
    188			syna,sensor-type = <1>; /* Touchscreen */
    189		};
    190	};
    191};
    192
    193&blsp_i2c6 {
    194	status = "okay";
    195
    196	nfc@28 {
    197		compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
    198		reg = <0x28>;
    199
    200		interrupt-parent = <&msmgpio>;
    201		interrupts = <21 IRQ_TYPE_EDGE_RISING>;
    202
    203		enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
    204		firmware-gpios = <&msmgpio 2 GPIO_ACTIVE_HIGH>;
    205
    206		pinctrl-names = "default";
    207		pinctrl-0 = <&nfc_default>;
    208	};
    209};
    210
    211&blsp1_uart2 {
    212	status = "okay";
    213};
    214
    215&lpass {
    216	status = "okay";
    217};
    218
    219&pm8916_resin {
    220	status = "okay";
    221	linux,code = <KEY_VOLUMEDOWN>;
    222};
    223
    224&pm8916_vib {
    225	status = "okay";
    226};
    227
    228&pronto {
    229	status = "okay";
    230};
    231
    232&sdhc_1 {
    233	status = "okay";
    234
    235	pinctrl-names = "default", "sleep";
    236	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
    237	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
    238};
    239
    240&sdhc_2 {
    241	status = "okay";
    242
    243	pinctrl-names = "default", "sleep";
    244	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdhc2_cd_default>;
    245	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdhc2_cd_default>;
    246
    247	/*
    248	 * The Huawei device tree sets cd-gpios = <&msmgpio 38 GPIO_ACTIVE_HIGH>.
    249	 * However, gpio38 does not change its state when inserting/removing the
    250	 * SD card, it's just low all the time. The Huawei kernel seems to use
    251	 * polling for SD card detection instead.
    252	 *
    253	 * However, looking closer at the GPIO debug output it turns out that
    254	 * gpio56 switches its state when inserting/removing the SD card.
    255	 * It behaves just like gpio38 normally does. Usually GPIO56 is used as
    256	 * "UIM2_PRESENT", i.e. to check if a second SIM card is inserted.
    257	 * Maybe Huawei decided to replace the second SIM card slot with the
    258	 * SD card slot and forgot to re-route to gpio38.
    259	 */
    260	cd-gpios = <&msmgpio 56 GPIO_ACTIVE_LOW>;
    261};
    262
    263&sound {
    264	status = "okay";
    265
    266	model = "msm8916";
    267	audio-routing =
    268		"AMIC1", "MIC BIAS External1",
    269		"AMIC2", "MIC BIAS External2",
    270		"AMIC3", "MIC BIAS External1";
    271
    272	pinctrl-names = "default", "sleep";
    273	pinctrl-0 = <&cdc_pdm_lines_act>;
    274	pinctrl-1 = <&cdc_pdm_lines_sus>;
    275
    276	primary-dai-link {
    277		link-name = "WCD";
    278		cpu {
    279			sound-dai = <&lpass MI2S_PRIMARY>;
    280		};
    281		codec {
    282			sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
    283		};
    284	};
    285
    286	tertiary-dai-link {
    287		link-name = "WCD-Capture";
    288		cpu {
    289			sound-dai = <&lpass MI2S_TERTIARY>;
    290		};
    291		codec {
    292			sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
    293		};
    294	};
    295};
    296
    297&usb {
    298	status = "okay";
    299	extcon = <&usb_id>, <&usb_id>;
    300};
    301
    302&usb_hs_phy {
    303	extcon = <&usb_id>;
    304};
    305
    306&wcd_codec {
    307	qcom,micbias-lvl = <2800>;
    308	qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
    309	qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
    310	qcom,hphl-jack-type-normally-open;
    311};
    312
    313&smd_rpm_regulators {
    314	vdd_l1_l2_l3-supply = <&pm8916_s3>;
    315	vdd_l4_l5_l6-supply = <&pm8916_s4>;
    316	vdd_l7-supply = <&pm8916_s4>;
    317
    318	s3 {
    319		regulator-min-microvolt = <1200000>;
    320		regulator-max-microvolt = <1300000>;
    321	};
    322
    323	s4 {
    324		regulator-min-microvolt = <1800000>;
    325		regulator-max-microvolt = <2100000>;
    326	};
    327
    328	l1 {
    329		regulator-min-microvolt = <1225000>;
    330		regulator-max-microvolt = <1225000>;
    331	};
    332
    333	l2 {
    334		regulator-min-microvolt = <1200000>;
    335		regulator-max-microvolt = <1200000>;
    336	};
    337
    338	l4 {
    339		regulator-min-microvolt = <2050000>;
    340		regulator-max-microvolt = <2050000>;
    341	};
    342
    343	l5 {
    344		regulator-min-microvolt = <1800000>;
    345		regulator-max-microvolt = <1800000>;
    346	};
    347
    348	l6 {
    349		regulator-min-microvolt = <1800000>;
    350		regulator-max-microvolt = <1800000>;
    351	};
    352
    353	l7 {
    354		regulator-min-microvolt = <1800000>;
    355		regulator-max-microvolt = <1800000>;
    356	};
    357
    358	l8 {
    359		regulator-min-microvolt = <2950000>;
    360		regulator-max-microvolt = <2950000>;
    361	};
    362
    363	l9 {
    364		regulator-min-microvolt = <3300000>;
    365		regulator-max-microvolt = <3300000>;
    366	};
    367
    368	l10 {
    369		regulator-min-microvolt = <2700000>;
    370		regulator-max-microvolt = <2800000>;
    371	};
    372
    373	l11 {
    374		regulator-min-microvolt = <1800000>;
    375		regulator-max-microvolt = <2950000>;
    376		regulator-allow-set-load;
    377		regulator-system-load = <200000>;
    378	};
    379
    380	l12 {
    381		regulator-min-microvolt = <1800000>;
    382		regulator-max-microvolt = <2950000>;
    383	};
    384
    385	l13 {
    386		regulator-min-microvolt = <3075000>;
    387		regulator-max-microvolt = <3075000>;
    388	};
    389
    390	l14 {
    391		regulator-min-microvolt = <1800000>;
    392		regulator-max-microvolt = <3300000>;
    393	};
    394
    395	l15 {
    396		regulator-min-microvolt = <1800000>;
    397		regulator-max-microvolt = <3300000>;
    398	};
    399
    400	l16 {
    401		regulator-min-microvolt = <1800000>;
    402		regulator-max-microvolt = <1800000>;
    403	};
    404
    405	l17 {
    406		regulator-min-microvolt = <2850000>;
    407		regulator-max-microvolt = <2850000>;
    408	};
    409
    410	l18 {
    411		regulator-min-microvolt = <2700000>;
    412		regulator-max-microvolt = <2700000>;
    413	};
    414};
    415
    416&msmgpio {
    417	accel_irq_default: accel-irq-default {
    418		pins = "gpio115";
    419		function = "gpio";
    420
    421		drive-strength = <2>;
    422		bias-disable;
    423	};
    424
    425	gpio_keys_default: gpio-keys-default {
    426		pins = "gpio107";
    427		function = "gpio";
    428
    429		drive-strength = <2>;
    430		bias-pull-up;
    431	};
    432
    433	gpio_leds_default: gpio-leds-default {
    434		pins = "gpio8", "gpio9", "gpio10";
    435		function = "gpio";
    436
    437		drive-strength = <2>;
    438		bias-disable;
    439	};
    440
    441	nfc_default: nfc-default {
    442		pins = "gpio2", "gpio20", "gpio21";
    443		function = "gpio";
    444
    445		drive-strength = <2>;
    446		bias-disable;
    447	};
    448
    449	mag_reset_default: mag-reset-default {
    450		pins = "gpio36";
    451		function = "gpio";
    452
    453		drive-strength = <2>;
    454		bias-disable;
    455	};
    456
    457	prox_irq_default: prox-irq-default {
    458		pins = "gpio113";
    459		function = "gpio";
    460
    461		drive-strength = <2>;
    462		bias-disable;
    463	};
    464
    465	reg_lcd_en_default: reg-lcd-en-default {
    466		pins = "gpio32", "gpio97";
    467		function = "gpio";
    468
    469		drive-strength = <2>;
    470		bias-disable;
    471	};
    472
    473	sdhc2_cd_default: sdhc2-cd-default {
    474		pins = "gpio56";
    475		function = "gpio";
    476
    477		drive-strength = <2>;
    478		bias-disable;
    479	};
    480
    481	ts_irq_default: ts-irq-default {
    482		pins = "gpio13";
    483		function = "gpio";
    484
    485		drive-strength = <2>;
    486		bias-disable;
    487	};
    488
    489	usb_id_default: usb-id-default {
    490		pins = "gpio117";
    491		function = "gpio";
    492
    493		drive-strength = <8>;
    494		bias-pull-up;
    495	};
    496};