mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
Device tree updates for omaps via Benoit Cousson <b-cousson@ti.com>.
Note that the branch has dependencies to two other branches: - omap-devel-b-for-3.10 from Paul to get the AM33xx missing hwmod and thus avoid a regression with Santosh's hwmod cleanup including in this DT series [1]. It avoids breaking bisect if this series is merged before Paul's fixes. - omap-for-v3.10/usb branch to avoid nasty merge conflict in omap3.dtsi and omap4.dtsi due to the DTS patches contained in the USB branch because of a screw up by the unnamed person typing this signed tag based on Benoit's comments. [1] https://patchwork.kernel.org/patch/2366291/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJRY41OAAoJEBvUPslcq6Vz584QANm+lTNlS2+RYkRD/nUDtdS4 B4NZmeai/KBA/x4tApuI0wFmMPU57EU64K1SYSv/rP49Ohuxqf84POTLLFyhTxFC 0mBrffcRHFH480imZRpoJ+QwSvkreneyHs79ZbnB7OOd6tJC6njeex+Hp8uzCDXM n0E6eOqOzGuNTT42BnyC1b9oM26/Tb7KMvkJbwuPEoyLIDR11h0r8+Dn5/fHpuYc bVyTfRJfLCLfoLqheoW+BIuKtWT1ZjSzO1WNzRbrc6Ri78HTsOFxSKt2uA3lC1cx tT5uaWKzYyo6ZV6uPTil6EIpYhDukpvncbwHw1n8g2gOQcPDngXw+zbNFDw7Vpq3 D4FbK4Lp/51scIQlmqAX31Wd/CvSlLLCCQzQ0JW6AznCx5OHOvfBDF9xMQZIlGGy LoabMyILad7xYacVEvp1xyEMy3hX64laLf7Eu3GahiKrwvBMTKnbOqBODZZYKWwp uqlSdUlkXTQ2aA7GQK0Dda+8xGcf603TLD5u20ZUEhXbdwmu91Ov++k1pOcoTFHx qNLSu5SfUJW2VsEupw0DLsohnDQqGlkDYCo+m4AKwG1n4siASD12Y1z/DDaeNt09 WZZ5s4qi7vWcAMMnUcGQJdun2MVDGErCiTlg1VfmOtXmys/6f79g1W+Bj/4sMNqq pbNDU9x/VzIvytxinzF5 =X5rc -----END PGP SIGNATURE----- Merge tag 'omap-for-v3.10/dt-signed-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt2 From Tony Lindgren: Device tree updates for omaps via Benoit Cousson <b-cousson@ti.com>. Note that the branch has dependencies to two other branches: - omap-devel-b-for-3.10 from Paul to get the AM33xx missing hwmod and thus avoid a regression with Santosh's hwmod cleanup including in this DT series [1]. It avoids breaking bisect if this series is merged before Paul's fixes. - omap-for-v3.10/usb branch to avoid nasty merge conflict in omap3.dtsi and omap4.dtsi due to the DTS patches contained in the USB branch because of a screw up by the unnamed person typing this signed tag based on Benoit's comments. [1] https://patchwork.kernel.org/patch/2366291/ * tag 'omap-for-v3.10/dt-signed-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (69 commits) ARM/dts: OMAP3: fix pinctrl-single configuration ARM: dts: Add OMAP3430 SDP NOR flash memory binding ARM: dts: Add NOR flash bindings for OMAP2420 H4 ARM: dts: Update OMAP3430 SDP NAND and ONENAND properties ARM: dts: OMAP2+: Identify GPIO banks that are always powered ARM: OMAP2+: Populate DMTIMER errata when using device-tree ARM: dts: OMAP2+: Update DMTIMER compatibility property ARM: OMAP: Add function to request timer by node ARM: OMAP: Force dmtimer restore if context loss is not detectable ARM: OMAP: Simplify dmtimer context-loss handling ARM: dts: AM33XX: Corrects typo in interrupt field in SPI node ARM: dts: OMAP4460: Add CPU OPP table ARM: dts: omap4-panda: move generic sections to panda-common ARM: dts: OMAP443x: Add CPU OPP table ARM: dts: OMAP3: use twl4030 vdd1 regulator for CPU ARM: dts: OMAP36xx: Add CPU OPP table ARM: dts: OMAP34xx/35xx: Add CPU OPP table Documentation: dt: gpio-omap: Move interrupt-controller from #interrupt-cells description ARM: OMAP2+: hwmod: Don't call _init_mpu_rt_base if no sysc ARM: OMAP2+: hwmod: extract module address space from DT blob ... Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
4f779ad993
46 changed files with 2174 additions and 462 deletions
|
@ -6,6 +6,7 @@ provided by Arteris.
|
|||
Required properties:
|
||||
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
|
||||
Should be "ti,omap4-l3-noc" for OMAP4 family
|
||||
- reg: Contains L3 register address range for each noc domain.
|
||||
- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.
|
||||
|
||||
Examples:
|
||||
|
|
|
@ -1,7 +1,20 @@
|
|||
OMAP Timer bindings
|
||||
|
||||
Required properties:
|
||||
- compatible: Must be "ti,omap2-timer" for OMAP2+ controllers.
|
||||
- compatible: Should be set to one of the below. Please note that
|
||||
OMAP44xx devices have timer instances that are 100%
|
||||
register compatible with OMAP3xxx devices as well as
|
||||
newer timers that are not 100% register compatible.
|
||||
So for OMAP44xx devices timer instances may use
|
||||
different compatible strings.
|
||||
|
||||
ti,omap2420-timer (applicable to OMAP24xx devices)
|
||||
ti,omap3430-timer (applicable to OMAP3xxx/44xx devices)
|
||||
ti,omap4430-timer (applicable to OMAP44xx devices)
|
||||
ti,omap5430-timer (applicable to OMAP543x devices)
|
||||
ti,am335x-timer (applicable to AM335x devices)
|
||||
ti,am335x-timer-1ms (applicable to AM335x devices)
|
||||
|
||||
- reg: Contains timer register address range (base address and
|
||||
length).
|
||||
- interrupts: Contains the interrupt information for the timer. The
|
||||
|
@ -22,7 +35,7 @@ Optional properties:
|
|||
Example:
|
||||
|
||||
timer12: timer@48304000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48304000 0x400>;
|
||||
interrupts = <95>;
|
||||
ti,hwmods = "timer12"
|
||||
|
|
|
@ -5,12 +5,12 @@ Required properties:
|
|||
- "ti,omap2-gpio" for OMAP2 controllers
|
||||
- "ti,omap3-gpio" for OMAP3 controllers
|
||||
- "ti,omap4-gpio" for OMAP4 controllers
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify optional parameters (unused)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- interrupt-controller: Mark the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
- interrupt-controller: Mark the device node as an interrupt controller
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify flags:
|
||||
bits[3:0] trigger type and level flags:
|
||||
|
@ -29,8 +29,8 @@ Example:
|
|||
gpio4: gpio4 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio4";
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
|
|
@ -18,6 +18,7 @@ OMAP MUSB GLUE
|
|||
represents PERIPHERAL.
|
||||
- power : Should be "50". This signifies the controller can supply upto
|
||||
100mA when operating in host mode.
|
||||
- usb-phy : the phandle for the PHY device
|
||||
|
||||
Optional properties:
|
||||
- ctrl-module : phandle of the control module this glue uses to write to
|
||||
|
|
|
@ -115,10 +115,14 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
|
|||
imx28-tx28.dtb
|
||||
dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
|
||||
dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
|
||||
omap3430-sdp.dtb \
|
||||
omap3-beagle.dtb \
|
||||
omap3-devkit8000.dtb \
|
||||
omap3-beagle-xm.dtb \
|
||||
omap3-evm.dtb \
|
||||
omap3-tobi.dtb \
|
||||
omap3-igep0020.dtb \
|
||||
omap3-igep0030.dtb \
|
||||
omap4-panda.dtb \
|
||||
omap4-panda-a4.dtb \
|
||||
omap4-panda-es.dtb \
|
||||
|
|
|
@ -43,7 +43,7 @@ uart1: serial@44e09000 {
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
i2c1: i2c@44e0b000 {
|
||||
i2c0: i2c@44e0b000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
|
@ -59,27 +59,27 @@ leds {
|
|||
|
||||
led@2 {
|
||||
label = "beaglebone:green:heartbeat";
|
||||
gpios = <&gpio2 21 0>;
|
||||
gpios = <&gpio1 21 0>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@3 {
|
||||
label = "beaglebone:green:mmc0";
|
||||
gpios = <&gpio2 22 0>;
|
||||
gpios = <&gpio1 22 0>;
|
||||
linux,default-trigger = "mmc0";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@4 {
|
||||
label = "beaglebone:green:usr2";
|
||||
gpios = <&gpio2 23 0>;
|
||||
gpios = <&gpio1 23 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@5 {
|
||||
label = "beaglebone:green:usr3";
|
||||
gpios = <&gpio2 24 0>;
|
||||
gpios = <&gpio1 24 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -51,7 +51,7 @@ uart1: serial@44e09000 {
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
i2c1: i2c@44e0b000 {
|
||||
i2c0: i2c@44e0b000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
|
@ -60,7 +60,7 @@ tps: tps@2d {
|
|||
};
|
||||
};
|
||||
|
||||
i2c2: i2c@4802a000 {
|
||||
i2c1: i2c@4802a000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
|
||||
|
@ -123,12 +123,12 @@ matrix_keypad: matrix_keypad@0 {
|
|||
debounce-delay-ms = <5>;
|
||||
col-scan-delay-us = <2>;
|
||||
|
||||
row-gpios = <&gpio2 25 0 /* Bank1, pin25 */
|
||||
&gpio2 26 0 /* Bank1, pin26 */
|
||||
&gpio2 27 0>; /* Bank1, pin27 */
|
||||
row-gpios = <&gpio1 25 0 /* Bank1, pin25 */
|
||||
&gpio1 26 0 /* Bank1, pin26 */
|
||||
&gpio1 27 0>; /* Bank1, pin27 */
|
||||
|
||||
col-gpios = <&gpio2 21 0 /* Bank1, pin21 */
|
||||
&gpio2 22 0>; /* Bank1, pin22 */
|
||||
col-gpios = <&gpio1 21 0 /* Bank1, pin21 */
|
||||
&gpio1 22 0>; /* Bank1, pin22 */
|
||||
|
||||
linux,keymap = <0x0000008b /* MENU */
|
||||
0x0100009e /* BACK */
|
||||
|
@ -147,14 +147,14 @@ gpio_keys: volume_keys@0 {
|
|||
switch@9 {
|
||||
label = "volume-up";
|
||||
linux,code = <115>;
|
||||
gpios = <&gpio1 2 1>;
|
||||
gpios = <&gpio0 2 1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
switch@10 {
|
||||
label = "volume-down";
|
||||
linux,code = <114>;
|
||||
gpios = <&gpio1 3 1>;
|
||||
gpios = <&gpio0 3 1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -58,7 +58,7 @@ uart1: serial@44e09000 {
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
i2c1: i2c@44e0b000 {
|
||||
i2c0: i2c@44e0b000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
|
@ -115,26 +115,26 @@ leds {
|
|||
|
||||
led@1 {
|
||||
label = "evmsk:green:usr0";
|
||||
gpios = <&gpio2 4 0>;
|
||||
gpios = <&gpio1 4 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@2 {
|
||||
label = "evmsk:green:usr1";
|
||||
gpios = <&gpio2 5 0>;
|
||||
gpios = <&gpio1 5 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@3 {
|
||||
label = "evmsk:green:mmc0";
|
||||
gpios = <&gpio2 6 0>;
|
||||
gpios = <&gpio1 6 0>;
|
||||
linux,default-trigger = "mmc0";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@4 {
|
||||
label = "evmsk:green:heartbeat";
|
||||
gpios = <&gpio2 7 0>;
|
||||
gpios = <&gpio1 7 0>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "off";
|
||||
};
|
||||
|
@ -148,26 +148,26 @@ gpio_buttons: gpio_buttons@0 {
|
|||
switch@1 {
|
||||
label = "button0";
|
||||
linux,code = <0x100>;
|
||||
gpios = <&gpio3 3 0>;
|
||||
gpios = <&gpio2 3 0>;
|
||||
};
|
||||
|
||||
switch@2 {
|
||||
label = "button1";
|
||||
linux,code = <0x101>;
|
||||
gpios = <&gpio3 2 0>;
|
||||
gpios = <&gpio2 2 0>;
|
||||
};
|
||||
|
||||
switch@3 {
|
||||
label = "button2";
|
||||
linux,code = <0x102>;
|
||||
gpios = <&gpio1 30 0>;
|
||||
gpios = <&gpio0 30 0>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
switch@4 {
|
||||
label = "button3";
|
||||
linux,code = <0x103>;
|
||||
gpios = <&gpio3 5 0>;
|
||||
gpios = <&gpio2 5 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -21,6 +21,8 @@ aliases {
|
|||
serial3 = &uart4;
|
||||
serial4 = &uart5;
|
||||
serial5 = &uart6;
|
||||
d_can0 = &dcan0;
|
||||
d_can1 = &dcan1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
|
@ -87,7 +89,7 @@ intc: interrupt-controller@48200000 {
|
|||
reg = <0x48200000 0x1000>;
|
||||
};
|
||||
|
||||
gpio1: gpio@44e07000 {
|
||||
gpio0: gpio@44e07000 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio1";
|
||||
gpio-controller;
|
||||
|
@ -98,7 +100,7 @@ gpio1: gpio@44e07000 {
|
|||
interrupts = <96>;
|
||||
};
|
||||
|
||||
gpio2: gpio@4804c000 {
|
||||
gpio1: gpio@4804c000 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio2";
|
||||
gpio-controller;
|
||||
|
@ -109,7 +111,7 @@ gpio2: gpio@4804c000 {
|
|||
interrupts = <98>;
|
||||
};
|
||||
|
||||
gpio3: gpio@481ac000 {
|
||||
gpio2: gpio@481ac000 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio3";
|
||||
gpio-controller;
|
||||
|
@ -120,7 +122,7 @@ gpio3: gpio@481ac000 {
|
|||
interrupts = <32>;
|
||||
};
|
||||
|
||||
gpio4: gpio@481ae000 {
|
||||
gpio3: gpio@481ae000 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio4";
|
||||
gpio-controller;
|
||||
|
@ -185,7 +187,7 @@ uart6: serial@481aa000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@44e0b000 {
|
||||
i2c0: i2c@44e0b000 {
|
||||
compatible = "ti,omap4-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -195,7 +197,7 @@ i2c1: i2c@44e0b000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@4802a000 {
|
||||
i2c1: i2c@4802a000 {
|
||||
compatible = "ti,omap4-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -205,7 +207,7 @@ i2c2: i2c@4802a000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@4819c000 {
|
||||
i2c2: i2c@4819c000 {
|
||||
compatible = "ti,omap4-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -225,7 +227,8 @@ wdt2: wdt@44e35000 {
|
|||
dcan0: d_can@481cc000 {
|
||||
compatible = "bosch,d_can";
|
||||
ti,hwmods = "d_can0";
|
||||
reg = <0x481cc000 0x2000>;
|
||||
reg = <0x481cc000 0x2000
|
||||
0x44e10644 0x4>;
|
||||
interrupts = <52>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -233,13 +236,14 @@ dcan0: d_can@481cc000 {
|
|||
dcan1: d_can@481d0000 {
|
||||
compatible = "bosch,d_can";
|
||||
ti,hwmods = "d_can1";
|
||||
reg = <0x481d0000 0x2000>;
|
||||
reg = <0x481d0000 0x2000
|
||||
0x44e10644 0x4>;
|
||||
interrupts = <55>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer1: timer@44e31000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer-1ms";
|
||||
reg = <0x44e31000 0x400>;
|
||||
interrupts = <67>;
|
||||
ti,hwmods = "timer1";
|
||||
|
@ -247,21 +251,21 @@ timer1: timer@44e31000 {
|
|||
};
|
||||
|
||||
timer2: timer@48040000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x48040000 0x400>;
|
||||
interrupts = <68>;
|
||||
ti,hwmods = "timer2";
|
||||
};
|
||||
|
||||
timer3: timer@48042000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x48042000 0x400>;
|
||||
interrupts = <69>;
|
||||
ti,hwmods = "timer3";
|
||||
};
|
||||
|
||||
timer4: timer@48044000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x48044000 0x400>;
|
||||
interrupts = <92>;
|
||||
ti,hwmods = "timer4";
|
||||
|
@ -269,7 +273,7 @@ timer4: timer@48044000 {
|
|||
};
|
||||
|
||||
timer5: timer@48046000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x48046000 0x400>;
|
||||
interrupts = <93>;
|
||||
ti,hwmods = "timer5";
|
||||
|
@ -277,7 +281,7 @@ timer5: timer@48046000 {
|
|||
};
|
||||
|
||||
timer6: timer@48048000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x48048000 0x400>;
|
||||
interrupts = <94>;
|
||||
ti,hwmods = "timer6";
|
||||
|
@ -285,7 +289,7 @@ timer6: timer@48048000 {
|
|||
};
|
||||
|
||||
timer7: timer@4804a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,am335x-timer";
|
||||
reg = <0x4804a000 0x400>;
|
||||
interrupts = <95>;
|
||||
ti,hwmods = "timer7";
|
||||
|
@ -305,7 +309,7 @@ spi0: spi@48030000 {
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x48030000 0x400>;
|
||||
interrupt = <65>;
|
||||
interrupts = <65>;
|
||||
ti,spi-num-cs = <2>;
|
||||
ti,hwmods = "spi0";
|
||||
status = "disabled";
|
||||
|
@ -316,7 +320,7 @@ spi1: spi@481a0000 {
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x481a0000 0x400>;
|
||||
interrupt = <125>;
|
||||
interrupts = <125>;
|
||||
ti,spi-num-cs = <2>;
|
||||
ti,hwmods = "spi1";
|
||||
status = "disabled";
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI AM3517 EVM (AM3517/05)";
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TeeJet Mt.Ventoux";
|
||||
|
|
|
@ -26,6 +26,11 @@ cpu@0 {
|
|||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,arm1136-pmu";
|
||||
interrupts = <3>;
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "ti,omap-infra";
|
||||
mpu {
|
||||
|
@ -49,6 +54,18 @@ intc: interrupt-controller@1 {
|
|||
reg = <0x480FE000 0x1000>;
|
||||
};
|
||||
|
||||
sdma: dma-controller@48056000 {
|
||||
compatible = "ti,omap2430-sdma", "ti,omap2420-sdma";
|
||||
reg = <0x48056000 0x1000>;
|
||||
interrupts = <12>,
|
||||
<13>,
|
||||
<14>,
|
||||
<15>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <32>;
|
||||
#dma-requests = <64>;
|
||||
};
|
||||
|
||||
uart1: serial@4806a000 {
|
||||
compatible = "ti,omap2-uart";
|
||||
ti,hwmods = "uart1";
|
||||
|
@ -68,28 +85,28 @@ uart3: serial@4806e000 {
|
|||
};
|
||||
|
||||
timer2: timer@4802a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x4802a000 0x400>;
|
||||
interrupts = <38>;
|
||||
ti,hwmods = "timer2";
|
||||
};
|
||||
|
||||
timer3: timer@48078000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48078000 0x400>;
|
||||
interrupts = <39>;
|
||||
ti,hwmods = "timer3";
|
||||
};
|
||||
|
||||
timer4: timer@4807a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x4807a000 0x400>;
|
||||
interrupts = <40>;
|
||||
ti,hwmods = "timer4";
|
||||
};
|
||||
|
||||
timer5: timer@4807c000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x4807c000 0x400>;
|
||||
interrupts = <41>;
|
||||
ti,hwmods = "timer5";
|
||||
|
@ -97,7 +114,7 @@ timer5: timer@4807c000 {
|
|||
};
|
||||
|
||||
timer6: timer@4807e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x4807e000 0x400>;
|
||||
interrupts = <42>;
|
||||
ti,hwmods = "timer6";
|
||||
|
@ -105,7 +122,7 @@ timer6: timer@4807e000 {
|
|||
};
|
||||
|
||||
timer7: timer@48080000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48080000 0x400>;
|
||||
interrupts = <43>;
|
||||
ti,hwmods = "timer7";
|
||||
|
@ -113,7 +130,7 @@ timer7: timer@48080000 {
|
|||
};
|
||||
|
||||
timer8: timer@48082000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48082000 0x400>;
|
||||
interrupts = <44>;
|
||||
ti,hwmods = "timer8";
|
||||
|
@ -121,7 +138,7 @@ timer8: timer@48082000 {
|
|||
};
|
||||
|
||||
timer9: timer@48084000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48084000 0x400>;
|
||||
interrupts = <45>;
|
||||
ti,hwmods = "timer9";
|
||||
|
@ -129,7 +146,7 @@ timer9: timer@48084000 {
|
|||
};
|
||||
|
||||
timer10: timer@48086000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48086000 0x400>;
|
||||
interrupts = <46>;
|
||||
ti,hwmods = "timer10";
|
||||
|
@ -137,7 +154,7 @@ timer10: timer@48086000 {
|
|||
};
|
||||
|
||||
timer11: timer@48088000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48088000 0x400>;
|
||||
interrupts = <47>;
|
||||
ti,hwmods = "timer11";
|
||||
|
@ -145,7 +162,7 @@ timer11: timer@48088000 {
|
|||
};
|
||||
|
||||
timer12: timer@4808a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x4808a000 0x400>;
|
||||
interrupts = <48>;
|
||||
ti,hwmods = "timer12";
|
||||
|
|
|
@ -18,3 +18,49 @@ memory {
|
|||
reg = <0x80000000 0x4000000>; /* 64 MB */
|
||||
};
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x08000000 0x04000000>;
|
||||
|
||||
nor@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
linux,mtd-name= "intel,ge28f256l18b85";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0 0 0x04000000>;
|
||||
bank-width = <2>;
|
||||
|
||||
gpmc,mux-add-data = <2>;
|
||||
gpmc,cs-on-ns = <10>;
|
||||
gpmc,cs-rd-off-ns = <160>;
|
||||
gpmc,cs-wr-off-ns = <160>;
|
||||
gpmc,adv-on-ns = <20>;
|
||||
gpmc,adv-rd-off-ns = <50>;
|
||||
gpmc,adv-wr-off-ns = <50>;
|
||||
gpmc,oe-on-ns = <60>;
|
||||
gpmc,oe-off-ns = <120>;
|
||||
gpmc,we-on-ns = <60>;
|
||||
gpmc,we-off-ns = <120>;
|
||||
gpmc,rd-cycle-ns = <170>;
|
||||
gpmc,wr-cycle-ns = <170>;
|
||||
gpmc,access-ns = <150>;
|
||||
gpmc,page-burst-access-ns = <10>;
|
||||
|
||||
partition@0 {
|
||||
label = "bootloader";
|
||||
reg = <0 0x20000>;
|
||||
};
|
||||
partition@0x20000 {
|
||||
label = "params";
|
||||
reg = <0x20000 0x20000>;
|
||||
};
|
||||
partition@0x40000 {
|
||||
label = "kernel";
|
||||
reg = <0x40000 0x200000>;
|
||||
};
|
||||
partition@0x240000 {
|
||||
label = "file-system";
|
||||
reg = <0x240000 0x3dc0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -29,6 +29,65 @@ omap2420_pmx: pinmux@48000030 {
|
|||
pinctrl-single,function-mask = <0x3f>;
|
||||
};
|
||||
|
||||
gpio1: gpio@48018000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x48018000 0x200>;
|
||||
interrupts = <29>;
|
||||
ti,hwmods = "gpio1";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio2: gpio@4801a000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x4801a000 0x200>;
|
||||
interrupts = <30>;
|
||||
ti,hwmods = "gpio2";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio3: gpio@4801c000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x4801c000 0x200>;
|
||||
interrupts = <31>;
|
||||
ti,hwmods = "gpio3";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio4: gpio@4801e000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x4801e000 0x200>;
|
||||
interrupts = <32>;
|
||||
ti,hwmods = "gpio4";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpmc: gpmc@6800a000 {
|
||||
compatible = "ti,omap2420-gpmc";
|
||||
reg = <0x6800a000 0x1000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <20>;
|
||||
gpmc,num-cs = <8>;
|
||||
gpmc,num-waitpins = <4>;
|
||||
ti,hwmods = "gpmc";
|
||||
};
|
||||
|
||||
mcbsp1: mcbsp@48074000 {
|
||||
compatible = "ti,omap2420-mcbsp";
|
||||
reg = <0x48074000 0xff>;
|
||||
|
@ -37,6 +96,9 @@ mcbsp1: mcbsp@48074000 {
|
|||
<60>; /* RX interrupt */
|
||||
interrupt-names = "tx", "rx";
|
||||
ti,hwmods = "mcbsp1";
|
||||
dmas = <&sdma 31>,
|
||||
<&sdma 32>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp2: mcbsp@48076000 {
|
||||
|
@ -47,10 +109,13 @@ mcbsp2: mcbsp@48076000 {
|
|||
<63>; /* RX interrupt */
|
||||
interrupt-names = "tx", "rx";
|
||||
ti,hwmods = "mcbsp2";
|
||||
dmas = <&sdma 33>,
|
||||
<&sdma 34>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
timer1: timer@48028000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x48028000 0x400>;
|
||||
interrupts = <37>;
|
||||
ti,hwmods = "timer1";
|
||||
|
|
|
@ -29,6 +29,76 @@ omap2430_pmx: pinmux@49002030 {
|
|||
pinctrl-single,function-mask = <0x3f>;
|
||||
};
|
||||
|
||||
gpio1: gpio@4900c000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x4900c000 0x200>;
|
||||
interrupts = <29>;
|
||||
ti,hwmods = "gpio1";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio2: gpio@4900e000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x4900e000 0x200>;
|
||||
interrupts = <30>;
|
||||
ti,hwmods = "gpio2";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio3: gpio@49010000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x49010000 0x200>;
|
||||
interrupts = <31>;
|
||||
ti,hwmods = "gpio3";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio4: gpio@49012000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x49012000 0x200>;
|
||||
interrupts = <32>;
|
||||
ti,hwmods = "gpio4";
|
||||
ti,gpio-always-on;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpio5: gpio@480b6000 {
|
||||
compatible = "ti,omap2-gpio";
|
||||
reg = <0x480b6000 0x200>;
|
||||
interrupts = <33>;
|
||||
ti,hwmods = "gpio5";
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
gpmc: gpmc@6e000000 {
|
||||
compatible = "ti,omap2430-gpmc";
|
||||
reg = <0x6e000000 0x1000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <20>;
|
||||
gpmc,num-cs = <8>;
|
||||
gpmc,num-waitpins = <4>;
|
||||
ti,hwmods = "gpmc";
|
||||
};
|
||||
|
||||
mcbsp1: mcbsp@48074000 {
|
||||
compatible = "ti,omap2430-mcbsp";
|
||||
reg = <0x48074000 0xff>;
|
||||
|
@ -40,6 +110,9 @@ mcbsp1: mcbsp@48074000 {
|
|||
interrupt-names = "common", "tx", "rx", "rx_overflow";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp1";
|
||||
dmas = <&sdma 31>,
|
||||
<&sdma 32>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp2: mcbsp@48076000 {
|
||||
|
@ -52,6 +125,9 @@ mcbsp2: mcbsp@48076000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp2";
|
||||
dmas = <&sdma 33>,
|
||||
<&sdma 34>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp3: mcbsp@4808c000 {
|
||||
|
@ -64,6 +140,9 @@ mcbsp3: mcbsp@4808c000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp3";
|
||||
dmas = <&sdma 17>,
|
||||
<&sdma 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp4: mcbsp@4808e000 {
|
||||
|
@ -76,6 +155,9 @@ mcbsp4: mcbsp@4808e000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp4";
|
||||
dmas = <&sdma 19>,
|
||||
<&sdma 20>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp5: mcbsp@48096000 {
|
||||
|
@ -88,10 +170,13 @@ mcbsp5: mcbsp@48096000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp5";
|
||||
dmas = <&sdma 21>,
|
||||
<&sdma 22>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
timer1: timer@49018000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap2420-timer";
|
||||
reg = <0x49018000 0x400>;
|
||||
interrupts = <37>;
|
||||
ti,hwmods = "timer1";
|
||||
|
|
|
@ -13,6 +13,12 @@ / {
|
|||
model = "TI OMAP3 BeagleBoard xM";
|
||||
compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3";
|
||||
|
||||
cpus {
|
||||
cpu@0 {
|
||||
cpu0-supply = <&vcc>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x20000000>; /* 512 MB */
|
||||
|
@ -20,10 +26,6 @@ memory {
|
|||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pmu_stat {
|
||||
label = "beagleboard::pmu_stat";
|
||||
gpios = <&twl_gpio 19 0>; /* LEDB */
|
||||
};
|
||||
|
||||
heartbeat {
|
||||
label = "beagleboard::usr0";
|
||||
|
@ -38,6 +40,16 @@ mmc {
|
|||
};
|
||||
};
|
||||
|
||||
pwmleds {
|
||||
compatible = "pwm-leds";
|
||||
|
||||
pmu_stat {
|
||||
label = "beagleboard::pmu_stat";
|
||||
pwms = <&twl_pwmled 1 7812500>;
|
||||
max-brightness = <127>;
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "ti,omap-twl4030";
|
||||
ti,model = "omap3beagle";
|
||||
|
@ -107,3 +119,9 @@ &twl_gpio {
|
|||
*/
|
||||
ti,pulldowns = <0x03a1c4>;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <0>;
|
||||
mode = <3>;
|
||||
power = <50>;
|
||||
};
|
||||
|
|
|
@ -7,12 +7,18 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI OMAP3 BeagleBoard";
|
||||
compatible = "ti,omap3-beagle", "ti,omap3";
|
||||
|
||||
cpus {
|
||||
cpu@0 {
|
||||
cpu0-supply = <&vcc>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||
|
|
169
arch/arm/boot/dts/omap3-devkit8000.dts
Normal file
169
arch/arm/boot/dts/omap3-devkit8000.dts
Normal file
|
@ -0,0 +1,169 @@
|
|||
/*
|
||||
* Author: Anil Kumar <anilk4.v@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap34xx.dtsi"
|
||||
/ {
|
||||
model = "TimLL OMAP3 Devkit8000";
|
||||
compatible = "timll,omap3-devkit8000", "ti,omap3";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
heartbeat {
|
||||
label = "devkit8000::led1";
|
||||
gpios = <&gpio6 26 0>; /* 186 -> LED1 */
|
||||
default-state = "on";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
mmc {
|
||||
label = "devkit8000::led2";
|
||||
gpios = <&gpio6 3 0>; /* 163 -> LED2 */
|
||||
default-state = "on";
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
|
||||
usr {
|
||||
label = "devkit8000::led3";
|
||||
gpios = <&gpio6 4 0>; /* 164 -> LED3 */
|
||||
default-state = "on";
|
||||
linux,default-trigger = "usr";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "ti,omap-twl4030";
|
||||
ti,model = "devkit8000";
|
||||
|
||||
ti,mcbsp = <&mcbsp2>;
|
||||
ti,codec = <&twl_audio>;
|
||||
ti,audio-routing =
|
||||
"Ext Spk", "PREDRIVEL",
|
||||
"Ext Spk", "PREDRIVER",
|
||||
"MAINMIC", "Main Mic",
|
||||
"Main Mic", "Mic Bias 1";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <2600000>;
|
||||
|
||||
twl: twl@48 {
|
||||
reg = <0x48>;
|
||||
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||
|
||||
twl_audio: audio {
|
||||
compatible = "ti,twl4030-audio";
|
||||
codec {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/include/ "twl4030.dtsi"
|
||||
|
||||
&mmc1 {
|
||||
vmmc-supply = <&vmmc1>;
|
||||
vmmc_aux-supply = <&vsim>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wdt2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp5 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x30000000 0x04>; /* CS0: NAND */
|
||||
|
||||
nand@0,0 {
|
||||
reg = <0 0 0>; /* CS0, offset 0 */
|
||||
nand-bus-width = <16>;
|
||||
|
||||
gpmc,sync-clk = <0>;
|
||||
gpmc,cs-on = <0>;
|
||||
gpmc,cs-rd-off = <44>;
|
||||
gpmc,cs-wr-off = <44>;
|
||||
gpmc,adv-on = <6>;
|
||||
gpmc,adv-rd-off = <34>;
|
||||
gpmc,adv-wr-off = <44>;
|
||||
gpmc,we-off = <40>;
|
||||
gpmc,oe-off = <54>;
|
||||
gpmc,access = <64>;
|
||||
gpmc,rd-cycle = <82>;
|
||||
gpmc,wr-cycle = <82>;
|
||||
gpmc,wr-access = <40>;
|
||||
gpmc,wr-data-mux-bus = <0>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
x-loader@0 {
|
||||
label = "X-Loader";
|
||||
reg = <0 0x80000>;
|
||||
};
|
||||
|
||||
bootloaders@80000 {
|
||||
label = "U-Boot";
|
||||
reg = <0x80000 0x1e0000>;
|
||||
};
|
||||
|
||||
bootloaders_env@260000 {
|
||||
label = "U-Boot Env";
|
||||
reg = <0x260000 0x20000>;
|
||||
};
|
||||
|
||||
kernel@280000 {
|
||||
label = "Kernel";
|
||||
reg = <0x280000 0x400000>;
|
||||
};
|
||||
|
||||
filesystem@680000 {
|
||||
label = "File System";
|
||||
reg = <0x680000 0xf980000>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -7,12 +7,18 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
|
||||
compatible = "ti,omap3-evm", "ti,omap3";
|
||||
|
||||
cpus {
|
||||
cpu@0 {
|
||||
cpu0-supply = <&vcc>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||
|
@ -59,3 +65,9 @@ tvp5146@5c {
|
|||
&twl_gpio {
|
||||
ti,use-leds;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <0>;
|
||||
mode = <3>;
|
||||
power = <50>;
|
||||
};
|
||||
|
|
122
arch/arm/boot/dts/omap3-igep.dtsi
Normal file
122
arch/arm/boot/dts/omap3-igep.dtsi
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Device Tree Source for IGEP Technology devices
|
||||
*
|
||||
* Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
|
||||
* Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x20000000>; /* 512 MB */
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "ti,omap-twl4030";
|
||||
ti,model = "igep2";
|
||||
ti,mcbsp = <&mcbsp2>;
|
||||
ti,codec = <&twl_audio>;
|
||||
};
|
||||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
uart1_pins: pinmux_uart1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x152 0x100 /* uart1_rx.uart1_rx INPUT | MODE0 */
|
||||
0x14c 0 /* uart1_tx.uart1_tx OUTPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
uart2_pins: pinmux_uart2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x14a 0x100 /* uart2_rx.uart2_rx INPUT | MODE0 */
|
||||
0x148 0 /* uart2_tx.uart2_tx OUTPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
uart3_pins: pinmux_uart3_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x16e 0x100 /* uart3_rx.uart3_rx INPUT | MODE0 */
|
||||
0x170 0 /* uart3_tx.uart3_tx OUTPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mmc1_pins: pinmux_mmc1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x114 0x0118 /* sdmmc1_clk.sdmmc1_clk INPUT PULLUP | MODE 0 */
|
||||
0x116 0x0118 /* sdmmc1_cmd.sdmmc1_cmd INPUT PULLUP | MODE 0 */
|
||||
0x118 0x0118 /* sdmmc1_dat0.sdmmc1_dat0 INPUT PULLUP | MODE 0 */
|
||||
0x11a 0x0118 /* sdmmc1_dat1.sdmmc1_dat1 INPUT PULLUP | MODE 0 */
|
||||
0x11c 0x0118 /* sdmmc1_dat2.sdmmc1_dat2 INPUT PULLUP | MODE 0 */
|
||||
0x11e 0x0118 /* sdmmc1_dat3.sdmmc1_dat3 INPUT PULLUP | MODE 0 */
|
||||
0x120 0x0100 /* sdmmc1_dat4.sdmmc1_dat4 INPUT | MODE 0 */
|
||||
0x122 0x0100 /* sdmmc1_dat5.sdmmc1_dat5 INPUT | MODE 0 */
|
||||
0x124 0x0100 /* sdmmc1_dat6.sdmmc1_dat6 INPUT | MODE 0 */
|
||||
0x126 0x0100 /* sdmmc1_dat7.sdmmc1_dat7 INPUT | MODE 0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <2600000>;
|
||||
|
||||
twl: twl@48 {
|
||||
reg = <0x48>;
|
||||
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
twl_audio: audio {
|
||||
compatible = "ti,twl4030-audio";
|
||||
codec {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "twl4030.dtsi"
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc1_pins>;
|
||||
vmmc-supply = <&vmmc1>;
|
||||
vmmc_aux-supply = <&vsim>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart2_pins>;
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart3_pins>;
|
||||
};
|
||||
|
||||
&twl_gpio {
|
||||
ti,use-leds;
|
||||
};
|
56
arch/arm/boot/dts/omap3-igep0020.dts
Normal file
56
arch/arm/boot/dts/omap3-igep0020.dts
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Device Tree Source for IGEPv2 board
|
||||
*
|
||||
* Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
|
||||
* Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/include/ "omap3-igep.dtsi"
|
||||
|
||||
/ {
|
||||
model = "IGEPv2";
|
||||
compatible = "isee,omap3-igep0020", "ti,omap3";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
boot {
|
||||
label = "omap3:green:boot";
|
||||
gpios = <&gpio1 26 0>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
user0 {
|
||||
label = "omap3:red:user0";
|
||||
gpios = <&gpio1 27 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
user1 {
|
||||
label = "omap3:red:user1";
|
||||
gpios = <&gpio1 28 0>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
user2 {
|
||||
label = "omap3:green:user1";
|
||||
gpios = <&twl_gpio 19 1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
clock-frequency = <100000>;
|
||||
|
||||
/*
|
||||
* Display monitor features are burnt in the EEPROM
|
||||
* as EDID data.
|
||||
*/
|
||||
eeprom@50 {
|
||||
compatible = "ti,eeprom";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
44
arch/arm/boot/dts/omap3-igep0030.dts
Normal file
44
arch/arm/boot/dts/omap3-igep0030.dts
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Device Tree Source for IGEP COM Module
|
||||
*
|
||||
* Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
|
||||
* Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/include/ "omap3-igep.dtsi"
|
||||
|
||||
/ {
|
||||
model = "IGEP COM Module";
|
||||
compatible = "isee,omap3-igep0030", "ti,omap3";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
boot {
|
||||
label = "omap3:green:boot";
|
||||
gpios = <&twl_gpio 13 1>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
user0 {
|
||||
label = "omap3:red:user0";
|
||||
gpios = <&twl_gpio 18 1>; /* LEDA */
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
user1 {
|
||||
label = "omap3:green:user1";
|
||||
gpios = <&twl_gpio 19 1>; /* LEDB */
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
user2 {
|
||||
label = "omap3:red:user1";
|
||||
gpios = <&gpio1 16 1>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
};
|
|
@ -11,17 +11,26 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pwmleds {
|
||||
compatible = "pwm-leds";
|
||||
|
||||
overo {
|
||||
label = "overo:blue:COM";
|
||||
gpios = <&twl_gpio 19 0>;
|
||||
linux,default-trigger = "mmc0";
|
||||
pwms = <&twl_pwmled 1 7812500>;
|
||||
max-brightness = <127>;
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "ti,omap-twl4030";
|
||||
ti,model = "overo";
|
||||
|
||||
ti,mcbsp = <&mcbsp2>;
|
||||
ti,codec = <&twl_audio>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
|
@ -31,6 +40,12 @@ twl: twl@48 {
|
|||
reg = <0x48>;
|
||||
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
twl_audio: audio {
|
||||
compatible = "ti,twl4030-audio";
|
||||
codec {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -55,3 +70,9 @@ &mmc2 {
|
|||
&twl_gpio {
|
||||
ti,use-leds;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <0>;
|
||||
mode = <3>;
|
||||
power = <50>;
|
||||
};
|
||||
|
|
|
@ -26,8 +26,14 @@ cpu@0 {
|
|||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a8-pmu";
|
||||
interrupts = <3>;
|
||||
ti,hwmods = "debugss";
|
||||
};
|
||||
|
||||
/*
|
||||
* The soc node represents the soc top level view. It is uses for IPs
|
||||
* The soc node represents the soc top level view. It is used for IPs
|
||||
* that are not memory mapped in the MPU view or for the MPU itself.
|
||||
*/
|
||||
soc {
|
||||
|
@ -75,76 +81,101 @@ intc: interrupt-controller@48200000 {
|
|||
reg = <0x48200000 0x1000>;
|
||||
};
|
||||
|
||||
sdma: dma-controller@48056000 {
|
||||
compatible = "ti,omap3630-sdma", "ti,omap3430-sdma";
|
||||
reg = <0x48056000 0x1000>;
|
||||
interrupts = <12>,
|
||||
<13>,
|
||||
<14>,
|
||||
<15>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <32>;
|
||||
#dma-requests = <96>;
|
||||
};
|
||||
|
||||
omap3_pmx_core: pinmux@48002030 {
|
||||
compatible = "ti,omap3-padconf", "pinctrl-single";
|
||||
reg = <0x48002030 0x05cc>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-single,register-width = <16>;
|
||||
pinctrl-single,function-mask = <0x7fff>;
|
||||
pinctrl-single,function-mask = <0x7f1f>;
|
||||
};
|
||||
|
||||
omap3_pmx_wkup: pinmux@0x48002a58 {
|
||||
omap3_pmx_wkup: pinmux@0x48002a00 {
|
||||
compatible = "ti,omap3-padconf", "pinctrl-single";
|
||||
reg = <0x48002a58 0x5c>;
|
||||
reg = <0x48002a00 0x5c>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-single,register-width = <16>;
|
||||
pinctrl-single,function-mask = <0x7fff>;
|
||||
pinctrl-single,function-mask = <0x7f1f>;
|
||||
};
|
||||
|
||||
gpio1: gpio@48310000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x48310000 0x200>;
|
||||
interrupts = <29>;
|
||||
ti,hwmods = "gpio1";
|
||||
ti,gpio-always-on;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@49050000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x49050000 0x200>;
|
||||
interrupts = <30>;
|
||||
ti,hwmods = "gpio2";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@49052000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x49052000 0x200>;
|
||||
interrupts = <31>;
|
||||
ti,hwmods = "gpio3";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@49054000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x49054000 0x200>;
|
||||
interrupts = <32>;
|
||||
ti,hwmods = "gpio4";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio5: gpio@49056000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x49056000 0x200>;
|
||||
interrupts = <33>;
|
||||
ti,hwmods = "gpio5";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio6: gpio@49058000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x49058000 0x200>;
|
||||
interrupts = <34>;
|
||||
ti,hwmods = "gpio6";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
uart1: serial@4806a000 {
|
||||
|
@ -192,6 +223,16 @@ mcspi1: spi@48098000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi1";
|
||||
ti,spi-num-cs = <4>;
|
||||
dmas = <&sdma 35>,
|
||||
<&sdma 36>,
|
||||
<&sdma 37>,
|
||||
<&sdma 38>,
|
||||
<&sdma 39>,
|
||||
<&sdma 40>,
|
||||
<&sdma 41>,
|
||||
<&sdma 42>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1",
|
||||
"tx2", "rx2", "tx3", "rx3";
|
||||
};
|
||||
|
||||
mcspi2: spi@4809a000 {
|
||||
|
@ -200,6 +241,11 @@ mcspi2: spi@4809a000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi2";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 43>,
|
||||
<&sdma 44>,
|
||||
<&sdma 45>,
|
||||
<&sdma 46>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||
};
|
||||
|
||||
mcspi3: spi@480b8000 {
|
||||
|
@ -208,6 +254,11 @@ mcspi3: spi@480b8000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi3";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 15>,
|
||||
<&sdma 16>,
|
||||
<&sdma 23>,
|
||||
<&sdma 24>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||
};
|
||||
|
||||
mcspi4: spi@480ba000 {
|
||||
|
@ -216,22 +267,30 @@ mcspi4: spi@480ba000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi4";
|
||||
ti,spi-num-cs = <1>;
|
||||
dmas = <&sdma 70>, <&sdma 71>;
|
||||
dma-names = "tx0", "rx0";
|
||||
};
|
||||
|
||||
mmc1: mmc@4809c000 {
|
||||
compatible = "ti,omap3-hsmmc";
|
||||
ti,hwmods = "mmc1";
|
||||
ti,dual-volt;
|
||||
dmas = <&sdma 61>, <&sdma 62>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc2: mmc@480b4000 {
|
||||
compatible = "ti,omap3-hsmmc";
|
||||
ti,hwmods = "mmc2";
|
||||
dmas = <&sdma 47>, <&sdma 48>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc3: mmc@480ad000 {
|
||||
compatible = "ti,omap3-hsmmc";
|
||||
ti,hwmods = "mmc3";
|
||||
dmas = <&sdma 77>, <&sdma 78>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
wdt2: wdt@48314000 {
|
||||
|
@ -249,6 +308,9 @@ mcbsp1: mcbsp@48074000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp1";
|
||||
dmas = <&sdma 31>,
|
||||
<&sdma 32>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp2: mcbsp@49022000 {
|
||||
|
@ -263,6 +325,9 @@ mcbsp2: mcbsp@49022000 {
|
|||
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||
ti,buffer-size = <1280>;
|
||||
ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
|
||||
dmas = <&sdma 33>,
|
||||
<&sdma 34>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp3: mcbsp@49024000 {
|
||||
|
@ -277,6 +342,9 @@ mcbsp3: mcbsp@49024000 {
|
|||
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
|
||||
dmas = <&sdma 17>,
|
||||
<&sdma 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp4: mcbsp@49026000 {
|
||||
|
@ -289,6 +357,9 @@ mcbsp4: mcbsp@49026000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp4";
|
||||
dmas = <&sdma 19>,
|
||||
<&sdma 20>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp5: mcbsp@48096000 {
|
||||
|
@ -301,10 +372,13 @@ mcbsp5: mcbsp@48096000 {
|
|||
interrupt-names = "common", "tx", "rx";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp5";
|
||||
dmas = <&sdma 21>,
|
||||
<&sdma 22>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
timer1: timer@48318000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48318000 0x400>;
|
||||
interrupts = <37>;
|
||||
ti,hwmods = "timer1";
|
||||
|
@ -312,28 +386,28 @@ timer1: timer@48318000 {
|
|||
};
|
||||
|
||||
timer2: timer@49032000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x49032000 0x400>;
|
||||
interrupts = <38>;
|
||||
ti,hwmods = "timer2";
|
||||
};
|
||||
|
||||
timer3: timer@49034000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x49034000 0x400>;
|
||||
interrupts = <39>;
|
||||
ti,hwmods = "timer3";
|
||||
};
|
||||
|
||||
timer4: timer@49036000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x49036000 0x400>;
|
||||
interrupts = <40>;
|
||||
ti,hwmods = "timer4";
|
||||
};
|
||||
|
||||
timer5: timer@49038000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x49038000 0x400>;
|
||||
interrupts = <41>;
|
||||
ti,hwmods = "timer5";
|
||||
|
@ -341,7 +415,7 @@ timer5: timer@49038000 {
|
|||
};
|
||||
|
||||
timer6: timer@4903a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x4903a000 0x400>;
|
||||
interrupts = <42>;
|
||||
ti,hwmods = "timer6";
|
||||
|
@ -349,7 +423,7 @@ timer6: timer@4903a000 {
|
|||
};
|
||||
|
||||
timer7: timer@4903c000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x4903c000 0x400>;
|
||||
interrupts = <43>;
|
||||
ti,hwmods = "timer7";
|
||||
|
@ -357,7 +431,7 @@ timer7: timer@4903c000 {
|
|||
};
|
||||
|
||||
timer8: timer@4903e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x4903e000 0x400>;
|
||||
interrupts = <44>;
|
||||
ti,hwmods = "timer8";
|
||||
|
@ -366,7 +440,7 @@ timer8: timer@4903e000 {
|
|||
};
|
||||
|
||||
timer9: timer@49040000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x49040000 0x400>;
|
||||
interrupts = <45>;
|
||||
ti,hwmods = "timer9";
|
||||
|
@ -374,7 +448,7 @@ timer9: timer@49040000 {
|
|||
};
|
||||
|
||||
timer10: timer@48086000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48086000 0x400>;
|
||||
interrupts = <46>;
|
||||
ti,hwmods = "timer10";
|
||||
|
@ -382,7 +456,7 @@ timer10: timer@48086000 {
|
|||
};
|
||||
|
||||
timer11: timer@48088000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48088000 0x400>;
|
||||
interrupts = <47>;
|
||||
ti,hwmods = "timer11";
|
||||
|
@ -390,7 +464,7 @@ timer11: timer@48088000 {
|
|||
};
|
||||
|
||||
timer12: timer@48304000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48304000 0x400>;
|
||||
interrupts = <95>;
|
||||
ti,hwmods = "timer12";
|
||||
|
@ -428,5 +502,27 @@ usbhsehci: ehci@48064800 {
|
|||
};
|
||||
};
|
||||
|
||||
gpmc: gpmc@6e000000 {
|
||||
compatible = "ti,omap3430-gpmc";
|
||||
ti,hwmods = "gpmc";
|
||||
reg = <0x6e000000 0x02d0>;
|
||||
interrupts = <20>;
|
||||
gpmc,num-cs = <8>;
|
||||
gpmc,num-waitpins = <4>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
usb_otg_hs: usb_otg_hs@480ab000 {
|
||||
compatible = "ti,omap3-musb";
|
||||
reg = <0x480ab000 0x1000>;
|
||||
interrupts = <0 92 0x4>, <0 93 0x4>;
|
||||
interrupt-names = "mc", "dma";
|
||||
ti,hwmods = "usb_otg_hs";
|
||||
usb-phy = <&usb2_phy>;
|
||||
multipoint = <1>;
|
||||
num-eps = <16>;
|
||||
ram-bits = <12>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
190
arch/arm/boot/dts/omap3430-sdp.dts
Normal file
190
arch/arm/boot/dts/omap3430-sdp.dts
Normal file
|
@ -0,0 +1,190 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap34xx.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI OMAP3430 SDP";
|
||||
compatible = "ti,omap3430-sdp", "ti,omap3";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <2600000>;
|
||||
|
||||
twl: twl@48 {
|
||||
reg = <0x48>;
|
||||
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "twl4030.dtsi"
|
||||
|
||||
&mmc1 {
|
||||
vmmc-supply = <&vmmc1>;
|
||||
vmmc_aux-supply = <&vsim>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x10000000 0x08000000>,
|
||||
<1 0 0x28000000 0x08000000>,
|
||||
<2 0 0x20000000 0x10000000>;
|
||||
|
||||
nor@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
linux,mtd-name= "intel,pf48f6000m0y1be";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0 0 0x08000000>;
|
||||
bank-width = <2>;
|
||||
|
||||
gpmc,mux-add-data = <2>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <186>;
|
||||
gpmc,cs-wr-off-ns = <186>;
|
||||
gpmc,adv-on-ns = <12>;
|
||||
gpmc,adv-rd-off-ns = <48>;
|
||||
gpmc,adv-wr-off-ns = <48>;
|
||||
gpmc,oe-on-ns = <54>;
|
||||
gpmc,oe-off-ns = <168>;
|
||||
gpmc,we-on-ns = <54>;
|
||||
gpmc,we-off-ns = <168>;
|
||||
gpmc,rd-cycle-ns = <186>;
|
||||
gpmc,wr-cycle-ns = <186>;
|
||||
gpmc,access-ns = <114>;
|
||||
gpmc,page-burst-access-ns = <6>;
|
||||
gpmc,bus-turnaround-ns = <12>;
|
||||
gpmc,cycle2cycle-delay-ns = <18>;
|
||||
gpmc,wr-data-mux-bus-ns = <90>;
|
||||
gpmc,wr-access-ns = <186>;
|
||||
gpmc,cycle2cycle-samecsen;
|
||||
gpmc,cycle2cycle-diffcsen;
|
||||
|
||||
partition@0 {
|
||||
label = "bootloader-nor";
|
||||
reg = <0 0x40000>;
|
||||
};
|
||||
partition@0x40000 {
|
||||
label = "params-nor";
|
||||
reg = <0x40000 0x40000>;
|
||||
};
|
||||
partition@0x80000 {
|
||||
label = "kernel-nor";
|
||||
reg = <0x80000 0x200000>;
|
||||
};
|
||||
partition@0x280000 {
|
||||
label = "filesystem-nor";
|
||||
reg = <0x240000 0x7d80000>;
|
||||
};
|
||||
};
|
||||
|
||||
nand@1,0 {
|
||||
linux,mtd-name= "micron,mt29f1g08abb";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <1 0 0x08000000>;
|
||||
nand-bus-width = <8>;
|
||||
|
||||
ti,nand-ecc-opt = "sw";
|
||||
gpmc,device-nand;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <36>;
|
||||
gpmc,cs-wr-off-ns = <36>;
|
||||
gpmc,adv-on-ns = <6>;
|
||||
gpmc,adv-rd-off-ns = <24>;
|
||||
gpmc,adv-wr-off-ns = <36>;
|
||||
gpmc,oe-on-ns = <6>;
|
||||
gpmc,oe-off-ns = <48>;
|
||||
gpmc,we-on-ns = <6>;
|
||||
gpmc,we-off-ns = <30>;
|
||||
gpmc,rd-cycle-ns = <72>;
|
||||
gpmc,wr-cycle-ns = <72>;
|
||||
gpmc,access-ns = <54>;
|
||||
gpmc,wr-access-ns = <30>;
|
||||
|
||||
partition@0 {
|
||||
label = "xloader-nand";
|
||||
reg = <0 0x80000>;
|
||||
};
|
||||
partition@0x80000 {
|
||||
label = "bootloader-nand";
|
||||
reg = <0x80000 0x140000>;
|
||||
};
|
||||
partition@0x1c0000 {
|
||||
label = "params-nand";
|
||||
reg = <0x1c0000 0xc0000>;
|
||||
};
|
||||
partition@0x280000 {
|
||||
label = "kernel-nand";
|
||||
reg = <0x280000 0x500000>;
|
||||
};
|
||||
partition@0x780000 {
|
||||
label = "filesystem-nand";
|
||||
reg = <0x780000 0x7880000>;
|
||||
};
|
||||
};
|
||||
|
||||
onenand@2,0 {
|
||||
linux,mtd-name= "samsung,kfm2g16q2m-deb8";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <2 0 0x10000000>;
|
||||
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,mux-add-data = <2>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <84>;
|
||||
gpmc,cs-wr-off-ns = <72>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <18>;
|
||||
gpmc,adv-wr-off-ns = <18>;
|
||||
gpmc,oe-on-ns = <30>;
|
||||
gpmc,oe-off-ns = <84>;
|
||||
gpmc,we-on-ns = <0>;
|
||||
gpmc,we-off-ns = <42>;
|
||||
gpmc,rd-cycle-ns = <108>;
|
||||
gpmc,wr-cycle-ns = <96>;
|
||||
gpmc,access-ns = <78>;
|
||||
gpmc,wr-data-mux-bus-ns = <30>;
|
||||
|
||||
partition@0 {
|
||||
label = "xloader-onenand";
|
||||
reg = <0 0x80000>;
|
||||
};
|
||||
partition@0x80000 {
|
||||
label = "bootloader-onenand";
|
||||
reg = <0x80000 0x40000>;
|
||||
};
|
||||
partition@0xc0000 {
|
||||
label = "params-onenand";
|
||||
reg = <0xc0000 0x20000>;
|
||||
};
|
||||
partition@0xe0000 {
|
||||
label = "kernel-onenand";
|
||||
reg = <0xe0000 0x200000>;
|
||||
};
|
||||
partition@0x2e0000 {
|
||||
label = "filesystem-onenand";
|
||||
reg = <0x2e0000 0xfd20000>;
|
||||
};
|
||||
};
|
||||
};
|
28
arch/arm/boot/dts/omap34xx.dtsi
Normal file
28
arch/arm/boot/dts/omap34xx.dtsi
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Device Tree Source for OMAP34xx/OMAP35xx SoC
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/include/ "omap3.dtsi"
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
cpu@0 {
|
||||
/* OMAP343x/OMAP35xx variants OPP1-5 */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
125000 975000
|
||||
250000 1075000
|
||||
500000 1200000
|
||||
550000 1270000
|
||||
600000 1350000
|
||||
>;
|
||||
clock-latency = <300000>; /* From legacy driver */
|
||||
};
|
||||
};
|
||||
};
|
|
@ -15,6 +15,19 @@ aliases {
|
|||
serial3 = &uart4;
|
||||
};
|
||||
|
||||
cpus {
|
||||
/* OMAP3630/OMAP37xx 'standard device' variants OPP50 to OPP130 */
|
||||
cpu@0 {
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
300000 975000
|
||||
600000 1075000
|
||||
800000 1200000
|
||||
>;
|
||||
clock-latency = <300000>; /* From legacy driver */
|
||||
};
|
||||
};
|
||||
|
||||
ocp {
|
||||
uart4: serial@49042000 {
|
||||
compatible = "ti,omap3-uart";
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/include/ "omap4-panda.dts"
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap443x.dtsi"
|
||||
/include/ "omap4-panda-common.dtsi"
|
||||
|
||||
/* Pandaboard Rev A4+ have external pullups on SCL & SDA */
|
||||
&dss_hdmi_pins {
|
||||
|
|
251
arch/arm/boot/dts/omap4-panda-common.dtsi
Normal file
251
arch/arm/boot/dts/omap4-panda-common.dtsi
Normal file
|
@ -0,0 +1,251 @@
|
|||
/*
|
||||
* Copyright (C) 2011-2013 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/include/ "elpida_ecb240abacn.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI OMAP4 PandaBoard";
|
||||
compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>; /* 1 GB */
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
heartbeat {
|
||||
label = "pandaboard::status1";
|
||||
gpios = <&gpio1 7 0>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
mmc {
|
||||
label = "pandaboard::status2";
|
||||
gpios = <&gpio1 8 0>;
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
};
|
||||
|
||||
sound: sound {
|
||||
compatible = "ti,abe-twl6040";
|
||||
ti,model = "PandaBoard";
|
||||
|
||||
ti,mclk-freq = <38400000>;
|
||||
|
||||
ti,mcpdm = <&mcpdm>;
|
||||
|
||||
ti,twl6040 = <&twl6040>;
|
||||
|
||||
/* Audio routing */
|
||||
ti,audio-routing =
|
||||
"Headset Stereophone", "HSOL",
|
||||
"Headset Stereophone", "HSOR",
|
||||
"Ext Spk", "HFL",
|
||||
"Ext Spk", "HFR",
|
||||
"Line Out", "AUXL",
|
||||
"Line Out", "AUXR",
|
||||
"HSMIC", "Headset Mic",
|
||||
"Headset Mic", "Headset Mic Bias",
|
||||
"AFML", "Line In",
|
||||
"AFMR", "Line In";
|
||||
};
|
||||
};
|
||||
|
||||
&omap4_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <
|
||||
&twl6040_pins
|
||||
&mcpdm_pins
|
||||
&mcbsp1_pins
|
||||
&dss_hdmi_pins
|
||||
&tpd12s015_pins
|
||||
>;
|
||||
|
||||
twl6040_pins: pinmux_twl6040_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
|
||||
0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcpdm_pins: pinmux_mcpdm_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
|
||||
0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
|
||||
0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
|
||||
0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
|
||||
0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp1_pins: pinmux_mcbsp1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
|
||||
0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
|
||||
0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
dss_hdmi_pins: pinmux_dss_hdmi_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
|
||||
0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
|
||||
0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
|
||||
>;
|
||||
};
|
||||
|
||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
|
||||
0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
|
||||
0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c1_pins: pinmux_i2c1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c2_pins: pinmux_i2c2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c3_pins: pinmux_i2c3_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c4_pins: pinmux_i2c4_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
twl: twl@48 {
|
||||
reg = <0x48>;
|
||||
/* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
|
||||
interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
|
||||
twl6040: twl@4b {
|
||||
compatible = "ti,twl6040";
|
||||
reg = <0x4b>;
|
||||
/* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
|
||||
interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
|
||||
interrupt-parent = <&gic>;
|
||||
ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
|
||||
|
||||
vio-supply = <&v1v8>;
|
||||
v2v1-supply = <&v2v1>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "twl6030.dtsi"
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c3_pins>;
|
||||
|
||||
clock-frequency = <100000>;
|
||||
|
||||
/*
|
||||
* Display monitor features are burnt in their EEPROM as EDID data.
|
||||
* The EEPROM is connected as I2C slave device.
|
||||
*/
|
||||
eeprom@50 {
|
||||
compatible = "ti,eeprom";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c4_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
vmmc-supply = <&vmmc>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc5 {
|
||||
ti,non-removable;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&emif1 {
|
||||
cs1-used;
|
||||
device-handle = <&elpida_ECB240ABACN>;
|
||||
};
|
||||
|
||||
&emif2 {
|
||||
cs1-used;
|
||||
device-handle = <&elpida_ECB240ABACN>;
|
||||
};
|
||||
|
||||
&mcbsp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dmic {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&twl_usb_comparator {
|
||||
usb-supply = <&vusb>;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <1>;
|
||||
mode = <3>;
|
||||
power = <50>;
|
||||
};
|
|
@ -5,7 +5,10 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
/include/ "omap4-panda.dts"
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap4460.dtsi"
|
||||
/include/ "omap4-panda-common.dtsi"
|
||||
|
||||
/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */
|
||||
&sound {
|
||||
|
|
|
@ -7,202 +7,5 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap4.dtsi"
|
||||
/include/ "elpida_ecb240abacn.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TI OMAP4 PandaBoard";
|
||||
compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>; /* 1 GB */
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
heartbeat {
|
||||
label = "pandaboard::status1";
|
||||
gpios = <&gpio1 7 0>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
mmc {
|
||||
label = "pandaboard::status2";
|
||||
gpios = <&gpio1 8 0>;
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
};
|
||||
|
||||
sound: sound {
|
||||
compatible = "ti,abe-twl6040";
|
||||
ti,model = "PandaBoard";
|
||||
|
||||
ti,mclk-freq = <38400000>;
|
||||
|
||||
ti,mcpdm = <&mcpdm>;
|
||||
|
||||
ti,twl6040 = <&twl6040>;
|
||||
|
||||
/* Audio routing */
|
||||
ti,audio-routing =
|
||||
"Headset Stereophone", "HSOL",
|
||||
"Headset Stereophone", "HSOR",
|
||||
"Ext Spk", "HFL",
|
||||
"Ext Spk", "HFR",
|
||||
"Line Out", "AUXL",
|
||||
"Line Out", "AUXR",
|
||||
"HSMIC", "Headset Mic",
|
||||
"Headset Mic", "Headset Mic Bias",
|
||||
"AFML", "Line In",
|
||||
"AFMR", "Line In";
|
||||
};
|
||||
};
|
||||
|
||||
&omap4_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <
|
||||
&twl6040_pins
|
||||
&mcpdm_pins
|
||||
&mcbsp1_pins
|
||||
&dss_hdmi_pins
|
||||
&tpd12s015_pins
|
||||
>;
|
||||
|
||||
twl6040_pins: pinmux_twl6040_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
|
||||
0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcpdm_pins: pinmux_mcpdm_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
|
||||
0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
|
||||
0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
|
||||
0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
|
||||
0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp1_pins: pinmux_mcbsp1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
|
||||
0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
|
||||
0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
dss_hdmi_pins: pinmux_dss_hdmi_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
|
||||
0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
|
||||
0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
|
||||
>;
|
||||
};
|
||||
|
||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
|
||||
0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
|
||||
0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
|
||||
twl: twl@48 {
|
||||
reg = <0x48>;
|
||||
/* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
|
||||
interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
|
||||
twl6040: twl@4b {
|
||||
compatible = "ti,twl6040";
|
||||
reg = <0x4b>;
|
||||
/* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
|
||||
interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
|
||||
interrupt-parent = <&gic>;
|
||||
ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
|
||||
|
||||
vio-supply = <&v1v8>;
|
||||
v2v1-supply = <&v2v1>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "twl6030.dtsi"
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
clock-frequency = <100000>;
|
||||
|
||||
/*
|
||||
* Display monitor features are burnt in their EEPROM as EDID data.
|
||||
* The EEPROM is connected as I2C slave device.
|
||||
*/
|
||||
eeprom@50 {
|
||||
compatible = "ti,eeprom";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
vmmc-supply = <&vmmc>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc5 {
|
||||
ti,non-removable;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&emif1 {
|
||||
cs1-used;
|
||||
device-handle = <&elpida_ECB240ABACN>;
|
||||
};
|
||||
|
||||
&emif2 {
|
||||
cs1-used;
|
||||
device-handle = <&elpida_ECB240ABACN>;
|
||||
};
|
||||
|
||||
&mcbsp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dmic {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&twl_usb_comparator {
|
||||
usb-supply = <&vusb>;
|
||||
};
|
||||
/include/ "omap443x.dtsi"
|
||||
/include/ "omap4-panda-common.dtsi"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap4.dtsi"
|
||||
/include/ "omap443x.dtsi"
|
||||
/include/ "elpida_ecb240abacn.dtsi"
|
||||
|
||||
/ {
|
||||
|
@ -80,6 +80,32 @@ user3 {
|
|||
};
|
||||
};
|
||||
|
||||
pwmleds {
|
||||
compatible = "pwm-leds";
|
||||
kpad {
|
||||
label = "omap4::keypad";
|
||||
pwms = <&twl_pwm 0 7812500>;
|
||||
max-brightness = <127>;
|
||||
};
|
||||
|
||||
charging {
|
||||
label = "omap4:green:chrg";
|
||||
pwms = <&twl_pwmled 0 7812500>;
|
||||
max-brightness = <255>;
|
||||
};
|
||||
};
|
||||
|
||||
backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&twl_pwm 1 7812500>;
|
||||
brightness-levels = <
|
||||
0 10 20 30 40
|
||||
50 60 70 80 90
|
||||
100 110 120 127
|
||||
>;
|
||||
default-brightness-level = <13>;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "ti,abe-twl6040";
|
||||
ti,model = "SDP4430";
|
||||
|
@ -212,9 +238,40 @@ tpd12s015_pins: pinmux_tpd12s015_pins {
|
|||
0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c1_pins: pinmux_i2c1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c2_pins: pinmux_i2c2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c3_pins: pinmux_i2c3_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c4_pins: pinmux_i2c4_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
twl: twl@48 {
|
||||
|
@ -253,10 +310,16 @@ vibra {
|
|||
/include/ "twl6030.dtsi"
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c3_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
/*
|
||||
|
@ -279,6 +342,9 @@ bh1780@29 {
|
|||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c4_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
/*
|
||||
|
@ -428,3 +494,9 @@ &mcbsp3 {
|
|||
&twl_usb_comparator {
|
||||
usb-supply = <&vusb>;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <1>;
|
||||
mode = <3>;
|
||||
power = <50>;
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "omap4.dtsi"
|
||||
/include/ "omap443x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Variscite OMAP4 SOM";
|
||||
|
|
|
@ -94,6 +94,11 @@ ocp {
|
|||
#size-cells = <1>;
|
||||
ranges;
|
||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
||||
reg = <0x44000000 0x1000>,
|
||||
<0x44800000 0x2000>,
|
||||
<0x45000000 0x1000>;
|
||||
interrupts = <0 9 0x4>,
|
||||
<0 10 0x4>;
|
||||
|
||||
counter32k: counter@4a304000 {
|
||||
compatible = "ti,omap-counter32k";
|
||||
|
@ -118,15 +123,28 @@ omap4_pmx_wkup: pinmux@4a31e040 {
|
|||
pinctrl-single,function-mask = <0x7fff>;
|
||||
};
|
||||
|
||||
sdma: dma-controller@4a056000 {
|
||||
compatible = "ti,omap4430-sdma";
|
||||
reg = <0x4a056000 0x1000>;
|
||||
interrupts = <0 12 0x4>,
|
||||
<0 13 0x4>,
|
||||
<0 14 0x4>,
|
||||
<0 15 0x4>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <32>;
|
||||
#dma-requests = <127>;
|
||||
};
|
||||
|
||||
gpio1: gpio@4a310000 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
reg = <0x4a310000 0x200>;
|
||||
interrupts = <0 29 0x4>;
|
||||
ti,hwmods = "gpio1";
|
||||
ti,gpio-always-on;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@48055000 {
|
||||
|
@ -137,7 +155,7 @@ gpio2: gpio@48055000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@48057000 {
|
||||
|
@ -148,7 +166,7 @@ gpio3: gpio@48057000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@48059000 {
|
||||
|
@ -159,7 +177,7 @@ gpio4: gpio@48059000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio5: gpio@4805b000 {
|
||||
|
@ -170,7 +188,7 @@ gpio5: gpio@4805b000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio6: gpio@4805d000 {
|
||||
|
@ -181,7 +199,18 @@ gpio6: gpio@4805d000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpmc: gpmc@50000000 {
|
||||
compatible = "ti,omap4430-gpmc";
|
||||
reg = <0x50000000 0x1000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <0 20 0x4>;
|
||||
gpmc,num-cs = <8>;
|
||||
gpmc,num-waitpins = <4>;
|
||||
ti,hwmods = "gpmc";
|
||||
};
|
||||
|
||||
uart1: serial@4806a000 {
|
||||
|
@ -260,6 +289,16 @@ mcspi1: spi@48098000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi1";
|
||||
ti,spi-num-cs = <4>;
|
||||
dmas = <&sdma 35>,
|
||||
<&sdma 36>,
|
||||
<&sdma 37>,
|
||||
<&sdma 38>,
|
||||
<&sdma 39>,
|
||||
<&sdma 40>,
|
||||
<&sdma 41>,
|
||||
<&sdma 42>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1",
|
||||
"tx2", "rx2", "tx3", "rx3";
|
||||
};
|
||||
|
||||
mcspi2: spi@4809a000 {
|
||||
|
@ -270,6 +309,11 @@ mcspi2: spi@4809a000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi2";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 43>,
|
||||
<&sdma 44>,
|
||||
<&sdma 45>,
|
||||
<&sdma 46>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||
};
|
||||
|
||||
mcspi3: spi@480b8000 {
|
||||
|
@ -280,6 +324,8 @@ mcspi3: spi@480b8000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi3";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 15>, <&sdma 16>;
|
||||
dma-names = "tx0", "rx0";
|
||||
};
|
||||
|
||||
mcspi4: spi@480ba000 {
|
||||
|
@ -290,6 +336,8 @@ mcspi4: spi@480ba000 {
|
|||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi4";
|
||||
ti,spi-num-cs = <1>;
|
||||
dmas = <&sdma 70>, <&sdma 71>;
|
||||
dma-names = "tx0", "rx0";
|
||||
};
|
||||
|
||||
mmc1: mmc@4809c000 {
|
||||
|
@ -299,6 +347,8 @@ mmc1: mmc@4809c000 {
|
|||
ti,hwmods = "mmc1";
|
||||
ti,dual-volt;
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 61>, <&sdma 62>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc2: mmc@480b4000 {
|
||||
|
@ -307,6 +357,8 @@ mmc2: mmc@480b4000 {
|
|||
interrupts = <0 86 0x4>;
|
||||
ti,hwmods = "mmc2";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 47>, <&sdma 48>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc3: mmc@480ad000 {
|
||||
|
@ -315,6 +367,8 @@ mmc3: mmc@480ad000 {
|
|||
interrupts = <0 94 0x4>;
|
||||
ti,hwmods = "mmc3";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 77>, <&sdma 78>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc4: mmc@480d1000 {
|
||||
|
@ -323,6 +377,8 @@ mmc4: mmc@480d1000 {
|
|||
interrupts = <0 96 0x4>;
|
||||
ti,hwmods = "mmc4";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 57>, <&sdma 58>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc5: mmc@480d5000 {
|
||||
|
@ -331,6 +387,8 @@ mmc5: mmc@480d5000 {
|
|||
interrupts = <0 59 0x4>;
|
||||
ti,hwmods = "mmc5";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 59>, <&sdma 60>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
wdt2: wdt@4a314000 {
|
||||
|
@ -347,6 +405,9 @@ mcpdm: mcpdm@40132000 {
|
|||
reg-names = "mpu", "dma";
|
||||
interrupts = <0 112 0x4>;
|
||||
ti,hwmods = "mcpdm";
|
||||
dmas = <&sdma 65>,
|
||||
<&sdma 66>;
|
||||
dma-names = "up_link", "dn_link";
|
||||
};
|
||||
|
||||
dmic: dmic@4012e000 {
|
||||
|
@ -356,6 +417,8 @@ dmic: dmic@4012e000 {
|
|||
reg-names = "mpu", "dma";
|
||||
interrupts = <0 114 0x4>;
|
||||
ti,hwmods = "dmic";
|
||||
dmas = <&sdma 67>;
|
||||
dma-names = "up_link";
|
||||
};
|
||||
|
||||
mcbsp1: mcbsp@40122000 {
|
||||
|
@ -367,6 +430,9 @@ mcbsp1: mcbsp@40122000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp1";
|
||||
dmas = <&sdma 33>,
|
||||
<&sdma 34>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp2: mcbsp@40124000 {
|
||||
|
@ -378,6 +444,9 @@ mcbsp2: mcbsp@40124000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp2";
|
||||
dmas = <&sdma 17>,
|
||||
<&sdma 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp3: mcbsp@40126000 {
|
||||
|
@ -389,6 +458,9 @@ mcbsp3: mcbsp@40126000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp3";
|
||||
dmas = <&sdma 19>,
|
||||
<&sdma 20>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp4: mcbsp@48096000 {
|
||||
|
@ -399,6 +471,9 @@ mcbsp4: mcbsp@48096000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp4";
|
||||
dmas = <&sdma 31>,
|
||||
<&sdma 32>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
keypad: keypad@4a31c000 {
|
||||
|
@ -438,10 +513,15 @@ ocp2scp@4a0ad000 {
|
|||
#size-cells = <1>;
|
||||
ranges;
|
||||
ti,hwmods = "ocp2scp_usb_phy";
|
||||
usb2_phy: usb2phy@4a0ad080 {
|
||||
compatible = "ti,omap-usb2";
|
||||
reg = <0x4a0ad080 0x58>;
|
||||
ctrl-module = <&omap_control_usb>;
|
||||
};
|
||||
};
|
||||
|
||||
timer1: timer@4a318000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x4a318000 0x80>;
|
||||
interrupts = <0 37 0x4>;
|
||||
ti,hwmods = "timer1";
|
||||
|
@ -449,28 +529,28 @@ timer1: timer@4a318000 {
|
|||
};
|
||||
|
||||
timer2: timer@48032000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48032000 0x80>;
|
||||
interrupts = <0 38 0x4>;
|
||||
ti,hwmods = "timer2";
|
||||
};
|
||||
|
||||
timer3: timer@48034000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x48034000 0x80>;
|
||||
interrupts = <0 39 0x4>;
|
||||
ti,hwmods = "timer3";
|
||||
};
|
||||
|
||||
timer4: timer@48036000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x48036000 0x80>;
|
||||
interrupts = <0 40 0x4>;
|
||||
ti,hwmods = "timer4";
|
||||
};
|
||||
|
||||
timer5: timer@40138000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x40138000 0x80>,
|
||||
<0x49038000 0x80>;
|
||||
interrupts = <0 41 0x4>;
|
||||
|
@ -479,7 +559,7 @@ timer5: timer@40138000 {
|
|||
};
|
||||
|
||||
timer6: timer@4013a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x4013a000 0x80>,
|
||||
<0x4903a000 0x80>;
|
||||
interrupts = <0 42 0x4>;
|
||||
|
@ -488,7 +568,7 @@ timer6: timer@4013a000 {
|
|||
};
|
||||
|
||||
timer7: timer@4013c000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x4013c000 0x80>,
|
||||
<0x4903c000 0x80>;
|
||||
interrupts = <0 43 0x4>;
|
||||
|
@ -497,7 +577,7 @@ timer7: timer@4013c000 {
|
|||
};
|
||||
|
||||
timer8: timer@4013e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x4013e000 0x80>,
|
||||
<0x4903e000 0x80>;
|
||||
interrupts = <0 44 0x4>;
|
||||
|
@ -507,7 +587,7 @@ timer8: timer@4013e000 {
|
|||
};
|
||||
|
||||
timer9: timer@4803e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x4803e000 0x80>;
|
||||
interrupts = <0 45 0x4>;
|
||||
ti,hwmods = "timer9";
|
||||
|
@ -515,7 +595,7 @@ timer9: timer@4803e000 {
|
|||
};
|
||||
|
||||
timer10: timer@48086000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap3430-timer";
|
||||
reg = <0x48086000 0x80>;
|
||||
interrupts = <0 46 0x4>;
|
||||
ti,hwmods = "timer10";
|
||||
|
@ -523,7 +603,7 @@ timer10: timer@48086000 {
|
|||
};
|
||||
|
||||
timer11: timer@48088000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap4430-timer";
|
||||
reg = <0x48088000 0x80>;
|
||||
interrupts = <0 47 0x4>;
|
||||
ti,hwmods = "timer11";
|
||||
|
@ -559,5 +639,26 @@ usbhsehci: ehci@4a064c00 {
|
|||
interrupts = <0 77 0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
omap_control_usb: omap-control-usb@4a002300 {
|
||||
compatible = "ti,omap-control-usb";
|
||||
reg = <0x4a002300 0x4>,
|
||||
<0x4a00233c 0x4>;
|
||||
reg-names = "control_dev_conf", "otghs_control";
|
||||
ti,type = <1>;
|
||||
};
|
||||
|
||||
usb_otg_hs: usb_otg_hs@4a0ab000 {
|
||||
compatible = "ti,omap4-musb";
|
||||
reg = <0x4a0ab000 0x7ff>;
|
||||
interrupts = <0 92 0x4>, <0 93 0x4>;
|
||||
interrupt-names = "mc", "dma";
|
||||
ti,hwmods = "usb_otg_hs";
|
||||
usb-phy = <&usb2_phy>;
|
||||
multipoint = <1>;
|
||||
num-eps = <16>;
|
||||
ram-bits = <12>;
|
||||
ti,has-mailbox;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
27
arch/arm/boot/dts/omap443x.dtsi
Normal file
27
arch/arm/boot/dts/omap443x.dtsi
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Device Tree Source for OMAP443x SoC
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/include/ "omap4.dtsi"
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
cpu@0 {
|
||||
/* OMAP443x variants OPP50-OPPNT */
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
300000 1025000
|
||||
600000 1200000
|
||||
800000 1313000
|
||||
1008000 1375000
|
||||
>;
|
||||
clock-latency = <300000>; /* From legacy driver */
|
||||
};
|
||||
};
|
||||
};
|
32
arch/arm/boot/dts/omap4460.dtsi
Normal file
32
arch/arm/boot/dts/omap4460.dtsi
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Device Tree Source for OMAP4460 SoC
|
||||
*
|
||||
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
/include/ "omap4.dtsi"
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
/* OMAP446x 'standard device' variants OPP50 to OPPTurbo */
|
||||
cpu@0 {
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
350000 975000
|
||||
700000 1075000
|
||||
920000 1200000
|
||||
>;
|
||||
clock-latency = <300000>; /* From legacy driver */
|
||||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a9-pmu";
|
||||
interrupts = <0 54 0x4>,
|
||||
<0 55 0x4>;
|
||||
ti,hwmods = "debugss";
|
||||
};
|
||||
};
|
|
@ -16,7 +16,7 @@ / {
|
|||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x80000000>; /* 2 GB */
|
||||
reg = <0x80000000 0x7F000000>; /* 2032 MB */
|
||||
};
|
||||
|
||||
vmmcsd_fixed: fixedregulator-mmcsd {
|
||||
|
@ -80,6 +80,68 @@ mcbsp2_pins: pinmux_mcbsp2_pins {
|
|||
0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c1_pins: pinmux_i2c1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x1b2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
|
||||
0x1b4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c2_pins: pinmux_i2c2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x178 0x100 /* i2c2_scl INPUTENABLE | MODE0 */
|
||||
0x17a 0x100 /* i2c2_sda INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c3_pins: pinmux_i2c3_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x13a 0x100 /* i2c3_scl INPUTENABLE | MODE0 */
|
||||
0x13c 0x100 /* i2c3_sda INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c4_pins: pinmux_i2c4_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xb8 0x100 /* i2c4_scl INPUTENABLE | MODE0 */
|
||||
0xba 0x100 /* i2c4_sda INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c5_pins: pinmux_i2c5_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x184 0x100 /* i2c5_scl INPUTENABLE | MODE0 */
|
||||
0x186 0x100 /* i2c5_sda INPUTENABLE | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcspi2_pins: pinmux_mcspi2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xbc 0x100 /* MCSPI2_CLK INPUTENABLE | MODE0 */
|
||||
0xbe 0x100 /* MCSPI2_SIMO INPUTENABLE | MODE0 */
|
||||
0xc0 0x118 /* MCSPI2_SOMI PULLUP | INPUTENABLE | MODE0*/
|
||||
0xc2 0x0 /* MCSPI2_CS MODE0*/
|
||||
>;
|
||||
};
|
||||
|
||||
mcspi3_pins: pinmux_mcspi3_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x78 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
|
||||
0x7a 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
|
||||
0x7c 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
|
||||
0x7e 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcspi4_pins: pinmux_mcspi4_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x164 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
|
||||
0x168 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
|
||||
0x16a 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
|
||||
0x16c 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
|
@ -106,7 +168,17 @@ &mmc5 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
/* Pressure Sensor */
|
||||
|
@ -116,7 +188,17 @@ bmp085@77 {
|
|||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c3_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c4_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
/* Temperature Sensor */
|
||||
|
@ -126,6 +208,13 @@ tmp102@48{
|
|||
};
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c5_pins>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
&keypad {
|
||||
keypad,num-rows = <8>;
|
||||
keypad,num-columns = <8>;
|
||||
|
@ -151,3 +240,22 @@ &emif2 {
|
|||
cs1-used;
|
||||
device-handle = <&samsung_K3PE0E000B>;
|
||||
};
|
||||
|
||||
&mcspi1 {
|
||||
|
||||
};
|
||||
|
||||
&mcspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcspi2_pins>;
|
||||
};
|
||||
|
||||
&mcspi3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcspi3_pins>;
|
||||
};
|
||||
|
||||
&mcspi4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcspi4_pins>;
|
||||
};
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
/include/ "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
compatible = "ti,omap5";
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
|
@ -33,24 +36,32 @@ aliases {
|
|||
cpus {
|
||||
cpu@0 {
|
||||
compatible = "arm,cortex-a15";
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
/* 14th PPI IRQ, active low level-sensitive */
|
||||
interrupts = <1 14 0x308>;
|
||||
clock-frequency = <6144000>;
|
||||
};
|
||||
};
|
||||
cpu@1 {
|
||||
compatible = "arm,cortex-a15";
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
/* 14th PPI IRQ, active low level-sensitive */
|
||||
interrupts = <1 14 0x308>;
|
||||
clock-frequency = <6144000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
/* PPI secure/nonsecure IRQ, active low level-sensitive */
|
||||
interrupts = <1 13 0x308>,
|
||||
<1 14 0x308>,
|
||||
<1 11 0x308>,
|
||||
<1 10 0x308>;
|
||||
clock-frequency = <6144000>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@48211000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
reg = <0x48211000 0x1000>,
|
||||
<0x48212000 0x1000>,
|
||||
<0x48214000 0x2000>,
|
||||
<0x48216000 0x2000>;
|
||||
};
|
||||
|
||||
/*
|
||||
* The soc node represents the soc top level view. It is uses for IPs
|
||||
* that are not memory mapped in the MPU view or for the MPU itself.
|
||||
|
@ -76,6 +87,11 @@ ocp {
|
|||
#size-cells = <1>;
|
||||
ranges;
|
||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
||||
reg = <0x44000000 0x2000>,
|
||||
<0x44800000 0x3000>,
|
||||
<0x45000000 0x4000>;
|
||||
interrupts = <0 9 0x4>,
|
||||
<0 10 0x4>;
|
||||
|
||||
counter32k: counter@4ae04000 {
|
||||
compatible = "ti,omap-counter32k";
|
||||
|
@ -100,12 +116,16 @@ omap5_pmx_wkup: pinmux@4ae0c840 {
|
|||
pinctrl-single,function-mask = <0x7fff>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@48211000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
reg = <0x48211000 0x1000>,
|
||||
<0x48212000 0x1000>;
|
||||
sdma: dma-controller@4a056000 {
|
||||
compatible = "ti,omap4430-sdma";
|
||||
reg = <0x4a056000 0x1000>;
|
||||
interrupts = <0 12 0x4>,
|
||||
<0 13 0x4>,
|
||||
<0 14 0x4>,
|
||||
<0 15 0x4>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <32>;
|
||||
#dma-requests = <127>;
|
||||
};
|
||||
|
||||
gpio1: gpio@4ae10000 {
|
||||
|
@ -113,10 +133,11 @@ gpio1: gpio@4ae10000 {
|
|||
reg = <0x4ae10000 0x200>;
|
||||
interrupts = <0 29 0x4>;
|
||||
ti,hwmods = "gpio1";
|
||||
ti,gpio-always-on;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@48055000 {
|
||||
|
@ -127,7 +148,7 @@ gpio2: gpio@48055000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@48057000 {
|
||||
|
@ -138,7 +159,7 @@ gpio3: gpio@48057000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@48059000 {
|
||||
|
@ -149,7 +170,7 @@ gpio4: gpio@48059000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio5: gpio@4805b000 {
|
||||
|
@ -160,7 +181,7 @@ gpio5: gpio@4805b000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio6: gpio@4805d000 {
|
||||
|
@ -171,7 +192,7 @@ gpio6: gpio@4805d000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio7: gpio@48051000 {
|
||||
|
@ -182,7 +203,7 @@ gpio7: gpio@48051000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio8: gpio@48053000 {
|
||||
|
@ -193,7 +214,18 @@ gpio8: gpio@48053000 {
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpmc: gpmc@50000000 {
|
||||
compatible = "ti,omap4430-gpmc";
|
||||
reg = <0x50000000 0x1000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <0 20 0x4>;
|
||||
gpmc,num-cs = <8>;
|
||||
gpmc,num-waitpins = <4>;
|
||||
ti,hwmods = "gpmc";
|
||||
};
|
||||
|
||||
i2c1: i2c@48070000 {
|
||||
|
@ -241,6 +273,65 @@ i2c5: i2c@4807c000 {
|
|||
ti,hwmods = "i2c5";
|
||||
};
|
||||
|
||||
mcspi1: spi@48098000 {
|
||||
compatible = "ti,omap4-mcspi";
|
||||
reg = <0x48098000 0x200>;
|
||||
interrupts = <0 65 0x4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi1";
|
||||
ti,spi-num-cs = <4>;
|
||||
dmas = <&sdma 35>,
|
||||
<&sdma 36>,
|
||||
<&sdma 37>,
|
||||
<&sdma 38>,
|
||||
<&sdma 39>,
|
||||
<&sdma 40>,
|
||||
<&sdma 41>,
|
||||
<&sdma 42>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1",
|
||||
"tx2", "rx2", "tx3", "rx3";
|
||||
};
|
||||
|
||||
mcspi2: spi@4809a000 {
|
||||
compatible = "ti,omap4-mcspi";
|
||||
reg = <0x4809a000 0x200>;
|
||||
interrupts = <0 66 0x4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi2";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 43>,
|
||||
<&sdma 44>,
|
||||
<&sdma 45>,
|
||||
<&sdma 46>;
|
||||
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||
};
|
||||
|
||||
mcspi3: spi@480b8000 {
|
||||
compatible = "ti,omap4-mcspi";
|
||||
reg = <0x480b8000 0x200>;
|
||||
interrupts = <0 91 0x4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi3";
|
||||
ti,spi-num-cs = <2>;
|
||||
dmas = <&sdma 15>, <&sdma 16>;
|
||||
dma-names = "tx0", "rx0";
|
||||
};
|
||||
|
||||
mcspi4: spi@480ba000 {
|
||||
compatible = "ti,omap4-mcspi";
|
||||
reg = <0x480ba000 0x200>;
|
||||
interrupts = <0 48 0x4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "mcspi4";
|
||||
ti,spi-num-cs = <1>;
|
||||
dmas = <&sdma 70>, <&sdma 71>;
|
||||
dma-names = "tx0", "rx0";
|
||||
};
|
||||
|
||||
uart1: serial@4806a000 {
|
||||
compatible = "ti,omap4-uart";
|
||||
reg = <0x4806a000 0x100>;
|
||||
|
@ -296,6 +387,8 @@ mmc1: mmc@4809c000 {
|
|||
ti,hwmods = "mmc1";
|
||||
ti,dual-volt;
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 61>, <&sdma 62>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc2: mmc@480b4000 {
|
||||
|
@ -304,6 +397,8 @@ mmc2: mmc@480b4000 {
|
|||
interrupts = <0 86 0x4>;
|
||||
ti,hwmods = "mmc2";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 47>, <&sdma 48>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc3: mmc@480ad000 {
|
||||
|
@ -312,6 +407,8 @@ mmc3: mmc@480ad000 {
|
|||
interrupts = <0 94 0x4>;
|
||||
ti,hwmods = "mmc3";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 77>, <&sdma 78>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc4: mmc@480d1000 {
|
||||
|
@ -320,6 +417,8 @@ mmc4: mmc@480d1000 {
|
|||
interrupts = <0 96 0x4>;
|
||||
ti,hwmods = "mmc4";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 57>, <&sdma 58>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mmc5: mmc@480d5000 {
|
||||
|
@ -328,10 +427,13 @@ mmc5: mmc@480d5000 {
|
|||
interrupts = <0 59 0x4>;
|
||||
ti,hwmods = "mmc5";
|
||||
ti,needs-special-reset;
|
||||
dmas = <&sdma 59>, <&sdma 60>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
keypad: keypad@4ae1c000 {
|
||||
compatible = "ti,omap4-keypad";
|
||||
reg = <0x4ae1c000 0x400>;
|
||||
ti,hwmods = "kbd";
|
||||
};
|
||||
|
||||
|
@ -342,6 +444,9 @@ mcpdm: mcpdm@40132000 {
|
|||
reg-names = "mpu", "dma";
|
||||
interrupts = <0 112 0x4>;
|
||||
ti,hwmods = "mcpdm";
|
||||
dmas = <&sdma 65>,
|
||||
<&sdma 66>;
|
||||
dma-names = "up_link", "dn_link";
|
||||
};
|
||||
|
||||
dmic: dmic@4012e000 {
|
||||
|
@ -351,6 +456,8 @@ dmic: dmic@4012e000 {
|
|||
reg-names = "mpu", "dma";
|
||||
interrupts = <0 114 0x4>;
|
||||
ti,hwmods = "dmic";
|
||||
dmas = <&sdma 67>;
|
||||
dma-names = "up_link";
|
||||
};
|
||||
|
||||
mcbsp1: mcbsp@40122000 {
|
||||
|
@ -362,6 +469,9 @@ mcbsp1: mcbsp@40122000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp1";
|
||||
dmas = <&sdma 33>,
|
||||
<&sdma 34>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp2: mcbsp@40124000 {
|
||||
|
@ -373,6 +483,9 @@ mcbsp2: mcbsp@40124000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp2";
|
||||
dmas = <&sdma 17>,
|
||||
<&sdma 18>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
mcbsp3: mcbsp@40126000 {
|
||||
|
@ -384,10 +497,13 @@ mcbsp3: mcbsp@40126000 {
|
|||
interrupt-names = "common";
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp3";
|
||||
dmas = <&sdma 19>,
|
||||
<&sdma 20>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
timer1: timer@4ae18000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x4ae18000 0x80>;
|
||||
interrupts = <0 37 0x4>;
|
||||
ti,hwmods = "timer1";
|
||||
|
@ -395,28 +511,28 @@ timer1: timer@4ae18000 {
|
|||
};
|
||||
|
||||
timer2: timer@48032000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x48032000 0x80>;
|
||||
interrupts = <0 38 0x4>;
|
||||
ti,hwmods = "timer2";
|
||||
};
|
||||
|
||||
timer3: timer@48034000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x48034000 0x80>;
|
||||
interrupts = <0 39 0x4>;
|
||||
ti,hwmods = "timer3";
|
||||
};
|
||||
|
||||
timer4: timer@48036000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x48036000 0x80>;
|
||||
interrupts = <0 40 0x4>;
|
||||
ti,hwmods = "timer4";
|
||||
};
|
||||
|
||||
timer5: timer@40138000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x40138000 0x80>,
|
||||
<0x49038000 0x80>;
|
||||
interrupts = <0 41 0x4>;
|
||||
|
@ -425,7 +541,7 @@ timer5: timer@40138000 {
|
|||
};
|
||||
|
||||
timer6: timer@4013a000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x4013a000 0x80>,
|
||||
<0x4903a000 0x80>;
|
||||
interrupts = <0 42 0x4>;
|
||||
|
@ -435,7 +551,7 @@ timer6: timer@4013a000 {
|
|||
};
|
||||
|
||||
timer7: timer@4013c000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x4013c000 0x80>,
|
||||
<0x4903c000 0x80>;
|
||||
interrupts = <0 43 0x4>;
|
||||
|
@ -444,7 +560,7 @@ timer7: timer@4013c000 {
|
|||
};
|
||||
|
||||
timer8: timer@4013e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x4013e000 0x80>,
|
||||
<0x4903e000 0x80>;
|
||||
interrupts = <0 44 0x4>;
|
||||
|
@ -454,27 +570,34 @@ timer8: timer@4013e000 {
|
|||
};
|
||||
|
||||
timer9: timer@4803e000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x4803e000 0x80>;
|
||||
interrupts = <0 45 0x4>;
|
||||
ti,hwmods = "timer9";
|
||||
};
|
||||
|
||||
timer10: timer@48086000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x48086000 0x80>;
|
||||
interrupts = <0 46 0x4>;
|
||||
ti,hwmods = "timer10";
|
||||
};
|
||||
|
||||
timer11: timer@48088000 {
|
||||
compatible = "ti,omap2-timer";
|
||||
compatible = "ti,omap5430-timer";
|
||||
reg = <0x48088000 0x80>;
|
||||
interrupts = <0 47 0x4>;
|
||||
ti,hwmods = "timer11";
|
||||
ti,timer-pwm;
|
||||
};
|
||||
|
||||
wdt2: wdt@4ae14000 {
|
||||
compatible = "ti,omap5-wdt", "ti,omap3-wdt";
|
||||
reg = <0x4ae14000 0x80>;
|
||||
interrupts = <0 80 0x4>;
|
||||
ti,hwmods = "wd_timer2";
|
||||
};
|
||||
|
||||
emif1: emif@0x4c000000 {
|
||||
compatible = "ti,emif-4d5";
|
||||
ti,hwmods = "emif1";
|
||||
|
@ -496,5 +619,53 @@ emif2: emif@0x4d000000 {
|
|||
hw-caps-ll-interface;
|
||||
hw-caps-temp-alert;
|
||||
};
|
||||
|
||||
omap_control_usb: omap-control-usb@4a002300 {
|
||||
compatible = "ti,omap-control-usb";
|
||||
reg = <0x4a002300 0x4>,
|
||||
<0x4a002370 0x4>;
|
||||
reg-names = "control_dev_conf", "phy_power_usb";
|
||||
ti,type = <2>;
|
||||
};
|
||||
|
||||
omap_dwc3@4a020000 {
|
||||
compatible = "ti,dwc3";
|
||||
ti,hwmods = "usb_otg_ss";
|
||||
reg = <0x4a020000 0x1000>;
|
||||
interrupts = <0 93 4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
utmi-mode = <2>;
|
||||
ranges;
|
||||
dwc3@4a030000 {
|
||||
compatible = "synopsys,dwc3";
|
||||
reg = <0x4a030000 0x1000>;
|
||||
interrupts = <0 92 4>;
|
||||
usb-phy = <&usb2_phy>, <&usb3_phy>;
|
||||
tx-fifo-resize;
|
||||
};
|
||||
};
|
||||
|
||||
ocp2scp {
|
||||
compatible = "ti,omap-ocp2scp";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
ti,hwmods = "ocp2scp1";
|
||||
usb2_phy: usb2phy@4a084000 {
|
||||
compatible = "ti,omap-usb2";
|
||||
reg = <0x4a084000 0x7c>;
|
||||
ctrl-module = <&omap_control_usb>;
|
||||
};
|
||||
|
||||
usb3_phy: usb3phy@4a084400 {
|
||||
compatible = "ti,omap-usb3";
|
||||
reg = <0x4a084400 0x80>,
|
||||
<0x4a084800 0x64>,
|
||||
<0x4a084c00 0x40>;
|
||||
reg-names = "phy_rx", "phy_tx", "pll_ctrl";
|
||||
ctrl-module = <&omap_control_usb>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -23,6 +23,12 @@ watchdog {
|
|||
compatible = "ti,twl4030-wdt";
|
||||
};
|
||||
|
||||
vcc: regulator-vdd1 {
|
||||
compatible = "ti,twl4030-vdd1";
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1450000>;
|
||||
};
|
||||
|
||||
vdac: regulator-vdac {
|
||||
compatible = "ti,twl4030-vdac";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
|
@ -67,7 +73,7 @@ twl_gpio: gpio {
|
|||
#interrupt-cells = <1>;
|
||||
};
|
||||
|
||||
twl4030-usb {
|
||||
usb2_phy: twl4030-usb {
|
||||
compatible = "ti,twl4030-usb";
|
||||
interrupts = <10>, <4>;
|
||||
usb1v5-supply = <&vusb1v5>;
|
||||
|
@ -75,4 +81,14 @@ twl4030-usb {
|
|||
usb3v1-supply = <&vusb3v1>;
|
||||
usb_mode = <1>;
|
||||
};
|
||||
|
||||
twl_pwm: pwm {
|
||||
compatible = "ti,twl4030-pwm";
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
|
||||
twl_pwmled: pwmled {
|
||||
compatible = "ti,twl4030-pwmled";
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -91,4 +91,16 @@ twl_usb_comparator: usb-comparator {
|
|||
compatible = "ti,twl6030-usb";
|
||||
interrupts = <4>, <10>;
|
||||
};
|
||||
|
||||
twl_pwm: pwm {
|
||||
/* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
|
||||
compatible = "ti,twl6030-pwm";
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
|
||||
twl_pwmled: pwmled {
|
||||
/* provides one PWM (id 0 for Charging indicator LED) */
|
||||
compatible = "ti,twl6030-pwmled";
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -110,6 +110,7 @@ MACHINE_END
|
|||
|
||||
static const char *omap3_gp_boards_compat[] __initdata = {
|
||||
"ti,omap3-beagle",
|
||||
"timll,omap3-devkit8000",
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
|
|
@ -138,6 +138,8 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
|
||||
#include <asm/system_misc.h>
|
||||
|
||||
|
@ -2345,6 +2347,34 @@ static int _shutdown(struct omap_hwmod *oh)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* of_dev_hwmod_lookup - look up needed hwmod from dt blob
|
||||
* @np: struct device_node *
|
||||
* @oh: struct omap_hwmod *
|
||||
*
|
||||
* Parse the dt blob and find out needed hwmod. Recursive function is
|
||||
* implemented to take care hierarchical dt blob parsing.
|
||||
* Return: The device node on success or NULL on failure.
|
||||
*/
|
||||
static struct device_node *of_dev_hwmod_lookup(struct device_node *np,
|
||||
struct omap_hwmod *oh)
|
||||
{
|
||||
struct device_node *np0 = NULL, *np1 = NULL;
|
||||
const char *p;
|
||||
|
||||
for_each_child_of_node(np, np0) {
|
||||
if (of_find_property(np0, "ti,hwmods", NULL)) {
|
||||
p = of_get_property(np0, "ti,hwmods", NULL);
|
||||
if (!strcmp(p, oh->name))
|
||||
return np0;
|
||||
np1 = of_dev_hwmod_lookup(np0, oh);
|
||||
if (np1)
|
||||
return np1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* _init_mpu_rt_base - populate the virtual address for a hwmod
|
||||
* @oh: struct omap_hwmod * to locate the virtual address
|
||||
|
@ -2357,7 +2387,8 @@ static int _shutdown(struct omap_hwmod *oh)
|
|||
static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
|
||||
{
|
||||
struct omap_hwmod_addr_space *mem;
|
||||
void __iomem *va_start;
|
||||
void __iomem *va_start = NULL;
|
||||
struct device_node *np;
|
||||
|
||||
if (!oh)
|
||||
return;
|
||||
|
@ -2371,10 +2402,18 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
|
|||
if (!mem) {
|
||||
pr_debug("omap_hwmod: %s: no MPU register target found\n",
|
||||
oh->name);
|
||||
return;
|
||||
|
||||
/* Extract the IO space from device tree blob */
|
||||
if (!of_have_populated_dt())
|
||||
return;
|
||||
|
||||
np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
|
||||
if (np)
|
||||
va_start = of_iomap(np, 0);
|
||||
} else {
|
||||
va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
|
||||
}
|
||||
|
||||
va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
|
||||
if (!va_start) {
|
||||
pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
|
||||
return;
|
||||
|
@ -2406,7 +2445,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
|
|||
if (oh->_state != _HWMOD_STATE_REGISTERED)
|
||||
return 0;
|
||||
|
||||
_init_mpu_rt_base(oh, NULL);
|
||||
if (oh->class->sysc)
|
||||
_init_mpu_rt_base(oh, NULL);
|
||||
|
||||
r = _init_clocks(oh, NULL);
|
||||
if (IS_ERR_VALUE(r)) {
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
#include <linux/of.h>
|
||||
|
||||
#include <asm/pmu.h>
|
||||
|
||||
#include "soc.h"
|
||||
|
@ -63,6 +65,15 @@ static int __init omap_init_pmu(void)
|
|||
unsigned oh_num;
|
||||
char **oh_names;
|
||||
|
||||
/* XXX Remove this check when the CTI driver is available */
|
||||
if (cpu_is_omap443x()) {
|
||||
pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (of_have_populated_dt())
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* To create an ARM-PMU device the following HWMODs
|
||||
* are required for the various OMAP2+ devices.
|
||||
|
@ -75,9 +86,6 @@ static int __init omap_init_pmu(void)
|
|||
if (cpu_is_omap443x()) {
|
||||
oh_num = ARRAY_SIZE(omap4430_pmu_oh_names);
|
||||
oh_names = omap4430_pmu_oh_names;
|
||||
/* XXX Remove the next two lines when CTI driver available */
|
||||
pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
|
||||
return 0;
|
||||
} else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
|
||||
oh_num = ARRAY_SIZE(omap3_pmu_oh_names);
|
||||
oh_names = omap3_pmu_oh_names;
|
||||
|
|
|
@ -144,7 +144,12 @@ static struct property device_disabled = {
|
|||
};
|
||||
|
||||
static struct of_device_id omap_timer_match[] __initdata = {
|
||||
{ .compatible = "ti,omap2-timer", },
|
||||
{ .compatible = "ti,omap2420-timer", },
|
||||
{ .compatible = "ti,omap3430-timer", },
|
||||
{ .compatible = "ti,omap4430-timer", },
|
||||
{ .compatible = "ti,omap5430-timer", },
|
||||
{ .compatible = "ti,am335x-timer", },
|
||||
{ .compatible = "ti,am335x-timer-1ms", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
|
|
@ -52,6 +52,13 @@ static u32 omap_reserved_systimers;
|
|||
static LIST_HEAD(omap_timer_list);
|
||||
static DEFINE_SPINLOCK(dm_timer_lock);
|
||||
|
||||
enum {
|
||||
REQUEST_ANY = 0,
|
||||
REQUEST_BY_ID,
|
||||
REQUEST_BY_CAP,
|
||||
REQUEST_BY_NODE,
|
||||
};
|
||||
|
||||
/**
|
||||
* omap_dm_timer_read_reg - read timer registers in posted and non-posted mode
|
||||
* @timer: timer pointer over which read operation to perform
|
||||
|
@ -178,29 +185,82 @@ int omap_dm_timer_reserve_systimer(int id)
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct omap_dm_timer *omap_dm_timer_request(void)
|
||||
static struct omap_dm_timer *_omap_dm_timer_request(int req_type, void *data)
|
||||
{
|
||||
struct omap_dm_timer *timer = NULL, *t;
|
||||
struct device_node *np = NULL;
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
u32 cap = 0;
|
||||
int id = 0;
|
||||
|
||||
switch (req_type) {
|
||||
case REQUEST_BY_ID:
|
||||
id = *(int *)data;
|
||||
break;
|
||||
case REQUEST_BY_CAP:
|
||||
cap = *(u32 *)data;
|
||||
break;
|
||||
case REQUEST_BY_NODE:
|
||||
np = (struct device_node *)data;
|
||||
break;
|
||||
default:
|
||||
/* REQUEST_ANY */
|
||||
break;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&dm_timer_lock, flags);
|
||||
list_for_each_entry(t, &omap_timer_list, node) {
|
||||
if (t->reserved)
|
||||
continue;
|
||||
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
break;
|
||||
switch (req_type) {
|
||||
case REQUEST_BY_ID:
|
||||
if (id == t->pdev->id) {
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
goto found;
|
||||
}
|
||||
break;
|
||||
case REQUEST_BY_CAP:
|
||||
if (cap == (t->capability & cap)) {
|
||||
/*
|
||||
* If timer is not NULL, we have already found
|
||||
* one timer but it was not an exact match
|
||||
* because it had more capabilites that what
|
||||
* was required. Therefore, unreserve the last
|
||||
* timer found and see if this one is a better
|
||||
* match.
|
||||
*/
|
||||
if (timer)
|
||||
timer->reserved = 0;
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
|
||||
/* Exit loop early if we find an exact match */
|
||||
if (t->capability == cap)
|
||||
goto found;
|
||||
}
|
||||
break;
|
||||
case REQUEST_BY_NODE:
|
||||
if (np == t->pdev->dev.of_node) {
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
goto found;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* REQUEST_ANY */
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
goto found;
|
||||
}
|
||||
}
|
||||
found:
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
if (ret) {
|
||||
timer->reserved = 0;
|
||||
timer = NULL;
|
||||
}
|
||||
if (timer && omap_dm_timer_prepare(timer)) {
|
||||
timer->reserved = 0;
|
||||
timer = NULL;
|
||||
}
|
||||
|
||||
if (!timer)
|
||||
|
@ -208,43 +268,23 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
|||
|
||||
return timer;
|
||||
}
|
||||
|
||||
struct omap_dm_timer *omap_dm_timer_request(void)
|
||||
{
|
||||
return _omap_dm_timer_request(REQUEST_ANY, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request);
|
||||
|
||||
struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
||||
{
|
||||
struct omap_dm_timer *timer = NULL, *t;
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
|
||||
/* Requesting timer by ID is not supported when device tree is used */
|
||||
if (of_have_populated_dt()) {
|
||||
pr_warn("%s: Please use omap_dm_timer_request_by_cap()\n",
|
||||
pr_warn("%s: Please use omap_dm_timer_request_by_cap/node()\n",
|
||||
__func__);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&dm_timer_lock, flags);
|
||||
list_for_each_entry(t, &omap_timer_list, node) {
|
||||
if (t->pdev->id == id && !t->reserved) {
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer) {
|
||||
ret = omap_dm_timer_prepare(timer);
|
||||
if (ret) {
|
||||
timer->reserved = 0;
|
||||
timer = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer%d request failed!\n", __func__, id);
|
||||
|
||||
return timer;
|
||||
return _omap_dm_timer_request(REQUEST_BY_ID, &id);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
|
||||
|
||||
|
@ -259,47 +299,26 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
|
|||
*/
|
||||
struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap)
|
||||
{
|
||||
struct omap_dm_timer *timer = NULL, *t;
|
||||
unsigned long flags;
|
||||
|
||||
if (!cap)
|
||||
return NULL;
|
||||
|
||||
spin_lock_irqsave(&dm_timer_lock, flags);
|
||||
list_for_each_entry(t, &omap_timer_list, node) {
|
||||
if ((!t->reserved) && ((t->capability & cap) == cap)) {
|
||||
/*
|
||||
* If timer is not NULL, we have already found one timer
|
||||
* but it was not an exact match because it had more
|
||||
* capabilites that what was required. Therefore,
|
||||
* unreserve the last timer found and see if this one
|
||||
* is a better match.
|
||||
*/
|
||||
if (timer)
|
||||
timer->reserved = 0;
|
||||
|
||||
timer = t;
|
||||
timer->reserved = 1;
|
||||
|
||||
/* Exit loop early if we find an exact match */
|
||||
if (t->capability == cap)
|
||||
break;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
|
||||
if (timer && omap_dm_timer_prepare(timer)) {
|
||||
timer->reserved = 0;
|
||||
timer = NULL;
|
||||
}
|
||||
|
||||
if (!timer)
|
||||
pr_debug("%s: timer request failed!\n", __func__);
|
||||
|
||||
return timer;
|
||||
return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap);
|
||||
|
||||
/**
|
||||
* omap_dm_timer_request_by_node - Request a timer by device-tree node
|
||||
* @np: Pointer to device-tree timer node
|
||||
*
|
||||
* Request a timer based upon a device node pointer. Returns pointer to
|
||||
* timer handle on success and a NULL pointer on failure.
|
||||
*/
|
||||
struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np)
|
||||
{
|
||||
if (!np)
|
||||
return NULL;
|
||||
|
||||
return _omap_dm_timer_request(REQUEST_BY_NODE, np);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node);
|
||||
|
||||
int omap_dm_timer_free(struct omap_dm_timer *timer)
|
||||
{
|
||||
if (unlikely(!timer))
|
||||
|
@ -315,7 +334,21 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_free);
|
|||
|
||||
void omap_dm_timer_enable(struct omap_dm_timer *timer)
|
||||
{
|
||||
int c;
|
||||
|
||||
pm_runtime_get_sync(&timer->pdev->dev);
|
||||
|
||||
if (!(timer->capability & OMAP_TIMER_ALWON)) {
|
||||
if (timer->get_context_loss_count) {
|
||||
c = timer->get_context_loss_count(&timer->pdev->dev);
|
||||
if (c != timer->ctx_loss_count) {
|
||||
omap_timer_restore_context(timer);
|
||||
timer->ctx_loss_count = c;
|
||||
}
|
||||
} else {
|
||||
omap_timer_restore_context(timer);
|
||||
}
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
|
||||
|
||||
|
@ -410,13 +443,6 @@ int omap_dm_timer_start(struct omap_dm_timer *timer)
|
|||
|
||||
omap_dm_timer_enable(timer);
|
||||
|
||||
if (!(timer->capability & OMAP_TIMER_ALWON)) {
|
||||
if (timer->get_context_loss_count &&
|
||||
timer->get_context_loss_count(&timer->pdev->dev) !=
|
||||
timer->ctx_loss_count)
|
||||
omap_timer_restore_context(timer);
|
||||
}
|
||||
|
||||
l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
|
||||
if (!(l & OMAP_TIMER_CTRL_ST)) {
|
||||
l |= OMAP_TIMER_CTRL_ST;
|
||||
|
@ -441,12 +467,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
|
|||
|
||||
__omap_dm_timer_stop(timer, timer->posted, rate);
|
||||
|
||||
if (!(timer->capability & OMAP_TIMER_ALWON)) {
|
||||
if (timer->get_context_loss_count)
|
||||
timer->ctx_loss_count =
|
||||
timer->get_context_loss_count(&timer->pdev->dev);
|
||||
}
|
||||
|
||||
/*
|
||||
* Since the register values are computed and written within
|
||||
* __omap_dm_timer_stop, we need to use read to retrieve the
|
||||
|
@ -553,13 +573,6 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
|
|||
|
||||
omap_dm_timer_enable(timer);
|
||||
|
||||
if (!(timer->capability & OMAP_TIMER_ALWON)) {
|
||||
if (timer->get_context_loss_count &&
|
||||
timer->get_context_loss_count(&timer->pdev->dev) !=
|
||||
timer->ctx_loss_count)
|
||||
omap_timer_restore_context(timer);
|
||||
}
|
||||
|
||||
l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
|
||||
if (autoreload) {
|
||||
l |= OMAP_TIMER_CTRL_AR;
|
||||
|
@ -770,6 +783,8 @@ int omap_dm_timers_active(void)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(omap_dm_timers_active);
|
||||
|
||||
static const struct of_device_id omap_timer_match[];
|
||||
|
||||
/**
|
||||
* omap_dm_timer_probe - probe function called for every registered device
|
||||
* @pdev: pointer to current timer platform device
|
||||
|
@ -783,7 +798,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
|
|||
struct omap_dm_timer *timer;
|
||||
struct resource *mem, *irq;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct dmtimer_platform_data *pdata = pdev->dev.platform_data;
|
||||
const struct of_device_id *match;
|
||||
const struct dmtimer_platform_data *pdata;
|
||||
|
||||
match = of_match_device(of_match_ptr(omap_timer_match), dev);
|
||||
pdata = match ? match->data : dev->platform_data;
|
||||
|
||||
if (!pdata && !dev->of_node) {
|
||||
dev_err(dev, "%s: no platform data.\n", __func__);
|
||||
|
@ -823,12 +842,14 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
|
|||
timer->capability |= OMAP_TIMER_SECURE;
|
||||
} else {
|
||||
timer->id = pdev->id;
|
||||
timer->errata = pdata->timer_errata;
|
||||
timer->capability = pdata->timer_capability;
|
||||
timer->reserved = omap_dm_timer_reserved_systimer(timer->id);
|
||||
timer->get_context_loss_count = pdata->get_context_loss_count;
|
||||
}
|
||||
|
||||
if (pdata)
|
||||
timer->errata = pdata->timer_errata;
|
||||
|
||||
timer->irq = irq->start;
|
||||
timer->pdev = pdev;
|
||||
|
||||
|
@ -881,8 +902,34 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static const struct dmtimer_platform_data omap3plus_pdata = {
|
||||
.timer_errata = OMAP_TIMER_ERRATA_I103_I767,
|
||||
};
|
||||
|
||||
static const struct of_device_id omap_timer_match[] = {
|
||||
{ .compatible = "ti,omap2-timer", },
|
||||
{
|
||||
.compatible = "ti,omap2420-timer",
|
||||
},
|
||||
{
|
||||
.compatible = "ti,omap3430-timer",
|
||||
.data = &omap3plus_pdata,
|
||||
},
|
||||
{
|
||||
.compatible = "ti,omap4430-timer",
|
||||
.data = &omap3plus_pdata,
|
||||
},
|
||||
{
|
||||
.compatible = "ti,omap5430-timer",
|
||||
.data = &omap3plus_pdata,
|
||||
},
|
||||
{
|
||||
.compatible = "ti,am335x-timer",
|
||||
.data = &omap3plus_pdata,
|
||||
},
|
||||
{
|
||||
.compatible = "ti,am335x-timer-1ms",
|
||||
.data = &omap3plus_pdata,
|
||||
},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, omap_timer_match);
|
||||
|
|
|
@ -128,6 +128,7 @@ int omap_dm_timer_reserve_systimer(int id);
|
|||
struct omap_dm_timer *omap_dm_timer_request(void);
|
||||
struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id);
|
||||
struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap);
|
||||
struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np);
|
||||
int omap_dm_timer_free(struct omap_dm_timer *timer);
|
||||
void omap_dm_timer_enable(struct omap_dm_timer *timer);
|
||||
void omap_dm_timer_disable(struct omap_dm_timer *timer);
|
||||
|
|
Loading…
Reference in a new issue