* [U-Boot] [PATCH v2 2/4] mmc: s5p_mmc: fixed wrong function argument
@ 2012-07-27 2:33 Jaehoon Chung
2012-08-30 21:46 ` Andy Fleming
0 siblings, 1 reply; 3+ messages in thread
From: Jaehoon Chung @ 2012-07-27 2:33 UTC (permalink / raw)
To: u-boot
Useless code is removed, and get buswidth value.
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
---
arch/arm/include/asm/arch-exynos/mmc.h | 4 ++--
arch/arm/include/asm/arch-s5pc1xx/mmc.h | 4 ++--
drivers/mmc/s5p_sdhci.c | 9 ++++-----
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/mmc.h b/arch/arm/include/asm/arch-exynos/mmc.h
index 0f701c9..afdfcf0 100644
--- a/arch/arm/include/asm/arch-exynos/mmc.h
+++ b/arch/arm/include/asm/arch-exynos/mmc.h
@@ -64,11 +64,11 @@
#define SDHCI_CTRL4_DRIVE_MASK(_x) ((_x) << 16)
#define SDHCI_CTRL4_DRIVE_SHIFT (16)
-int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks);
+int s5p_sdhci_init(u32 regbase, int index, int bus_width);
static inline unsigned int s5p_mmc_init(int index, int bus_width)
{
unsigned int base = samsung_get_base_mmc() + (0x10000 * index);
- return s5p_sdhci_init(base, 52000000, 400000, index);
+ return s5p_sdhci_init(base, index, bus_width);
}
#endif
diff --git a/arch/arm/include/asm/arch-s5pc1xx/mmc.h b/arch/arm/include/asm/arch-s5pc1xx/mmc.h
index 0f701c9..afdfcf0 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/mmc.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/mmc.h
@@ -64,11 +64,11 @@
#define SDHCI_CTRL4_DRIVE_MASK(_x) ((_x) << 16)
#define SDHCI_CTRL4_DRIVE_SHIFT (16)
-int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks);
+int s5p_sdhci_init(u32 regbase, int index, int bus_width);
static inline unsigned int s5p_mmc_init(int index, int bus_width)
{
unsigned int base = samsung_get_base_mmc() + (0x10000 * index);
- return s5p_sdhci_init(base, 52000000, 400000, index);
+ return s5p_sdhci_init(base, index, bus_width);
}
#endif
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c
index 12b28dd..d7e92a4 100644
--- a/drivers/mmc/s5p_sdhci.c
+++ b/drivers/mmc/s5p_sdhci.c
@@ -69,7 +69,7 @@ static void s5p_sdhci_set_control_reg(struct sdhci_host *host)
sdhci_writel(host, ctrl, SDHCI_CONTROL2);
}
-int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
+int s5p_sdhci_init(u32 regbase, int index, int bus_width)
{
struct sdhci_host *host = NULL;
host = (struct sdhci_host *)malloc(sizeof(struct sdhci_host));
@@ -80,12 +80,11 @@ int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
host->name = S5P_NAME;
host->ioaddr = (void *)regbase;
- host->quirks = quirks;
- host->quirks |= SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
+ host->quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
SDHCI_QUIRK_BROKEN_R1B | SDHCI_QUIRK_32BIT_DMA_ADDR;
host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
- if (quirks & SDHCI_QUIRK_REG32_RW)
+ if (host->quirks & SDHCI_QUIRK_REG32_RW)
host->version = sdhci_readl(host, SDHCI_HOST_VERSION - 2) >> 16;
else
host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
@@ -94,6 +93,6 @@ int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
host->host_caps = MMC_MODE_HC;
- add_sdhci(host, max_clk, min_clk);
+ add_sdhci(host, 52000000, 400000);
return 0;
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH v2 2/4] mmc: s5p_mmc: fixed wrong function argument
2012-07-27 2:33 [U-Boot] [PATCH v2 2/4] mmc: s5p_mmc: fixed wrong function argument Jaehoon Chung
@ 2012-08-30 21:46 ` Andy Fleming
2012-08-31 1:14 ` Jaehoon Chung
0 siblings, 1 reply; 3+ messages in thread
From: Andy Fleming @ 2012-08-30 21:46 UTC (permalink / raw)
To: u-boot
On Thu, Jul 26, 2012 at 7:33 PM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>
> Useless code is removed, and get buswidth value.
>
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> ---
> arch/arm/include/asm/arch-exynos/mmc.h | 4 ++--
> arch/arm/include/asm/arch-s5pc1xx/mmc.h | 4 ++--
> drivers/mmc/s5p_sdhci.c | 9 ++++-----
> 3 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-exynos/mmc.h b/arch/arm/include/asm/arch-exynos/mmc.h
>
> static inline unsigned int s5p_mmc_init(int index, int bus_width)
> {
> unsigned int base = samsung_get_base_mmc() + (0x10000 * index);
> - return s5p_sdhci_init(base, 52000000, 400000, index);
> + return s5p_sdhci_init(base, index, bus_width);
> }
> diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c
> index 12b28dd..d7e92a4 100644
> --- a/drivers/mmc/s5p_sdhci.c
> +++ b/drivers/mmc/s5p_sdhci.c
> -int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
> +int s5p_sdhci_init(u32 regbase, int index, int bus_width)
> {
> struct sdhci_host *host = NULL;
> host = (struct sdhci_host *)malloc(sizeof(struct sdhci_host));
> @@ -80,12 +80,11 @@ int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
>
> host->name = S5P_NAME;
> host->ioaddr = (void *)regbase;
> - host->quirks = quirks;
I'm very confused by this line. "quirks" is the 4th argument to the
original version of this function, but I see that the original
*caller* of this function passed in "index". This is amazingly broken.
Fortunately, your patch fixes it, but it calls into doubt how it ever
worked with any index but "0".
>
> - host->quirks |= SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
> + host->quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
> SDHCI_QUIRK_BROKEN_R1B | SDHCI_QUIRK_32BIT_DMA_ADDR;
> host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
> - if (quirks & SDHCI_QUIRK_REG32_RW)
> + if (host->quirks & SDHCI_QUIRK_REG32_RW)
Now that host->quirks is initialized just above, SDHCI_QUIRK_REG32_RW
will never be set, so there's no point in checking for it.
Andy
^ permalink raw reply [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH v2 2/4] mmc: s5p_mmc: fixed wrong function argument
2012-08-30 21:46 ` Andy Fleming
@ 2012-08-31 1:14 ` Jaehoon Chung
0 siblings, 0 replies; 3+ messages in thread
From: Jaehoon Chung @ 2012-08-31 1:14 UTC (permalink / raw)
To: u-boot
Hi Andy,
>> @@ -80,12 +80,11 @@ int s5p_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
>>
>> host->name = S5P_NAME;
>> host->ioaddr = (void *)regbase;
>> - host->quirks = quirks;
>
>
> I'm very confused by this line. "quirks" is the 4th argument to the
> original version of this function, but I see that the original
> *caller* of this function passed in "index". This is amazingly broken.
> Fortunately, your patch fixes it, but it calls into doubt how it ever
> worked with any index but "0".
It's just lucky. Because We are using the index "0" for eMMC card.
So i fixed this problem.
>
>
>>
>> - host->quirks |= SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
>> + host->quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
>> SDHCI_QUIRK_BROKEN_R1B | SDHCI_QUIRK_32BIT_DMA_ADDR;
>> host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
>> - if (quirks & SDHCI_QUIRK_REG32_RW)
>> + if (host->quirks & SDHCI_QUIRK_REG32_RW)
>
>
> Now that host->quirks is initialized just above, SDHCI_QUIRK_REG32_RW
> will never be set, so there's no point in checking for it.
Right, we can remove that. i will fix.
Best Regards,
Jaehoon Chung
>
>
> Andy
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-08-31 1:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-27 2:33 [U-Boot] [PATCH v2 2/4] mmc: s5p_mmc: fixed wrong function argument Jaehoon Chung
2012-08-30 21:46 ` Andy Fleming
2012-08-31 1:14 ` Jaehoon Chung
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox