Commit 884bdaed authored by Gilles Chanteperdrix's avatar Gilles Chanteperdrix Committed by Philippe Gerum
Browse files

arm/ipipe: imx6: fix the call to parent methods

Use the newly added parent hold/release methods.
parent 11929df2
......@@ -54,6 +54,7 @@ struct pu_domain {
static void __iomem *gpc_base;
static u32 gpc_wake_irqs[IMR_NUM];
static u32 gpc_saved_imrs[IMR_NUM];
static IPIPE_DEFINE_RAW_SPINLOCK(gpc_lock);
void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw)
{
......@@ -181,8 +182,9 @@ static void imx_gpc_irq_unmask(struct irq_data *d)
{
unsigned long flags;
flags = hard_cond_local_irq_save();
raw_spin_lock_irqsave_cond(&gpc_lock, flags);
imx_gpc_hwirq_unmask(d->hwirq);
raw_spin_unlock(&gpc_lock);
irq_chip_unmask_parent(d);
/* Parent IC will handle virtual unlocking */
hard_cond_local_irq_restore(flags);
......@@ -192,9 +194,10 @@ static void imx_gpc_irq_mask(struct irq_data *d)
{
unsigned long flags;
flags = hard_cond_local_irq_save();
raw_spin_lock_irqsave_cond(&gpc_lock, flags);
/* Parent IC will handle virtual locking */
imx_gpc_hwirq_mask(d->hwirq);
raw_spin_unlock(&gpc_lock);
irq_chip_mask_parent(d);
hard_cond_local_irq_restore(flags);
}
......@@ -203,15 +206,20 @@ static void imx_gpc_irq_mask(struct irq_data *d)
static void imx_gpc_hold_irq(struct irq_data *d)
{
irq_chip_eoi_parent(d);
raw_spin_lock(&gpc_lock);
imx_gpc_hwirq_mask(d->hwirq);
irq_chip_mask_parent(d);
raw_spin_unlock(&gpc_lock);
irq_chip_hold_parent(d);
}
static void imx_gpc_release_irq(struct irq_data *d)
{
unsigned long flags;
raw_spin_lock_irqsave(&gpc_lock, flags);
imx_gpc_hwirq_unmask(d->hwirq);
irq_chip_unmask_parent(d);
raw_spin_unlock_irqrestore(&gpc_lock, flags);
irq_chip_release_parent(d);
}
#endif /* CONFIG_IPIPE */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment