On Fri, 2017-06-09 at 23:49 +0300, Andy Shevchenko wrote: > GPIO ACPI mapping table is defined on platform basis. Codec driver > shouldn't have known what platform is using it. > > Make codec driver more generic by moving platform code to where it > belongs. > It will not work like this. We need to take care about actual device to which GPIOs belongs to. I will fix it in v2. > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > sound/soc/codecs/rt5677.c | 26 -------------------------- > sound/soc/intel/boards/bdw-rt5677.c | 27 +++++++++++++++++++++++++++ > 2 files changed, 27 insertions(+), 26 deletions(-) > > diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c > index 64cf6cc41ad1..36e530a36c82 100644 > --- a/sound/soc/codecs/rt5677.c > +++ b/sound/soc/codecs/rt5677.c > @@ -41,15 +41,6 @@ > > #define RT5677_PR_BASE (RT5677_PR_RANGE_BASE + (0 * > RT5677_PR_SPACING)) > > -/* GPIO indexes defined by ACPI */ > -enum { > - RT5677_GPIO_PLUG_DET = 0, > - RT5677_GPIO_MIC_PRESENT_L = 1, > - RT5677_GPIO_HOTWORD_DET_L = 2, > - RT5677_GPIO_DSP_INT = 3, > - RT5677_GPIO_HP_AMP_SHDN_L = 4, > -}; > - > static const struct regmap_range_cfg rt5677_ranges[] = { > { > .name = "PR", > @@ -5048,28 +5039,11 @@ static const struct acpi_device_id > rt5677_acpi_match[] = { > MODULE_DEVICE_TABLE(acpi, rt5677_acpi_match); > #endif > > -static const struct acpi_gpio_params plug_det_gpio = { > RT5677_GPIO_PLUG_DET, 0, false }; > -static const struct acpi_gpio_params mic_present_gpio = { > RT5677_GPIO_MIC_PRESENT_L, 0, false }; > -static const struct acpi_gpio_params headphone_enable_gpio = { > RT5677_GPIO_HP_AMP_SHDN_L, 0, false }; > - > -static const struct acpi_gpio_mapping bdw_rt5677_gpios[] = { > - { "plug-det-gpios", &plug_det_gpio, 1 }, > - { "mic-present-gpios", &mic_present_gpio, 1 }, > - { "headphone-enable-gpios", &headphone_enable_gpio, 1 }, > - { NULL }, > -}; > - > static void rt5677_read_acpi_properties(struct rt5677_priv *rt5677, > struct device *dev) > { > - int ret; > u32 val; > > - ret = acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), > - bdw_rt5677_gpios); > - if (ret) > - dev_warn(dev, "Failed to add driver gpios\n"); > - > if (!device_property_read_u32(dev, "DCLK", &val)) > rt5677->pdata.dmic2_clk_pin = val; > > diff --git a/sound/soc/intel/boards/bdw-rt5677.c > b/sound/soc/intel/boards/bdw-rt5677.c > index 14d9693c1641..e3aa32c2546b 100644 > --- a/sound/soc/intel/boards/bdw-rt5677.c > +++ b/sound/soc/intel/boards/bdw-rt5677.c > @@ -16,6 +16,7 @@ > * along with this program. If not, see <http://www.gnu.org/licenses > />. > */ > > +#include <linux/acpi.h> > #include <linux/module.h> > #include <linux/platform_device.h> > #include <linux/gpio/consumer.h> > @@ -120,6 +121,26 @@ static struct snd_soc_jack_gpio mic_jack_gpio = { > .invert = 1, > }; > > +/* GPIO indexes defined by ACPI */ > +enum { > + RT5677_GPIO_PLUG_DET = 0, > + RT5677_GPIO_MIC_PRESENT_L = 1, > + RT5677_GPIO_HOTWORD_DET_L = 2, > + RT5677_GPIO_DSP_INT = 3, > + RT5677_GPIO_HP_AMP_SHDN_L = 4, > +}; > + > +static const struct acpi_gpio_params plug_det_gpio = { > RT5677_GPIO_PLUG_DET, 0, false }; > +static const struct acpi_gpio_params mic_present_gpio = { > RT5677_GPIO_MIC_PRESENT_L, 0, false }; > +static const struct acpi_gpio_params headphone_enable_gpio = { > RT5677_GPIO_HP_AMP_SHDN_L, 0, false }; > + > +static const struct acpi_gpio_mapping bdw_rt5677_gpios[] = { > + { "plug-det-gpios", &plug_det_gpio, 1 }, > + { "mic-present-gpios", &mic_present_gpio, 1 }, > + { "headphone-enable-gpios", &headphone_enable_gpio, 1 }, > + { NULL }, > +}; > + > static int broadwell_ssp0_fixup(struct snd_soc_pcm_runtime *rtd, > struct snd_pcm_hw_params *params) > { > @@ -314,6 +335,7 @@ static struct snd_soc_card bdw_rt5677_card = { > static int bdw_rt5677_probe(struct platform_device *pdev) > { > struct bdw_rt5677_priv *bdw_rt5677; > + int ret; > > bdw_rt5677_card.dev = &pdev->dev; > > @@ -325,6 +347,11 @@ static int bdw_rt5677_probe(struct > platform_device *pdev) > return -ENOMEM; > } > > + ret = acpi_dev_add_driver_gpios(ACPI_COMPANION(&pdev->dev), > + bdw_rt5677_gpios); > + if (ret) > + dev_warn(&pdev->dev, "Failed to add driver gpios\n"); > + > snd_soc_card_set_drvdata(&bdw_rt5677_card, bdw_rt5677); > > return devm_snd_soc_register_card(&pdev->dev, > &bdw_rt5677_card); -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel