mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
[POWERPC] PS3: Fix reading pm interval in logical performance monitor
ps3_read_pm (pm_interval) should return an actual HW register value because the pm_interval register is a counter register. This removes the shadow pm_interval register. Signed-off-by: Takashi Yamamoto <TakashiA.Yamamoto@jp.sony.com> Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
a7faa8dc95
commit
a0620156b0
1 changed files with 10 additions and 8 deletions
|
@ -76,7 +76,6 @@
|
|||
*
|
||||
* @pm_control: Shadow of the processor's pm_control register.
|
||||
* @pm_start_stop: Shadow of the processor's pm_start_stop register.
|
||||
* @pm_interval: Shadow of the processor's pm_interval register.
|
||||
* @group_control: Shadow of the processor's group_control register.
|
||||
* @debug_bus_control: Shadow of the processor's debug_bus_control register.
|
||||
*
|
||||
|
@ -91,7 +90,6 @@
|
|||
struct ps3_lpm_shadow_regs {
|
||||
u64 pm_control;
|
||||
u64 pm_start_stop;
|
||||
u64 pm_interval;
|
||||
u64 group_control;
|
||||
u64 debug_bus_control;
|
||||
};
|
||||
|
@ -408,7 +406,14 @@ u32 ps3_read_pm(u32 cpu, enum pm_reg_name reg)
|
|||
case pm_start_stop:
|
||||
return lpm_priv->shadow.pm_start_stop;
|
||||
case pm_interval:
|
||||
return lpm_priv->shadow.pm_interval;
|
||||
result = lv1_set_lpm_interval(lpm_priv->lpm_id, 0, 0, &val);
|
||||
if (result) {
|
||||
val = 0;
|
||||
dev_dbg(sbd_core(), "%s:%u: lv1 set_inteval failed: "
|
||||
"reg %u, %s\n", __func__, __LINE__, reg,
|
||||
ps3_result(result));
|
||||
}
|
||||
return (u32)val;
|
||||
case group_control:
|
||||
return lpm_priv->shadow.group_control;
|
||||
case debug_bus_control:
|
||||
|
@ -475,10 +480,8 @@ void ps3_write_pm(u32 cpu, enum pm_reg_name reg, u32 val)
|
|||
lpm_priv->shadow.pm_control = val;
|
||||
break;
|
||||
case pm_interval:
|
||||
if (val != lpm_priv->shadow.pm_interval)
|
||||
result = lv1_set_lpm_interval(lpm_priv->lpm_id, val,
|
||||
PS3_WRITE_PM_MASK, &dummy);
|
||||
lpm_priv->shadow.pm_interval = val;
|
||||
result = lv1_set_lpm_interval(lpm_priv->lpm_id, val,
|
||||
PS3_WRITE_PM_MASK, &dummy);
|
||||
break;
|
||||
case pm_start_stop:
|
||||
if (val != lpm_priv->shadow.pm_start_stop)
|
||||
|
@ -1140,7 +1143,6 @@ int ps3_lpm_open(enum ps3_lpm_tb_type tb_type, void *tb_cache,
|
|||
|
||||
lpm_priv->shadow.pm_control = PS3_LPM_SHADOW_REG_INIT;
|
||||
lpm_priv->shadow.pm_start_stop = PS3_LPM_SHADOW_REG_INIT;
|
||||
lpm_priv->shadow.pm_interval = PS3_LPM_SHADOW_REG_INIT;
|
||||
lpm_priv->shadow.group_control = PS3_LPM_SHADOW_REG_INIT;
|
||||
lpm_priv->shadow.debug_bus_control = PS3_LPM_SHADOW_REG_INIT;
|
||||
|
||||
|
|
Loading…
Reference in a new issue