From eeb6061f4b93cdd2c946e354ff69224163636282 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Mon, 6 Jun 2016 16:54:42 +0200 Subject: arm: tegra: initial support for apalis tk1 This patch adds support for the Toradex Apalis TK1 acomputer on module which can be used on different carrier boards. The module consists of a Tegra TK1 SoC, a PMIC solution, 2 GB of DDR3L RAM, a bunch of level shifters, an eMMC, a TMP451 temperature sensor chip, an I210 gigabit Ethernet controller and a SGTL5000 audio codec. Furthermore, there is a Kinetis MK20DN512 companion micro controller for analogue, CAN and resistive touch functionality which is not yet supported. This is known to boot into either a basic Angstrom/OpenEmbedded/Yocto or L4T/JetPack Ubuntu based image. The following things are known to work to a certain extend: - analogue/digital audio - debug UART1 - DVFS power management incl. low power core migration - eMMC - gigabit Ethernet - GPIOs - HDMI (incl. HDA audio) - I2C - LVDS - PCIe - SATA - SD/MMC cards - temperature sensor - USB host ports The rest is untested. Signed-off-by: Marcel Ziswiler Acked-by: Dominik Sliwa --- .../tegra124-platforms/tegra124-apalis-pmic.dtsi | 478 +++++++++++++++++++++ 1 file changed, 478 insertions(+) create mode 100644 arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pmic.dtsi (limited to 'arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pmic.dtsi') diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pmic.dtsi b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pmic.dtsi new file mode 100644 index 000000000000..745f63b0f7d0 --- /dev/null +++ b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pmic.dtsi @@ -0,0 +1,478 @@ +#include +#include +#include + +/ { + i2c@7000d000 { + as3722: as3722@40 { + compatible = "ams,as3722"; + reg = <0x40>; + interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>; + + #interrupt-cells = <2>; + interrupt-controller; + + gpio-controller; + #gpio-cells = <2>; + + ams,major-rev = <1>; + ams,minor-rev = <2>; + ams,system-power-controller; + ams,extcon-name = "as3722-extcon"; + ams,enable-adc1-continuous-mode; + ams,enable-low-voltage-range; + ams,adc-channel = <12>; + ams,hi-threshold = <256>; + ams,low-threshold = <128>; + ams,enable-clock32k-out; + ams,backup-battery-chargable; + ams,battery-backup-charge-current = ; + ams,battery-backup-enable-bypass; + ams,battery-backup-charge-mode = ; + + pinctrl-names = "default"; + pinctrl-0 = <&as3722_default>; + + as3722_default: pinmux@0 { + gpio2_7 { + pins = "gpio2", /* PWR_EN_+V3.3 */ + "gpio7"; /* +V1.6_LPO */ + function = "gpio"; + bias-pull-up; + }; + + gpio1_3_4_5_6 { + pins = "gpio1", "gpio3", "gpio4", + "gpio5", "gpio6"; + bias-high-impedance; + }; + }; + + regulators { + compatible = "ams,as3722"; + ldo0-in-supply = <&as3722_sd2>; + ldo2-in-supply = <&as3722_sd5>; + ldo5-in-supply = <&as3722_sd5>; + ldo7-in-supply = <&as3722_sd5>; + + as3722_sd0: sd0 { + regulator-name = "+VDD_CPU_AP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <1400000>; + regulator-min-microamp = <3500000>; + regulator-max-microamp = <3500000>; + regulator-always-on; + regulator-boot-on; + ams,ext-control = ; + + consumers { + c1 { + regulator-consumer-supply = "vdd_cpu"; + }; + }; + }; + + as3722_sd1: sd1 { + regulator-name = "+VDD_CORE"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1350000>; + regulator-min-microamp = <3500000>; + regulator-max-microamp = <3500000>; + regulator-init-microvolt = <1150000>; + regulator-always-on; + regulator-boot-on; + ams,ext-control = ; + + consumers { + c1 { + regulator-consumer-supply = "vdd_core"; + }; + }; + }; + + as3722_sd2: sd2 { + regulator-name = "+V1.35_VDDIO_DDR(sd2)"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-boot-on; + + consumers { + c1 { + regulator-consumer-supply = "vddio_ddr"; + }; + c2 { + regulator-consumer-supply = "vddio_ddr_mclk"; + }; + c3 { + regulator-consumer-supply = "vddio_ddr3"; + }; + c4 { + regulator-consumer-supply = "vcore1_ddr3"; + }; + }; + }; + + as3722_sd4: sd4 { + regulator-name = "+V1.05"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + + consumers { + c1 { + regulator-consumer-supply = "avdd_pex_pll"; + }; + c2 { + regulator-consumer-supply = "avddio_pex_pll"; + }; + c3 { + regulator-consumer-supply = "dvddio_pex"; + }; + c4 { + regulator-consumer-supply = "pwrdet_pex_ctl"; + }; + c5 { + regulator-consumer-supply = "avdd_sata"; + }; + c6 { + regulator-consumer-supply = "vdd_sata"; + }; + c7 { + regulator-consumer-supply = "avdd_sata_pll"; + }; + c8 { + regulator-consumer-supply = "avddio_usb"; + regulator-consumer-device = "tegra-xhci"; + }; + c9 { + regulator-consumer-supply = "avdd_hdmi"; + regulator-consumer-device = "tegradc.1"; + }; + c10 { + regulator-consumer-supply = "avdd_hdmi"; + regulator-consumer-device = "tegradc.0"; + }; + }; + }; + + as3722_sd5: sd5 { + regulator-name = "+V1.8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + + consumers { + c1 { + regulator-consumer-supply = "vddio_sys"; + }; + c2 { + regulator-consumer-supply = "vddio_sys_2"; + }; + c3 { + regulator-consumer-supply = "vddio_audio"; + }; + c4 { + regulator-consumer-supply = "pwrdet_audio"; + }; + c5 { + regulator-consumer-supply = "vdd_1v8_emmc"; + }; + c6 { + regulator-consumer-supply = "vddio_sdmmc"; + regulator-consumer-device = "sdhci-tegra.3"; + }; + c7 { + regulator-consumer-supply = "pwrdet_sdmmc4"; + }; + c8 { + regulator-consumer-supply = "vddio_uart"; + }; + c9 { + regulator-consumer-supply = "pwrdet_uart"; + }; + c10 { + regulator-consumer-supply = "vddio_bb"; + }; + c11 { + regulator-consumer-supply = "pwrdet_bb"; + }; + c12 { + regulator-consumer-supply = "vddio_gmi"; + }; + c13 { + regulator-consumer-supply = "pwrdet_nand"; + }; + c14 { + regulator-consumer-supply = "avdd_osc"; + }; + c15 { + /* LVDS */ + regulator-consumer-supply = "dvdd_lcd"; + }; + c16 { + /* LVDS */ + regulator-consumer-supply = "vdd_ds_1v8"; + }; + c17 { + regulator-consumer-supply = "VDDD"; + regulator-consumer-device = "4-000a"; + }; + c18 { + regulator-consumer-supply = "VDDIO"; + regulator-consumer-device = "4-000a"; + }; + c19 { + regulator-consumer-supply = "vdd_1v8_sensor"; + }; + c20 { + regulator-consumer-supply = "vdd_1v8_sdmmc"; + }; + c21 { + regulator-consumer-supply = "vdd_kp_1v8"; + }; + c22 { + regulator-consumer-supply = "vdd_tp_1v8"; + }; + c23 { + regulator-consumer-supply = "dvdd"; + regulator-consumer-device = "spi0.0"; + }; + c24 { + regulator-consumer-supply = "vlogic"; + regulator-consumer-device = "0-0069"; + }; + c25 { + regulator-consumer-supply = "avdd_pll_utmip"; + regulator-consumer-device = "tegra-udc.0"; + }; + c26 { + regulator-consumer-supply = "avdd_pll_utmip"; + regulator-consumer-device = "tegra-ehci.0"; + }; + c27 { + regulator-consumer-supply = "avdd_pll_utmip"; + regulator-consumer-device = "tegra-ehci.1"; + }; + c28 { + regulator-consumer-supply = "avdd_pll_utmip"; + regulator-consumer-device = "tegra-ehci.2"; + }; + c29 { + regulator-consumer-supply = "avdd_pll_utmip"; + regulator-consumer-device = "tegra-xhci"; + }; + }; + }; + + as3722_sd6: sd6 { + regulator-name = "+VDD_GPU_AP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <1200000>; + regulator-min-microamp = <3500000>; + regulator-max-microamp = <3500000>; + regulator-init-microvolt = <1000000>; + regulator-boot-on; + regulator-always-on; + + consumers { + c1 { + regulator-consumer-supply = "vdd_gpu"; + }; + c2 { + regulator-consumer-supply = "vdd_gpu_simon"; + }; + }; + }; + + as3722_ldo0: ldo0 { + regulator-name = "+V1.05_AVDD"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + regulator-boot-on; + regulator-always-on; + ams,ext-control = ; + + consumers { + c1 { + regulator-consumer-supply = "avdd_pll_m"; + }; + c2 { + regulator-consumer-supply = "avdd_pll_ap_c2_c3"; + }; + c3 { + regulator-consumer-supply = "avdd_pll_cud2dpd"; + }; + c4 { + regulator-consumer-supply = "avdd_pll_c4"; + }; + c5 { + regulator-consumer-supply = "avdd_lvds0_io"; + }; + c6 { + regulator-consumer-supply = "vddio_ddr_hs"; + }; + c7 { + regulator-consumer-supply = "avdd_pll_erefe"; + }; + c8 { + regulator-consumer-supply = "avdd_pll_x"; + }; + c9 { + regulator-consumer-supply = "avdd_pll_cg"; + }; + }; + }; + + as3722_ldo1: ldo1 { + regulator-name = "VDDIO_SDMMC1"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + + consumers { + c1 { + regulator-consumer-supply = "vddio_sdmmc"; + regulator-consumer-device = "sdhci-tegra.0"; + }; + c2 { + regulator-consumer-supply = "pwrdet_sdmmc1"; + }; + }; + }; + + as3722_ldo2: ldo2 { + regulator-name = "+V1.2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; + regulator-always-on; + + consumers { + c1 { + regulator-consumer-supply = "vddio_hsic"; + regulator-consumer-device = "tegra-ehci.1"; + }; + c2 { + regulator-consumer-supply = "vddio_hsic"; + regulator-consumer-device = "tegra-ehci.2"; + }; + c3 { + regulator-consumer-supply = "vddio_hsic"; + regulator-consumer-device = "tegra-xhci"; + }; + c4 { + regulator-consumer-supply = "avdd_dsi_csi"; + regulator-consumer-device = "tegradc.0"; + }; + c5 { + regulator-consumer-supply = "avdd_dsi_csi"; + regulator-consumer-device = "tegradc.1"; + }; + c6 { + regulator-consumer-supply = "avdd_dsi_csi"; + regulator-consumer-device = "vi.0"; + }; + c7 { + regulator-consumer-supply = "avdd_dsi_csi"; + regulator-consumer-device = "vi.1"; + }; + c8 { + regulator-consumer-supply = "pwrdet_mipi"; + }; + c9 { + regulator-consumer-supply = "avdd_hsic_com"; + }; + c10 { + regulator-consumer-supply = "avdd_hsic_mdm"; + }; + c11 { + regulator-consumer-supply = "vdig_csi"; + regulator-consumer-device = "2-0036"; + }; + c12 { + /* panel-a-1080p-14-0.c */ + regulator-consumer-supply = "vdd_1v2_en"; + }; + }; + }; + + as3722_ldo3: ldo3 { + regulator-name = "+V1.05_RTC"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-boot-on; + regulator-always-on; + ams,enable-tracking; + ams,disable-tracking-suspend; + + consumers { + c1 { + regulator-consumer-supply = "vdd_rtc"; + }; + }; + }; + + /* 1.8V for LVDS, 3.3V for eDP */ + as3722_ldo4: ldo4 { + regulator-name = "AVDD_LVDS0_PLL"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + consumers { + c1 { + regulator-consumer-supply = "avdd_lvds0_pll"; + }; + c2 { + regulator-consumer-supply = "avdd_lcd"; + }; + }; + }; + + /* LDO5 not used */ + + as3722_ldo6: ldo6 { + regulator-name = "VDDIO_SDMMC3"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + + consumers { + c1 { + regulator-consumer-supply = "vddio_sdmmc"; + regulator-consumer-device = "sdhci-tegra.2"; + }; + c2 { + regulator-consumer-supply = "pwrdet_sdmmc3"; + }; + }; + }; + + /* LDO7 not used */ + + as3722_ldo9: ldo9 { + regulator-name = "+V3.3_ETH(ldo9)"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + as3722_ldo10: ldo10 { + regulator-name = "+V3.3_ETH(ldo10)"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + as3722_ldo11: ldo11 { + regulator-name = "+V1.8_VPP_FUSE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + }; + }; + }; + + /* Populate fuse supply */ + efuse@7000f800 { + vpp_fuse-supply = <&as3722_ldo11>; + }; +}; -- cgit v1.2.3