summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinyu Chen <xinyu.chen@freescale.com>2012-06-26 16:00:55 +0800
committerXinyu Chen <xinyu.chen@freescale.com>2012-06-26 16:06:58 +0800
commited27bdab812a28095f4d5ff7cedca6542342dfec (patch)
tree8aff6ea6366122e4ba8baf90987cc06149afc7d0
parentd1276730560909329571ce75427e1c1dac43c9a0 (diff)
ENGR00214899 mx6 sabresd: requires 400MHz DDR when WIFI working
Change the sdhc2 clock flag to require at least 400MHz DDR frequency when SDIO working. If the SDIO clock is not taking into count by busfreq, then when we going to low bus mode, the WIFI sdio driver will lost interrupt and cause WIFI failed to work. Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabresd.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c
index 5736df4d6a27..ca66d4933b85 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabresd.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c
@@ -69,6 +69,7 @@
#include <mach/mxc_hdmi.h>
#include <mach/mxc_asrc.h>
#include <mach/mipi_dsi.h>
+#include <mach/clock.h>
#include <asm/irq.h>
#include <asm/setup.h>
@@ -1632,7 +1633,9 @@ static void __init mx6_sabresd_board_init(void)
int ret;
struct clk *clko2;
struct clk *new_parent;
+ struct clk *sdio_clk;
int rate;
+ struct platform_device *sdhci2_dev;
if (cpu_is_mx6q())
mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_pads,
@@ -1726,7 +1729,7 @@ static void __init mx6_sabresd_board_init(void)
*/
imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data);
imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data);
- imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);
+ sdhci2_dev = imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);
imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata);
imx6q_sabresd_init_usb();
/* SATA is not supported by MX6DL/Solo */
@@ -1841,6 +1844,16 @@ static void __init mx6_sabresd_board_init(void)
gpio_direction_output(SABRESD_ELAN_RST, 1);
gpio_direction_output(SABRESD_ELAN_CE, 1);
}
+
+ /* on SabreSD board, the sdhci2 slot is connected with
+ wifi dongle by normal case. And wifi sdio need DDR
+ frequency be higher than 50MHz, so we set
+ the schci2 clock flag as med set point. */
+ sdio_clk = clk_get(&sdhci2_dev->dev, NULL);
+ if (!IS_ERR(sdio_clk)) {
+ sdio_clk->flags = AHB_MED_SET_POINT | CPU_FREQ_TRIG_UPDATE;
+ clk_put(sdio_clk);
+ }
}
extern void __iomem *twd_base;