[v5,2/2] soc: imx: gpc: Use GENPD_FLAG_RPM_ALWAYS_ON for ERR009619
diff mbox series

Message ID 8f53bef00e72aa35d146210bb71ca05b8a3af141.1556636234.git.leonard.crestez@nxp.com
State Accepted, archived
Delegated to: Rafael Wysocki
Headers show
Series
  • Allow imx6qp PU domain off in suspend
Related show

Commit Message

Leonard Crestez April 30, 2019, 3:06 p.m. UTC
This allows PU domain to be turned off in suspend and save power.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 drivers/soc/imx/gpc.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

Comments

Ulf Hansson May 2, 2019, 9:20 a.m. UTC | #1
On Tue, 30 Apr 2019 at 17:06, Leonard Crestez <leonard.crestez@nxp.com> wrote:
>
> This allows PU domain to be turned off in suspend and save power.
>
> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>

Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>

Kind regards
Uffe

> ---
>  drivers/soc/imx/gpc.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
> index a8f1e47ce698..d9231bd3c691 100644
> --- a/drivers/soc/imx/gpc.c
> +++ b/drivers/soc/imx/gpc.c
> @@ -427,14 +427,23 @@ static int imx_gpc_probe(struct platform_device *pdev)
>                 dev_err(&pdev->dev, "failed to init regmap: %d\n",
>                         ret);
>                 return ret;
>         }
>
> -       /* Disable PU power down in normal operation if ERR009619 is present */
> +       /*
> +        * Disable PU power down by runtime PM if ERR009619 is present.
> +        *
> +        * The PRE clock will be paused for several cycles when turning on the
> +        * PU domain LDO from power down state. If PRE is in use at that time,
> +        * the IPU/PRG cannot get the correct display data from the PRE.
> +        *
> +        * This is not a concern when the whole system enters suspend state, so
> +        * it's safe to power down PU in this case.
> +        */
>         if (of_id_data->err009619_present)
>                 imx_gpc_domains[GPC_PGC_DOMAIN_PU].base.flags |=
> -                               GENPD_FLAG_ALWAYS_ON;
> +                               GENPD_FLAG_RPM_ALWAYS_ON;
>
>         /* Keep DISP always on if ERR006287 is present */
>         if (of_id_data->err006287_present)
>                 imx_gpc_domains[GPC_PGC_DOMAIN_DISPLAY].base.flags |=
>                                 GENPD_FLAG_ALWAYS_ON;
> --
> 2.17.1
>

Patch
diff mbox series

diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
index a8f1e47ce698..d9231bd3c691 100644
--- a/drivers/soc/imx/gpc.c
+++ b/drivers/soc/imx/gpc.c
@@ -427,14 +427,23 @@  static int imx_gpc_probe(struct platform_device *pdev)
 		dev_err(&pdev->dev, "failed to init regmap: %d\n",
 			ret);
 		return ret;
 	}
 
-	/* Disable PU power down in normal operation if ERR009619 is present */
+	/*
+	 * Disable PU power down by runtime PM if ERR009619 is present.
+	 *
+	 * The PRE clock will be paused for several cycles when turning on the
+	 * PU domain LDO from power down state. If PRE is in use at that time,
+	 * the IPU/PRG cannot get the correct display data from the PRE.
+	 *
+	 * This is not a concern when the whole system enters suspend state, so
+	 * it's safe to power down PU in this case.
+	 */
 	if (of_id_data->err009619_present)
 		imx_gpc_domains[GPC_PGC_DOMAIN_PU].base.flags |=
-				GENPD_FLAG_ALWAYS_ON;
+				GENPD_FLAG_RPM_ALWAYS_ON;
 
 	/* Keep DISP always on if ERR006287 is present */
 	if (of_id_data->err006287_present)
 		imx_gpc_domains[GPC_PGC_DOMAIN_DISPLAY].base.flags |=
 				GENPD_FLAG_ALWAYS_ON;