Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'qcom-dts-for-4.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux into next/dt

Pull "Qualcomm Device Tree Changes for v4.10 - v2" from Andy Gross:

* Add EBI2 support to MSM8660
* Add SMSC ethernet support to APQ8060
* Add support for display, pstore, iommu, and hdmi to APQ8064
* Add SDHCI node to MSM8974 Hammerhead
* Add WP8548 MangOH board support (MDM9615)

* tag 'qcom-dts-for-4.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux:
ARM: dts: add SMSC ethernet on the APQ8060 Dragonboard
ARM: dts: add EBI2 to the Qualcomm MSM8660 DTSI
arm: dts: qcom: apq8064-nexus7: Add pstore support to nexus7
arm: dts: qcom: apq8064-nexus7: Add DSI and panel nodes
arm: dts: qcom: apq8064: Add dsi, gpu and iommu nodes
arm: dts: qcom: apq8064-ifc6410: Add HDMI support
arm: dts: qcom: apq8064: Add display DT nodes
ARM: dts: qcom: msm8974-hammerhead: Add sdhci1 node
dt-bindings: arm: Add Sierra Wireless modules bindings
ARM: dts: Add WP8548 based MangOH Green board DTS
ARM: dts: Add Sierra Wireless WP8548 dtsi
dt-bindings: qcom: Add MDM9615 bindings
ARM: dts: Add MDM9615 dtsi

+1658 -3
+1
Documentation/devicetree/bindings/arm/qcom.txt
··· 22 22 msm8916 23 23 msm8974 24 24 msm8996 25 + mdm9615 25 26 26 27 The 'board' element must be one of the following strings: 27 28
+12
Documentation/devicetree/bindings/arm/swir.txt
··· 1 + Sierra Wireless Modules device tree bindings 2 + -------------------------------------------- 3 + 4 + Supported Modules : 5 + - WP8548 : Includes MDM9615 and PM8018 in a module 6 + 7 + Sierra Wireless modules shall have the following properties : 8 + Required root node property 9 + - compatible: "swir,wp8548" for the WP8548 CF3 Module 10 + 11 + Board compatible values: 12 + - "swir,mangoh-green-wp8548" for the mangOH green board with the WP8548 module
+2 -1
arch/arm/boot/dts/Makefile
··· 633 633 qcom-msm8660-surf.dtb \ 634 634 qcom-msm8960-cdp.dtb \ 635 635 qcom-msm8974-lge-nexus5-hammerhead.dtb \ 636 - qcom-msm8974-sony-xperia-honami.dtb 636 + qcom-msm8974-sony-xperia-honami.dtb \ 637 + qcom-mdm9615-wp8548-mangoh-green.dtb 637 638 dtb-$(CONFIG_ARCH_REALVIEW) += \ 638 639 arm-realview-pb1176.dtb \ 639 640 arm-realview-pb11mp.dtb \
+119
arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
··· 51 51 regulator-boot-on; 52 52 }; 53 53 54 + /* GPIO controlled ethernet power regulator */ 55 + dragon_veth: xc622a331mrg { 56 + compatible = "regulator-fixed"; 57 + regulator-name = "XC6222A331MR-G"; 58 + regulator-min-microvolt = <3300000>; 59 + regulator-max-microvolt = <3300000>; 60 + vin-supply = <&vph>; 61 + gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>; 62 + enable-active-high; 63 + pinctrl-names = "default"; 64 + pinctrl-0 = <&dragon_veth_gpios>; 65 + regulator-always-on; 66 + }; 67 + 68 + /* VDDvario fixed regulator */ 69 + dragon_vario: nds332p { 70 + compatible = "regulator-fixed"; 71 + regulator-name = "NDS332P"; 72 + regulator-min-microvolt = <1800000>; 73 + regulator-max-microvolt = <1800000>; 74 + vin-supply = <&pm8058_s3>; 75 + }; 76 + 54 77 /* This is a levelshifter for SDCC5 */ 55 78 dragon_vio_txb: txb0104rgyr { 56 79 compatible = "regulator-fixed"; ··· 190 167 bias-pull-up; 191 168 }; 192 169 }; 170 + 171 + dragon_ebi2_pins: ebi2 { 172 + /* 173 + * Pins used by EBI2 on the Dragonboard, actually only 174 + * CS2 is used by a real peripheral. CS0 is just 175 + * routed to a test point. 176 + */ 177 + mux0 { 178 + pins = 179 + /* "gpio39", CS1A_N this is not good to mux */ 180 + "gpio40", /* CS2A_N */ 181 + "gpio134"; /* CS0_N testpoint TP29 */ 182 + function = "ebi2cs"; 183 + }; 184 + mux1 { 185 + pins = 186 + /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */ 187 + "gpio123", "gpio124", "gpio125", "gpio126", 188 + "gpio127", "gpio128", "gpio129", "gpio130", 189 + /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */ 190 + "gpio135", "gpio136", "gpio137", "gpio138", 191 + "gpio139", "gpio140", "gpio141", "gpio142", 192 + "gpio143", "gpio144", "gpio145", "gpio146", 193 + "gpio147", "gpio148", "gpio149", "gpio150", 194 + "gpio151", /* EBI2_OE_N */ 195 + "gpio153", /* EBI2_ADV */ 196 + "gpio157"; /* EBI2_WE_N */ 197 + function = "ebi2"; 198 + }; 199 + }; 193 200 }; 194 201 195 202 qcom,ssbi@500000 { ··· 254 201 }; 255 202 256 203 gpio@150 { 204 + dragon_ethernet_gpios: ethernet-gpios { 205 + pinconf { 206 + pins = "gpio7"; 207 + function = "normal"; 208 + input-enable; 209 + bias-disable; 210 + power-source = <PM8058_GPIO_S3>; 211 + }; 212 + }; 257 213 dragon_bmp085_gpios: bmp085-gpios { 258 214 pinconf { 259 215 pins = "gpio16"; ··· 298 236 input-enable; 299 237 bias-disable; 300 238 power-source = <PM8058_GPIO_S3>; 239 + }; 240 + }; 241 + dragon_veth_gpios: veth-gpios { 242 + pinconf { 243 + pins = "gpio40"; 244 + function = "normal"; 245 + bias-disable; 246 + drive-push-pull; 301 247 }; 302 248 }; 303 249 }; ··· 389 319 vddd-supply = <&pm8058_lvs0>; // 1.8V 390 320 vdda-supply = <&pm8058_l14>; // 2.85V 391 321 }; 322 + }; 323 + }; 324 + 325 + external-bus@1a100000 { 326 + /* The EBI2 will instantiate first, then populate its children */ 327 + status = "ok"; 328 + pinctrl-names = "default"; 329 + pinctrl-0 = <&dragon_ebi2_pins>; 330 + 331 + /* 332 + * An on-board SMSC LAN9221 chip for "debug ethernet", 333 + * which is actually just an ordinary ethernet on the 334 + * EBI2. This has a 25MHz chrystal next to it, so no 335 + * clocking is needed. 336 + */ 337 + ethernet-ebi2@2,0 { 338 + compatible = "smsc,lan9221", "smsc,lan9115"; 339 + reg = <2 0x0 0x100>; 340 + /* 341 + * GPIO7 has interrupt 198 on the PM8058 342 + * The second interrupt is the PME interrupt 343 + * for network wakeup, connected to the TLMM. 344 + */ 345 + interrupts-extended = <&pmicintc 198 IRQ_TYPE_EDGE_FALLING>, 346 + <&tlmm 29 IRQ_TYPE_EDGE_RISING>; 347 + reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; 348 + vdd33a-supply = <&dragon_veth>; 349 + vddvario-supply = <&dragon_vario>; 350 + pinctrl-names = "default"; 351 + pinctrl-0 = <&dragon_ethernet_gpios>; 352 + phy-mode = "mii"; 353 + reg-io-width = <2>; 354 + smsc,force-external-phy; 355 + /* IRQ on edge falling = active low */ 356 + smsc,irq-active-low; 357 + smsc,irq-push-pull; 358 + 359 + /* 360 + * SLOW chipselect config 361 + * Delay 9 cycles (140ns@64MHz) between SMSC 362 + * LAN9221 Ethernet controller reads and writes 363 + * on CS2. 364 + */ 365 + qcom,xmem-recovery-cycles = <0>; 366 + qcom,xmem-write-hold-cycles = <3>; 367 + qcom,xmem-write-delta-cycles = <31>; 368 + qcom,xmem-read-delta-cycles = <28>; 369 + qcom,xmem-write-wait-cycles = <9>; 370 + qcom,xmem-read-wait-cycles = <9>; 392 371 }; 393 372 }; 394 373
+75 -2
arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts
··· 15 15 stdout-path = "serial0:115200n8"; 16 16 }; 17 17 18 + reserved-memory { 19 + #address-cells = <1>; 20 + #size-cells = <1>; 21 + ranges; 22 + 23 + ramoops@88d00000{ 24 + compatible = "ramoops"; 25 + reg = <0x88d00000 0x100000>; 26 + record-size = <0x00020000>; 27 + console-size = <0x00020000>; 28 + ftrace-size = <0x00020000>; 29 + }; 30 + }; 31 + 18 32 ext_3p3v: regulator-fixed@1 { 19 33 compatible = "regulator-fixed"; 20 34 regulator-min-microvolt = <3300000>; ··· 113 99 l2 { 114 100 regulator-min-microvolt = <1200000>; 115 101 regulator-max-microvolt = <1200000>; 102 + regulator-always-on; 116 103 }; 117 104 118 105 /* msm_otg-HSUSB_3p3 */ ··· 148 133 regulator-min-microvolt = <3000000>; 149 134 regulator-max-microvolt = <3000000>; 150 135 bias-pull-down; 136 + regulator-always-on; 151 137 }; 152 138 153 139 /* pwm_power for backlight */ 154 140 l17 { 155 141 regulator-min-microvolt = <3000000>; 156 - regulator-max-microvolt = <3600000>; 157 - bias-pull-down; 142 + regulator-max-microvolt = <3000000>; 143 + regulator-always-on; 158 144 }; 159 145 160 146 /* camera, qdsp6 */ ··· 198 182 bias-pull-down; 199 183 }; 200 184 }; 185 + }; 186 + 187 + mdp@5100000 { 188 + status = "okay"; 189 + ports { 190 + port@1 { 191 + mdp_dsi1_out: endpoint { 192 + remote-endpoint = <&dsi0_in>; 193 + }; 194 + }; 195 + }; 196 + }; 197 + 198 + dsi0: mdss_dsi@4700000 { 199 + status = "okay"; 200 + vdda-supply = <&pm8921_l2>;/*VDD_MIPI1 to 4*/ 201 + vdd-supply = <&pm8921_l8>; 202 + vddio-supply = <&pm8921_lvs7>; 203 + avdd-supply = <&pm8921_l11>; 204 + vcss-supply = <&ext_3p3v>; 205 + 206 + panel@0 { 207 + reg = <0>; 208 + compatible = "jdi,lt070me05000"; 209 + 210 + vddp-supply = <&pm8921_l17>; 211 + iovcc-supply = <&pm8921_lvs7>; 212 + 213 + enable-gpios = <&pm8921_gpio 36 GPIO_ACTIVE_HIGH>; 214 + reset-gpios = <&tlmm_pinmux 54 GPIO_ACTIVE_LOW>; 215 + dcdc-en-gpios = <&pm8921_gpio 23 GPIO_ACTIVE_HIGH>; 216 + 217 + port { 218 + panel_in: endpoint { 219 + remote-endpoint = <&dsi0_out>; 220 + }; 221 + }; 222 + }; 223 + ports { 224 + port@0 { 225 + dsi0_in: endpoint { 226 + remote-endpoint = <&mdp_dsi1_out>; 227 + }; 228 + }; 229 + 230 + port@1 { 231 + dsi0_out: endpoint { 232 + remote-endpoint = <&panel_in>; 233 + data-lanes = <0 1 2 3>; 234 + }; 235 + }; 236 + }; 237 + }; 238 + 239 + dsi-phy@4700200 { 240 + status = "okay"; 241 + vddio-supply = <&pm8921_lvs7>;/*VDD_PLL2_1 to 7*/ 201 242 }; 202 243 203 244 gsbi@16200000 {
+74
arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
··· 43 43 }; 44 44 }; 45 45 46 + hdmi-out { 47 + compatible = "hdmi-connector"; 48 + type = "d"; 49 + 50 + port { 51 + hdmi_con: endpoint { 52 + remote-endpoint = <&hdmi_out>; 53 + }; 54 + }; 55 + }; 56 + 46 57 soc { 47 58 pinctrl@800000 { 48 59 card_detect: card_detect { ··· 73 62 pins = "gpio27"; 74 63 drive-strength = <12>; 75 64 bias-disable; 65 + }; 66 + }; 67 + 68 + hdmi_pinctrl: hdmi-pinctrl { 69 + mux { 70 + pins = "gpio70", "gpio71", "gpio72"; 71 + function = "hdmi"; 72 + }; 73 + 74 + pinconf_ddc { 75 + pins = "gpio70", "gpio71"; 76 + bias-pull-up; 77 + drive-strength = <2>; 78 + }; 79 + 80 + pinconf_hpd { 81 + pins = "gpio72"; 82 + bias-pull-down; 83 + drive-strength = <16>; 76 84 }; 77 85 }; 78 86 }; ··· 357 327 vmmc-supply = <&ext_3p3v>; 358 328 vqmmc-supply = <&pm8921_lvs1>; 359 329 mmc-pwrseq = <&sdcc4_pwrseq>; 330 + }; 331 + }; 332 + 333 + hdmi-tx@4a00000 { 334 + status = "okay"; 335 + 336 + core-vdda-supply = <&pm8921_hdmi_switch>; 337 + hdmi-mux-supply = <&ext_3p3v>; 338 + 339 + hpd-gpios = <&tlmm_pinmux 72 GPIO_ACTIVE_HIGH>; 340 + 341 + pinctrl-names = "default"; 342 + pinctrl-0 = <&hdmi_pinctrl>; 343 + 344 + ports { 345 + port@0 { 346 + endpoint { 347 + remote-endpoint = <&mdp_dtv_out>; 348 + }; 349 + }; 350 + 351 + port@1 { 352 + endpoint { 353 + remote-endpoint = <&hdmi_con>; 354 + }; 355 + }; 356 + }; 357 + }; 358 + 359 + hdmi-phy@4a00400 { 360 + status = "okay"; 361 + 362 + core-vdda-supply = <&pm8921_hdmi_switch>; 363 + }; 364 + 365 + mdp@5100000 { 366 + status = "okay"; 367 + 368 + ports { 369 + port@3 { 370 + endpoint { 371 + remote-endpoint = <&hdmi_in>; 372 + }; 373 + }; 360 374 }; 361 375 }; 362 376 };
+321
arch/arm/boot/dts/qcom-apq8064.dtsi
··· 1060 1060 reg = <0x1a400000 0x100>; 1061 1061 }; 1062 1062 1063 + gpu: adreno-3xx@4300000 { 1064 + compatible = "qcom,adreno-3xx"; 1065 + reg = <0x04300000 0x20000>; 1066 + reg-names = "kgsl_3d0_reg_memory"; 1067 + interrupts = <GIC_SPI 80 0>; 1068 + interrupt-names = "kgsl_3d0_irq"; 1069 + clock-names = 1070 + "core_clk", 1071 + "iface_clk", 1072 + "mem_clk", 1073 + "mem_iface_clk"; 1074 + clocks = 1075 + <&mmcc GFX3D_CLK>, 1076 + <&mmcc GFX3D_AHB_CLK>, 1077 + <&mmcc GFX3D_AXI_CLK>, 1078 + <&mmcc MMSS_IMEM_AHB_CLK>; 1079 + qcom,chipid = <0x03020002>; 1080 + 1081 + iommus = <&gfx3d 0 1082 + &gfx3d 1 1083 + &gfx3d 2 1084 + &gfx3d 3 1085 + &gfx3d 4 1086 + &gfx3d 5 1087 + &gfx3d 6 1088 + &gfx3d 7 1089 + &gfx3d 8 1090 + &gfx3d 9 1091 + &gfx3d 10 1092 + &gfx3d 11 1093 + &gfx3d 12 1094 + &gfx3d 13 1095 + &gfx3d 14 1096 + &gfx3d 15 1097 + &gfx3d 16 1098 + &gfx3d 17 1099 + &gfx3d 18 1100 + &gfx3d 19 1101 + &gfx3d 20 1102 + &gfx3d 21 1103 + &gfx3d 22 1104 + &gfx3d 23 1105 + &gfx3d 24 1106 + &gfx3d 25 1107 + &gfx3d 26 1108 + &gfx3d 27 1109 + &gfx3d 28 1110 + &gfx3d 29 1111 + &gfx3d 30 1112 + &gfx3d 31 1113 + &gfx3d1 0 1114 + &gfx3d1 1 1115 + &gfx3d1 2 1116 + &gfx3d1 3 1117 + &gfx3d1 4 1118 + &gfx3d1 5 1119 + &gfx3d1 6 1120 + &gfx3d1 7 1121 + &gfx3d1 8 1122 + &gfx3d1 9 1123 + &gfx3d1 10 1124 + &gfx3d1 11 1125 + &gfx3d1 12 1126 + &gfx3d1 13 1127 + &gfx3d1 14 1128 + &gfx3d1 15 1129 + &gfx3d1 16 1130 + &gfx3d1 17 1131 + &gfx3d1 18 1132 + &gfx3d1 19 1133 + &gfx3d1 20 1134 + &gfx3d1 21 1135 + &gfx3d1 22 1136 + &gfx3d1 23 1137 + &gfx3d1 24 1138 + &gfx3d1 25 1139 + &gfx3d1 26 1140 + &gfx3d1 27 1141 + &gfx3d1 28 1142 + &gfx3d1 29 1143 + &gfx3d1 30 1144 + &gfx3d1 31>; 1145 + 1146 + qcom,gpu-pwrlevels { 1147 + compatible = "qcom,gpu-pwrlevels"; 1148 + qcom,gpu-pwrlevel@0 { 1149 + qcom,gpu-freq = <450000000>; 1150 + }; 1151 + qcom,gpu-pwrlevel@1 { 1152 + qcom,gpu-freq = <27000000>; 1153 + }; 1154 + }; 1155 + }; 1156 + 1157 + mmss_sfpb: syscon@5700000 { 1158 + compatible = "syscon"; 1159 + reg = <0x5700000 0x70>; 1160 + }; 1161 + 1162 + dsi0: mdss_dsi@4700000 { 1163 + compatible = "qcom,mdss-dsi-ctrl"; 1164 + label = "MDSS DSI CTRL->0"; 1165 + #address-cells = <1>; 1166 + #size-cells = <0>; 1167 + interrupts = <GIC_SPI 82 0>; 1168 + reg = <0x04700000 0x200>; 1169 + reg-names = "dsi_ctrl"; 1170 + 1171 + clocks = <&mmcc DSI_M_AHB_CLK>, 1172 + <&mmcc DSI_S_AHB_CLK>, 1173 + <&mmcc AMP_AHB_CLK>, 1174 + <&mmcc DSI_CLK>, 1175 + <&mmcc DSI1_BYTE_CLK>, 1176 + <&mmcc DSI_PIXEL_CLK>, 1177 + <&mmcc DSI1_ESC_CLK>; 1178 + clock-names = "iface_clk", "bus_clk", "core_mmss_clk", 1179 + "src_clk", "byte_clk", "pixel_clk", 1180 + "core_clk"; 1181 + 1182 + assigned-clocks = <&mmcc DSI1_BYTE_SRC>, 1183 + <&mmcc DSI1_ESC_SRC>, 1184 + <&mmcc DSI_SRC>, 1185 + <&mmcc DSI_PIXEL_SRC>; 1186 + assigned-clock-parents = <&dsi0_phy 0>, 1187 + <&dsi0_phy 0>, 1188 + <&dsi0_phy 1>, 1189 + <&dsi0_phy 1>; 1190 + syscon-sfpb = <&mmss_sfpb>; 1191 + phys = <&dsi0_phy>; 1192 + ports { 1193 + #address-cells = <1>; 1194 + #size-cells = <0>; 1195 + 1196 + port@0 { 1197 + reg = <0>; 1198 + dsi0_in: endpoint { 1199 + }; 1200 + }; 1201 + 1202 + port@1 { 1203 + reg = <1>; 1204 + dsi0_out: endpoint { 1205 + }; 1206 + }; 1207 + }; 1208 + }; 1209 + 1210 + 1211 + dsi0_phy: dsi-phy@4700200 { 1212 + compatible = "qcom,dsi-phy-28nm-8960"; 1213 + #clock-cells = <1>; 1214 + 1215 + reg = <0x04700200 0x100>, 1216 + <0x04700300 0x200>, 1217 + <0x04700500 0x5c>; 1218 + reg-names = "dsi_pll", "dsi_phy", "dsi_phy_regulator"; 1219 + clock-names = "iface_clk"; 1220 + clocks = <&mmcc DSI_M_AHB_CLK>; 1221 + }; 1222 + 1223 + 1224 + mdp_port0: iommu@7500000 { 1225 + compatible = "qcom,apq8064-iommu"; 1226 + #iommu-cells = <1>; 1227 + clock-names = 1228 + "smmu_pclk", 1229 + "iommu_clk"; 1230 + clocks = 1231 + <&mmcc SMMU_AHB_CLK>, 1232 + <&mmcc MDP_AXI_CLK>; 1233 + reg = <0x07500000 0x100000>; 1234 + interrupts = 1235 + <GIC_SPI 63 0>, 1236 + <GIC_SPI 64 0>; 1237 + qcom,ncb = <2>; 1238 + }; 1239 + 1240 + mdp_port1: iommu@7600000 { 1241 + compatible = "qcom,apq8064-iommu"; 1242 + #iommu-cells = <1>; 1243 + clock-names = 1244 + "smmu_pclk", 1245 + "iommu_clk"; 1246 + clocks = 1247 + <&mmcc SMMU_AHB_CLK>, 1248 + <&mmcc MDP_AXI_CLK>; 1249 + reg = <0x07600000 0x100000>; 1250 + interrupts = 1251 + <GIC_SPI 61 0>, 1252 + <GIC_SPI 62 0>; 1253 + qcom,ncb = <2>; 1254 + }; 1255 + 1256 + gfx3d: iommu@7c00000 { 1257 + compatible = "qcom,apq8064-iommu"; 1258 + #iommu-cells = <1>; 1259 + clock-names = 1260 + "smmu_pclk", 1261 + "iommu_clk"; 1262 + clocks = 1263 + <&mmcc SMMU_AHB_CLK>, 1264 + <&mmcc GFX3D_AXI_CLK>; 1265 + reg = <0x07c00000 0x100000>; 1266 + interrupts = 1267 + <GIC_SPI 69 0>, 1268 + <GIC_SPI 70 0>; 1269 + qcom,ncb = <3>; 1270 + }; 1271 + 1272 + gfx3d1: iommu@7d00000 { 1273 + compatible = "qcom,apq8064-iommu"; 1274 + #iommu-cells = <1>; 1275 + clock-names = 1276 + "smmu_pclk", 1277 + "iommu_clk"; 1278 + clocks = 1279 + <&mmcc SMMU_AHB_CLK>, 1280 + <&mmcc GFX3D_AXI_CLK>; 1281 + reg = <0x07d00000 0x100000>; 1282 + interrupts = 1283 + <GIC_SPI 210 0>, 1284 + <GIC_SPI 211 0>; 1285 + qcom,ncb = <3>; 1286 + }; 1287 + 1063 1288 pcie: pci@1b500000 { 1064 1289 compatible = "qcom,pcie-apq8064", "snps,dw-pcie"; 1065 1290 reg = <0x1b500000 0x1000 ··· 1319 1094 <&gcc PCIE_PHY_RESET>; 1320 1095 reset-names = "axi", "ahb", "por", "pci", "phy"; 1321 1096 status = "disabled"; 1097 + }; 1098 + 1099 + hdmi: hdmi-tx@4a00000 { 1100 + compatible = "qcom,hdmi-tx-8960"; 1101 + reg = <0x04a00000 0x2f0>; 1102 + reg-names = "core_physical"; 1103 + interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; 1104 + clocks = <&mmcc HDMI_APP_CLK>, 1105 + <&mmcc HDMI_M_AHB_CLK>, 1106 + <&mmcc HDMI_S_AHB_CLK>; 1107 + clock-names = "core_clk", 1108 + "master_iface_clk", 1109 + "slave_iface_clk"; 1110 + 1111 + phys = <&hdmi_phy>; 1112 + phy-names = "hdmi-phy"; 1113 + 1114 + ports { 1115 + #address-cells = <1>; 1116 + #size-cells = <0>; 1117 + 1118 + port@0 { 1119 + reg = <0>; 1120 + hdmi_in: endpoint { 1121 + }; 1122 + }; 1123 + 1124 + port@1 { 1125 + reg = <1>; 1126 + hdmi_out: endpoint { 1127 + }; 1128 + }; 1129 + }; 1130 + }; 1131 + 1132 + hdmi_phy: hdmi-phy@4a00400 { 1133 + compatible = "qcom,hdmi-phy-8960"; 1134 + reg = <0x4a00400 0x60>, 1135 + <0x4a00500 0x100>; 1136 + reg-names = "hdmi_phy", 1137 + "hdmi_pll"; 1138 + 1139 + clocks = <&mmcc HDMI_S_AHB_CLK>; 1140 + clock-names = "slave_iface_clk"; 1141 + }; 1142 + 1143 + mdp: mdp@5100000 { 1144 + compatible = "qcom,mdp4"; 1145 + reg = <0x05100000 0xf0000>; 1146 + interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; 1147 + clocks = <&mmcc MDP_CLK>, 1148 + <&mmcc MDP_AHB_CLK>, 1149 + <&mmcc MDP_AXI_CLK>, 1150 + <&mmcc MDP_LUT_CLK>, 1151 + <&mmcc HDMI_TV_CLK>, 1152 + <&mmcc MDP_TV_CLK>; 1153 + clock-names = "core_clk", 1154 + "iface_clk", 1155 + "bus_clk", 1156 + "lut_clk", 1157 + "hdmi_clk", 1158 + "tv_clk"; 1159 + 1160 + iommus = <&mdp_port0 0 1161 + &mdp_port0 2 1162 + &mdp_port1 0 1163 + &mdp_port1 2>; 1164 + 1165 + ports { 1166 + #address-cells = <1>; 1167 + #size-cells = <0>; 1168 + 1169 + port@0 { 1170 + reg = <0>; 1171 + mdp_lvds_out: endpoint { 1172 + }; 1173 + }; 1174 + 1175 + port@1 { 1176 + reg = <1>; 1177 + mdp_dsi1_out: endpoint { 1178 + }; 1179 + }; 1180 + 1181 + port@2 { 1182 + reg = <2>; 1183 + mdp_dsi2_out: endpoint { 1184 + }; 1185 + }; 1186 + 1187 + port@3 { 1188 + reg = <3>; 1189 + mdp_dtv_out: endpoint { 1190 + }; 1191 + }; 1192 + }; 1322 1193 }; 1323 1194 }; 1324 1195 };
+281
arch/arm/boot/dts/qcom-mdm9615-wp8548-mangoh-green.dts
··· 1 + /* 2 + * Device Tree Source for mangOH Green Board with WP8548 Module 3 + * 4 + * Copyright (C) 2016 BayLibre, SAS. 5 + * Author : Neil Armstrong <narmstrong@baylibre.com> 6 + * 7 + * This file is dual-licensed: you can use it either under the terms 8 + * of the GPL or the X11 license, at your option. Note that this dual 9 + * licensing only applies to this file, and not this project as a 10 + * whole. 11 + * 12 + * a) This file is free software; you can redistribute it and/or 13 + * modify it under the terms of the GNU General Public License as 14 + * published by the Free Software Foundation; either version 2 of the 15 + * License, or (at your option) any later version. 16 + * 17 + * This file is distributed in the hope that it will be useful, 18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 + * GNU General Public License for more details. 21 + * 22 + * Or, alternatively, 23 + * 24 + * b) Permission is hereby granted, free of charge, to any person 25 + * obtaining a copy of this software and associated documentation 26 + * files (the "Software"), to deal in the Software without 27 + * restriction, including without limitation the rights to use, 28 + * copy, modify, merge, publish, distribute, sublicense, and/or 29 + * sell copies of the Software, and to permit persons to whom the 30 + * Software is furnished to do so, subject to the following 31 + * conditions: 32 + * 33 + * The above copyright notice and this permission notice shall be 34 + * included in all copies or substantial portions of the Software. 35 + * 36 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43 + * OTHER DEALINGS IN THE SOFTWARE. 44 + */ 45 + 46 + #include <dt-bindings/input/input.h> 47 + 48 + #include "qcom-mdm9615-wp8548.dtsi" 49 + #include <dt-bindings/interrupt-controller/irq.h> 50 + #include <dt-bindings/gpio/gpio.h> 51 + 52 + / { 53 + model = "MangOH Green with WP8548 Module"; 54 + compatible = "swir,mangoh-green-wp8548", "swir,wp8548", "qcom,mdm9615"; 55 + 56 + aliases { 57 + spi0 = &gsbi3_spi; 58 + serial0 = &gsbi4_serial; 59 + serial1 = &gsbi5_serial; 60 + i2c0 = &gsbi5_i2c; 61 + mmc0 = &sdcc1; 62 + }; 63 + 64 + chosen { 65 + stdout-path = "serial1:115200n8"; 66 + }; 67 + }; 68 + 69 + &msmgpio { 70 + /* MangOH GPIO Mapping : 71 + * - 2 : GPIOEXP_INT2 72 + * - 7 : IOT1_GPIO2 73 + * - 8 : IOT0_GPIO4 74 + * - 13: IOT0_GPIO3 75 + * - 21: IOT1_GPIO4 76 + * - 22: IOT2_GPIO1 77 + * - 23: IOT2_GPIO2 78 + * - 24: IOT2_GPIO3 79 + * - 25: IOT1_GPIO1 80 + * - 32: IOT1_GPIO3 81 + * - 33: IOT0_GPIO2 82 + * - 42: IOT0_GPIO1 and SD Card Detect 83 + */ 84 + 85 + gpioext1_pins: gpioext1_pins { 86 + pins { 87 + pins = "gpio2"; 88 + function = "gpio"; 89 + input-enable; 90 + bias-disable; 91 + }; 92 + }; 93 + 94 + sdc_cd_pins: sdc_cd_pins { 95 + pins { 96 + pins = "gpio42"; 97 + function = "gpio"; 98 + drive-strength = <2>; 99 + bias-pull-up; 100 + }; 101 + }; 102 + }; 103 + 104 + &gsbi3_spi { 105 + spi@0 { 106 + compatible = "swir,mangoh-iotport-spi", "spidev"; 107 + spi-max-frequency = <24000000>; 108 + reg = <0>; 109 + }; 110 + }; 111 + 112 + &gsbi5_i2c { 113 + mux@71 { 114 + compatible = "nxp,pca9548"; 115 + #address-cells = <1>; 116 + #size-cells = <0>; 117 + reg = <0x71>; 118 + 119 + i2c_iot0: i2c@0 { 120 + #address-cells = <1>; 121 + #size-cells = <0>; 122 + reg = <0>; 123 + }; 124 + 125 + i2c_iot1: i2c@1 { 126 + #address-cells = <1>; 127 + #size-cells = <0>; 128 + reg = <1>; 129 + }; 130 + 131 + i2c_iot2: i2c@2 { 132 + #address-cells = <1>; 133 + #size-cells = <0>; 134 + reg = <2>; 135 + }; 136 + 137 + i2c@3 { 138 + #address-cells = <1>; 139 + #size-cells = <0>; 140 + reg = <3>; 141 + 142 + usbhub: hub@8 { 143 + compatible = "smsc,usb3503a"; 144 + reg = <0x8>; 145 + connect-gpios = <&gpioext2 1 GPIO_ACTIVE_HIGH>; 146 + intn-gpios = <&gpioext2 0 GPIO_ACTIVE_LOW>; 147 + initial-mode = <1>; 148 + }; 149 + }; 150 + 151 + i2c@4 { 152 + #address-cells = <1>; 153 + #size-cells = <0>; 154 + reg = <4>; 155 + 156 + gpioext0: gpio@3e { 157 + /* GPIO Expander 0 Mapping : 158 + * - 0: ARDUINO_RESET_Level shift 159 + * - 1: BattChrgr_PG_N 160 + * - 2: BattGauge_GPIO 161 + * - 3: LED_ON (out active high) 162 + * - 4: ATmega_reset_GPIO 163 + * - 5: X 164 + * - 6: PCM_ANALOG_SELECT (out active high) 165 + * - 7: X 166 + * - 8: Board_rev_res1 (in) 167 + * - 9: Board_rev_res2 (in) 168 + * - 10: UART_EXP1_ENn (out active low / pull-down) 169 + * - 11: UART_EXP1_IN (out pull-down) 170 + * - 12: UART_EXP2_IN (out pull-down) 171 + * - 13: SDIO_SEL (out pull-down) 172 + * - 14: SPI_EXP1_ENn (out active low / pull-down) 173 + * - 15: SPI_EXP1_IN (out pull-down) 174 + */ 175 + #gpio-cells = <2>; 176 + #interrupt-cells = <2>; 177 + compatible = "semtech,sx1509q"; 178 + reg = <0x3e>; 179 + interrupt-parent = <&gpioext1>; 180 + interrupts = <0 IRQ_TYPE_EDGE_FALLING>; 181 + 182 + probe-reset; 183 + 184 + gpio-controller; 185 + interrupt-controller; 186 + }; 187 + }; 188 + 189 + i2c@5 { 190 + #address-cells = <1>; 191 + #size-cells = <0>; 192 + reg = <5>; 193 + 194 + gpioext1: gpio@3f { 195 + /* GPIO Expander 1 Mapping : 196 + * - 0: GPIOEXP_INT1 197 + * - 1: Battery detect 198 + * - 2: GPIO_SCF3_RESET 199 + * - 3: LED_CARD_DETECT_IOT0 (in) 200 + * - 4: LED_CARD_DETECT_IOT1 (in) 201 + * - 5: LED_CARD_DETECT_IOT2 (in) 202 + * - 6: UIM2_PWM_SELECT 203 + * - 7: UIM2_M2_S_SELECT 204 + * - 8: TP900 205 + * - 9: SENSOR_INT1 (in) 206 + * - 10: SENSOR_INT2 (in) 207 + * - 11: CARD_DETECT_IOT0 (in pull-up) 208 + * - 12: CARD_DETECT_IOT2 (in pull-up) 209 + * - 13: CARD_DETECT_IOT1 (in pull-up) 210 + * - 14: GPIOEXP_INT3 (in active low / pull-up) 211 + * - 15: BattChrgr_INT_N 212 + */ 213 + pinctrl-0 = <&gpioext1_pins>; 214 + pinctrl-names = "default"; 215 + 216 + #gpio-cells = <2>; 217 + #interrupt-cells = <2>; 218 + compatible = "semtech,sx1509q"; 219 + reg = <0x3f>; 220 + interrupt-parent = <&msmgpio>; 221 + interrupts = <0 IRQ_TYPE_EDGE_FALLING>; 222 + 223 + probe-reset; 224 + 225 + gpio-controller; 226 + interrupt-controller; 227 + }; 228 + }; 229 + 230 + i2c@6 { 231 + #address-cells = <1>; 232 + #size-cells = <0>; 233 + reg = <6>; 234 + 235 + gpioext2: gpio@70 { 236 + /* GPIO Expander 2 Mapping : 237 + * - 0: USB_HUB_INTn 238 + * - 1: HUB_CONNECT 239 + * - 2: GPIO_IOT2_RESET (out active low / pull-up) 240 + * - 3: GPIO_IOT1_RESET (out active low / pull-up) 241 + * - 4: GPIO_IOT0_RESET (out active low / pull-up) 242 + * - 5: TP901 243 + * - 6: TP902 244 + * - 7: TP903 245 + * - 8: UART_EXP2_ENn (out active low / pull-down) 246 + * - 9: PCM_EXP1_ENn (out active low) 247 + * - 10: PCM_EXP1_SEL (out) 248 + * - 11: ARD_FTDI 249 + * - 12: TP904 250 + * - 13: TP905 251 + * - 14: TP906 252 + * - 15: RS232_Enable (out active high / pull-up) 253 + */ 254 + #gpio-cells = <2>; 255 + #interrupt-cells = <2>; 256 + compatible = "semtech,sx1509q"; 257 + reg = <0x70>; 258 + interrupt-parent = <&gpioext1>; 259 + interrupts = <14 IRQ_TYPE_EDGE_FALLING>; 260 + 261 + probe-reset; 262 + 263 + gpio-controller; 264 + interrupt-controller; 265 + }; 266 + }; 267 + 268 + i2c@7 { 269 + #address-cells = <1>; 270 + #size-cells = <0>; 271 + reg = <7>; 272 + }; 273 + }; 274 + }; 275 + 276 + &sdcc1 { 277 + pinctrl-0 = <&sdc_cd_pins>; 278 + pinctrl-names = "default"; 279 + disable-wp; 280 + cd-gpios = <&msmgpio 42 GPIO_ACTIVE_LOW>; /* Active low CD */ 281 + };
+170
arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi
··· 1 + /* 2 + * Device Tree Source for Sierra Wireless WP8548 Module 3 + * 4 + * Copyright (C) 2016 BayLibre, SAS. 5 + * Author : Neil Armstrong <narmstrong@baylibre.com> 6 + * 7 + * This file is dual-licensed: you can use it either under the terms 8 + * of the GPL or the X11 license, at your option. Note that this dual 9 + * licensing only applies to this file, and not this project as a 10 + * whole. 11 + * 12 + * a) This file is free software; you can redistribute it and/or 13 + * modify it under the terms of the GNU General Public License as 14 + * published by the Free Software Foundation; either version 2 of the 15 + * License, or (at your option) any later version. 16 + * 17 + * This file is distributed in the hope that it will be useful, 18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 + * GNU General Public License for more details. 21 + * 22 + * Or, alternatively, 23 + * 24 + * b) Permission is hereby granted, free of charge, to any person 25 + * obtaining a copy of this software and associated documentation 26 + * files (the "Software"), to deal in the Software without 27 + * restriction, including without limitation the rights to use, 28 + * copy, modify, merge, publish, distribute, sublicense, and/or 29 + * sell copies of the Software, and to permit persons to whom the 30 + * Software is furnished to do so, subject to the following 31 + * conditions: 32 + * 33 + * The above copyright notice and this permission notice shall be 34 + * included in all copies or substantial portions of the Software. 35 + * 36 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43 + * OTHER DEALINGS IN THE SOFTWARE. 44 + */ 45 + 46 + #include "qcom-mdm9615.dtsi" 47 + 48 + / { 49 + model = "Sierra Wireless WP8548 Module"; 50 + compatible = "swir,wp8548", "qcom,mdm9615"; 51 + 52 + memory { 53 + reg = <0x48000000 0x7F00000>; 54 + }; 55 + }; 56 + 57 + &msmgpio { 58 + pinctrl-0 = <&reset_out_pins>; 59 + pinctrl-names = "default"; 60 + 61 + gsbi3_pins: gsbi3_pins { 62 + mux { 63 + pins = "gpio8", "gpio9", "gpio10", "gpio11"; 64 + function = "gsbi3"; 65 + drive-strength = <8>; 66 + bias-disable; 67 + }; 68 + }; 69 + 70 + gsbi4_pins: gsbi4_pins { 71 + mux { 72 + pins = "gpio12", "gpio13", "gpio14", "gpio15"; 73 + function = "gsbi4"; 74 + drive-strength = <8>; 75 + bias-disable; 76 + }; 77 + }; 78 + 79 + gsbi5_i2c_pins: gsbi5_i2c_pins { 80 + pin16 { 81 + pins = "gpio16"; 82 + function = "gsbi5_i2c"; 83 + drive-strength = <8>; 84 + bias-disable; 85 + }; 86 + 87 + pin17 { 88 + pins = "gpio17"; 89 + function = "gsbi5_i2c"; 90 + drive-strength = <2>; 91 + bias-disable; 92 + }; 93 + }; 94 + 95 + gsbi5_uart_pins: gsbi5_uart_pins { 96 + mux { 97 + pins = "gpio18", "gpio19"; 98 + function = "gsbi5_uart"; 99 + drive-strength = <8>; 100 + bias-disable; 101 + }; 102 + }; 103 + 104 + reset_out_pins: reset_out_pins { 105 + pins { 106 + pins = "gpio66"; 107 + function = "gpio"; 108 + drive-strength = <2>; 109 + bias-pull-up; 110 + output-high; 111 + }; 112 + }; 113 + }; 114 + 115 + &pmicgpio { 116 + usb_vbus_5v_pins: usb_vbus_5v_pins { 117 + pins = "gpio4"; 118 + function = "normal"; 119 + output-high; 120 + bias-disable; 121 + qcom,drive-strength = <1>; 122 + power-source = <2>; 123 + }; 124 + }; 125 + 126 + &gsbi3 { 127 + status = "ok"; 128 + qcom,mode = <GSBI_PROT_SPI>; 129 + }; 130 + 131 + &gsbi3_spi { 132 + status = "ok"; 133 + pinctrl-0 = <&gsbi3_pins>; 134 + pinctrl-names = "default"; 135 + assigned-clocks = <&gcc GSBI3_QUP_CLK>; 136 + assigned-clock-rates = <24000000>; 137 + }; 138 + 139 + &gsbi4 { 140 + status = "ok"; 141 + qcom,mode = <GSBI_PROT_UART_W_FC>; 142 + }; 143 + 144 + &gsbi4_serial { 145 + status = "ok"; 146 + pinctrl-0 = <&gsbi4_pins>; 147 + pinctrl-names = "default"; 148 + }; 149 + 150 + &gsbi5 { 151 + status = "ok"; 152 + qcom,mode = <GSBI_PROT_I2C_UART>; 153 + }; 154 + 155 + &gsbi5_i2c { 156 + status = "ok"; 157 + clock-frequency = <200000>; 158 + pinctrl-0 = <&gsbi5_i2c_pins>; 159 + pinctrl-names = "default"; 160 + }; 161 + 162 + &gsbi5_serial { 163 + status = "ok"; 164 + pinctrl-0 = <&gsbi5_uart_pins>; 165 + pinctrl-names = "default"; 166 + }; 167 + 168 + &sdcc1 { 169 + status = "ok"; 170 + };
+557
arch/arm/boot/dts/qcom-mdm9615.dtsi
··· 1 + /* 2 + * Device Tree Source for Qualcomm MDM9615 SoC 3 + * 4 + * Copyright (C) 2016 BayLibre, SAS. 5 + * Author : Neil Armstrong <narmstrong@baylibre.com> 6 + * 7 + * This file is dual-licensed: you can use it either under the terms 8 + * of the GPL or the X11 license, at your option. Note that this dual 9 + * licensing only applies to this file, and not this project as a 10 + * whole. 11 + * 12 + * a) This file is free software; you can redistribute it and/or 13 + * modify it under the terms of the GNU General Public License as 14 + * published by the Free Software Foundation; either version 2 of the 15 + * License, or (at your option) any later version. 16 + * 17 + * This file is distributed in the hope that it will be useful, 18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 + * GNU General Public License for more details. 21 + * 22 + * Or, alternatively, 23 + * 24 + * b) Permission is hereby granted, free of charge, to any person 25 + * obtaining a copy of this software and associated documentation 26 + * files (the "Software"), to deal in the Software without 27 + * restriction, including without limitation the rights to use, 28 + * copy, modify, merge, publish, distribute, sublicense, and/or 29 + * sell copies of the Software, and to permit persons to whom the 30 + * Software is furnished to do so, subject to the following 31 + * conditions: 32 + * 33 + * The above copyright notice and this permission notice shall be 34 + * included in all copies or substantial portions of the Software. 35 + * 36 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43 + * OTHER DEALINGS IN THE SOFTWARE. 44 + */ 45 + 46 + /dts-v1/; 47 + 48 + /include/ "skeleton.dtsi" 49 + 50 + #include <dt-bindings/interrupt-controller/arm-gic.h> 51 + #include <dt-bindings/clock/qcom,gcc-mdm9615.h> 52 + #include <dt-bindings/reset/qcom,gcc-mdm9615.h> 53 + #include <dt-bindings/mfd/qcom-rpm.h> 54 + #include <dt-bindings/soc/qcom,gsbi.h> 55 + 56 + / { 57 + model = "Qualcomm MDM9615"; 58 + compatible = "qcom,mdm9615"; 59 + interrupt-parent = <&intc>; 60 + 61 + cpus { 62 + #address-cells = <1>; 63 + #size-cells = <0>; 64 + 65 + cpu0: cpu@0 { 66 + compatible = "arm,cortex-a5"; 67 + device_type = "cpu"; 68 + next-level-cache = <&L2>; 69 + }; 70 + }; 71 + 72 + cpu-pmu { 73 + compatible = "arm,cortex-a5-pmu"; 74 + interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>; 75 + }; 76 + 77 + clocks { 78 + cxo_board { 79 + compatible = "fixed-clock"; 80 + #clock-cells = <0>; 81 + clock-frequency = <19200000>; 82 + }; 83 + }; 84 + 85 + regulators { 86 + vsdcc_fixed: vsdcc-regulator { 87 + compatible = "regulator-fixed"; 88 + regulator-name = "SDCC Power"; 89 + regulator-min-microvolt = <2700000>; 90 + regulator-max-microvolt = <2700000>; 91 + regulator-always-on; 92 + }; 93 + }; 94 + 95 + soc: soc { 96 + #address-cells = <1>; 97 + #size-cells = <1>; 98 + ranges; 99 + compatible = "simple-bus"; 100 + 101 + L2: l2-cache@2040000 { 102 + compatible = "arm,pl310-cache"; 103 + reg = <0x02040000 0x1000>; 104 + arm,data-latency = <2 2 0>; 105 + cache-unified; 106 + cache-level = <2>; 107 + }; 108 + 109 + intc: interrupt-controller@2000000 { 110 + compatible = "qcom,msm-qgic2"; 111 + interrupt-controller; 112 + #interrupt-cells = <3>; 113 + reg = <0x02000000 0x1000>, 114 + <0x02002000 0x1000>; 115 + }; 116 + 117 + timer@200a000 { 118 + compatible = "qcom,kpss-timer", "qcom,msm-timer"; 119 + interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>, 120 + <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>, 121 + <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_EDGE_RISING)>; 122 + reg = <0x0200a000 0x100>; 123 + clock-frequency = <27000000>, 124 + <32768>; 125 + cpu-offset = <0x80000>; 126 + }; 127 + 128 + msmgpio: pinctrl@800000 { 129 + compatible = "qcom,mdm9615-pinctrl"; 130 + gpio-controller; 131 + #gpio-cells = <2>; 132 + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 133 + interrupt-controller; 134 + #interrupt-cells = <2>; 135 + reg = <0x800000 0x4000>; 136 + }; 137 + 138 + gcc: clock-controller@900000 { 139 + compatible = "qcom,gcc-mdm9615"; 140 + #clock-cells = <1>; 141 + #reset-cells = <1>; 142 + reg = <0x900000 0x4000>; 143 + }; 144 + 145 + lcc: clock-controller@28000000 { 146 + compatible = "qcom,lcc-mdm9615"; 147 + reg = <0x28000000 0x1000>; 148 + #clock-cells = <1>; 149 + #reset-cells = <1>; 150 + }; 151 + 152 + l2cc: clock-controller@2011000 { 153 + compatible = "syscon"; 154 + reg = <0x02011000 0x1000>; 155 + }; 156 + 157 + rng@1a500000 { 158 + compatible = "qcom,prng"; 159 + reg = <0x1a500000 0x200>; 160 + clocks = <&gcc PRNG_CLK>; 161 + clock-names = "core"; 162 + assigned-clocks = <&gcc PRNG_CLK>; 163 + assigned-clock-rates = <32000000>; 164 + }; 165 + 166 + gsbi2: gsbi@16100000 { 167 + compatible = "qcom,gsbi-v1.0.0"; 168 + cell-index = <2>; 169 + reg = <0x16100000 0x100>; 170 + clocks = <&gcc GSBI2_H_CLK>; 171 + clock-names = "iface"; 172 + status = "disabled"; 173 + #address-cells = <1>; 174 + #size-cells = <1>; 175 + ranges; 176 + 177 + gsbi2_i2c: i2c@16180000 { 178 + compatible = "qcom,i2c-qup-v1.1.1"; 179 + #address-cells = <1>; 180 + #size-cells = <0>; 181 + reg = <0x16180000 0x1000>; 182 + interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; 183 + 184 + clocks = <&gcc GSBI2_QUP_CLK>, <&gcc GSBI2_H_CLK>; 185 + clock-names = "core", "iface"; 186 + status = "disabled"; 187 + }; 188 + }; 189 + 190 + gsbi3: gsbi@16200000 { 191 + compatible = "qcom,gsbi-v1.0.0"; 192 + cell-index = <3>; 193 + reg = <0x16200000 0x100>; 194 + clocks = <&gcc GSBI3_H_CLK>; 195 + clock-names = "iface"; 196 + status = "disabled"; 197 + #address-cells = <1>; 198 + #size-cells = <1>; 199 + ranges; 200 + 201 + gsbi3_spi: spi@16280000 { 202 + compatible = "qcom,spi-qup-v1.1.1"; 203 + #address-cells = <1>; 204 + #size-cells = <0>; 205 + reg = <0x16280000 0x1000>; 206 + interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>; 207 + spi-max-frequency = <24000000>; 208 + 209 + clocks = <&gcc GSBI3_QUP_CLK>, <&gcc GSBI3_H_CLK>; 210 + clock-names = "core", "iface"; 211 + status = "disabled"; 212 + }; 213 + }; 214 + 215 + gsbi4: gsbi@16300000 { 216 + compatible = "qcom,gsbi-v1.0.0"; 217 + cell-index = <4>; 218 + reg = <0x16300000 0x100>; 219 + clocks = <&gcc GSBI4_H_CLK>; 220 + clock-names = "iface"; 221 + status = "disabled"; 222 + #address-cells = <1>; 223 + #size-cells = <1>; 224 + ranges; 225 + 226 + syscon-tcsr = <&tcsr>; 227 + 228 + gsbi4_serial: serial@16340000 { 229 + compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 230 + reg = <0x16340000 0x1000>, 231 + <0x16300000 0x1000>; 232 + interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>; 233 + clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>; 234 + clock-names = "core", "iface"; 235 + status = "disabled"; 236 + }; 237 + }; 238 + 239 + gsbi5: gsbi@16400000 { 240 + compatible = "qcom,gsbi-v1.0.0"; 241 + cell-index = <5>; 242 + reg = <0x16400000 0x100>; 243 + clocks = <&gcc GSBI5_H_CLK>; 244 + clock-names = "iface"; 245 + status = "disabled"; 246 + #address-cells = <1>; 247 + #size-cells = <1>; 248 + ranges; 249 + 250 + syscon-tcsr = <&tcsr>; 251 + 252 + gsbi5_i2c: i2c@16480000 { 253 + compatible = "qcom,i2c-qup-v1.1.1"; 254 + #address-cells = <1>; 255 + #size-cells = <0>; 256 + reg = <0x16480000 0x1000>; 257 + interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>; 258 + 259 + /* QUP clock is not initialized, set rate */ 260 + assigned-clocks = <&gcc GSBI5_QUP_CLK>; 261 + assigned-clock-rates = <24000000>; 262 + 263 + clocks = <&gcc GSBI5_QUP_CLK>, <&gcc GSBI5_H_CLK>; 264 + clock-names = "core", "iface"; 265 + status = "disabled"; 266 + }; 267 + 268 + gsbi5_serial: serial@16440000 { 269 + compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 270 + reg = <0x16440000 0x1000>, 271 + <0x16400000 0x1000>; 272 + interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; 273 + clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>; 274 + clock-names = "core", "iface"; 275 + status = "disabled"; 276 + }; 277 + }; 278 + 279 + qcom,ssbi@500000 { 280 + compatible = "qcom,ssbi"; 281 + reg = <0x500000 0x1000>; 282 + qcom,controller-type = "pmic-arbiter"; 283 + 284 + pmicintc: pmic@0 { 285 + compatible = "qcom,pm8018", "qcom,pm8921"; 286 + interrupts = <GIC_PPI 226 IRQ_TYPE_LEVEL_HIGH>; 287 + #interrupt-cells = <2>; 288 + interrupt-controller; 289 + #address-cells = <1>; 290 + #size-cells = <0>; 291 + 292 + pwrkey@1c { 293 + compatible = "qcom,pm8018-pwrkey", "qcom,pm8921-pwrkey"; 294 + reg = <0x1c>; 295 + interrupt-parent = <&pmicintc>; 296 + interrupts = <50 IRQ_TYPE_EDGE_RISING>, 297 + <51 IRQ_TYPE_EDGE_RISING>; 298 + debounce = <15625>; 299 + pull-up; 300 + }; 301 + 302 + pmicmpp: mpp@50 { 303 + compatible = "qcom,pm8018-mpp", "qcom,ssbi-mpp"; 304 + interrupt-parent = <&pmicintc>; 305 + interrupts = <24 IRQ_TYPE_NONE>, 306 + <25 IRQ_TYPE_NONE>, 307 + <26 IRQ_TYPE_NONE>, 308 + <27 IRQ_TYPE_NONE>, 309 + <28 IRQ_TYPE_NONE>, 310 + <29 IRQ_TYPE_NONE>; 311 + reg = <0x50>; 312 + gpio-controller; 313 + #gpio-cells = <2>; 314 + }; 315 + 316 + rtc@11d { 317 + compatible = "qcom,pm8018-rtc", "qcom,pm8921-rtc"; 318 + interrupt-parent = <&pmicintc>; 319 + interrupts = <39 IRQ_TYPE_EDGE_RISING>; 320 + reg = <0x11d>; 321 + allow-set-time; 322 + }; 323 + 324 + pmicgpio: gpio@150 { 325 + compatible = "qcom,pm8018-gpio", "qcom,ssbi-gpio"; 326 + interrupt-parent = <&pmicintc>; 327 + interrupts = <24 IRQ_TYPE_NONE>, 328 + <25 IRQ_TYPE_NONE>, 329 + <26 IRQ_TYPE_NONE>, 330 + <27 IRQ_TYPE_NONE>, 331 + <28 IRQ_TYPE_NONE>, 332 + <29 IRQ_TYPE_NONE>; 333 + gpio-controller; 334 + #gpio-cells = <2>; 335 + }; 336 + }; 337 + }; 338 + 339 + sdcc1bam: dma@12182000{ 340 + compatible = "qcom,bam-v1.3.0"; 341 + reg = <0x12182000 0x8000>; 342 + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 343 + clocks = <&gcc SDC1_H_CLK>; 344 + clock-names = "bam_clk"; 345 + #dma-cells = <1>; 346 + qcom,ee = <0>; 347 + }; 348 + 349 + sdcc2bam: dma@12142000{ 350 + compatible = "qcom,bam-v1.3.0"; 351 + reg = <0x12142000 0x8000>; 352 + interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; 353 + clocks = <&gcc SDC2_H_CLK>; 354 + clock-names = "bam_clk"; 355 + #dma-cells = <1>; 356 + qcom,ee = <0>; 357 + }; 358 + 359 + amba { 360 + compatible = "arm,amba-bus"; 361 + #address-cells = <1>; 362 + #size-cells = <1>; 363 + ranges; 364 + sdcc1: sdcc@12180000 { 365 + status = "disabled"; 366 + compatible = "arm,pl18x", "arm,primecell"; 367 + arm,primecell-periphid = <0x00051180>; 368 + reg = <0x12180000 0x2000>; 369 + interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 370 + interrupt-names = "cmd_irq"; 371 + clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>; 372 + clock-names = "mclk", "apb_pclk"; 373 + bus-width = <8>; 374 + max-frequency = <48000000>; 375 + cap-sd-highspeed; 376 + cap-mmc-highspeed; 377 + vmmc-supply = <&vsdcc_fixed>; 378 + dmas = <&sdcc1bam 2>, <&sdcc1bam 1>; 379 + dma-names = "tx", "rx"; 380 + assigned-clocks = <&gcc SDC1_CLK>; 381 + assigned-clock-rates = <400000>; 382 + }; 383 + 384 + sdcc2: sdcc@12140000 { 385 + compatible = "arm,pl18x", "arm,primecell"; 386 + arm,primecell-periphid = <0x00051180>; 387 + status = "disabled"; 388 + reg = <0x12140000 0x2000>; 389 + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 390 + interrupt-names = "cmd_irq"; 391 + clocks = <&gcc SDC2_CLK>, <&gcc SDC2_H_CLK>; 392 + clock-names = "mclk", "apb_pclk"; 393 + bus-width = <4>; 394 + cap-sd-highspeed; 395 + cap-mmc-highspeed; 396 + max-frequency = <48000000>; 397 + no-1-8-v; 398 + vmmc-supply = <&vsdcc_fixed>; 399 + dmas = <&sdcc2bam 2>, <&sdcc2bam 1>; 400 + dma-names = "tx", "rx"; 401 + assigned-clocks = <&gcc SDC2_CLK>; 402 + assigned-clock-rates = <400000>; 403 + }; 404 + }; 405 + 406 + tcsr: syscon@1a400000 { 407 + compatible = "qcom,tcsr-mdm9615", "syscon"; 408 + reg = <0x1a400000 0x100>; 409 + }; 410 + 411 + rpm: rpm@108000 { 412 + compatible = "qcom,rpm-mdm9615"; 413 + reg = <0x108000 0x1000>; 414 + 415 + qcom,ipc = <&l2cc 0x8 2>; 416 + 417 + interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>, 418 + <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>, 419 + <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>; 420 + interrupt-names = "ack", "err", "wakeup"; 421 + 422 + regulators { 423 + compatible = "qcom,rpm-pm8018-regulators"; 424 + 425 + vin_lvs1-supply = <&pm8018_s3>; 426 + 427 + vdd_l7-supply = <&pm8018_s4>; 428 + vdd_l8-supply = <&pm8018_s3>; 429 + vdd_l9_l10_l11_l12-supply = <&pm8018_s5>; 430 + 431 + /* Buck SMPS */ 432 + pm8018_s1: s1 { 433 + regulator-min-microvolt = <500000>; 434 + regulator-max-microvolt = <1150000>; 435 + qcom,switch-mode-frequency = <1600000>; 436 + bias-pull-down; 437 + }; 438 + 439 + pm8018_s2: s2 { 440 + regulator-min-microvolt = <1225000>; 441 + regulator-max-microvolt = <1300000>; 442 + qcom,switch-mode-frequency = <1600000>; 443 + bias-pull-down; 444 + }; 445 + 446 + pm8018_s3: s3 { 447 + regulator-always-on; 448 + regulator-min-microvolt = <1800000>; 449 + regulator-max-microvolt = <1800000>; 450 + qcom,switch-mode-frequency = <1600000>; 451 + bias-pull-down; 452 + }; 453 + 454 + pm8018_s4: s4 { 455 + regulator-min-microvolt = <2100000>; 456 + regulator-max-microvolt = <2200000>; 457 + qcom,switch-mode-frequency = <1600000>; 458 + bias-pull-down; 459 + }; 460 + 461 + pm8018_s5: s5 { 462 + regulator-always-on; 463 + regulator-min-microvolt = <1350000>; 464 + regulator-max-microvolt = <1350000>; 465 + qcom,switch-mode-frequency = <1600000>; 466 + bias-pull-down; 467 + }; 468 + 469 + /* PMOS LDO */ 470 + pm8018_l2: l2 { 471 + regulator-always-on; 472 + regulator-min-microvolt = <1800000>; 473 + regulator-max-microvolt = <1800000>; 474 + bias-pull-down; 475 + }; 476 + 477 + pm8018_l3: l3 { 478 + regulator-always-on; 479 + regulator-min-microvolt = <1800000>; 480 + regulator-max-microvolt = <1800000>; 481 + bias-pull-down; 482 + }; 483 + 484 + pm8018_l4: l4 { 485 + regulator-min-microvolt = <3300000>; 486 + regulator-max-microvolt = <3300000>; 487 + bias-pull-down; 488 + }; 489 + 490 + pm8018_l5: l5 { 491 + regulator-min-microvolt = <2850000>; 492 + regulator-max-microvolt = <2850000>; 493 + bias-pull-down; 494 + }; 495 + 496 + pm8018_l6: l6 { 497 + regulator-min-microvolt = <1800000>; 498 + regulator-max-microvolt = <2850000>; 499 + bias-pull-down; 500 + }; 501 + 502 + pm8018_l7: l7 { 503 + regulator-min-microvolt = <1850000>; 504 + regulator-max-microvolt = <1900000>; 505 + bias-pull-down; 506 + }; 507 + 508 + pm8018_l8: l8 { 509 + regulator-min-microvolt = <1200000>; 510 + regulator-max-microvolt = <1200000>; 511 + bias-pull-down; 512 + }; 513 + 514 + pm8018_l9: l9 { 515 + regulator-min-microvolt = <750000>; 516 + regulator-max-microvolt = <1150000>; 517 + bias-pull-down; 518 + }; 519 + 520 + pm8018_l10: l10 { 521 + regulator-min-microvolt = <1050000>; 522 + regulator-max-microvolt = <1050000>; 523 + bias-pull-down; 524 + }; 525 + 526 + pm8018_l11: l11 { 527 + regulator-min-microvolt = <1050000>; 528 + regulator-max-microvolt = <1050000>; 529 + bias-pull-down; 530 + }; 531 + 532 + pm8018_l12: l12 { 533 + regulator-min-microvolt = <1050000>; 534 + regulator-max-microvolt = <1050000>; 535 + bias-pull-down; 536 + }; 537 + 538 + pm8018_l13: l13 { 539 + regulator-min-microvolt = <1850000>; 540 + regulator-max-microvolt = <2950000>; 541 + bias-pull-down; 542 + }; 543 + 544 + pm8018_l14: l14 { 545 + regulator-min-microvolt = <2850000>; 546 + regulator-max-microvolt = <2850000>; 547 + bias-pull-down; 548 + }; 549 + 550 + /* Low Voltage Switch */ 551 + pm8018_lvs1: lvs1 { 552 + bias-pull-down; 553 + }; 554 + }; 555 + }; 556 + }; 557 + };
+17
arch/arm/boot/dts/qcom-msm8660.dtsi
··· 141 141 }; 142 142 }; 143 143 144 + external-bus@1a100000 { 145 + compatible = "qcom,msm8660-ebi2"; 146 + #address-cells = <2>; 147 + #size-cells = <1>; 148 + ranges = <0 0x0 0x1a800000 0x00800000>, 149 + <1 0x0 0x1b000000 0x00800000>, 150 + <2 0x0 0x1b800000 0x00800000>, 151 + <3 0x0 0x1d000000 0x08000000>, 152 + <4 0x0 0x1c800000 0x00800000>, 153 + <5 0x0 0x1c000000 0x00800000>; 154 + reg = <0x1a100000 0x1000>, <0x1a110000 0x1000>; 155 + reg-names = "ebi2", "xmem"; 156 + clocks = <&gcc EBI2_2X_CLK>, <&gcc EBI2_CLK>; 157 + clock-names = "ebi2x", "ebi2"; 158 + status = "disabled"; 159 + }; 160 + 144 161 qcom,ssbi@500000 { 145 162 compatible = "qcom,ssbi"; 146 163 reg = <0x500000 0x1000>;
+29
arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
··· 224 224 status = "ok"; 225 225 }; 226 226 227 + pinctrl@fd510000 { 228 + sdhc1_pin_a: sdhc1-pin-active { 229 + clk { 230 + pins = "sdc1_clk"; 231 + drive-strength = <16>; 232 + bias-disable; 233 + }; 234 + 235 + cmd-data { 236 + pins = "sdc1_cmd", "sdc1_data"; 237 + drive-strength = <10>; 238 + bias-pull-up; 239 + }; 240 + }; 241 + }; 242 + 243 + sdhci@f9824900 { 244 + status = "ok"; 245 + 246 + vmmc-supply = <&pm8941_l20>; 247 + vqmmc-supply = <&pm8941_s3>; 248 + 249 + bus-width = <8>; 250 + non-removable; 251 + 252 + pinctrl-names = "default"; 253 + pinctrl-0 = <&sdhc1_pin_a>; 254 + }; 255 + 227 256 gpio-keys { 228 257 compatible = "gpio-keys"; 229 258 input-name = "gpio-keys";