Commit 499e8d93 authored by Bjorn Andersson's avatar Bjorn Andersson

Merge tag 'qcom-arm64-for-6.7-2' into arm64-for-6.8

This merges leftover patches originally targetted for 6.7, but wasn't
propagated in time.

This describes the USB components on IPQ5018, and one of the SPI
controllers. The IPQ9574 RDP descriptions are refactored to keep common
dtsi, and the WPS button is described.

GPLL0 is described as a source clock for the mailbox (APCS clock)
across IPQ5332, IPQ6018, IPQ8074, and IPQ9574.

On MSM8916, the asynchronous packet router (APR) is described on the
DSP remoteproc, and audio services are described. Audio and modem are
then enabled on a range of MSM8916- and MSM8939-based devices.
GPU support is enabled on the Samsung Galaxy Tab devices, and RGB LED is
added to BQ Aquaris X5 and BQ Aquaris M5.

The QRB4210 RB2 is no longer hard coded to be in peripheral mode, and
RPMh sleep stats are added to the SA8775P platform.

Camera Control Interface (CCI) controllers are introduced on SC7280.

One of the DP PHY compatibles on X13s is updated, to reflect that the it
should operate in eDP mode. And missing camera LED pin configuration is
added.

Flash LED is described fo the SDM845-based OnePlus and Xiaomi devices.

Missing description of USB PHY regulators are added to Sony Xperia 10
IV, and modem and ath10k-based WiFi are enabled.
The uart for the Bluetooth controller on the SM6375 is added as well.

The true rng block is added for SA8775P, SC7280, SM8450, an SM8550.
parents b85ea95d c493a2b3
...@@ -186,9 +186,19 @@ properties: ...@@ -186,9 +186,19 @@ properties:
- items: - items:
- enum: - enum:
- microsoft,dempsey
- microsoft,makepeace
- microsoft,moneypenny
- samsung,s3ve3g - samsung,s3ve3g
- const: qcom,msm8226 - const: qcom,msm8226
- items:
- enum:
- microsoft,superman-lte
- microsoft,tesla
- const: qcom,msm8926
- const: qcom,msm8226
- items: - items:
- enum: - enum:
- longcheer,l9100 - longcheer,l9100
......
...@@ -67,6 +67,18 @@ data-pins { ...@@ -67,6 +67,18 @@ data-pins {
}; };
}; };
&usb {
status = "okay";
};
&usb_dwc {
dr_mode = "host";
};
&usbphy0 {
status = "okay";
};
&xo_board_clk { &xo_board_clk {
clock-frequency = <24000000>; clock-frequency = <24000000>;
}; };
...@@ -94,6 +94,19 @@ soc: soc@0 { ...@@ -94,6 +94,19 @@ soc: soc@0 {
#size-cells = <1>; #size-cells = <1>;
ranges = <0 0 0 0xffffffff>; ranges = <0 0 0 0xffffffff>;
usbphy0: phy@5b000 {
compatible = "qcom,ipq5018-usb-hsphy";
reg = <0x0005b000 0x120>;
clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>;
resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
#phy-cells = <0>;
status = "disabled";
};
tlmm: pinctrl@1000000 { tlmm: pinctrl@1000000 {
compatible = "qcom,ipq5018-tlmm"; compatible = "qcom,ipq5018-tlmm";
reg = <0x01000000 0x300000>; reg = <0x01000000 0x300000>;
...@@ -146,6 +159,16 @@ sdhc_1: mmc@7804000 { ...@@ -146,6 +159,16 @@ sdhc_1: mmc@7804000 {
status = "disabled"; status = "disabled";
}; };
blsp_dma: dma-controller@7884000 {
compatible = "qcom,bam-v1.7.0";
reg = <0x07884000 0x1d000>;
interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gcc GCC_BLSP1_AHB_CLK>;
clock-names = "bam_clk";
#dma-cells = <1>;
qcom,ee = <0>;
};
blsp1_uart1: serial@78af000 { blsp1_uart1: serial@78af000 {
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
reg = <0x078af000 0x200>; reg = <0x078af000 0x200>;
...@@ -156,6 +179,61 @@ blsp1_uart1: serial@78af000 { ...@@ -156,6 +179,61 @@ blsp1_uart1: serial@78af000 {
status = "disabled"; status = "disabled";
}; };
blsp1_spi1: spi@78b5000 {
compatible = "qcom,spi-qup-v2.2.1";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x078b5000 0x600>;
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
<&gcc GCC_BLSP1_AHB_CLK>;
clock-names = "core", "iface";
dmas = <&blsp_dma 4>, <&blsp_dma 5>;
dma-names = "tx", "rx";
status = "disabled";
};
usb: usb@8af8800 {
compatible = "qcom,ipq5018-dwc3", "qcom,dwc3";
reg = <0x08af8800 0x400>;
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hs_phy_irq";
clocks = <&gcc GCC_USB0_MASTER_CLK>,
<&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
<&gcc GCC_USB0_SLEEP_CLK>,
<&gcc GCC_USB0_MOCK_UTMI_CLK>;
clock-names = "core",
"iface",
"sleep",
"mock_utmi";
resets = <&gcc GCC_USB0_BCR>;
qcom,select-utmi-as-pipe-clk;
#address-cells = <1>;
#size-cells = <1>;
ranges;
status = "disabled";
usb_dwc: usb@8a00000 {
compatible = "snps,dwc3";
reg = <0x08a00000 0xe000>;
clocks = <&gcc GCC_USB0_MOCK_UTMI_CLK>;
clock-names = "ref";
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
phy-names = "usb2-phy";
phys = <&usbphy0>;
tx-fifo-resize;
snps,is-utmi-l1-suspend;
snps,hird-threshold = /bits/ 8 <0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_u3_susphy_quirk;
};
};
intc: interrupt-controller@b000000 { intc: interrupt-controller@b000000 {
compatible = "qcom,msm-qgic2"; compatible = "qcom,msm-qgic2";
reg = <0x0b000000 0x1000>, /* GICD */ reg = <0x0b000000 0x1000>, /* GICD */
......
...@@ -91,11 +91,19 @@ memory@40000000 { ...@@ -91,11 +91,19 @@ memory@40000000 {
}; };
cpu_opp_table: opp-table-cpu { cpu_opp_table: opp-table-cpu {
compatible = "operating-points-v2"; compatible = "operating-points-v2-kryo-cpu";
opp-shared; opp-shared;
nvmem-cells = <&cpu_speed_bin>;
opp-1488000000 { opp-1100000000 {
opp-hz = /bits/ 64 <1488000000>; opp-hz = /bits/ 64 <1100000000>;
opp-supported-hw = <0x7>;
clock-latency-ns = <200000>;
};
opp-1500000000 {
opp-hz = /bits/ 64 <1500000000>;
opp-supported-hw = <0x3>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
}; };
...@@ -163,6 +171,11 @@ qfprom: efuse@a4000 { ...@@ -163,6 +171,11 @@ qfprom: efuse@a4000 {
reg = <0x000a4000 0x721>; reg = <0x000a4000 0x721>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
cpu_speed_bin: cpu-speed-bin@1d {
reg = <0x1d 0x2>;
bits = <7 2>;
};
}; };
rng: rng@e3000 { rng: rng@e3000 {
...@@ -390,8 +403,8 @@ apcs_glb: mailbox@b111000 { ...@@ -390,8 +403,8 @@ apcs_glb: mailbox@b111000 {
"qcom,ipq6018-apcs-apps-global"; "qcom,ipq6018-apcs-apps-global";
reg = <0x0b111000 0x1000>; reg = <0x0b111000 0x1000>;
#clock-cells = <1>; #clock-cells = <1>;
clocks = <&a53pll>, <&xo_board>; clocks = <&a53pll>, <&xo_board>, <&gcc GPLL0>;
clock-names = "pll", "xo"; clock-names = "pll", "xo", "gpll0";
#mbox-cells = <1>; #mbox-cells = <1>;
}; };
......
...@@ -611,8 +611,8 @@ apcs_glb: mailbox@b111000 { ...@@ -611,8 +611,8 @@ apcs_glb: mailbox@b111000 {
compatible = "qcom,ipq6018-apcs-apps-global"; compatible = "qcom,ipq6018-apcs-apps-global";
reg = <0x0 0x0b111000 0x0 0x1000>; reg = <0x0 0x0b111000 0x0 0x1000>;
#clock-cells = <1>; #clock-cells = <1>;
clocks = <&a53pll>, <&xo>; clocks = <&a53pll>, <&xo>, <&gcc GPLL0>;
clock-names = "pll", "xo"; clock-names = "pll", "xo", "gpll0";
#mbox-cells = <1>; #mbox-cells = <1>;
}; };
......
...@@ -708,8 +708,8 @@ apcs_glb: mailbox@b111000 { ...@@ -708,8 +708,8 @@ apcs_glb: mailbox@b111000 {
compatible = "qcom,ipq8074-apcs-apps-global", compatible = "qcom,ipq8074-apcs-apps-global",
"qcom,ipq6018-apcs-apps-global"; "qcom,ipq6018-apcs-apps-global";
reg = <0x0b111000 0x1000>; reg = <0x0b111000 0x1000>;
clocks = <&a53pll>, <&xo>; clocks = <&a53pll>, <&xo>, <&gcc GPLL0>;
clock-names = "pll", "xo"; clock-names = "pll", "xo", "gpll0";
#clock-cells = <1>; #clock-cells = <1>;
#mbox-cells = <1>; #mbox-cells = <1>;
......
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* IPQ9574 RDP board common device tree source
*
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "ipq9574.dtsi"
/ {
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
regulator_fixed_3p3: s3300 {
compatible = "regulator-fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
regulator-name = "fixed_3p3";
};
regulator_fixed_0p925: s0925 {
compatible = "regulator-fixed";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <925000>;
regulator-boot-on;
regulator-always-on;
regulator-name = "fixed_0p925";
};
gpio-keys {
compatible = "gpio-keys";
pinctrl-0 = <&gpio_keys_default>;
pinctrl-names = "default";
button-wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
};
&blsp1_spi0 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
flash@0 {
compatible = "micron,n25q128a11", "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
mp5496_l2: l2 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
};
};
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm {
spi_0_pins: spi-0-state {
pins = "gpio11", "gpio12", "gpio13", "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-disable;
};
gpio_keys_default: gpio-keys-default-state {
pins = "gpio37";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
};
&usb_0_dwc3 {
dr_mode = "host";
};
&usb_0_qmpphy {
vdda-pll-supply = <&mp5496_l2>;
vdda-phy-supply = <&regulator_fixed_0p925>;
status = "okay";
};
&usb_0_qusbphy {
vdd-supply = <&regulator_fixed_0p925>;
vdda-pll-supply = <&mp5496_l2>;
vdda-phy-dpdm-supply = <&regulator_fixed_3p3>;
status = "okay";
};
&usb3 {
status = "okay";
};
&xo_board_clk {
clock-frequency = <24000000>;
};
...@@ -8,58 +8,12 @@ ...@@ -8,58 +8,12 @@
/dts-v1/; /dts-v1/;
#include "ipq9574.dtsi" #include "ipq9574-rdp-common.dtsi"
/ { / {
model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C2"; model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C2";
compatible = "qcom,ipq9574-ap-al02-c2", "qcom,ipq9574"; compatible = "qcom,ipq9574-ap-al02-c2", "qcom,ipq9574";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&blsp1_spi0 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
flash@0 {
compatible = "micron,n25q128a11", "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
};
}; };
&sdhc_1 { &sdhc_1 {
...@@ -74,10 +28,6 @@ &sdhc_1 { ...@@ -74,10 +28,6 @@ &sdhc_1 {
status = "okay"; status = "okay";
}; };
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm { &tlmm {
sdc_default_state: sdc-default-state { sdc_default_state: sdc-default-state {
clk-pins { clk-pins {
...@@ -110,15 +60,4 @@ rclk-pins { ...@@ -110,15 +60,4 @@ rclk-pins {
bias-pull-down; bias-pull-down;
}; };
}; };
spi_0_pins: spi-0-state {
pins = "gpio11", "gpio12", "gpio13", "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-disable;
};
};
&xo_board_clk {
clock-frequency = <24000000>;
}; };
...@@ -8,69 +8,11 @@ ...@@ -8,69 +8,11 @@
/dts-v1/; /dts-v1/;
#include "ipq9574.dtsi" #include "ipq9574-rdp-common.dtsi"
/ { / {
model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C7"; model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C7";
compatible = "qcom,ipq9574-ap-al02-c7", "qcom,ipq9574"; compatible = "qcom,ipq9574-ap-al02-c7", "qcom,ipq9574";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
regulator_fixed_3p3: s3300 {
compatible = "regulator-fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
regulator-name = "fixed_3p3";
};
regulator_fixed_0p925: s0925 {
compatible = "regulator-fixed";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <925000>;
regulator-boot-on;
regulator-always-on;
regulator-name = "fixed_0p925";
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
mp5496_l2: l2 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
};
}; };
&sdhc_1 { &sdhc_1 {
...@@ -85,10 +27,6 @@ &sdhc_1 { ...@@ -85,10 +27,6 @@ &sdhc_1 {
status = "okay"; status = "okay";
}; };
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm { &tlmm {
sdc_default_state: sdc-default-state { sdc_default_state: sdc-default-state {
clk-pins { clk-pins {
...@@ -122,30 +60,3 @@ rclk-pins { ...@@ -122,30 +60,3 @@ rclk-pins {
}; };
}; };
}; };
&usb_0_dwc3 {
dr_mode = "host";
};
&usb_0_qmpphy {
vdda-pll-supply = <&mp5496_l2>;
vdda-phy-supply = <&regulator_fixed_0p925>;
status = "okay";
};
&usb_0_qusbphy {
vdd-supply = <&regulator_fixed_0p925>;
vdda-pll-supply = <&mp5496_l2>;
vdda-phy-dpdm-supply = <&regulator_fixed_3p3>;
status = "okay";
};
&usb3 {
status = "okay";
};
&xo_board_clk {
clock-frequency = <24000000>;
};
...@@ -8,73 +8,10 @@ ...@@ -8,73 +8,10 @@
/dts-v1/; /dts-v1/;
#include "ipq9574.dtsi" #include "ipq9574-rdp-common.dtsi"
/ { / {
model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C6"; model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C6";
compatible = "qcom,ipq9574-ap-al02-c6", "qcom,ipq9574"; compatible = "qcom,ipq9574-ap-al02-c6", "qcom,ipq9574";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&blsp1_spi0 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
flash@0 {
compatible = "micron,n25q128a11", "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
};
};
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm {
spi_0_pins: spi-0-state {
pins = "gpio11", "gpio12", "gpio13", "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-disable;
};
};
&xo_board_clk {
clock-frequency = <24000000>;
}; };
...@@ -8,73 +8,10 @@ ...@@ -8,73 +8,10 @@
/dts-v1/; /dts-v1/;
#include "ipq9574.dtsi" #include "ipq9574-rdp-common.dtsi"
/ { / {
model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C8"; model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C8";
compatible = "qcom,ipq9574-ap-al02-c8", "qcom,ipq9574"; compatible = "qcom,ipq9574-ap-al02-c8", "qcom,ipq9574";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&blsp1_spi0 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
flash@0 {
compatible = "micron,n25q128a11", "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
};
};
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm {
spi_0_pins: spi-0-state {
pins = "gpio11", "gpio12", "gpio13", "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-disable;
};
};
&xo_board_clk {
clock-frequency = <24000000>;
}; };
...@@ -8,73 +8,9 @@ ...@@ -8,73 +8,9 @@
/dts-v1/; /dts-v1/;
#include "ipq9574.dtsi" #include "ipq9574-rdp-common.dtsi"
/ { / {
model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C9"; model = "Qualcomm Technologies, Inc. IPQ9574/AP-AL02-C9";
compatible = "qcom,ipq9574-ap-al02-c9", "qcom,ipq9574"; compatible = "qcom,ipq9574-ap-al02-c9", "qcom,ipq9574";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&blsp1_spi0 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
flash@0 {
compatible = "micron,n25q128a11", "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
&blsp1_uart2 {
pinctrl-0 = <&uart2_pins>;
pinctrl-names = "default";
status = "okay";
};
&rpm_requests {
regulators {
compatible = "qcom,rpm-mp5496-regulators";
ipq9574_s1: s1 {
/*
* During kernel bootup, the SoC runs at 800MHz with 875mV set by the bootloaders.
* During regulator registration, kernel not knowing the initial voltage,
* considers it as zero and brings up the regulators with minimum supported voltage.
* Update the regulator-min-microvolt with SVS voltage of 725mV so that
* the regulators are brought up with 725mV which is sufficient for all the
* corner parts to operate at 800MHz
*/
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1075000>;
};
};
};
&sleep_clk {
clock-frequency = <32000>;
};
&tlmm {
spi_0_pins: spi-0-state {
pins = "gpio11", "gpio12", "gpio13", "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-disable;
};
};
&xo_board_clk {
clock-frequency = <24000000>;
}; };
...@@ -106,42 +106,56 @@ memory@40000000 { ...@@ -106,42 +106,56 @@ memory@40000000 {
}; };
cpu_opp_table: opp-table-cpu { cpu_opp_table: opp-table-cpu {
compatible = "operating-points-v2"; compatible = "operating-points-v2-kryo-cpu";
opp-shared; opp-shared;
nvmem-cells = <&cpu_speed_bin>;
opp-936000000 { opp-936000000 {
opp-hz = /bits/ 64 <936000000>; opp-hz = /bits/ 64 <936000000>;
opp-microvolt = <725000>; opp-microvolt = <725000>;
opp-supported-hw = <0xf>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
opp-1104000000 { opp-1104000000 {
opp-hz = /bits/ 64 <1104000000>; opp-hz = /bits/ 64 <1104000000>;
opp-microvolt = <787500>; opp-microvolt = <787500>;
opp-supported-hw = <0xf>;
clock-latency-ns = <200000>;
};
opp-1200000000 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <862500>;
opp-supported-hw = <0xf>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
opp-1416000000 { opp-1416000000 {
opp-hz = /bits/ 64 <1416000000>; opp-hz = /bits/ 64 <1416000000>;
opp-microvolt = <862500>; opp-microvolt = <862500>;
opp-supported-hw = <0x7>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
opp-1488000000 { opp-1488000000 {
opp-hz = /bits/ 64 <1488000000>; opp-hz = /bits/ 64 <1488000000>;
opp-microvolt = <925000>; opp-microvolt = <925000>;
opp-supported-hw = <0x7>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
opp-1800000000 { opp-1800000000 {
opp-hz = /bits/ 64 <1800000000>; opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <987500>; opp-microvolt = <987500>;
opp-supported-hw = <0x5>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
opp-2208000000 { opp-2208000000 {
opp-hz = /bits/ 64 <2208000000>; opp-hz = /bits/ 64 <2208000000>;
opp-microvolt = <1062500>; opp-microvolt = <1062500>;
opp-supported-hw = <0x1>;
clock-latency-ns = <200000>; clock-latency-ns = <200000>;
}; };
}; };
...@@ -223,6 +237,11 @@ qfprom: efuse@a4000 { ...@@ -223,6 +237,11 @@ qfprom: efuse@a4000 {
reg = <0x000a4000 0x5a1>; reg = <0x000a4000 0x5a1>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
cpu_speed_bin: cpu-speed-bin@15 {
reg = <0x15 0x2>;
bits = <7 2>;
};
}; };
cryptobam: dma-controller@704000 { cryptobam: dma-controller@704000 {
...@@ -652,8 +671,8 @@ apcs_glb: mailbox@b111000 { ...@@ -652,8 +671,8 @@ apcs_glb: mailbox@b111000 {
"qcom,ipq6018-apcs-apps-global"; "qcom,ipq6018-apcs-apps-global";
reg = <0x0b111000 0x1000>; reg = <0x0b111000 0x1000>;
#clock-cells = <1>; #clock-cells = <1>;
clocks = <&a73pll>, <&xo_board_clk>; clocks = <&a73pll>, <&xo_board_clk>, <&gcc GPLL0>;
clock-names = "pll", "xo"; clock-names = "pll", "xo", "gpll0";
#mbox-cells = <1>; #mbox-cells = <1>;
}; };
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
...@@ -22,6 +24,19 @@ chosen { ...@@ -22,6 +24,19 @@ chosen {
stdout-path = "serial0"; stdout-path = "serial0";
}; };
reserved-memory {
/delete-node/ reserved@86680000;
/delete-node/ rmtfs@86700000;
rmtfs: rmtfs@86680000 {
compatible = "qcom,rmtfs-mem";
reg = <0x0 0x86680000 0x0 0x160000>;
no-map;
qcom,client-id = <1>;
};
};
gpio-keys { gpio-keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
...@@ -50,6 +65,17 @@ led-0 { ...@@ -50,6 +65,17 @@ led-0 {
}; };
}; };
reg_headphones_avdd: regulator-headphones-avdd {
compatible = "regulator-fixed";
regulator-name = "headphones_avdd";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&tlmm 121 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-0 = <&headphones_avdd_default>;
pinctrl-names = "default";
};
usb_id: usb-id { usb_id: usb-id {
compatible = "linux,extcon-usb-gpio"; compatible = "linux,extcon-usb-gpio";
id-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>; id-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
...@@ -58,8 +84,41 @@ usb_id: usb-id { ...@@ -58,8 +84,41 @@ usb_id: usb-id {
}; };
}; };
&blsp_uart2 { &blsp_i2c3 {
status = "okay"; status = "okay";
headphones: audio-codec@10 {
compatible = "asahi-kasei,ak4375";
reg = <0x10>;
avdd-supply = <&reg_headphones_avdd>;
tvdd-supply = <&pm8916_l6>;
pdn-gpios = <&tlmm 114 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&headphones_pdn_default>;
pinctrl-names = "default";
#sound-dai-cells = <0>;
};
speaker_codec_top: audio-codec@34 {
compatible = "nxp,tfa9897";
reg = <0x34>;
vddd-supply = <&pm8916_l6>;
rcv-gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&speaker_top_default>;
pinctrl-names = "default";
sound-name-prefix = "Speaker Top";
#sound-dai-cells = <0>;
};
speaker_codec_bottom: audio-codec@36 {
compatible = "nxp,tfa9897";
reg = <0x36>;
vddd-supply = <&pm8916_l6>;
rcv-gpios = <&tlmm 111 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&speaker_bottom_default>;
pinctrl-names = "default";
sound-name-prefix = "Speaker Bottom";
#sound-dai-cells = <0>;
};
}; };
&blsp_i2c4 { &blsp_i2c4 {
...@@ -153,6 +212,22 @@ led@1 { ...@@ -153,6 +212,22 @@ led@1 {
}; };
}; };
&blsp_uart2 {
status = "okay";
};
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5000000>;
};
&pm8916_codec {
qcom,micbias1-ext-cap;
qcom,micbias-lvl = <2800>;
qcom,mbhc-vthreshold-low = <75 100 120 180 500>;
qcom,mbhc-vthreshold-high = <75 100 120 180 500>;
qcom,hphl-jack-type-normally-open;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -169,6 +244,17 @@ &pm8916_vib { ...@@ -169,6 +244,17 @@ &pm8916_vib {
status = "okay"; status = "okay";
}; };
&q6afedai {
dai@18 {
reg = <SECONDARY_MI2S_RX>;
qcom,sd-lines = <0>;
};
dai@22 {
reg = <QUATERNARY_MI2S_RX>;
qcom,sd-lines = <0>;
};
};
&sdhc_1 { &sdhc_1 {
status = "okay"; status = "okay";
}; };
...@@ -183,6 +269,54 @@ &sdhc_2 { ...@@ -183,6 +269,54 @@ &sdhc_2 {
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
}; };
&sound {
/* Add pin switches for speakers to allow disabling them individually */
model = "alcatel-idol3";
widgets =
"Speaker", "Speaker Top",
"Speaker", "Speaker Bottom";
pin-switches = "Speaker Top", "Speaker Bottom";
audio-routing =
"Speaker Top", "Speaker Top OUT",
"Speaker Bottom", "Speaker Bottom OUT",
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
pinctrl-0 = <&cdc_pdm_default &pri_mi2s_default &pri_mi2s_ws_default &sec_mi2s_default>;
pinctrl-1 = <&cdc_pdm_sleep &pri_mi2s_sleep &pri_mi2s_ws_sleep &sec_mi2s_sleep>;
pinctrl-names = "default", "sleep";
sound_link_backend2: backend2-dai-link {
link-name = "Quaternary MI2S";
cpu {
sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&speaker_codec_top>, <&speaker_codec_bottom>;
};
};
};
&sound_link_backend0 {
/* Primary MI2S is not used, replace with Secondary MI2S for headphones */
link-name = "Secondary MI2S";
cpu {
sound-dai = <&q6afedai SECONDARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&headphones>;
};
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&usb_id>, <&usb_id>; extcon = <&usb_id>, <&usb_id>;
...@@ -212,6 +346,15 @@ &wcnss_mem { ...@@ -212,6 +346,15 @@ &wcnss_mem {
status = "okay"; status = "okay";
}; };
/* Only some of the pins are used */
&pri_mi2s_default {
pins = "gpio113", "gpio115";
};
&pri_mi2s_sleep {
pins = "gpio113", "gpio115";
};
&tlmm { &tlmm {
accel_int_default: accel-int-default-state { accel_int_default: accel-int-default-state {
pins = "gpio31"; pins = "gpio31";
...@@ -245,6 +388,20 @@ gyro_int_default: gyro-int-default-state { ...@@ -245,6 +388,20 @@ gyro_int_default: gyro-int-default-state {
bias-disable; bias-disable;
}; };
headphones_avdd_default: headphones-avdd-default-state {
pins = "gpio121";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
headphones_pdn_default: headphones-pdn-default-state {
pins = "gpio114";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
/* /*
* The OEM wired an additional GPIO to be asserted so that * The OEM wired an additional GPIO to be asserted so that
* the si-en,sn3190 LED IC works. Since this GPIO is not * the si-en,sn3190 LED IC works. Since this GPIO is not
...@@ -291,6 +448,20 @@ sdc2_cd_default: sdc2-cd-default-state { ...@@ -291,6 +448,20 @@ sdc2_cd_default: sdc2-cd-default-state {
bias-disable; bias-disable;
}; };
speaker_bottom_default: speaker-bottom-default-state {
pins = "gpio111";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
speaker_top_default: speaker-top-default-state {
pins = "gpio50";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
ts_int_reset_default: ts-int-reset-default-state { ts_int_reset_default: ts-int-reset-default-state {
pins = "gpio13", "gpio100"; pins = "gpio13", "gpio100";
function = "gpio"; function = "gpio";
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
...@@ -130,6 +132,18 @@ &blsp_uart2 { ...@@ -130,6 +132,18 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5500000>;
};
&pm8916_codec {
qcom,micbias-lvl = <2800>;
qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
qcom,micbias1-ext-cap;
qcom,hphl-jack-type-normally-open;
};
&pm8916_rpm_regulators { &pm8916_rpm_regulators {
pm8916_l17: l17 { pm8916_l17: l17 {
regulator-min-microvolt = <2850000>; regulator-min-microvolt = <2850000>;
...@@ -151,6 +165,13 @@ &sdhc_2 { ...@@ -151,6 +165,13 @@ &sdhc_2 {
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
}; };
&sound {
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&usb_id>, <&usb_id>; extcon = <&usb_id>, <&usb_id>;
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
...@@ -25,17 +27,26 @@ chosen { ...@@ -25,17 +27,26 @@ chosen {
/* /*
* For some reason, the signed wcnss firmware is not relocatable. * For some reason, the signed wcnss firmware is not relocatable.
* It must be loaded at 0x8b600000. All other firmware is relocatable, * It must be loaded at 0x8b600000. Unfortunately, this also means that
* so place wcnss at the fixed address and then all other firmware * mpss_mem does not fit when loaded to the typical address at 0x86800000.
* regions will be automatically allocated at a fitting place. *
* Load wcnss_mem to the fixed address and relocate mpss_mem to the next
* working higher address. For some reason the modem firmware does not
* boot when placed at 0x8a800000 to 0x8e800000.
*/ */
reserved-memory { reserved-memory {
/delete-node/ mpss@86800000;
/delete-node/ wcnss; /delete-node/ wcnss;
wcnss_mem: wcnss@8b600000 { wcnss_mem: wcnss@8b600000 {
reg = <0x0 0x8b600000 0x0 0x600000>; reg = <0x0 0x8b600000 0x0 0x600000>;
no-map; no-map;
}; };
mpss_mem: mpss@8e800000 {
reg = <0x0 0x8e800000 0x0 0x5000000>;
no-map;
};
}; };
gpio-keys { gpio-keys {
...@@ -225,6 +236,13 @@ &blsp_uart2 { ...@@ -225,6 +236,13 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&pm8916_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;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -254,6 +272,13 @@ &sdhc_2 { ...@@ -254,6 +272,13 @@ &sdhc_2 {
non-removable; non-removable;
}; };
&sound {
audio-routing =
"AMIC1", "MIC BIAS Internal1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS Internal3";
};
&usb { &usb {
status = "okay"; status = "okay";
dr_mode = "peripheral"; dr_mode = "peripheral";
......
...@@ -3,9 +3,12 @@ ...@@ -3,9 +3,12 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
/ { / {
model = "BQ Aquaris X5 (Longcheer L8910)"; model = "BQ Aquaris X5 (Longcheer L8910)";
...@@ -22,6 +25,16 @@ chosen { ...@@ -22,6 +25,16 @@ chosen {
stdout-path = "serial0"; stdout-path = "serial0";
}; };
speaker_amp: audio-amplifier {
compatible = "awinic,aw8738";
mode-gpios = <&tlmm 114 GPIO_ACTIVE_HIGH>;
awinic,mode = <5>;
sound-name-prefix = "Speaker Amp";
pinctrl-0 = <&spk_ext_pa_default>;
pinctrl-names = "default";
};
flash-led-controller { flash-led-controller {
compatible = "ocs,ocp8110"; compatible = "ocs,ocp8110";
enable-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>; enable-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
...@@ -74,6 +87,46 @@ usb_id: usb-id { ...@@ -74,6 +87,46 @@ usb_id: usb-id {
}; };
}; };
&blsp_i2c2 {
status = "okay";
led-controller@30 {
compatible = "kinetic,ktd2026";
reg = <0x30>;
#address-cells = <1>;
#size-cells = <0>;
vin-supply = <&pm8916_l17>;
vio-supply = <&pm8916_l6>;
pinctrl-0 = <&status_led_default>;
pinctrl-names = "default";
multi-led {
color = <LED_COLOR_ID_RGB>;
function = LED_FUNCTION_STATUS;
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_RED>;
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_GREEN>;
};
led@2 {
reg = <2>;
color = <LED_COLOR_ID_BLUE>;
};
};
};
};
&blsp_i2c3 { &blsp_i2c3 {
status = "okay"; status = "okay";
...@@ -107,6 +160,27 @@ &blsp_uart2 { ...@@ -107,6 +160,27 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5000000>;
};
&pm8916_codec {
qcom,micbias-lvl = <2800>;
qcom,mbhc-vthreshold-low = <75 100 120 180 500>;
qcom,mbhc-vthreshold-high = <75 100 120 180 500>;
qcom,hphl-jack-type-normally-open;
};
&pm8916_gpios {
status_led_default: status-led-default-state {
pins = "gpio3";
function = PMIC_GPIO_FUNC_NORMAL;
power-source = <PM8916_GPIO_VPH>;
bias-disable;
output-high;
};
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -137,6 +211,28 @@ &sdhc_2 { ...@@ -137,6 +211,28 @@ &sdhc_2 {
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
}; };
&sound {
/*
* Provide widgets/pin-switches to allow enabling speaker separately.
* The hardware does not provide a way to disable the output via the
* headphone jack when the speaker is enabled.
*/
model = "bq-paella";
widgets =
"Speaker", "Speaker",
"Headphone", "Headphones";
pin-switches = "Speaker";
audio-routing =
"Speaker", "Speaker Amp OUT",
"Speaker Amp IN", "HPH_R",
"Headphones", "HPH_L",
"Headphones", "HPH_R",
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
aux-devs = <&speaker_amp>;
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&usb_id>, <&usb_id>; extcon = <&usb_id>, <&usb_id>;
...@@ -205,6 +301,13 @@ sdc2_cd_default: sdc2-cd-default-state { ...@@ -205,6 +301,13 @@ sdc2_cd_default: sdc2-cd-default-state {
bias-disable; bias-disable;
}; };
spk_ext_pa_default: spk-ext-pa-default-state {
pins = "gpio114";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
usb_id_default: usb-id-default-state { usb_id_default: usb-id-default-state {
pins = "gpio110"; pins = "gpio110";
function = "gpio"; function = "gpio";
......
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
/*
* msm8916-modem-qdsp6.dtsi describes the typical modem setup on MSM8916 devices
* (or similar SoCs) with audio routed via the QDSP6 services provided by the
* modem firmware. The digital/analog codec in the SoC/PMIC is used by default,
* but boards can define additional codecs by adding additional backend DAI links.
*/
#include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/sound/qcom,q6asm.h>
&apr {
status = "okay";
};
&bam_dmux {
status = "okay";
};
&bam_dmux_dma {
status = "okay";
};
&lpass {
status = "reserved"; /* Controlled by QDSP6 */
};
&lpass_codec {
status = "okay";
};
&mba_mem {
status = "okay";
};
&mpss {
status = "okay";
};
&mpss_mem {
status = "okay";
};
&pm8916_codec {
status = "okay";
};
&q6afedai {
dai@16 {
reg = <PRIMARY_MI2S_RX>;
qcom,sd-lines = <0 1>;
};
dai@20 {
reg = <TERTIARY_MI2S_TX>;
qcom,sd-lines = <0 1>;
};
};
&q6asmdai {
dai@0 {
reg = <0>;
direction = <Q6ASM_DAI_RX>;
};
dai@1 {
reg = <1>;
direction = <Q6ASM_DAI_TX>;
};
dai@2 {
reg = <2>;
direction = <Q6ASM_DAI_RX>;
};
dai@3 {
reg = <3>;
direction = <Q6ASM_DAI_RX>;
is-compress-dai;
};
};
&sound {
compatible = "qcom,msm8916-qdsp6-sndcard";
model = "msm8916";
pinctrl-0 = <&cdc_pdm_default>;
pinctrl-1 = <&cdc_pdm_sleep>;
pinctrl-names = "default", "sleep";
status = "okay";
frontend0-dai-link {
link-name = "MultiMedia1";
cpu {
sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
};
};
frontend1-dai-link {
link-name = "MultiMedia2";
cpu {
sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
};
};
frontend2-dai-link {
link-name = "MultiMedia3";
cpu {
sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
};
};
frontend3-dai-link {
link-name = "MultiMedia4";
cpu {
sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
};
};
sound_link_backend0: backend0-dai-link {
link-name = "Primary MI2S";
cpu {
sound-dai = <&q6afedai PRIMARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
};
};
sound_link_backend1: backend1-dai-link {
link-name = "Tertiary MI2S";
cpu {
sound-dai = <&q6afedai TERTIARY_MI2S_TX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
};
};
};
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/sound/apq8016-lpass.h>
/ { / {
aliases { aliases {
...@@ -196,6 +199,18 @@ vibrator: vibrator { ...@@ -196,6 +199,18 @@ vibrator: vibrator {
}; };
}; };
&blsp_i2c1 {
status = "okay";
speaker_codec: audio-codec@34 {
compatible = "nxp,tfa9895";
reg = <0x34>;
vddd-supply = <&pm8916_l5>;
sound-name-prefix = "Speaker";
#sound-dai-cells = <0>;
};
};
&blsp_i2c2 { &blsp_i2c2 {
status = "okay"; status = "okay";
...@@ -243,6 +258,25 @@ &gpu { ...@@ -243,6 +258,25 @@ &gpu {
status = "okay"; status = "okay";
}; };
/*
* For some reason the speaker amplifier is connected to the second SD line
* (MI2S_2_D1) instead of the first (MI2S_2_D0). This must be configured in the
* device tree, otherwise audio will seemingly play fine on the wrong SD line
* but the speaker stays silent.
*
* When routing audio via QDSP6 (the default) the &lpass node is reserved and
* the definitions from &q6afedai are used. When the modem is disabled audio can
* be alternatively routed directly to the LPASS hardware with reduced latency.
* The definitions for &lpass are here for completeness to simplify changing the
* setup with minor changes to the DT (either manually or with DT overlays).
*/
&lpass {
dai-link@3 {
reg = <MI2S_QUATERNARY>;
qcom,playback-sd-lines = <1>;
};
};
&mdss { &mdss {
status = "okay"; status = "okay";
}; };
...@@ -253,6 +287,10 @@ &mdss_dsi0 { ...@@ -253,6 +287,10 @@ &mdss_dsi0 {
pinctrl-1 = <&mdss_sleep>; pinctrl-1 = <&mdss_sleep>;
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5400000>;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -265,6 +303,13 @@ pm8916_l17: l17 { ...@@ -265,6 +303,13 @@ pm8916_l17: l17 {
}; };
}; };
&q6afedai {
dai@22 {
reg = <QUATERNARY_MI2S_RX>;
qcom,sd-lines = <1>;
};
};
&sdhc_1 { &sdhc_1 {
status = "okay"; status = "okay";
}; };
...@@ -279,6 +324,32 @@ &sdhc_2 { ...@@ -279,6 +324,32 @@ &sdhc_2 {
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
}; };
&sound {
model = "samsung-a2015";
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
pinctrl-names = "default", "sleep";
sound_link_backend2: backend2-dai-link {
link-name = "Quaternary MI2S";
cpu {
sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&speaker_codec>;
};
};
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&muic>, <&muic>; extcon = <&muic>, <&muic>;
......
...@@ -49,11 +49,6 @@ reg_key_led: regulator-key-led { ...@@ -49,11 +49,6 @@ reg_key_led: regulator-key-led {
}; };
}; };
&touchkey {
vcc-supply = <&reg_touch_key>;
vdd-supply = <&reg_key_led>;
};
&accelerometer { &accelerometer {
mount-matrix = "0", "1", "0", mount-matrix = "0", "1", "0",
"1", "0", "0", "1", "0", "0",
...@@ -108,6 +103,11 @@ &mdss_dsi0_out { ...@@ -108,6 +103,11 @@ &mdss_dsi0_out {
remote-endpoint = <&panel_in>; remote-endpoint = <&panel_in>;
}; };
&touchkey {
vcc-supply = <&reg_touch_key>;
vdd-supply = <&reg_key_led>;
};
&vibrator { &vibrator {
status = "okay"; status = "okay";
}; };
......
...@@ -65,6 +65,10 @@ accelerometer@1d { ...@@ -65,6 +65,10 @@ accelerometer@1d {
}; };
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5a00000>;
};
&reg_motor_vdd { &reg_motor_vdd {
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
......
...@@ -49,6 +49,10 @@ &reg_touch_key { ...@@ -49,6 +49,10 @@ &reg_touch_key {
status = "disabled"; status = "disabled";
}; };
&sound {
model = "samsung-gmax"; /* No secondary microphone */
};
&tlmm { &tlmm {
gpio_leds_default: gpio-led-default-state { gpio_leds_default: gpio-led-default-state {
pins = "gpio60"; pins = "gpio60";
......
...@@ -3,9 +3,12 @@ ...@@ -3,9 +3,12 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/sound/apq8016-lpass.h>
/ { / {
aliases { aliases {
...@@ -65,25 +68,6 @@ hall-sensor-switch { ...@@ -65,25 +68,6 @@ hall-sensor-switch {
}; };
}; };
&blsp_i2c4 {
status = "okay";
fuelgauge@36 {
compatible = "maxim,max77849-battery";
reg = <0x36>;
maxim,rsns-microohm = <10000>;
maxim,over-heat-temp = <600>;
maxim,over-volt = <4400>;
interrupt-parent = <&tlmm>;
interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
pinctrl-0 = <&fuelgauge_int_default>;
pinctrl-names = "default";
};
};
&blsp_i2c2 { &blsp_i2c2 {
status = "okay"; status = "okay";
...@@ -112,10 +96,52 @@ accelerometer@1d { ...@@ -112,10 +96,52 @@ accelerometer@1d {
}; };
}; };
&blsp_i2c4 {
status = "okay";
fuelgauge@36 {
compatible = "maxim,max77849-battery";
reg = <0x36>;
maxim,rsns-microohm = <10000>;
maxim,over-heat-temp = <600>;
maxim,over-volt = <4400>;
interrupt-parent = <&tlmm>;
interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
pinctrl-0 = <&fuelgauge_int_default>;
pinctrl-names = "default";
};
};
&blsp_uart2 { &blsp_uart2 {
status = "okay"; status = "okay";
}; };
/*
* For some reason the speaker amplifier is connected to the second SD line
* (MI2S_2_D1) instead of the first (MI2S_2_D0). This must be configured in the
* device tree, otherwise audio will seemingly play fine on the wrong SD line
* but the speaker stays silent.
*
* When routing audio via QDSP6 (the default) the &lpass node is reserved and
* the definitions from &q6afedai are used. When the modem is disabled audio can
* be alternatively routed directly to the LPASS hardware with reduced latency.
* The definitions for &lpass are here for completeness to simplify changing the
* setup with minor changes to the DT (either manually or with DT overlays).
*/
&lpass {
dai-link@3 {
reg = <MI2S_QUATERNARY>;
qcom,playback-sd-lines = <1>;
};
};
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5400000>;
};
&pm8916_resin { &pm8916_resin {
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
status = "okay"; status = "okay";
...@@ -133,6 +159,13 @@ &pm8916_usbin { ...@@ -133,6 +159,13 @@ &pm8916_usbin {
status = "okay"; status = "okay";
}; };
&q6afedai {
dai@22 {
reg = <QUATERNARY_MI2S_RX>;
qcom,sd-lines = <1>;
};
};
&sdhc_1 { &sdhc_1 {
status = "okay"; status = "okay";
}; };
...@@ -147,6 +180,27 @@ &sdhc_2 { ...@@ -147,6 +180,27 @@ &sdhc_2 {
status = "okay"; status = "okay";
}; };
&sound {
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
sound_link_backend2: backend2-dai-link {
link-name = "Quaternary MI2S";
cpu {
sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&speaker_codec>;
};
};
};
&usb { &usb {
dr_mode = "peripheral"; dr_mode = "peripheral";
extcon = <&pm8916_usbin>; extcon = <&pm8916_usbin>;
......
...@@ -9,6 +9,14 @@ / { ...@@ -9,6 +9,14 @@ / {
compatible = "samsung,gt510", "qcom,msm8916"; compatible = "samsung,gt510", "qcom,msm8916";
chassis-type = "tablet"; chassis-type = "tablet";
speaker_codec: audio-codec {
compatible = "maxim,max98357a";
sdmode-gpios = <&tlmm 55 GPIO_ACTIVE_HIGH>;
#sound-dai-cells = <0>;
pinctrl-0 = <&audio_sdmode_default>;
pinctrl-names = "default";
};
clk_pwm: pwm { clk_pwm: pwm {
compatible = "clk-pwm"; compatible = "clk-pwm";
#pwm-cells = <2>; #pwm-cells = <2>;
...@@ -112,6 +120,10 @@ touchscreen@4a { ...@@ -112,6 +120,10 @@ touchscreen@4a {
}; };
}; };
&gpu {
status = "okay";
};
&mdss { &mdss {
status = "okay"; status = "okay";
}; };
...@@ -142,7 +154,21 @@ &mdss_dsi0_out { ...@@ -142,7 +154,21 @@ &mdss_dsi0_out {
remote-endpoint = <&panel_in>; remote-endpoint = <&panel_in>;
}; };
&sound {
model = "samsung-gt510";
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
pinctrl-names = "default", "sleep";
};
&tlmm { &tlmm {
audio_sdmode_default: audio-sdmode-default-state {
pins = "gpio55";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
buckbooster_en_default: buckbooster-en-default-state { buckbooster_en_default: buckbooster-en-default-state {
pins = "gpio51"; pins = "gpio51";
function = "gpio"; function = "gpio";
......
...@@ -35,6 +35,26 @@ reg_vdd_tsp: regulator-vdd-tsp { ...@@ -35,6 +35,26 @@ reg_vdd_tsp: regulator-vdd-tsp {
pinctrl-names = "default"; pinctrl-names = "default";
}; };
i2c-amplifier {
compatible = "i2c-gpio";
sda-gpios = <&tlmm 55 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&tlmm 56 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
pinctrl-0 = <&amp_i2c_default>;
pinctrl-names = "default";
#address-cells = <1>;
#size-cells = <0>;
speaker_codec: audio-codec@34 {
compatible = "nxp,tfa9895";
reg = <0x34>;
vddd-supply = <&pm8916_l5>;
sound-name-prefix = "Speaker";
#sound-dai-cells = <0>;
};
};
vibrator { vibrator {
compatible = "gpio-vibrator"; compatible = "gpio-vibrator";
enable-gpios = <&tlmm 76 GPIO_ACTIVE_HIGH>; enable-gpios = <&tlmm 76 GPIO_ACTIVE_HIGH>;
...@@ -64,6 +84,10 @@ touchscreen@20 { ...@@ -64,6 +84,10 @@ touchscreen@20 {
}; };
}; };
&gpu {
status = "okay";
};
&mdss { &mdss {
status = "okay"; status = "okay";
}; };
...@@ -94,7 +118,21 @@ &mdss_dsi0_out { ...@@ -94,7 +118,21 @@ &mdss_dsi0_out {
remote-endpoint = <&panel_in>; remote-endpoint = <&panel_in>;
}; };
&sound {
model = "samsung-a2015";
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default &secondary_mic_default>;
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep &secondary_mic_default>;
pinctrl-names = "default", "sleep";
};
&tlmm { &tlmm {
amp_i2c_default: amp-i2c-default-state {
pins = "gpio55", "gpio56";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
buckbooster_en_default: buckbooster-en-default-state { buckbooster_en_default: buckbooster-en-default-state {
pins = "gpio8"; pins = "gpio8";
function = "gpio"; function = "gpio";
...@@ -123,6 +161,14 @@ reg_tsp_en_default: reg-tsp-en-default-state { ...@@ -123,6 +161,14 @@ reg_tsp_en_default: reg-tsp-en-default-state {
bias-disable; bias-disable;
}; };
secondary_mic_default: secondary-mic-default-state {
pins = "gpio98";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-high;
};
tsp_int_default: tsp-int-default-state { tsp_int_default: tsp-int-default-state {
pins = "gpio13"; pins = "gpio13";
function = "gpio"; function = "gpio";
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
...@@ -135,6 +137,10 @@ &blsp_uart2 { ...@@ -135,6 +137,10 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5800000>;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -154,6 +160,14 @@ &sdhc_2 { ...@@ -154,6 +160,14 @@ &sdhc_2 {
cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
}; };
&sound {
model = "msm8916-1mic";
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
};
&usb { &usb {
extcon = <&muic>, <&muic>; extcon = <&muic>, <&muic>;
status = "okay"; status = "okay";
......
...@@ -19,6 +19,10 @@ &blsp_i2c5 { ...@@ -19,6 +19,10 @@ &blsp_i2c5 {
status = "disabled"; status = "disabled";
}; };
&pm8916_codec {
qcom,micbias1-ext-cap;
};
&touchscreen { &touchscreen {
/* FIXME: Missing sm5703-mfd driver to power up vdd-supply */ /* FIXME: Missing sm5703-mfd driver to power up vdd-supply */
}; };
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
...@@ -319,6 +321,10 @@ &blsp_uart2 { ...@@ -319,6 +321,10 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5a00000>;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -350,6 +356,13 @@ &sdhc_2 { ...@@ -350,6 +356,13 @@ &sdhc_2 {
no-1-8-v; no-1-8-v;
}; };
&sound {
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&muic>, <&muic>; extcon = <&muic>, <&muic>;
......
...@@ -13,16 +13,16 @@ &button_restart { ...@@ -13,16 +13,16 @@ &button_restart {
gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
}; };
&led_r { &led_b {
gpios = <&tlmm 82 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
}; };
&led_g { &led_g {
gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>;
}; };
&led_b { &led_r {
gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 82 GPIO_ACTIVE_HIGH>;
}; };
&button_default { &button_default {
......
...@@ -13,16 +13,16 @@ &button_restart { ...@@ -13,16 +13,16 @@ &button_restart {
gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
}; };
&led_r { &led_b {
gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
}; };
&led_g { &led_g {
gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
}; };
&led_b { &led_r {
gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>;
}; };
&mpss { &mpss {
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
/dts-v1/; /dts-v1/;
#include "msm8916-pm8916.dtsi" #include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
...@@ -25,6 +27,28 @@ chosen { ...@@ -25,6 +27,28 @@ chosen {
stdout-path = "serial0"; stdout-path = "serial0";
}; };
speaker_amp: audio-amplifier {
compatible = "simple-audio-amplifier";
enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
sound-name-prefix = "Speaker Amp";
pinctrl-0 = <&speaker_amp_default>;
pinctrl-names = "default";
};
/*
* This seems to be actually an analog switch that either routes audio
* to the headphone jack or nowhere. Given that we need to enable a GPIO
* to get sound on headphones, modelling it as simple-audio-amplifier
* works just fine.
*/
headphones_switch: audio-switch {
compatible = "simple-audio-amplifier";
enable-gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>;
sound-name-prefix = "Headphones Switch";
pinctrl-0 = <&headphones_switch_default>;
pinctrl-names = "default";
};
flash-led-controller { flash-led-controller {
compatible = "ocs,ocp8110"; compatible = "ocs,ocp8110";
enable-gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>; enable-gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;
...@@ -146,6 +170,18 @@ &blsp_uart2 { ...@@ -146,6 +170,18 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5100000>;
};
&pm8916_codec {
qcom,micbias1-ext-cap;
qcom,micbias-lvl = <2800>;
qcom,mbhc-vthreshold-low = <75 100 120 180 500>;
qcom,mbhc-vthreshold-high = <75 100 120 180 500>;
qcom,hphl-jack-type-normally-open;
};
&pm8916_resin { &pm8916_resin {
status = "okay"; status = "okay";
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
...@@ -180,6 +216,30 @@ &sdhc_2 { ...@@ -180,6 +216,30 @@ &sdhc_2 {
non-removable; non-removable;
}; };
&sound {
/*
* Provide widgets/pin-switches to allow enabling speaker and headphones
* separately. Both are routed via the HPH_L/HPH_R pins of the codec.
*/
model = "wt88047";
widgets =
"Speaker", "Speaker",
"Headphone", "Headphones";
pin-switches = "Speaker", "Headphones";
audio-routing =
"Speaker", "Speaker Amp OUTL",
"Speaker", "Speaker Amp OUTR",
"Speaker Amp INL", "HPH_R",
"Speaker Amp INR", "HPH_R",
"Headphones", "Headphones Switch OUTL",
"Headphones", "Headphones Switch OUTR",
"Headphones Switch INL", "HPH_L",
"Headphones Switch INR", "HPH_R",
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2";
aux-devs = <&speaker_amp>, <&headphones_switch>;
};
&usb { &usb {
status = "okay"; status = "okay";
extcon = <&usb_id>, <&usb_id>; extcon = <&usb_id>, <&usb_id>;
...@@ -226,6 +286,13 @@ gpio_keys_default: gpio-keys-default-state { ...@@ -226,6 +286,13 @@ gpio_keys_default: gpio-keys-default-state {
bias-pull-up; bias-pull-up;
}; };
headphones_switch_default: headphones-switch-default-state {
pins = "gpio8";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
imu_default: imu-default-state { imu_default: imu-default-state {
pins = "gpio115"; pins = "gpio115";
function = "gpio"; function = "gpio";
...@@ -234,6 +301,13 @@ imu_default: imu-default-state { ...@@ -234,6 +301,13 @@ imu_default: imu-default-state {
bias-disable; bias-disable;
}; };
speaker_amp_default: speaker-amp-default-state {
pins = "gpio117";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
touchscreen_default: touchscreen-default-state { touchscreen_default: touchscreen-default-state {
touchscreen-pins { touchscreen-pins {
pins = "gpio13"; pins = "gpio13";
......
...@@ -13,16 +13,16 @@ &button_restart { ...@@ -13,16 +13,16 @@ &button_restart {
gpios = <&tlmm 23 GPIO_ACTIVE_LOW>; gpios = <&tlmm 23 GPIO_ACTIVE_LOW>;
}; };
&led_r { &led_b {
gpios = <&tlmm 7 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>;
}; };
&led_g { &led_g {
gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>;
}; };
&led_b { &led_r {
gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>; gpios = <&tlmm 7 GPIO_ACTIVE_HIGH>;
}; };
&button_default { &button_default {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h> #include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/reset/qcom,gcc-msm8916.h> #include <dt-bindings/reset/qcom,gcc-msm8916.h>
#include <dt-bindings/soc/qcom,apr.h>
#include <dt-bindings/thermal/thermal.h> #include <dt-bindings/thermal/thermal.h>
/ { / {
...@@ -1989,6 +1990,54 @@ smd-edge { ...@@ -1989,6 +1990,54 @@ smd-edge {
label = "hexagon"; label = "hexagon";
apr: apr {
compatible = "qcom,apr-v2";
qcom,smd-channels = "apr_audio_svc";
qcom,domain = <APR_DOMAIN_ADSP>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
q6core: service@3 {
compatible = "qcom,q6core";
reg = <APR_SVC_ADSP_CORE>;
};
q6afe: service@4 {
compatible = "qcom,q6afe";
reg = <APR_SVC_AFE>;
q6afedai: dais {
compatible = "qcom,q6afe-dais";
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>;
};
};
q6asm: service@7 {
compatible = "qcom,q6asm";
reg = <APR_SVC_ASM>;
q6asmdai: dais {
compatible = "qcom,q6asm-dais";
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>;
};
};
q6adm: service@8 {
compatible = "qcom,q6adm";
reg = <APR_SVC_ADM>;
q6routing: routing {
compatible = "qcom,q6adm-routing";
#sound-dai-cells = <0>;
};
};
};
fastrpc { fastrpc {
compatible = "qcom,fastrpc"; compatible = "qcom,fastrpc";
qcom,smd-channels = "fastrpcsmd-apps-dsp"; qcom,smd-channels = "fastrpcsmd-apps-dsp";
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h> #include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
/ { / {
...@@ -120,6 +121,46 @@ usb_id: usb-id { ...@@ -120,6 +121,46 @@ usb_id: usb-id {
}; };
&blsp_i2c2 {
status = "okay";
led-controller@30 {
compatible = "kinetic,ktd2026";
reg = <0x30>;
#address-cells = <1>;
#size-cells = <0>;
vin-supply = <&pm8916_l17>;
vio-supply = <&pm8916_l6>;
pinctrl-0 = <&status_led_default>;
pinctrl-names = "default";
multi-led {
color = <LED_COLOR_ID_RGB>;
function = LED_FUNCTION_STATUS;
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_RED>;
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_GREEN>;
};
led@2 {
reg = <2>;
color = <LED_COLOR_ID_BLUE>;
};
};
};
};
&blsp_i2c3 { &blsp_i2c3 {
status = "okay"; status = "okay";
...@@ -184,6 +225,16 @@ &blsp_uart2 { ...@@ -184,6 +225,16 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
&pm8916_gpios {
status_led_default: status-led-default-state {
pins = "gpio3";
function = PMIC_GPIO_FUNC_NORMAL;
power-source = <PM8916_GPIO_VPH>;
bias-disable;
output-high;
};
};
&pm8916_mpps { &pm8916_mpps {
pwm_out: mpp4-state { pwm_out: mpp4-state {
pins = "mpp4"; pins = "mpp4";
...@@ -247,6 +298,10 @@ &wcnss_iris { ...@@ -247,6 +298,10 @@ &wcnss_iris {
compatible = "qcom,wcn3620"; compatible = "qcom,wcn3620";
}; };
&wcnss_mem {
status = "okay";
};
&tlmm { &tlmm {
button_backlight_default: button-backlight-default-state { button_backlight_default: button-backlight-default-state {
pins = "gpio17"; pins = "gpio17";
......
...@@ -3,10 +3,12 @@ ...@@ -3,10 +3,12 @@
/dts-v1/; /dts-v1/;
#include "msm8939-pm8916.dtsi" #include "msm8939-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/sound/apq8016-lpass.h>
/ { / {
model = "Samsung Galaxy A7 (2015)"; model = "Samsung Galaxy A7 (2015)";
...@@ -287,6 +289,18 @@ muic: extcon@25 { ...@@ -287,6 +289,18 @@ muic: extcon@25 {
}; };
}; };
&blsp_i2c2 {
status = "okay";
speaker_codec: audio-codec@34 {
compatible = "nxp,tfa9895";
reg = <0x34>;
vddd-supply = <&pm8916_l5>;
sound-name-prefix = "Speaker";
#sound-dai-cells = <0>;
};
};
&blsp_i2c5 { &blsp_i2c5 {
status = "okay"; status = "okay";
...@@ -309,6 +323,29 @@ &blsp_uart2 { ...@@ -309,6 +323,29 @@ &blsp_uart2 {
status = "okay"; status = "okay";
}; };
/*
* For some reason the speaker amplifier is connected to the second SD line
* (MI2S_2_D1) instead of the first (MI2S_2_D0). This must be configured in the
* device tree, otherwise audio will seemingly play fine on the wrong SD line
* but the speaker stays silent.
*
* When routing audio via QDSP6 (the default) the &lpass node is reserved and
* the definitions from &q6afedai are used. When the modem is disabled audio can
* be alternatively routed directly to the LPASS hardware with reduced latency.
* The definitions for &lpass are here for completeness to simplify changing the
* setup with minor changes to the DT (either manually or with DT overlays).
*/
&lpass {
dai-link@3 {
reg = <MI2S_QUATERNARY>;
qcom,playback-sd-lines = <1>;
};
};
&mpss_mem {
reg = <0x0 0x86800000 0x0 0x5800000>;
};
&pm8916_resin { &pm8916_resin {
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
status = "okay"; status = "okay";
...@@ -321,6 +358,13 @@ pm8916_l17: l17 { ...@@ -321,6 +358,13 @@ pm8916_l17: l17 {
}; };
}; };
&q6afedai {
dai@22 {
reg = <QUATERNARY_MI2S_RX>;
qcom,sd-lines = <1>;
};
};
&sdhc_1 { &sdhc_1 {
status = "okay"; status = "okay";
}; };
...@@ -335,6 +379,32 @@ &sdhc_2 { ...@@ -335,6 +379,32 @@ &sdhc_2 {
status = "okay"; status = "okay";
}; };
&sound {
model = "samsung-a2015";
audio-routing =
"AMIC1", "MIC BIAS External1",
"AMIC2", "MIC BIAS Internal2",
"AMIC3", "MIC BIAS External1";
pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
pinctrl-names = "default", "sleep";
sound_link_backend2: backend2-dai-link {
link-name = "Quaternary MI2S";
cpu {
sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
};
platform {
sound-dai = <&q6routing>;
};
codec {
sound-dai = <&speaker_codec>;
};
};
};
&usb { &usb {
extcon = <&muic>, <&muic>; extcon = <&muic>, <&muic>;
status = "okay"; status = "okay";
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h> #include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/reset/qcom,gcc-msm8939.h> #include <dt-bindings/reset/qcom,gcc-msm8939.h>
#include <dt-bindings/soc/qcom,apr.h>
#include <dt-bindings/thermal/thermal.h> #include <dt-bindings/thermal/thermal.h>
/ { / {
...@@ -1537,6 +1538,20 @@ spmi_bus: spmi@200f000 { ...@@ -1537,6 +1538,20 @@ spmi_bus: spmi@200f000 {
#interrupt-cells = <4>; #interrupt-cells = <4>;
}; };
bam_dmux_dma: dma-controller@4044000 {
compatible = "qcom,bam-v1.7.0";
reg = <0x04044000 0x19000>;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <1>;
qcom,ee = <0>;
num-channels = <6>;
qcom,num-ees = <1>;
qcom,powered-remotely;
status = "disabled";
};
mpss: remoteproc@4080000 { mpss: remoteproc@4080000 {
compatible = "qcom,msm8916-mss-pil"; compatible = "qcom,msm8916-mss-pil";
reg = <0x04080000 0x100>, <0x04020000 0x040>; reg = <0x04080000 0x100>, <0x04020000 0x040>;
...@@ -1569,6 +1584,22 @@ mpss: remoteproc@4080000 { ...@@ -1569,6 +1584,22 @@ mpss: remoteproc@4080000 {
qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
status = "disabled"; status = "disabled";
bam_dmux: bam-dmux {
compatible = "qcom,bam-dmux";
interrupt-parent = <&hexagon_smsm>;
interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 IRQ_TYPE_EDGE_BOTH>;
interrupt-names = "pc", "pc-ack";
qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
qcom,smem-state-names = "pc", "pc-ack";
dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
dma-names = "tx", "rx";
status = "disabled";
};
mba { mba {
memory-region = <&mba_mem>; memory-region = <&mba_mem>;
}; };
...@@ -1585,6 +1616,54 @@ smd-edge { ...@@ -1585,6 +1616,54 @@ smd-edge {
qcom,remote-pid = <1>; qcom,remote-pid = <1>;
label = "hexagon"; label = "hexagon";
apr: apr {
compatible = "qcom,apr-v2";
qcom,smd-channels = "apr_audio_svc";
qcom,domain = <APR_DOMAIN_ADSP>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
q6core: service@3 {
compatible = "qcom,q6core";
reg = <APR_SVC_ADSP_CORE>;
};
q6afe: service@4 {
compatible = "qcom,q6afe";
reg = <APR_SVC_AFE>;
q6afedai: dais {
compatible = "qcom,q6afe-dais";
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>;
};
};
q6asm: service@7 {
compatible = "qcom,q6asm";
reg = <APR_SVC_ASM>;
q6asmdai: dais {
compatible = "qcom,q6asm-dais";
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>;
};
};
q6adm: service@8 {
compatible = "qcom,q6adm";
reg = <APR_SVC_ADM>;
q6routing: routing {
compatible = "qcom,q6adm-routing";
#sound-dai-cells = <0>;
};
};
};
}; };
}; };
......
...@@ -148,7 +148,7 @@ pm7250b_adc_tm: adc-tm@3500 { ...@@ -148,7 +148,7 @@ pm7250b_adc_tm: adc-tm@3500 {
status = "disabled"; status = "disabled";
}; };
pm7250b_gpios: pinctrl@c000 { pm7250b_gpios: gpio@c000 {
compatible = "qcom,pm7250b-gpio", "qcom,spmi-gpio"; compatible = "qcom,pm7250b-gpio", "qcom,spmi-gpio";
reg = <0xc000>; reg = <0xc000>;
gpio-controller; gpio-controller;
......
...@@ -518,7 +518,6 @@ &usb { ...@@ -518,7 +518,6 @@ &usb {
&usb_dwc3 { &usb_dwc3 {
maximum-speed = "super-speed"; maximum-speed = "super-speed";
dr_mode = "peripheral";
}; };
&usb_hsphy { &usb_hsphy {
......
This diff is collapsed.
...@@ -2034,6 +2034,11 @@ uart15: serial@a9c000 { ...@@ -2034,6 +2034,11 @@ uart15: serial@a9c000 {
}; };
}; };
rng: rng@10d3000 {
compatible = "qcom,sc7280-trng", "qcom,trng";
reg = <0 0x010d3000 0 0x1000>;
};
cnoc2: interconnect@1500000 { cnoc2: interconnect@1500000 {
reg = <0 0x01500000 0 0x1000>; reg = <0 0x01500000 0 0x1000>;
compatible = "qcom,sc7280-cnoc2"; compatible = "qcom,sc7280-cnoc2";
...@@ -3399,6 +3404,32 @@ usb_1_qmpphy: phy@88e8000 { ...@@ -3399,6 +3404,32 @@ usb_1_qmpphy: phy@88e8000 {
#clock-cells = <1>; #clock-cells = <1>;
#phy-cells = <1>; #phy-cells = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb_dp_qmpphy_out: endpoint {
};
};
port@1 {
reg = <1>;
usb_dp_qmpphy_usb_ss_in: endpoint {
};
};
port@2 {
reg = <2>;
usb_dp_qmpphy_dp_in: endpoint {
};
};
};
}; };
usb_2: usb@8cf8800 { usb_2: usb@8cf8800 {
...@@ -3793,6 +3824,86 @@ videocc: clock-controller@aaf0000 { ...@@ -3793,6 +3824,86 @@ videocc: clock-controller@aaf0000 {
#power-domain-cells = <1>; #power-domain-cells = <1>;
}; };
cci0: cci@ac4a000 {
compatible = "qcom,sc7280-cci", "qcom,msm8996-cci";
reg = <0 0x0ac4a000 0 0x1000>;
interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;
clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
<&camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&camcc CAM_CC_CPAS_AHB_CLK>,
<&camcc CAM_CC_CCI_0_CLK>,
<&camcc CAM_CC_CCI_0_CLK_SRC>;
clock-names = "camnoc_axi",
"slow_ahb_src",
"cpas_ahb",
"cci",
"cci_src";
pinctrl-0 = <&cci0_default &cci1_default>;
pinctrl-1 = <&cci0_sleep &cci1_sleep>;
pinctrl-names = "default", "sleep";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
cci0_i2c0: i2c-bus@0 {
reg = <0>;
clock-frequency = <1000000>;
#address-cells = <1>;
#size-cells = <0>;
};
cci0_i2c1: i2c-bus@1 {
reg = <1>;
clock-frequency = <1000000>;
#address-cells = <1>;
#size-cells = <0>;
};
};
cci1: cci@ac4b000 {
compatible = "qcom,sc7280-cci", "qcom,msm8996-cci";
reg = <0 0x0ac4b000 0 0x1000>;
interrupts = <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>;
power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;
clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
<&camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&camcc CAM_CC_CPAS_AHB_CLK>,
<&camcc CAM_CC_CCI_1_CLK>,
<&camcc CAM_CC_CCI_1_CLK_SRC>;
clock-names = "camnoc_axi",
"slow_ahb_src",
"cpas_ahb",
"cci",
"cci_src";
pinctrl-0 = <&cci2_default &cci3_default>;
pinctrl-1 = <&cci2_sleep &cci3_sleep>;
pinctrl-names = "default", "sleep";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
cci1_i2c0: i2c-bus@0 {
reg = <0>;
clock-frequency = <1000000>;
#address-cells = <1>;
#size-cells = <0>;
};
cci1_i2c1: i2c-bus@1 {
reg = <1>;
clock-frequency = <1000000>;
#address-cells = <1>;
#size-cells = <0>;
};
};
camcc: clock-controller@ad00000 { camcc: clock-controller@ad00000 {
compatible = "qcom,sc7280-camcc"; compatible = "qcom,sc7280-camcc";
reg = <0 0x0ad00000 0 0x10000>; reg = <0 0x0ad00000 0 0x10000>;
...@@ -4298,6 +4409,62 @@ tlmm: pinctrl@f100000 { ...@@ -4298,6 +4409,62 @@ tlmm: pinctrl@f100000 {
gpio-ranges = <&tlmm 0 0 175>; gpio-ranges = <&tlmm 0 0 175>;
wakeup-parent = <&pdc>; wakeup-parent = <&pdc>;
cci0_default: cci0-default-state {
pins = "gpio69", "gpio70";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-up;
};
cci0_sleep: cci0-sleep-state {
pins = "gpio69", "gpio70";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-down;
};
cci1_default: cci1-default-state {
pins = "gpio71", "gpio72";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-up;
};
cci1_sleep: cci1-sleep-state {
pins = "gpio71", "gpio72";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-down;
};
cci2_default: cci2-default-state {
pins = "gpio73", "gpio74";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-up;
};
cci2_sleep: cci2-sleep-state {
pins = "gpio73", "gpio74";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-down;
};
cci3_default: cci3-default-state {
pins = "gpio75", "gpio76";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-up;
};
cci3_sleep: cci3-sleep-state {
pins = "gpio75", "gpio76";
function = "cci_i2c";
drive-strength = <2>;
bias-pull-down;
};
dp_hot_plug_det: dp-hot-plug-det-state { dp_hot_plug_det: dp-hot-plug-det-state {
pins = "gpio47"; pins = "gpio47";
function = "dp_hot"; function = "dp_hot";
......
...@@ -82,6 +82,9 @@ switch-lid { ...@@ -82,6 +82,9 @@ switch-lid {
leds { leds {
compatible = "gpio-leds"; compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&cam_indicator_en>;
led-camera-indicator { led-camera-indicator {
label = "white:camera-indicator"; label = "white:camera-indicator";
function = LED_FUNCTION_INDICATOR; function = LED_FUNCTION_INDICATOR;
...@@ -601,6 +604,7 @@ mdss0_dp3_out: endpoint { ...@@ -601,6 +604,7 @@ mdss0_dp3_out: endpoint {
}; };
&mdss0_dp3_phy { &mdss0_dp3_phy {
compatible = "qcom,sc8280xp-edp-phy";
vdda-phy-supply = <&vreg_l6b>; vdda-phy-supply = <&vreg_l6b>;
vdda-pll-supply = <&vreg_l3b>; vdda-pll-supply = <&vreg_l3b>;
...@@ -1277,6 +1281,13 @@ hstp-sw-ctrl-pins { ...@@ -1277,6 +1281,13 @@ hstp-sw-ctrl-pins {
}; };
}; };
cam_indicator_en: cam-indicator-en-state {
pins = "gpio28";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
edp_reg_en: edp-reg-en-state { edp_reg_en: edp-reg-en-state {
pins = "gpio25"; pins = "gpio25";
function = "gpio"; function = "gpio";
......
...@@ -1532,7 +1532,7 @@ osm_l3: interconnect@17d41000 { ...@@ -1532,7 +1532,7 @@ osm_l3: interconnect@17d41000 {
}; };
cpufreq_hw: cpufreq@17d43000 { cpufreq_hw: cpufreq@17d43000 {
compatible = "qcom,cpufreq-hw"; compatible = "qcom,sdm670-cpufreq-hw", "qcom,cpufreq-hw";
reg = <0 0x17d43000 0 0x1400>, <0 0x17d45800 0 0x1400>; reg = <0 0x17d43000 0 0x1400>, <0 0x17d45800 0 0x1400>;
reg-names = "freq-domain0", "freq-domain1"; reg-names = "freq-domain0", "freq-domain1";
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
/dts-v1/; /dts-v1/;
#include <dt-bindings/input/linux-event-codes.h> #include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/qcom,q6afe.h> #include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/sound/qcom,q6asm.h> #include <dt-bindings/sound/qcom,q6asm.h>
...@@ -484,6 +485,28 @@ &pmi8998_charger { ...@@ -484,6 +485,28 @@ &pmi8998_charger {
status = "okay"; status = "okay";
}; };
&pmi8998_flash {
status = "okay";
led-0 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_WHITE>;
led-sources = <1>;
led-max-microamp = <500000>;
flash-max-microamp = <1500000>;
flash-max-timeout-us = <1280000>;
};
led-1 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_YELLOW>;
led-sources = <2>;
led-max-microamp = <500000>;
flash-max-microamp = <1500000>;
flash-max-timeout-us = <1280000>;
};
};
&q6afedai { &q6afedai {
qi2s@22 { qi2s@22 {
reg = <22>; reg = <22>;
......
...@@ -355,6 +355,28 @@ &pmi8998_charger { ...@@ -355,6 +355,28 @@ &pmi8998_charger {
status = "okay"; status = "okay";
}; };
&pmi8998_flash {
status = "okay";
led-0 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_WHITE>;
led-sources = <1>;
led-max-microamp = <500000>;
flash-max-microamp = <1500000>;
flash-max-timeout-us = <1280000>;
};
led-1 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_YELLOW>;
led-sources = <2>;
led-max-microamp = <500000>;
flash-max-microamp = <1500000>;
flash-max-timeout-us = <1280000>;
};
};
&pm8998_resin { &pm8998_resin {
linux,code = <KEY_VOLUMEDOWN>; linux,code = <KEY_VOLUMEDOWN>;
status = "okay"; status = "okay";
......
...@@ -187,6 +187,11 @@ &remoteproc_cdsp { ...@@ -187,6 +187,11 @@ &remoteproc_cdsp {
status = "okay"; status = "okay";
}; };
&remoteproc_mss {
firmware-name = "qcom/sm6375/Sony/murray/modem.mbn";
status = "okay";
};
&rpm_requests { &rpm_requests {
regulators-0 { regulators-0 {
compatible = "qcom,rpm-pm6125-regulators"; compatible = "qcom,rpm-pm6125-regulators";
...@@ -238,8 +243,8 @@ pm6125_l6: l6 { ...@@ -238,8 +243,8 @@ pm6125_l6: l6 {
}; };
pm6125_l7: l7 { pm6125_l7: l7 {
regulator-min-microvolt = <720000>; regulator-min-microvolt = <880000>;
regulator-max-microvolt = <1050000>; regulator-max-microvolt = <880000>;
}; };
pm6125_l8: l8 { pm6125_l8: l8 {
...@@ -306,7 +311,7 @@ pm6125_l20: l20 { ...@@ -306,7 +311,7 @@ pm6125_l20: l20 {
pm6125_l21: l21 { pm6125_l21: l21 {
regulator-min-microvolt = <3000000>; regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3400000>; regulator-max-microvolt = <3312000>;
}; };
pm6125_l22: l22 { pm6125_l22: l22 {
...@@ -317,7 +322,7 @@ pm6125_l22: l22 { ...@@ -317,7 +322,7 @@ pm6125_l22: l22 {
pm6125_l23: l23 { pm6125_l23: l23 {
regulator-min-microvolt = <3000000>; regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3400000>; regulator-max-microvolt = <3312000>;
}; };
pm6125_l24: l24 { pm6125_l24: l24 {
...@@ -340,8 +345,8 @@ pmr735a_l1: l1 { ...@@ -340,8 +345,8 @@ pmr735a_l1: l1 {
}; };
pmr735a_l2: l2 { pmr735a_l2: l2 {
regulator-min-microvolt = <352000>; regulator-min-microvolt = <640000>;
regulator-max-microvolt = <796000>; regulator-max-microvolt = <640000>;
}; };
pmr735a_l3: l3 { pmr735a_l3: l3 {
...@@ -425,6 +430,18 @@ &usb_1_dwc3 { ...@@ -425,6 +430,18 @@ &usb_1_dwc3 {
}; };
&usb_1_hsphy { &usb_1_hsphy {
vdda-pll-supply = <&pm6125_l7>;
vdda18-supply = <&pm6125_l10>;
vdda33-supply = <&pmr735a_l7>;
status = "okay";
};
&wifi {
vdd-0.8-cx-mx-supply = <&pmr735a_l2>;
vdd-1.8-xo-supply = <&pm6125_l16>;
vdd-1.3-rfa-supply = <&pm6125_l2>;
vdd-3.3-ch0-supply = <&pm6125_l23>;
vdd-3.3-ch1-supply = <&pm6125_l21>;
status = "okay"; status = "okay";
}; };
......
...@@ -896,6 +896,36 @@ qup_spi0_default: qup-spi0-default-state { ...@@ -896,6 +896,36 @@ qup_spi0_default: qup-spi0-default-state {
drive-strength = <6>; drive-strength = <6>;
bias-disable; bias-disable;
}; };
qup_uart1_default: qup-uart1-default-state {
cts-pins {
pins = "gpio61";
function = "qup01";
drive-strength = <2>;
bias-pull-down;
};
rts-pins {
pins = "gpio62";
function = "qup01";
drive-strength = <2>;
bias-disable;
};
tx-pins {
pins = "gpio63";
function = "qup01";
drive-strength = <2>;
bias-disable;
};
rx-pins {
pins = "gpio64";
function = "qup01";
drive-strength = <2>;
bias-pull-up;
};
};
}; };
gcc: clock-controller@1400000 { gcc: clock-controller@1400000 {
...@@ -1111,6 +1141,19 @@ spi1: spi@4a84000 { ...@@ -1111,6 +1141,19 @@ spi1: spi@4a84000 {
status = "disabled"; status = "disabled";
}; };
uart1: serial@4a84000 {
compatible = "qcom,geni-uart";
reg = <0x0 0x04a84000 0x0 0x4000>;
interrupts = <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
clock-names = "se";
power-domains = <&rpmpd SM6375_VDDCX>;
operating-points-v2 = <&qup_opp_table>;
pinctrl-0 = <&qup_uart1_default>;
pinctrl-names = "default";
status = "disabled";
};
i2c2: i2c@4a88000 { i2c2: i2c@4a88000 {
compatible = "qcom,geni-i2c"; compatible = "qcom,geni-i2c";
reg = <0x0 0x04a88000 0x0 0x4000>; reg = <0x0 0x04a88000 0x0 0x4000>;
......
...@@ -1739,6 +1739,11 @@ spi14: spi@a98000 { ...@@ -1739,6 +1739,11 @@ spi14: spi@a98000 {
}; };
}; };
rng: rng@10c3000 {
compatible = "qcom,sm8450-trng", "qcom,trng";
reg = <0 0x010c3000 0 0x1000>;
};
pcie0: pci@1c00000 { pcie0: pci@1c00000 {
compatible = "qcom,pcie-sm8450-pcie0"; compatible = "qcom,pcie-sm8450-pcie0";
reg = <0 0x01c00000 0 0x3000>, reg = <0 0x01c00000 0 0x3000>,
......
...@@ -1677,6 +1677,11 @@ mmss_noc: interconnect@1780000 { ...@@ -1677,6 +1677,11 @@ mmss_noc: interconnect@1780000 {
qcom,bcm-voters = <&apps_bcm_voter>; qcom,bcm-voters = <&apps_bcm_voter>;
}; };
rng: rng@10c3000 {
compatible = "qcom,sm8550-trng", "qcom,trng";
reg = <0 0x010c3000 0 0x1000>;
};
pcie0: pci@1c00000 { pcie0: pci@1c00000 {
device_type = "pci"; device_type = "pci";
compatible = "qcom,pcie-sm8550"; compatible = "qcom,pcie-sm8550";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment