Em Tue, 5 Apr 2022 09:57:30 -0500 Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> escreveu: > On 4/5/22 03:44, Mauro Carvalho Chehab wrote: > > From: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> > > > > Some devices may use both gpio0 and gpio1 to independently switch > > the speaker and the headphone. > > > > Add support for that. > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> > > --- > > > > See [PATCH v2 0/2] at: https://lore.kernel.org/all/cover.1649147890.git.mchehab@xxxxxxxxxx/ > > > > sound/soc/intel/boards/sof_es8336.c | 60 ++++++++++++++++++++++++----- > > 1 file changed, 50 insertions(+), 10 deletions(-) > > > > diff --git a/sound/soc/intel/boards/sof_es8336.c b/sound/soc/intel/boards/sof_es8336.c > > index 5e0529aa4f1d..bcd80870d252 100644 > > --- a/sound/soc/intel/boards/sof_es8336.c > > +++ b/sound/soc/intel/boards/sof_es8336.c > > @@ -30,6 +30,7 @@ > > #define SOF_ES8336_TGL_GPIO_QUIRK BIT(4) > > #define SOF_ES8336_ENABLE_DMIC BIT(5) > > #define SOF_ES8336_JD_INVERTED BIT(6) > > +#define SOF_ES8336_HEADPHONE_GPIO BIT(7) > > > > static unsigned long quirk; > > > > @@ -39,7 +40,7 @@ MODULE_PARM_DESC(quirk, "Board-specific quirk override"); > > > > struct sof_es8336_private { > > struct device *codec_dev; > > - struct gpio_desc *gpio_pa; > > + struct gpio_desc *gpio_pa, *gpio_pa_headphone; > > struct snd_soc_jack jack; > > struct list_head hdmi_pcm_list; > > bool speaker_en; > > @@ -51,15 +52,28 @@ struct sof_hdmi_pcm { > > int device; > > }; > > > > -static const struct acpi_gpio_params pa_enable_gpio = { 0, 0, true }; > > +static const struct acpi_gpio_params pa_enable_gpio0 = { 0, 0, true }; > > +static const struct acpi_gpio_params pa_enable_gpio1 = { 1, 0, true }; > > + > > static const struct acpi_gpio_mapping acpi_es8336_gpios[] = { > > - { "pa-enable-gpios", &pa_enable_gpio, 1 }, > > + { "pa-enable-gpios", &pa_enable_gpio0, 1 }, > > { } > > }; > > > > -static const struct acpi_gpio_params quirk_pa_enable_gpio = { 1, 0, true }; > > static const struct acpi_gpio_mapping quirk_acpi_es8336_gpios[] = { > > - { "pa-enable-gpios", &quirk_pa_enable_gpio, 1 }, > > + { "pa-enable-gpios", &pa_enable_gpio1, 1 }, > > + { } > > +}; > > + > > +static const struct acpi_gpio_mapping quirk_acpi_headphone_es8336_gpios[] = { > > + { "pa-enable-gpios", &pa_enable_gpio0, 1 }, > > + { "pa-enable-headphone-gpios", &pa_enable_gpio1, 1 }, > > + { } > > +}; > > + > > +static const struct acpi_gpio_mapping quirk_tgl_acpi_headphone_es8336_gpios[] = { > > + { "pa-enable-gpios", &pa_enable_gpio1, 1 }, > > + { "pa-enable-headphone-gpios", &pa_enable_gpio0, 1 }, > > { } > > This is starting to be a bit messy, the initial gpios were really > intended for speakers and should be clearly referring to speakers now. > the TGL quirk really means gpio1 is used instead of gpio0, and I can't > figure out what the 'pa' prefix is needed for. > > Can I suggest the attached cleanup patch be added first? That would make > it clearer and more readable IMHO. Compile-tested only since I don't > have hardware. Makes sense. I'll place it before the first patch, rebase them, test and re-submit. > Thanks! Thanks! Mauro