Skip to content

Commit

Permalink
ARM: OMAP3+: SmartReflex: Fix status masking in ERRCONFIG register
Browse files Browse the repository at this point in the history
ERRCONFIG register has status bits that were intended not to
be destroyed by bad modification. We cleanup and simplify the
handling the status in the modify path.

Reported-by: Vincent Bour <v-bour@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Jean Pihet <j-pihet@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
  • Loading branch information
Nishanth Menon authored and Kevin Hilman committed Mar 5, 2012
1 parent 1f55bc1 commit ade6ec0
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions arch/arm/mach-omap2/smartreflex.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,6 @@ static inline void sr_modify_reg(struct omap_sr *sr, unsigned offset, u32 mask,
u32 value)
{
u32 reg_val;
u32 errconfig_offs = 0, errconfig_mask = 0;

reg_val = __raw_readl(sr->base + offset);
reg_val &= ~mask;

/*
* Smartreflex error config register is special as it contains
Expand All @@ -88,16 +84,15 @@ static inline void sr_modify_reg(struct omap_sr *sr, unsigned offset, u32 mask,
* if they are currently set, but does allow the caller to write
* those bits.
*/
if (sr->ip_type == SR_TYPE_V1) {
errconfig_offs = ERRCONFIG_V1;
errconfig_mask = ERRCONFIG_STATUS_V1_MASK;
} else if (sr->ip_type == SR_TYPE_V2) {
errconfig_offs = ERRCONFIG_V2;
errconfig_mask = ERRCONFIG_VPBOUNDINTST_V2;
}
if (sr->ip_type == SR_TYPE_V1 && offset == ERRCONFIG_V1)
mask |= ERRCONFIG_STATUS_V1_MASK;
else if (sr->ip_type == SR_TYPE_V2 && offset == ERRCONFIG_V2)
mask |= ERRCONFIG_VPBOUNDINTST_V2;

reg_val = __raw_readl(sr->base + offset);
reg_val &= ~mask;

if (offset == errconfig_offs)
reg_val &= ~errconfig_mask;
value &= mask;

reg_val |= value;

Expand Down

0 comments on commit ade6ec0

Please sign in to comment.