Commit 014730c4 authored by Basavaraj Natikar's avatar Basavaraj Natikar Committed by Jiri Kosina

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: default avatarBasavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent e7f535ea
...@@ -178,8 +178,7 @@ static void amd_sfh_resume(struct amd_mp2_dev *mp2) ...@@ -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) ...@@ -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 { ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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);
......
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