Commit ac6a9e07 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pmdomain-v6.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm

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
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
* @addr: Resource address as looped up using resource name from * @addr: Resource address as looped up using resource name from
* cmd-db * cmd-db
* @state_synced: Indicator that sync_state has been invoked for the rpmhpd resource * @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 rpmhpd {
struct device *dev; struct device *dev;
...@@ -56,6 +57,7 @@ struct rpmhpd { ...@@ -56,6 +57,7 @@ struct rpmhpd {
const char *res_name; const char *res_name;
u32 addr; u32 addr;
bool state_synced; bool state_synced;
bool skip_retention_level;
}; };
struct rpmhpd_desc { struct rpmhpd_desc {
...@@ -173,6 +175,7 @@ static struct rpmhpd mxc = { ...@@ -173,6 +175,7 @@ static struct rpmhpd mxc = {
.pd = { .name = "mxc", }, .pd = { .name = "mxc", },
.peer = &mxc_ao, .peer = &mxc_ao,
.res_name = "mxc.lvl", .res_name = "mxc.lvl",
.skip_retention_level = true,
}; };
static struct rpmhpd mxc_ao = { static struct rpmhpd mxc_ao = {
...@@ -180,6 +183,7 @@ static struct rpmhpd mxc_ao = { ...@@ -180,6 +183,7 @@ static struct rpmhpd mxc_ao = {
.active_only = true, .active_only = true,
.peer = &mxc, .peer = &mxc,
.res_name = "mxc.lvl", .res_name = "mxc.lvl",
.skip_retention_level = true,
}; };
static struct rpmhpd nsp = { static struct rpmhpd nsp = {
...@@ -819,6 +823,9 @@ static int rpmhpd_update_level_mapping(struct rpmhpd *rpmhpd) ...@@ -819,6 +823,9 @@ static int rpmhpd_update_level_mapping(struct rpmhpd *rpmhpd)
return -EINVAL; return -EINVAL;
for (i = 0; i < rpmhpd->level_count; i++) { 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]; rpmhpd->level[i] = buf[i];
/* Remember the first corner with non-zero level */ /* Remember the first corner with non-zero level */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment