1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (c) 2025, Antony Kurniawan Soemardi <linux@smankusors.com> 4 */ 5#include <dt-bindings/gpio/gpio.h> 6#include <dt-bindings/input/input.h> 7#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 8#include <dt-bindings/reset/qcom,gcc-msm8960.h> 9 10#include "qcom-msm8960.dtsi" 11#include "pm8921.dtsi" 12 13/ { 14 model = "Sony Xperia SP"; 15 compatible = "sony,huashan", "qcom,msm8960t", "qcom,msm8960"; 16 chassis-type = "handset"; 17 18 aliases { 19 serial0 = &gsbi8_serial; 20 mmc0 = &sdcc1; /* SDCC1 eMMC slot */ 21 mmc1 = &sdcc3; /* SDCC3 SD card slot */ 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 }; 27 28 gpio-keys { 29 compatible = "gpio-keys"; 30 31 key-volume-up { 32 label = "Volume Up"; 33 gpios = <&pm8921_gpio 21 GPIO_ACTIVE_LOW>; 34 debounce-interval = <10>; 35 linux,code = <KEY_VOLUMEUP>; 36 }; 37 38 key-volume-down { 39 label = "Volume Down"; 40 gpios = <&pm8921_gpio 20 GPIO_ACTIVE_LOW>; 41 debounce-interval = <10>; 42 linux,code = <KEY_VOLUMEDOWN>; 43 }; 44 }; 45}; 46 47&gsbi8 { 48 qcom,mode = <GSBI_PROT_I2C_UART>; 49 status = "okay"; 50}; 51 52&gsbi8_serial { 53 status = "okay"; 54}; 55 56&pm8921 { 57 interrupts-extended = <&msmgpio 104 IRQ_TYPE_LEVEL_LOW>; 58}; 59 60&pm8921_gpio { 61 keypad_default_state: keypad-default-state { 62 keypad-sense-pins { 63 pins = "gpio1", "gpio2", "gpio3", "gpio4", "gpio5"; 64 function = PMIC_GPIO_FUNC_NORMAL; 65 bias-pull-up; 66 input-enable; 67 power-source = <PM8921_GPIO_S4>; 68 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>; 69 qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_31P5>; 70 }; 71 72 keypad-drive-pins { 73 pins = "gpio9", "gpio10"; 74 function = PMIC_GPIO_FUNC_FUNC1; 75 bias-disable; 76 drive-open-drain; 77 output-low; 78 power-source = <PM8921_GPIO_S4>; 79 qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>; 80 }; 81 }; 82}; 83 84&pm8921_keypad { 85 linux,keymap = < 86 MATRIX_KEY(1, 0, KEY_CAMERA_FOCUS) 87 MATRIX_KEY(1, 1, KEY_CAMERA) 88 >; 89 keypad,num-rows = <2>; 90 keypad,num-columns = <5>; 91 92 pinctrl-0 = <&keypad_default_state>; 93 pinctrl-names = "default"; 94 95 status = "okay"; 96}; 97 98&rpm { 99 regulators { 100 compatible = "qcom,rpm-pm8921-regulators"; 101 vin_lvs1_3_6-supply = <&pm8921_s4>; 102 vin_lvs2-supply = <&pm8921_s4>; 103 vin_lvs4_5_7-supply = <&pm8921_s4>; 104 vdd_ncp-supply = <&pm8921_l6>; 105 vdd_l1_l2_l12_l18-supply = <&pm8921_s4>; 106 vdd_l21_l23_l29-supply = <&pm8921_s8>; 107 vdd_l24-supply = <&pm8921_s1>; 108 vdd_l25-supply = <&pm8921_s1>; 109 vdd_l26-supply = <&pm8921_s7>; 110 vdd_l27-supply = <&pm8921_s7>; 111 vdd_l28-supply = <&pm8921_s7>; 112 vdd_l29-supply = <&pm8921_s8>; 113 114 /* Buck SMPS */ 115 pm8921_s1: s1 { 116 regulator-always-on; 117 regulator-min-microvolt = <1225000>; 118 regulator-max-microvolt = <1225000>; 119 qcom,switch-mode-frequency = <3200000>; 120 bias-pull-down; 121 }; 122 123 pm8921_s2: s2 { 124 regulator-min-microvolt = <1300000>; 125 regulator-max-microvolt = <1300000>; 126 qcom,switch-mode-frequency = <1600000>; 127 bias-pull-down; 128 }; 129 130 pm8921_s3: s3 { 131 regulator-min-microvolt = <500000>; 132 regulator-max-microvolt = <1150000>; 133 qcom,switch-mode-frequency = <4800000>; 134 bias-pull-down; 135 }; 136 137 pm8921_s4: s4 { 138 regulator-always-on; 139 regulator-min-microvolt = <1800000>; 140 regulator-max-microvolt = <1800000>; 141 qcom,switch-mode-frequency = <1600000>; 142 bias-pull-down; 143 qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>; 144 }; 145 146 pm8921_s7: s7 { 147 regulator-min-microvolt = <1150000>; 148 regulator-max-microvolt = <1150000>; 149 qcom,switch-mode-frequency = <3200000>; 150 bias-pull-down; 151 }; 152 153 pm8921_s8: s8 { 154 regulator-always-on; 155 regulator-min-microvolt = <2050000>; 156 regulator-max-microvolt = <2050000>; 157 qcom,switch-mode-frequency = <1600000>; 158 bias-pull-down; 159 }; 160 161 /* PMOS LDO */ 162 pm8921_l1: l1 { 163 regulator-always-on; 164 regulator-min-microvolt = <1050000>; 165 regulator-max-microvolt = <1050000>; 166 bias-pull-down; 167 }; 168 169 pm8921_l2: l2 { 170 regulator-min-microvolt = <1200000>; 171 regulator-max-microvolt = <1200000>; 172 bias-pull-down; 173 }; 174 175 pm8921_l3: l3 { 176 regulator-min-microvolt = <3075000>; 177 regulator-max-microvolt = <3075000>; 178 bias-pull-down; 179 }; 180 181 pm8921_l4: l4 { 182 regulator-always-on; 183 regulator-min-microvolt = <1800000>; 184 regulator-max-microvolt = <1800000>; 185 bias-pull-down; 186 }; 187 188 pm8921_l5: l5 { 189 regulator-min-microvolt = <2950000>; 190 regulator-max-microvolt = <2950000>; 191 bias-pull-down; 192 }; 193 194 pm8921_l6: l6 { 195 regulator-min-microvolt = <2950000>; 196 regulator-max-microvolt = <2950000>; 197 bias-pull-down; 198 }; 199 200 pm8921_l7: l7 { 201 regulator-always-on; 202 regulator-min-microvolt = <1850000>; 203 regulator-max-microvolt = <2950000>; 204 bias-pull-down; 205 }; 206 207 pm8921_l8: l8 { 208 regulator-min-microvolt = <2800000>; 209 regulator-max-microvolt = <3000000>; 210 bias-pull-down; 211 }; 212 213 pm8921_l9: l9 { 214 regulator-min-microvolt = <2850000>; 215 regulator-max-microvolt = <2850000>; 216 bias-pull-down; 217 }; 218 219 pm8921_l10: l10 { 220 regulator-min-microvolt = <3000000>; 221 regulator-max-microvolt = <3000000>; 222 bias-pull-down; 223 }; 224 225 pm8921_l11: l11 { 226 regulator-min-microvolt = <2600000>; 227 regulator-max-microvolt = <3000000>; 228 bias-pull-down; 229 }; 230 231 pm8921_l12: l12 { 232 regulator-min-microvolt = <1050000>; 233 regulator-max-microvolt = <1200000>; 234 bias-pull-down; 235 }; 236 237 pm8921_l14: l14 { 238 regulator-min-microvolt = <1800000>; 239 regulator-max-microvolt = <1800000>; 240 bias-pull-down; 241 }; 242 243 pm8921_l15: l15 { 244 regulator-min-microvolt = <1800000>; 245 regulator-max-microvolt = <2950000>; 246 bias-pull-down; 247 }; 248 249 pm8921_l16: l16 { 250 regulator-min-microvolt = <2600000>; 251 regulator-max-microvolt = <3000000>; 252 bias-pull-down; 253 }; 254 255 pm8921_l17: l17 { 256 regulator-always-on; 257 regulator-min-microvolt = <1800000>; 258 regulator-max-microvolt = <3000000>; 259 bias-pull-down; 260 }; 261 262 pm8921_l18: l18 { 263 regulator-min-microvolt = <1200000>; 264 regulator-max-microvolt = <1200000>; 265 bias-pull-down; 266 }; 267 268 pm8921_l21: l21 { 269 regulator-min-microvolt = <1900000>; 270 regulator-max-microvolt = <1900000>; 271 bias-pull-down; 272 }; 273 274 pm8921_l22: l22 { 275 regulator-min-microvolt = <2750000>; 276 regulator-max-microvolt = <2750000>; 277 bias-pull-down; 278 }; 279 280 pm8921_l23: l23 { 281 regulator-always-on; 282 regulator-min-microvolt = <1800000>; 283 regulator-max-microvolt = <1800000>; 284 bias-pull-down; 285 }; 286 287 pm8921_l24: l24 { 288 regulator-min-microvolt = <750000>; 289 regulator-max-microvolt = <1150000>; 290 bias-pull-down; 291 }; 292 293 pm8921_l25: l25 { 294 regulator-always-on; 295 regulator-min-microvolt = <1225000>; 296 regulator-max-microvolt = <1225000>; 297 bias-pull-down; 298 }; 299 300 /* Low Voltage Switch */ 301 pm8921_lvs1: lvs1 { 302 bias-pull-down; 303 }; 304 305 pm8921_lvs2: lvs2 { 306 bias-pull-down; 307 }; 308 309 pm8921_lvs3: lvs3 { 310 bias-pull-down; 311 }; 312 313 pm8921_lvs4: lvs4 { 314 bias-pull-down; 315 }; 316 317 pm8921_lvs5: lvs5 { 318 bias-pull-down; 319 }; 320 321 pm8921_lvs6: lvs6 { 322 bias-pull-down; 323 }; 324 325 pm8921_lvs7: lvs7 { 326 bias-pull-down; 327 }; 328 329 pm8921_ncp: ncp { 330 regulator-min-microvolt = <1800000>; 331 regulator-max-microvolt = <1800000>; 332 qcom,switch-mode-frequency = <1600000>; 333 }; 334 }; 335}; 336 337&sdcc1 { 338 vmmc-supply = <&pm8921_l5>; 339 status = "okay"; 340}; 341 342&sdcc3 { 343 vmmc-supply = <&pm8921_l6>; 344 vqmmc-supply = <&pm8921_l7>; 345 346 pinctrl-0 = <&sdcc3_default_state>; 347 pinctrl-1 = <&sdcc3_sleep_state>; 348 pinctrl-names = "default", "sleep"; 349 350 status = "okay"; 351}; 352 353&usb_hs1_phy { 354 v3p3-supply = <&pm8921_l3>; 355 v1p8-supply = <&pm8921_l4>; 356}; 357 358&usb1 { 359 dr_mode = "otg"; 360 status = "okay"; 361}; 362