crypto: rockchip - handle reset also in PM
reset could be handled by PM functions. We keep the initial reset pulse to be sure the hw is a know device state after probe. Signed-off-by: Corentin Labbe <clabbe@baylibre.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
a216be3964
commit
6f61192549
|
@ -74,14 +74,23 @@ static int rk_crypto_pm_suspend(struct device *dev)
|
||||||
struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
|
struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
|
||||||
|
|
||||||
rk_crypto_disable_clk(rkdev);
|
rk_crypto_disable_clk(rkdev);
|
||||||
|
reset_control_assert(rkdev->rst);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rk_crypto_pm_resume(struct device *dev)
|
static int rk_crypto_pm_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
|
struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = rk_crypto_enable_clk(rkdev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
reset_control_deassert(rkdev->rst);
|
||||||
|
return 0;
|
||||||
|
|
||||||
return rk_crypto_enable_clk(rkdev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct dev_pm_ops rk_crypto_pm_ops = {
|
static const struct dev_pm_ops rk_crypto_pm_ops = {
|
||||||
|
@ -222,13 +231,6 @@ static void rk_crypto_unregister(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rk_crypto_action(void *data)
|
|
||||||
{
|
|
||||||
struct rk_crypto_info *crypto_info = data;
|
|
||||||
|
|
||||||
reset_control_assert(crypto_info->rst);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct of_device_id crypto_of_id_table[] = {
|
static const struct of_device_id crypto_of_id_table[] = {
|
||||||
{ .compatible = "rockchip,rk3288-crypto" },
|
{ .compatible = "rockchip,rk3288-crypto" },
|
||||||
{}
|
{}
|
||||||
|
@ -258,10 +260,6 @@ static int rk_crypto_probe(struct platform_device *pdev)
|
||||||
usleep_range(10, 20);
|
usleep_range(10, 20);
|
||||||
reset_control_deassert(crypto_info->rst);
|
reset_control_deassert(crypto_info->rst);
|
||||||
|
|
||||||
err = devm_add_action_or_reset(dev, rk_crypto_action, crypto_info);
|
|
||||||
if (err)
|
|
||||||
goto err_crypto;
|
|
||||||
|
|
||||||
crypto_info->reg = devm_platform_ioremap_resource(pdev, 0);
|
crypto_info->reg = devm_platform_ioremap_resource(pdev, 0);
|
||||||
if (IS_ERR(crypto_info->reg)) {
|
if (IS_ERR(crypto_info->reg)) {
|
||||||
err = PTR_ERR(crypto_info->reg);
|
err = PTR_ERR(crypto_info->reg);
|
||||||
|
|
Loading…
Reference in New Issue