mmc: sunxi: Support controllers that can use both old and new timings
authorChen-Yu Tsai <wens@csie.org>
Mon, 24 Jul 2017 13:58:59 +0000 (21:58 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 30 Aug 2017 12:01:48 +0000 (14:01 +0200)
commitff39e7f742fdb1879e06bd7fd5a1daf9b8be430d
treec8ddd68c163b1b4c945378e1dce9a835a6582da8
parent81e911d0dcdb35203785542e0417cd8feb45df65
mmc: sunxi: Support controllers that can use both old and new timings

On the SoCs that introduced the new timing mode for MMC controllers,
both the old (where the clock delays are set in the CCU) and new
(where the clock delays are set in the MMC controller) timing modes
are available, and we have to support them both. However there are
two bits that control which mode is active. One is in the CCU, the
other is in the MMC controller. The settings on both sides must be
the same, or nothing will work.

The sunxi-ng clock driver provides an API to query and set the
active timing mode. At probe time, we try to set the active mode
to the "new timing mode". If it succeeds, we can then use the MMC
controller in the new mode. If not, we fall back to the old mode.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sunxi-mmc.c