[U-Boot] [PATCH 1/2] arm: socfpga: mmc: Enable calibration for drvsel and smpsel

Marek Vasut
2015-09-03T14:25:08Z

On Thursday, September 03, 2015 at 04:06:12 PM, Chin Liang See wrote:
> Hi,
>
> On Thu, 2015-09-03 at 11:37 +0200, marex at denx.de wrote:
> > On Thursday, September 03, 2015 at 07:30:08 AM, Jaehoon Chung wrote:
> > > Hi,
> >
> > Hi,
> >
> > > On 09/03/2015 09:27 AM, Chin Liang See wrote:
> > > > On Wed, 2015-09-02 at 12:32 +0200, marex at denx.de wrote:
> > > [snip]
> >
> > thanks
> >
> > > >>>>> Would want to hear more from Jaehoon as Exynos and SOCFPGA are
> > > >>>>> the one setting up these values.
> > > >>>>
> > > >>>> Since this approach is not based on dwmmc TRM, it's based on
> > > >>>> SOCFPGA SoC, i think that it doesn't need to include into dwmmc
> > > >>>> core. If need to located into dwmmc core, this code needs to
> > > >>>> modify more.
> > > >>>>
> > > >>>> As drvsel and clksmpl are used at Exynos and SoCFPGA, it's not
> > > >>>> core feature. Other SoC can't be used them. we don't know.
> > > >>>
> > > >>> Plus the way that this function is implemented, it is very specific
> > > >>> to SoCFGA, as the tables and rows are representing 45 degree
> > > >>> increments for the drvsel and smplsel value. Other platforms can
> > > >>> have either more or less granularity in the drvsel and smplsel
> > > >>> values.
> > > >>
> > > >> How is this SMPLSEL and DRVSEL implemented on Exynos ?
> > >
> > > Exynos is using CLKSEL register in dw-mmc controller.
> > > It's exynos specific register in dwmmc controller. It's also
> > > represented 45 degree increment. SELCK_DRV is bit[18:16] or more.
> > > SELCLK_SAMPLE is bit[2:0] or more. There are other bits relevant to
> > > tuning clock. '_more_' means that it can be changed bandwidth.
> > >
> > > Anyway, I think there is no right method about finding the best smplclk
> > > and drvsel. If this is generic method, i will pick this. But i don't
> > > think so, and there is no benefit for exynos.
> > >
> > > smplclk and drvsel value need to process the tuning sequence.
> > > There is no tuning case at bootloader, since it's not implemented about
> > > HS200 or upper mode.
> > >
> > > Clksel an drvsel value are passed by device tree.
> >
> > In that case, maybe SoCFPGA should also pick those values from DT ? It
> > would keep the code simple and in case there is a problematic board, it
> > could use u-boot application to perform the tuning.
>
> I prefer not to do that as it narrows the supported use case for the
> driver.

How so? It keeps the driver code clean and this code you're adding seems
like a special-purpose stuff which needs to be done once for particular
board, no ?

Best regards,
Marek Vasut