Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions Documentation/devicetree/bindings/arm/psci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,27 @@ properties:
[1] Kernel documentation - ARM idle states bindings
Documentation/devicetree/bindings/cpu/idle-states.yaml

reboot-mode:
type: object
$ref: /schemas/power/reset/reboot-mode.yaml#
unevaluatedProperties: false
properties:
# "mode-normal" is just SYSTEM_RESET
mode-normal: false
patternProperties:
"^mode-.*$":
minItems: 1
maxItems: 2
description: |
Describes a vendor-specific reset type. The string after "mode-"
maps a reboot mode to the parameters in the PSCI SYSTEM_RESET2 call.

Parameters are named mode-xxx = <type[, cookie]>, where xxx
is the name of the magic reboot mode, type is the lower 31 bits
of the reset_type, and, optionally, the cookie value. If the cookie
is not provided, it is defaulted to zero.
The 31st bit (vendor-resets) will be implicitly set by the driver.

patternProperties:
"^power-domain-":
$ref: /schemas/power/power-domain.yaml#
Expand Down Expand Up @@ -137,6 +158,15 @@ allOf:
required:
- cpu_off
- cpu_on
- if:
not:
properties:
compatible:
contains:
const: arm,psci-1.0
then:
properties:
reboot-mode: false

additionalProperties: false

Expand Down Expand Up @@ -260,4 +290,17 @@ examples:
domain-idle-states = <&cluster_ret>, <&cluster_pwrdn>;
};
};

- |+

// Case 5: SYSTEM_RESET2 vendor resets
psci {
compatible = "arm,psci-1.0";
method = "smc";

reboot-mode {
mode-edl = <0>;
mode-bootloader = <1 2>;
};
};
...
48 changes: 46 additions & 2 deletions arch/arm64/boot/dts/qcom/kodiak.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,11 @@
qcom,client-id = <1>;
qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
};

adsp_rpc_remote_heap_mem: adsp-rpc-remote-heap@9cb80000 {
reg = <0x0 0x9cb80000 0x0 0x800000>;
no-map;
};
};

cpus {
Expand Down Expand Up @@ -858,7 +863,7 @@
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
};

psci {
psci: psci {
compatible = "arm,psci-1.0";
method = "smc";

Expand Down Expand Up @@ -2424,7 +2429,7 @@

status = "disabled";

pcie@0 {
pcie1_port0: pcie@0 {
device_type = "pci";
reg = <0x0 0x0 0x0 0x0 0x0>;
bus-range = <0x01 0xff>;
Expand Down Expand Up @@ -4431,6 +4436,9 @@
qcom,glink-channels = "fastrpcglink-apps-dsp";
label = "adsp";
qcom,non-secure-domain;
memory-region = <&adsp_rpc_remote_heap_mem>;
qcom,vmids = <QCOM_SCM_VMID_LPASS
QCOM_SCM_VMID_ADSP_HEAP>;
#address-cells = <1>;
#size-cells = <0>;

Expand Down Expand Up @@ -4780,6 +4788,14 @@
};
};
};

cooling {
compatible = "qcom,qmi-cooling-cdsp";
cdsp_sw: cdsp_sw {
label = "cdsp_sw";
#cooling-cells = <2>;
};
};
};

usb_1: usb@a600000 {
Expand Down Expand Up @@ -7587,12 +7603,26 @@
type = "hot";
};

nspss0_alert1: trip-point1 {
temperature = <100000>;
hysteresis = <5000>;
type = "passive";
};

nspss0_crit: nspss0-crit {
temperature = <110000>;
hysteresis = <0>;
type = "critical";
};
};

cooling-maps {
map0 {
trip = <&nspss0_alert1>;
cooling-device = <&cdsp_sw
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};

nspss1-thermal {
Expand All @@ -7605,12 +7635,26 @@
type = "hot";
};

nspss1_alert1: trip-point1 {
temperature = <100000>;
hysteresis = <5000>;
type = "passive";
};

nspss1_crit: nspss1-crit {
temperature = <110000>;
hysteresis = <0>;
type = "critical";
};
};

cooling-maps {
map0 {
trip = <&nspss1_alert1>;
cooling-device = <&cdsp_sw
THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};

video-thermal {
Expand Down
176 changes: 176 additions & 0 deletions arch/arm64/boot/dts/qcom/qcm6490-idp.dts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

aliases {
serial0 = &uart5;
serial1 = &uart7;
};

pm8350c_pwm_backlight: backlight {
Expand Down Expand Up @@ -194,6 +195,63 @@

#sound-dai-cells = <1>;
};

wcn6750-pmu {
compatible = "qcom,wcn6750-pmu";
pinctrl-0 = <&bt_en>;
pinctrl-names = "default";
vddaon-supply = <&vreg_s7b_0p972>;
vddasd-supply = <&vreg_l11c_2p8>;
vddpmu-supply = <&vreg_s7b_0p972>;
vddrfa0p8-supply = <&vreg_s7b_0p972>;
vddrfa1p2-supply = <&vreg_s8b_1p272>;
vddrfa1p7-supply = <&vreg_s1b_1p872>;
vddrfa2p2-supply = <&vreg_s1c_2p19>;

bt-enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;

regulators {
vreg_pmu_rfa_cmn: ldo0 {
regulator-name = "vreg_pmu_rfa_cmn";
};

vreg_pmu_aon_0p59: ldo1 {
regulator-name = "vreg_pmu_aon_0p59";
};

vreg_pmu_wlcx_0p8: ldo2 {
regulator-name = "vreg_pmu_wlcx_0p8";
};

vreg_pmu_wlmx_0p85: ldo3 {
regulator-name = "vreg_pmu_wlmx_0p85";
};

vreg_pmu_btcmx_0p85: ldo4 {
regulator-name = "vreg_pmu_btcmx_0p85";
};

vreg_pmu_rfa_0p8: ldo5 {
regulator-name = "vreg_pmu_rfa_0p8";
};

vreg_pmu_rfa_1p2: ldo6 {
regulator-name = "vreg_pmu_rfa_1p2";
};

vreg_pmu_rfa_1p7: ldo7 {
regulator-name = "vreg_pmu_rfa_1p7";
};

vreg_pmu_pcie_0p9: ldo8 {
regulator-name = "vreg_pmu_pcie_0p9";
};

vreg_pmu_pcie_1p8: ldo9 {
regulator-name = "vreg_pmu_pcie_1p8";
};
};
};
};

&apps_rsc {
Expand Down Expand Up @@ -695,6 +753,46 @@
status = "okay";
};

&psci {
reboot-mode {
mode-bootloader = <0x10001 0x2>;
mode-edl = <0 0x1>;
};
};

&qup_uart7_cts {
/*
* Configure a bias-bus-hold on CTS to lower power
* usage when Bluetooth is turned off. Bus hold will
* maintain a low power state regardless of whether
* the Bluetooth module drives the pin in either
* direction or leaves the pin fully unpowered.
*/
bias-bus-hold;
};

&qup_uart7_rts {
/* We'll drive RTS, so no pull */
drive-strength = <2>;
bias-disable;
};

&qup_uart7_rx {
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module is
* in tri-state (module powered off or not driving the
* signal yet).
*/
bias-pull-up;
};

&qup_uart7_tx {
/* We'll drive TX, so no pull */
drive-strength = <2>;
bias-disable;
};

&qupv3_id_0 {
status = "okay";
};
Expand Down Expand Up @@ -920,6 +1018,59 @@
gpio-reserved-ranges = <32 2>, /* ADSP */
<48 4>; /* NFC */

bt_en: bt-en-state {
pins = "gpio85";
function = "gpio";
output-low;
bias-disable;
};

qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
pins = "gpio28";
function = "gpio";
/*
* Configure a bias-bus-hold on CTS to lower power
* usage when Bluetooth is turned off. Bus hold will
* maintain a low power state regardless of whether
* the Bluetooth module drives the pin in either
* direction or leaves the pin fully unpowered.
*/
bias-bus-hold;
};

qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
pins = "gpio29";
function = "gpio";
/*
* Configure pull-down on RTS. As RTS is active low
* signal, pull it low to indicate the BT SoC that it
* can wakeup the system anytime from suspend state by
* pulling RX low (by sending wakeup bytes).
*/
bias-pull-down;
};

qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
pins = "gpio31";
function = "gpio";
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module
* is floating which may cause spurious wakeups.
*/
bias-pull-up;
};

qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
pins = "gpio30";
function = "gpio";
/*
* Configure pull-up on TX when it isn't actively driven
* to prevent BT SoC from receiving garbage during sleep.
*/
bias-pull-up;
};

sd_cd: sd-cd-state {
pins = "gpio91";
function = "gpio";
Expand All @@ -938,6 +1089,31 @@
status = "okay";
};

&uart7 {
/delete-property/ interrupts;
interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
<&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
pinctrl-1 = <&qup_uart7_sleep_cts>,
<&qup_uart7_sleep_rts>,
<&qup_uart7_sleep_tx>,
<&qup_uart7_sleep_rx>;
pinctrl-names = "default",
"sleep";

status = "okay";

bluetooth: bluetooth {
compatible = "qcom,wcn6750-bt";
vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
vddaon-supply = <&vreg_pmu_aon_0p59>;
vddbtcmx-supply = <&vreg_pmu_btcmx_0p85>;
vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
max-speed = <3200000>;
};
};

&ufs_mem_hc {
reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>;
vcc-supply = <&vreg_l7b_2p952>;
Expand Down
Loading