PM / devfreq: bimc-bwmon: Fix counter clearing
The counter needs to be cleared and acknowledged before clearing the IRQ bits. Otherwise, the HW could set the IRQ bit again if the old counter value was higher than the threshold. So, add a memory barrier after clearing the counter. Change-Id: I35f9f7905b05b8a185eb94d04d9c0a8ccfc2db51 Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
This commit is contained in:
parent
00c3797070
commit
75ec9ed0ef
1 changed files with 6 additions and 0 deletions
|
@ -78,6 +78,12 @@ static void mon_disable(struct bwmon *m)
|
||||||
static void mon_clear(struct bwmon *m)
|
static void mon_clear(struct bwmon *m)
|
||||||
{
|
{
|
||||||
writel_relaxed(0x1, MON_CLEAR(m));
|
writel_relaxed(0x1, MON_CLEAR(m));
|
||||||
|
/*
|
||||||
|
* The counter clear and IRQ clear bits are not in the same 4KB
|
||||||
|
* region. So, we need to make sure the counter clear is completed
|
||||||
|
* before we try to clear the IRQ or do any other counter operations.
|
||||||
|
*/
|
||||||
|
mb();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mon_irq_enable(struct bwmon *m)
|
static void mon_irq_enable(struct bwmon *m)
|
||||||
|
|
Loading…
Add table
Reference in a new issue