123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- // SPDX-License-Identifier: BSD-3-Clause
- /*
- * Copyright (c) 2021, Konrad Dybcio <[email protected]>
- */
- #include "sm8350.dtsi"
- #include "pm8350.dtsi"
- #include "pm8350b.dtsi"
- #include "pm8350c.dtsi"
- #include "pmk8350.dtsi"
- #include "pmr735a.dtsi"
- #include "pmr735b.dtsi"
- / {
- /*
- * Yes, you are correct, there is NO MORE {msm,board,pmic}-id on SM8350!
- * Adding it will cause the bootloader to go crazy and randomly crash
- * shortly after closing UEFI boot services.. Perhaps that has something
- * to do with the OS running inside a VM now..?
- */
- chassis-type = "handset";
- chosen {
- #address-cells = <2>;
- #size-cells = <2>;
- ranges;
- framebuffer: framebuffer@e1000000 {
- compatible = "simple-framebuffer";
- reg = <0 0xe1000000 0 0x2300000>;
- /* The display, even though it's 4K, initializes at 1080-ish p */
- width = <1096>;
- height = <2560>;
- stride = <(1096 * 4)>;
- format = "a8r8g8b8";
- /*
- * That's (going to be) a lot of clocks, but it's necessary due
- * to unused clk cleanup & no panel driver yet
- */
- clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
- <&gcc GCC_DISP_SF_AXI_CLK>;
- };
- };
- gpio-keys {
- compatible = "gpio-keys";
- /* For reasons still unknown, GAssist key and Camera Focus/Shutter don't work.. */
- key-vol-down {
- label = "Volume Down";
- linux,code = <KEY_VOLUMEDOWN>;
- gpios = <&pmk8350_gpios 3 GPIO_ACTIVE_LOW>;
- debounce-interval = <15>;
- linux,can-disable;
- gpio-key,wakeup;
- };
- };
- reserved-memory {
- cont_splash_mem: memory@e1000000 {
- reg = <0 0xe1000000 0 0x2300000>;
- no-map;
- };
- ramoops@ffc00000 {
- compatible = "ramoops";
- reg = <0 0xffc00000 0 0x100000>;
- console-size = <0x40000>;
- record-size = <0x1000>;
- no-map;
- };
- };
- };
- &adsp {
- status = "okay";
- firmware-name = "qcom/adsp.mbn";
- };
- &cdsp {
- status = "okay";
- firmware-name = "qcom/cdsp.mbn";
- };
- &i2c1 {
- status = "okay";
- clock-frequency = <1000000>;
- /* Some subset of SONY IMX663 camera sensor @ 38 */
- };
- &i2c2 {
- status = "okay";
- clock-frequency = <400000>;
- /* Richwave RTC6226 FM Radio Receiver @ 64 */
- };
- &i2c4 {
- status = "okay";
- clock-frequency = <400000>;
- /* Samsung Touchscreen (needs I2C GPI DMA) @ 48 */
- };
- &i2c11 {
- status = "okay";
- clock-frequency = <1000000>;
- cs35l41_l: cs35l41@40 {
- compatible = "cirrus,cs35l41";
- reg = <0x40>;
- interrupt-parent = <&tlmm>;
- interrupts = <36 IRQ_TYPE_LEVEL_LOW>;
- reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
- cirrus,boost-peak-milliamp = <4000>;
- cirrus,boost-ind-nanohenry = <1000>;
- cirrus,boost-cap-microfarad = <15>;
- cirrus,asp-sdout-hiz = <3>;
- cirrus,gpio2-src-select = <2>;
- cirrus,gpio2-output-enable;
- #sound-dai-cells = <1>;
- };
- cs35l41_r: cs35l41@41 {
- compatible = "cirrus,cs35l41";
- reg = <0x41>;
- interrupt-parent = <&tlmm>;
- interrupts = <36 IRQ_TYPE_LEVEL_LOW>;
- reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
- cirrus,boost-peak-milliamp = <4000>;
- cirrus,boost-ind-nanohenry = <1000>;
- cirrus,boost-cap-microfarad = <15>;
- cirrus,asp-sdout-hiz = <3>;
- cirrus,gpio2-src-select = <2>;
- cirrus,gpio2-output-enable;
- #sound-dai-cells = <1>;
- };
- };
- &i2c12 {
- status = "okay";
- /* Clock frequency was not specified downstream, let's park it to 100 KHz */
- clock-frequency = <100000>;
- /* AMS TCS3490 RGB+IR color sensor @ 72 */
- };
- &i2c13 {
- status = "okay";
- /* Clock frequency was not specified downstream, let's park it to 100 KHz */
- clock-frequency = <100000>;
- /* Qualcomm PM8008i/PM8008j (?) @ 8, 9, c, d */
- /* Dialog SLG51000 CMIC @ 75 */
- };
- &i2c15 {
- status = "okay";
- clock-frequency = <400000>;
- /* NXP SN1X0 NFC @ 28 */
- };
- &i2c17 {
- status = "okay";
- clock-frequency = <1000000>;
- /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */
- };
- &ipa {
- status = "okay";
- memory-region = <&pil_ipa_fw_mem>;
- firmware-name = "qcom/ipa_fws.mbn";
- };
- &mpss {
- status = "okay";
- firmware-name = "qcom/modem.mbn";
- };
- &pmk8350_rtc {
- status = "okay";
- };
- &pon_pwrkey {
- status = "okay";
- };
- &pon_resin {
- status = "okay";
- linux,code = <KEY_VOLUMEUP>;
- };
- &qupv3_id_0 {
- status = "okay";
- };
- &qupv3_id_1 {
- status = "okay";
- };
- &qupv3_id_2 {
- status = "okay";
- };
- &slpi {
- status = "okay";
- firmware-name = "qcom/slpi.mbn";
- };
- &spi14 {
- status = "okay";
- /* NXP SN1X0 NFC Secure Element @ 0 */
- };
- &tlmm {
- gpio-reserved-ranges = <44 4>;
- ts_int_default: ts-int-default-state {
- pins = "gpio23";
- function = "gpio";
- drive-strength = <2>;
- bias-disable;
- input-enable;
- };
- };
- /* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
- &ufs_mem_hc { status = "disabled"; };
- &ufs_mem_phy { status = "disabled"; };
- /* TODO: Make USB3 work (perhaps needs regulators for higher-current operation?) */
- &usb_1 {
- status = "okay";
- qcom,select-utmi-as-pipe-clk;
- };
- &usb_1_dwc3 {
- dr_mode = "peripheral";
- maximum-speed = "high-speed";
- phys = <&usb_1_hsphy>;
- phy-names = "usb2-phy";
- };
- &usb_1_hsphy {
- status = "okay";
- };
- &usb_1_qmpphy {
- status = "okay";
- };
|