aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-05-13 18:50:01 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-05-13 18:54:11 -0400
commitf43f2db7c6eddacb218a2524e1a8463b6397d80f (patch)
treeba9d80d5d7f2dafc24f6ac07501dbb6902f32089
parenta91b778219e687b0a71a2388b6468ad54751bce0 (diff)
ASoC: wm8350: Don't use irq_base
In preparation for irq_domain support change the code to the not switch based on the irq number. This actually makes things simpler, if slightly repetitive. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/codecs/wm8350.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index f610518a8887..f40999c0e3c6 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -1300,35 +1300,36 @@ static void wm8350_hpr_work(struct work_struct *work)
1300 wm8350_hp_work(priv, &priv->hpr, WM8350_JACK_R_LVL); 1300 wm8350_hp_work(priv, &priv->hpr, WM8350_JACK_R_LVL);
1301} 1301}
1302 1302
1303static irqreturn_t wm8350_hp_jack_handler(int irq, void *data) 1303static irqreturn_t wm8350_hpl_jack_handler(int irq, void *data)
1304{ 1304{
1305 struct wm8350_data *priv = data; 1305 struct wm8350_data *priv = data;
1306 struct wm8350 *wm8350 = priv->wm8350; 1306 struct wm8350 *wm8350 = priv->wm8350;
1307 struct wm8350_jack_data *jack = NULL;
1308 1307
1309 switch (irq - wm8350->irq_base) {
1310 case WM8350_IRQ_CODEC_JCK_DET_L:
1311#ifndef CONFIG_SND_SOC_WM8350_MODULE 1308#ifndef CONFIG_SND_SOC_WM8350_MODULE
1312 trace_snd_soc_jack_irq("WM8350 HPL"); 1309 trace_snd_soc_jack_irq("WM8350 HPL");
1313#endif 1310#endif
1314 jack = &priv->hpl;
1315 break;
1316 1311
1317 case WM8350_IRQ_CODEC_JCK_DET_R: 1312 if (device_may_wakeup(wm8350->dev))
1313 pm_wakeup_event(wm8350->dev, 250);
1314
1315 schedule_delayed_work(&priv->hpl.work, 200);
1316
1317 return IRQ_HANDLED;
1318}
1319
1320static irqreturn_t wm8350_hpr_jack_handler(int irq, void *data)
1321{
1322 struct wm8350_data *priv = data;
1323 struct wm8350 *wm8350 = priv->wm8350;
1324
1318#ifndef CONFIG_SND_SOC_WM8350_MODULE 1325#ifndef CONFIG_SND_SOC_WM8350_MODULE
1319 trace_snd_soc_jack_irq("WM8350 HPR"); 1326 trace_snd_soc_jack_irq("WM8350 HPR");
1320#endif 1327#endif
1321 jack = &priv->hpr;
1322 break;
1323
1324 default:
1325 BUG();
1326 }
1327 1328
1328 if (device_may_wakeup(wm8350->dev)) 1329 if (device_may_wakeup(wm8350->dev))
1329 pm_wakeup_event(wm8350->dev, 250); 1330 pm_wakeup_event(wm8350->dev, 250);
1330 1331
1331 schedule_delayed_work(&jack->work, 200); 1332 schedule_delayed_work(&priv->hpr.work, 200);
1332 1333
1333 return IRQ_HANDLED; 1334 return IRQ_HANDLED;
1334} 1335}
@@ -1379,7 +1380,14 @@ int wm8350_hp_jack_detect(struct snd_soc_codec *codec, enum wm8350_jack which,
1379 } 1380 }
1380 1381
1381 /* Sync status */ 1382 /* Sync status */
1382 wm8350_hp_jack_handler(irq + wm8350->irq_base, priv); 1383 switch (which) {
1384 case WM8350_JDL:
1385 wm8350_hpl_jack_handler(0, priv);
1386 break;
1387 case WM8350_JDR:
1388 wm8350_hpr_jack_handler(0, priv);
1389 break;
1390 }
1383 1391
1384 return 0; 1392 return 0;
1385} 1393}
@@ -1561,10 +1569,10 @@ static int wm8350_codec_probe(struct snd_soc_codec *codec)
1561 WM8350_JDL_ENA | WM8350_JDR_ENA); 1569 WM8350_JDL_ENA | WM8350_JDR_ENA);
1562 1570
1563 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L, 1571 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L,
1564 wm8350_hp_jack_handler, 0, "Left jack detect", 1572 wm8350_hpl_jack_handler, 0, "Left jack detect",
1565 priv); 1573 priv);
1566 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R, 1574 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R,
1567 wm8350_hp_jack_handler, 0, "Right jack detect", 1575 wm8350_hpr_jack_handler, 0, "Right jack detect",
1568 priv); 1576 priv);
1569 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICSCD, 1577 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICSCD,
1570 wm8350_mic_handler, 0, "Microphone short", priv); 1578 wm8350_mic_handler, 0, "Microphone short", priv);