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

Merge tag 'omap-for-v4.5/81xx-dts-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt

Pull "reworked dts changes for ti81xx devices and minimal
dra62x j5ec-evm support" from Tony Lindgren:

Add minimal device tree support for dra62x also known j5eco. It is
related to dm814x, just the clocks are a bit different and it has a
different set of integrated devices. And let's get some basic dm814x
and dra62x devices working as many of the devices are like on am33xx::

- pinctrl using the pinctrl defines as for am33xx

- Updated EDMA bindings with support for using exma_xbar

- MMC support for dm814x-evm, t410 and dra62x-j5eco-evm

- USB support for dm814x-evm, t410 and dra62x-j5eco-evm

This branch depends on an earlier omap-for-v4.5/81xx-fixes-signed
branch that has dm814x dts fixes interlaced with SoC related fixes to
keep things booting. The interlaced SoC and dts fixes were needed
because of issues with the device tree defined clocks that just
happened to work on bootloader timings for t410 earlier.

* tag 'omap-for-v4.5/81xx-dts-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (21 commits)
ARM: dts: Add usb support for j5-eco evm
ARM: dts: Add usb support for hp t410
ARM: dts: Add usb support for dm814x-evm
ARM: dts: Add usb support for dm814x and dra62x
ARM: dts: Enable emmc on hp t410
ARM: dts: Add mmc support for dra62x j5-eco evm
ARM: dts: Add mmc support for dm8148-evm
ARM: dts: Add mmc device entries for dm814x
ARM: dts: Update edma bindings on dm814x to use edma_xbar
ARM: dts: Add pinctrl macros for dm814x
ARM: dts: Add minimal dra62x j5-eco evm support
ARM: dts: Add basic support for dra62x j5-eco SoC
ARM: OMAP2+: Remove useless check for legacy booting for dm814x
ARM: OMAP2+: Enable GPIO for dm814x
ARM: dts: Fix dm814x pinctrl address and mask
ARM: dts: Fix dm8148 control modules ranges
ARM: OMAP2+: Fix timer entries for dm814x
ARM: dts: Fix some mux and divider clocks to get dm814x-evm booting
ARM: OMAP2+: Add DPPLS clock manager for dm814x
clk: ti: Add few dm814x clock aliases
...

+641 -60
+2 -1
arch/arm/boot/dts/Makefile
··· 464 464 dtb-$(CONFIG_SOC_TI81XX) += \ 465 465 dm8148-evm.dtb \ 466 466 dm8148-t410.dtb \ 467 - dm8168-evm.dtb 467 + dm8168-evm.dtb \ 468 + dra62x-j5eco-evm.dtb 468 469 dtb-$(CONFIG_SOC_AM33XX) += \ 469 470 am335x-baltos-ir5221.dtb \ 470 471 am335x-base0033.dtb \
+55
arch/arm/boot/dts/dm8148-evm.dts
··· 15 15 device_type = "memory"; 16 16 reg = <0x80000000 0x40000000>; /* 1 GB */ 17 17 }; 18 + 19 + /* MIC94060YC6 controlled by SD1_POW pin */ 20 + vmmcsd_fixed: fixedregulator@0 { 21 + compatible = "regulator-fixed"; 22 + regulator-name = "vmmcsd_fixed"; 23 + regulator-min-microvolt = <3300000>; 24 + regulator-max-microvolt = <3300000>; 25 + }; 18 26 }; 19 27 20 28 &cpsw_emac0 { ··· 33 25 &cpsw_emac1 { 34 26 phy_id = <&davinci_mdio>, <1>; 35 27 phy-mode = "rgmii"; 28 + }; 29 + 30 + &mmc2 { 31 + pinctrl-names = "default"; 32 + pinctrl-0 = <&sd1_pins>; 33 + vmmc-supply = <&vmmcsd_fixed>; 34 + bus-width = <4>; 35 + cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; 36 + }; 37 + 38 + &pincntl { 39 + sd1_pins: pinmux_sd1_pins { 40 + pinctrl-single,pins = < 41 + DM814X_IOPAD(0x0800, PIN_INPUT | 0x1) /* SD1_CLK */ 42 + DM814X_IOPAD(0x0804, PIN_INPUT_PULLUP | 0x1) /* SD1_CMD */ 43 + DM814X_IOPAD(0x0808, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[0] */ 44 + DM814X_IOPAD(0x080c, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[1] */ 45 + DM814X_IOPAD(0x0810, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[2] */ 46 + DM814X_IOPAD(0x0814, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[3] */ 47 + DM814X_IOPAD(0x0924, PIN_OUTPUT | 0x40) /* SD1_POW */ 48 + DM814X_IOPAD(0x093C, PIN_INPUT_PULLUP | 0x80) /* GP1[6] */ 49 + >; 50 + }; 51 + 52 + usb0_pins: pinmux_usb0_pins { 53 + pinctrl-single,pins = < 54 + DM814X_IOPAD(0x0c34, PIN_OUTPUT | 0x1) /* USB0_DRVVBUS */ 55 + >; 56 + }; 57 + 58 + usb1_pins: pinmux_usb1_pins { 59 + pinctrl-single,pins = < 60 + DM814X_IOPAD(0x0834, PIN_OUTPUT | 0x80) /* USB1_DRVVBUS */ 61 + >; 62 + }; 63 + }; 64 + 65 + &usb0 { 66 + pinctrl-names = "default"; 67 + pinctrl-0 = <&usb0_pins>; 68 + dr_mode = "host"; 69 + }; 70 + 71 + &usb1 { 72 + pinctrl-names = "default"; 73 + pinctrl-0 = <&usb1_pins>; 74 + dr_mode = "host"; 36 75 };
+70
arch/arm/boot/dts/dm8148-t410.dts
··· 15 15 device_type = "memory"; 16 16 reg = <0x80000000 0x40000000>; /* 1 GB */ 17 17 }; 18 + 19 + /* gpio9 seems to control USB VBUS regulator and/or hub power */ 20 + usb_power: regulator@9 { 21 + compatible = "regulator-fixed"; 22 + regulator-name = "usb_power"; 23 + regulator-min-microvolt = <5000000>; 24 + regulator-max-microvolt = <5000000>; 25 + gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; 26 + enable-active-high; 27 + regulator-always-on; 28 + }; 29 + 30 + vmmcsd_fixed: fixedregulator@0 { 31 + compatible = "regulator-fixed"; 32 + regulator-name = "vmmcsd_fixed"; 33 + regulator-min-microvolt = <3300000>; 34 + regulator-max-microvolt = <3300000>; 35 + }; 18 36 }; 19 37 20 38 &cpsw_emac0 { ··· 43 25 &cpsw_emac1 { 44 26 phy_id = <&davinci_mdio>, <1>; 45 27 phy-mode = "rgmii"; 28 + }; 29 + 30 + &mmc3 { 31 + pinctrl-names = "default"; 32 + pinctrl-0 = <&sd2_pins>; 33 + vmmc-supply = <&vmmcsd_fixed>; 34 + bus-width = <8>; 35 + dmas = <&edma_xbar 8 0 1 /* use SDTXEVT1 instead of MCASP0TX */ 36 + &edma_xbar 9 0 2>; /* use SDRXEVT1 instead of MCASP0RX */ 37 + dma-names = "tx", "rx"; 38 + }; 39 + 40 + &pincntl { 41 + sd2_pins: pinmux_sd2_pins { 42 + pinctrl-single,pins = < 43 + DM814X_IOPAD(0x09c0, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[7] */ 44 + DM814X_IOPAD(0x09c4, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[6] */ 45 + DM814X_IOPAD(0x09c8, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[5] */ 46 + DM814X_IOPAD(0x09cc, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[4] */ 47 + DM814X_IOPAD(0x09d0, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[3] */ 48 + DM814X_IOPAD(0x09d4, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[2] */ 49 + DM814X_IOPAD(0x09d8, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[1] */ 50 + DM814X_IOPAD(0x09dc, PIN_INPUT_PULLUP | 0x1) /* SD2_DAT[0] */ 51 + DM814X_IOPAD(0x09e0, PIN_INPUT | 0x1) /* SD2_CLK */ 52 + DM814X_IOPAD(0x09f4, PIN_INPUT_PULLUP | 0x2) /* SD2_CMD */ 53 + DM814X_IOPAD(0x0920, PIN_INPUT | 40) /* SD2_SDCD */ 54 + >; 55 + }; 56 + 57 + usb0_pins: pinmux_usb0_pins { 58 + pinctrl-single,pins = < 59 + DM814X_IOPAD(0x0c34, PIN_OUTPUT | 0x1) /* USB0_DRVVBUS */ 60 + >; 61 + }; 62 + 63 + usb1_pins: pinmux_usb1_pins { 64 + pinctrl-single,pins = < 65 + DM814X_IOPAD(0x0834, PIN_OUTPUT | 0x80) /* USB1_DRVVBUS */ 66 + >; 67 + }; 68 + }; 69 + 70 + &usb0 { 71 + pinctrl-names = "default"; 72 + pinctrl-0 = <&usb0_pins>; 73 + dr_mode = "host"; 74 + }; 75 + 76 + &usb1 { 77 + pinctrl-names = "default"; 78 + pinctrl-0 = <&usb1_pins>; 79 + dr_mode = "host"; 46 80 };
+81 -32
arch/arm/boot/dts/dm814x-clocks.dtsi
··· 4 4 * published by the Free Software Foundation. 5 5 */ 6 6 7 - &scm_clocks { 8 - 9 - tclkin_ck: tclkin_ck { 7 + &pllss_clocks { 8 + timer1_fck: timer1_fck { 10 9 #clock-cells = <0>; 11 - compatible = "fixed-clock"; 12 - clock-frequency = <32768>; 10 + compatible = "ti,mux-clock"; 11 + clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 12 + &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 13 + ti,bit-shift = <3>; 14 + reg = <0x2e0>; 13 15 }; 14 16 17 + timer2_fck: timer2_fck { 18 + #clock-cells = <0>; 19 + compatible = "ti,mux-clock"; 20 + clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 21 + &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 22 + ti,bit-shift = <6>; 23 + reg = <0x2e0>; 24 + }; 25 + 26 + sysclk18_ck: sysclk18_ck { 27 + #clock-cells = <0>; 28 + compatible = "ti,mux-clock"; 29 + clocks = <&rtcosc_ck>, <&rtcdivider_ck>; 30 + ti,bit-shift = <0>; 31 + reg = <0x02f0>; 32 + }; 33 + }; 34 + 35 + &scm_clocks { 15 36 devosc_ck: devosc_ck { 16 37 #clock-cells = <0>; 17 - compatible = "fixed-clock"; 18 - clock-frequency = <20000000>; 38 + compatible = "ti,mux-clock"; 39 + clocks = <&virt_20000000_ck>, <&virt_19200000_ck>; 40 + ti,bit-shift = <21>; 41 + reg = <0x0040>; 19 42 }; 20 43 21 44 /* Optional auxosc, 20 - 30 MHz range, assume 27 MHz by default */ ··· 46 23 #clock-cells = <0>; 47 24 compatible = "fixed-clock"; 48 25 clock-frequency = <27000000>; 26 + }; 27 + 28 + /* Optional 32768Hz crystal or clock on RTCOSC pins */ 29 + rtcosc_ck: rtcosc_ck { 30 + #clock-cells = <0>; 31 + compatible = "fixed-clock"; 32 + clock-frequency = <32768>; 33 + }; 34 + 35 + /* Optional external clock on TCLKIN pin, set rate in baord dts file */ 36 + tclkin_ck: tclkin_ck { 37 + #clock-cells = <0>; 38 + compatible = "fixed-clock"; 39 + clock-frequency = <0>; 40 + }; 41 + 42 + virt_20000000_ck: virt_20000000_ck { 43 + #clock-cells = <0>; 44 + compatible = "fixed-clock"; 45 + clock-frequency = <20000000>; 46 + }; 47 + 48 + virt_19200000_ck: virt_19200000_ck { 49 + #clock-cells = <0>; 50 + compatible = "fixed-clock"; 51 + clock-frequency = <19200000>; 49 52 }; 50 53 51 54 mpu_ck: mpu_ck { ··· 98 49 clock-frequency = <48000000>; 99 50 }; 100 51 101 - sysclk18_ck: sysclk18_ck { 102 - #clock-cells = <0>; 103 - compatible = "fixed-clock"; 104 - clock-frequency = <32768>; 105 - }; 106 - 107 52 cpsw_125mhz_gclk: cpsw_125mhz_gclk { 108 53 #clock-cells = <0>; 109 54 compatible = "fixed-clock"; ··· 112 69 113 70 }; 114 71 115 - &pllss_clocks { 72 + &prcm_clocks { 73 + osc_src_ck: osc_src_ck { 74 + #clock-cells = <0>; 75 + compatible = "fixed-factor-clock"; 76 + clocks = <&devosc_ck>; 77 + clock-mult = <1>; 78 + clock-div = <1>; 79 + }; 80 + 81 + mpu_clksrc_ck: mpu_clksrc_ck { 82 + #clock-cells = <0>; 83 + compatible = "ti,mux-clock"; 84 + clocks = <&devosc_ck>, <&rtcdivider_ck>; 85 + ti,bit-shift = <0>; 86 + reg = <0x0040>; 87 + }; 88 + 89 + /* Fixed divider clock 0.0016384 * devosc */ 90 + rtcdivider_ck: rtcdivider_ck { 91 + #clock-cells = <0>; 92 + compatible = "fixed-factor-clock"; 93 + clocks = <&devosc_ck>; 94 + clock-mult = <128>; 95 + clock-div = <78125>; 96 + }; 116 97 117 98 aud_clkin0_ck: aud_clkin0_ck { 118 99 #clock-cells = <0>; ··· 154 87 #clock-cells = <0>; 155 88 compatible = "fixed-clock"; 156 89 clock-frequency = <20000000>; 157 - }; 158 - 159 - timer1_mux_ck: timer1_mux_ck { 160 - #clock-cells = <0>; 161 - compatible = "ti,mux-clock"; 162 - clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 163 - &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 164 - ti,bit-shift = <3>; 165 - reg = <0x2e0>; 166 - }; 167 - 168 - timer2_mux_ck: timer2_mux_ck { 169 - #clock-cells = <0>; 170 - compatible = "ti,mux-clock"; 171 - clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 172 - &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 173 - ti,bit-shift = <6>; 174 - reg = <0x2e0>; 175 90 }; 176 91 };
+240 -19
arch/arm/boot/dts/dm814x.dtsi
··· 5 5 */ 6 6 7 7 #include <dt-bindings/gpio/gpio.h> 8 - #include <dt-bindings/pinctrl/omap.h> 8 + #include <dt-bindings/pinctrl/dm814x.h> 9 9 10 10 #include "skeleton.dtsi" 11 11 ··· 21 21 serial2 = &uart3; 22 22 ethernet0 = &cpsw_emac0; 23 23 ethernet1 = &cpsw_emac1; 24 + usb0 = &usb0; 25 + usb1 = &usb1; 26 + phy0 = &usb0_phy; 27 + phy1 = &usb1_phy; 24 28 }; 25 29 26 30 cpus { ··· 61 57 ranges; 62 58 ti,hwmods = "l3_main"; 63 59 60 + usb: usb@47400000 { 61 + compatible = "ti,am33xx-usb"; 62 + reg = <0x47400000 0x1000>; 63 + ranges; 64 + #address-cells = <1>; 65 + #size-cells = <1>; 66 + ti,hwmods = "usb_otg_hs"; 67 + 68 + usb0_phy: usb-phy@47401300 { 69 + compatible = "ti,am335x-usb-phy"; 70 + reg = <0x47401300 0x100>; 71 + reg-names = "phy"; 72 + ti,ctrl_mod = <&usb_ctrl_mod>; 73 + }; 74 + 75 + usb0: usb@47401000 { 76 + compatible = "ti,musb-am33xx"; 77 + reg = <0x47401400 0x400 78 + 0x47401000 0x200>; 79 + reg-names = "mc", "control"; 80 + 81 + interrupts = <18>; 82 + interrupt-names = "mc"; 83 + dr_mode = "otg"; 84 + mentor,multipoint = <1>; 85 + mentor,num-eps = <16>; 86 + mentor,ram-bits = <12>; 87 + mentor,power = <500>; 88 + phys = <&usb0_phy>; 89 + 90 + dmas = <&cppi41dma 0 0 &cppi41dma 1 0 91 + &cppi41dma 2 0 &cppi41dma 3 0 92 + &cppi41dma 4 0 &cppi41dma 5 0 93 + &cppi41dma 6 0 &cppi41dma 7 0 94 + &cppi41dma 8 0 &cppi41dma 9 0 95 + &cppi41dma 10 0 &cppi41dma 11 0 96 + &cppi41dma 12 0 &cppi41dma 13 0 97 + &cppi41dma 14 0 &cppi41dma 0 1 98 + &cppi41dma 1 1 &cppi41dma 2 1 99 + &cppi41dma 3 1 &cppi41dma 4 1 100 + &cppi41dma 5 1 &cppi41dma 6 1 101 + &cppi41dma 7 1 &cppi41dma 8 1 102 + &cppi41dma 9 1 &cppi41dma 10 1 103 + &cppi41dma 11 1 &cppi41dma 12 1 104 + &cppi41dma 13 1 &cppi41dma 14 1>; 105 + dma-names = 106 + "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", 107 + "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", 108 + "rx14", "rx15", 109 + "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", 110 + "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", 111 + "tx14", "tx15"; 112 + }; 113 + 114 + usb1: usb@47401800 { 115 + compatible = "ti,musb-am33xx"; 116 + reg = <0x47401c00 0x400 117 + 0x47401800 0x200>; 118 + reg-names = "mc", "control"; 119 + interrupts = <19>; 120 + interrupt-names = "mc"; 121 + dr_mode = "otg"; 122 + mentor,multipoint = <1>; 123 + mentor,num-eps = <16>; 124 + mentor,ram-bits = <12>; 125 + mentor,power = <500>; 126 + phys = <&usb1_phy>; 127 + 128 + dmas = <&cppi41dma 15 0 &cppi41dma 16 0 129 + &cppi41dma 17 0 &cppi41dma 18 0 130 + &cppi41dma 19 0 &cppi41dma 20 0 131 + &cppi41dma 21 0 &cppi41dma 22 0 132 + &cppi41dma 23 0 &cppi41dma 24 0 133 + &cppi41dma 25 0 &cppi41dma 26 0 134 + &cppi41dma 27 0 &cppi41dma 28 0 135 + &cppi41dma 29 0 &cppi41dma 15 1 136 + &cppi41dma 16 1 &cppi41dma 17 1 137 + &cppi41dma 18 1 &cppi41dma 19 1 138 + &cppi41dma 20 1 &cppi41dma 21 1 139 + &cppi41dma 22 1 &cppi41dma 23 1 140 + &cppi41dma 24 1 &cppi41dma 25 1 141 + &cppi41dma 26 1 &cppi41dma 27 1 142 + &cppi41dma 28 1 &cppi41dma 29 1>; 143 + dma-names = 144 + "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", 145 + "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", 146 + "rx14", "rx15", 147 + "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", 148 + "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", 149 + "tx14", "tx15"; 150 + }; 151 + 152 + cppi41dma: dma-controller@47402000 { 153 + compatible = "ti,am3359-cppi41"; 154 + reg = <0x47400000 0x1000 155 + 0x47402000 0x1000 156 + 0x47403000 0x1000 157 + 0x47404000 0x4000>; 158 + reg-names = "glue", "controller", "scheduler", "queuemgr"; 159 + interrupts = <17>; 160 + interrupt-names = "glue"; 161 + #dma-cells = <2>; 162 + #dma-channels = <30>; 163 + #dma-requests = <256>; 164 + }; 165 + }; 166 + 64 167 /* 65 - * See TRM "Table 1-317. L4LS Instance Summary", just deduct 66 - * 0x1000 from the 1-317 addresses to get the device address 168 + * See TRM "Table 1-317. L4LS Instance Summary" for hints. 169 + * It shows the module target agent registers though, so the 170 + * actual device is typically 0x1000 before the target agent 171 + * except in cases where the module is larger than 0x1000. 67 172 */ 68 173 l4ls: l4ls@48000000 { 69 174 compatible = "ti,dm814-l4ls", "simple-bus"; ··· 237 124 interrupts = <65>; 238 125 ti,spi-num-cs = <4>; 239 126 ti,hwmods = "mcspi1"; 240 - dmas = <&edma 16 &edma 17 241 - &edma 18 &edma 19>; 127 + dmas = <&edma 16 0 &edma 17 0 128 + &edma 18 0 &edma 19 0>; 242 129 dma-names = "tx0", "rx0", "tx1", "rx1"; 243 130 }; 244 131 ··· 256 143 reg = <0x20000 0x2000>; 257 144 clock-frequency = <48000000>; 258 145 interrupts = <72>; 259 - dmas = <&edma 26 &edma 27>; 146 + dmas = <&edma 26 0 &edma 27 0>; 260 147 dma-names = "tx", "rx"; 261 148 }; 262 149 ··· 266 153 reg = <0x22000 0x2000>; 267 154 clock-frequency = <48000000>; 268 155 interrupts = <73>; 269 - dmas = <&edma 28 &edma 29>; 156 + dmas = <&edma 28 0 &edma 29 0>; 270 157 dma-names = "tx", "rx"; 271 158 }; 272 159 ··· 276 163 reg = <0x24000 0x2000>; 277 164 clock-frequency = <48000000>; 278 165 interrupts = <74>; 279 - dmas = <&edma 30 &edma 31>; 166 + dmas = <&edma 30 0 &edma 31 0>; 280 167 dma-names = "tx", "rx"; 281 168 }; 282 169 ··· 294 181 ti,hwmods = "timer3"; 295 182 }; 296 183 184 + mmc1: mmc@60000 { 185 + compatible = "ti,omap4-hsmmc"; 186 + ti,hwmods = "mmc1"; 187 + dmas = <&edma 24 0 188 + &edma 25 0>; 189 + dma-names = "tx", "rx"; 190 + interrupts = <64>; 191 + interrupt-parent = <&intc>; 192 + reg = <0x60000 0x1000>; 193 + }; 194 + 195 + mmc2: mmc@1d8000 { 196 + compatible = "ti,omap4-hsmmc"; 197 + ti,hwmods = "mmc2"; 198 + dmas = <&edma 2 0 199 + &edma 3 0>; 200 + dma-names = "tx", "rx"; 201 + interrupts = <28>; 202 + interrupt-parent = <&intc>; 203 + reg = <0x1d8000 0x1000>; 204 + }; 205 + 297 206 control: control@140000 { 298 207 compatible = "ti,dm814-scm", "simple-bus"; 299 - reg = <0x140000 0x16d000>; 208 + reg = <0x140000 0x20000>; 300 209 #address-cells = <1>; 301 210 #size-cells = <1>; 302 - ranges = <0 0x160000 0x16d000>; 211 + ranges = <0 0x140000 0x20000>; 303 212 304 213 scm_conf: scm_conf@0 { 305 214 compatible = "syscon"; ··· 338 203 }; 339 204 }; 340 205 206 + usb_ctrl_mod: control@620 { 207 + compatible = "ti,am335x-usb-ctrl-module"; 208 + reg = <0x620 0x10 209 + 0x648 0x4>; 210 + reg-names = "phy_ctrl", "wakeup"; 211 + }; 212 + 213 + edma_xbar: dma-router@f90 { 214 + compatible = "ti,am335x-edma-crossbar"; 215 + reg = <0xf90 0x40>; 216 + #dma-cells = <3>; 217 + dma-requests = <32>; 218 + dma-masters = <&edma>; 219 + }; 220 + 221 + /* 222 + * Note that silicon revision 2.1 and older 223 + * require input enabled (bit 18 set) for all 224 + * 3.3V I/Os to avoid cumulative hardware damage. 225 + * For more info, see errata advisory 2.1.87. 226 + * We leave bit 18 out of function-mask and rely 227 + * on the bootloader for it. 228 + */ 341 229 pincntl: pinmux@800 { 342 230 compatible = "pinctrl-single"; 343 - reg = <0x800 0xc38>; 231 + reg = <0x800 0x438>; 344 232 #address-cells = <1>; 345 233 #size-cells = <0>; 346 234 pinctrl-single,register-width = <32>; 347 - pinctrl-single,function-mask = <0x300ff>; 235 + pinctrl-single,function-mask = <0x307ff>; 236 + }; 237 + 238 + usb1_phy: usb-phy@1b00 { 239 + compatible = "ti,am335x-usb-phy"; 240 + reg = <0x1b00 0x100>; 241 + reg-names = "phy"; 242 + ti,ctrl_mod = <&usb_ctrl_mod>; 348 243 }; 349 244 }; 350 245 351 246 prcm: prcm@180000 { 352 247 compatible = "ti,dm814-prcm", "simple-bus"; 353 - reg = <0x180000 0x4000>; 248 + reg = <0x180000 0x2000>; 249 + #address-cells = <1>; 250 + #size-cells = <1>; 251 + ranges = <0 0x180000 0x2000>; 354 252 355 253 prcm_clocks: clocks { 356 254 #address-cells = <1>; ··· 394 226 }; 395 227 }; 396 228 229 + /* See TRM PLL_SUBSYS_BASE and "PLLSS Registers" */ 397 230 pllss: pllss@1c5000 { 398 231 compatible = "ti,dm814-pllss", "simple-bus"; 399 - reg = <0x1c5000 0x2000>; 232 + reg = <0x1c5000 0x1000>; 233 + #address-cells = <1>; 234 + #size-cells = <1>; 235 + ranges = <0 0x1c5000 0x1000>; 400 236 401 237 pllss_clocks: clocks { 402 238 #address-cells = <1>; ··· 426 254 reg = <0x48200000 0x1000>; 427 255 }; 428 256 257 + /* Board must configure evtmux with edma_xbar for EDMA */ 258 + mmc3: mmc@47810000 { 259 + compatible = "ti,omap4-hsmmc"; 260 + ti,hwmods = "mmc3"; 261 + interrupts = <29>; 262 + interrupt-parent = <&intc>; 263 + reg = <0x47810000 0x1000>; 264 + }; 265 + 429 266 edma: edma@49000000 { 430 - compatible = "ti,edma3"; 431 - ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; 432 - reg = <0x49000000 0x10000>, 433 - <0x44e10f90 0x40>; 267 + compatible = "ti,edma3-tpcc"; 268 + ti,hwmods = "tpcc"; 269 + reg = <0x49000000 0x10000>; 270 + reg-names = "edma3_cc"; 434 271 interrupts = <12 13 14>; 435 - #dma-cells = <1>; 272 + interrupt-names = "edma3_ccint", "emda3_mperr", 273 + "edma3_ccerrint"; 274 + dma-requests = <64>; 275 + #dma-cells = <2>; 276 + 277 + ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>, 278 + <&edma_tptc2 3>, <&edma_tptc3 0>; 279 + 280 + ti,edma-memcpy-channels = <20 21>; 281 + }; 282 + 283 + edma_tptc0: tptc@49800000 { 284 + compatible = "ti,edma3-tptc"; 285 + ti,hwmods = "tptc0"; 286 + reg = <0x49800000 0x100000>; 287 + interrupts = <112>; 288 + interrupt-names = "edma3_tcerrint"; 289 + }; 290 + 291 + edma_tptc1: tptc@49900000 { 292 + compatible = "ti,edma3-tptc"; 293 + ti,hwmods = "tptc1"; 294 + reg = <0x49900000 0x100000>; 295 + interrupts = <113>; 296 + interrupt-names = "edma3_tcerrint"; 297 + }; 298 + 299 + edma_tptc2: tptc@49a00000 { 300 + compatible = "ti,edma3-tptc"; 301 + ti,hwmods = "tptc2"; 302 + reg = <0x49a00000 0x100000>; 303 + interrupts = <114>; 304 + interrupt-names = "edma3_tcerrint"; 305 + }; 306 + 307 + edma_tptc3: tptc@49b00000 { 308 + compatible = "ti,edma3-tptc"; 309 + ti,hwmods = "tptc3"; 310 + reg = <0x49b00000 0x100000>; 311 + interrupts = <115>; 312 + interrupt-names = "edma3_tcerrint"; 436 313 }; 437 314 438 315 /* See TRM "Table 1-318. L4HS Instance Summary" */
+23
arch/arm/boot/dts/dra62x-clocks.dtsi
··· 1 + /* 2 + * This program is free software; you can redistribute it and/or modify 3 + * it under the terms of the GNU General Public License version 2 as 4 + * published by the Free Software Foundation. 5 + */ 6 + 7 + #include "dm814x-clocks.dtsi" 8 + 9 + /* 10 + * Compared to dm814x, dra62x has different shifts and more mux options. 11 + * Please add the extra options for ysclk_14 and 16 if really needed. 12 + */ 13 + &timer1_fck { 14 + clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 15 + &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 16 + ti,bit-shift = <4>; 17 + }; 18 + 19 + &timer2_fck { 20 + clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck 21 + &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>; 22 + ti,bit-shift = <8>; 23 + };
+80
arch/arm/boot/dts/dra62x-j5eco-evm.dts
··· 1 + /* 2 + * This program is free software; you can redistribute it and/or modify 3 + * it under the terms of the GNU General Public License version 2 as 4 + * published by the Free Software Foundation. 5 + */ 6 + /dts-v1/; 7 + 8 + #include "dra62x.dtsi" 9 + 10 + / { 11 + model = "DRA62x J5 Eco EVM"; 12 + compatible = "ti,dra62x-j5eco-evm", "ti,dra62x", "ti,dm8148"; 13 + 14 + memory { 15 + device_type = "memory"; 16 + reg = <0x80000000 0x40000000>; /* 1 GB */ 17 + }; 18 + 19 + /* MIC94060YC6 controlled by SD1_POW pin */ 20 + vmmcsd_fixed: fixedregulator@0 { 21 + compatible = "regulator-fixed"; 22 + regulator-name = "vmmcsd_fixed"; 23 + regulator-min-microvolt = <3300000>; 24 + regulator-max-microvolt = <3300000>; 25 + }; 26 + }; 27 + 28 + &cpsw_emac0 { 29 + phy_id = <&davinci_mdio>, <0>; 30 + phy-mode = "rgmii"; 31 + }; 32 + 33 + &cpsw_emac1 { 34 + phy_id = <&davinci_mdio>, <1>; 35 + phy-mode = "rgmii"; 36 + }; 37 + 38 + &mmc2 { 39 + pinctrl-names = "default"; 40 + pinctrl-0 = <&sd1_pins>; 41 + vmmc-supply = <&vmmcsd_fixed>; 42 + bus-width = <4>; 43 + cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; 44 + }; 45 + 46 + &pincntl { 47 + sd1_pins: pinmux_sd1_pins { 48 + pinctrl-single,pins = < 49 + DM814X_IOPAD(0x0800, PIN_INPUT | 0x1) /* SD1_CLK */ 50 + DM814X_IOPAD(0x0804, PIN_INPUT_PULLUP | 0x1) /* SD1_CMD */ 51 + DM814X_IOPAD(0x0808, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[0] */ 52 + DM814X_IOPAD(0x080c, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[1] */ 53 + DM814X_IOPAD(0x0810, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[2] */ 54 + DM814X_IOPAD(0x0814, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[3] */ 55 + DM814X_IOPAD(0x0924, PIN_OUTPUT | 0x40) /* SD1_POW */ 56 + DM814X_IOPAD(0x093C, PIN_INPUT_PULLUP | 0x80) /* GP1[6] */ 57 + >; 58 + }; 59 + 60 + usb0_pins: pinmux_usb0_pins { 61 + pinctrl-single,pins = < 62 + DM814X_IOPAD(0x0c34, PIN_OUTPUT | 0x1) /* USB0_DRVVBUS */ 63 + >; 64 + }; 65 + }; 66 + 67 + /* USB0_ID pin state: SW10[1] = 0 cable detection, SW10[1] = 1 ID grounded */ 68 + &usb0 { 69 + pinctrl-names = "default"; 70 + pinctrl-0 = <&usb0_pins>; 71 + dr_mode = "otg"; 72 + }; 73 + 74 + &usb1_phy { 75 + status = "disabled"; 76 + }; 77 + 78 + &usb1 { 79 + status = "disabled"; 80 + };
+23
arch/arm/boot/dts/dra62x.dtsi
··· 1 + /* 2 + * This file is licensed under the terms of the GNU General Public License 3 + * version 2. This program is licensed "as is" without any warranty of any 4 + * kind, whether express or implied. 5 + */ 6 + 7 + #include "dm814x.dtsi" 8 + 9 + / { 10 + compatible = "ti,dra62x"; 11 + }; 12 + 13 + /* Compared to dm814x, dra62x has different offsets for Ethernet */ 14 + &mac { 15 + reg = <0x4a100000 0x800 16 + 0x4a101200 0x100>; 17 + }; 18 + 19 + &davinci_mdio { 20 + reg = <0x4a101000 0x100>; 21 + }; 22 + 23 + #include "dra62x-clocks.dtsi"
+1 -2
arch/arm/mach-omap2/io.c
··· 612 612 ti814x_clockdomains_init(); 613 613 dm814x_hwmod_init(); 614 614 omap_hwmod_init_postsetup(); 615 - if (of_have_populated_dt()) 616 - omap_clk_soc_init = dm814x_dt_clk_init; 615 + omap_clk_soc_init = dm814x_dt_clk_init; 617 616 } 618 617 619 618 void __init ti816x_init_early(void)
+6 -6
arch/arm/mach-omap2/omap_hwmod_81xx_data.c
··· 599 599 static struct omap_hwmod dm814x_timer1_hwmod = { 600 600 .name = "timer1", 601 601 .clkdm_name = "alwon_l3s_clkdm", 602 - .main_clk = "timer_sys_ck", 602 + .main_clk = "timer1_fck", 603 603 .dev_attr = &capability_alwon_dev_attr, 604 604 .class = &dm816x_timer_hwmod_class, 605 605 .flags = HWMOD_NO_IDLEST, ··· 608 608 static struct omap_hwmod_ocp_if dm814x_l4_ls__timer1 = { 609 609 .master = &dm81xx_l4_ls_hwmod, 610 610 .slave = &dm814x_timer1_hwmod, 611 - .clk = "timer_sys_ck", 611 + .clk = "timer1_fck", 612 612 .user = OCP_USER_MPU, 613 613 }; 614 614 ··· 636 636 static struct omap_hwmod dm814x_timer2_hwmod = { 637 637 .name = "timer2", 638 638 .clkdm_name = "alwon_l3s_clkdm", 639 - .main_clk = "timer_sys_ck", 639 + .main_clk = "timer2_fck", 640 640 .dev_attr = &capability_alwon_dev_attr, 641 641 .class = &dm816x_timer_hwmod_class, 642 642 .flags = HWMOD_NO_IDLEST, ··· 645 645 static struct omap_hwmod_ocp_if dm814x_l4_ls__timer2 = { 646 646 .master = &dm81xx_l4_ls_hwmod, 647 647 .slave = &dm814x_timer2_hwmod, 648 - .clk = "timer_sys_ck", 648 + .clk = "timer2_fck", 649 649 .user = OCP_USER_MPU, 650 650 }; 651 651 ··· 1230 1230 1231 1231 /* 1232 1232 * REVISIT: Test and enable the following once clocks work: 1233 - * dm81xx_l4_ls__gpio1 1234 - * dm81xx_l4_ls__gpio2 1235 1233 * dm81xx_l4_ls__mailbox 1236 1234 * dm81xx_alwon_l3_slow__gpmc 1237 1235 * dm81xx_default_l3_slow__usbss ··· 1248 1250 &dm81xx_l4_ls__wd_timer1, 1249 1251 &dm81xx_l4_ls__i2c1, 1250 1252 &dm81xx_l4_ls__i2c2, 1253 + &dm81xx_l4_ls__gpio1, 1254 + &dm81xx_l4_ls__gpio2, 1251 1255 &dm81xx_l4_ls__elm, 1252 1256 &dm81xx_l4_ls__mcspi1, 1253 1257 &dm81xx_alwon_l3_fast__tpcc,
+6
arch/arm/mach-omap2/prm_common.c
··· 662 662 .index = TI_CLKM_PRM, 663 663 .init = am33xx_prm_init, 664 664 }; 665 + 666 + static struct omap_prcm_init_data dm814_pllss_data __initdata = { 667 + .index = TI_CLKM_PLLSS, 668 + .init = am33xx_prm_init, 669 + }; 665 670 #endif 666 671 667 672 #ifdef CONFIG_ARCH_OMAP4 ··· 720 715 #endif 721 716 #ifdef CONFIG_SOC_TI81XX 722 717 { .compatible = "ti,dm814-prcm", .data = &am3_prm_data }, 718 + { .compatible = "ti,dm814-pllss", .data = &dm814_pllss_data }, 723 719 { .compatible = "ti,dm816-prcm", .data = &am3_prm_data }, 724 720 #endif 725 721 #ifdef CONFIG_ARCH_OMAP2
+4
drivers/clk/ti/clk-814x.c
··· 14 14 DT_CLK(NULL, "devosc_ck", "devosc_ck"), 15 15 DT_CLK(NULL, "mpu_ck", "mpu_ck"), 16 16 DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"), 17 + DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"), 17 18 DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"), 19 + DT_CLK(NULL, "sysclk8_ck", "sysclk8_ck"), 18 20 DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"), 19 21 DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"), 20 22 DT_CLK(NULL, "timer_sys_ck", "devosc_ck"), 23 + DT_CLK(NULL, "timer1_fck", "timer1_fck"), 24 + DT_CLK(NULL, "timer2_fck", "timer2_fck"), 21 25 DT_CLK(NULL, "cpsw_125mhz_gclk", "cpsw_125mhz_gclk"), 22 26 DT_CLK(NULL, "cpsw_cpts_rft_clk", "cpsw_cpts_rft_clk"), 23 27 { .node_name = NULL },
+48
include/dt-bindings/pinctrl/dm814x.h
··· 1 + /* 2 + * This header provides constants specific to DM814X pinctrl bindings. 3 + */ 4 + 5 + #ifndef _DT_BINDINGS_PINCTRL_DM814X_H 6 + #define _DT_BINDINGS_PINCTRL_DM814X_H 7 + 8 + #include <dt-bindings/pinctrl/omap.h> 9 + 10 + #undef INPUT_EN 11 + #undef PULL_UP 12 + #undef PULL_ENA 13 + 14 + /* 15 + * Note that dm814x silicon revision 2.1 and older require input enabled 16 + * (bit 18 set) for all 3.3V I/Os to avoid cumulative hardware damage. For 17 + * more info, see errata advisory 2.1.87. We leave bit 18 out of 18 + * function-mask in dm814x.h and rely on the bootloader for it. 19 + */ 20 + #define INPUT_EN (1 << 18) 21 + #define PULL_UP (1 << 17) 22 + #define PULL_DISABLE (1 << 16) 23 + 24 + /* update macro depending on INPUT_EN and PULL_ENA */ 25 + #undef PIN_OUTPUT 26 + #undef PIN_OUTPUT_PULLUP 27 + #undef PIN_OUTPUT_PULLDOWN 28 + #undef PIN_INPUT 29 + #undef PIN_INPUT_PULLUP 30 + #undef PIN_INPUT_PULLDOWN 31 + 32 + #define PIN_OUTPUT (PULL_DISABLE) 33 + #define PIN_OUTPUT_PULLUP (PULL_UP) 34 + #define PIN_OUTPUT_PULLDOWN 0 35 + #define PIN_INPUT (INPUT_EN | PULL_DISABLE) 36 + #define PIN_INPUT_PULLUP (INPUT_EN | PULL_UP) 37 + #define PIN_INPUT_PULLDOWN (INPUT_EN) 38 + 39 + /* undef non-existing modes */ 40 + #undef PIN_OFF_NONE 41 + #undef PIN_OFF_OUTPUT_HIGH 42 + #undef PIN_OFF_OUTPUT_LOW 43 + #undef PIN_OFF_INPUT_PULLUP 44 + #undef PIN_OFF_INPUT_PULLDOWN 45 + #undef PIN_OFF_WAKEUPENABLE 46 + 47 + #endif 48 +
+1
include/dt-bindings/pinctrl/omap.h
··· 61 61 #define OMAP3430_CORE2_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x25d8) (val) 62 62 #define OMAP3630_CORE2_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x25a0) (val) 63 63 #define OMAP3_WKUP_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x2a00) (val) 64 + #define DM814X_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) 64 65 #define DM816X_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) 65 66 #define AM33XX_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) 66 67
+1
include/linux/clk/ti.h
··· 195 195 TI_CLKM_PRM, 196 196 TI_CLKM_SCRM, 197 197 TI_CLKM_CTRL, 198 + TI_CLKM_PLLSS, 198 199 CLK_MAX_MEMMAPS 199 200 }; 200 201