Back to home page

OSCL-LXR

 
 

    


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 };