On 8/1/21 4:04 PM, Hans de Goede wrote: > Some devices (HP Elitepad 1000 G2) have a second headphones output > (1 on the dock, 2nd on the tablet itself) which is implemented through > the line-out output of the codec combined with an external hp-amp > which gets enabled through the codec's GPIO1 pin. > > Add support for this through a new BYT_RT5640_LINEOUT_AS_HP2 quirk. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > sound/soc/intel/boards/bytcr_rt5640.c | 36 +++++++++++++++++++++++++-- > 1 file changed, 34 insertions(+), 2 deletions(-) > > diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c > index 70faba13450c..51fb44ad9b4b 100644 > --- a/sound/soc/intel/boards/bytcr_rt5640.c > +++ b/sound/soc/intel/boards/bytcr_rt5640.c > @@ -74,6 +74,7 @@ enum { > #define BYT_RT5640_MCLK_25MHZ BIT(23) > #define BYT_RT5640_NO_SPEAKERS BIT(24) > #define BYT_RT5640_LINEOUT BIT(25) > +#define BYT_RT5640_LINEOUT_AS_HP2 BIT(26) The definitions aren't fully clear to me. It seems that the two quirks above are mutually exclusive if I read the code below + if (byt_rt5640_quirk & BYT_RT5640_LINEOUT_AS_HP2) + lineout_string = " cfg-hp2:lineout"; + else if (byt_rt5640_quirk & BYT_RT5640_LINEOUT) lineout_string = " cfg-lineout:1"; But in the following patch the two are mixed: + .driver_data = (void *)(BYT_RT5640_DMIC2_MAP | + BYT_RT5640_MCLK_EN | + BYT_RT5640_LINEOUT | + BYT_RT5640_LINEOUT_AS_HP2 | + BYT_RT5640_HSMIC2_ON_IN1), so maybe the test above should be if (byt_rt5640_quirk & BYT_RT5640_LINEOUT) { if (byt_rt5640_quirk & BYT_RT5640_LINEOUT_AS_HP2) lineout_string = " cfg-hp2:lineout"; else lineout_string = " cfg-lineout:1"; } I am also not very clear on the hp2 support, is there any sort of jack detection or will this require always an explicit user choice?