diff --git a/qcom/pmih010x.dtsi b/qcom/pmih010x.dtsi index 2661ca87..eede121d 100644 --- a/qcom/pmih010x.dtsi +++ b/qcom/pmih010x.dtsi @@ -5,6 +5,7 @@ #include #include +#include &spmi_bus { #address-cells = <2>; @@ -45,6 +46,195 @@ compatible = "qcom,pmic-eusb2-repeater"; reg = <0xfd00>; }; + + pmih010x_haptics: qcom,hv-haptics@f000 { + compatible = "qcom,hv-haptics"; + reg = <0xf000>, <0xf100>, <0xf200>; + interrupts = <0x7 0xf0 0x1 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "fifo-empty"; + qcom,vmax-mv = <3600>; + qcom,lra-period-us = <6667>; + qcom,brake-mode = ; + qcom,brake-pattern = /bits/ 8 <0xff 0x3f 0x1f>; + qcom,drv-sig-shape = ; + qcom,brake-sig-shape = ; + qcom,rt-imp-detect; + + hap_swr_slave_reg: qcom,hap-swr-slave-reg { + regulator-name = "hap-swr-slave-reg"; + }; + + /* + * Following sub-nodes are just examples of effects + * that play with FIFO mode. qcom,wf-fifo-data and + * qcom,wf-fifo-period and some other waveform related + * properties need to be updated for specific waveforms. + */ + effect_0 { + /* CLICK */ + qcom,effect-id = <0>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f 7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + effect_1 { + /* DOUBLE_CLICK */ + qcom,effect-id = <1>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f 7f 7f 7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + effect_2 { + /* TICK */ + qcom,effect-id = <2>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + effect_3 { + /* THUD */ + qcom,effect-id = <3>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + effect_4 { + /* POP */ + qcom,effect-id = <4>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + effect_5 { + /* HEAVY_CLICK */ + qcom,effect-id = <5>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f 7f 7f 7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_0 { + /* NOOP */ + qcom,primitive-id = <0>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [00 00 00 00]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_1 { + /* CLICK */ + qcom,primitive-id = <1>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_2 { + /* THUD */ + qcom,primitive-id = <2>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_3 { + /* SPIN */ + qcom,primitive-id = <3>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_4 { + /* QUICK_RISE */ + qcom,primitive-id = <4>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_5 { + /* SLOW_RISE */ + qcom,primitive-id = <5>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_6 { + /* QUICK_FALL */ + qcom,primitive-id = <6>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_7 { + /* LIGHT_TICK */ + qcom,primitive-id = <7>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + + primitive_8 { + /* LOW_TICK */ + qcom,primitive-id = <8>; + qcom,wf-vmax-mv = <3600>; + qcom,wf-fifo-preload; + qcom,wf-fifo-data = [7f 7f]; + qcom,wf-fifo-period = ; + qcom,wf-auto-res-disable; + qcom,wf-brake-disable; + }; + }; }; }; diff --git a/qcom/pmk8550.dtsi b/qcom/pmk8550.dtsi index d8ba7807..3047ec6b 100644 --- a/qcom/pmk8550.dtsi +++ b/qcom/pmk8550.dtsi @@ -89,6 +89,11 @@ reg = <0x9800>; }; + pmk8550_sdam_46: sdam@9d00 { + compatible = "qcom,spmi-sdam"; + reg = <0x9d00>; + }; + pmk8550_sdam_71: sdam@b600 { compatible = "qcom,spmi-sdam"; reg = <0xb600>; diff --git a/qcom/sun-pmic-overlay.dtsi b/qcom/sun-pmic-overlay.dtsi index 0220c646..757825b1 100644 --- a/qcom/sun-pmic-overlay.dtsi +++ b/qcom/sun-pmic-overlay.dtsi @@ -87,6 +87,11 @@ vdd3-supply = <&pm_humu_l5>; }; +&pmih010x_haptics { + nvmem-names = "hap_cfg_sdam"; + nvmem = <&pmk8550_sdam_46>; +}; + &soc { reboot_reason { compatible = "qcom,reboot-reason"; diff --git a/qcom/sun-qrd.dtsi b/qcom/sun-qrd.dtsi index a8032f2a..edf8df60 100644 --- a/qcom/sun-qrd.dtsi +++ b/qcom/sun-qrd.dtsi @@ -127,6 +127,11 @@ status = "ok"; }; +&pmih010x_haptics { + qcom,vmax-mv = <1700>; + qcom,lra-period-us = <7692>; +}; + &ufsphy_mem { compatible = "qcom,ufs-phy-qmp-v4-sun";