diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-10-14 00:50:31 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-10-14 00:50:31 +0200 |
commit | 69f658e399f3d9cb9c9680afb714ba23860d7ccb (patch) | |
tree | 13fbc42f466cb10d319514e4ddec53def8c554f6 /arch/powerpc/sysdev/fsl_rmu.c | |
parent | 9867999f3a85b52f96ef05fca00cc8128eed01ce (diff) | |
parent | 42f6284ae602469762ee721ec31ddfc6170e00bc (diff) | |
download | talos-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.c | 8 |
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; } |