On Fri, 2016-07-08 at 15:39 +0530, Vinod Koul wrote: > Surface3 device is a CHT machine, so add entry for it. > Also update the HID from BIOS. > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=98001 > Signed-off-by: Sachin Mokashi <sachinx.mokashi@xxxxxxxxx> > Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx> > --- > sound/soc/intel/boards/cht_bsw_rt5645.c | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/intel/boards/cht_bsw_rt5645.c b/sound/soc/intel/boards/cht_bsw_rt5645.c > index d7ef292c402d..f26c7b8545ae 100644 > --- a/sound/soc/intel/boards/cht_bsw_rt5645.c > +++ b/sound/soc/intel/boards/cht_bsw_rt5645.c > @@ -30,6 +30,7 @@ > #include > #include "../../codecs/rt5645.h" > #include "../atom/sst-atom-controls.h" > +#include "../common/sst-acpi.h" > > #define CHT_PLAT_CLK_3_HZ 19200000 > #define CHT_CODEC_DAI "rt5645-aif1" > @@ -340,10 +341,13 @@ static struct snd_soc_card snd_soc_card_chtrt5650 = { > }; > > static struct cht_acpi_card snd_soc_cards[] = { > + {"10EC5640", CODEC_TYPE_RT5645, &snd_soc_card_chtrt5645}, > {"10EC5645", CODEC_TYPE_RT5645, &snd_soc_card_chtrt5645}, > {"10EC5650", CODEC_TYPE_RT5650, &snd_soc_card_chtrt5650}, > }; > > +static char cht_rt5640_codec_name[16]; /* i2c-:00 with HID being 8 chars */ > + > static int snd_cht_mc_probe(struct platform_device *pdev) > { > int ret_val = 0; > @@ -351,6 +355,9 @@ static int snd_cht_mc_probe(struct platform_device *pdev) > struct cht_mc_private *drv; > struct snd_soc_card *card = snd_soc_cards[0].soc_card; > char codec_name[16]; > + struct sst_acpi_mach *mach; > + const char *i2c_name = NULL; > + int dai_index; > > drv = devm_kzalloc(&pdev->dev, sizeof(*drv), GFP_ATOMIC); > if (!drv) > @@ -366,12 +373,23 @@ static int snd_cht_mc_probe(struct platform_device *pdev) > } > } > card->dev = &pdev->dev; > + mach = card->dev->platform_data; > sprintf(codec_name, "i2c-%s:00", drv->acpi_card->codec_id); > > /* set correct codec name */ > for (i = 0; i < ARRAY_SIZE(cht_dailink); i++) > - if (!strcmp(card->dai_link[i].codec_name, "i2c-10EC5645:00")) > + if (!strcmp(card->dai_link[i].codec_name, "i2c-10EC5645:00")) { > card->dai_link[i].codec_name = kstrdup(codec_name, GFP_KERNEL); > + dai_index = i; > + } > + > + /* fixup codec name based on HID */ > + i2c_name = sst_acpi_find_name_from_hid(mach->id); > + if (i2c_name != NULL) { > + snprintf(cht_rt5640_codec_name, sizeof(cht_rt5640_codec_name), > + "%s%s", "i2c-", i2c_name); > + cht_dailink[dai_index].codec_name = cht_rt5640_codec_name; FWIW, I get: sound/soc/intel/boards/cht_bsw_rt5645.c: In function 'snd_cht_mc_probe': sound/soc/intel/boards/cht_bsw_rt5645.c:391:37: warning: 'dai_index' may be used uninitialized in this function [-Wmaybe-uninitialized] cht_dailink[dai_index].codec_name = cht_rt5640_codec_name; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ > + } > > snd_soc_card_set_drvdata(card, drv); > ret_val = devm_snd_soc_register_card(&pdev->dev, card); _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel