| // SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/leds/common.h> |
| #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> |
| #include <dt-bindings/pinctrl/qcom,pmic-mpp.h> |
| #include "qcom-msm8660.dtsi" |
| #include "pm8058.dtsi" |
| |
| / { |
| model = "Qualcomm APQ8060 Dragonboard"; |
| compatible = "qcom,apq8060-dragonboard", "qcom,msm8660"; |
| |
| aliases { |
| serial0 = &gsbi12_serial; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| |
| /* Main power of the board: 3.7V */ |
| vph: regulator-fixed { |
| compatible = "regulator-fixed"; |
| regulator-min-microvolt = <3700000>; |
| regulator-max-microvolt = <3700000>; |
| regulator-name = "VPH"; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| /* GPIO controlled ethernet power regulator */ |
| dragon_veth: xc622a331mrg { |
| compatible = "regulator-fixed"; |
| regulator-name = "XC6222A331MR-G"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| vin-supply = <&vph>; |
| gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_veth_gpios>; |
| regulator-always-on; |
| }; |
| |
| /* VDDvario fixed regulator */ |
| dragon_vario: nds332p { |
| compatible = "regulator-fixed"; |
| regulator-name = "NDS332P"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| vin-supply = <&pm8058_s3>; |
| }; |
| |
| /* This is a levelshifter for SDCC5 */ |
| dragon_vio_txb: txb0104rgyr { |
| compatible = "regulator-fixed"; |
| regulator-name = "Dragon SDCC levelshifter"; |
| vin-supply = <&pm8058_l14>; |
| regulator-always-on; |
| }; |
| |
| /* |
| * Capella CM3605 light and proximity sensor mounted directly |
| * on the sensor board. |
| */ |
| cm3605 { |
| compatible = "capella,cm3605"; |
| vdd-supply = <&pm8058_l14>; // 2.85V |
| aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>; |
| capella,aset-resistance-ohms = <100000>; |
| /* Trig on both edges - getting close or far away */ |
| interrupts-extended = <&pm8058_gpio 34 IRQ_TYPE_EDGE_BOTH>; |
| /* MPP05 analog input to the XOADC */ |
| io-channels = <&pm8058_xoadc 0x00 0x05>; |
| io-channel-names = "aout"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>; |
| }; |
| }; |
| |
| &ebi2 { |
| /* The EBI2 will instantiate first, then populate its children */ |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_ebi2_pins>; |
| status = "okay"; |
| |
| /* |
| * An on-board SMSC LAN9221 chip for "debug ethernet", |
| * which is actually just an ordinary ethernet on the |
| * EBI2. This has a 25MHz chrystal next to it, so no |
| * clocking is needed. |
| */ |
| ethernet@2,0 { |
| compatible = "smsc,lan9221", "smsc,lan9115"; |
| reg = <2 0x0 0x100>; |
| /* |
| * The second interrupt is the PME interrupt |
| * for network wakeup, connected to the TLMM. |
| */ |
| interrupts-extended = <&pm8058_gpio 7 IRQ_TYPE_EDGE_FALLING>, |
| <&tlmm 29 IRQ_TYPE_EDGE_RISING>; |
| reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; |
| vdd33a-supply = <&dragon_veth>; |
| vddvario-supply = <&dragon_vario>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_ethernet_gpios>; |
| phy-mode = "mii"; |
| reg-io-width = <2>; |
| smsc,force-external-phy; |
| smsc,irq-push-pull; |
| |
| /* |
| * SLOW chipselect config |
| * Delay 9 cycles (140ns@64MHz) between SMSC |
| * LAN9221 Ethernet controller reads and writes |
| * on CS2. |
| */ |
| qcom,xmem-recovery-cycles = <0>; |
| qcom,xmem-write-hold-cycles = <3>; |
| qcom,xmem-write-delta-cycles = <31>; |
| qcom,xmem-read-delta-cycles = <28>; |
| qcom,xmem-write-wait-cycles = <9>; |
| qcom,xmem-read-wait-cycles = <9>; |
| }; |
| }; |
| |
| &gsbi3 { |
| qcom,mode = <GSBI_PROT_I2C>; |
| status = "okay"; |
| }; |
| |
| &gsbi3_i2c { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_gsbi3_i2c_pins>; |
| status = "okay"; |
| |
| touchscreen@24 { |
| compatible = "cypress,cy8ctma340"; |
| reg = <0x24>; |
| /* Certainly we can do at least 400 kHz */ |
| clock-frequency = <400000>; |
| /* IRQ on GPIO61 called /CTP_INT */ |
| interrupt-parent = <&tlmm>; |
| interrupts = <61 IRQ_TYPE_EDGE_FALLING>; |
| /* |
| * The I2C bus is using a PCA9306 level translator from L16A |
| * to L2B so these two voltages are needed and L16A is |
| * kind of the IO voltage, however L16Aisn't really fed to |
| * the TMA340, which relies entirely on L2B (PM8901 L2). |
| */ |
| vcpin-supply = <&pm8058_l16>; |
| vdd-supply = <&pm8901_l2>; |
| /* GPIO58, called WAKE_CTP */ |
| reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>; |
| touchscreen-size-x = <480>; |
| touchscreen-size-y = <800>; |
| active-interval-ms = <0>; |
| touch-timeout-ms = <255>; |
| lowpower-interval-ms = <10>; |
| bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_tma340_gpios>; |
| }; |
| }; |
| |
| &gsbi8 { |
| qcom,mode = <GSBI_PROT_I2C>; |
| status = "okay"; |
| }; |
| |
| &gsbi8_i2c { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_gsbi8_i2c_pins>; |
| status = "okay"; |
| |
| eeprom@52 { |
| /* A 16KiB Platform ID EEPROM on the CPU carrier board */ |
| compatible = "atmel,24c128"; |
| reg = <0x52>; |
| vcc-supply = <&pm8058_s3>; |
| pagesize = <64>; |
| }; |
| wm8903: wm8903@1a { |
| /* This Woolfson Micro device has an unrouted interrupt line */ |
| compatible = "wlf,wm8903"; |
| reg = <0x1a>; |
| |
| AVDD-supply = <&pm8058_l16>; |
| CPVDD-supply = <&pm8058_l16>; |
| DBVDD-supply = <&pm8058_s3>; |
| DCVDD-supply = <&pm8058_l0>; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| micdet-cfg = <0>; |
| micdet-delay = <100>; |
| gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>; |
| }; |
| }; |
| |
| &gsbi12 { |
| qcom,mode = <GSBI_PROT_I2C_UART>; |
| status = "okay"; |
| }; |
| |
| &gsbi12_serial { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_gsbi12_serial_pins>; |
| status = "okay"; |
| }; |
| |
| &gsbi12_i2c { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_gsbi12_i2c_pins>; |
| status = "okay"; |
| |
| ak8975@c { |
| compatible = "asahi-kasei,ak8975"; |
| reg = <0x0c>; |
| interrupt-parent = <&pm8058_gpio>; |
| interrupts = <33 IRQ_TYPE_EDGE_RISING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_ak8975_gpios>; |
| vid-supply = <&pm8058_lvs0>; // 1.8V |
| vdd-supply = <&pm8058_l14>; // 2.85V |
| }; |
| bmp085@77 { |
| compatible = "bosch,bmp085"; |
| reg = <0x77>; |
| interrupt-parent = <&pm8058_gpio>; |
| interrupts = <16 IRQ_TYPE_EDGE_RISING>; |
| reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_bmp085_gpios>; |
| vddd-supply = <&pm8058_lvs0>; // 1.8V |
| vdda-supply = <&pm8058_l14>; // 2.85V |
| }; |
| mpu3050@68 { |
| compatible = "invensense,mpu3050"; |
| reg = <0x68>; |
| /* |
| * GPIO17 is pulled high by a 10k |
| * resistor to VLOGIC so needs to be |
| * active low/falling edge. |
| */ |
| interrupts-extended = <&pm8058_gpio 17 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_mpu3050_gpios>; |
| vlogic-supply = <&pm8058_lvs0>; // 1.8V |
| vdd-supply = <&pm8058_l14>; // 2.85V |
| |
| /* |
| * The MPU-3050 acts as a hub for the |
| * accelerometer. |
| */ |
| i2c-gate { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| kxsd9@18 { |
| compatible = "kionix,kxsd9"; |
| reg = <0x18>; |
| interrupt-parent = <&tlmm>; |
| interrupts = <57 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_kxsd9_gpios>; |
| iovdd-supply = <&pm8058_lvs0>; // 1.8V |
| vdd-supply = <&pm8058_l14>; // 2.85V |
| }; |
| }; |
| }; |
| }; |
| |
| &pm8058 { |
| interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>; |
| }; |
| |
| &pm8058_gpio { |
| dragon_ethernet_gpios: ethernet-state { |
| pinconf { |
| pins = "gpio7"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_bmp085_gpios: bmp085-state { |
| pinconf { |
| pins = "gpio16"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_mpu3050_gpios: mpu3050-state { |
| pinconf { |
| pins = "gpio17"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_sdcc3_gpios: sdcc3-state { |
| pinconf { |
| pins = "gpio22"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_sdcc5_gpios: sdcc5-state { |
| pinconf { |
| pins = "gpio26"; |
| function = "normal"; |
| input-enable; |
| bias-pull-up; |
| qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_ak8975_gpios: ak8975-state { |
| pinconf { |
| pins = "gpio33"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_cm3605_gpios: cm3605-state { |
| /* Pin 34 connected to the proxy IRQ */ |
| gpio34-pins { |
| pins = "gpio34"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| /* Pin 35 connected to ASET */ |
| gpio35-pins { |
| pins = "gpio35"; |
| function = "normal"; |
| output-high; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_veth_gpios: veth-state { |
| pinconf { |
| pins = "gpio40"; |
| function = "normal"; |
| bias-disable; |
| drive-push-pull; |
| }; |
| }; |
| }; |
| |
| &pm8058_keypad { |
| linux,keymap = < |
| MATRIX_KEY(0, 0, KEY_MENU) |
| MATRIX_KEY(0, 2, KEY_1) |
| MATRIX_KEY(0, 3, KEY_4) |
| MATRIX_KEY(0, 4, KEY_7) |
| MATRIX_KEY(1, 0, KEY_UP) |
| MATRIX_KEY(1, 1, KEY_LEFT) |
| MATRIX_KEY(1, 2, KEY_DOWN) |
| MATRIX_KEY(1, 3, KEY_5) |
| MATRIX_KEY(1, 3, KEY_8) |
| MATRIX_KEY(2, 0, KEY_HOME) |
| MATRIX_KEY(2, 1, KEY_REPLY) |
| MATRIX_KEY(2, 2, KEY_2) |
| MATRIX_KEY(2, 3, KEY_6) |
| MATRIX_KEY(3, 0, KEY_VOLUMEUP) |
| MATRIX_KEY(3, 1, KEY_RIGHT) |
| MATRIX_KEY(3, 2, KEY_3) |
| MATRIX_KEY(3, 3, KEY_9) |
| MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE) |
| MATRIX_KEY(4, 0, KEY_VOLUMEDOWN) |
| MATRIX_KEY(4, 1, KEY_BACK) |
| MATRIX_KEY(4, 2, KEY_CAMERA) |
| MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE) |
| >; |
| keypad,num-rows = <6>; |
| keypad,num-columns = <5>; |
| }; |
| |
| &pm8058_led48 { |
| /* |
| * The keypad LED @0x48 is routed to |
| * the sensor board where it is |
| * connected to an infrared LED |
| * SFH4650 (60mW, @850nm) next to the |
| * ambient light and proximity sensor |
| * Capella Microsystems CM3605. |
| */ |
| label = "pm8058:infrared:proximitysensor"; |
| default-state = "off"; |
| linux,default-trigger = "cm3605"; |
| status = "okay"; |
| }; |
| |
| &pm8058_led131 { |
| label = "pm8058:red"; |
| color = <LED_COLOR_ID_RED>; |
| default-state = "off"; |
| status = "okay"; |
| }; |
| |
| &pm8058_led132 { |
| /* |
| * This is actually green too on my |
| * board, but documented as yellow. |
| */ |
| label = "pm8058:yellow"; |
| color = <LED_COLOR_ID_YELLOW>; |
| default-state = "off"; |
| linux,default-trigger = "mmc0"; |
| status = "okay"; |
| }; |
| |
| &pm8058_led133 { |
| label = "pm8058:green"; |
| function = LED_FUNCTION_HEARTBEAT; |
| color = <LED_COLOR_ID_GREEN>; |
| default-state = "on"; |
| linux,default-trigger = "heartbeat"; |
| status = "okay"; |
| }; |
| |
| &pm8058_mpps { |
| dragon_cm3605_mpps: cm3605-mpps-state { |
| pins = "mpp5"; |
| function = "analog"; |
| input-enable; |
| bias-high-impedance; |
| /* Let's use channel 5 */ |
| qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| |
| &rpm { |
| /* |
| * Set up of the PMIC RPM regulators for this board |
| * PM8901 supplies "preliminary regulators" whatever |
| * that means |
| */ |
| regulators-0 { |
| compatible = "qcom,rpm-pm8901-regulators"; |
| |
| vdd_l0-supply = <&pm8901_s4>; |
| vdd_l1-supply = <&vph>; |
| vdd_l2-supply = <&vph>; |
| vdd_l3-supply = <&vph>; |
| vdd_l4-supply = <&vph>; |
| vdd_l5-supply = <&vph>; |
| vdd_l6-supply = <&vph>; |
| /* vdd_s0-supply, vdd_s1-supply: SAW regulators */ |
| vdd_s2-supply = <&vph>; |
| vdd_s3-supply = <&vph>; |
| vdd_s4-supply = <&vph>; |
| lvs0_in-supply = <&pm8058_s3>; |
| lvs1_in-supply = <&pm8901_s4>; |
| lvs2_in-supply = <&pm8058_l0>; |
| lvs3_in-supply = <&pm8058_s2>; |
| mvs_in-supply = <&pm8058_s3>; |
| |
| pm8901_l0: l0 { |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l1: l1 { |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l2: l2 { |
| /* TMA340 requires strictly 3.3V */ |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l3: l3 { |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l4: l4 { |
| regulator-min-microvolt = <2600000>; |
| regulator-max-microvolt = <2600000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l5: l5 { |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| bias-pull-down; |
| }; |
| |
| pm8901_l6: l6 { |
| regulator-min-microvolt = <2200000>; |
| regulator-max-microvolt = <2200000>; |
| bias-pull-down; |
| }; |
| |
| /* s0 and s1 are SAW regulators controlled over SPM */ |
| pm8901_s2: s2 { |
| regulator-min-microvolt = <1300000>; |
| regulator-max-microvolt = <1300000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| pm8901_s3: s3 { |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| pm8901_s4: s4 { |
| regulator-min-microvolt = <1225000>; |
| regulator-max-microvolt = <1225000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| |
| /* LVS0 thru 3 and mvs are just switches */ |
| pm8901_lvs0: lvs0 { |
| regulator-always-on; |
| }; |
| |
| pm8901_lvs1: lvs1 { }; |
| |
| pm8901_lvs2: lvs2 { }; |
| |
| pm8901_lvs3: lvs3 { }; |
| |
| pm8901_mvs: mvs { }; |
| }; |
| |
| regulators-1 { |
| compatible = "qcom,rpm-pm8058-regulators"; |
| |
| vdd_l0_l1_lvs-supply = <&pm8058_s3>; |
| vdd_l2_l11_l12-supply = <&vph>; |
| vdd_l3_l4_l5-supply = <&vph>; |
| vdd_l6_l7-supply = <&vph>; |
| vdd_l8-supply = <&vph>; |
| vdd_l9-supply = <&vph>; |
| vdd_l10-supply = <&vph>; |
| vdd_l13_l16-supply = <&pm8058_s4>; |
| vdd_l14_l15-supply = <&vph>; |
| vdd_l17_l18-supply = <&vph>; |
| vdd_l19_l20-supply = <&vph>; |
| vdd_l21-supply = <&pm8058_s3>; |
| vdd_l22-supply = <&pm8058_s3>; |
| vdd_l23_l24_l25-supply = <&pm8058_s3>; |
| vdd_s0-supply = <&vph>; |
| vdd_s1-supply = <&vph>; |
| vdd_s2-supply = <&vph>; |
| vdd_s3-supply = <&vph>; |
| vdd_s4-supply = <&vph>; |
| vdd_ncp-supply = <&vph>; |
| |
| pm8058_l0: l0 { |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l1: l1 { |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l2: l2 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <2600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l3: l3 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l4: l4 { |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l5: l5 { |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l6: l6 { |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l7: l7 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l8: l8 { |
| regulator-min-microvolt = <2900000>; |
| regulator-max-microvolt = <3050000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l9: l9 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l10: l10 { |
| regulator-min-microvolt = <2600000>; |
| regulator-max-microvolt = <2600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l11: l11 { |
| regulator-min-microvolt = <1500000>; |
| regulator-max-microvolt = <1500000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l12: l12 { |
| regulator-min-microvolt = <2900000>; |
| regulator-max-microvolt = <2900000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l13: l13 { |
| regulator-min-microvolt = <2050000>; |
| regulator-max-microvolt = <2050000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l14: l14 { |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| }; |
| |
| pm8058_l15: l15 { |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l16: l16 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| bias-pull-down; |
| regulator-always-on; |
| }; |
| |
| pm8058_l17: l17 { |
| // 1.5V according to schematic |
| regulator-min-microvolt = <2600000>; |
| regulator-max-microvolt = <2600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l18: l18 { |
| regulator-min-microvolt = <2200000>; |
| regulator-max-microvolt = <2200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l19: l19 { |
| regulator-min-microvolt = <2500000>; |
| regulator-max-microvolt = <2500000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l20: l20 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l21: l21 { |
| // 1.1 V according to schematic |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| regulator-always-on; |
| }; |
| |
| pm8058_l22: l22 { |
| // 1.2 V according to schematic |
| regulator-min-microvolt = <1150000>; |
| regulator-max-microvolt = <1150000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l23: l23 { |
| // Unused |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l24: l24 { |
| // Unused |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_l25: l25 { |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_s0: s0 { |
| // regulator-min-microvolt = <500000>; |
| // regulator-max-microvolt = <1325000>; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_s1: s1 { |
| // regulator-min-microvolt = <500000>; |
| // regulator-max-microvolt = <1250000>; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_s2: s2 { |
| // 1.3 V according to schematic |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1400000>; |
| qcom,switch-mode-frequency = <1600000>; |
| bias-pull-down; |
| }; |
| |
| pm8058_s3: s3 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| qcom,switch-mode-frequency = <1600000>; |
| regulator-always-on; |
| bias-pull-down; |
| }; |
| |
| pm8058_s4: s4 { |
| regulator-min-microvolt = <2200000>; |
| regulator-max-microvolt = <2200000>; |
| qcom,switch-mode-frequency = <1600000>; |
| regulator-always-on; |
| bias-pull-down; |
| }; |
| |
| /* LVS0 and LVS1 are just switches */ |
| pm8058_lvs0: lvs0 { |
| bias-pull-down; |
| }; |
| |
| pm8058_lvs1: lvs1 { |
| bias-pull-down; |
| }; |
| |
| pm8058_ncp: ncp { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| qcom,switch-mode-frequency = <1600000>; |
| }; |
| }; |
| }; |
| |
| /* Internal 3.69 GiB eMMC */ |
| &sdcc1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_sdcc1_pins>; |
| vmmc-supply = <&pm8901_l5>; |
| vqmmc-supply = <&pm8901_lvs0>; |
| status = "okay"; |
| }; |
| |
| /* External micro SD card, directly connected, pulled up to 2.85 V */ |
| &sdcc3 { |
| /* Enable SSBI GPIO 22 as input, use for card detect */ |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>; |
| cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>; |
| wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; |
| vmmc-supply = <&pm8058_l14>; |
| status = "okay"; |
| }; |
| |
| /* |
| * Second external micro SD card, using two TXB104RGYR levelshifters |
| * to lift from 1.8 V to 2.85 V |
| */ |
| &sdcc5 { |
| /* Enable SSBI GPIO 26 as input, use for card detect */ |
| pinctrl-names = "default"; |
| pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>; |
| cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>; |
| wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>; |
| vmmc-supply = <&pm8058_l14>; |
| vqmmc-supply = <&dragon_vio_txb>; |
| status = "okay"; |
| }; |
| |
| &tlmm { |
| /* eMMC pins, all 8 data lines connected */ |
| dragon_sdcc1_pins: sdcc1-state { |
| clk-pins { |
| pins = "gpio167"; /* SDC1 CLK */ |
| function = "sdc1"; |
| drive-strength = <16>; |
| bias-disable; |
| }; |
| cmd-pins { |
| pins = "gpio168"; /* SDC1 CMD */ |
| function = "sdc1"; |
| drive-strength = <10>; |
| bias-pull-up; |
| }; |
| data-pins { |
| /* SDC1 D0 to D7 */ |
| pins = "gpio159", "gpio160", "gpio161", "gpio162", |
| "gpio163", "gpio164", "gpio165", "gpio166"; |
| function = "sdc1"; |
| drive-strength = <10>; |
| bias-pull-up; |
| }; |
| }; |
| |
| /* |
| * The SDCC3 pins are hardcoded (non-muxable) but need some pin |
| * configuration. |
| */ |
| dragon_sdcc3_pins: sdcc3-state { |
| clk-pins { |
| pins = "sdc3_clk"; |
| drive-strength = <8>; |
| bias-disable; |
| }; |
| cmd-pins { |
| pins = "sdc3_cmd"; |
| drive-strength = <8>; |
| bias-pull-up; |
| }; |
| data-pins { |
| pins = "sdc3_data"; |
| drive-strength = <8>; |
| bias-pull-up; |
| }; |
| }; |
| |
| /* Second SD card slot pins */ |
| dragon_sdcc5_pins: sdcc5-state { |
| clk-pins { |
| pins = "gpio97"; /* SDC5 CLK */ |
| function = "sdc5"; |
| drive-strength = <16>; |
| bias-disable; |
| }; |
| cmd-pins { |
| pins = "gpio95"; /* SDC5 CMD */ |
| function = "sdc5"; |
| drive-strength = <10>; |
| bias-pull-up; |
| }; |
| data-pins { |
| /* SDC5 D0 to D3 */ |
| pins = "gpio96", "gpio98", "gpio99", "gpio100"; |
| function = "sdc5"; |
| drive-strength = <10>; |
| bias-pull-up; |
| }; |
| }; |
| |
| dragon_gsbi3_i2c_pins: gsbi3-i2c-state { |
| pins = "gpio43", "gpio44"; |
| function = "gsbi3"; |
| drive-strength = <8>; |
| /* These have external pull-up 2.2kOhm to 1.8V */ |
| bias-disable; |
| }; |
| |
| dragon_gsbi8_i2c_pins: gsbi8-i2c-state { |
| pins = "gpio64", "gpio65"; |
| function = "gsbi8"; |
| drive-strength = <16>; |
| /* These have external pull-up 2.2kOhm to 1.8V */ |
| bias-disable; |
| }; |
| |
| dragon_gsbi12_i2c_pins: gsbi12-i2c-state { |
| pins = "gpio115", "gpio116"; |
| function = "gsbi12"; |
| drive-strength = <16>; |
| /* These have external pull-up 4.7kOhm to 1.8V */ |
| bias-disable; |
| }; |
| |
| /* Primary serial port uart 0 pins */ |
| dragon_gsbi12_serial_pins: gsbi12-serial-state { |
| tx-pins { |
| pins = "gpio117"; |
| function = "gsbi12"; |
| drive-strength = <8>; |
| bias-disable; |
| }; |
| rx-pins { |
| pins = "gpio118"; |
| function = "gsbi12"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| }; |
| |
| dragon_ebi2_pins: ebi2-state { |
| /* |
| * Pins used by EBI2 on the Dragonboard, actually only |
| * CS2 is used by a real peripheral. CS0 is just |
| * routed to a test point. |
| */ |
| mux0-pins { |
| pins = |
| /* "gpio39", CS1A_N this is not good to mux */ |
| "gpio40", /* CS2A_N */ |
| "gpio134"; /* CS0_N testpoint TP29 */ |
| function = "ebi2cs"; |
| }; |
| mux1-pins { |
| pins = |
| /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */ |
| "gpio123", "gpio124", "gpio125", "gpio126", |
| "gpio127", "gpio128", "gpio129", "gpio130", |
| /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */ |
| "gpio135", "gpio136", "gpio137", "gpio138", |
| "gpio139", "gpio140", "gpio141", "gpio142", |
| "gpio143", "gpio144", "gpio145", "gpio146", |
| "gpio147", "gpio148", "gpio149", "gpio150", |
| "gpio151", /* EBI2_OE_N */ |
| "gpio153", /* EBI2_ADV */ |
| "gpio157"; /* EBI2_WE_N */ |
| function = "ebi2"; |
| }; |
| }; |
| |
| /* Interrupt line for the KXSD9 accelerometer */ |
| dragon_kxsd9_gpios: kxsd9-state { |
| pins = "gpio57"; /* IRQ line */ |
| function = "gpio"; |
| bias-pull-up; |
| }; |
| |
| dragon_tma340_gpios: tma340-state { |
| reset-pins { |
| /* RESET line, TS_ATTN, WAKE_CTP */ |
| pins = "gpio58"; |
| function = "gpio"; |
| drive-strength = <6>; |
| bias-disable; |
| }; |
| irq-pins { |
| pins = "gpio61"; /* IRQ line */ |
| function = "gpio"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| }; |
| }; |
| |
| &pm8058_xoadc { |
| /* Reference voltage 2.2 V */ |
| xoadc-ref-supply = <&pm8058_l18>; |
| |
| /* Board-specific channels */ |
| adc-channel@5 { |
| /* Connected to AOUT of ALS sensor */ |
| reg = <0x00 0x05>; |
| }; |
| |
| adc-channel@6 { |
| /* Connected to test point TP43 */ |
| reg = <0x00 0x06>; |
| }; |
| |
| adc-channel@7 { |
| /* Connected to battery thermistor */ |
| reg = <0x00 0x07>; |
| }; |
| |
| adc-channel@8 { |
| /* Connected to battery ID detector */ |
| reg = <0x00 0x08>; |
| }; |
| |
| adc-channel@9 { |
| /* Connected to XO thermistor */ |
| reg = <0x00 0x09>; |
| }; |
| }; |