diff mbox series

ASoC: Intel: Baytrail: add quirk for Aegex 10 (RU2) tablet

Message ID CAOz7CXoOS3rA5uWVQgs+6LGephq0sNoPfom=sq0pjHsJEWGsKg@mail.gmail.com (mailing list archive)
State New, archived
Headers show
Series ASoC: Intel: Baytrail: add quirk for Aegex 10 (RU2) tablet | expand

Commit Message

Tamás Kovács May 24, 2019, 5:03 p.m. UTC
This tablet has an incorrect acpi identifier, which is why it is trying to
load the RT5640 driver instead of the RT5762 driver. The RT5640 driver, on
the other hand, checks the hardware ID, so no drivers are loaded during
boot.
This fix resolves to load the RT5672 driver on this tablet during boot. It
also provides the correct IO configuration, like the jack detect mode 3,
for 1.8V pullup.
I would like to thank Pierre-Louis Bossart for helping with this patch.

Signed-off-by: Kovács Tamás <kepszlok@gmail.com>
---

Comments

Pierre-Louis Bossart May 28, 2019, 4:47 p.m. UTC | #1
On 5/24/19 12:03 PM, Tamás Kovács wrote:
> This tablet has an incorrect acpi identifier, which is why it is trying to
> load the RT5640 driver instead of the RT5762 driver. The RT5640 driver, on
> the other hand, checks the hardware ID, so no drivers are loaded during
> boot.
> This fix resolves to load the RT5672 driver on this tablet during boot. It
> also provides the correct IO configuration, like the jack detect mode 3,
> for 1.8V pullup.
> I would like to thank Pierre-Louis Bossart for helping with this patch.
> 
> Signed-off-by: Kovács Tamás <kepszlok@gmail.com>


Thanks for the changes Tamas.
I could not apply this patch, some sort of email uuencode error? see 
also comments below. If you can update this patch and provide a v2 it'd 
be great.
Also always Cc: maintainers (Mark Brown and Takashi Iwai, added to this 
thread) if you want a patch to be applied.
-Pierre

> ---
> diff --git a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> index fe812a9..e549950 100644
> --- a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> +++ b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> @@ -1,4 +1,4 @@
> -/*
> +/*

no need for change here.

>    * soc-apci-intel-byt-match.c - tables and support for BYT ACPI
> enumeration.
>    *
>    * Copyright (c) 2017, Intel Corporation.
> @@ -22,6 +22,7 @@ static unsigned long byt_machine_id;
> 
>   #define BYT_THINKPAD_10  1
>   #define BYT_POV_P1006W   2
> +#define BYT_AEGEX_10     3
> 
>   static int byt_thinkpad10_quirk_cb(const struct dmi_system_id *id)
>   {
> @@ -35,6 +36,12 @@ static int byt_pov_p1006w_quirk_cb(const struct
> dmi_system_id *id)
>    return 1;
>   }
> 
> +static int byt_aegex10_quirk_cb(const struct dmi_system_id *id)
> +{
> + byt_machine_id = BYT_AEGEX_10;
> + return 1;
> +}

indentation issues?

>   static const struct dmi_system_id byt_table[] = {
>    {
>    .callback = byt_thinkpad10_quirk_cb,
> @@ -75,6 +82,14 @@ static const struct dmi_system_id byt_table[] = {
>    DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
>    },
>    },
> + {
> + /* Aegex 10 tablet (RU2) */
> + .callback = byt_aegex10_quirk_cb,
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
> + },
> + },

indentation and kernel style?

>    { }
>   };
> 
> @@ -96,6 +111,15 @@ static struct snd_soc_acpi_mach byt_pov_p1006w = {
>    .sof_tplg_filename = "sof-byt-rt5651.tplg",
>   };
> 
> +static struct snd_soc_acpi_mach byt_aegex_10 = {
> + .id = "10EC5640",
> + .drv_name = "cht-bsw-rt5672",
> + .fw_filename = "intel/fw_sst_0f28.bin",
> + .board = "cht-bsw",
> + .sof_fw_filename = "intel/sof-byt.ri",
> + .sof_tplg_filename = "intel/sof-byt-rt5670.tplg",

the intel/ prefix is no longer used for SOF.


Also since you are using exactly the same quirk as for BYT_THINKPAD_10 
you could use a common structure instead of a duplicated one.

> +};
> +
>   static struct snd_soc_acpi_mach *byt_quirk(void *arg)
>   {
>    struct snd_soc_acpi_mach *mach = arg;
> @@ -107,6 +131,8 @@ static struct snd_soc_acpi_mach *byt_quirk(void *arg
>    return &byt_thinkpad_10;
>    case BYT_POV_P1006W:
>    return &byt_pov_p1006w;
> + case BYT_AEGEX_10:
> + return &byt_aegex_10;

indentation?

>    default:
>    return mach;
>    }
> 
> diff --git a/ori/sound/soc/codecs/rt5670.c b/new/sound/soc/codecs/rt5670.c
> index 9a03710..37cce04 100644
> --- a/ori/sound/soc/codecs/rt5670.c
> +++ b/new/sound/soc/codecs/rt5670.c
> @@ -1,4 +1,4 @@
> -/*
> +/*

no need for change here

>    * rt5670.c  --  RT5670 ALSA SoC audio codec driver
>    *
>    * Copyright 2014 Realtek Semiconductor Corp.
> @@ -2882,6 +2882,18 @@ static const struct dmi_system_id
> dmi_platform_intel_quirks[] = {
>    RT5670_DEV_GPIO |
>    RT5670_JD_MODE3),
>    },
> + {
> + .callback = rt5670_quirk_cb,
> + .ident = "Aegex 10 tablet (RU2)",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
> + },
> + .driver_data = (unsigned long *)(RT5670_DMIC_EN |
> + RT5670_DMIC2_INR |
> + RT5670_DEV_GPIO |
> + RT5670_JD_MODE3),
> + },
>    {}
>   };
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
Tamás Kovács May 28, 2019, 6:14 p.m. UTC | #2
Hmm, it seems like pasting to gmail changed all tabulator to whitespace in
the diff's. I had to figure out something. o.O
(i'm a newbie in mailing lists)

Btw, i will send a V2 version soon, thank you guys for the feedback.

Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> ezt írta
(időpont: 2019. máj. 28., K, 18:47):

>
>
> On 5/24/19 12:03 PM, Tamás Kovács wrote:
> > This tablet has an incorrect acpi identifier, which is why it is trying
> to
> > load the RT5640 driver instead of the RT5762 driver. The RT5640 driver,
> on
> > the other hand, checks the hardware ID, so no drivers are loaded during
> > boot.
> > This fix resolves to load the RT5672 driver on this tablet during boot.
> It
> > also provides the correct IO configuration, like the jack detect mode 3,
> > for 1.8V pullup.
> > I would like to thank Pierre-Louis Bossart for helping with this patch.
> >
> > Signed-off-by: Kovács Tamás <kepszlok@gmail.com>
>
>
> Thanks for the changes Tamas.
> I could not apply this patch, some sort of email uuencode error? see
> also comments below. If you can update this patch and provide a v2 it'd
> be great.
> Also always Cc: maintainers (Mark Brown and Takashi Iwai, added to this
> thread) if you want a patch to be applied.
> -Pierre
>
> > ---
> > diff --git a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> > b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> > index fe812a9..e549950 100644
> > --- a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> > +++ b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
> > @@ -1,4 +1,4 @@
> > -/*
> > +/*
>
> no need for change here.
>
> >    * soc-apci-intel-byt-match.c - tables and support for BYT ACPI
> > enumeration.
> >    *
> >    * Copyright (c) 2017, Intel Corporation.
> > @@ -22,6 +22,7 @@ static unsigned long byt_machine_id;
> >
> >   #define BYT_THINKPAD_10  1
> >   #define BYT_POV_P1006W   2
> > +#define BYT_AEGEX_10     3
> >
> >   static int byt_thinkpad10_quirk_cb(const struct dmi_system_id *id)
> >   {
> > @@ -35,6 +36,12 @@ static int byt_pov_p1006w_quirk_cb(const struct
> > dmi_system_id *id)
> >    return 1;
> >   }
> >
> > +static int byt_aegex10_quirk_cb(const struct dmi_system_id *id)
> > +{
> > + byt_machine_id = BYT_AEGEX_10;
> > + return 1;
> > +}
>
> indentation issues?
>
> >   static const struct dmi_system_id byt_table[] = {
> >    {
> >    .callback = byt_thinkpad10_quirk_cb,
> > @@ -75,6 +82,14 @@ static const struct dmi_system_id byt_table[] = {
> >    DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
> >    },
> >    },
> > + {
> > + /* Aegex 10 tablet (RU2) */
> > + .callback = byt_aegex10_quirk_cb,
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
> > + DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
> > + },
> > + },
>
> indentation and kernel style?
>
> >    { }
> >   };
> >
> > @@ -96,6 +111,15 @@ static struct snd_soc_acpi_mach byt_pov_p1006w = {
> >    .sof_tplg_filename = "sof-byt-rt5651.tplg",
> >   };
> >
> > +static struct snd_soc_acpi_mach byt_aegex_10 = {
> > + .id = "10EC5640",
> > + .drv_name = "cht-bsw-rt5672",
> > + .fw_filename = "intel/fw_sst_0f28.bin",
> > + .board = "cht-bsw",
> > + .sof_fw_filename = "intel/sof-byt.ri",
> > + .sof_tplg_filename = "intel/sof-byt-rt5670.tplg",
>
> the intel/ prefix is no longer used for SOF.
>
>
> Also since you are using exactly the same quirk as for BYT_THINKPAD_10
> you could use a common structure instead of a duplicated one.
>
> > +};
> > +
> >   static struct snd_soc_acpi_mach *byt_quirk(void *arg)
> >   {
> >    struct snd_soc_acpi_mach *mach = arg;
> > @@ -107,6 +131,8 @@ static struct snd_soc_acpi_mach *byt_quirk(void *arg
> >    return &byt_thinkpad_10;
> >    case BYT_POV_P1006W:
> >    return &byt_pov_p1006w;
> > + case BYT_AEGEX_10:
> > + return &byt_aegex_10;
>
> indentation?
>
> >    default:
> >    return mach;
> >    }
> >
> > diff --git a/ori/sound/soc/codecs/rt5670.c
> b/new/sound/soc/codecs/rt5670.c
> > index 9a03710..37cce04 100644
> > --- a/ori/sound/soc/codecs/rt5670.c
> > +++ b/new/sound/soc/codecs/rt5670.c
> > @@ -1,4 +1,4 @@
> > -/*
> > +/*
>
> no need for change here
>
> >    * rt5670.c  --  RT5670 ALSA SoC audio codec driver
> >    *
> >    * Copyright 2014 Realtek Semiconductor Corp.
> > @@ -2882,6 +2882,18 @@ static const struct dmi_system_id
> > dmi_platform_intel_quirks[] = {
> >    RT5670_DEV_GPIO |
> >    RT5670_JD_MODE3),
> >    },
> > + {
> > + .callback = rt5670_quirk_cb,
> > + .ident = "Aegex 10 tablet (RU2)",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
> > + DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
> > + },
> > + .driver_data = (unsigned long *)(RT5670_DMIC_EN |
> > + RT5670_DMIC2_INR |
> > + RT5670_DEV_GPIO |
> > + RT5670_JD_MODE3),
> > + },
> >    {}
> >   };
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> > https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >
>
diff mbox series

Patch

diff --git a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
index fe812a9..e549950 100644
--- a/ori/sound/soc/intel/common/soc-acpi-intel-byt-match.c
+++ b/new/sound/soc/intel/common/soc-acpi-intel-byt-match.c
@@ -1,4 +1,4 @@ 
-/*
+/*
  * soc-apci-intel-byt-match.c - tables and support for BYT ACPI
enumeration.
  *
  * Copyright (c) 2017, Intel Corporation.
@@ -22,6 +22,7 @@  static unsigned long byt_machine_id;

 #define BYT_THINKPAD_10  1
 #define BYT_POV_P1006W   2
+#define BYT_AEGEX_10     3

 static int byt_thinkpad10_quirk_cb(const struct dmi_system_id *id)
 {
@@ -35,6 +36,12 @@  static int byt_pov_p1006w_quirk_cb(const struct
dmi_system_id *id)
  return 1;
 }

+static int byt_aegex10_quirk_cb(const struct dmi_system_id *id)
+{
+ byt_machine_id = BYT_AEGEX_10;
+ return 1;
+}
+
 static const struct dmi_system_id byt_table[] = {
  {
  .callback = byt_thinkpad10_quirk_cb,
@@ -75,6 +82,14 @@  static const struct dmi_system_id byt_table[] = {
  DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
  },
  },
+ {
+ /* Aegex 10 tablet (RU2) */
+ .callback = byt_aegex10_quirk_cb,
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
+ },
+ },
  { }
 };

@@ -96,6 +111,15 @@  static struct snd_soc_acpi_mach byt_pov_p1006w = {
  .sof_tplg_filename = "sof-byt-rt5651.tplg",
 };

+static struct snd_soc_acpi_mach byt_aegex_10 = {
+ .id = "10EC5640",
+ .drv_name = "cht-bsw-rt5672",
+ .fw_filename = "intel/fw_sst_0f28.bin",
+ .board = "cht-bsw",
+ .sof_fw_filename = "intel/sof-byt.ri",
+ .sof_tplg_filename = "intel/sof-byt-rt5670.tplg",
+};
+
 static struct snd_soc_acpi_mach *byt_quirk(void *arg)
 {
  struct snd_soc_acpi_mach *mach = arg;
@@ -107,6 +131,8 @@  static struct snd_soc_acpi_mach *byt_quirk(void *arg)
  return &byt_thinkpad_10;
  case BYT_POV_P1006W:
  return &byt_pov_p1006w;
+ case BYT_AEGEX_10:
+ return &byt_aegex_10;
  default:
  return mach;
  }

diff --git a/ori/sound/soc/codecs/rt5670.c b/new/sound/soc/codecs/rt5670.c
index 9a03710..37cce04 100644
--- a/ori/sound/soc/codecs/rt5670.c
+++ b/new/sound/soc/codecs/rt5670.c
@@ -1,4 +1,4 @@ 
-/*
+/*
  * rt5670.c  --  RT5670 ALSA SoC audio codec driver
  *
  * Copyright 2014 Realtek Semiconductor Corp.
@@ -2882,6 +2882,18 @@  static const struct dmi_system_id
dmi_platform_intel_quirks[] = {
  RT5670_DEV_GPIO |
  RT5670_JD_MODE3),
  },
+ {
+ .callback = rt5670_quirk_cb,
+ .ident = "Aegex 10 tablet (RU2)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
+ },
+ .driver_data = (unsigned long *)(RT5670_DMIC_EN |
+ RT5670_DMIC2_INR |
+ RT5670_DEV_GPIO |
+ RT5670_JD_MODE3),
+ },
  {}
 };