[PATCH linux dev-4.17 2/7] clk: Aspeed: Add sdhci reset and clock
Joel Stanley
joel at jms.id.au
Wed Jul 11 15:26:45 AEST 2018
On 11 July 2018 at 15:17, Ryan Chen <ryanchen.aspeed at gmail.com> 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.
>
> 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);
We do not special case individual clocks. The reset should instead be
added to the aspeed_gates structure above.
In fact, it already is:
[ASPEED_CLK_GATE_SDCLKCLK] = { 27, 16, "sdclk-gate",
NULL, 0 }, /* SDIO/SD */
Although in that table it is 16, and you specify bit 15. The data
sheet I have says SD/SDIO is bit 16.
> + }
> +
> 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
> --
> 2.7.4
>
More information about the openbmc
mailing list