Commit 546ad3d0 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown

ASoC: arizona: Add data structure for voice trigger notifier

64-bit builds would generate a warning when we passed the core number as
a pointer through the notifier data:

sound/soc/codecs/cs47l24.c:1091:13: warning: cast to pointer from
integer of different size [-Wint-to-pointer-cast]
             (void *)i);

Rather than just fix this up with more casting add a data structure that
holds information for the notifier chain. This will make it easier to
add additional information in the future as well.

Fixes: 7baa7e24 ("ASoC: arizona: Add event notification on voice trigger events")
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 7baa7e24
...@@ -98,6 +98,10 @@ struct arizona_priv { ...@@ -98,6 +98,10 @@ struct arizona_priv {
bool dvfs_cached; bool dvfs_cached;
}; };
struct arizona_voice_trigger_info {
int core;
};
#define ARIZONA_NUM_MIXER_INPUTS 104 #define ARIZONA_NUM_MIXER_INPUTS 104
extern const unsigned int arizona_mixer_tlv[]; extern const unsigned int arizona_mixer_tlv[];
......
...@@ -1067,6 +1067,7 @@ static irqreturn_t cs47l24_adsp2_irq(int irq, void *data) ...@@ -1067,6 +1067,7 @@ static irqreturn_t cs47l24_adsp2_irq(int irq, void *data)
{ {
struct cs47l24_priv *priv = data; struct cs47l24_priv *priv = data;
struct arizona *arizona = priv->core.arizona; struct arizona *arizona = priv->core.arizona;
struct arizona_voice_trigger_info info;
int serviced = 0; int serviced = 0;
int i, ret; int i, ret;
...@@ -1074,10 +1075,12 @@ static irqreturn_t cs47l24_adsp2_irq(int irq, void *data) ...@@ -1074,10 +1075,12 @@ static irqreturn_t cs47l24_adsp2_irq(int irq, void *data)
ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]); ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]);
if (ret != -ENODEV) if (ret != -ENODEV)
serviced++; serviced++;
if (ret == WM_ADSP_COMPR_VOICE_TRIGGER) if (ret == WM_ADSP_COMPR_VOICE_TRIGGER) {
info.core = i;
arizona_call_notifiers(arizona, arizona_call_notifiers(arizona,
ARIZONA_NOTIFY_VOICE_TRIGGER, ARIZONA_NOTIFY_VOICE_TRIGGER,
(void *)i); &info);
}
} }
if (!serviced) { if (!serviced) {
......
...@@ -2222,6 +2222,7 @@ static irqreturn_t wm5110_adsp2_irq(int irq, void *data) ...@@ -2222,6 +2222,7 @@ static irqreturn_t wm5110_adsp2_irq(int irq, void *data)
{ {
struct wm5110_priv *priv = data; struct wm5110_priv *priv = data;
struct arizona *arizona = priv->core.arizona; struct arizona *arizona = priv->core.arizona;
struct arizona_voice_trigger_info info;
int serviced = 0; int serviced = 0;
int i, ret; int i, ret;
...@@ -2229,10 +2230,12 @@ static irqreturn_t wm5110_adsp2_irq(int irq, void *data) ...@@ -2229,10 +2230,12 @@ static irqreturn_t wm5110_adsp2_irq(int irq, void *data)
ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]); ret = wm_adsp_compr_handle_irq(&priv->core.adsp[i]);
if (ret != -ENODEV) if (ret != -ENODEV)
serviced++; serviced++;
if (ret == WM_ADSP_COMPR_VOICE_TRIGGER) if (ret == WM_ADSP_COMPR_VOICE_TRIGGER) {
info.core = i;
arizona_call_notifiers(arizona, arizona_call_notifiers(arizona,
ARIZONA_NOTIFY_VOICE_TRIGGER, ARIZONA_NOTIFY_VOICE_TRIGGER,
(void *)i); &info);
}
} }
if (!serviced) { if (!serviced) {
......
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