diff options
| -rw-r--r-- | arch/arm/mach-imx/Makefile.boot | 34 | ||||
| -rw-r--r-- | arch/arm/mach-imx/clock-imx6q.c | 17 | ||||
| -rw-r--r-- | arch/arm/mach-mx5/clock-mx51-mx53.c | 4 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci-esdhc-imx.c | 8 |
5 files changed, 47 insertions, 20 deletions
diff --git a/arch/arm/mach-imx/Makefile.boot b/arch/arm/mach-imx/Makefile.boot index 22d85889f622..cfede5768aa0 100644 --- a/arch/arm/mach-imx/Makefile.boot +++ b/arch/arm/mach-imx/Makefile.boot | |||
| @@ -1,22 +1,26 @@ | |||
| 1 | zreladdr-$(CONFIG_ARCH_MX1) += 0x08008000 | 1 | zreladdr-$(CONFIG_SOC_IMX1) += 0x08008000 |
| 2 | params_phys-$(CONFIG_ARCH_MX1) := 0x08000100 | 2 | params_phys-$(CONFIG_SOC_IMX1) := 0x08000100 |
| 3 | initrd_phys-$(CONFIG_ARCH_MX1) := 0x08800000 | 3 | initrd_phys-$(CONFIG_SOC_IMX1) := 0x08800000 |
| 4 | 4 | ||
| 5 | zreladdr-$(CONFIG_MACH_MX21) += 0xC0008000 | 5 | zreladdr-$(CONFIG_SOC_IMX21) += 0xC0008000 |
| 6 | params_phys-$(CONFIG_MACH_MX21) := 0xC0000100 | 6 | params_phys-$(CONFIG_SOC_IMX21) := 0xC0000100 |
| 7 | initrd_phys-$(CONFIG_MACH_MX21) := 0xC0800000 | 7 | initrd_phys-$(CONFIG_SOC_IMX21) := 0xC0800000 |
| 8 | 8 | ||
| 9 | zreladdr-$(CONFIG_ARCH_MX25) += 0x80008000 | 9 | zreladdr-$(CONFIG_SOC_IMX25) += 0x80008000 |
| 10 | params_phys-$(CONFIG_ARCH_MX25) := 0x80000100 | 10 | params_phys-$(CONFIG_SOC_IMX25) := 0x80000100 |
| 11 | initrd_phys-$(CONFIG_ARCH_MX25) := 0x80800000 | 11 | initrd_phys-$(CONFIG_SOC_IMX25) := 0x80800000 |
| 12 | 12 | ||
| 13 | zreladdr-$(CONFIG_MACH_MX27) += 0xA0008000 | 13 | zreladdr-$(CONFIG_SOC_IMX27) += 0xA0008000 |
| 14 | params_phys-$(CONFIG_MACH_MX27) := 0xA0000100 | 14 | params_phys-$(CONFIG_SOC_IMX27) := 0xA0000100 |
| 15 | initrd_phys-$(CONFIG_MACH_MX27) := 0xA0800000 | 15 | initrd_phys-$(CONFIG_SOC_IMX27) := 0xA0800000 |
| 16 | 16 | ||
| 17 | zreladdr-$(CONFIG_ARCH_MX3) += 0x80008000 | 17 | zreladdr-$(CONFIG_SOC_IMX31) += 0x80008000 |
| 18 | params_phys-$(CONFIG_ARCH_MX3) := 0x80000100 | 18 | params_phys-$(CONFIG_SOC_IMX31) := 0x80000100 |
| 19 | initrd_phys-$(CONFIG_ARCH_MX3) := 0x80800000 | 19 | initrd_phys-$(CONFIG_SOC_IMX31) := 0x80800000 |
| 20 | |||
| 21 | zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000 | ||
| 22 | params_phys-$(CONFIG_SOC_IMX35) := 0x80000100 | ||
| 23 | initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000 | ||
| 20 | 24 | ||
| 21 | zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000 | 25 | zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000 |
| 22 | params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100 | 26 | params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100 |
diff --git a/arch/arm/mach-imx/clock-imx6q.c b/arch/arm/mach-imx/clock-imx6q.c index e0b926dfeced..613a1b993bff 100644 --- a/arch/arm/mach-imx/clock-imx6q.c +++ b/arch/arm/mach-imx/clock-imx6q.c | |||
| @@ -1139,7 +1139,7 @@ static int _clk_set_rate(struct clk *clk, unsigned long rate) | |||
| 1139 | return -EINVAL; | 1139 | return -EINVAL; |
| 1140 | 1140 | ||
| 1141 | max_div = ((d->bm_pred >> d->bp_pred) + 1) * | 1141 | max_div = ((d->bm_pred >> d->bp_pred) + 1) * |
| 1142 | ((d->bm_pred >> d->bp_pred) + 1); | 1142 | ((d->bm_podf >> d->bp_podf) + 1); |
| 1143 | 1143 | ||
| 1144 | div = parent_rate / rate; | 1144 | div = parent_rate / rate; |
| 1145 | if (div == 0) | 1145 | if (div == 0) |
| @@ -2002,6 +2002,21 @@ int __init mx6q_clocks_init(void) | |||
| 2002 | clk_set_rate(&asrc_serial_clk, 1500000); | 2002 | clk_set_rate(&asrc_serial_clk, 1500000); |
| 2003 | clk_set_rate(&enfc_clk, 11000000); | 2003 | clk_set_rate(&enfc_clk, 11000000); |
| 2004 | 2004 | ||
| 2005 | /* | ||
| 2006 | * Before pinctrl API is available, we have to rely on the pad | ||
| 2007 | * configuration set up by bootloader. For usdhc example here, | ||
| 2008 | * u-boot sets up the pads for 49.5 MHz case, and we have to lower | ||
| 2009 | * the usdhc clock from 198 to 49.5 MHz to match the pad configuration. | ||
| 2010 | * | ||
| 2011 | * FIXME: This is should be removed after pinctrl API is available. | ||
| 2012 | * At that time, usdhc driver can call pinctrl API to change pad | ||
| 2013 | * configuration dynamically per different usdhc clock settings. | ||
| 2014 | */ | ||
| 2015 | clk_set_rate(&usdhc1_clk, 49500000); | ||
| 2016 | clk_set_rate(&usdhc2_clk, 49500000); | ||
| 2017 | clk_set_rate(&usdhc3_clk, 49500000); | ||
| 2018 | clk_set_rate(&usdhc4_clk, 49500000); | ||
| 2019 | |||
| 2005 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); | 2020 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); |
| 2006 | base = of_iomap(np, 0); | 2021 | base = of_iomap(np, 0); |
| 2007 | WARN_ON(!base); | 2022 | WARN_ON(!base); |
diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c index 6312425c0056..4cb276977190 100644 --- a/arch/arm/mach-mx5/clock-mx51-mx53.c +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c | |||
| @@ -1281,9 +1281,9 @@ DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, | |||
| 1281 | NULL, NULL, &ipg_clk, &gpt_ipg_clk); | 1281 | NULL, NULL, &ipg_clk, &gpt_ipg_clk); |
| 1282 | 1282 | ||
| 1283 | DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET, | 1283 | DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET, |
| 1284 | NULL, NULL, &ipg_clk, NULL); | 1284 | NULL, NULL, &ipg_perclk, NULL); |
| 1285 | DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET, | 1285 | DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET, |
| 1286 | NULL, NULL, &ipg_clk, NULL); | 1286 | NULL, NULL, &ipg_perclk, NULL); |
| 1287 | 1287 | ||
| 1288 | /* I2C */ | 1288 | /* I2C */ |
| 1289 | DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET, | 1289 | DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET, |
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index a08a95107a63..b3a1f2b3ada3 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig | |||
| @@ -10,7 +10,7 @@ choice | |||
| 10 | 10 | ||
| 11 | config ARCH_IMX_V4_V5 | 11 | config ARCH_IMX_V4_V5 |
| 12 | bool "i.MX1, i.MX21, i.MX25, i.MX27" | 12 | bool "i.MX1, i.MX21, i.MX25, i.MX27" |
| 13 | select AUTO_ZRELADDR | 13 | select AUTO_ZRELADDR if !ZBOOT_ROM |
| 14 | select ARM_PATCH_PHYS_VIRT | 14 | select ARM_PATCH_PHYS_VIRT |
| 15 | help | 15 | help |
| 16 | This enables support for systems based on the Freescale i.MX ARMv4 | 16 | This enables support for systems based on the Freescale i.MX ARMv4 |
| @@ -26,7 +26,7 @@ config ARCH_IMX_V6_V7 | |||
| 26 | 26 | ||
| 27 | config ARCH_MX5 | 27 | config ARCH_MX5 |
| 28 | bool "i.MX50, i.MX51, i.MX53" | 28 | bool "i.MX50, i.MX51, i.MX53" |
| 29 | select AUTO_ZRELADDR | 29 | select AUTO_ZRELADDR if !ZBOOT_ROM |
| 30 | select ARM_PATCH_PHYS_VIRT | 30 | select ARM_PATCH_PHYS_VIRT |
| 31 | help | 31 | help |
| 32 | This enables support for machines using Freescale's i.MX50 and i.MX53 | 32 | This enables support for machines using Freescale's i.MX50 and i.MX53 |
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index ae57769ba50d..4b976f00ea85 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | /* VENDOR SPEC register */ | 32 | /* VENDOR SPEC register */ |
| 33 | #define SDHCI_VENDOR_SPEC 0xC0 | 33 | #define SDHCI_VENDOR_SPEC 0xC0 |
| 34 | #define SDHCI_VENDOR_SPEC_SDIO_QUIRK 0x00000002 | 34 | #define SDHCI_VENDOR_SPEC_SDIO_QUIRK 0x00000002 |
| 35 | #define SDHCI_WTMK_LVL 0x44 | ||
| 35 | #define SDHCI_MIX_CTRL 0x48 | 36 | #define SDHCI_MIX_CTRL 0x48 |
| 36 | 37 | ||
| 37 | /* | 38 | /* |
| @@ -476,6 +477,13 @@ static int __devinit sdhci_esdhc_imx_probe(struct platform_device *pdev) | |||
| 476 | if (is_imx53_esdhc(imx_data)) | 477 | if (is_imx53_esdhc(imx_data)) |
| 477 | imx_data->flags |= ESDHC_FLAG_MULTIBLK_NO_INT; | 478 | imx_data->flags |= ESDHC_FLAG_MULTIBLK_NO_INT; |
| 478 | 479 | ||
| 480 | /* | ||
| 481 | * The imx6q ROM code will change the default watermark level setting | ||
| 482 | * to something insane. Change it back here. | ||
| 483 | */ | ||
| 484 | if (is_imx6q_usdhc(imx_data)) | ||
| 485 | writel(0x08100810, host->ioaddr + SDHCI_WTMK_LVL); | ||
| 486 | |||
| 479 | boarddata = &imx_data->boarddata; | 487 | boarddata = &imx_data->boarddata; |
| 480 | if (sdhci_esdhc_imx_probe_dt(pdev, boarddata) < 0) { | 488 | if (sdhci_esdhc_imx_probe_dt(pdev, boarddata) < 0) { |
| 481 | if (!host->mmc->parent->platform_data) { | 489 | if (!host->mmc->parent->platform_data) { |
