Merge branch 'for_3.10/dts' of git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt into omap-for-v3.10/dt
This commit is contained in:
commit
d05663a23f
70 changed files with 2719 additions and 645 deletions
|
@ -6,6 +6,7 @@ provided by Arteris.
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
|
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
|
||||||
Should be "ti,omap4-l3-noc" for OMAP4 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.
|
- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
|
@ -1,7 +1,20 @@
|
||||||
OMAP Timer bindings
|
OMAP Timer bindings
|
||||||
|
|
||||||
Required properties:
|
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
|
- reg: Contains timer register address range (base address and
|
||||||
length).
|
length).
|
||||||
- interrupts: Contains the interrupt information for the timer. The
|
- interrupts: Contains the interrupt information for the timer. The
|
||||||
|
@ -22,7 +35,7 @@ Optional properties:
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
timer12: timer@48304000 {
|
timer12: timer@48304000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48304000 0x400>;
|
reg = <0x48304000 0x400>;
|
||||||
interrupts = <95>;
|
interrupts = <95>;
|
||||||
ti,hwmods = "timer12"
|
ti,hwmods = "timer12"
|
||||||
|
|
|
@ -5,12 +5,12 @@ Required properties:
|
||||||
- "ti,omap2-gpio" for OMAP2 controllers
|
- "ti,omap2-gpio" for OMAP2 controllers
|
||||||
- "ti,omap3-gpio" for OMAP3 controllers
|
- "ti,omap3-gpio" for OMAP3 controllers
|
||||||
- "ti,omap4-gpio" for OMAP4 controllers
|
- "ti,omap4-gpio" for OMAP4 controllers
|
||||||
|
- gpio-controller : Marks the device node as a GPIO controller.
|
||||||
- #gpio-cells : Should be two.
|
- #gpio-cells : Should be two.
|
||||||
- first cell is the pin number
|
- first cell is the pin number
|
||||||
- second cell is used to specify optional parameters (unused)
|
- 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-cells : Should be 2.
|
||||||
- interrupt-controller: Mark the device node as an interrupt controller
|
|
||||||
The first cell is the GPIO number.
|
The first cell is the GPIO number.
|
||||||
The second cell is used to specify flags:
|
The second cell is used to specify flags:
|
||||||
bits[3:0] trigger type and level flags:
|
bits[3:0] trigger type and level flags:
|
||||||
|
@ -29,8 +29,8 @@ Example:
|
||||||
gpio4: gpio4 {
|
gpio4: gpio4 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
ti,hwmods = "gpio4";
|
ti,hwmods = "gpio4";
|
||||||
#gpio-cells = <2>;
|
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#interrupt-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,6 +18,7 @@ OMAP MUSB GLUE
|
||||||
represents PERIPHERAL.
|
represents PERIPHERAL.
|
||||||
- power : Should be "50". This signifies the controller can supply upto
|
- power : Should be "50". This signifies the controller can supply upto
|
||||||
100mA when operating in host mode.
|
100mA when operating in host mode.
|
||||||
|
- usb-phy : the phandle for the PHY device
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- ctrl-module : phandle of the control module this glue uses to write to
|
- 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
|
imx28-tx28.dtb
|
||||||
dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
|
dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
|
||||||
dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
|
dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
|
||||||
|
omap3430-sdp.dtb \
|
||||||
omap3-beagle.dtb \
|
omap3-beagle.dtb \
|
||||||
|
omap3-devkit8000.dtb \
|
||||||
omap3-beagle-xm.dtb \
|
omap3-beagle-xm.dtb \
|
||||||
omap3-evm.dtb \
|
omap3-evm.dtb \
|
||||||
omap3-tobi.dtb \
|
omap3-tobi.dtb \
|
||||||
|
omap3-igep0020.dtb \
|
||||||
|
omap3-igep0030.dtb \
|
||||||
omap4-panda.dtb \
|
omap4-panda.dtb \
|
||||||
omap4-panda-a4.dtb \
|
omap4-panda-a4.dtb \
|
||||||
omap4-panda-es.dtb \
|
omap4-panda-es.dtb \
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@44e0b000 {
|
i2c0: i2c@44e0b000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
@ -59,27 +59,27 @@
|
||||||
|
|
||||||
led@2 {
|
led@2 {
|
||||||
label = "beaglebone:green:heartbeat";
|
label = "beaglebone:green:heartbeat";
|
||||||
gpios = <&gpio2 21 0>;
|
gpios = <&gpio1 21 0>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@3 {
|
led@3 {
|
||||||
label = "beaglebone:green:mmc0";
|
label = "beaglebone:green:mmc0";
|
||||||
gpios = <&gpio2 22 0>;
|
gpios = <&gpio1 22 0>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@4 {
|
led@4 {
|
||||||
label = "beaglebone:green:usr2";
|
label = "beaglebone:green:usr2";
|
||||||
gpios = <&gpio2 23 0>;
|
gpios = <&gpio1 23 0>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@5 {
|
led@5 {
|
||||||
label = "beaglebone:green:usr3";
|
label = "beaglebone:green:usr3";
|
||||||
gpios = <&gpio2 24 0>;
|
gpios = <&gpio1 24 0>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@44e0b000 {
|
i2c0: i2c@44e0b000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c2: i2c@4802a000 {
|
i2c1: i2c@4802a000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
clock-frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
|
@ -123,12 +123,12 @@
|
||||||
debounce-delay-ms = <5>;
|
debounce-delay-ms = <5>;
|
||||||
col-scan-delay-us = <2>;
|
col-scan-delay-us = <2>;
|
||||||
|
|
||||||
row-gpios = <&gpio2 25 0 /* Bank1, pin25 */
|
row-gpios = <&gpio1 25 0 /* Bank1, pin25 */
|
||||||
&gpio2 26 0 /* Bank1, pin26 */
|
&gpio1 26 0 /* Bank1, pin26 */
|
||||||
&gpio2 27 0>; /* Bank1, pin27 */
|
&gpio1 27 0>; /* Bank1, pin27 */
|
||||||
|
|
||||||
col-gpios = <&gpio2 21 0 /* Bank1, pin21 */
|
col-gpios = <&gpio1 21 0 /* Bank1, pin21 */
|
||||||
&gpio2 22 0>; /* Bank1, pin22 */
|
&gpio1 22 0>; /* Bank1, pin22 */
|
||||||
|
|
||||||
linux,keymap = <0x0000008b /* MENU */
|
linux,keymap = <0x0000008b /* MENU */
|
||||||
0x0100009e /* BACK */
|
0x0100009e /* BACK */
|
||||||
|
@ -147,14 +147,14 @@
|
||||||
switch@9 {
|
switch@9 {
|
||||||
label = "volume-up";
|
label = "volume-up";
|
||||||
linux,code = <115>;
|
linux,code = <115>;
|
||||||
gpios = <&gpio1 2 1>;
|
gpios = <&gpio0 2 1>;
|
||||||
gpio-key,wakeup;
|
gpio-key,wakeup;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch@10 {
|
switch@10 {
|
||||||
label = "volume-down";
|
label = "volume-down";
|
||||||
linux,code = <114>;
|
linux,code = <114>;
|
||||||
gpios = <&gpio1 3 1>;
|
gpios = <&gpio0 3 1>;
|
||||||
gpio-key,wakeup;
|
gpio-key,wakeup;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@44e0b000 {
|
i2c0: i2c@44e0b000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
@ -115,26 +115,26 @@
|
||||||
|
|
||||||
led@1 {
|
led@1 {
|
||||||
label = "evmsk:green:usr0";
|
label = "evmsk:green:usr0";
|
||||||
gpios = <&gpio2 4 0>;
|
gpios = <&gpio1 4 0>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@2 {
|
led@2 {
|
||||||
label = "evmsk:green:usr1";
|
label = "evmsk:green:usr1";
|
||||||
gpios = <&gpio2 5 0>;
|
gpios = <&gpio1 5 0>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@3 {
|
led@3 {
|
||||||
label = "evmsk:green:mmc0";
|
label = "evmsk:green:mmc0";
|
||||||
gpios = <&gpio2 6 0>;
|
gpios = <&gpio1 6 0>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@4 {
|
led@4 {
|
||||||
label = "evmsk:green:heartbeat";
|
label = "evmsk:green:heartbeat";
|
||||||
gpios = <&gpio2 7 0>;
|
gpios = <&gpio1 7 0>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
@ -148,26 +148,26 @@
|
||||||
switch@1 {
|
switch@1 {
|
||||||
label = "button0";
|
label = "button0";
|
||||||
linux,code = <0x100>;
|
linux,code = <0x100>;
|
||||||
gpios = <&gpio3 3 0>;
|
gpios = <&gpio2 3 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch@2 {
|
switch@2 {
|
||||||
label = "button1";
|
label = "button1";
|
||||||
linux,code = <0x101>;
|
linux,code = <0x101>;
|
||||||
gpios = <&gpio3 2 0>;
|
gpios = <&gpio2 2 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch@3 {
|
switch@3 {
|
||||||
label = "button2";
|
label = "button2";
|
||||||
linux,code = <0x102>;
|
linux,code = <0x102>;
|
||||||
gpios = <&gpio1 30 0>;
|
gpios = <&gpio0 30 0>;
|
||||||
gpio-key,wakeup;
|
gpio-key,wakeup;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch@4 {
|
switch@4 {
|
||||||
label = "button3";
|
label = "button3";
|
||||||
linux,code = <0x103>;
|
linux,code = <0x103>;
|
||||||
gpios = <&gpio3 5 0>;
|
gpios = <&gpio2 5 0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
serial3 = &uart4;
|
serial3 = &uart4;
|
||||||
serial4 = &uart5;
|
serial4 = &uart5;
|
||||||
serial5 = &uart6;
|
serial5 = &uart6;
|
||||||
|
d_can0 = &dcan0;
|
||||||
|
d_can1 = &dcan1;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus {
|
cpus {
|
||||||
|
@ -87,7 +89,7 @@
|
||||||
reg = <0x48200000 0x1000>;
|
reg = <0x48200000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio1: gpio@44e07000 {
|
gpio0: gpio@44e07000 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
ti,hwmods = "gpio1";
|
ti,hwmods = "gpio1";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
@ -98,7 +100,7 @@
|
||||||
interrupts = <96>;
|
interrupts = <96>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio2: gpio@4804c000 {
|
gpio1: gpio@4804c000 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
ti,hwmods = "gpio2";
|
ti,hwmods = "gpio2";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
@ -109,7 +111,7 @@
|
||||||
interrupts = <98>;
|
interrupts = <98>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio3: gpio@481ac000 {
|
gpio2: gpio@481ac000 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
ti,hwmods = "gpio3";
|
ti,hwmods = "gpio3";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
@ -120,7 +122,7 @@
|
||||||
interrupts = <32>;
|
interrupts = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@481ae000 {
|
gpio3: gpio@481ae000 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
ti,hwmods = "gpio4";
|
ti,hwmods = "gpio4";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
@ -185,7 +187,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@44e0b000 {
|
i2c0: i2c@44e0b000 {
|
||||||
compatible = "ti,omap4-i2c";
|
compatible = "ti,omap4-i2c";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -195,7 +197,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c2: i2c@4802a000 {
|
i2c1: i2c@4802a000 {
|
||||||
compatible = "ti,omap4-i2c";
|
compatible = "ti,omap4-i2c";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -205,7 +207,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c3: i2c@4819c000 {
|
i2c2: i2c@4819c000 {
|
||||||
compatible = "ti,omap4-i2c";
|
compatible = "ti,omap4-i2c";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -225,7 +227,8 @@
|
||||||
dcan0: d_can@481cc000 {
|
dcan0: d_can@481cc000 {
|
||||||
compatible = "bosch,d_can";
|
compatible = "bosch,d_can";
|
||||||
ti,hwmods = "d_can0";
|
ti,hwmods = "d_can0";
|
||||||
reg = <0x481cc000 0x2000>;
|
reg = <0x481cc000 0x2000
|
||||||
|
0x44e10644 0x4>;
|
||||||
interrupts = <52>;
|
interrupts = <52>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -233,13 +236,14 @@
|
||||||
dcan1: d_can@481d0000 {
|
dcan1: d_can@481d0000 {
|
||||||
compatible = "bosch,d_can";
|
compatible = "bosch,d_can";
|
||||||
ti,hwmods = "d_can1";
|
ti,hwmods = "d_can1";
|
||||||
reg = <0x481d0000 0x2000>;
|
reg = <0x481d0000 0x2000
|
||||||
|
0x44e10644 0x4>;
|
||||||
interrupts = <55>;
|
interrupts = <55>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@44e31000 {
|
timer1: timer@44e31000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer-1ms";
|
||||||
reg = <0x44e31000 0x400>;
|
reg = <0x44e31000 0x400>;
|
||||||
interrupts = <67>;
|
interrupts = <67>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
@ -247,21 +251,21 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer2: timer@48040000 {
|
timer2: timer@48040000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x48040000 0x400>;
|
reg = <0x48040000 0x400>;
|
||||||
interrupts = <68>;
|
interrupts = <68>;
|
||||||
ti,hwmods = "timer2";
|
ti,hwmods = "timer2";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@48042000 {
|
timer3: timer@48042000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x48042000 0x400>;
|
reg = <0x48042000 0x400>;
|
||||||
interrupts = <69>;
|
interrupts = <69>;
|
||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer4: timer@48044000 {
|
timer4: timer@48044000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x48044000 0x400>;
|
reg = <0x48044000 0x400>;
|
||||||
interrupts = <92>;
|
interrupts = <92>;
|
||||||
ti,hwmods = "timer4";
|
ti,hwmods = "timer4";
|
||||||
|
@ -269,7 +273,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer5: timer@48046000 {
|
timer5: timer@48046000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x48046000 0x400>;
|
reg = <0x48046000 0x400>;
|
||||||
interrupts = <93>;
|
interrupts = <93>;
|
||||||
ti,hwmods = "timer5";
|
ti,hwmods = "timer5";
|
||||||
|
@ -277,7 +281,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@48048000 {
|
timer6: timer@48048000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x48048000 0x400>;
|
reg = <0x48048000 0x400>;
|
||||||
interrupts = <94>;
|
interrupts = <94>;
|
||||||
ti,hwmods = "timer6";
|
ti,hwmods = "timer6";
|
||||||
|
@ -285,7 +289,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer7: timer@4804a000 {
|
timer7: timer@4804a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,am335x-timer";
|
||||||
reg = <0x4804a000 0x400>;
|
reg = <0x4804a000 0x400>;
|
||||||
interrupts = <95>;
|
interrupts = <95>;
|
||||||
ti,hwmods = "timer7";
|
ti,hwmods = "timer7";
|
||||||
|
@ -305,7 +309,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0x48030000 0x400>;
|
reg = <0x48030000 0x400>;
|
||||||
interrupt = <65>;
|
interrupts = <65>;
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
ti,hwmods = "spi0";
|
ti,hwmods = "spi0";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -316,7 +320,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0x481a0000 0x400>;
|
reg = <0x481a0000 0x400>;
|
||||||
interrupt = <125>;
|
interrupts = <125>;
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
ti,hwmods = "spi1";
|
ti,hwmods = "spi1";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap3.dtsi"
|
/include/ "omap34xx.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "TI AM3517 EVM (AM3517/05)";
|
model = "TI AM3517 EVM (AM3517/05)";
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap3.dtsi"
|
/include/ "omap34xx.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "TeeJet Mt.Ventoux";
|
model = "TeeJet Mt.Ventoux";
|
||||||
|
|
|
@ -26,6 +26,11 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pmu {
|
||||||
|
compatible = "arm,arm1136-pmu";
|
||||||
|
interrupts = <3>;
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
compatible = "ti,omap-infra";
|
compatible = "ti,omap-infra";
|
||||||
mpu {
|
mpu {
|
||||||
|
@ -49,6 +54,18 @@
|
||||||
reg = <0x480FE000 0x1000>;
|
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 {
|
uart1: serial@4806a000 {
|
||||||
compatible = "ti,omap2-uart";
|
compatible = "ti,omap2-uart";
|
||||||
ti,hwmods = "uart1";
|
ti,hwmods = "uart1";
|
||||||
|
@ -68,28 +85,28 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer2: timer@4802a000 {
|
timer2: timer@4802a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x4802a000 0x400>;
|
reg = <0x4802a000 0x400>;
|
||||||
interrupts = <38>;
|
interrupts = <38>;
|
||||||
ti,hwmods = "timer2";
|
ti,hwmods = "timer2";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@48078000 {
|
timer3: timer@48078000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48078000 0x400>;
|
reg = <0x48078000 0x400>;
|
||||||
interrupts = <39>;
|
interrupts = <39>;
|
||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer4: timer@4807a000 {
|
timer4: timer@4807a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x4807a000 0x400>;
|
reg = <0x4807a000 0x400>;
|
||||||
interrupts = <40>;
|
interrupts = <40>;
|
||||||
ti,hwmods = "timer4";
|
ti,hwmods = "timer4";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer5: timer@4807c000 {
|
timer5: timer@4807c000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x4807c000 0x400>;
|
reg = <0x4807c000 0x400>;
|
||||||
interrupts = <41>;
|
interrupts = <41>;
|
||||||
ti,hwmods = "timer5";
|
ti,hwmods = "timer5";
|
||||||
|
@ -97,7 +114,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@4807e000 {
|
timer6: timer@4807e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x4807e000 0x400>;
|
reg = <0x4807e000 0x400>;
|
||||||
interrupts = <42>;
|
interrupts = <42>;
|
||||||
ti,hwmods = "timer6";
|
ti,hwmods = "timer6";
|
||||||
|
@ -105,7 +122,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer7: timer@48080000 {
|
timer7: timer@48080000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48080000 0x400>;
|
reg = <0x48080000 0x400>;
|
||||||
interrupts = <43>;
|
interrupts = <43>;
|
||||||
ti,hwmods = "timer7";
|
ti,hwmods = "timer7";
|
||||||
|
@ -113,7 +130,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer8: timer@48082000 {
|
timer8: timer@48082000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48082000 0x400>;
|
reg = <0x48082000 0x400>;
|
||||||
interrupts = <44>;
|
interrupts = <44>;
|
||||||
ti,hwmods = "timer8";
|
ti,hwmods = "timer8";
|
||||||
|
@ -121,7 +138,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer9: timer@48084000 {
|
timer9: timer@48084000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48084000 0x400>;
|
reg = <0x48084000 0x400>;
|
||||||
interrupts = <45>;
|
interrupts = <45>;
|
||||||
ti,hwmods = "timer9";
|
ti,hwmods = "timer9";
|
||||||
|
@ -129,7 +146,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer10: timer@48086000 {
|
timer10: timer@48086000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48086000 0x400>;
|
reg = <0x48086000 0x400>;
|
||||||
interrupts = <46>;
|
interrupts = <46>;
|
||||||
ti,hwmods = "timer10";
|
ti,hwmods = "timer10";
|
||||||
|
@ -137,7 +154,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer11: timer@48088000 {
|
timer11: timer@48088000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48088000 0x400>;
|
reg = <0x48088000 0x400>;
|
||||||
interrupts = <47>;
|
interrupts = <47>;
|
||||||
ti,hwmods = "timer11";
|
ti,hwmods = "timer11";
|
||||||
|
@ -145,7 +162,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer12: timer@4808a000 {
|
timer12: timer@4808a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x4808a000 0x400>;
|
reg = <0x4808a000 0x400>;
|
||||||
interrupts = <48>;
|
interrupts = <48>;
|
||||||
ti,hwmods = "timer12";
|
ti,hwmods = "timer12";
|
||||||
|
|
|
@ -18,3 +18,49 @@
|
||||||
reg = <0x80000000 0x4000000>; /* 64 MB */
|
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 @@
|
||||||
pinctrl-single,function-mask = <0x3f>;
|
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 {
|
mcbsp1: mcbsp@48074000 {
|
||||||
compatible = "ti,omap2420-mcbsp";
|
compatible = "ti,omap2420-mcbsp";
|
||||||
reg = <0x48074000 0xff>;
|
reg = <0x48074000 0xff>;
|
||||||
|
@ -37,6 +96,9 @@
|
||||||
<60>; /* RX interrupt */
|
<60>; /* RX interrupt */
|
||||||
interrupt-names = "tx", "rx";
|
interrupt-names = "tx", "rx";
|
||||||
ti,hwmods = "mcbsp1";
|
ti,hwmods = "mcbsp1";
|
||||||
|
dmas = <&sdma 31>,
|
||||||
|
<&sdma 32>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp2: mcbsp@48076000 {
|
mcbsp2: mcbsp@48076000 {
|
||||||
|
@ -47,10 +109,13 @@
|
||||||
<63>; /* RX interrupt */
|
<63>; /* RX interrupt */
|
||||||
interrupt-names = "tx", "rx";
|
interrupt-names = "tx", "rx";
|
||||||
ti,hwmods = "mcbsp2";
|
ti,hwmods = "mcbsp2";
|
||||||
|
dmas = <&sdma 33>,
|
||||||
|
<&sdma 34>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@48028000 {
|
timer1: timer@48028000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x48028000 0x400>;
|
reg = <0x48028000 0x400>;
|
||||||
interrupts = <37>;
|
interrupts = <37>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
|
|
@ -29,6 +29,76 @@
|
||||||
pinctrl-single,function-mask = <0x3f>;
|
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 {
|
mcbsp1: mcbsp@48074000 {
|
||||||
compatible = "ti,omap2430-mcbsp";
|
compatible = "ti,omap2430-mcbsp";
|
||||||
reg = <0x48074000 0xff>;
|
reg = <0x48074000 0xff>;
|
||||||
|
@ -40,6 +110,9 @@
|
||||||
interrupt-names = "common", "tx", "rx", "rx_overflow";
|
interrupt-names = "common", "tx", "rx", "rx_overflow";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp1";
|
ti,hwmods = "mcbsp1";
|
||||||
|
dmas = <&sdma 31>,
|
||||||
|
<&sdma 32>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp2: mcbsp@48076000 {
|
mcbsp2: mcbsp@48076000 {
|
||||||
|
@ -52,6 +125,9 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp2";
|
ti,hwmods = "mcbsp2";
|
||||||
|
dmas = <&sdma 33>,
|
||||||
|
<&sdma 34>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp3: mcbsp@4808c000 {
|
mcbsp3: mcbsp@4808c000 {
|
||||||
|
@ -64,6 +140,9 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp3";
|
ti,hwmods = "mcbsp3";
|
||||||
|
dmas = <&sdma 17>,
|
||||||
|
<&sdma 18>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp4: mcbsp@4808e000 {
|
mcbsp4: mcbsp@4808e000 {
|
||||||
|
@ -76,6 +155,9 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp4";
|
ti,hwmods = "mcbsp4";
|
||||||
|
dmas = <&sdma 19>,
|
||||||
|
<&sdma 20>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp5: mcbsp@48096000 {
|
mcbsp5: mcbsp@48096000 {
|
||||||
|
@ -88,10 +170,13 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp5";
|
ti,hwmods = "mcbsp5";
|
||||||
|
dmas = <&sdma 21>,
|
||||||
|
<&sdma 22>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@49018000 {
|
timer1: timer@49018000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap2420-timer";
|
||||||
reg = <0x49018000 0x400>;
|
reg = <0x49018000 0x400>;
|
||||||
interrupts = <37>;
|
interrupts = <37>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
|
|
@ -13,6 +13,12 @@
|
||||||
model = "TI OMAP3 BeagleBoard xM";
|
model = "TI OMAP3 BeagleBoard xM";
|
||||||
compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3";
|
compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
cpu0-supply = <&vcc>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x20000000>; /* 512 MB */
|
reg = <0x80000000 0x20000000>; /* 512 MB */
|
||||||
|
@ -20,10 +26,6 @@
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pmu_stat {
|
|
||||||
label = "beagleboard::pmu_stat";
|
|
||||||
gpios = <&twl_gpio 19 0>; /* LEDB */
|
|
||||||
};
|
|
||||||
|
|
||||||
heartbeat {
|
heartbeat {
|
||||||
label = "beagleboard::usr0";
|
label = "beagleboard::usr0";
|
||||||
|
@ -38,6 +40,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pwmleds {
|
||||||
|
compatible = "pwm-leds";
|
||||||
|
|
||||||
|
pmu_stat {
|
||||||
|
label = "beagleboard::pmu_stat";
|
||||||
|
pwms = <&twl_pwmled 1 7812500>;
|
||||||
|
max-brightness = <127>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
compatible = "ti,omap-twl4030";
|
compatible = "ti,omap-twl4030";
|
||||||
ti,model = "omap3beagle";
|
ti,model = "omap3beagle";
|
||||||
|
@ -107,3 +119,9 @@
|
||||||
*/
|
*/
|
||||||
ti,pulldowns = <0x03a1c4>;
|
ti,pulldowns = <0x03a1c4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usb_otg_hs {
|
||||||
|
interface-type = <0>;
|
||||||
|
mode = <3>;
|
||||||
|
power = <50>;
|
||||||
|
};
|
||||||
|
|
|
@ -7,12 +7,18 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap3.dtsi"
|
/include/ "omap34xx.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "TI OMAP3 BeagleBoard";
|
model = "TI OMAP3 BeagleBoard";
|
||||||
compatible = "ti,omap3-beagle", "ti,omap3";
|
compatible = "ti,omap3-beagle", "ti,omap3";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
cpu0-supply = <&vcc>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||||
|
@ -38,6 +44,57 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* HS USB Port 2 RESET */
|
||||||
|
hsusb2_reset: hsusb2_reset_reg {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "hsusb2_reset";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
gpio = <&gpio5 19 0>; /* gpio_147 */
|
||||||
|
startup-delay-us = <70000>;
|
||||||
|
enable-active-high;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* HS USB Port 2 Power */
|
||||||
|
hsusb2_power: hsusb2_power_reg {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "hsusb2_vbus";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
gpio = <&twl_gpio 18 0>; /* GPIO LEDA */
|
||||||
|
startup-delay-us = <70000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* HS USB Host PHY on PORT 2 */
|
||||||
|
hsusb2_phy: hsusb2_phy {
|
||||||
|
compatible = "usb-nop-xceiv";
|
||||||
|
reset-supply = <&hsusb2_reset>;
|
||||||
|
vcc-supply = <&hsusb2_power>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&omap3_pmx_core {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <
|
||||||
|
&hsusbb2_pins
|
||||||
|
>;
|
||||||
|
|
||||||
|
hsusbb2_pins: pinmux_hsusbb2_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
0x5c0 0x3 /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_clk OUTPUT */
|
||||||
|
0x5c2 0x3 /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_stp OUTPUT */
|
||||||
|
0x5c4 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dir INPUT | PULLDOWN */
|
||||||
|
0x5c6 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_nxt INPUT | PULLDOWN */
|
||||||
|
0x5c8 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat0 INPUT | PULLDOWN */
|
||||||
|
0x5cA 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat1 INPUT | PULLDOWN */
|
||||||
|
0x1a4 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat2 INPUT | PULLDOWN */
|
||||||
|
0x1a6 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat3 INPUT | PULLDOWN */
|
||||||
|
0x1a8 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat4 INPUT | PULLDOWN */
|
||||||
|
0x1aa 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat5 INPUT | PULLDOWN */
|
||||||
|
0x1ac 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat6 INPUT | PULLDOWN */
|
||||||
|
0x1ae 0x10b /* USBB2_ULPITLL_CLK_MUXMODE.usbb1_ulpiphy_dat7 INPUT | PULLDOWN */
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
|
@ -65,3 +122,23 @@
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usbhshost {
|
||||||
|
port2-mode = "ehci-phy";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbhsehci {
|
||||||
|
phys = <0 &hsusb2_phy>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&twl_gpio {
|
||||||
|
ti,use-leds;
|
||||||
|
/* pullups: BIT(1) */
|
||||||
|
ti,pullups = <0x000002>;
|
||||||
|
/*
|
||||||
|
* pulldowns:
|
||||||
|
* BIT(2), BIT(6), BIT(7), BIT(8), BIT(13)
|
||||||
|
* BIT(15), BIT(16), BIT(17)
|
||||||
|
*/
|
||||||
|
ti,pulldowns = <0x03a1c4>;
|
||||||
|
};
|
||||||
|
|
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/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap3.dtsi"
|
/include/ "omap34xx.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
|
model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
|
||||||
compatible = "ti,omap3-evm", "ti,omap3";
|
compatible = "ti,omap3-evm", "ti,omap3";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
cpu0-supply = <&vcc>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x10000000>; /* 256 MB */
|
reg = <0x80000000 0x10000000>; /* 256 MB */
|
||||||
|
@ -59,3 +65,9 @@
|
||||||
&twl_gpio {
|
&twl_gpio {
|
||||||
ti,use-leds;
|
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/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap3.dtsi"
|
/include/ "omap34xx.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
leds {
|
pwmleds {
|
||||||
compatible = "gpio-leds";
|
compatible = "pwm-leds";
|
||||||
|
|
||||||
overo {
|
overo {
|
||||||
label = "overo:blue:COM";
|
label = "overo:blue:COM";
|
||||||
gpios = <&twl_gpio 19 0>;
|
pwms = <&twl_pwmled 1 7812500>;
|
||||||
linux,default-trigger = "mmc0";
|
max-brightness = <127>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sound {
|
||||||
|
compatible = "ti,omap-twl4030";
|
||||||
|
ti,model = "overo";
|
||||||
|
|
||||||
|
ti,mcbsp = <&mcbsp2>;
|
||||||
|
ti,codec = <&twl_audio>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
|
@ -31,6 +40,12 @@
|
||||||
reg = <0x48>;
|
reg = <0x48>;
|
||||||
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
|
|
||||||
|
twl_audio: audio {
|
||||||
|
compatible = "ti,twl4030-audio";
|
||||||
|
codec {
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,3 +70,9 @@
|
||||||
&twl_gpio {
|
&twl_gpio {
|
||||||
ti,use-leds;
|
ti,use-leds;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usb_otg_hs {
|
||||||
|
interface-type = <0>;
|
||||||
|
mode = <3>;
|
||||||
|
power = <50>;
|
||||||
|
};
|
||||||
|
|
|
@ -26,6 +26,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 uses for IPs
|
||||||
* that are not memory mapped in the MPU view or for the MPU itself.
|
* that are not memory mapped in the MPU view or for the MPU itself.
|
||||||
|
@ -75,6 +81,18 @@
|
||||||
reg = <0x48200000 0x1000>;
|
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 {
|
omap3_pmx_core: pinmux@48002030 {
|
||||||
compatible = "ti,omap3-padconf", "pinctrl-single";
|
compatible = "ti,omap3-padconf", "pinctrl-single";
|
||||||
reg = <0x48002030 0x05cc>;
|
reg = <0x48002030 0x05cc>;
|
||||||
|
@ -95,56 +113,69 @@
|
||||||
|
|
||||||
gpio1: gpio@48310000 {
|
gpio1: gpio@48310000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x48310000 0x200>;
|
||||||
|
interrupts = <29>;
|
||||||
ti,hwmods = "gpio1";
|
ti,hwmods = "gpio1";
|
||||||
|
ti,gpio-always-on;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio2: gpio@49050000 {
|
gpio2: gpio@49050000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x49050000 0x200>;
|
||||||
|
interrupts = <30>;
|
||||||
ti,hwmods = "gpio2";
|
ti,hwmods = "gpio2";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio3: gpio@49052000 {
|
gpio3: gpio@49052000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x49052000 0x200>;
|
||||||
|
interrupts = <31>;
|
||||||
ti,hwmods = "gpio3";
|
ti,hwmods = "gpio3";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@49054000 {
|
gpio4: gpio@49054000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x49054000 0x200>;
|
||||||
|
interrupts = <32>;
|
||||||
ti,hwmods = "gpio4";
|
ti,hwmods = "gpio4";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio5: gpio@49056000 {
|
gpio5: gpio@49056000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x49056000 0x200>;
|
||||||
|
interrupts = <33>;
|
||||||
ti,hwmods = "gpio5";
|
ti,hwmods = "gpio5";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio6: gpio@49058000 {
|
gpio6: gpio@49058000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
|
reg = <0x49058000 0x200>;
|
||||||
|
interrupts = <34>;
|
||||||
ti,hwmods = "gpio6";
|
ti,hwmods = "gpio6";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: serial@4806a000 {
|
uart1: serial@4806a000 {
|
||||||
|
@ -192,6 +223,16 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi1";
|
ti,hwmods = "mcspi1";
|
||||||
ti,spi-num-cs = <4>;
|
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 {
|
mcspi2: spi@4809a000 {
|
||||||
|
@ -200,6 +241,11 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi2";
|
ti,hwmods = "mcspi2";
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
|
dmas = <&sdma 43>,
|
||||||
|
<&sdma 44>,
|
||||||
|
<&sdma 45>,
|
||||||
|
<&sdma 46>;
|
||||||
|
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcspi3: spi@480b8000 {
|
mcspi3: spi@480b8000 {
|
||||||
|
@ -208,6 +254,11 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi3";
|
ti,hwmods = "mcspi3";
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
|
dmas = <&sdma 15>,
|
||||||
|
<&sdma 16>,
|
||||||
|
<&sdma 23>,
|
||||||
|
<&sdma 24>;
|
||||||
|
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcspi4: spi@480ba000 {
|
mcspi4: spi@480ba000 {
|
||||||
|
@ -216,22 +267,30 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi4";
|
ti,hwmods = "mcspi4";
|
||||||
ti,spi-num-cs = <1>;
|
ti,spi-num-cs = <1>;
|
||||||
|
dmas = <&sdma 70>, <&sdma 71>;
|
||||||
|
dma-names = "tx0", "rx0";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: mmc@4809c000 {
|
mmc1: mmc@4809c000 {
|
||||||
compatible = "ti,omap3-hsmmc";
|
compatible = "ti,omap3-hsmmc";
|
||||||
ti,hwmods = "mmc1";
|
ti,hwmods = "mmc1";
|
||||||
ti,dual-volt;
|
ti,dual-volt;
|
||||||
|
dmas = <&sdma 61>, <&sdma 62>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc2: mmc@480b4000 {
|
mmc2: mmc@480b4000 {
|
||||||
compatible = "ti,omap3-hsmmc";
|
compatible = "ti,omap3-hsmmc";
|
||||||
ti,hwmods = "mmc2";
|
ti,hwmods = "mmc2";
|
||||||
|
dmas = <&sdma 47>, <&sdma 48>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc3: mmc@480ad000 {
|
mmc3: mmc@480ad000 {
|
||||||
compatible = "ti,omap3-hsmmc";
|
compatible = "ti,omap3-hsmmc";
|
||||||
ti,hwmods = "mmc3";
|
ti,hwmods = "mmc3";
|
||||||
|
dmas = <&sdma 77>, <&sdma 78>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
wdt2: wdt@48314000 {
|
wdt2: wdt@48314000 {
|
||||||
|
@ -249,6 +308,9 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp1";
|
ti,hwmods = "mcbsp1";
|
||||||
|
dmas = <&sdma 31>,
|
||||||
|
<&sdma 32>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp2: mcbsp@49022000 {
|
mcbsp2: mcbsp@49022000 {
|
||||||
|
@ -263,6 +325,9 @@
|
||||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||||
ti,buffer-size = <1280>;
|
ti,buffer-size = <1280>;
|
||||||
ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
|
ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
|
||||||
|
dmas = <&sdma 33>,
|
||||||
|
<&sdma 34>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp3: mcbsp@49024000 {
|
mcbsp3: mcbsp@49024000 {
|
||||||
|
@ -277,6 +342,9 @@
|
||||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
|
ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
|
||||||
|
dmas = <&sdma 17>,
|
||||||
|
<&sdma 18>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp4: mcbsp@49026000 {
|
mcbsp4: mcbsp@49026000 {
|
||||||
|
@ -289,6 +357,9 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp4";
|
ti,hwmods = "mcbsp4";
|
||||||
|
dmas = <&sdma 19>,
|
||||||
|
<&sdma 20>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp5: mcbsp@48096000 {
|
mcbsp5: mcbsp@48096000 {
|
||||||
|
@ -301,10 +372,13 @@
|
||||||
interrupt-names = "common", "tx", "rx";
|
interrupt-names = "common", "tx", "rx";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp5";
|
ti,hwmods = "mcbsp5";
|
||||||
|
dmas = <&sdma 21>,
|
||||||
|
<&sdma 22>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@48318000 {
|
timer1: timer@48318000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48318000 0x400>;
|
reg = <0x48318000 0x400>;
|
||||||
interrupts = <37>;
|
interrupts = <37>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
@ -312,28 +386,28 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer2: timer@49032000 {
|
timer2: timer@49032000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x49032000 0x400>;
|
reg = <0x49032000 0x400>;
|
||||||
interrupts = <38>;
|
interrupts = <38>;
|
||||||
ti,hwmods = "timer2";
|
ti,hwmods = "timer2";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@49034000 {
|
timer3: timer@49034000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x49034000 0x400>;
|
reg = <0x49034000 0x400>;
|
||||||
interrupts = <39>;
|
interrupts = <39>;
|
||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer4: timer@49036000 {
|
timer4: timer@49036000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x49036000 0x400>;
|
reg = <0x49036000 0x400>;
|
||||||
interrupts = <40>;
|
interrupts = <40>;
|
||||||
ti,hwmods = "timer4";
|
ti,hwmods = "timer4";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer5: timer@49038000 {
|
timer5: timer@49038000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x49038000 0x400>;
|
reg = <0x49038000 0x400>;
|
||||||
interrupts = <41>;
|
interrupts = <41>;
|
||||||
ti,hwmods = "timer5";
|
ti,hwmods = "timer5";
|
||||||
|
@ -341,7 +415,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@4903a000 {
|
timer6: timer@4903a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x4903a000 0x400>;
|
reg = <0x4903a000 0x400>;
|
||||||
interrupts = <42>;
|
interrupts = <42>;
|
||||||
ti,hwmods = "timer6";
|
ti,hwmods = "timer6";
|
||||||
|
@ -349,7 +423,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer7: timer@4903c000 {
|
timer7: timer@4903c000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x4903c000 0x400>;
|
reg = <0x4903c000 0x400>;
|
||||||
interrupts = <43>;
|
interrupts = <43>;
|
||||||
ti,hwmods = "timer7";
|
ti,hwmods = "timer7";
|
||||||
|
@ -357,7 +431,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer8: timer@4903e000 {
|
timer8: timer@4903e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x4903e000 0x400>;
|
reg = <0x4903e000 0x400>;
|
||||||
interrupts = <44>;
|
interrupts = <44>;
|
||||||
ti,hwmods = "timer8";
|
ti,hwmods = "timer8";
|
||||||
|
@ -366,7 +440,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer9: timer@49040000 {
|
timer9: timer@49040000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x49040000 0x400>;
|
reg = <0x49040000 0x400>;
|
||||||
interrupts = <45>;
|
interrupts = <45>;
|
||||||
ti,hwmods = "timer9";
|
ti,hwmods = "timer9";
|
||||||
|
@ -374,7 +448,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer10: timer@48086000 {
|
timer10: timer@48086000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48086000 0x400>;
|
reg = <0x48086000 0x400>;
|
||||||
interrupts = <46>;
|
interrupts = <46>;
|
||||||
ti,hwmods = "timer10";
|
ti,hwmods = "timer10";
|
||||||
|
@ -382,7 +456,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer11: timer@48088000 {
|
timer11: timer@48088000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48088000 0x400>;
|
reg = <0x48088000 0x400>;
|
||||||
interrupts = <47>;
|
interrupts = <47>;
|
||||||
ti,hwmods = "timer11";
|
ti,hwmods = "timer11";
|
||||||
|
@ -390,12 +464,65 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer12: timer@48304000 {
|
timer12: timer@48304000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48304000 0x400>;
|
reg = <0x48304000 0x400>;
|
||||||
interrupts = <95>;
|
interrupts = <95>;
|
||||||
ti,hwmods = "timer12";
|
ti,hwmods = "timer12";
|
||||||
ti,timer-alwon;
|
ti,timer-alwon;
|
||||||
ti,timer-secure;
|
ti,timer-secure;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usbhstll: usbhstll@48062000 {
|
||||||
|
compatible = "ti,usbhs-tll";
|
||||||
|
reg = <0x48062000 0x1000>;
|
||||||
|
interrupts = <78>;
|
||||||
|
ti,hwmods = "usb_tll_hs";
|
||||||
|
};
|
||||||
|
|
||||||
|
usbhshost: usbhshost@48064000 {
|
||||||
|
compatible = "ti,usbhs-host";
|
||||||
|
reg = <0x48064000 0x400>;
|
||||||
|
ti,hwmods = "usb_host_hs";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
usbhsohci: ohci@48064400 {
|
||||||
|
compatible = "ti,ohci-omap3", "usb-ohci";
|
||||||
|
reg = <0x48064400 0x400>;
|
||||||
|
interrupt-parent = <&intc>;
|
||||||
|
interrupts = <76>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usbhsehci: ehci@48064800 {
|
||||||
|
compatible = "ti,ehci-omap", "usb-ehci";
|
||||||
|
reg = <0x48064800 0x400>;
|
||||||
|
interrupt-parent = <&intc>;
|
||||||
|
interrupts = <77>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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 @@
|
||||||
serial3 = &uart4;
|
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 {
|
ocp {
|
||||||
uart4: serial@49042000 {
|
uart4: serial@49042000 {
|
||||||
compatible = "ti,omap3-uart";
|
compatible = "ti,omap3-uart";
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* 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 */
|
/* Pandaboard Rev A4+ have external pullups on SCL & SDA */
|
||||||
&dss_hdmi_pins {
|
&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
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* 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 */
|
/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */
|
||||||
&sound {
|
&sound {
|
||||||
|
|
|
@ -7,202 +7,5 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap4.dtsi"
|
/include/ "omap443x.dtsi"
|
||||||
/include/ "elpida_ecb240abacn.dtsi"
|
/include/ "omap4-panda-common.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>;
|
|
||||||
};
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap4.dtsi"
|
/include/ "omap443x.dtsi"
|
||||||
/include/ "elpida_ecb240abacn.dtsi"
|
/include/ "elpida_ecb240abacn.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@ -80,6 +80,32 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 {
|
sound {
|
||||||
compatible = "ti,abe-twl6040";
|
compatible = "ti,abe-twl6040";
|
||||||
ti,model = "SDP4430";
|
ti,model = "SDP4430";
|
||||||
|
@ -212,9 +238,40 @@
|
||||||
0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | 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 {
|
&i2c1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c1_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
twl: twl@48 {
|
twl: twl@48 {
|
||||||
|
@ -253,10 +310,16 @@
|
||||||
/include/ "twl6030.dtsi"
|
/include/ "twl6030.dtsi"
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c2_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c3 {
|
&i2c3 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c3_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -279,6 +342,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c4 {
|
&i2c4 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c4_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -428,3 +494,9 @@
|
||||||
&twl_usb_comparator {
|
&twl_usb_comparator {
|
||||||
usb-supply = <&vusb>;
|
usb-supply = <&vusb>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usb_otg_hs {
|
||||||
|
interface-type = <1>;
|
||||||
|
mode = <3>;
|
||||||
|
power = <50>;
|
||||||
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/include/ "omap4.dtsi"
|
/include/ "omap443x.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Variscite OMAP4 SOM";
|
model = "Variscite OMAP4 SOM";
|
||||||
|
|
|
@ -94,6 +94,11 @@
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
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 {
|
counter32k: counter@4a304000 {
|
||||||
compatible = "ti,omap-counter32k";
|
compatible = "ti,omap-counter32k";
|
||||||
|
@ -118,15 +123,28 @@
|
||||||
pinctrl-single,function-mask = <0x7fff>;
|
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 {
|
gpio1: gpio@4a310000 {
|
||||||
compatible = "ti,omap4-gpio";
|
compatible = "ti,omap4-gpio";
|
||||||
reg = <0x4a310000 0x200>;
|
reg = <0x4a310000 0x200>;
|
||||||
interrupts = <0 29 0x4>;
|
interrupts = <0 29 0x4>;
|
||||||
ti,hwmods = "gpio1";
|
ti,hwmods = "gpio1";
|
||||||
|
ti,gpio-always-on;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio2: gpio@48055000 {
|
gpio2: gpio@48055000 {
|
||||||
|
@ -137,7 +155,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio3: gpio@48057000 {
|
gpio3: gpio@48057000 {
|
||||||
|
@ -148,7 +166,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@48059000 {
|
gpio4: gpio@48059000 {
|
||||||
|
@ -159,7 +177,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio5: gpio@4805b000 {
|
gpio5: gpio@4805b000 {
|
||||||
|
@ -170,7 +188,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio6: gpio@4805d000 {
|
gpio6: gpio@4805d000 {
|
||||||
|
@ -181,7 +199,18 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
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 {
|
uart1: serial@4806a000 {
|
||||||
|
@ -260,6 +289,16 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi1";
|
ti,hwmods = "mcspi1";
|
||||||
ti,spi-num-cs = <4>;
|
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 {
|
mcspi2: spi@4809a000 {
|
||||||
|
@ -270,6 +309,11 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi2";
|
ti,hwmods = "mcspi2";
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
|
dmas = <&sdma 43>,
|
||||||
|
<&sdma 44>,
|
||||||
|
<&sdma 45>,
|
||||||
|
<&sdma 46>;
|
||||||
|
dma-names = "tx0", "rx0", "tx1", "rx1";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcspi3: spi@480b8000 {
|
mcspi3: spi@480b8000 {
|
||||||
|
@ -280,6 +324,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi3";
|
ti,hwmods = "mcspi3";
|
||||||
ti,spi-num-cs = <2>;
|
ti,spi-num-cs = <2>;
|
||||||
|
dmas = <&sdma 15>, <&sdma 16>;
|
||||||
|
dma-names = "tx0", "rx0";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcspi4: spi@480ba000 {
|
mcspi4: spi@480ba000 {
|
||||||
|
@ -290,6 +336,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "mcspi4";
|
ti,hwmods = "mcspi4";
|
||||||
ti,spi-num-cs = <1>;
|
ti,spi-num-cs = <1>;
|
||||||
|
dmas = <&sdma 70>, <&sdma 71>;
|
||||||
|
dma-names = "tx0", "rx0";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: mmc@4809c000 {
|
mmc1: mmc@4809c000 {
|
||||||
|
@ -299,6 +347,8 @@
|
||||||
ti,hwmods = "mmc1";
|
ti,hwmods = "mmc1";
|
||||||
ti,dual-volt;
|
ti,dual-volt;
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 61>, <&sdma 62>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc2: mmc@480b4000 {
|
mmc2: mmc@480b4000 {
|
||||||
|
@ -307,6 +357,8 @@
|
||||||
interrupts = <0 86 0x4>;
|
interrupts = <0 86 0x4>;
|
||||||
ti,hwmods = "mmc2";
|
ti,hwmods = "mmc2";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 47>, <&sdma 48>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc3: mmc@480ad000 {
|
mmc3: mmc@480ad000 {
|
||||||
|
@ -315,6 +367,8 @@
|
||||||
interrupts = <0 94 0x4>;
|
interrupts = <0 94 0x4>;
|
||||||
ti,hwmods = "mmc3";
|
ti,hwmods = "mmc3";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 77>, <&sdma 78>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc4: mmc@480d1000 {
|
mmc4: mmc@480d1000 {
|
||||||
|
@ -323,6 +377,8 @@
|
||||||
interrupts = <0 96 0x4>;
|
interrupts = <0 96 0x4>;
|
||||||
ti,hwmods = "mmc4";
|
ti,hwmods = "mmc4";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 57>, <&sdma 58>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc5: mmc@480d5000 {
|
mmc5: mmc@480d5000 {
|
||||||
|
@ -331,6 +387,8 @@
|
||||||
interrupts = <0 59 0x4>;
|
interrupts = <0 59 0x4>;
|
||||||
ti,hwmods = "mmc5";
|
ti,hwmods = "mmc5";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 59>, <&sdma 60>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
wdt2: wdt@4a314000 {
|
wdt2: wdt@4a314000 {
|
||||||
|
@ -347,6 +405,9 @@
|
||||||
reg-names = "mpu", "dma";
|
reg-names = "mpu", "dma";
|
||||||
interrupts = <0 112 0x4>;
|
interrupts = <0 112 0x4>;
|
||||||
ti,hwmods = "mcpdm";
|
ti,hwmods = "mcpdm";
|
||||||
|
dmas = <&sdma 65>,
|
||||||
|
<&sdma 66>;
|
||||||
|
dma-names = "up_link", "dn_link";
|
||||||
};
|
};
|
||||||
|
|
||||||
dmic: dmic@4012e000 {
|
dmic: dmic@4012e000 {
|
||||||
|
@ -356,6 +417,8 @@
|
||||||
reg-names = "mpu", "dma";
|
reg-names = "mpu", "dma";
|
||||||
interrupts = <0 114 0x4>;
|
interrupts = <0 114 0x4>;
|
||||||
ti,hwmods = "dmic";
|
ti,hwmods = "dmic";
|
||||||
|
dmas = <&sdma 67>;
|
||||||
|
dma-names = "up_link";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp1: mcbsp@40122000 {
|
mcbsp1: mcbsp@40122000 {
|
||||||
|
@ -367,6 +430,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp1";
|
ti,hwmods = "mcbsp1";
|
||||||
|
dmas = <&sdma 33>,
|
||||||
|
<&sdma 34>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp2: mcbsp@40124000 {
|
mcbsp2: mcbsp@40124000 {
|
||||||
|
@ -378,6 +444,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp2";
|
ti,hwmods = "mcbsp2";
|
||||||
|
dmas = <&sdma 17>,
|
||||||
|
<&sdma 18>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp3: mcbsp@40126000 {
|
mcbsp3: mcbsp@40126000 {
|
||||||
|
@ -389,6 +458,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp3";
|
ti,hwmods = "mcbsp3";
|
||||||
|
dmas = <&sdma 19>,
|
||||||
|
<&sdma 20>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp4: mcbsp@48096000 {
|
mcbsp4: mcbsp@48096000 {
|
||||||
|
@ -399,6 +471,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp4";
|
ti,hwmods = "mcbsp4";
|
||||||
|
dmas = <&sdma 31>,
|
||||||
|
<&sdma 32>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
keypad: keypad@4a31c000 {
|
keypad: keypad@4a31c000 {
|
||||||
|
@ -438,10 +513,15 @@
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
ti,hwmods = "ocp2scp_usb_phy";
|
ti,hwmods = "ocp2scp_usb_phy";
|
||||||
|
usb2_phy: usb2phy@4a0ad080 {
|
||||||
|
compatible = "ti,omap-usb2";
|
||||||
|
reg = <0x4a0ad080 0x58>;
|
||||||
|
ctrl-module = <&omap_control_usb>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@4a318000 {
|
timer1: timer@4a318000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x4a318000 0x80>;
|
reg = <0x4a318000 0x80>;
|
||||||
interrupts = <0 37 0x4>;
|
interrupts = <0 37 0x4>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
@ -449,28 +529,28 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer2: timer@48032000 {
|
timer2: timer@48032000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48032000 0x80>;
|
reg = <0x48032000 0x80>;
|
||||||
interrupts = <0 38 0x4>;
|
interrupts = <0 38 0x4>;
|
||||||
ti,hwmods = "timer2";
|
ti,hwmods = "timer2";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@48034000 {
|
timer3: timer@48034000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x48034000 0x80>;
|
reg = <0x48034000 0x80>;
|
||||||
interrupts = <0 39 0x4>;
|
interrupts = <0 39 0x4>;
|
||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer4: timer@48036000 {
|
timer4: timer@48036000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x48036000 0x80>;
|
reg = <0x48036000 0x80>;
|
||||||
interrupts = <0 40 0x4>;
|
interrupts = <0 40 0x4>;
|
||||||
ti,hwmods = "timer4";
|
ti,hwmods = "timer4";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer5: timer@40138000 {
|
timer5: timer@40138000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x40138000 0x80>,
|
reg = <0x40138000 0x80>,
|
||||||
<0x49038000 0x80>;
|
<0x49038000 0x80>;
|
||||||
interrupts = <0 41 0x4>;
|
interrupts = <0 41 0x4>;
|
||||||
|
@ -479,7 +559,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@4013a000 {
|
timer6: timer@4013a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x4013a000 0x80>,
|
reg = <0x4013a000 0x80>,
|
||||||
<0x4903a000 0x80>;
|
<0x4903a000 0x80>;
|
||||||
interrupts = <0 42 0x4>;
|
interrupts = <0 42 0x4>;
|
||||||
|
@ -488,7 +568,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer7: timer@4013c000 {
|
timer7: timer@4013c000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x4013c000 0x80>,
|
reg = <0x4013c000 0x80>,
|
||||||
<0x4903c000 0x80>;
|
<0x4903c000 0x80>;
|
||||||
interrupts = <0 43 0x4>;
|
interrupts = <0 43 0x4>;
|
||||||
|
@ -497,7 +577,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer8: timer@4013e000 {
|
timer8: timer@4013e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x4013e000 0x80>,
|
reg = <0x4013e000 0x80>,
|
||||||
<0x4903e000 0x80>;
|
<0x4903e000 0x80>;
|
||||||
interrupts = <0 44 0x4>;
|
interrupts = <0 44 0x4>;
|
||||||
|
@ -507,7 +587,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer9: timer@4803e000 {
|
timer9: timer@4803e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x4803e000 0x80>;
|
reg = <0x4803e000 0x80>;
|
||||||
interrupts = <0 45 0x4>;
|
interrupts = <0 45 0x4>;
|
||||||
ti,hwmods = "timer9";
|
ti,hwmods = "timer9";
|
||||||
|
@ -515,7 +595,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer10: timer@48086000 {
|
timer10: timer@48086000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap3430-timer";
|
||||||
reg = <0x48086000 0x80>;
|
reg = <0x48086000 0x80>;
|
||||||
interrupts = <0 46 0x4>;
|
interrupts = <0 46 0x4>;
|
||||||
ti,hwmods = "timer10";
|
ti,hwmods = "timer10";
|
||||||
|
@ -523,11 +603,62 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer11: timer@48088000 {
|
timer11: timer@48088000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap4430-timer";
|
||||||
reg = <0x48088000 0x80>;
|
reg = <0x48088000 0x80>;
|
||||||
interrupts = <0 47 0x4>;
|
interrupts = <0 47 0x4>;
|
||||||
ti,hwmods = "timer11";
|
ti,hwmods = "timer11";
|
||||||
ti,timer-pwm;
|
ti,timer-pwm;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usbhstll: usbhstll@4a062000 {
|
||||||
|
compatible = "ti,usbhs-tll";
|
||||||
|
reg = <0x4a062000 0x1000>;
|
||||||
|
interrupts = <0 78 0x4>;
|
||||||
|
ti,hwmods = "usb_tll_hs";
|
||||||
|
};
|
||||||
|
|
||||||
|
usbhshost: usbhshost@4a064000 {
|
||||||
|
compatible = "ti,usbhs-host";
|
||||||
|
reg = <0x4a064000 0x800>;
|
||||||
|
ti,hwmods = "usb_host_hs";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
usbhsohci: ohci@4a064800 {
|
||||||
|
compatible = "ti,ohci-omap3", "usb-ohci";
|
||||||
|
reg = <0x4a064800 0x400>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 76 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usbhsehci: ehci@4a064c00 {
|
||||||
|
compatible = "ti,ehci-omap", "usb-ehci";
|
||||||
|
reg = <0x4a064c00 0x400>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
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 {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x80000000>; /* 2 GB */
|
reg = <0x80000000 0x7F000000>; /* 2032 MB */
|
||||||
};
|
};
|
||||||
|
|
||||||
vmmcsd_fixed: fixedregulator-mmcsd {
|
vmmcsd_fixed: fixedregulator-mmcsd {
|
||||||
|
@ -80,6 +80,68 @@
|
||||||
0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
|
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 {
|
&mmc1 {
|
||||||
|
@ -106,7 +168,17 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c1_pins>;
|
||||||
|
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c2_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
/* Pressure Sensor */
|
/* Pressure Sensor */
|
||||||
|
@ -116,7 +188,17 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c3_pins>;
|
||||||
|
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
&i2c4 {
|
&i2c4 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c4_pins>;
|
||||||
|
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
/* Temperature Sensor */
|
/* Temperature Sensor */
|
||||||
|
@ -126,6 +208,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c5 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c5_pins>;
|
||||||
|
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
&keypad {
|
&keypad {
|
||||||
keypad,num-rows = <8>;
|
keypad,num-rows = <8>;
|
||||||
keypad,num-columns = <8>;
|
keypad,num-columns = <8>;
|
||||||
|
@ -151,3 +240,22 @@
|
||||||
cs1-used;
|
cs1-used;
|
||||||
device-handle = <&samsung_K3PE0E000B>;
|
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"
|
/include/ "skeleton.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
compatible = "ti,omap5";
|
compatible = "ti,omap5";
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
|
|
||||||
|
@ -33,24 +36,32 @@
|
||||||
cpus {
|
cpus {
|
||||||
cpu@0 {
|
cpu@0 {
|
||||||
compatible = "arm,cortex-a15";
|
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 {
|
cpu@1 {
|
||||||
compatible = "arm,cortex-a15";
|
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
|
* 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.
|
* that are not memory mapped in the MPU view or for the MPU itself.
|
||||||
|
@ -76,6 +87,11 @@
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
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 {
|
counter32k: counter@4ae04000 {
|
||||||
compatible = "ti,omap-counter32k";
|
compatible = "ti,omap-counter32k";
|
||||||
|
@ -100,12 +116,16 @@
|
||||||
pinctrl-single,function-mask = <0x7fff>;
|
pinctrl-single,function-mask = <0x7fff>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gic: interrupt-controller@48211000 {
|
sdma: dma-controller@4a056000 {
|
||||||
compatible = "arm,cortex-a15-gic";
|
compatible = "ti,omap4430-sdma";
|
||||||
interrupt-controller;
|
reg = <0x4a056000 0x1000>;
|
||||||
#interrupt-cells = <3>;
|
interrupts = <0 12 0x4>,
|
||||||
reg = <0x48211000 0x1000>,
|
<0 13 0x4>,
|
||||||
<0x48212000 0x1000>;
|
<0 14 0x4>,
|
||||||
|
<0 15 0x4>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <32>;
|
||||||
|
#dma-requests = <127>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio1: gpio@4ae10000 {
|
gpio1: gpio@4ae10000 {
|
||||||
|
@ -113,10 +133,11 @@
|
||||||
reg = <0x4ae10000 0x200>;
|
reg = <0x4ae10000 0x200>;
|
||||||
interrupts = <0 29 0x4>;
|
interrupts = <0 29 0x4>;
|
||||||
ti,hwmods = "gpio1";
|
ti,hwmods = "gpio1";
|
||||||
|
ti,gpio-always-on;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio2: gpio@48055000 {
|
gpio2: gpio@48055000 {
|
||||||
|
@ -127,7 +148,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio3: gpio@48057000 {
|
gpio3: gpio@48057000 {
|
||||||
|
@ -138,7 +159,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@48059000 {
|
gpio4: gpio@48059000 {
|
||||||
|
@ -149,7 +170,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio5: gpio@4805b000 {
|
gpio5: gpio@4805b000 {
|
||||||
|
@ -160,7 +181,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio6: gpio@4805d000 {
|
gpio6: gpio@4805d000 {
|
||||||
|
@ -171,7 +192,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio7: gpio@48051000 {
|
gpio7: gpio@48051000 {
|
||||||
|
@ -182,7 +203,7 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio8: gpio@48053000 {
|
gpio8: gpio@48053000 {
|
||||||
|
@ -193,7 +214,18 @@
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
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 {
|
i2c1: i2c@48070000 {
|
||||||
|
@ -241,6 +273,65 @@
|
||||||
ti,hwmods = "i2c5";
|
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 {
|
uart1: serial@4806a000 {
|
||||||
compatible = "ti,omap4-uart";
|
compatible = "ti,omap4-uart";
|
||||||
reg = <0x4806a000 0x100>;
|
reg = <0x4806a000 0x100>;
|
||||||
|
@ -296,6 +387,8 @@
|
||||||
ti,hwmods = "mmc1";
|
ti,hwmods = "mmc1";
|
||||||
ti,dual-volt;
|
ti,dual-volt;
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 61>, <&sdma 62>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc2: mmc@480b4000 {
|
mmc2: mmc@480b4000 {
|
||||||
|
@ -304,6 +397,8 @@
|
||||||
interrupts = <0 86 0x4>;
|
interrupts = <0 86 0x4>;
|
||||||
ti,hwmods = "mmc2";
|
ti,hwmods = "mmc2";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 47>, <&sdma 48>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc3: mmc@480ad000 {
|
mmc3: mmc@480ad000 {
|
||||||
|
@ -312,6 +407,8 @@
|
||||||
interrupts = <0 94 0x4>;
|
interrupts = <0 94 0x4>;
|
||||||
ti,hwmods = "mmc3";
|
ti,hwmods = "mmc3";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 77>, <&sdma 78>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc4: mmc@480d1000 {
|
mmc4: mmc@480d1000 {
|
||||||
|
@ -320,6 +417,8 @@
|
||||||
interrupts = <0 96 0x4>;
|
interrupts = <0 96 0x4>;
|
||||||
ti,hwmods = "mmc4";
|
ti,hwmods = "mmc4";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 57>, <&sdma 58>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc5: mmc@480d5000 {
|
mmc5: mmc@480d5000 {
|
||||||
|
@ -328,10 +427,13 @@
|
||||||
interrupts = <0 59 0x4>;
|
interrupts = <0 59 0x4>;
|
||||||
ti,hwmods = "mmc5";
|
ti,hwmods = "mmc5";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
|
dmas = <&sdma 59>, <&sdma 60>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
keypad: keypad@4ae1c000 {
|
keypad: keypad@4ae1c000 {
|
||||||
compatible = "ti,omap4-keypad";
|
compatible = "ti,omap4-keypad";
|
||||||
|
reg = <0x4ae1c000 0x400>;
|
||||||
ti,hwmods = "kbd";
|
ti,hwmods = "kbd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -342,6 +444,9 @@
|
||||||
reg-names = "mpu", "dma";
|
reg-names = "mpu", "dma";
|
||||||
interrupts = <0 112 0x4>;
|
interrupts = <0 112 0x4>;
|
||||||
ti,hwmods = "mcpdm";
|
ti,hwmods = "mcpdm";
|
||||||
|
dmas = <&sdma 65>,
|
||||||
|
<&sdma 66>;
|
||||||
|
dma-names = "up_link", "dn_link";
|
||||||
};
|
};
|
||||||
|
|
||||||
dmic: dmic@4012e000 {
|
dmic: dmic@4012e000 {
|
||||||
|
@ -351,6 +456,8 @@
|
||||||
reg-names = "mpu", "dma";
|
reg-names = "mpu", "dma";
|
||||||
interrupts = <0 114 0x4>;
|
interrupts = <0 114 0x4>;
|
||||||
ti,hwmods = "dmic";
|
ti,hwmods = "dmic";
|
||||||
|
dmas = <&sdma 67>;
|
||||||
|
dma-names = "up_link";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp1: mcbsp@40122000 {
|
mcbsp1: mcbsp@40122000 {
|
||||||
|
@ -362,6 +469,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp1";
|
ti,hwmods = "mcbsp1";
|
||||||
|
dmas = <&sdma 33>,
|
||||||
|
<&sdma 34>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp2: mcbsp@40124000 {
|
mcbsp2: mcbsp@40124000 {
|
||||||
|
@ -373,6 +483,9 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp2";
|
ti,hwmods = "mcbsp2";
|
||||||
|
dmas = <&sdma 17>,
|
||||||
|
<&sdma 18>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp3: mcbsp@40126000 {
|
mcbsp3: mcbsp@40126000 {
|
||||||
|
@ -384,10 +497,13 @@
|
||||||
interrupt-names = "common";
|
interrupt-names = "common";
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp3";
|
ti,hwmods = "mcbsp3";
|
||||||
|
dmas = <&sdma 19>,
|
||||||
|
<&sdma 20>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1: timer@4ae18000 {
|
timer1: timer@4ae18000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x4ae18000 0x80>;
|
reg = <0x4ae18000 0x80>;
|
||||||
interrupts = <0 37 0x4>;
|
interrupts = <0 37 0x4>;
|
||||||
ti,hwmods = "timer1";
|
ti,hwmods = "timer1";
|
||||||
|
@ -395,28 +511,28 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer2: timer@48032000 {
|
timer2: timer@48032000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x48032000 0x80>;
|
reg = <0x48032000 0x80>;
|
||||||
interrupts = <0 38 0x4>;
|
interrupts = <0 38 0x4>;
|
||||||
ti,hwmods = "timer2";
|
ti,hwmods = "timer2";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@48034000 {
|
timer3: timer@48034000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x48034000 0x80>;
|
reg = <0x48034000 0x80>;
|
||||||
interrupts = <0 39 0x4>;
|
interrupts = <0 39 0x4>;
|
||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer4: timer@48036000 {
|
timer4: timer@48036000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x48036000 0x80>;
|
reg = <0x48036000 0x80>;
|
||||||
interrupts = <0 40 0x4>;
|
interrupts = <0 40 0x4>;
|
||||||
ti,hwmods = "timer4";
|
ti,hwmods = "timer4";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer5: timer@40138000 {
|
timer5: timer@40138000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x40138000 0x80>,
|
reg = <0x40138000 0x80>,
|
||||||
<0x49038000 0x80>;
|
<0x49038000 0x80>;
|
||||||
interrupts = <0 41 0x4>;
|
interrupts = <0 41 0x4>;
|
||||||
|
@ -425,7 +541,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@4013a000 {
|
timer6: timer@4013a000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x4013a000 0x80>,
|
reg = <0x4013a000 0x80>,
|
||||||
<0x4903a000 0x80>;
|
<0x4903a000 0x80>;
|
||||||
interrupts = <0 42 0x4>;
|
interrupts = <0 42 0x4>;
|
||||||
|
@ -435,7 +551,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer7: timer@4013c000 {
|
timer7: timer@4013c000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x4013c000 0x80>,
|
reg = <0x4013c000 0x80>,
|
||||||
<0x4903c000 0x80>;
|
<0x4903c000 0x80>;
|
||||||
interrupts = <0 43 0x4>;
|
interrupts = <0 43 0x4>;
|
||||||
|
@ -444,7 +560,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer8: timer@4013e000 {
|
timer8: timer@4013e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x4013e000 0x80>,
|
reg = <0x4013e000 0x80>,
|
||||||
<0x4903e000 0x80>;
|
<0x4903e000 0x80>;
|
||||||
interrupts = <0 44 0x4>;
|
interrupts = <0 44 0x4>;
|
||||||
|
@ -454,27 +570,34 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
timer9: timer@4803e000 {
|
timer9: timer@4803e000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x4803e000 0x80>;
|
reg = <0x4803e000 0x80>;
|
||||||
interrupts = <0 45 0x4>;
|
interrupts = <0 45 0x4>;
|
||||||
ti,hwmods = "timer9";
|
ti,hwmods = "timer9";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer10: timer@48086000 {
|
timer10: timer@48086000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x48086000 0x80>;
|
reg = <0x48086000 0x80>;
|
||||||
interrupts = <0 46 0x4>;
|
interrupts = <0 46 0x4>;
|
||||||
ti,hwmods = "timer10";
|
ti,hwmods = "timer10";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer11: timer@48088000 {
|
timer11: timer@48088000 {
|
||||||
compatible = "ti,omap2-timer";
|
compatible = "ti,omap5430-timer";
|
||||||
reg = <0x48088000 0x80>;
|
reg = <0x48088000 0x80>;
|
||||||
interrupts = <0 47 0x4>;
|
interrupts = <0 47 0x4>;
|
||||||
ti,hwmods = "timer11";
|
ti,hwmods = "timer11";
|
||||||
ti,timer-pwm;
|
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 {
|
emif1: emif@0x4c000000 {
|
||||||
compatible = "ti,emif-4d5";
|
compatible = "ti,emif-4d5";
|
||||||
ti,hwmods = "emif1";
|
ti,hwmods = "emif1";
|
||||||
|
@ -496,5 +619,53 @@
|
||||||
hw-caps-ll-interface;
|
hw-caps-ll-interface;
|
||||||
hw-caps-temp-alert;
|
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 @@
|
||||||
compatible = "ti,twl4030-wdt";
|
compatible = "ti,twl4030-wdt";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vcc: regulator-vdd1 {
|
||||||
|
compatible = "ti,twl4030-vdd1";
|
||||||
|
regulator-min-microvolt = <600000>;
|
||||||
|
regulator-max-microvolt = <1450000>;
|
||||||
|
};
|
||||||
|
|
||||||
vdac: regulator-vdac {
|
vdac: regulator-vdac {
|
||||||
compatible = "ti,twl4030-vdac";
|
compatible = "ti,twl4030-vdac";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
|
@ -67,7 +73,7 @@
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
twl4030-usb {
|
usb2_phy: twl4030-usb {
|
||||||
compatible = "ti,twl4030-usb";
|
compatible = "ti,twl4030-usb";
|
||||||
interrupts = <10>, <4>;
|
interrupts = <10>, <4>;
|
||||||
usb1v5-supply = <&vusb1v5>;
|
usb1v5-supply = <&vusb1v5>;
|
||||||
|
@ -75,4 +81,14 @@
|
||||||
usb3v1-supply = <&vusb3v1>;
|
usb3v1-supply = <&vusb3v1>;
|
||||||
usb_mode = <1>;
|
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 @@
|
||||||
compatible = "ti,twl6030-usb";
|
compatible = "ti,twl6030-usb";
|
||||||
interrupts = <4>, <10>;
|
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>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -445,16 +445,23 @@ static void enable_board_wakeup_source(void)
|
||||||
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
|
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = 57,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 61,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = 57,
|
|
||||||
.reset_gpio_port[1] = 61,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -606,6 +613,8 @@ static void __init omap_3430sdp_init(void)
|
||||||
board_flash_init(sdp_flash_partitions, chip_sel_3430, 0);
|
board_flash_init(sdp_flash_partitions, chip_sel_3430, 0);
|
||||||
sdp3430_display_init();
|
sdp3430_display_init();
|
||||||
enable_board_wakeup_source();
|
enable_board_wakeup_source();
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,16 +53,23 @@ static void enable_board_wakeup_source(void)
|
||||||
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
|
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = 126,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 61,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = 126,
|
|
||||||
.reset_gpio_port[1] = 61,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -199,6 +206,8 @@ static void __init omap_sdp_init(void)
|
||||||
board_smc91x_init();
|
board_smc91x_init();
|
||||||
board_flash_init(sdp_flash_partitions, chip_sel_sdp, NAND_BUSWIDTH_16);
|
board_flash_init(sdp_flash_partitions, chip_sel_sdp, NAND_BUSWIDTH_16);
|
||||||
enable_board_wakeup_source();
|
enable_board_wakeup_source();
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,15 +47,17 @@ static struct omap_board_mux board_mux[] __initdata = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = GPIO_USB_NRESET,
|
||||||
|
.vcc_gpio = GPIO_USB_POWER,
|
||||||
|
.vcc_polarity = 1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = GPIO_USB_NRESET,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mtd_partition crane_nand_partitions[] = {
|
static struct mtd_partition crane_nand_partitions[] = {
|
||||||
|
@ -131,13 +133,7 @@ static void __init am3517_crane_init(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = gpio_request_one(GPIO_USB_POWER, GPIOF_OUT_INIT_HIGH,
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
"usb_ehci_enable");
|
|
||||||
if (ret < 0) {
|
|
||||||
pr_err("Can not request GPIO %d\n", GPIO_USB_POWER);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
|
am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -274,6 +274,14 @@ static __init void am3517_evm_mcbsp1_init(void)
|
||||||
omap_ctrl_writel(devconf0, OMAP2_CONTROL_DEVCONF0);
|
omap_ctrl_writel(devconf0, OMAP2_CONTROL_DEVCONF0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = 57,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
#if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \
|
#if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \
|
||||||
|
@ -282,12 +290,6 @@ static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
#else
|
#else
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
#endif
|
#endif
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = 57,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -349,7 +351,6 @@ static struct omap2_hsmmc_info mmc[] = {
|
||||||
{} /* Terminator */
|
{} /* Terminator */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void __init am3517_evm_init(void)
|
static void __init am3517_evm_init(void)
|
||||||
{
|
{
|
||||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||||
|
@ -361,6 +362,8 @@ static void __init am3517_evm_init(void)
|
||||||
|
|
||||||
/* Configure GPIO for EHCI port */
|
/* Configure GPIO for EHCI port */
|
||||||
omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);
|
omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
am3517_evm_hecc_init(&am3517_evm_hecc_pdata);
|
am3517_evm_hecc_init(&am3517_evm_hecc_pdata);
|
||||||
/* DSS */
|
/* DSS */
|
||||||
|
|
|
@ -419,15 +419,22 @@ static struct omap2_hsmmc_info mmc[] = {
|
||||||
{} /* Terminator */
|
{} /* Terminator */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = OMAP_MAX_GPIO_LINES + 6,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = OMAP_MAX_GPIO_LINES + 7,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = OMAP_MAX_GPIO_LINES + 6,
|
|
||||||
.reset_gpio_port[1] = OMAP_MAX_GPIO_LINES + 7,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init cm_t35_init_usbh(void)
|
static void __init cm_t35_init_usbh(void)
|
||||||
|
@ -444,6 +451,7 @@ static void __init cm_t35_init_usbh(void)
|
||||||
msleep(1);
|
msleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,15 +188,22 @@ static inline void cm_t3517_init_rtc(void) {}
|
||||||
#define HSUSB2_RESET_GPIO (147)
|
#define HSUSB2_RESET_GPIO (147)
|
||||||
#define USB_HUB_RESET_GPIO (152)
|
#define USB_HUB_RESET_GPIO (152)
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = HSUSB1_RESET_GPIO,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = HSUSB2_RESET_GPIO,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data cm_t3517_ehci_pdata __initdata = {
|
static struct usbhs_omap_platform_data cm_t3517_ehci_pdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = HSUSB1_RESET_GPIO,
|
|
||||||
.reset_gpio_port[1] = HSUSB2_RESET_GPIO,
|
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init cm_t3517_init_usbh(void)
|
static int __init cm_t3517_init_usbh(void)
|
||||||
|
@ -213,6 +220,7 @@ static int __init cm_t3517_init_usbh(void)
|
||||||
msleep(1);
|
msleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&cm_t3517_ehci_pdata);
|
usbhs_init(&cm_t3517_ehci_pdata);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -437,15 +437,7 @@ static struct platform_device *devkit8000_devices[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
|
|
@ -110,6 +110,7 @@ MACHINE_END
|
||||||
|
|
||||||
static const char *omap3_gp_boards_compat[] __initdata = {
|
static const char *omap3_gp_boards_compat[] __initdata = {
|
||||||
"ti,omap3-beagle",
|
"ti,omap3-beagle",
|
||||||
|
"timll,omap3-devkit8000",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -527,26 +527,28 @@ static void __init igep_i2c_init(void)
|
||||||
omap3_pmic_init("twl4030", &igep_twldata);
|
omap3_pmic_init("twl4030", &igep_twldata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data igep2_phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = IGEP2_GPIO_USBH_NRESET,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct usbhs_phy_data igep3_phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = IGEP3_GPIO_USBH_NRESET,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data igep2_usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data igep2_usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data igep3_usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data igep3_usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = IGEP3_GPIO_USBH_NRESET,
|
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -642,8 +644,10 @@ static void __init igep_init(void)
|
||||||
if (machine_is_igep0020()) {
|
if (machine_is_igep0020()) {
|
||||||
omap_display_init(&igep2_dss_data);
|
omap_display_init(&igep2_dss_data);
|
||||||
igep2_init_smsc911x();
|
igep2_init_smsc911x();
|
||||||
|
usbhs_init_phys(igep2_phy_data, ARRAY_SIZE(igep2_phy_data));
|
||||||
usbhs_init(&igep2_usbhs_bdata);
|
usbhs_init(&igep2_usbhs_bdata);
|
||||||
} else {
|
} else {
|
||||||
|
usbhs_init_phys(igep3_phy_data, ARRAY_SIZE(igep3_phy_data));
|
||||||
usbhs_init(&igep3_usbhs_bdata);
|
usbhs_init(&igep3_usbhs_bdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <linux/mtd/nand.h>
|
#include <linux/mtd/nand.h>
|
||||||
#include <linux/mmc/host.h>
|
#include <linux/mmc/host.h>
|
||||||
#include <linux/usb/phy.h>
|
#include <linux/usb/phy.h>
|
||||||
|
#include <linux/usb/nop-usb-xceiv.h>
|
||||||
|
|
||||||
#include <linux/regulator/machine.h>
|
#include <linux/regulator/machine.h>
|
||||||
#include <linux/i2c/twl.h>
|
#include <linux/i2c/twl.h>
|
||||||
|
@ -277,6 +278,21 @@ static struct regulator_consumer_supply beagle_vsim_supply[] = {
|
||||||
|
|
||||||
static struct gpio_led gpio_leds[];
|
static struct gpio_led gpio_leds[];
|
||||||
|
|
||||||
|
/* PHY's VCC regulator might be added later, so flag that we need it */
|
||||||
|
static struct nop_usb_xceiv_platform_data hsusb2_phy_data = {
|
||||||
|
.needs_vcc = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 147,
|
||||||
|
.vcc_gpio = -1, /* updated in beagle_twl_gpio_setup */
|
||||||
|
.vcc_polarity = 1, /* updated in beagle_twl_gpio_setup */
|
||||||
|
.platform_data = &hsusb2_phy_data,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static int beagle_twl_gpio_setup(struct device *dev,
|
static int beagle_twl_gpio_setup(struct device *dev,
|
||||||
unsigned gpio, unsigned ngpio)
|
unsigned gpio, unsigned ngpio)
|
||||||
{
|
{
|
||||||
|
@ -318,9 +334,11 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
||||||
}
|
}
|
||||||
dvi_panel.power_down_gpio = beagle_config.dvi_pd_gpio;
|
dvi_panel.power_down_gpio = beagle_config.dvi_pd_gpio;
|
||||||
|
|
||||||
gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,
|
/* TWL4030_GPIO_MAX i.e. LED_GPO controls HS USB Port 2 power */
|
||||||
"nEN_USB_PWR");
|
phy_data[0].vcc_gpio = gpio + TWL4030_GPIO_MAX;
|
||||||
|
phy_data[0].vcc_polarity = beagle_config.usb_pwr_level;
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,15 +471,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = 147,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -543,7 +553,9 @@ static void __init omap3_beagle_init(void)
|
||||||
|
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(NULL);
|
usb_musb_init(NULL);
|
||||||
|
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
|
|
||||||
board_nand_init(omap3beagle_nand_partitions,
|
board_nand_init(omap3beagle_nand_partitions,
|
||||||
ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS,
|
ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS,
|
||||||
NAND_BUSWIDTH_16, NULL);
|
NAND_BUSWIDTH_16, NULL);
|
||||||
|
|
|
@ -496,7 +496,7 @@ struct wl12xx_platform_data omap3evm_wlan_data __initdata = {
|
||||||
static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
|
static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
|
||||||
REGULATOR_SUPPLY("VDD_CSIPHY1", "omap3isp"), /* OMAP ISP */
|
REGULATOR_SUPPLY("VDD_CSIPHY1", "omap3isp"), /* OMAP ISP */
|
||||||
REGULATOR_SUPPLY("VDD_CSIPHY2", "omap3isp"), /* OMAP ISP */
|
REGULATOR_SUPPLY("VDD_CSIPHY2", "omap3isp"), /* OMAP ISP */
|
||||||
REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"),
|
REGULATOR_SUPPLY("vcc", "nop_usb_xceiv.2"), /* hsusb port 2 */
|
||||||
REGULATOR_SUPPLY("vaux2", NULL),
|
REGULATOR_SUPPLY("vaux2", NULL),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -539,17 +539,16 @@ static int __init omap3_evm_i2c_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = -1, /* set at runtime */
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
/* PHY reset GPIO will be runtime programmed based on EVM version */
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -725,7 +724,7 @@ static void __init omap3_evm_init(void)
|
||||||
|
|
||||||
/* setup EHCI phy reset config */
|
/* setup EHCI phy reset config */
|
||||||
omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP);
|
omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP);
|
||||||
usbhs_bdata.reset_gpio_port[1] = 21;
|
phy_data[0].reset_gpio = 21;
|
||||||
|
|
||||||
/* EVM REV >= E can supply 500mA with EXTVBUS programming */
|
/* EVM REV >= E can supply 500mA with EXTVBUS programming */
|
||||||
musb_board_data.power = 500;
|
musb_board_data.power = 500;
|
||||||
|
@ -733,10 +732,12 @@ static void __init omap3_evm_init(void)
|
||||||
} else {
|
} else {
|
||||||
/* setup EHCI phy reset on MDC */
|
/* setup EHCI phy reset on MDC */
|
||||||
omap_mux_init_gpio(135, OMAP_PIN_OUTPUT);
|
omap_mux_init_gpio(135, OMAP_PIN_OUTPUT);
|
||||||
usbhs_bdata.reset_gpio_port[1] = 135;
|
phy_data[0].reset_gpio = 135;
|
||||||
}
|
}
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(&musb_board_data);
|
usb_musb_init(&musb_board_data);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
board_nand_init(omap3evm_nand_partitions,
|
board_nand_init(omap3evm_nand_partitions,
|
||||||
ARRAY_SIZE(omap3evm_nand_partitions), NAND_CS,
|
ARRAY_SIZE(omap3evm_nand_partitions), NAND_CS,
|
||||||
|
|
|
@ -346,7 +346,7 @@ static struct regulator_consumer_supply pandora_vcc_lcd_supply[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct regulator_consumer_supply pandora_usb_phy_supply[] = {
|
static struct regulator_consumer_supply pandora_usb_phy_supply[] = {
|
||||||
REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"),
|
REGULATOR_SUPPLY("vcc", "nop_usb_xceiv.2"), /* hsusb port 2 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ads7846 on SPI and 2 nub controllers on I2C */
|
/* ads7846 on SPI and 2 nub controllers on I2C */
|
||||||
|
@ -561,6 +561,14 @@ fail:
|
||||||
printk(KERN_ERR "wl1251 board initialisation failed\n");
|
printk(KERN_ERR "wl1251 board initialisation failed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 16,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *omap3pandora_devices[] __initdata = {
|
static struct platform_device *omap3pandora_devices[] __initdata = {
|
||||||
&pandora_leds_gpio,
|
&pandora_leds_gpio,
|
||||||
&pandora_keys_gpio,
|
&pandora_keys_gpio,
|
||||||
|
@ -569,15 +577,7 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = 16,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -601,7 +601,10 @@ static void __init omap3pandora_init(void)
|
||||||
spi_register_board_info(omap3pandora_spi_board_info,
|
spi_register_board_info(omap3pandora_spi_board_info,
|
||||||
ARRAY_SIZE(omap3pandora_spi_board_info));
|
ARRAY_SIZE(omap3pandora_spi_board_info));
|
||||||
omap_ads7846_init(1, OMAP3_PANDORA_TS_GPIO, 0, NULL);
|
omap_ads7846_init(1, OMAP3_PANDORA_TS_GPIO, 0, NULL);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
|
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(NULL);
|
usb_musb_init(NULL);
|
||||||
gpmc_nand_init(&pandora_nand_data, NULL);
|
gpmc_nand_init(&pandora_nand_data, NULL);
|
||||||
|
|
|
@ -358,19 +358,20 @@ static int __init omap3_stalker_i2c_init(void)
|
||||||
|
|
||||||
#define OMAP3_STALKER_TS_GPIO 175
|
#define OMAP3_STALKER_TS_GPIO 175
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 21,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *omap3_stalker_devices[] __initdata = {
|
static struct platform_device *omap3_stalker_devices[] __initdata = {
|
||||||
&keys_gpio,
|
&keys_gpio,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = 21,
|
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -407,6 +408,8 @@ static void __init omap3_stalker_init(void)
|
||||||
omap_sdrc_init(mt46h32m32lf6_sdrc_params, NULL);
|
omap_sdrc_init(mt46h32m32lf6_sdrc_params, NULL);
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(NULL);
|
usb_musb_init(NULL);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
omap_ads7846_init(1, OMAP3_STALKER_TS_GPIO, 310, NULL);
|
omap_ads7846_init(1, OMAP3_STALKER_TS_GPIO, 310, NULL);
|
||||||
|
|
||||||
|
|
|
@ -305,21 +305,22 @@ static struct omap_board_mux board_mux[] __initdata = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = 147,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *omap3_touchbook_devices[] __initdata = {
|
static struct platform_device *omap3_touchbook_devices[] __initdata = {
|
||||||
&leds_gpio,
|
&leds_gpio,
|
||||||
&keys_gpio,
|
&keys_gpio,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
|
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = 147,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void omap3_touchbook_poweroff(void)
|
static void omap3_touchbook_poweroff(void)
|
||||||
|
@ -368,6 +369,8 @@ static void __init omap3_touchbook_init(void)
|
||||||
omap_ads7846_init(4, OMAP3_TS_GPIO, 310, &ads7846_pdata);
|
omap_ads7846_init(4, OMAP3_TS_GPIO, 310, &ads7846_pdata);
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(NULL);
|
usb_musb_init(NULL);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
board_nand_init(omap3touchbook_nand_partitions,
|
board_nand_init(omap3touchbook_nand_partitions,
|
||||||
ARRAY_SIZE(omap3touchbook_nand_partitions), NAND_CS,
|
ARRAY_SIZE(omap3touchbook_nand_partitions), NAND_CS,
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <linux/ti_wilink_st.h>
|
#include <linux/ti_wilink_st.h>
|
||||||
#include <linux/usb/musb.h>
|
#include <linux/usb/musb.h>
|
||||||
#include <linux/usb/phy.h>
|
#include <linux/usb/phy.h>
|
||||||
|
#include <linux/usb/nop-usb-xceiv.h>
|
||||||
#include <linux/wl12xx.h>
|
#include <linux/wl12xx.h>
|
||||||
#include <linux/irqchip/arm-gic.h>
|
#include <linux/irqchip/arm-gic.h>
|
||||||
#include <linux/platform_data/omap-abe-twl6040.h>
|
#include <linux/platform_data/omap-abe-twl6040.h>
|
||||||
|
@ -132,6 +133,22 @@ static struct platform_device btwilink_device = {
|
||||||
.id = -1,
|
.id = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* PHY device on HS USB Port 1 i.e. nop_usb_xceiv.1 */
|
||||||
|
static struct nop_usb_xceiv_platform_data hsusb1_phy_data = {
|
||||||
|
/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */
|
||||||
|
.clk_rate = 19200000,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 1,
|
||||||
|
.reset_gpio = GPIO_HUB_NRESET,
|
||||||
|
.vcc_gpio = GPIO_HUB_POWER,
|
||||||
|
.vcc_polarity = 1,
|
||||||
|
.platform_data = &hsusb1_phy_data,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *panda_devices[] __initdata = {
|
static struct platform_device *panda_devices[] __initdata = {
|
||||||
&leds_gpio,
|
&leds_gpio,
|
||||||
&wl1271_device,
|
&wl1271_device,
|
||||||
|
@ -142,49 +159,19 @@ static struct platform_device *panda_devices[] __initdata = {
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.phy_reset = false,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = -EINVAL,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct gpio panda_ehci_gpios[] __initdata = {
|
|
||||||
{ GPIO_HUB_POWER, GPIOF_OUT_INIT_LOW, "hub_power" },
|
|
||||||
{ GPIO_HUB_NRESET, GPIOF_OUT_INIT_LOW, "hub_nreset" },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init omap4_ehci_init(void)
|
static void __init omap4_ehci_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct clk *phy_ref_clk;
|
|
||||||
|
|
||||||
/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */
|
/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */
|
||||||
phy_ref_clk = clk_get(NULL, "auxclk3_ck");
|
ret = clk_add_alias("main_clk", "nop_usb_xceiv.1", "auxclk3_ck", NULL);
|
||||||
if (IS_ERR(phy_ref_clk)) {
|
if (ret)
|
||||||
pr_err("Cannot request auxclk3\n");
|
pr_err("Failed to add main_clk alias to auxclk3_ck\n");
|
||||||
return;
|
|
||||||
}
|
|
||||||
clk_set_rate(phy_ref_clk, 19200000);
|
|
||||||
clk_prepare_enable(phy_ref_clk);
|
|
||||||
|
|
||||||
/* disable the power to the usb hub prior to init and reset phy+hub */
|
|
||||||
ret = gpio_request_array(panda_ehci_gpios,
|
|
||||||
ARRAY_SIZE(panda_ehci_gpios));
|
|
||||||
if (ret) {
|
|
||||||
pr_err("Unable to initialize EHCI power/reset\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpio_export(GPIO_HUB_POWER, 0);
|
|
||||||
gpio_export(GPIO_HUB_NRESET, 0);
|
|
||||||
gpio_set_value(GPIO_HUB_NRESET, 1);
|
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
|
|
||||||
/* enable power to hub */
|
|
||||||
gpio_set_value(GPIO_HUB_POWER, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct omap_musb_board_data musb_board_data = {
|
static struct omap_musb_board_data musb_board_data = {
|
||||||
|
|
|
@ -458,14 +458,16 @@ static int __init overo_spi_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = OVERO_GPIO_USBH_NRESET,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = OVERO_GPIO_USBH_NRESET,
|
|
||||||
.reset_gpio_port[2] = -EINVAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_MUX
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
@ -502,6 +504,8 @@ static void __init overo_init(void)
|
||||||
ARRAY_SIZE(overo_nand_partitions), NAND_CS, 0, NULL);
|
ARRAY_SIZE(overo_nand_partitions), NAND_CS, 0, NULL);
|
||||||
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
|
||||||
usb_musb_init(NULL);
|
usb_musb_init(NULL);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
overo_spi_init();
|
overo_spi_init();
|
||||||
overo_init_smsc911x();
|
overo_init_smsc911x();
|
||||||
|
|
|
@ -92,14 +92,16 @@ static struct mtd_partition zoom_nand_partitions[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||||
|
{
|
||||||
|
.port = 2,
|
||||||
|
.reset_gpio = ZOOM3_EHCI_RESET_GPIO,
|
||||||
|
.vcc_gpio = -EINVAL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||||
.port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
||||||
.phy_reset = true,
|
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
|
||||||
.reset_gpio_port[1] = ZOOM3_EHCI_RESET_GPIO,
|
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init omap_zoom_init(void)
|
static void __init omap_zoom_init(void)
|
||||||
|
@ -109,6 +111,8 @@ static void __init omap_zoom_init(void)
|
||||||
} else if (machine_is_omap_zoom3()) {
|
} else if (machine_is_omap_zoom3()) {
|
||||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
|
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
|
||||||
omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT);
|
omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT);
|
||||||
|
|
||||||
|
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||||
usbhs_init(&usbhs_bdata);
|
usbhs_init(&usbhs_bdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -958,6 +958,14 @@ int __init am33xx_clk_init(void)
|
||||||
|
|
||||||
clk_set_parent(&timer3_fck, &sys_clkin_ck);
|
clk_set_parent(&timer3_fck, &sys_clkin_ck);
|
||||||
clk_set_parent(&timer6_fck, &sys_clkin_ck);
|
clk_set_parent(&timer6_fck, &sys_clkin_ck);
|
||||||
|
/*
|
||||||
|
* The On-Chip 32K RC Osc clock is not an accurate clock-source as per
|
||||||
|
* the design/spec, so as a result, for example, timer which supposed
|
||||||
|
* to get expired @60Sec, but will expire somewhere ~@40Sec, which is
|
||||||
|
* not expected by any use-case, so change WDT1 clock source to PRCM
|
||||||
|
* 32KHz clock.
|
||||||
|
*/
|
||||||
|
clk_set_parent(&wdt1_fck, &clkdiv32k_ick);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -480,20 +480,22 @@ int omap3_noncore_dpll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||||
if (!dd)
|
if (!dd)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
__clk_prepare(dd->clk_bypass);
|
|
||||||
clk_enable(dd->clk_bypass);
|
|
||||||
__clk_prepare(dd->clk_ref);
|
|
||||||
clk_enable(dd->clk_ref);
|
|
||||||
|
|
||||||
if (__clk_get_rate(dd->clk_bypass) == rate &&
|
if (__clk_get_rate(dd->clk_bypass) == rate &&
|
||||||
(dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
|
(dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
|
||||||
pr_debug("%s: %s: set rate: entering bypass.\n",
|
pr_debug("%s: %s: set rate: entering bypass.\n",
|
||||||
__func__, __clk_get_name(hw->clk));
|
__func__, __clk_get_name(hw->clk));
|
||||||
|
|
||||||
|
__clk_prepare(dd->clk_bypass);
|
||||||
|
clk_enable(dd->clk_bypass);
|
||||||
ret = _omap3_noncore_dpll_bypass(clk);
|
ret = _omap3_noncore_dpll_bypass(clk);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
new_parent = dd->clk_bypass;
|
new_parent = dd->clk_bypass;
|
||||||
|
clk_disable(dd->clk_bypass);
|
||||||
|
__clk_unprepare(dd->clk_bypass);
|
||||||
} else {
|
} else {
|
||||||
|
__clk_prepare(dd->clk_ref);
|
||||||
|
clk_enable(dd->clk_ref);
|
||||||
|
|
||||||
if (dd->last_rounded_rate != rate)
|
if (dd->last_rounded_rate != rate)
|
||||||
rate = __clk_round_rate(hw->clk, rate);
|
rate = __clk_round_rate(hw->clk, rate);
|
||||||
|
|
||||||
|
@ -514,6 +516,8 @@ int omap3_noncore_dpll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||||
ret = omap3_noncore_dpll_program(clk, freqsel);
|
ret = omap3_noncore_dpll_program(clk, freqsel);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
new_parent = dd->clk_ref;
|
new_parent = dd->clk_ref;
|
||||||
|
clk_disable(dd->clk_ref);
|
||||||
|
__clk_unprepare(dd->clk_ref);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* FIXME - this is all wrong. common code handles reparenting and
|
* FIXME - this is all wrong. common code handles reparenting and
|
||||||
|
@ -525,11 +529,6 @@ int omap3_noncore_dpll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||||
if (!ret)
|
if (!ret)
|
||||||
__clk_reparent(hw->clk, new_parent);
|
__clk_reparent(hw->clk, new_parent);
|
||||||
|
|
||||||
clk_disable(dd->clk_ref);
|
|
||||||
__clk_unprepare(dd->clk_ref);
|
|
||||||
clk_disable(dd->clk_bypass);
|
|
||||||
__clk_unprepare(dd->clk_bypass);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,6 +138,8 @@
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
|
|
||||||
#include <asm/system_misc.h>
|
#include <asm/system_misc.h>
|
||||||
|
|
||||||
|
@ -610,8 +612,6 @@ static int _enable_wakeup(struct omap_hwmod *oh, u32 *v)
|
||||||
|
|
||||||
/* XXX test pwrdm_get_wken for this hwmod's subsystem */
|
/* XXX test pwrdm_get_wken for this hwmod's subsystem */
|
||||||
|
|
||||||
oh->_int_flags |= _HWMOD_WAKEUP_ENABLED;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -645,8 +645,6 @@ static int _disable_wakeup(struct omap_hwmod *oh, u32 *v)
|
||||||
|
|
||||||
/* XXX test pwrdm_get_wken for this hwmod's subsystem */
|
/* XXX test pwrdm_get_wken for this hwmod's subsystem */
|
||||||
|
|
||||||
oh->_int_flags &= ~_HWMOD_WAKEUP_ENABLED;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2349,6 +2347,34 @@ static int _shutdown(struct omap_hwmod *oh)
|
||||||
return 0;
|
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
|
* _init_mpu_rt_base - populate the virtual address for a hwmod
|
||||||
* @oh: struct omap_hwmod * to locate the virtual address
|
* @oh: struct omap_hwmod * to locate the virtual address
|
||||||
|
@ -2361,7 +2387,8 @@ static int _shutdown(struct omap_hwmod *oh)
|
||||||
static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
|
static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
|
||||||
{
|
{
|
||||||
struct omap_hwmod_addr_space *mem;
|
struct omap_hwmod_addr_space *mem;
|
||||||
void __iomem *va_start;
|
void __iomem *va_start = NULL;
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
if (!oh)
|
if (!oh)
|
||||||
return;
|
return;
|
||||||
|
@ -2375,10 +2402,18 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
|
||||||
if (!mem) {
|
if (!mem) {
|
||||||
pr_debug("omap_hwmod: %s: no MPU register target found\n",
|
pr_debug("omap_hwmod: %s: no MPU register target found\n",
|
||||||
oh->name);
|
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) {
|
if (!va_start) {
|
||||||
pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
|
pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
|
||||||
return;
|
return;
|
||||||
|
@ -2410,7 +2445,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
|
||||||
if (oh->_state != _HWMOD_STATE_REGISTERED)
|
if (oh->_state != _HWMOD_STATE_REGISTERED)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
_init_mpu_rt_base(oh, NULL);
|
if (oh->class->sysc)
|
||||||
|
_init_mpu_rt_base(oh, NULL);
|
||||||
|
|
||||||
r = _init_clocks(oh, NULL);
|
r = _init_clocks(oh, NULL);
|
||||||
if (IS_ERR_VALUE(r)) {
|
if (IS_ERR_VALUE(r)) {
|
||||||
|
|
|
@ -477,15 +477,13 @@ struct omap_hwmod_omap4_prcm {
|
||||||
* These are for internal use only and are managed by the omap_hwmod code.
|
* These are for internal use only and are managed by the omap_hwmod code.
|
||||||
*
|
*
|
||||||
* _HWMOD_NO_MPU_PORT: no path exists for the MPU to write to this module
|
* _HWMOD_NO_MPU_PORT: no path exists for the MPU to write to this module
|
||||||
* _HWMOD_WAKEUP_ENABLED: set when the omap_hwmod code has enabled ENAWAKEUP
|
|
||||||
* _HWMOD_SYSCONFIG_LOADED: set when the OCP_SYSCONFIG value has been cached
|
* _HWMOD_SYSCONFIG_LOADED: set when the OCP_SYSCONFIG value has been cached
|
||||||
* _HWMOD_SKIP_ENABLE: set if hwmod enabled during init (HWMOD_INIT_NO_IDLE) -
|
* _HWMOD_SKIP_ENABLE: set if hwmod enabled during init (HWMOD_INIT_NO_IDLE) -
|
||||||
* causes the first call to _enable() to only update the pinmux
|
* causes the first call to _enable() to only update the pinmux
|
||||||
*/
|
*/
|
||||||
#define _HWMOD_NO_MPU_PORT (1 << 0)
|
#define _HWMOD_NO_MPU_PORT (1 << 0)
|
||||||
#define _HWMOD_WAKEUP_ENABLED (1 << 1)
|
#define _HWMOD_SYSCONFIG_LOADED (1 << 1)
|
||||||
#define _HWMOD_SYSCONFIG_LOADED (1 << 2)
|
#define _HWMOD_SKIP_ENABLE (1 << 2)
|
||||||
#define _HWMOD_SKIP_ENABLE (1 << 3)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* omap_hwmod._state definitions
|
* omap_hwmod._state definitions
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "prm-regbits-33xx.h"
|
#include "prm-regbits-33xx.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "mmc.h"
|
#include "mmc.h"
|
||||||
|
#include "wd_timer.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IP blocks
|
* IP blocks
|
||||||
|
@ -2087,8 +2088,21 @@ static struct omap_hwmod am33xx_uart6_hwmod = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 'wd_timer' class */
|
/* 'wd_timer' class */
|
||||||
|
static struct omap_hwmod_class_sysconfig wdt_sysc = {
|
||||||
|
.rev_offs = 0x0,
|
||||||
|
.sysc_offs = 0x10,
|
||||||
|
.syss_offs = 0x14,
|
||||||
|
.sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
|
||||||
|
SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
|
||||||
|
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
||||||
|
SIDLE_SMART_WKUP),
|
||||||
|
.sysc_fields = &omap_hwmod_sysc_type1,
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
|
static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
|
||||||
.name = "wd_timer",
|
.name = "wd_timer",
|
||||||
|
.sysc = &wdt_sysc,
|
||||||
|
.pre_shutdown = &omap2_wd_timer_disable,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2099,6 +2113,7 @@ static struct omap_hwmod am33xx_wd_timer1_hwmod = {
|
||||||
.name = "wd_timer2",
|
.name = "wd_timer2",
|
||||||
.class = &am33xx_wd_timer_hwmod_class,
|
.class = &am33xx_wd_timer_hwmod_class,
|
||||||
.clkdm_name = "l4_wkup_clkdm",
|
.clkdm_name = "l4_wkup_clkdm",
|
||||||
|
.flags = HWMOD_SWSUP_SIDLE,
|
||||||
.main_clk = "wdt1_fck",
|
.main_clk = "wdt1_fck",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
.omap4 = {
|
.omap4 = {
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*/
|
*/
|
||||||
|
#include <linux/of.h>
|
||||||
|
|
||||||
#include <asm/pmu.h>
|
#include <asm/pmu.h>
|
||||||
|
|
||||||
#include "soc.h"
|
#include "soc.h"
|
||||||
|
@ -63,6 +65,15 @@ static int __init omap_init_pmu(void)
|
||||||
unsigned oh_num;
|
unsigned oh_num;
|
||||||
char **oh_names;
|
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
|
* To create an ARM-PMU device the following HWMODs
|
||||||
* are required for the various OMAP2+ devices.
|
* are required for the various OMAP2+ devices.
|
||||||
|
@ -75,9 +86,6 @@ static int __init omap_init_pmu(void)
|
||||||
if (cpu_is_omap443x()) {
|
if (cpu_is_omap443x()) {
|
||||||
oh_num = ARRAY_SIZE(omap4430_pmu_oh_names);
|
oh_num = ARRAY_SIZE(omap4430_pmu_oh_names);
|
||||||
oh_names = 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()) {
|
} else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
|
||||||
oh_num = ARRAY_SIZE(omap3_pmu_oh_names);
|
oh_num = ARRAY_SIZE(omap3_pmu_oh_names);
|
||||||
oh_names = omap3_pmu_oh_names;
|
oh_names = omap3_pmu_oh_names;
|
||||||
|
|
|
@ -52,7 +52,6 @@ enum {
|
||||||
#define ALREADYACTIVE_SWITCH 0
|
#define ALREADYACTIVE_SWITCH 0
|
||||||
#define FORCEWAKEUP_SWITCH 1
|
#define FORCEWAKEUP_SWITCH 1
|
||||||
#define LOWPOWERSTATE_SWITCH 2
|
#define LOWPOWERSTATE_SWITCH 2
|
||||||
#define ERROR_SWITCH 3
|
|
||||||
|
|
||||||
/* pwrdm_list contains all registered struct powerdomains */
|
/* pwrdm_list contains all registered struct powerdomains */
|
||||||
static LIST_HEAD(pwrdm_list);
|
static LIST_HEAD(pwrdm_list);
|
||||||
|
@ -233,10 +232,7 @@ static u8 _pwrdm_save_clkdm_state_and_activate(struct powerdomain *pwrdm,
|
||||||
{
|
{
|
||||||
u8 sleep_switch;
|
u8 sleep_switch;
|
||||||
|
|
||||||
if (curr_pwrst < 0) {
|
if (curr_pwrst < PWRDM_POWER_ON) {
|
||||||
WARN_ON(1);
|
|
||||||
sleep_switch = ERROR_SWITCH;
|
|
||||||
} else if (curr_pwrst < PWRDM_POWER_ON) {
|
|
||||||
if (curr_pwrst > pwrst &&
|
if (curr_pwrst > pwrst &&
|
||||||
pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE &&
|
pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE &&
|
||||||
arch_pwrdm->pwrdm_set_lowpwrstchange) {
|
arch_pwrdm->pwrdm_set_lowpwrstchange) {
|
||||||
|
@ -1091,7 +1087,8 @@ int pwrdm_post_transition(struct powerdomain *pwrdm)
|
||||||
*/
|
*/
|
||||||
int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
|
int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
|
||||||
{
|
{
|
||||||
u8 curr_pwrst, next_pwrst, sleep_switch;
|
u8 next_pwrst, sleep_switch;
|
||||||
|
int curr_pwrst;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool hwsup = false;
|
bool hwsup = false;
|
||||||
|
|
||||||
|
@ -1107,16 +1104,17 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
|
||||||
pwrdm_lock(pwrdm);
|
pwrdm_lock(pwrdm);
|
||||||
|
|
||||||
curr_pwrst = pwrdm_read_pwrst(pwrdm);
|
curr_pwrst = pwrdm_read_pwrst(pwrdm);
|
||||||
|
if (curr_pwrst < 0) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto osps_out;
|
||||||
|
}
|
||||||
|
|
||||||
next_pwrst = pwrdm_read_next_pwrst(pwrdm);
|
next_pwrst = pwrdm_read_next_pwrst(pwrdm);
|
||||||
if (curr_pwrst == pwrst && next_pwrst == pwrst)
|
if (curr_pwrst == pwrst && next_pwrst == pwrst)
|
||||||
goto osps_out;
|
goto osps_out;
|
||||||
|
|
||||||
sleep_switch = _pwrdm_save_clkdm_state_and_activate(pwrdm, curr_pwrst,
|
sleep_switch = _pwrdm_save_clkdm_state_and_activate(pwrdm, curr_pwrst,
|
||||||
pwrst, &hwsup);
|
pwrst, &hwsup);
|
||||||
if (sleep_switch == ERROR_SWITCH) {
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto osps_out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = pwrdm_set_next_pwrst(pwrdm, pwrst);
|
ret = pwrdm_set_next_pwrst(pwrdm, pwrst);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
|
@ -143,7 +143,12 @@ static struct property device_disabled = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct of_device_id omap_timer_match[] __initdata = {
|
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", },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,12 @@
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
|
#include <linux/regulator/machine.h>
|
||||||
#include <asm/io.h>
|
#include <linux/regulator/fixed.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/usb/phy.h>
|
||||||
|
|
||||||
#include "soc.h"
|
#include "soc.h"
|
||||||
#include "omap_device.h"
|
#include "omap_device.h"
|
||||||
|
@ -526,3 +530,155 @@ void __init usbhs_init(struct usbhs_omap_platform_data *pdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Template for PHY regulators */
|
||||||
|
static struct fixed_voltage_config hsusb_reg_config = {
|
||||||
|
/* .supply_name filled later */
|
||||||
|
.microvolts = 3300000,
|
||||||
|
.gpio = -1, /* updated later */
|
||||||
|
.startup_delay = 70000, /* 70msec */
|
||||||
|
.enable_high = 1, /* updated later */
|
||||||
|
.enabled_at_boot = 0, /* keep in RESET */
|
||||||
|
/* .init_data filled later */
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *nop_name = "nop_usb_xceiv"; /* NOP PHY driver */
|
||||||
|
static const char *reg_name = "reg-fixed-voltage"; /* Regulator driver */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* usbhs_add_regulator - Add a gpio based fixed voltage regulator device
|
||||||
|
* @name: name for the regulator
|
||||||
|
* @dev_id: device id of the device this regulator supplies power to
|
||||||
|
* @dev_supply: supply name that the device expects
|
||||||
|
* @gpio: GPIO number
|
||||||
|
* @polarity: 1 - Active high, 0 - Active low
|
||||||
|
*/
|
||||||
|
static int usbhs_add_regulator(char *name, char *dev_id, char *dev_supply,
|
||||||
|
int gpio, int polarity)
|
||||||
|
{
|
||||||
|
struct regulator_consumer_supply *supplies;
|
||||||
|
struct regulator_init_data *reg_data;
|
||||||
|
struct fixed_voltage_config *config;
|
||||||
|
struct platform_device *pdev;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
supplies = kzalloc(sizeof(*supplies), GFP_KERNEL);
|
||||||
|
if (!supplies)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
supplies->supply = dev_supply;
|
||||||
|
supplies->dev_name = dev_id;
|
||||||
|
|
||||||
|
reg_data = kzalloc(sizeof(*reg_data), GFP_KERNEL);
|
||||||
|
if (!reg_data)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
reg_data->constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS;
|
||||||
|
reg_data->consumer_supplies = supplies;
|
||||||
|
reg_data->num_consumer_supplies = 1;
|
||||||
|
|
||||||
|
config = kmemdup(&hsusb_reg_config, sizeof(hsusb_reg_config),
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!config)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
config->supply_name = name;
|
||||||
|
config->gpio = gpio;
|
||||||
|
config->enable_high = polarity;
|
||||||
|
config->init_data = reg_data;
|
||||||
|
|
||||||
|
/* create a regulator device */
|
||||||
|
pdev = kzalloc(sizeof(*pdev), GFP_KERNEL);
|
||||||
|
if (!pdev)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pdev->id = PLATFORM_DEVID_AUTO;
|
||||||
|
pdev->name = reg_name;
|
||||||
|
pdev->dev.platform_data = config;
|
||||||
|
|
||||||
|
ret = platform_device_register(pdev);
|
||||||
|
if (ret)
|
||||||
|
pr_err("%s: Failed registering regulator %s for %s\n",
|
||||||
|
__func__, name, dev_id);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int usbhs_init_phys(struct usbhs_phy_data *phy, int num_phys)
|
||||||
|
{
|
||||||
|
char *rail_name;
|
||||||
|
int i, len;
|
||||||
|
struct platform_device *pdev;
|
||||||
|
char *phy_id;
|
||||||
|
|
||||||
|
/* the phy_id will be something like "nop_usb_xceiv.1" */
|
||||||
|
len = strlen(nop_name) + 3; /* 3 -> ".1" and NULL terminator */
|
||||||
|
|
||||||
|
for (i = 0; i < num_phys; i++) {
|
||||||
|
|
||||||
|
if (!phy->port) {
|
||||||
|
pr_err("%s: Invalid port 0. Must start from 1\n",
|
||||||
|
__func__);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* do we need a NOP PHY device ? */
|
||||||
|
if (!gpio_is_valid(phy->reset_gpio) &&
|
||||||
|
!gpio_is_valid(phy->vcc_gpio))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* create a NOP PHY device */
|
||||||
|
pdev = kzalloc(sizeof(*pdev), GFP_KERNEL);
|
||||||
|
if (!pdev)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pdev->id = phy->port;
|
||||||
|
pdev->name = nop_name;
|
||||||
|
pdev->dev.platform_data = phy->platform_data;
|
||||||
|
|
||||||
|
phy_id = kmalloc(len, GFP_KERNEL);
|
||||||
|
if (!phy_id)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
scnprintf(phy_id, len, "nop_usb_xceiv.%d\n",
|
||||||
|
pdev->id);
|
||||||
|
|
||||||
|
if (platform_device_register(pdev)) {
|
||||||
|
pr_err("%s: Failed to register device %s\n",
|
||||||
|
__func__, phy_id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
usb_bind_phy("ehci-omap.0", phy->port - 1, phy_id);
|
||||||
|
|
||||||
|
/* Do we need RESET regulator ? */
|
||||||
|
if (gpio_is_valid(phy->reset_gpio)) {
|
||||||
|
|
||||||
|
rail_name = kmalloc(13, GFP_KERNEL);
|
||||||
|
if (!rail_name)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
scnprintf(rail_name, 13, "hsusb%d_reset", phy->port);
|
||||||
|
|
||||||
|
usbhs_add_regulator(rail_name, phy_id, "reset",
|
||||||
|
phy->reset_gpio, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Do we need VCC regulator ? */
|
||||||
|
if (gpio_is_valid(phy->vcc_gpio)) {
|
||||||
|
|
||||||
|
rail_name = kmalloc(13, GFP_KERNEL);
|
||||||
|
if (!rail_name)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
scnprintf(rail_name, 13, "hsusb%d_vcc", phy->port);
|
||||||
|
|
||||||
|
usbhs_add_regulator(rail_name, phy_id, "vcc",
|
||||||
|
phy->vcc_gpio, phy->vcc_polarity);
|
||||||
|
}
|
||||||
|
|
||||||
|
phy++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -53,8 +53,17 @@
|
||||||
#define USBPHY_OTGSESSEND_EN (1 << 20)
|
#define USBPHY_OTGSESSEND_EN (1 << 20)
|
||||||
#define USBPHY_DATA_POLARITY (1 << 23)
|
#define USBPHY_DATA_POLARITY (1 << 23)
|
||||||
|
|
||||||
|
struct usbhs_phy_data {
|
||||||
|
int port; /* 1 indexed port number */
|
||||||
|
int reset_gpio;
|
||||||
|
int vcc_gpio;
|
||||||
|
bool vcc_polarity; /* 1 active high, 0 active low */
|
||||||
|
void *platform_data;
|
||||||
|
};
|
||||||
|
|
||||||
extern void usb_musb_init(struct omap_musb_board_data *board_data);
|
extern void usb_musb_init(struct omap_musb_board_data *board_data);
|
||||||
extern void usbhs_init(struct usbhs_omap_platform_data *pdata);
|
extern void usbhs_init(struct usbhs_omap_platform_data *pdata);
|
||||||
|
extern int usbhs_init_phys(struct usbhs_phy_data *phy, int num_phys);
|
||||||
|
|
||||||
extern void am35x_musb_reset(void);
|
extern void am35x_musb_reset(void);
|
||||||
extern void am35x_musb_phy_power(u8 on);
|
extern void am35x_musb_phy_power(u8 on);
|
||||||
|
|
|
@ -52,6 +52,13 @@ static u32 omap_reserved_systimers;
|
||||||
static LIST_HEAD(omap_timer_list);
|
static LIST_HEAD(omap_timer_list);
|
||||||
static DEFINE_SPINLOCK(dm_timer_lock);
|
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
|
* omap_dm_timer_read_reg - read timer registers in posted and non-posted mode
|
||||||
* @timer: timer pointer over which read operation to perform
|
* @timer: timer pointer over which read operation to perform
|
||||||
|
@ -178,29 +185,82 @@ int omap_dm_timer_reserve_systimer(int id)
|
||||||
return 0;
|
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 omap_dm_timer *timer = NULL, *t;
|
||||||
|
struct device_node *np = NULL;
|
||||||
unsigned long flags;
|
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);
|
spin_lock_irqsave(&dm_timer_lock, flags);
|
||||||
list_for_each_entry(t, &omap_timer_list, node) {
|
list_for_each_entry(t, &omap_timer_list, node) {
|
||||||
if (t->reserved)
|
if (t->reserved)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
timer = t;
|
switch (req_type) {
|
||||||
timer->reserved = 1;
|
case REQUEST_BY_ID:
|
||||||
break;
|
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);
|
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||||
|
|
||||||
if (timer) {
|
if (timer && omap_dm_timer_prepare(timer)) {
|
||||||
ret = omap_dm_timer_prepare(timer);
|
timer->reserved = 0;
|
||||||
if (ret) {
|
timer = NULL;
|
||||||
timer->reserved = 0;
|
|
||||||
timer = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!timer)
|
if (!timer)
|
||||||
|
@ -208,43 +268,23 @@ struct omap_dm_timer *omap_dm_timer_request(void)
|
||||||
|
|
||||||
return timer;
|
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);
|
EXPORT_SYMBOL_GPL(omap_dm_timer_request);
|
||||||
|
|
||||||
struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
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 */
|
/* Requesting timer by ID is not supported when device tree is used */
|
||||||
if (of_have_populated_dt()) {
|
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__);
|
__func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&dm_timer_lock, flags);
|
return _omap_dm_timer_request(REQUEST_BY_ID, &id);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
|
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 *omap_dm_timer_request_by_cap(u32 cap)
|
||||||
{
|
{
|
||||||
struct omap_dm_timer *timer = NULL, *t;
|
return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_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)
|
int omap_dm_timer_free(struct omap_dm_timer *timer)
|
||||||
{
|
{
|
||||||
if (unlikely(!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)
|
void omap_dm_timer_enable(struct omap_dm_timer *timer)
|
||||||
{
|
{
|
||||||
|
int c;
|
||||||
|
|
||||||
pm_runtime_get_sync(&timer->pdev->dev);
|
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);
|
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);
|
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);
|
l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
|
||||||
if (!(l & OMAP_TIMER_CTRL_ST)) {
|
if (!(l & OMAP_TIMER_CTRL_ST)) {
|
||||||
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);
|
__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
|
* Since the register values are computed and written within
|
||||||
* __omap_dm_timer_stop, we need to use read to retrieve the
|
* __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);
|
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);
|
l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
|
||||||
if (autoreload) {
|
if (autoreload) {
|
||||||
l |= OMAP_TIMER_CTRL_AR;
|
l |= OMAP_TIMER_CTRL_AR;
|
||||||
|
@ -770,6 +783,8 @@ int omap_dm_timers_active(void)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(omap_dm_timers_active);
|
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
|
* omap_dm_timer_probe - probe function called for every registered device
|
||||||
* @pdev: pointer to current timer platform 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 omap_dm_timer *timer;
|
||||||
struct resource *mem, *irq;
|
struct resource *mem, *irq;
|
||||||
struct device *dev = &pdev->dev;
|
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) {
|
if (!pdata && !dev->of_node) {
|
||||||
dev_err(dev, "%s: no platform data.\n", __func__);
|
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;
|
timer->capability |= OMAP_TIMER_SECURE;
|
||||||
} else {
|
} else {
|
||||||
timer->id = pdev->id;
|
timer->id = pdev->id;
|
||||||
timer->errata = pdata->timer_errata;
|
|
||||||
timer->capability = pdata->timer_capability;
|
timer->capability = pdata->timer_capability;
|
||||||
timer->reserved = omap_dm_timer_reserved_systimer(timer->id);
|
timer->reserved = omap_dm_timer_reserved_systimer(timer->id);
|
||||||
timer->get_context_loss_count = pdata->get_context_loss_count;
|
timer->get_context_loss_count = pdata->get_context_loss_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pdata)
|
||||||
|
timer->errata = pdata->timer_errata;
|
||||||
|
|
||||||
timer->irq = irq->start;
|
timer->irq = irq->start;
|
||||||
timer->pdev = pdev;
|
timer->pdev = pdev;
|
||||||
|
|
||||||
|
@ -881,8 +902,34 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
|
||||||
return ret;
|
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[] = {
|
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);
|
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(void);
|
||||||
struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id);
|
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_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);
|
int omap_dm_timer_free(struct omap_dm_timer *timer);
|
||||||
void omap_dm_timer_enable(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);
|
void omap_dm_timer_disable(struct omap_dm_timer *timer);
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
|
|
||||||
struct nop_usb_xceiv_platform_data {
|
struct nop_usb_xceiv_platform_data {
|
||||||
enum usb_phy_type type;
|
enum usb_phy_type type;
|
||||||
|
unsigned long clk_rate;
|
||||||
|
|
||||||
|
/* if set fails with -EPROBE_DEFER if can't get regulator */
|
||||||
|
unsigned int needs_vcc:1;
|
||||||
|
unsigned int needs_reset:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE))
|
#if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE))
|
||||||
|
|
Loading…
Add table
Reference in a new issue