Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1687095 > unrolled thread
| Started by | Chen-Yu Tsai <wens@csie.org> |
|---|---|
| First post | 2017-07-14 08:50 +0200 |
| Last post | 2017-07-17 11:20 +0200 |
| Articles | 2 on this page of 22 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH 00/11] ARM: sun8i: a83t: Add support for MMC controllers Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
[PATCH 11/11] ARM: dts: sun8i: a83t: h8homlet: Enable micro-SD card and onboard eMMC Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
[PATCH 04/11] mmc: sunxi: Keep default timing phase settings for new timing mode Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 04/11] mmc: sunxi: Keep default timing phase settings for new timing mode Ulf Hansson <ulf.hansson@linaro.org> - 2017-07-14 11:20 +0200
Re: [PATCH 04/11] mmc: sunxi: Keep default timing phase settings for new timing mode Chen-Yu Tsai <wens@csie.org> - 2017-07-14 11:50 +0200
Re: [PATCH 04/11] mmc: sunxi: Keep default timing phase settings for new timing mode Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:20 +0200
Re: [PATCH 04/11] mmc: sunxi: Keep default timing phase settings for new timing mode Ulf Hansson <ulf.hansson@linaro.org> - 2017-07-17 12:40 +0200
[PATCH 09/11] ARM: dts: sun8i: a83t: Add pingroup for 8-bit eMMC on mmc2 Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
[PATCH 01/11] ARM: dts: sun8i: a83t: Switch to CCU device tree binding macros Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 01/11] ARM: dts: sun8i: a83t: Switch to CCU device tree binding macros Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:10 +0200
[PATCH 02/11] clk: sunxi-ng: Add interface to query or configure MMC timing modes. Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 02/11] clk: sunxi-ng: Add interface to query or configure MMC timing modes. Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:20 +0200
[PATCH 08/11] ARM: dts: sun8i: a83t: Add MMC controller device nodes Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 08/11] ARM: dts: sun8i: a83t: Add MMC controller device nodes Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:30 +0200
[PATCH 07/11] mmc: sunxi: Add support for A83T eMMC (MMC2) Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 07/11] mmc: sunxi: Add support for A83T eMMC (MMC2) Rob Herring <robh@kernel.org> - 2017-07-17 21:00 +0200
[PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Chen-Yu Tsai <wens@csie.org> - 2017-07-14 08:50 +0200
Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Ulf Hansson <ulf.hansson@linaro.org> - 2017-07-14 11:30 +0200
Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Chen-Yu Tsai <wens@csie.org> - 2017-07-14 11:50 +0200
Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Ulf Hansson <ulf.hansson@linaro.org> - 2017-07-14 12:00 +0200
Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:30 +0200
Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings Maxime Ripard <maxime.ripard@free-electrons.com> - 2017-07-17 11:20 +0200
Page 2 of 2 — ← Prev page 1 [2]
| From | Maxime Ripard <maxime.ripard@free-electrons.com> |
|---|---|
| Date | 2017-07-17 11:30 +0200 |
| Subject | Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings |
| Message-ID | <u4avM-3bA-15@gated-at.bofh.it> |
| In reply to | #1687211 |
[Multipart message — attachments visible in raw view] — view raw
On Fri, Jul 14, 2017 at 11:57:35AM +0200, Ulf Hansson wrote:
> >>> + if (host->use_new_timings) {
> >>> + ret = sunxi_ccu_set_mmc_timing_mode(host->clk_mmc, true);
> >>
> >> Can't this be solved through some other generic API/interface?
> >
> > The old discussion is here: https://lkml.org/lkml/2017/5/5/77
> >
> > It is possible to piggy back on existing API, but as Maxime mentioned
> > back in the discussion, it is confusing.
> >
> > IIRC Mike said (via Maxime) an SoC specific call was the easy way
> > to handle this. I don't think there's anything generic about this.
> > Even if you could have a _set_mode callback for the clks, the modes
> > would be SoC specific anyway.
>
> Right. But it would benefit that we can keep drivers generic, as they
> are using generic APIs/interfaces. I prefer that.
>
> Anyway, let me try to dig up the earlier discussion.
There's really not any generic way to support that. Even if we reuse
some other function (clk_set_phase/clk_get_phase was suggested), and
use error codes and / or values to differentiate between two modes,
this will be very much implementation-specific as well, and any other
SoC that in theory would be using that will very likely to not
implement the same behaviour for its clocks.
And this driver is only used on one SoC family, so it's not really a
big deal anyway.
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
[toc] | [prev] | [next] | [standalone]
| From | Maxime Ripard <maxime.ripard@free-electrons.com> |
|---|---|
| Date | 2017-07-17 11:20 +0200 |
| Subject | Re: [PATCH 05/11] mmc: sunxi: Support controllers that can use both old and new timings |
| Message-ID | <u4am5-37p-9@gated-at.bofh.it> |
| In reply to | #1687110 |
[Multipart message — attachments visible in raw view] — view raw
Hi,
On Fri, Jul 14, 2017 at 02:42:56PM +0800, Chen-Yu Tsai wrote:
> 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 CCU's get/set_phase callbacks return -ENOTSUPP when the new
> timing mode is active. This provides a way to know which mode is
> active on that side, and we can set the bit on the MMC controller
> side accordingly.
>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
> drivers/mmc/host/sunxi-mmc.c | 34 ++++++++++++++++++++++++++++++----
> 1 file changed, 30 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
> index 0fb4e4c119e1..56e45c65b52d 100644
> --- a/drivers/mmc/host/sunxi-mmc.c
> +++ b/drivers/mmc/host/sunxi-mmc.c
> @@ -22,6 +22,7 @@
> #include <linux/err.h>
>
> #include <linux/clk.h>
> +#include <linux/clk/sunxi-ng.h>
> #include <linux/gpio.h>
> #include <linux/platform_device.h>
> #include <linux/spinlock.h>
> @@ -259,7 +260,7 @@ struct sunxi_mmc_cfg {
> /* Does DATA0 needs to be masked while the clock is updated */
> bool mask_data0;
>
> - bool needs_new_timings;
> + bool has_new_timings;
I think we should have both, it's a bit different. Newer SoCs like the
A64 can only operate using new timings, while the older ones can
operate in both modes.
In one case, we're forced to use it, in the other one it's a
policy. We should differentiate both cases.
Looks good otherwise, thanks!
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
[toc] | [prev] | [standalone]
Page 2 of 2 — ← Prev page 1 [2]
Back to top | Article view | linux.kernel
csiph-web