spmi: pmic_arb: don't synchronize accesses to interrupt region
The current driver ensures that no read/write transaction is in progress while it makes changes to the interrupt regions. This is not necessary because read/writes over spmi and arbiter interrupt control are independent operations. Change-Id: Id6a93eed0aabe55a4b655a2050c31b48327dffe4 Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
This commit is contained in:
parent
e99c7baba0
commit
48018b31f8
1 changed files with 0 additions and 10 deletions
|
@ -490,14 +490,10 @@ static void cleanup_irq(struct spmi_pmic_arb *pa, u8 apid, int id)
|
|||
u16 ppid = pa->apid_data[apid].ppid;
|
||||
u8 sid = ppid >> 8;
|
||||
u8 per = ppid & 0xFF;
|
||||
unsigned long flags;
|
||||
u8 irq_mask = BIT(id);
|
||||
|
||||
raw_spin_lock_irqsave(&pa->lock, flags);
|
||||
writel_relaxed(irq_mask, pa->intr + pa->ver_ops->irq_clear(apid));
|
||||
|
||||
raw_spin_unlock_irqrestore(&pa->lock, flags);
|
||||
|
||||
if (pmic_arb_write_cmd(pa->spmic, SPMI_CMD_EXT_WRITEL, sid,
|
||||
(per << 8) + QPNPINT_REG_LATCHED_CLR, &irq_mask, 1))
|
||||
dev_err_ratelimited(&pa->spmic->dev,
|
||||
|
@ -563,12 +559,9 @@ static void qpnpint_irq_ack(struct irq_data *d)
|
|||
struct spmi_pmic_arb *pa = irq_data_get_irq_chip_data(d);
|
||||
u8 irq = d->hwirq >> 8;
|
||||
u8 apid = d->hwirq;
|
||||
unsigned long flags;
|
||||
u8 data;
|
||||
|
||||
raw_spin_lock_irqsave(&pa->lock, flags);
|
||||
writel_relaxed(BIT(irq), pa->intr + pa->ver_ops->irq_clear(apid));
|
||||
raw_spin_unlock_irqrestore(&pa->lock, flags);
|
||||
|
||||
data = BIT(irq);
|
||||
qpnpint_spmi_write(d, QPNPINT_REG_LATCHED_CLR, &data, 1);
|
||||
|
@ -587,13 +580,10 @@ static void qpnpint_irq_unmask(struct irq_data *d)
|
|||
struct spmi_pmic_arb *pa = irq_data_get_irq_chip_data(d);
|
||||
u8 irq = d->hwirq >> 8;
|
||||
u8 apid = d->hwirq;
|
||||
unsigned long flags;
|
||||
u8 buf[2];
|
||||
|
||||
raw_spin_lock_irqsave(&pa->lock, flags);
|
||||
writel_relaxed(SPMI_PIC_ACC_ENABLE_BIT,
|
||||
pa->intr + pa->ver_ops->acc_enable(apid));
|
||||
raw_spin_unlock_irqrestore(&pa->lock, flags);
|
||||
|
||||
qpnpint_spmi_read(d, QPNPINT_REG_EN_SET, &buf[0], 1);
|
||||
if (!(buf[0] & BIT(irq))) {
|
||||
|
|
Loading…
Add table
Reference in a new issue