Hi, On Wed, Apr 19, 2017 at 2:00 AM, Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> wrote: > Currently we unconditionally do tuning for each degree, which > costs 900ms for each boot and resume. > > May someone argue that this is a question of accuracy VS time. But I > would say it's a trick of how we need to do decision for our boards. > If we don't care the time we spend at all, we could definitely do tuning > for each degree. But when we need to improve the user experience, for > instance, speed up resuming from S3, we should also have the right to > do that. This patch add parsing "rockchip,default-num-phases", for folks > to specify the number of doing tuning. If not specified, 360 will be used > as before. > > Signed-off-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> > > --- > > drivers/mmc/host/dw_mmc-rockchip.c | 48 ++++++++++++++++++++++++-------------- > 1 file changed, 30 insertions(+), 18 deletions(-) No huge objection here, but I do remember we ended up at the 360 phases due to some of the craziness with dw_mmc delay elements on rk3288. IIRC one of the big problems was that the delay elements changed _a lot_ with the "LOGIC" voltage and we tweaked the voltage at runtime for DDR DVFS. That imposed an extra need to be very accurate on that SoC, at least on any board that was designed to support DDR DVFS. I also remember there being some weirdness on the Rockchip implementation where there was a certain set of phases that the MMC controller was essentially "blind". This blind spot was in the middle of an otherwise good range of points. Unfortunately this blind spot was somewhat hard to detect properly because it was not very big. ...the variability of the delay elements meant that there could be big ranges where we weren't getting any good test coverage, but also the fact that they changed with the LOGIC voltage might mean that we weren't in the "blind" spot and then suddenly we were. One other note is that i remember that the vast majority of time spent tuning was dealing with "bad" phases, not dealing with "good" phases. If you're looking to speed things up, maybe finding a way to make "bad" phases fail faster would be wise? I think one of the reasons bad phases failed so slowly is because the dw_mmc timeouts are all so long. Oh, and I guess one last note is that I have no idea if folks will like the device bindings here. Part of me thinks it should be something more "symbolic" like "rockchip,need-accurate-tuning" or something like that. I guess I'd let the DT experts chime in. So I guess to summarize: * On rk3288 boards w/ DDR DVFS (or any other similar boards), 360 seems to provide real benefit. * On other boards, probably you can get by with fewer phases. -Doug -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html