[PATCH 88/133] [Jaunty SRU] ARM.imx51 Freescale:ENGR00112374 Make unifi v6 work

Brad Figg brad.figg at canonical.com
Thu Jul 9 16:49:18 UTC 2009


From: Richard Zhao <b20223 at freescale.com>

1. Remove CONFIG_NET_SCHED. Because unifiV6's using old QoS interface.
2. Add mmc2 iomux
3. some fixes on unifi_fs

Signed-off-by: Richard Zhao <b20223 at freescale.com>
Signed-off-by: Brad Figg <brad.figg at canonical.com>
---
 arch/arm/configs/imx51_defconfig      |   39 +-------------------------------
 arch/arm/mach-mx51/mx51_3stack_gpio.c |   24 ++++++++++++++++++++
 drivers/mmc/card/unifi_fs/fs_lx.c     |   17 ++++++++++++-
 3 files changed, 41 insertions(+), 39 deletions(-)

diff --git a/arch/arm/configs/imx51_defconfig b/arch/arm/configs/imx51_defconfig
index c809444..3af68e0 100644
--- a/arch/arm/configs/imx51_defconfig
+++ b/arch/arm/configs/imx51_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.28
-# Thu May  7 08:51:48 2009
+# Wed May 13 11:08:25 2009
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -399,38 +399,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
 # CONFIG_LAPB is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-# CONFIG_NET_SCH_CBQ is not set
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_HFSC is not set
-# CONFIG_NET_SCH_PRIO is not set
-# CONFIG_NET_SCH_MULTIQ is not set
-# CONFIG_NET_SCH_RED is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_NETEM is not set
-
-#
-# Classification
-#
-# CONFIG_NET_CLS_BASIC is not set
-# CONFIG_NET_CLS_TCINDEX is not set
-# CONFIG_NET_CLS_ROUTE4 is not set
-# CONFIG_NET_CLS_FW is not set
-# CONFIG_NET_CLS_U32 is not set
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-# CONFIG_NET_CLS_FLOW is not set
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-CONFIG_NET_SCH_FIFO=y
+# CONFIG_NET_SCHED is not set
 
 #
 # Network testing
@@ -739,10 +708,6 @@ CONFIG_DEVKMEM=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 CONFIG_FM_SI4702=m
 CONFIG_MXC_IIM=y
-
-#
-# IMX SIM support
-#
 CONFIG_IMX_SIM=m
 
 #
diff --git a/arch/arm/mach-mx51/mx51_3stack_gpio.c b/arch/arm/mach-mx51/mx51_3stack_gpio.c
index 9c0d7fd..9d03b70 100644
--- a/arch/arm/mach-mx51/mx51_3stack_gpio.c
+++ b/arch/arm/mach-mx51/mx51_3stack_gpio.c
@@ -371,6 +371,30 @@ static struct mxc_iomux_pin_cfg __initdata mxc_iomux_pins[] = {
 	 (PAD_CTL_HYS_ENABLE | PAD_CTL_100K_PU),
 	 },
 	{
+	 MX51_PIN_SD2_CMD, IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
+	 MX51_PIN_SD2_CLK, IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
+	 MX51_PIN_SD2_DATA0, IOMUX_CONFIG_ALT0,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
+	 MX51_PIN_SD2_DATA1, IOMUX_CONFIG_ALT0,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
+	 MX51_PIN_SD2_DATA2, IOMUX_CONFIG_ALT0,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
+	 MX51_PIN_SD2_DATA3, IOMUX_CONFIG_ALT0,
+	 (PAD_CTL_DRV_MAX | PAD_CTL_22K_PU | PAD_CTL_SRE_FAST),
+	 },
+	{
 	 MX51_PIN_UART1_RXD, IOMUX_CONFIG_ALT0,
 	 (PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL |
 	  PAD_CTL_DRV_HIGH | PAD_CTL_SRE_FAST),
diff --git a/drivers/mmc/card/unifi_fs/fs_lx.c b/drivers/mmc/card/unifi_fs/fs_lx.c
index a33b6ce..4dc252e 100644
--- a/drivers/mmc/card/unifi_fs/fs_lx.c
+++ b/drivers/mmc/card/unifi_fs/fs_lx.c
@@ -200,6 +200,18 @@ int fs_sdio_enable_interrupt(struct sdio_dev *fdev, int enable)
 }
 EXPORT_SYMBOL(fs_sdio_enable_interrupt);
 
+int fs_sdio_disable(struct sdio_dev *fdev)
+{
+	int err;
+	sdio_claim_host(fdev->func);
+	err = sdio_disable_func(fdev->func);
+	sdio_release_host(fdev->func);
+	if (err)
+		printk(KERN_ERR "fs_lx:fs_sdio_disable error,err=%d\n", err);
+	return err;
+}
+EXPORT_SYMBOL(fs_sdio_disable);
+
 int fs_sdio_enable(struct sdio_dev *fdev)
 {
 	int err = 0;
@@ -347,7 +359,8 @@ int fs_sdio_register_driver(struct fs_driver *driver)
 
 	/* Switch us on, sdio device may exist if power is on by default. */
 	plat_data->hardreset(0);
-	mxc_mmc_force_detect(plat_data->host_id);
+	if (available_sdio_dev)
+		mxc_mmc_force_detect(plat_data->host_id);
 	/* Wait for card removed */
 	for (retry = 0; retry < 100; retry++) {
 		if (!available_sdio_dev)
@@ -366,7 +379,7 @@ int fs_sdio_register_driver(struct fs_driver *driver)
 			break;
 		msleep(50);
 	}
-	if (retry == 1000)
+	if (retry == 100)
 		printk(KERN_ERR "fs_sdio_register_driver: Timeout waiting"
 				" for card added\n");
 	/* Store the context to the device driver to the global */
-- 
1.6.0.4





More information about the kernel-team mailing list