[PATCH linux dev-4.17 2/7] clk: Aspeed: Add sdhci reset and clock

Benjamin Herrenschmidt benh at kernel.crashing.org
Wed Jul 11 15:49:24 AEST 2018


On Wed, 2018-07-11 at 13:17 +0800, Ryan Chen wrote:
> 1.Add Aspeed sdhci reset for SCU04 bit 16
> 2.Aspeed sdhci have two clock one is for controller clock,
> another is for SD card clock. so when enable sdhci need enable
> both.

You should expose this as two different clocks instead of
putting a hack inside aspeed_clk_enable().

> Signed-off-by: Ryan Chen <ryanchen.aspeed at gmail.com>
> ---
>  drivers/clk/clk-aspeed.c                 | 8 +++++++-
>  include/dt-bindings/clock/aspeed-clock.h | 2 +-
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/clk/clk-aspeed.c b/drivers/clk/clk-aspeed.c
> index 9e55743..cd1f3b2 100644
> --- a/drivers/clk/clk-aspeed.c
> +++ b/drivers/clk/clk-aspeed.c
> @@ -20,6 +20,7 @@
>  
>  #define ASPEED_RESET_CTRL	0x04
>  #define ASPEED_CLK_SELECTION	0x08
> +#define  ASPEED_SDIO_CLK_EN BIT(15)
>  #define ASPEED_CLK_STOP_CTRL	0x0c
>  #define ASPEED_MPLL_PARAM	0x20
>  #define ASPEED_HPLL_PARAM	0x24
> @@ -260,6 +261,11 @@ static int aspeed_clk_enable(struct clk_hw *hw)
>  	enval = (gate->flags & CLK_GATE_SET_TO_DISABLE) ? 0 : clk;
>  	regmap_update_bits(gate->map, ASPEED_CLK_STOP_CTRL, clk, enval);
>  
> +	/* sd ext clk */
> +	if (gate->reset_idx == 16) {
> +		regmap_update_bits(gate->map, ASPEED_CLK_SELECTION, ASPEED_SDIO_CLK_EN, ASPEED_SDIO_CLK_EN);
> +	}
> +
>  	if (gate->reset_idx >= 0) {
>  		/* A delay of 10ms is specified by the ASPEED docs */
>  		mdelay(10);
> @@ -317,7 +323,7 @@ static const u8 aspeed_resets[] = {
>  	[ASPEED_RESET_PECI]	= 10,
>  	[ASPEED_RESET_I2C]	=  2,
>  	[ASPEED_RESET_AHB]	=  1,
> -
> +	[ASPEED_RESET_SDHCI]	= 16,
>  	/*
>  	 * SCUD4 resets start at an offset to separate them from
>  	 * the SCU04 resets.
> diff --git a/include/dt-bindings/clock/aspeed-clock.h b/include/dt-bindings/clock/aspeed-clock.h
> index 4476184..088553f 100644
> --- a/include/dt-bindings/clock/aspeed-clock.h
> +++ b/include/dt-bindings/clock/aspeed-clock.h
> @@ -50,5 +50,5 @@
>  #define ASPEED_RESET_I2C		7
>  #define ASPEED_RESET_AHB		8
>  #define ASPEED_RESET_CRT1		9
> -
> +#define ASPEED_RESET_SDHCI		10
>  #endif


More information about the openbmc mailing list