ret = clk_set_rate(&priv->sclk, priv->frequency); === Could you make this portable? Example: int i; priv->num_clks = devm_clk_bulk_get_all(dev, &priv->clks); if (priv->num_clks < 1) return -EINVAL; priv->sclk = NULL; for (i = 0; i < priv->num_clks; i++) { if (!strncmp(priv->clks[i].id, "sclk", 3)) { priv->sclk = priv->clks[i].clk; break; } } if (!priv->sclk) { dev_err(dev, "no sclk found\n"); return -EINVAL; } Also add optional "sclk1" clock for rk3399. Use "sclk" and not "sclk0" to be backwards compatible. === Also make the resets portable for rk3399. Remove the requirement for "reset-names". Example: priv->phy_rst = devm_reset_control_array_get_exclusive(dev); if (IS_ERR(priv->phy_rst)) return dev_err_probe(dev, PTR_ERR(priv->phy_rst), "failed to get phy reset\n"); > crypto_info->irq = platform_get_irq(pdev, 0); > if (crypto_info->irq < 0) { > dev_err(&pdev->dev, "control Interrupt is not available.\n"); > diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockchip/rk3288_crypto.h > index c741e97057dc..963fbfc4d14e 100644 > --- a/drivers/crypto/rockchip/rk3288_crypto.h > +++ b/drivers/crypto/rockchip/rk3288_crypto.h > @@ -191,7 +191,6 @@ struct rk_crypto_info { > struct clk *aclk; > struct clk *hclk; > struct clk *sclk; > - struct clk *dmaclk; int num_clks; struct clk_bulk_data *clks; struct clk *sclk; struct clk *sclk1; > struct reset_control *rst; > void __iomem *reg; > int irq;