HID: amd_sfh: Move interrupt handling to common interface
Interrupt handling can be used in multiple files to support all AMD SOCs. Hence move interrupt handling to common interface. Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
e7f535eaf0
commit
014730c40b
|
@ -178,8 +178,7 @@ static void amd_sfh_resume(struct amd_mp2_dev *mp2)
|
||||||
}
|
}
|
||||||
|
|
||||||
schedule_delayed_work(&cl_data->work_buffer, msecs_to_jiffies(AMD_SFH_IDLE_LOOP));
|
schedule_delayed_work(&cl_data->work_buffer, msecs_to_jiffies(AMD_SFH_IDLE_LOOP));
|
||||||
if (mp2->mp2_ops->clear_intr)
|
amd_sfh_clear_intr(mp2);
|
||||||
mp2->mp2_ops->clear_intr(mp2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amd_sfh_suspend(struct amd_mp2_dev *mp2)
|
static void amd_sfh_suspend(struct amd_mp2_dev *mp2)
|
||||||
|
@ -202,8 +201,7 @@ static void amd_sfh_suspend(struct amd_mp2_dev *mp2)
|
||||||
}
|
}
|
||||||
|
|
||||||
cancel_delayed_work_sync(&cl_data->work_buffer);
|
cancel_delayed_work_sync(&cl_data->work_buffer);
|
||||||
if (mp2->mp2_ops->clear_intr)
|
amd_sfh_clear_intr(mp2);
|
||||||
mp2->mp2_ops->clear_intr(mp2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
|
int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
|
||||||
|
|
|
@ -66,4 +66,8 @@ struct amd_mp2_ops {
|
||||||
|
|
||||||
void amd_sfh_work(struct work_struct *work);
|
void amd_sfh_work(struct work_struct *work);
|
||||||
void amd_sfh_work_buffer(struct work_struct *work);
|
void amd_sfh_work_buffer(struct work_struct *work);
|
||||||
|
void amd_sfh_clear_intr_v2(struct amd_mp2_dev *privdata);
|
||||||
|
int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata);
|
||||||
|
void amd_sfh_clear_intr(struct amd_mp2_dev *privdata);
|
||||||
|
int amd_sfh_irq_init(struct amd_mp2_dev *privdata);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,7 +92,7 @@ static void amd_stop_all_sensor_v2(struct amd_mp2_dev *privdata)
|
||||||
writel(cmd_base.ul, privdata->mmio + AMD_C2P_MSG0);
|
writel(cmd_base.ul, privdata->mmio + AMD_C2P_MSG0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amd_sfh_clear_intr_v2(struct amd_mp2_dev *privdata)
|
void amd_sfh_clear_intr_v2(struct amd_mp2_dev *privdata)
|
||||||
{
|
{
|
||||||
if (readl(privdata->mmio + AMD_P2C_MSG(4))) {
|
if (readl(privdata->mmio + AMD_P2C_MSG(4))) {
|
||||||
writel(0, privdata->mmio + AMD_P2C_MSG(4));
|
writel(0, privdata->mmio + AMD_P2C_MSG(4));
|
||||||
|
@ -100,7 +100,7 @@ static void amd_sfh_clear_intr_v2(struct amd_mp2_dev *privdata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amd_sfh_clear_intr(struct amd_mp2_dev *privdata)
|
void amd_sfh_clear_intr(struct amd_mp2_dev *privdata)
|
||||||
{
|
{
|
||||||
if (privdata->mp2_ops->clear_intr)
|
if (privdata->mp2_ops->clear_intr)
|
||||||
privdata->mp2_ops->clear_intr(privdata);
|
privdata->mp2_ops->clear_intr(privdata);
|
||||||
|
@ -113,7 +113,7 @@ static irqreturn_t amd_sfh_irq_handler(int irq, void *data)
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata)
|
int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ static void mp2_select_ops(struct amd_mp2_dev *privdata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int amd_sfh_irq_init(struct amd_mp2_dev *privdata)
|
int amd_sfh_irq_init(struct amd_mp2_dev *privdata)
|
||||||
{
|
{
|
||||||
if (privdata->mp2_ops->init_intr)
|
if (privdata->mp2_ops->init_intr)
|
||||||
return privdata->mp2_ops->init_intr(privdata);
|
return privdata->mp2_ops->init_intr(privdata);
|
||||||
|
|
Loading…
Reference in New Issue