Message ID | 20140803075119.10152.52685.stgit@drishya (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Benjamin Herrenschmidt |
Headers | show |
On 08/03/2014 01:23 PM, Vaidyanathan Srinivasan wrote: > Flags from device-tree need to be parsed with accessors for > interpreting correct value in little-endian. > > Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> > --- > drivers/cpuidle/cpuidle-powernv.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c > index 74f5788..a64be57 100644 > --- a/drivers/cpuidle/cpuidle-powernv.c > +++ b/drivers/cpuidle/cpuidle-powernv.c > @@ -160,10 +160,10 @@ static int powernv_cpuidle_driver_init(void) > static int powernv_add_idle_states(void) > { > struct device_node *power_mgt; > - struct property *prop; > int nr_idle_states = 1; /* Snooze */ > int dt_idle_states; > - u32 *flags; > + const __be32 *idle_state_flags; > + u32 len_flags, flags; > int i; > > /* Currently we have snooze statically defined */ > @@ -174,18 +174,18 @@ static int powernv_add_idle_states(void) > return nr_idle_states; > } > > - prop = of_find_property(power_mgt, "ibm,cpu-idle-state-flags", NULL); > - if (!prop) { > + idle_state_flags = of_get_property(power_mgt, "ibm,cpu-idle-state-flags", &len_flags); > + if (!idle_state_flags) { > pr_warn("DT-PowerMgmt: missing ibm,cpu-idle-state-flags\n"); > return nr_idle_states; > } > > - dt_idle_states = prop->length / sizeof(u32); > - flags = (u32 *) prop->value; > + dt_idle_states = len_flags / sizeof(u32); > > for (i = 0; i < dt_idle_states; i++) { > > - if (flags[i] & IDLE_USE_INST_NAP) { > + flags = be32_to_cpu(idle_state_flags[i]); > + if (flags & IDLE_USE_INST_NAP) { > /* Add NAP state */ > strcpy(powernv_states[nr_idle_states].name, "Nap"); > strcpy(powernv_states[nr_idle_states].desc, "Nap"); > @@ -196,7 +196,7 @@ static int powernv_add_idle_states(void) > nr_idle_states++; > } > > - if (flags[i] & IDLE_USE_INST_SLEEP) { > + if (flags & IDLE_USE_INST_SLEEP) { > /* Add FASTSLEEP state */ > strcpy(powernv_states[nr_idle_states].name, "FastSleep"); > strcpy(powernv_states[nr_idle_states].desc, "FastSleep"); Reviewed-by: Preeti U. Murthy <preeti@linux.vnet.ibm.com> > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev >
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 74f5788..a64be57 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -160,10 +160,10 @@ static int powernv_cpuidle_driver_init(void) static int powernv_add_idle_states(void) { struct device_node *power_mgt; - struct property *prop; int nr_idle_states = 1; /* Snooze */ int dt_idle_states; - u32 *flags; + const __be32 *idle_state_flags; + u32 len_flags, flags; int i; /* Currently we have snooze statically defined */ @@ -174,18 +174,18 @@ static int powernv_add_idle_states(void) return nr_idle_states; } - prop = of_find_property(power_mgt, "ibm,cpu-idle-state-flags", NULL); - if (!prop) { + idle_state_flags = of_get_property(power_mgt, "ibm,cpu-idle-state-flags", &len_flags); + if (!idle_state_flags) { pr_warn("DT-PowerMgmt: missing ibm,cpu-idle-state-flags\n"); return nr_idle_states; } - dt_idle_states = prop->length / sizeof(u32); - flags = (u32 *) prop->value; + dt_idle_states = len_flags / sizeof(u32); for (i = 0; i < dt_idle_states; i++) { - if (flags[i] & IDLE_USE_INST_NAP) { + flags = be32_to_cpu(idle_state_flags[i]); + if (flags & IDLE_USE_INST_NAP) { /* Add NAP state */ strcpy(powernv_states[nr_idle_states].name, "Nap"); strcpy(powernv_states[nr_idle_states].desc, "Nap"); @@ -196,7 +196,7 @@ static int powernv_add_idle_states(void) nr_idle_states++; } - if (flags[i] & IDLE_USE_INST_SLEEP) { + if (flags & IDLE_USE_INST_SLEEP) { /* Add FASTSLEEP state */ strcpy(powernv_states[nr_idle_states].name, "FastSleep"); strcpy(powernv_states[nr_idle_states].desc, "FastSleep");
Flags from device-tree need to be parsed with accessors for interpreting correct value in little-endian. Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> --- drivers/cpuidle/cpuidle-powernv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)