On Mon, 2017-09-18 at 21:11 +0200, Heiner Kallweit wrote: > Am 18.09.2017 um 15:44 schrieb Jerome Brunet: > > diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx- > > mmc.c > > index c885c2d4b904..0254d8bfd536 100644 > > --- a/drivers/mmc/host/meson-gx-mmc.c > > +++ b/drivers/mmc/host/meson-gx-mmc.c > > @@ -717,6 +717,22 @@ static int meson_mmc_clk_phase_tuning(struct mmc_host > > *mmc, u32 opcode, > > static int meson_mmc_execute_tuning(struct mmc_host *mmc, u32 opcode) > > { > > struct meson_host *host = mmc_priv(mmc); > > + int ret; > > + > > + /* > > + * If this is the initial tuning, try to get a sane Rx starting > > + * phase before doing the actual tuning. > > + */ > > + if (!mmc->doing_retune) { > > + ret = meson_mmc_clk_phase_tuning(mmc, opcode, host- > > >rx_clk); > > + > > + if (ret) > > + return ret; > > + } > > + > > + ret = meson_mmc_clk_phase_tuning(mmc, opcode, host->tx_clk); > > + if (ret) > > + return ret; > > > > return meson_mmc_clk_phase_tuning(mmc, opcode, host->rx_clk); > > } > > -- 2.13.5 > > Unfortunately this still doesn't fix the issue here. > Tuning rx and tx clk sequentially assumes both are independent, what they > IMHO are not. So meybe we have to check all combinations of rx/tx clk phase. Interesting, I would be curious to know what tuning value you ended with, compared to the "hard-coded' working value you have set. You can get that fairly easily now, using CCF in debugfs, in <debugfs>/clk/clk_summary, the different phase are reported What makes you think that tx and rx phase depends on one another ? I have done a lot of tests on all the phase different settings while working on this series and could see that: 1) For a fixed Tx and Core phase, Rx phase tuning tends to give a constant result 2) For a fixed Tx, Rx phase tuning tends to rotate with the core phase 3) For a fixed Core phase, Rx phase tuning tends to remain constant for any values of Tx phase >From what I understand of the HW, this would make sense: * Tx phase would be the phase at which the data are sent compared to the core clock * Rx phase would be the phase at which the data are sampled compared to the core clock This would make me conclude that both Tx and Rx phases depends on the core phase but are independent of one another. Of course, if you have evidence showing otherwise, I'm happy to reconsider. ATM, I don't see the added value of testing all the combination. Another thing to consider is that, with the current driver, we set the Tx and Rx with a precision of 30 degrees -> 12 possible phase settings. * 2 sequential tuning => 24 test * all combination of 2 phases => 144 test Also, remember that this tuning is as much based on the working tuning point as it is on the failing ones. I looks for the center of the tuning window, so failing tests are very valuable. Looking for all the combination, you would have you look for this "center" in 2D ... not impossible, but complex and annoying. > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html