diff mbox series

ASoC: Intel: bytcr_rt5640: Add quirks for DeeQ X5-Z8300

Message ID 20201216041601.5993-1-chiu@endlessos.org (mailing list archive)
State New, archived
Headers show
Series ASoC: Intel: bytcr_rt5640: Add quirks for DeeQ X5-Z8300 | expand

Commit Message

Chris Chiu Dec. 16, 2020, 4:16 a.m. UTC
DeeQ X5-Z8300 is a laptop empowered by Intel Atom Cherry Trail. Add
quirks to select the correct input map, jack-detect options to enable
jack sensing and internal/headset microphones.

Signed-off-by: Chris Chiu <chiu@endlessos.org>
---
 sound/soc/intel/boards/bytcr_rt5651.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Chris Chiu Dec. 22, 2020, 3:07 p.m. UTC | #1
On Wed, Dec 16, 2020 at 12:18 PM Chris Chiu <chiu@endlessos.org> wrote:
>
> DeeQ X5-Z8300 is a laptop empowered by Intel Atom Cherry Trail. Add
> quirks to select the correct input map, jack-detect options to enable
> jack sensing and internal/headset microphones.
>
> Signed-off-by: Chris Chiu <chiu@endlessos.org>
> ---
>  sound/soc/intel/boards/bytcr_rt5651.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c
> index 688b5e0a49e3..9df09e26b05a 100644
> --- a/sound/soc/intel/boards/bytcr_rt5651.c
> +++ b/sound/soc/intel/boards/bytcr_rt5651.c
> @@ -507,6 +507,14 @@ static const struct dmi_system_id byt_rt5651_quirk_table[] = {
>                                         BYT_RT5651_SSP0_AIF1 |
>                                         BYT_RT5651_MONO_SPEAKER),
>         },
> +       {
> +               .callback = byt_rt5651_quirk_cb,
> +               .matches = {
> +                       DMI_MATCH(DMI_SYS_VENDOR, "DeeQ"),
> +                       DMI_MATCH(DMI_PRODUCT_NAME, "X5-Z8300"),
> +               },
> +               .driver_data = (void *)(BYT_RT5651_IN1_IN2_MAP | BYT_RT5651_JD1_1),
> +       },
>         {}
>  };
>
> --
> 2.20.1
>

Gentle ping. Cheers.

Chris
Pierre-Louis Bossart Jan. 11, 2021, 5:05 p.m. UTC | #2
On 12/15/20 10:16 PM, Chris Chiu wrote:
> DeeQ X5-Z8300 is a laptop empowered by Intel Atom Cherry Trail. Add
> quirks to select the correct input map, jack-detect options to enable
> jack sensing and internal/headset microphones.
> 
> Signed-off-by: Chris Chiu <chiu@endlessos.org>

You probably need to re-send and CC: maintainers (Mark Brown, Takashi 
Iwai) and Hans de Goede who's been supporting all those quirks.

I don't think the changes below are fully correct, most quirks start with		
.driver_data = (void *)(BYT_RT5651_DEFAULT_QUIRKS |

which e.g. enables the MCLK and overcurrent handling.

I wonder if what you need is

.driver_data = (void *)(BYT_RT5651_DEFAULT_QUIRKS | BYT_RT5651_IN1_IN2_MAP)

> ---
>   sound/soc/intel/boards/bytcr_rt5651.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c
> index 688b5e0a49e3..9df09e26b05a 100644
> --- a/sound/soc/intel/boards/bytcr_rt5651.c
> +++ b/sound/soc/intel/boards/bytcr_rt5651.c
> @@ -507,6 +507,14 @@ static const struct dmi_system_id byt_rt5651_quirk_table[] = {
>   					BYT_RT5651_SSP0_AIF1 |
>   					BYT_RT5651_MONO_SPEAKER),
>   	},
> +	{
> +		.callback = byt_rt5651_quirk_cb,
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "DeeQ"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "X5-Z8300"),
> +		},
> +		.driver_data = (void *)(BYT_RT5651_IN1_IN2_MAP | BYT_RT5651_JD1_1),
> +	},
>   	{}
>   };
>   
>
Hans de Goede Jan. 11, 2021, 9:24 p.m. UTC | #3
Hi,

On 1/11/21 6:05 PM, Pierre-Louis Bossart wrote:
> 
> 
> On 12/15/20 10:16 PM, Chris Chiu wrote:
>> DeeQ X5-Z8300 is a laptop empowered by Intel Atom Cherry Trail. Add
>> quirks to select the correct input map, jack-detect options to enable
>> jack sensing and internal/headset microphones.
>>
>> Signed-off-by: Chris Chiu <chiu@endlessos.org>
> 
> You probably need to re-send and CC: maintainers (Mark Brown, Takashi Iwai) and Hans de Goede who's been supporting all those quirks.
> 
> I don't think the changes below are fully correct, most quirks start with       
> .driver_data = (void *)(BYT_RT5651_DEFAULT_QUIRKS |
> 
> which e.g. enables the MCLK and overcurrent handling.
> 
> I wonder if what you need is
> 
> .driver_data = (void *)(BYT_RT5651_DEFAULT_QUIRKS | BYT_RT5651_IN1_IN2_MAP)

Ack, BYT_RT5651_DEFAULT_QUIRKS is:

#define BYT_RT5651_DEFAULT_QUIRKS       (BYT_RT5651_MCLK_EN | \
                                         BYT_RT5651_JD1_1   | \
                                         BYT_RT5651_OVCD_TH_2000UA | \
                                         BYT_RT5651_OVCD_SF_0P75)

So compared to the quirk from the original patch that will add:

BYT_RT5651_MCLK_EN
BYT_RT5651_OVCD_TH_2000UA
BYT_RT5651_OVCD_SF_0P75

Since you have working jack-detect you will definitely want the latter 2
which will make headset vs headphones detection work and will add
button-press detection for headsets.

BYT_RT5651_MCLK_EN is also a quirk which you almost always want,
the sole exception is boards where the mclk is not connected which
are very rare. Boards where the mclk is not connected are easy to
spot, since they will not work at all when setting BYT_RT5651_MCLK_EN,
so if things work with BYT_RT5651_DEFAULT_QUIRKS then setting
BYT_RT5651_MCLK_EN is the right thing to do.

Tl;DR: use (BYT_RT5651_DEFAULT_QUIRKS | BYT_RT5651_IN1_IN2_MAP) as
Pierre-Louis suggests.

Regards,

Hans






> 
>> ---
>>   sound/soc/intel/boards/bytcr_rt5651.c | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c
>> index 688b5e0a49e3..9df09e26b05a 100644
>> --- a/sound/soc/intel/boards/bytcr_rt5651.c
>> +++ b/sound/soc/intel/boards/bytcr_rt5651.c
>> @@ -507,6 +507,14 @@ static const struct dmi_system_id byt_rt5651_quirk_table[] = {
>>                       BYT_RT5651_SSP0_AIF1 |
>>                       BYT_RT5651_MONO_SPEAKER),
>>       },
>> +    {
>> +        .callback = byt_rt5651_quirk_cb,
>> +        .matches = {
>> +            DMI_MATCH(DMI_SYS_VENDOR, "DeeQ"),
>> +            DMI_MATCH(DMI_PRODUCT_NAME, "X5-Z8300"),
>> +        },
>> +        .driver_data = (void *)(BYT_RT5651_IN1_IN2_MAP | BYT_RT5651_JD1_1),
>> +    },
>>       {}
>>   };
>>  
>
diff mbox series

Patch

diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c
index 688b5e0a49e3..9df09e26b05a 100644
--- a/sound/soc/intel/boards/bytcr_rt5651.c
+++ b/sound/soc/intel/boards/bytcr_rt5651.c
@@ -507,6 +507,14 @@  static const struct dmi_system_id byt_rt5651_quirk_table[] = {
 					BYT_RT5651_SSP0_AIF1 |
 					BYT_RT5651_MONO_SPEAKER),
 	},
+	{
+		.callback = byt_rt5651_quirk_cb,
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "DeeQ"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "X5-Z8300"),
+		},
+		.driver_data = (void *)(BYT_RT5651_IN1_IN2_MAP | BYT_RT5651_JD1_1),
+	},
 	{}
 };