[Armadeus-commitlog] armadeus branch, master, updated. release-3.3-151-g34221c1
Brought to you by:
sszy
|
From: Julien B a. A. <ar...@us...> - 2010-12-01 17:56:19
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 34221c1c08a8b6cbdf2c7986eb663436cccea83f (commit)
from 9b6b500b51a910037532f8f8614b4a80ace307b8 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 34221c1c08a8b6cbdf2c7986eb663436cccea83f
Author: Julien Boibessot <jul...@ar...>
Date: Wed Dec 1 18:55:37 2010 +0100
[LINUX] 2.6.36: Add USBH2 support and APF51Dev (preliminary) support. Update default APF51 config accordingly
-----------------------------------------------------------------------
Summary of changes:
.../armadeus/apf51/apf51-linux-2.6.36.config | 34 ++++-
.../2.6.36/400-armadeus-add_apf51_module.patch | 75 +++++++++--
...deus-iomux-mx51-add_USBH2_pins_definition.patch | 56 ++++++++
...ct_some_mx5_regiter_settings_and_comments.patch | 30 +++++
...-mx5-devices-add_USBH2_to_list_of_devices.patch | 135 ++++++++++++++++++++
.../408-armadeus-add_apf51-dev_baseboard.patch | 99 ++++++++++++++
6 files changed, 410 insertions(+), 19 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/405-armadeus-iomux-mx51-add_USBH2_pins_definition.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/406-armadeus-plat-mxc-ehci-correct_some_mx5_regiter_settings_and_comments.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/407-armadeus-mx5-devices-add_USBH2_to_list_of_devices.patch
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/408-armadeus-add_apf51-dev_baseboard.patch
diff --git a/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.36.config b/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.36.config
index 23dfcd1..3c76717 100644
--- a/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.36.config
+++ b/buildroot/target/device/armadeus/apf51/apf51-linux-2.6.36.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.36
-# Wed Nov 3 19:41:42 2010
+# Wed Dec 1 17:27:05 2010
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -247,11 +247,14 @@ CONFIG_ARCH_MX51=y
# CONFIG_MACH_MX51_BABBAGE is not set
# CONFIG_MACH_MX51_3DS is not set
# CONFIG_MACH_EUKREA_CPUIMX51 is not set
-CONFIG_MACH_ARMADEUS_APF51=y
+CONFIG_MACH_APF51=y
+CONFIG_MACH_APF51_HAS_BASEBOARD=y
+CONFIG_MACH_APF51_DEV=y
# CONFIG_MXC_IRQ_PRIOR is not set
CONFIG_MXC_TZIC=y
# CONFIG_MXC_PWM is not set
# CONFIG_MXC_DEBUG_BOARD is not set
+CONFIG_MXC_ULPI=y
CONFIG_ARCH_MXC_IOMUX_V3=y
#
@@ -749,9 +752,29 @@ CONFIG_NETDEVICES=y
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
+CONFIG_MII=y
# CONFIG_AX88796 is not set
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
@@ -770,7 +793,8 @@ CONFIG_NET_ETHERNET=y
# CONFIG_B44 is not set
# CONFIG_KS8851 is not set
# CONFIG_KS8851_MLL is not set
-# CONFIG_FEC is not set
+CONFIG_FEC=y
+# CONFIG_FEC2 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
CONFIG_WLAN=y
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/400-armadeus-add_apf51_module.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/400-armadeus-add_apf51_module.patch
index d18ff91..8177b57 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/400-armadeus-add_apf51_module.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/400-armadeus-add_apf51_module.patch
@@ -1,12 +1,12 @@
Index: linux-2.6.36/arch/arm/mach-mx5/Kconfig
===================================================================
---- linux-2.6.36.orig/arch/arm/mach-mx5/Kconfig 2010-11-30 16:25:47.000000000 +0100
-+++ linux-2.6.36/arch/arm/mach-mx5/Kconfig 2010-11-30 16:25:56.000000000 +0100
+--- linux-2.6.36.orig/arch/arm/mach-mx5/Kconfig 2010-11-30 17:32:17.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/Kconfig 2010-12-01 15:43:11.000000000 +0100
@@ -42,4 +42,11 @@
endchoice
-+config MACH_ARMADEUS_APF51
++config MACH_APF51
+ bool "Support Armadeus APF51"
+ select MXC_ULPI
+ help
@@ -16,18 +16,18 @@ Index: linux-2.6.36/arch/arm/mach-mx5/Kconfig
endif
Index: linux-2.6.36/arch/arm/mach-mx5/Makefile
===================================================================
---- linux-2.6.36.orig/arch/arm/mach-mx5/Makefile 2010-11-30 16:25:47.000000000 +0100
-+++ linux-2.6.36/arch/arm/mach-mx5/Makefile 2010-11-30 16:25:56.000000000 +0100
+--- linux-2.6.36.orig/arch/arm/mach-mx5/Makefile 2010-11-30 17:32:17.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/Makefile 2010-12-01 15:43:11.000000000 +0100
@@ -9,3 +9,4 @@
obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
-+obj-$(CONFIG_MACH_ARMADEUS_APF51) += board-apf51.o
++obj-$(CONFIG_MACH_APF51) += board-apf51.o
Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/arch/arm/mach-mx5/board-apf51.c 2010-11-30 16:32:59.000000000 +0100
-@@ -0,0 +1,301 @@
++++ linux-2.6.36/arch/arm/mach-mx5/board-apf51.c 2010-12-01 15:45:20.000000000 +0100
+@@ -0,0 +1,348 @@
+/*
+ * Copyright 2010 Armadeus Systems
+ *
@@ -62,9 +62,12 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+
+#include "devices.h"
+
++extern void apf51_baseboard_init(void);
++
+/* USB_CTRL_1 */
+#define MX51_USB_CTRL_1_OFFSET 0x10
+#define MX51_USB_CTRL_UH1_EXT_CLK_EN (1 << 25)
++#define MX51_USB_CTRL_UH2_EXT_CLK_EN (1 << 26)
+
+
+static struct pad_desc apf51_pads[] = {
@@ -87,6 +90,18 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+ MX51_PAD_USBH1_STP__USBH1_STP,
+
+ /* USB HOST2 */
++ MX51_PAD_EIM_A24__USBH2_CLK,
++ MX51_PAD_EIM_A25__USBH2_DIR,
++ MX51_PAD_EIM_A26__USBH2_STP,
++ MX51_PAD_EIM_A27__USBH2_NXT,
++ MX51_PAD_EIM_D16__USBH2_DATA0,
++ MX51_PAD_EIM_D17__USBH2_DATA1,
++ MX51_PAD_EIM_D18__USBH2_DATA2,
++ MX51_PAD_EIM_D19__USBH2_DATA3,
++ MX51_PAD_EIM_D20__USBH2_DATA4,
++ MX51_PAD_EIM_D21__USBH2_DATA5,
++ MX51_PAD_EIM_D22__USBH2_DATA6,
++ MX51_PAD_EIM_D23__USBH2_DATA7,
+
+ /* Debug PINS */
+/* MX51_PAD_GPIO_1_2__GPIO_1_2,
@@ -144,6 +159,23 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+ return 0;
+}
+
++static int initialize_usbh2_port(struct platform_device *pdev)
++{
++ u32 v;
++ void __iomem *usb_base;
++ u32 usbother_base;
++
++ usb_base = ioremap(MX51_OTG_BASE_ADDR, SZ_4K);
++ usbother_base = (u32)(usb_base + MX5_USBOTHER_REGS_OFFSET);
++
++ /* The clock for the USBH2 ULPI port will come externally from the PHY. */
++ v = __raw_readl(usbother_base + MX51_USB_CTRL_1_OFFSET);
++ __raw_writel(v | MX51_USB_CTRL_UH2_EXT_CLK_EN, usbother_base + MX51_USB_CTRL_1_OFFSET);
++ iounmap(usb_base);
++
++ return 0;
++}
++
+/* ULPI register addresses */
+#define ULPI_VID_LOW 0x00 /* Vendor ID low */
+#define ULPI_VID_HIGH 0x01 /* Vendor ID high */
@@ -180,7 +212,7 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+ pid = otg->io_ops->read(otg, ULPI_PID_HIGH) << 8;
+ pid = pid | otg->io_ops->read(otg, ULPI_PID_LOW);
+
-+ pr_info("ULPI OTG Vendor ID 0x%x Product ID 0x%x\n", vid, pid);
++ pr_info("ULPI OTG (%s) Vendor ID 0x%x Product ID 0x%x\n", otg->label, vid, pid);
+ if (vid != 0x424 || pid != 0x07) {
+ pr_err("No USB3320 found\n");
+ return -1;
@@ -241,10 +273,24 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+ .otg = &usb3320_1,
+};
+
++/* ?? Preferably use otg_ulpi_create from drivers/usb/otg/ulpi.c ?? */
++struct otg_transceiver usb3320_2 = {
++ .io_ops = &mxc_ulpi_access_ops,
++ .init = usb3320_init,
++ .set_vbus = usb3320_set_vbus,
++};
++
++static struct mxc_usbh_platform_data usbh2_config = {
++ .init = initialize_usbh2_port,
++ .portsc = MXC_EHCI_MODE_ULPI,
++ .flags = (MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_ITC_NO_THRESHOLD),
++ .otg = &usb3320_2,
++};
++
+#define APF51_USBH1_STP (0*32 + 27) /* GPIO_1_27 */
+#define APF51_USB_HOST_PHY_RESET (2*32 +1) /* GPIO_3_1 */
+
-+static int apf51_usbh1_active(void)
++static int apf51_usbh1_usbh2_active(void)
+{
+ struct pad_desc phyreset_gpio = MX51_PAD_DI1_PIN12__GPIO_3_1;
+ int ret;
@@ -301,10 +347,11 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+ mxc_register_device(&mxc_nand_device, &apf51_nand_board_info);
+ platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+
-+ apf51_usbh1_active();
++ apf51_usbh1_usbh2_active();
+ mxc_register_device(&mxc_usbh1_device, &usbh1_config);
++ mxc_register_device(&mxc_usbh2_device, &usbh2_config);
+
-+#ifdef CONFIG_MACH_ARMADEUS_APF51_BASEBOARD
++#ifdef CONFIG_MACH_APF51_HAS_BASEBOARD
+ apf51_baseboard_init();
+#endif
+}
@@ -331,8 +378,8 @@ Index: linux-2.6.36/arch/arm/mach-mx5/board-apf51.c
+
Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h
===================================================================
---- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-11-30 16:25:55.000000000 +0100
-+++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2010-11-30 16:25:56.000000000 +0100
+--- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/uncompress.h 2010-11-30 17:32:23.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/uncompress.h 2010-11-30 17:32:24.000000000 +0100
@@ -63,6 +63,7 @@
#define MX3X_UART1_BASE_ADDR 0x43F90000
#define MX3X_UART2_BASE_ADDR 0x43F94000
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/405-armadeus-iomux-mx51-add_USBH2_pins_definition.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/405-armadeus-iomux-mx51-add_USBH2_pins_definition.patch
new file mode 100644
index 0000000..01c233d
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/405-armadeus-iomux-mx51-add_USBH2_pins_definition.patch
@@ -0,0 +1,56 @@
+Declare USBH2 pins in IOMUX.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/iomux-mx51.h
+===================================================================
+--- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/iomux-mx51.h 2010-11-30 18:13:14.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/iomux-mx51.h 2010-11-30 19:09:13.000000000 +0100
+@@ -43,6 +43,7 @@
+ #define MX51_USBH1_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_DSE_HIGH | \
+ PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \
+ PAD_CTL_PKE | PAD_CTL_HYS)
++#define MX51_USBH2_PAD_CTRL MX51_USBH1_PAD_CTRL
+ #define MX51_GPIO_PAD_CTRL (PAD_CTL_DSE_HIGH | PAD_CTL_PKE | \
+ PAD_CTL_SRE_FAST)
+
+@@ -70,17 +71,25 @@
+ #define MX51_PAD_EIM_DA14__EIM_DA14 IOMUX_PAD(0x7bc, 0x054, 0, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_DA15__EIM_DA15 IOMUX_PAD(0x7bc, 0x058, 0, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_D16__GPIO_2_0 IOMUX_PAD(0x3f0, 0x05c, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D16__USBH2_DATA0 IOMUX_PAD(0x3f0, 0x05c, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D16__I2C1_SDA IOMUX_PAD(0x3f0, 0x05c, (4 | IOMUX_CONFIG_SION), \
+ 0x09b4, 0, MX51_I2C_PAD_CTRL)
+ #define MX51_PAD_EIM_D17__GPIO_2_1 IOMUX_PAD(0x3f4, 0x060, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D17__USBH2_DATA1 IOMUX_PAD(0x3f4, 0x060, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D18__GPIO_2_2 IOMUX_PAD(0x3f8, 0x064, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D18__USBH2_DATA2 IOMUX_PAD(0x3f8, 0x064, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D19__GPIO_2_3 IOMUX_PAD(0x3fc, 0x068, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D19__USBH2_DATA3 IOMUX_PAD(0x3fc, 0x068, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D19__I2C1_SCL IOMUX_PAD(0x3fc, 0x068, (4 | IOMUX_CONFIG_SION), \
+ 0x09b0, 0, MX51_I2C_PAD_CTRL)
+ #define MX51_PAD_EIM_D20__GPIO_2_4 IOMUX_PAD(0x400, 0x06c, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D20__USBH2_DATA4 IOMUX_PAD(0x400, 0x06c, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D21__GPIO_2_5 IOMUX_PAD(0x404, 0x070, 1, 0x0, 0, MX51_GPIO_PAD_CTRL)
++#define MX51_PAD_EIM_D21__USBH2_DATA5 IOMUX_PAD(0x404, 0x070, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D22__GPIO_2_6 IOMUX_PAD(0x408, 0x074, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D22__USBH2_DATA6 IOMUX_PAD(0x408, 0x074, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D23__GPIO_2_7 IOMUX_PAD(0x40c, 0x078, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_D23__USBH2_DATA7 IOMUX_PAD(0x40c, 0x078, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_D24__UART3_CTS IOMUX_PAD(0x410, 0x07c, 3, 0x0, 0, MX51_UART3_PAD_CTRL)
+ #define MX51_PAD_EIM_D25__UART3_RXD IOMUX_PAD(0x414, 0x080, 3, 0x9f4, 0, MX51_UART3_PAD_CTRL)
+ #define MX51_PAD_EIM_D25__UART2_CTS IOMUX_PAD(0x414, 0x080, 4, 0x0, 0, MX51_UART2_PAD_CTRL)
+@@ -100,9 +109,13 @@
+ #define MX51_PAD_EIM_A22__GPIO_2_16 IOMUX_PAD(0x448, 0x0b4, 1, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_A23__GPIO_2_17 IOMUX_PAD(0x44c, 0x0b8, 1, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_A24__GPIO_2_18 IOMUX_PAD(0x450, 0x0bc, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_A24__USBH2_CLK IOMUX_PAD(0x450, 0x0bc, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_A25__GPIO_2_19 IOMUX_PAD(0x454, 0x0c0, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_A25__USBH2_DIR IOMUX_PAD(0x454, 0x0c0, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_A26__GPIO_2_20 IOMUX_PAD(0x458, 0x0c4, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_A26__USBH2_STP IOMUX_PAD(0x458, 0x0c4, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_A27__GPIO_2_21 IOMUX_PAD(0x45c, 0x0c8, 1, 0x0, 0, NO_PAD_CTRL)
++#define MX51_PAD_EIM_A27__USBH2_NXT IOMUX_PAD(0x45c, 0x0c8, 2, 0x0, 0, MX51_USBH2_PAD_CTRL)
+ #define MX51_PAD_EIM_EB0__EIM_EB0 IOMUX_PAD(0x460, 0x0cc, 0, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_EB1__EIM_EB1 IOMUX_PAD(0x464, 0x0d0, 0, 0x0, 0, NO_PAD_CTRL)
+ #define MX51_PAD_EIM_EB2__GPIO_2_22 IOMUX_PAD(0x468, 0x0d4, 1, 0x0, 0, NO_PAD_CTRL)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/406-armadeus-plat-mxc-ehci-correct_some_mx5_regiter_settings_and_comments.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/406-armadeus-plat-mxc-ehci-correct_some_mx5_regiter_settings_and_comments.patch
new file mode 100644
index 0000000..aacf45e
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/406-armadeus-plat-mxc-ehci-correct_some_mx5_regiter_settings_and_comments.patch
@@ -0,0 +1,30 @@
+Some HOST1 registers bits seem to be misused. Corresponding comments seem also
+false. Correct that.
+
+Strange that with or without this changes HOST1 seems to work the same way...
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.36/arch/arm/plat-mxc/ehci.c
+===================================================================
+--- linux-2.6.36.orig/arch/arm/plat-mxc/ehci.c 2010-12-01 16:49:46.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/ehci.c 2010-12-01 17:20:20.000000000 +0100
+@@ -292,14 +292,14 @@
+ /*Host ULPI */
+ v = __raw_readl(usbother_base + MXC_USBCTRL_OFFSET);
+ if (flags & MXC_EHCI_WAKEUP_ENABLED)
+- v &= ~(MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);/* HOST1 wakeup/ULPI intr disable */
++ v |= (MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);/* HOST1 wakeup/ULPI intr enabled */
+ else
+- v &= ~(MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);/* HOST1 wakeup/ULPI intr disable */
++ v &= ~(MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);/* HOST1 wakeup/ULPI intr disabled */
+
+ if (flags & MXC_EHCI_POWER_PINS_ENABLED)
+- v &= ~MXC_H1_UCTRL_H1PM_BIT; /* HOST1 power mask used*/
++ v |= MXC_H1_UCTRL_H1PM_BIT; /* USBPWR pin used */
+ else
+- v |= MXC_H1_UCTRL_H1PM_BIT; /* HOST1 power mask used*/
++ v &= ~MXC_H1_UCTRL_H1PM_BIT; /* USBPWR pin inactive */
+ __raw_writel(v, usbother_base + MXC_USBCTRL_OFFSET);
+
+ v = __raw_readl(usbother_base + MXC_USB_PHY_CTR_FUNC_OFFSET);
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/407-armadeus-mx5-devices-add_USBH2_to_list_of_devices.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/407-armadeus-mx5-devices-add_USBH2_to_list_of_devices.patch
new file mode 100644
index 0000000..704d14d
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/407-armadeus-mx5-devices-add_USBH2_to_list_of_devices.patch
@@ -0,0 +1,135 @@
+Add USBH2 in the list of MX5 devices.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.36/arch/arm/mach-mx5/devices.c
+===================================================================
+--- linux-2.6.36.orig/arch/arm/mach-mx5/devices.c 2010-12-01 15:45:28.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/devices.c 2010-12-01 15:45:28.000000000 +0100
+@@ -234,6 +234,29 @@
+ },
+ };
+
++static struct resource usbh2_resources[] = {
++ {
++ .start = MX51_OTG_BASE_ADDR + 0x400,
++ .end = MX51_OTG_BASE_ADDR + 0x400 + 0x1ff,
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .start = MX51_MXC_INT_USB_H2,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device mxc_usbh2_device = {
++ .name = "mxc-ehci",
++ .id = 2,
++ .num_resources = ARRAY_SIZE(usbh2_resources),
++ .resource = usbh2_resources,
++ .dev = {
++ .dma_mask = &usb_dma_mask,
++ .coherent_dma_mask = DMA_BIT_MASK(32),
++ },
++};
++
+ static struct resource mxc_wdt_resources[] = {
+ {
+ .start = MX51_WDOG_BASE_ADDR,
+Index: linux-2.6.36/arch/arm/mach-mx5/devices.h
+===================================================================
+--- linux-2.6.36.orig/arch/arm/mach-mx5/devices.h 2010-12-01 15:45:28.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/devices.h 2010-12-01 15:45:28.000000000 +0100
+@@ -5,6 +5,7 @@
+ extern struct platform_device mxc_fec_device;
+ extern struct platform_device mxc_usbdr_host_device;
+ extern struct platform_device mxc_usbh1_device;
++extern struct platform_device mxc_usbh2_device;
+ extern struct platform_device mxc_usbdr_udc_device;
+ extern struct platform_device mxc_wdt;
+ extern struct platform_device mxc_i2c_device0;
+Index: linux-2.6.36/arch/arm/mach-mx5/clock-mx51.c
+===================================================================
+--- linux-2.6.36.orig/arch/arm/mach-mx5/clock-mx51.c 2010-12-01 15:45:28.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/clock-mx51.c 2010-12-01 15:45:28.000000000 +0100
+@@ -925,6 +925,8 @@
+ _REGISTER_CLOCK("mxc-ehci.0", "usb_ahb", ahb_clk)
+ _REGISTER_CLOCK("mxc-ehci.1", "usb", usboh3_clk)
+ _REGISTER_CLOCK("mxc-ehci.1", "usb_ahb", ahb_clk)
++ _REGISTER_CLOCK("mxc-ehci.2", "usb", usboh3_clk)
++ _REGISTER_CLOCK("mxc-ehci.2", "usb_ahb", ahb_clk)
+ _REGISTER_CLOCK("fsl-usb2-udc", "usb", usboh3_clk)
+ _REGISTER_CLOCK("fsl-usb2-udc", "usb_ahb", ahb_clk)
+ _REGISTER_CLOCK("imx-keypad.0", NULL, kpp_clk)
+Index: linux-2.6.36/arch/arm/plat-mxc/ehci.c
+===================================================================
+--- linux-2.6.36.orig/arch/arm/plat-mxc/ehci.c 2010-12-01 15:43:12.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/ehci.c 2010-12-01 16:34:13.000000000 +0100
+@@ -49,6 +49,7 @@
+
+ #define MXC_OTG_OFFSET 0
+ #define MXC_H1_OFFSET 0x200
++#define MXC_H2_OFFSET 0x400
+
+ /* USB_CTRL */
+ #define MXC_OTG_UCTRL_OWIE_BIT (1 << 27) /* OTG wakeup intr enable */
+@@ -57,6 +58,10 @@
+ #define MXC_H1_UCTRL_H1WIE_BIT (1 << 11) /* HOST1 wakeup intr enable */
+ #define MXC_H1_UCTRL_H1PM_BIT (1 << 8) /* HOST1 power mask */
+
++#define MXC_UH2_CTRL_H2UIE_BIT (1 << 8) /* HOST2 ULPI interrupt enable */
++#define MXC_UH2_CTRL_H2WIE_BIT (1 << 7) /* HOST2 wakeup interrupt enable */
++#define MXC_UH2_CTRL_H2PM_BIT (1 << 4) /* HOST2 power mask */
++
+ /* USB_PHY_CTRL_FUNC */
+ #define MXC_OTG_PHYCTRL_OC_DIS_BIT (1 << 8) /* OTG Disable Overcurrent Event */
+ #define MXC_H1_OC_DIS_BIT (1 << 5) /* UH1 Disable Overcurrent Event */
+@@ -262,6 +267,9 @@
+ case 1: /* Host 1 port */
+ usbotg_base = usb_base + MXC_H1_OFFSET;
+ break;
++ case 2: /* Host 2 port */
++ usbotg_base = usb_base + MXC_H2_OFFSET;
++ break;
+ default:
+ printk(KERN_ERR"%s no such port %d\n", __func__, port);
+ ret = -ENOENT;
+@@ -315,6 +323,26 @@
+ v &= MXC_UCMD_ITC_NO_THRESHOLD_MASK;
+ __raw_writel(v, usbotg_base + MXC_USBCMD_OFFSET);
+ break;
++ case 2: /* Host 2 */
++ /*Host ULPI */
++ v = __raw_readl(usbother_base + MXC_USB_UH2_CTRL_OFFSET);
++ if (flags & MXC_EHCI_WAKEUP_ENABLED)
++ v |= (MXC_UH2_CTRL_H2WIE_BIT | MXC_UH2_CTRL_H2UIE_BIT); /* HOST2 wakeup/ULPI intr enabled */
++ else
++ v &= ~(MXC_UH2_CTRL_H2WIE_BIT | MXC_UH2_CTRL_H2UIE_BIT); /* HOST2 wakeup/ULPI intr disabled */
++
++ if (flags & MXC_EHCI_POWER_PINS_ENABLED)
++ v &= ~MXC_UH2_CTRL_H2PM_BIT; /* USBPWR & OC pins used */
++ else
++ v |= MXC_UH2_CTRL_H2PM_BIT; /* USBPWR & OC pins not used */
++ __raw_writel(v, usbother_base + MXC_USB_UH2_CTRL_OFFSET);
++
++ v = __raw_readl(usbotg_base + MXC_USBCMD_OFFSET);
++ if (flags & MXC_EHCI_ITC_NO_THRESHOLD)
++ /* Interrupt Threshold Control:Immediate (no threshold) */
++ v &= MXC_UCMD_ITC_NO_THRESHOLD_MASK;
++ __raw_writel(v, usbotg_base + MXC_USBCMD_OFFSET);
++ break;
+ }
+
+ error:
+Index: linux-2.6.36/arch/arm/plat-mxc/include/mach/mxc_ehci.h
+===================================================================
+--- linux-2.6.36.orig/arch/arm/plat-mxc/include/mach/mxc_ehci.h 2010-12-01 15:43:12.000000000 +0100
++++ linux-2.6.36/arch/arm/plat-mxc/include/mach/mxc_ehci.h 2010-12-01 15:45:28.000000000 +0100
+@@ -31,6 +31,7 @@
+ #define MXC_USBCTRL_OFFSET 0
+ #define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8
+ #define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
++#define MXC_USB_UH2_CTRL_OFFSET 0x14
+
+ #define MX5_USBOTHER_REGS_OFFSET 0x800
+
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/408-armadeus-add_apf51-dev_baseboard.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/408-armadeus-add_apf51-dev_baseboard.patch
new file mode 100644
index 0000000..859d207
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/408-armadeus-add_apf51-dev_baseboard.patch
@@ -0,0 +1,99 @@
+Add APF51Dev baseboard support.
+
+Signed-off-by: Julien Boibessot <jul...@ar...>
+
+Index: linux-2.6.36/arch/arm/mach-mx5/Kconfig
+===================================================================
+--- linux-2.6.36.orig/arch/arm/mach-mx5/Kconfig 2010-12-01 09:33:55.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/Kconfig 2010-12-01 09:37:01.000000000 +0100
+@@ -49,4 +49,21 @@
+ Include support for Armadeus Systems APF51 System On Module. This
+ includes specific configurations for the board and its peripherals.
+
++config MACH_APF51_HAS_BASEBOARD
++ bool
++
++choice
++ prompt "Baseboard"
++ depends on MACH_APF51
++ default MACH_APF51_DEV
++
++config MACH_APF51_DEV
++ prompt "Armadeus Systems APF51Dev development board"
++ bool
++ select MACH_APF51_HAS_BASEBOARD
++ help
++ This selects the APF51Dev as baseboard and adds board's specific
++ devices.
++endchoice
++
+ endif
+Index: linux-2.6.36/arch/arm/mach-mx5/Makefile
+===================================================================
+--- linux-2.6.36.orig/arch/arm/mach-mx5/Makefile 2010-12-01 09:35:33.000000000 +0100
++++ linux-2.6.36/arch/arm/mach-mx5/Makefile 2010-12-01 09:37:44.000000000 +0100
+@@ -10,3 +10,4 @@
+ obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
+ obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
+ obj-$(CONFIG_MACH_APF51) += board-apf51.o
++obj-$(CONFIG_MACH_APF51_DEV) += apf51-dev-baseboard.o
+Index: linux-2.6.36/arch/arm/mach-mx5/apf51-dev-baseboard.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.36/arch/arm/mach-mx5/apf51-dev-baseboard.c 2010-12-01 14:35:46.000000000 +0100
+@@ -0,0 +1,55 @@
++ /*
++ * apf51-dev-baseboard.c
++ * Support for APF51's development baseboard
++ *
++ * Copyright (C) 2010 Armadeus Systems <su...@ar...>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#include <linux/gpio.h>
++#include <linux/platform_device.h>
++#include <linux/io.h>
++
++#include <mach/iomux-mx51.h>
++
++#include "devices.h"
++
++static struct pad_desc apf51dev_pads[] = {
++ /* SD1 */
++ MX51_PAD_SD1_CMD__SD1_CMD,
++ MX51_PAD_SD1_CLK__SD1_CLK,
++ MX51_PAD_SD1_DATA0__SD1_DATA0,
++ MX51_PAD_SD1_DATA1__SD1_DATA1,
++ MX51_PAD_SD1_DATA2__SD1_DATA2,
++ MX51_PAD_SD1_DATA3__SD1_DATA3,
++
++ /* SD2 */
++ MX51_PAD_SD2_CMD__SD2_CMD,
++ MX51_PAD_SD2_CLK__SD2_CLK,
++ MX51_PAD_SD2_DATA0__SD2_DATA0,
++ MX51_PAD_SD2_DATA1__SD2_DATA1,
++ MX51_PAD_SD2_DATA2__SD2_DATA2,
++ MX51_PAD_SD2_DATA3__SD2_DATA3,
++};
++
++void __init apf51_baseboard_init(void)
++{
++ printk(" Registering APF51Dev ressources:");
++
++ mxc_iomux_v3_setup_multiple_pads(apf51dev_pads,
++ ARRAY_SIZE(apf51dev_pads));
++
++ printk(" done\n");
++}
hooks/post-receive
--
armadeus
|