[PATCH/RFT] mmc: meson-gx: include tx phase in the tuning process

Heiner Kallweit hkallweit1 at gmail.com
Tue Sep 19 11:54:01 PDT 2017


Am 19.09.2017 um 13:08 schrieb Jerome Brunet:
> 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
> 
This gives me:

core phase: 180
rx phase: 0
tx phase: 270

And I end up with a corrupted root file system.

> 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. 
>   
> 
>>
> 
> 




More information about the linux-amlogic mailing list