Hi, Simon. On 06/26/2015 04:26 AM, Simon Glass wrote: > Hi Jaehoon, > > On 24 June 2015 at 19:58, Jaehoon Chung <jh80.ch...@gmail.com> wrote: >> >> Hi, Simon. >> >> On 06/24/2015 06:38 AM, Simon Glass wrote: >>> We can calculate this. Add code to do this if it is not provided. >> >> Did you consider the kernel side? > > Can you please be more specific?
I didn't check now for fifoth value. But as i know (in my experiment), if it's not defined fifoth_val into kernel dt file, fifoth value is calculated with value of reading register. Well, i think your patch is right. (It needs to calculate the exactly fifoth_val.) The below case should be problem. 1. Calculate and set the fifoth value at bootloader. fifoth register = 0x203f0040 2. If fifoth_val doesn't set into dt-file(kernel), on kernel side re-calculate fifoth value. Should be fifo_size = 3f, since fifoth register's value is 0x203f0040. and fifoth register should be set to 0x201e001f.(just example.) So i will try to find more generic solution for this problem. If i missed something, let me know, plz. :) Actually, this case is complicated case. Best Regards, Jaehoon Chung > > Regards,1 > Simon > >> >> Best Regards, >> Jaehoon Chung >> >>> >>> Signed-off-by: Simon Glass <s...@chromium.org> >>> --- >>> >>> Changes in v3: None >>> Changes in v2: None >>> >>> drivers/mmc/dw_mmc.c | 10 ++++++++-- >>> 1 file changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c >>> index a034c3f..cce2a5d 100644 >>> --- a/drivers/mmc/dw_mmc.c >>> +++ b/drivers/mmc/dw_mmc.c >>> @@ -355,9 +355,15 @@ static int dwmci_init(struct mmc *mmc) >>> dwmci_writel(host, DWMCI_IDINTEN, 0); >>> dwmci_writel(host, DWMCI_BMOD, 1); >>> >>> - if (host->fifoth_val) { >>> - dwmci_writel(host, DWMCI_FIFOTH, host->fifoth_val); >>> + if (!host->fifoth_val) { >>> + uint32_t fifo_size; >>> + >>> + fifo_size = dwmci_readl(host, DWMCI_FIFOTH); >>> + fifo_size = ((fifo_size & RX_WMARK_MASK) >> RX_WMARK_SHIFT) + >>> 1; >>> + host->fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size / 2 - 1) | >>> + TX_WMARK(fifo_size / 2); >>> } >>> + dwmci_writel(host, DWMCI_FIFOTH, host->fifoth_val); >>> >>> dwmci_writel(host, DWMCI_CLKENA, 0); >>> dwmci_writel(host, DWMCI_CLKSRC, 0); >>> >> > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot