summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/fsl_rmu.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-10-14 00:50:31 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-10-14 00:50:31 +0200
commit69f658e399f3d9cb9c9680afb714ba23860d7ccb (patch)
tree13fbc42f466cb10d319514e4ddec53def8c554f6 /arch/powerpc/sysdev/fsl_rmu.c
parent9867999f3a85b52f96ef05fca00cc8128eed01ce (diff)
parent42f6284ae602469762ee721ec31ddfc6170e00bc (diff)
downloadtalos-op-linux-69f658e399f3d9cb9c9680afb714ba23860d7ccb.tar.gz
talos-op-linux-69f658e399f3d9cb9c9680afb714ba23860d7ccb.zip
Merge branch 'pm-domains' into pm-opp
Diffstat (limited to 'arch/powerpc/sysdev/fsl_rmu.c')
-rw-r--r--arch/powerpc/sysdev/fsl_rmu.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/powerpc/sysdev/fsl_rmu.c b/arch/powerpc/sysdev/fsl_rmu.c
index ab7a74c75be8..88b35a3dcdc5 100644
--- a/arch/powerpc/sysdev/fsl_rmu.c
+++ b/arch/powerpc/sysdev/fsl_rmu.c
@@ -104,6 +104,8 @@
#define DOORBELL_MESSAGE_SIZE 0x08
+static DEFINE_SPINLOCK(fsl_rio_doorbell_lock);
+
struct rio_msg_regs {
u32 omr;
u32 osr;
@@ -626,9 +628,13 @@ err_out:
int fsl_rio_doorbell_send(struct rio_mport *mport,
int index, u16 destid, u16 data)
{
+ unsigned long flags;
+
pr_debug("fsl_doorbell_send: index %d destid %4.4x data %4.4x\n",
index, destid, data);
+ spin_lock_irqsave(&fsl_rio_doorbell_lock, flags);
+
/* In the serial version silicons, such as MPC8548, MPC8641,
* below operations is must be.
*/
@@ -638,6 +644,8 @@ int fsl_rio_doorbell_send(struct rio_mport *mport,
out_be32(&dbell->dbell_regs->oddatr, (index << 20) | data);
out_be32(&dbell->dbell_regs->odmr, 0x00000001);
+ spin_unlock_irqrestore(&fsl_rio_doorbell_lock, flags);
+
return 0;
}
OpenPOWER on IntegriCloud