Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1688804

Re: [PATCH 02/11] clk: sunxi-ng: Add interface to query or configure MMC timing modes.

From Maxime Ripard <maxime.ripard@free-electrons.com>
Newsgroups linux.kernel
Subject Re: [PATCH 02/11] clk: sunxi-ng: Add interface to query or configure MMC timing modes.
Date 2017-07-17 11:20 +0200
Message-ID <u4am7-37p-43@gated-at.bofh.it> (permalink)
References <u32Ai-84Q-7@gated-at.bofh.it> <u32Aj-84Q-29@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

Hi,

On Fri, Jul 14, 2017 at 02:42:53PM +0800, Chen-Yu Tsai wrote:
> Starting with the A83T SoC, Allwinner introduced a new timing mode for
> its MMC clocks. The new mode changes how the MMC controller sample and
> output clocks are delayed to match chip and board specifics. There are
> two controls for this, one on the CCU side controlling how the clocks
> behave, and one in the MMC controller controlling what inputs to take
> and how to route them.
> 
> In the old mode, the MMC clock had 2 child clocks providing the output
> and sample clocks, which could be delayed by a number of clock cycles
> measured from the MMC clock's parent.
> 
> With the new mode, the 2 delay clocks are no longer active. Instead,
> the delays and associated controls are moved into the MMC controller.
> The output of the MMC clock is also halved.
> 
> The difference in how things are wired between the modes means that the
> clock controls and the MMC controls must match. To achieve this in a
> clear, explicit way, we introduce two functions for the MMC driver to
> use: one queries the hardware for the current mode set, and the other
> allows the MMC driver to request a mode.
> 
> With newer SoCs such as the A64, the old mode is all but removed. Hence
> we support two variations, one where the mode can be toggled, and the
> other where the clock is fixed in the new mode.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  drivers/clk/sunxi-ng/Makefile         |  1 +
>  drivers/clk/sunxi-ng/ccu_common.h     |  2 +
>  drivers/clk/sunxi-ng/ccu_mmc_timing.c | 73 +++++++++++++++++++++++++++++++++++
>  include/linux/clk/sunxi-ng.h          | 20 ++++++++++
>  4 files changed, 96 insertions(+)
>  create mode 100644 drivers/clk/sunxi-ng/ccu_mmc_timing.c
>  create mode 100644 include/linux/clk/sunxi-ng.h
> 
> diff --git a/drivers/clk/sunxi-ng/Makefile b/drivers/clk/sunxi-ng/Makefile
> index 0c45fa50283d..45a5910379a5 100644
> --- a/drivers/clk/sunxi-ng/Makefile
> +++ b/drivers/clk/sunxi-ng/Makefile
> @@ -1,5 +1,6 @@
>  # Common objects
>  lib-$(CONFIG_SUNXI_CCU)		+= ccu_common.o
> +lib-$(CONFIG_SUNXI_CCU)		+= ccu_mmc_timing.o
>  lib-$(CONFIG_SUNXI_CCU)		+= ccu_reset.o
>  
>  # Base clock types
> diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h
> index d6fdd7a789aa..88981e7fd978 100644
> --- a/drivers/clk/sunxi-ng/ccu_common.h
> +++ b/drivers/clk/sunxi-ng/ccu_common.h
> @@ -23,6 +23,8 @@
>  #define CCU_FEATURE_FIXED_POSTDIV	BIT(3)
>  #define CCU_FEATURE_ALL_PREDIV		BIT(4)
>  #define CCU_FEATURE_LOCK_REG		BIT(5)
> +#define CCU_FEATURE_MMC_TIMING_SWITCH	BIT(6)
> +#define CCU_FEATURE_MMC_ALWAYS_NEW	BIT(7)

I'm not really sure we need the ALWAYS_NEW bit here. In the case where
the clocks cannot operate in the old mode any more, we won't even
query the clocks, since we know that it's not needed at all.

Pretty much just like what we're doing for old-mode-only clocks at the
moment.

I guess the only thing we should indentify is whether the clock can
switch between the two, or not, and the MMC_TIMING_SWITCH bit is
already perfect for that.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[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

csiph-web