[U-Boot] [PATCH v2] dwmmc: make driver usable for non-exynos platforms

Jaehoon Chung jh80.chung at samsung.com
Fri Nov 29 11:00:53 CET 2013


Hi Alexey,

I have replied the previous patch.

On 11/29/2013 06:39 PM, Alexey Brodkin wrote:
> There's no point in having of "dwmmc.h" per architecure - we're talking
> about device driver (DesignWare MMC controller) which is expected to
> work with any CPU it is attached to.
> 
> Actually this change should have been an essential part of commit:
> =======
> 6f0b7caa671f92c2d4676c84381d17fb90f7d2cd
> DWMMC: SMDK5420: Disable SMU for eMMC
> =======
> 
> Or even better I'd prefer all non pure DW MMC functionality (those item
> in ifdefs) to be moved to corresponding files like "exynos_dw_mmc.c" via
> call-backs etc. This will keep DW MMC driver clean and simple.
> 
> As it is said in http://www.denx.de/wiki/U-Boot/DesignPrinciples:
> =======
> 8. Keep it Maintainable
> Avoid #ifdefs where possible
> =======
> 
> Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> 
> Cc: Mischa Jonker <mjonker at synopsys.com>
> Cc: Jaehoon Chung <jh80.chung at samsung.com>
> Cc: Andy Fleming <afleming at gmail.com>
> Cc: Alim Akhtar <alim.akhtar at samsung.com>
> Cc: Rajeshwari Shinde <rajeshwari.s at samsung.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Pantelis Antoniou <panto at antoniou-consulting.com>
> 
> Changes compared to initial version:
> Instead of modification of headers only disable some parts of code with
> ifdefs.
> ---
>  drivers/mmc/dw_mmc.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> index 1e0f72b..fdae40b 100644
> --- a/drivers/mmc/dw_mmc.c
> +++ b/drivers/mmc/dw_mmc.c
> @@ -11,7 +11,9 @@
>  #include <mmc.h>
>  #include <dwmmc.h>
>  #include <asm-generic/errno.h>
> +#ifdef CONFIG_EXYNOS5420
>  #include <asm/arch/dwmmc.h>
> +#endif
Just remove this.
>  
>  #define PAGE_SIZE 4096
>  
> @@ -302,6 +304,7 @@ static int dwmci_init(struct mmc *mmc)
>  	struct dwmci_host *host = (struct dwmci_host *)mmc->priv;
>  	u32 fifo_size;
>  
> +#ifdef CONFIG_EXYNOS5420
>  	if (host->quirks & DWMCI_QUIRK_DISABLE_SMU) {
>  		dwmci_writel(host, EMMCP_MPSBEGIN0, 0);
>  		dwmci_writel(host, EMMCP_SEND0, 0);
> @@ -311,6 +314,7 @@ static int dwmci_init(struct mmc *mmc)
>  			     MPSCTRL_NON_SECURE_READ_BIT |
>  			     MPSCTRL_NON_SECURE_WRITE_BIT | MPSCTRL_VALID);
>  	}
> +#endif
remove this and use callback function like the host->board_init()?
if (host->board_init())
	host->board_init(host);

Then we can reuse the this function for board specific code.
Anyway, I think that exynos code didn't exist at here(dw-mmc.c).

Best Regards,
Jaehoon Chung
>  
>  	dwmci_writel(host, DWMCI_PWREN, 1);
>  
> 



More information about the U-Boot mailing list