[PATCH next v7 06/12] clk: ast2600: Add RSACLK control for ACRY

Joel Stanley joel at jms.id.au
Thu Oct 21 02:08:04 CEST 2021


On Wed, 20 Oct 2021 at 02:50, Chia-Wei Wang <chiawei_wang at aspeedtech.com> wrote:
>
> Add RSACLK enable for ACRY, the HW RSA/ECC crypto engine
> of ASPEED AST2600 SoCs.
>
> As ACRY and HACE share the same reset control bit, we do not
> perform the reset-hold-n-release operation during their clock
> ungating process. Instead, only reset release is conducted to
> prevent mutual interference.

Is this okay to do? If so, can we do this for other clocks without
having to wait 100us?

It would make sense to merge this patch with the HACE patch to avoid
adding and then removing code in the same series.

>
> Signed-off-by: Chia-Wei Wang <chiawei_wang at aspeedtech.com>
> ---
>  .../arm/include/asm/arch-aspeed/scu_ast2600.h |  1 +
>  drivers/clk/aspeed/clk_ast2600.c              | 22 +++++++++++++++++--
>  2 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-aspeed/scu_ast2600.h b/arch/arm/include/asm/arch-aspeed/scu_ast2600.h
> index d7b500f656..7c5aab98b6 100644
> --- a/arch/arm/include/asm/arch-aspeed/scu_ast2600.h
> +++ b/arch/arm/include/asm/arch-aspeed/scu_ast2600.h
> @@ -8,6 +8,7 @@
>  #define SCU_UNLOCK_KEY                 0x1688a8a8
>
>  #define SCU_CLKGATE1_EMMC                      BIT(27)
> +#define SCU_CLKGATE1_ACRY                      BIT(24)
>  #define SCU_CLKGATE1_MAC2                      BIT(21)
>  #define SCU_CLKGATE1_MAC1                      BIT(20)
>  #define SCU_CLKGATE1_USB_HUB                   BIT(14)
> diff --git a/drivers/clk/aspeed/clk_ast2600.c b/drivers/clk/aspeed/clk_ast2600.c
> index 69128fd3c4..f6ebf824aa 100644
> --- a/drivers/clk/aspeed/clk_ast2600.c
> +++ b/drivers/clk/aspeed/clk_ast2600.c
> @@ -1018,11 +1018,26 @@ static ulong ast2600_enable_haceclk(struct ast2600_scu *scu)
>         uint32_t reset_bit;
>         uint32_t clkgate_bit;
>
> +       /* share the same reset control bit with ACRY */
>         reset_bit = BIT(ASPEED_RESET_HACE);
>         clkgate_bit = SCU_CLKGATE1_HACE;
>
> -       writel(reset_bit, &scu->modrst_ctrl1);
> -       udelay(100);
> +       writel(clkgate_bit, &scu->clkgate_clr1);
> +       mdelay(20);
> +       writel(reset_bit, &scu->modrst_clr1);
> +
> +       return 0;
> +}
> +
> +static ulong ast2600_enable_rsaclk(struct ast2600_scu *scu)
> +{
> +       uint32_t reset_bit;
> +       uint32_t clkgate_bit;
> +
> +       /* share the same reset control bit with HACE */
> +       reset_bit = BIT(ASPEED_RESET_HACE);
> +       clkgate_bit = SCU_CLKGATE1_ACRY;
> +
>         writel(clkgate_bit, &scu->clkgate_clr1);
>         mdelay(20);
>         writel(reset_bit, &scu->modrst_clr1);
> @@ -1071,6 +1086,9 @@ static int ast2600_clk_enable(struct clk *clk)
>         case ASPEED_CLK_GATE_YCLK:
>                 ast2600_enable_haceclk(priv->scu);
>                 break;
> +       case ASPEED_CLK_GATE_RSACLK:
> +               ast2600_enable_rsaclk(priv->scu);
> +               break;
>         default:
>                 pr_err("can't enable clk\n");
>                 return -ENOENT;
> --
> 2.17.1
>


More information about the U-Boot mailing list