Commit ac6a9e07 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull pmdomain fix from Ulf Hansson:

 - qcom: Skip retention level for rpmhpd's

* tag 'pmdomain-v6.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
  pmdomain: qcom: rpmhpd: Skip retention level for Power Domains
parents 01ec3bb6 ddab91f4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@
 * @addr:		Resource address as looped up using resource name from
 *			cmd-db
 * @state_synced:	Indicator that sync_state has been invoked for the rpmhpd resource
 * @skip_retention_level: Indicate that retention level should not be used for the power domain
 */
struct rpmhpd {
	struct device	*dev;
@@ -56,6 +57,7 @@ struct rpmhpd {
	const char	*res_name;
	u32		addr;
	bool		state_synced;
	bool            skip_retention_level;
};

struct rpmhpd_desc {
@@ -173,6 +175,7 @@ static struct rpmhpd mxc = {
	.pd = { .name = "mxc", },
	.peer = &mxc_ao,
	.res_name = "mxc.lvl",
	.skip_retention_level = true,
};

static struct rpmhpd mxc_ao = {
@@ -180,6 +183,7 @@ static struct rpmhpd mxc_ao = {
	.active_only = true,
	.peer = &mxc,
	.res_name = "mxc.lvl",
	.skip_retention_level = true,
};

static struct rpmhpd nsp = {
@@ -819,6 +823,9 @@ static int rpmhpd_update_level_mapping(struct rpmhpd *rpmhpd)
		return -EINVAL;

	for (i = 0; i < rpmhpd->level_count; i++) {
		if (rpmhpd->skip_retention_level && buf[i] == RPMH_REGULATOR_LEVEL_RETENTION)
			continue;

		rpmhpd->level[i] = buf[i];

		/* Remember the first corner with non-zero level */