0001 // SPDX-License-Identifier: BSD-3-Clause
0002 /*
0003 * Copyright (c) 2021, Linaro Ltd.
0004 * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
0005 * Copyright (c) 2020, AngeloGioacchino Del Regno
0006 * <angelogioacchino.delregno@somainline.org>
0007 */
0008
0009 /dts-v1/;
0010
0011 #include "sdm660.dtsi"
0012 #include "pm660.dtsi"
0013 #include "pm660l.dtsi"
0014
0015 / {
0016 model = "Inforce 6560 Single Board Computer";
0017 compatible = "inforce,ifc6560", "qcom,sda660";
0018 chassis-type = "embedded"; /* SBC */
0019
0020 aliases {
0021 serial0 = &blsp1_uart2;
0022 serial1 = &blsp2_uart1;
0023 };
0024
0025 chosen {
0026 stdout-path = "serial0:115200n8";
0027 };
0028
0029 gpio-keys {
0030 compatible = "gpio-keys";
0031
0032 volup {
0033 label = "Volume Up";
0034 gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
0035 linux,code = <KEY_VOLUMEUP>;
0036 debounce-interval = <15>;
0037 };
0038 };
0039
0040 /*
0041 * Until we hook up type-c detection, we
0042 * have to stick with this. But it works.
0043 */
0044 extcon_usb: extcon-usb {
0045 compatible = "linux,extcon-usb-gpio";
0046 id-gpio = <&tlmm 58 GPIO_ACTIVE_HIGH>;
0047 };
0048
0049 hdmi-out {
0050 compatible = "hdmi-connector";
0051 type = "a";
0052
0053 port {
0054 hdmi_con: endpoint {
0055 remote-endpoint = <&adv7533_out>;
0056 };
0057 };
0058 };
0059
0060 vph_pwr: vph-pwr-regulator {
0061 compatible = "regulator-fixed";
0062 regulator-name = "vph_pwr";
0063 regulator-min-microvolt = <3800000>;
0064 regulator-max-microvolt = <3800000>;
0065
0066 regulator-always-on;
0067 regulator-boot-on;
0068 };
0069
0070 v3p3_bck_bst: v3p3-bck-bst-regulator {
0071 compatible = "regulator-fixed";
0072 regulator-name = "v3p3_bck_bst";
0073
0074 regulator-min-microvolt = <3300000>;
0075 regulator-max-microvolt = <3300000>;
0076
0077 vin-supply = <&vph_pwr>;
0078 };
0079
0080 v1p2_ldo: v1p2-ldo-regulator {
0081 compatible = "regulator-fixed";
0082 regulator-name = "v1p2_ldo";
0083
0084 regulator-min-microvolt = <1200000>;
0085 regulator-max-microvolt = <1200000>;
0086
0087 vin-supply = <&vph_pwr>;
0088 };
0089
0090 v5p0_boost: v5p0-boost-regulator {
0091 compatible = "regulator-fixed";
0092 regulator-name = "v5p0_boost";
0093
0094 regulator-min-microvolt = <5000000>;
0095 regulator-max-microvolt = <5000000>;
0096
0097 vin-supply = <&vph_pwr>;
0098 };
0099 };
0100
0101 &adsp_pil {
0102 firmware-name = "qcom/ifc6560/adsp.mbn";
0103 };
0104
0105 &blsp_i2c6 {
0106 status = "okay";
0107
0108 adv7533: hdmi@39 {
0109 compatible = "adi,adv7535";
0110 reg = <0x39>, <0x66>;
0111 reg-names = "main", "edid";
0112
0113 interrupt-parent = <&pm660l_gpios>;
0114 interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
0115
0116 clocks = <&rpmcc RPM_SMD_BB_CLK2>;
0117 clock-names = "cec";
0118 /*
0119 * Limit to 3 lanes to prevent the bridge from changing amount
0120 * of lanes in the fly. MSM DSI host doesn't like that.
0121 */
0122 adi,dsi-lanes = <3>;
0123 avdd-supply = <&vreg_l13a_1p8>;
0124 dvdd-supply = <&vreg_l13a_1p8>;
0125 pvdd-supply = <&vreg_l13a_1p8>;
0126 a2vdd-supply = <&vreg_l13a_1p8>;
0127 v3p3-supply = <&v3p3_bck_bst>;
0128
0129 ports {
0130 #address-cells = <1>;
0131 #size-cells = <0>;
0132
0133 port@0 {
0134 reg = <0>;
0135
0136 adv7533_in: endpoint {
0137 remote-endpoint = <&dsi0_out>;
0138 };
0139 };
0140
0141 port@1 {
0142 reg = <1>;
0143
0144 adv7533_out: endpoint {
0145 remote-endpoint = <&hdmi_con>;
0146 };
0147 };
0148 };
0149 };
0150 };
0151
0152 &blsp1_dma {
0153 /*
0154 * The board will lock up if we toggle the BLSP clock, unless the
0155 * BAM DMA interconnects support is in place.
0156 */
0157 /delete-property/ clocks;
0158 };
0159
0160 &blsp1_uart2 {
0161 status = "okay";
0162 };
0163
0164 &blsp2_dma {
0165 /*
0166 * The board will lock up if we toggle the BLSP clock, unless the
0167 * BAM DMA interconnects support is in place.
0168 */
0169 /delete-property/ clocks;
0170 };
0171
0172 &blsp2_uart1 {
0173 status = "okay";
0174
0175 bluetooth {
0176 compatible = "qcom,wcn3990-bt";
0177
0178 vddio-supply = <&vreg_l13a_1p8>;
0179 vddxo-supply = <&vreg_l9a_1p8>;
0180 vddrf-supply = <&vreg_l6a_1p3>;
0181 vddch0-supply = <&vreg_l19a_3p3>;
0182 max-speed = <3200000>;
0183 };
0184 };
0185
0186 &dsi0 {
0187 status = "okay";
0188 vdda-supply = <&vreg_l1a_1p225>;
0189 };
0190
0191 &dsi0_out {
0192 remote-endpoint = <&adv7533_in>;
0193 data-lanes = <0 1 2 3>;
0194 };
0195
0196 &dsi0_phy {
0197 status = "okay";
0198 vcca-supply = <&vreg_l1b_0p925>;
0199 };
0200
0201 &mdss {
0202 status = "okay";
0203 };
0204
0205 &mmss_smmu {
0206 status = "okay";
0207 };
0208
0209 &pon_pwrkey {
0210 status = "okay";
0211 };
0212
0213 &pon_resin {
0214 status = "okay";
0215
0216 linux,code = <KEY_VOLUMEUP>;
0217 };
0218
0219 &qusb2phy0 {
0220 status = "okay";
0221
0222 vdd-supply = <&vreg_l1b_0p925>;
0223 vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
0224 };
0225
0226 &qusb2phy1 {
0227 status = "okay";
0228
0229 vdd-supply = <&vreg_l1b_0p925>;
0230 vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
0231 };
0232
0233 &rpm_requests {
0234 pm660-regulators {
0235 compatible = "qcom,rpm-pm660-regulators";
0236
0237 vdd_s1-supply = <&vph_pwr>;
0238 vdd_s2-supply = <&vph_pwr>;
0239 vdd_s3-supply = <&vph_pwr>;
0240 vdd_s4-supply = <&vph_pwr>;
0241 vdd_s5-supply = <&vph_pwr>;
0242 vdd_s6-supply = <&vph_pwr>;
0243
0244 vdd_l1_l6_l7-supply = <&vreg_s5a_1p35>;
0245 vdd_l2_l3-supply = <&vreg_s2b_1p05>;
0246 vdd_l5-supply = <&vreg_s2b_1p05>;
0247 vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>;
0248 vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>;
0249
0250 vreg_s4a_2p04: s4 {
0251 regulator-min-microvolt = <1805000>;
0252 regulator-max-microvolt = <2040000>;
0253 regulator-enable-ramp-delay = <200>;
0254 regulator-ramp-delay = <0>;
0255 regulator-always-on;
0256 };
0257
0258 vreg_s5a_1p35: s5 {
0259 regulator-min-microvolt = <1224000>;
0260 regulator-max-microvolt = <1350000>;
0261 regulator-enable-ramp-delay = <200>;
0262 regulator-ramp-delay = <0>;
0263 };
0264
0265 vreg_l1a_1p225: l1 {
0266 regulator-min-microvolt = <1150000>;
0267 regulator-max-microvolt = <1250000>;
0268 regulator-enable-ramp-delay = <250>;
0269 regulator-allow-set-load;
0270 };
0271
0272 vreg_l6a_1p3: l6 {
0273 regulator-min-microvolt = <1304000>;
0274 regulator-max-microvolt = <1368000>;
0275 regulator-enable-ramp-delay = <250>;
0276 regulator-ramp-delay = <0>;
0277 regulator-allow-set-load;
0278 };
0279
0280 vreg_l8a_1p8: l8 {
0281 regulator-min-microvolt = <1800000>;
0282 regulator-max-microvolt = <1800000>;
0283 regulator-enable-ramp-delay = <250>;
0284 regulator-ramp-delay = <0>;
0285 regulator-system-load = <325000>;
0286 regulator-allow-set-load;
0287 };
0288
0289 vreg_l9a_1p8: l9 {
0290 regulator-min-microvolt = <1804000>;
0291 regulator-max-microvolt = <1896000>;
0292 regulator-enable-ramp-delay = <250>;
0293 regulator-ramp-delay = <0>;
0294 regulator-allow-set-load;
0295 };
0296
0297 vreg_l13a_1p8: l13 {
0298 /* This gives power to the LPDDR4: never turn it off! */
0299 regulator-min-microvolt = <1800000>;
0300 regulator-max-microvolt = <1944000>;
0301 regulator-enable-ramp-delay = <250>;
0302 regulator-ramp-delay = <0>;
0303 regulator-always-on;
0304 regulator-boot-on;
0305 };
0306
0307 vreg_l19a_3p3: l19 {
0308 regulator-min-microvolt = <3312000>;
0309 regulator-max-microvolt = <3400000>;
0310 regulator-enable-ramp-delay = <250>;
0311 regulator-ramp-delay = <0>;
0312 regulator-allow-set-load;
0313 };
0314 };
0315
0316 pm660l-regulators {
0317 compatible = "qcom,rpm-pm660l-regulators";
0318
0319 vdd_s1-supply = <&vph_pwr>;
0320 vdd_s2-supply = <&vph_pwr>;
0321 vdd_s3_s4-supply = <&vph_pwr>;
0322 vdd_s5-supply = <&vph_pwr>;
0323 vdd_s6-supply = <&vph_pwr>;
0324
0325 vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>;
0326 vdd_l2-supply = <&vreg_bob>;
0327 vdd_l3_l5_l7_l8-supply = <&vreg_bob>;
0328 vdd_l4_l6-supply = <&vreg_bob>;
0329 vdd_bob-supply = <&vph_pwr>;
0330
0331 vreg_s2b_1p05: s2 {
0332 regulator-min-microvolt = <1050000>;
0333 regulator-max-microvolt = <1050000>;
0334 regulator-enable-ramp-delay = <200>;
0335 regulator-ramp-delay = <0>;
0336 };
0337
0338 vreg_l1b_0p925: l1 {
0339 regulator-min-microvolt = <800000>;
0340 regulator-max-microvolt = <925000>;
0341 regulator-enable-ramp-delay = <250>;
0342 regulator-allow-set-load;
0343 };
0344
0345 vreg_l2b_2p95: l2 {
0346 regulator-min-microvolt = <1648000>;
0347 regulator-max-microvolt = <3100000>;
0348 regulator-enable-ramp-delay = <250>;
0349 regulator-ramp-delay = <0>;
0350 regulator-allow-set-load;
0351 };
0352
0353 vreg_l4b_2p95: l4 {
0354 regulator-min-microvolt = <2944000>;
0355 regulator-max-microvolt = <2952000>;
0356 regulator-enable-ramp-delay = <250>;
0357 regulator-ramp-delay = <0>;
0358
0359 regulator-min-microamp = <200>;
0360 regulator-max-microamp = <600000>;
0361 regulator-system-load = <570000>;
0362 regulator-allow-set-load;
0363 };
0364
0365 /*
0366 * Downstream specifies a range of 1721-3600mV,
0367 * but the only assigned consumers are SDHCI2 VMMC
0368 * and Coresight QPDI that both request pinned 2.95V.
0369 * Tighten the range to 1.8-3.328 (closest to 3.3) to
0370 * make the mmc driver happy.
0371 */
0372 vreg_l5b_2p95: l5 {
0373 regulator-min-microvolt = <1800000>;
0374 regulator-max-microvolt = <3328000>;
0375 regulator-enable-ramp-delay = <250>;
0376 regulator-system-load = <800000>;
0377 regulator-ramp-delay = <0>;
0378 regulator-allow-set-load;
0379 };
0380
0381 vreg_l7b_3p125: l7 {
0382 regulator-min-microvolt = <2700000>;
0383 regulator-max-microvolt = <3125000>;
0384 regulator-enable-ramp-delay = <250>;
0385 };
0386
0387 vreg_l8b_3p3: l8 {
0388 regulator-min-microvolt = <2800000>;
0389 regulator-max-microvolt = <3400000>;
0390 regulator-enable-ramp-delay = <250>;
0391 regulator-ramp-delay = <0>;
0392 };
0393
0394 vreg_bob: bob {
0395 regulator-min-microvolt = <3300000>;
0396 regulator-max-microvolt = <3624000>;
0397 regulator-enable-ramp-delay = <500>;
0398 regulator-ramp-delay = <0>;
0399 };
0400 };
0401 };
0402
0403 &sdc2_state_on {
0404 sd-cd {
0405 pins = "gpio54";
0406 bias-pull-up;
0407 drive-strength = <2>;
0408 };
0409 };
0410
0411 &sdc2_state_off {
0412 sd-cd {
0413 pins = "gpio54";
0414 bias-disable;
0415 drive-strength = <2>;
0416 };
0417 };
0418
0419 &sdhc_1 {
0420 status = "okay";
0421 supports-cqe;
0422
0423 vmmc-supply = <&vreg_l4b_2p95>;
0424 vqmmc-supply = <&vreg_l8a_1p8>;
0425
0426 mmc-ddr-1_8v;
0427 mmc-hs400-1_8v;
0428 mmc-hs400-enhanced-strobe;
0429 };
0430
0431 &sdhc_2 {
0432 status = "okay";
0433
0434 vmmc-supply = <&vreg_l5b_2p95>;
0435 vqmmc-supply = <&vreg_l2b_2p95>;
0436
0437 cd-gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
0438 no-sdio;
0439 no-emmc;
0440 };
0441
0442 &tlmm {
0443 gpio-reserved-ranges = <0 4>, <8 4>;
0444 };
0445
0446 &usb2 {
0447 status = "okay";
0448 };
0449
0450 &usb2_dwc3 {
0451 dr_mode = "host";
0452 };
0453
0454 &usb3 {
0455 status = "okay";
0456 };
0457
0458 &usb3_dwc3 {
0459 dr_mode = "peripheral";
0460 extcon = <&extcon_usb>;
0461 };