Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8217a7a2 authored by Andrey Smirnov's avatar Andrey Smirnov Committed by Shawn Guo
Browse files

soc: imx: gpcv2: Make use of regmap_read_poll_timeout()



Replace explicit polling loop with a call to
regmap_read_poll_timeout() to avoid code repetition. Also fix
misspelled "failed" while at it.

Signed-off-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Chris Healy <cphealy@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: default avatarLucas Stach <l.stach@pengutronix.de>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 9e98c678
Loading
Loading
Loading
Loading
+14 −25
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ static int imx_gpc_pu_pgc_sw_pxx_req(struct generic_pm_domain *genpd,
		GPC_PU_PGC_SW_PUP_REQ : GPC_PU_PGC_SW_PDN_REQ;
	const bool enable_power_control = !on;
	const bool has_regulator = !IS_ERR(domain->regulator);
	unsigned long deadline;
	int i, ret = 0;
	u32 pxx_req;

	regmap_update_bits(domain->regmap, GPC_PGC_CPU_MAPPING,
			   domain->bits.map, domain->bits.map);
@@ -169,18 +169,11 @@ static int imx_gpc_pu_pgc_sw_pxx_req(struct generic_pm_domain *genpd,
	 * As per "5.5.9.4 Example Code 4" in IMX7DRM.pdf wait
	 * for PUP_REQ/PDN_REQ bit to be cleared
	 */
	deadline = jiffies + msecs_to_jiffies(1);
	while (true) {
		u32 pxx_req;

		regmap_read(domain->regmap, offset, &pxx_req);

		if (!(pxx_req & domain->bits.pxx))
			break;

		if (time_after(jiffies, deadline)) {
			dev_err(domain->dev, "falied to command PGC\n");
			ret = -ETIMEDOUT;
	ret = regmap_read_poll_timeout(domain->regmap, offset, pxx_req,
				       !(pxx_req & domain->bits.pxx),
				       0, USEC_PER_MSEC);
	if (ret) {
		dev_err(domain->dev, "failed to command PGC\n");
		/*
		 * If we were in a process of enabling a
		 * domain and failed we might as well disable
@@ -189,10 +182,6 @@ static int imx_gpc_pu_pgc_sw_pxx_req(struct generic_pm_domain *genpd,
		 * power down -- keep the regulator on
		 */
		on = !on;
			break;
		}

		cpu_relax();
	}

	if (enable_power_control)