]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: sun8i-codec: Fix build with CONFIG_SND_JACK_INPUT_DEV disabled
authorOndrej Jirman <megi@xff.cz>
Wed, 27 Mar 2024 08:05:34 +0000 (09:05 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 27 Mar 2024 15:57:34 +0000 (15:57 +0000)
When CONFIG_SND_JACK_INPUT_DEV is disabled, struct snd_jack doesn't
have 'type' field. We can't rely on this field being always present,
so store the jack_type in the codec driver itself.

Signed-off-by: Ondrej Jirman <megi@xff.cz>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202403261243.kcXCPAYs-lkp@intel.com/
Link: https://msgid.link/r/20240327080542.3649840-1-megi@xff.cz
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sunxi/sun8i-codec.c

index 43795362fed0a4e06c92824d3cbcfdbb6c378ca2..b5dafb749c3f26a48276bf311a528eb006307ef1 100644 (file)
@@ -232,6 +232,7 @@ struct sun8i_codec {
        struct delayed_work             jack_work;
        int                             jack_irq;
        int                             jack_status;
+       int                             jack_type;
        int                             jack_last_sample;
        ktime_t                         jack_hbias_ready;
        struct mutex                    jack_mutex;
@@ -1352,7 +1353,6 @@ static void sun8i_codec_jack_work(struct work_struct *work)
        struct sun8i_codec *scodec = container_of(work, struct sun8i_codec,
                                                  jack_work.work);
        unsigned int mdata;
-       int type_mask = scodec->jack->jack->type;
        int type;
 
        guard(mutex)(&scodec->jack_mutex);
@@ -1363,7 +1363,7 @@ static void sun8i_codec_jack_work(struct work_struct *work)
 
                scodec->jack_last_sample = -1;
 
-               if (type_mask & SND_JACK_MICROPHONE) {
+               if (scodec->jack_type & SND_JACK_MICROPHONE) {
                        /*
                         * If we were in disconnected state, we enable HBIAS and
                         * wait 600ms before reading initial HDATA value.
@@ -1376,7 +1376,7 @@ static void sun8i_codec_jack_work(struct work_struct *work)
                        scodec->jack_status = SUN8I_JACK_STATUS_WAITING_HBIAS;
                } else {
                        snd_soc_jack_report(scodec->jack, SND_JACK_HEADPHONE,
-                                           type_mask);
+                                           scodec->jack_type);
                        scodec->jack_status = SUN8I_JACK_STATUS_CONNECTED;
                }
        } else if (scodec->jack_status == SUN8I_JACK_STATUS_WAITING_HBIAS) {
@@ -1417,17 +1417,17 @@ static void sun8i_codec_jack_work(struct work_struct *work)
                if (type == SND_JACK_HEADPHONE)
                        sun8i_codec_set_hmic_bias(scodec, false);
 
-               snd_soc_jack_report(scodec->jack, type, type_mask);
+               snd_soc_jack_report(scodec->jack, type, scodec->jack_type);
                scodec->jack_status = SUN8I_JACK_STATUS_CONNECTED;
        } else if (scodec->jack_status == SUN8I_JACK_STATUS_CONNECTED) {
                if (scodec->last_hmic_irq != SUN8I_HMIC_STS_JACK_OUT_IRQ_ST)
                        return;
 
                scodec->jack_status = SUN8I_JACK_STATUS_DISCONNECTED;
-               if (type_mask & SND_JACK_MICROPHONE)
+               if (scodec->jack_type & SND_JACK_MICROPHONE)
                        sun8i_codec_set_hmic_bias(scodec, false);
 
-               snd_soc_jack_report(scodec->jack, 0, type_mask);
+               snd_soc_jack_report(scodec->jack, 0, scodec->jack_type);
        }
 }
 
@@ -1491,7 +1491,7 @@ static irqreturn_t sun8i_codec_jack_irq(int irq, void *dev_id)
                if (scodec->jack_last_sample >= 0 &&
                    scodec->jack_last_sample == value)
                        snd_soc_jack_report(scodec->jack, type,
-                                           scodec->jack->jack->type);
+                                           scodec->jack_type);
 
                scodec->jack_last_sample = value;
        }