diff mbox

[5/7] ASoC: ts3a227e: add acpi table

Message ID 20170908051309.19028-6-pierre-louis.bossart@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Pierre-Louis Bossart Sept. 8, 2017, 5:13 a.m. UTC
From: "Fang, Yang A" <yang.a.fang@intel.com>

This patch adds the acpi match table for the ts3a227e audio accessory
detection device. This enables headset features like jack plug/unplug
notifications, mic presence, and button pressed events.

Signed-off-by: Fang, Yang A <yang.a.fang@intel.com>
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 sound/soc/codecs/ts3a227e.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Vinod Koul Sept. 8, 2017, 1:27 p.m. UTC | #1
On Fri, Sep 08, 2017 at 12:13:07AM -0500, Pierre-Louis Bossart wrote:
> From: "Fang, Yang A" <yang.a.fang@intel.com>
> 
> This patch adds the acpi match table for the ts3a227e audio accessory
> detection device. This enables headset features like jack plug/unplug
> notifications, mic presence, and button pressed events.
> 
> Signed-off-by: Fang, Yang A <yang.a.fang@intel.com>
> Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>  sound/soc/codecs/ts3a227e.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/sound/soc/codecs/ts3a227e.c b/sound/soc/codecs/ts3a227e.c
> index 4356843..738e04b 100644
> --- a/sound/soc/codecs/ts3a227e.c
> +++ b/sound/soc/codecs/ts3a227e.c
> @@ -15,6 +15,7 @@
>  #include <linux/module.h>
>  #include <linux/of_gpio.h>
>  #include <linux/regmap.h>
> +#include <linux/acpi.h>
>  
>  #include <sound/core.h>
>  #include <sound/jack.h>
> @@ -374,11 +375,20 @@ static const struct of_device_id ts3a227e_of_match[] = {
>  };
>  MODULE_DEVICE_TABLE(of, ts3a227e_of_match);
>  
> +#ifdef CONFIG_ACPI
> +static struct acpi_device_id ts3a227e_acpi_match[] = {
> +	{ "104C227E", 0 },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(acpi, ts3a227e_acpi_match);
> +#endif

so this is not present for non ACPI system,... fine

> +
>  static struct i2c_driver ts3a227e_driver = {
>  	.driver = {
>  		.name = "ts3a227e",
>  		.pm = &ts3a227e_pm,
>  		.of_match_table = of_match_ptr(ts3a227e_of_match),
> +		.acpi_match_table = ACPI_PTR(ts3a227e_acpi_match),

but then this would give compiler error on those systems as .acpi_match_table is
defined in driver core... can you compile this on non acpi and check

struct device_driver {
	const char		*name;
	struct bus_type		*bus;

	struct module		*owner;
	const char		*mod_name;	/* used for built-in modules */

	bool suppress_bind_attrs;	/* disables bind/unbind via sysfs */
	enum probe_type probe_type;

	const struct of_device_id	*of_match_table;
	const struct acpi_device_id	*acpi_match_table;

	int (*probe) (struct device *dev);
	int (*remove) (struct device *dev);
	void (*shutdown) (struct device *dev);
	int (*suspend) (struct device *dev, pm_message_t state);
	int (*resume) (struct device *dev);
	const struct attribute_group **groups;

	const struct dev_pm_ops *pm;

	struct driver_private *p;
};
Pierre-Louis Bossart Sept. 8, 2017, 1:30 p.m. UTC | #2
>> +#ifdef CONFIG_ACPI
>> +static struct acpi_device_id ts3a227e_acpi_match[] = {
>> +	{ "104C227E", 0 },
>> +	{},
>> +};
>> +MODULE_DEVICE_TABLE(acpi, ts3a227e_acpi_match);
>> +#endif
> 
> so this is not present for non ACPI system,... fine
> 
>> +
>>   static struct i2c_driver ts3a227e_driver = {
>>   	.driver = {
>>   		.name = "ts3a227e",
>>   		.pm = &ts3a227e_pm,
>>   		.of_match_table = of_match_ptr(ts3a227e_of_match),
>> +		.acpi_match_table = ACPI_PTR(ts3a227e_acpi_match),
> 
> but then this would give compiler error on those systems as .acpi_match_table is
> defined in driver core... can you compile this on non acpi and check

This is not any different from what is done for other codecs.

static struct i2c_driver rt5677_i2c_driver = {
	.driver = {
		.name = "rt5677",
		.of_match_table = rt5677_of_match,
		.acpi_match_table = ACPI_PTR(rt5677_acpi_match),
	},

And the 0day checks did not report any issues, probably because the 
pre-processor takes the table out when CONFIG_ACPI is not enabled:

#define ACPI_PTR(_ptr)	(NULL)

so no change...
Mark Brown Sept. 12, 2017, 2:54 p.m. UTC | #3
On Fri, Sep 08, 2017 at 08:30:37AM -0500, Pierre-Louis Bossart wrote:

> > >   		.of_match_table = of_match_ptr(ts3a227e_of_match),
> > > +		.acpi_match_table = ACPI_PTR(ts3a227e_acpi_match),

> > but then this would give compiler error on those systems as .acpi_match_table is
> > defined in driver core... can you compile this on non acpi and check

> This is not any different from what is done for other codecs.

> And the 0day checks did not report any issues, probably because the
> pre-processor takes the table out when CONFIG_ACPI is not enabled:

> #define ACPI_PTR(_ptr)	(NULL)

> so no change...

Right, this is the whole point of the of_match_ptr() and ACPI_PTR()
macros.
Vinod Koul Sept. 18, 2017, 3:36 a.m. UTC | #4
On Fri, Sep 08, 2017 at 08:30:37AM -0500, Pierre-Louis Bossart wrote:
> 
> >>+#ifdef CONFIG_ACPI
> >>+static struct acpi_device_id ts3a227e_acpi_match[] = {
> >>+	{ "104C227E", 0 },
> >>+	{},
> >>+};
> >>+MODULE_DEVICE_TABLE(acpi, ts3a227e_acpi_match);
> >>+#endif
> >
> >so this is not present for non ACPI system,... fine
> >
> >>+
> >>  static struct i2c_driver ts3a227e_driver = {
> >>  	.driver = {
> >>  		.name = "ts3a227e",
> >>  		.pm = &ts3a227e_pm,
> >>  		.of_match_table = of_match_ptr(ts3a227e_of_match),
> >>+		.acpi_match_table = ACPI_PTR(ts3a227e_acpi_match),
> >
> >but then this would give compiler error on those systems as .acpi_match_table is
> >defined in driver core... can you compile this on non acpi and check
> 
> This is not any different from what is done for other codecs.
> 
> static struct i2c_driver rt5677_i2c_driver = {
> 	.driver = {
> 		.name = "rt5677",
> 		.of_match_table = rt5677_of_match,
> 		.acpi_match_table = ACPI_PTR(rt5677_acpi_match),
> 	},
> 
> And the 0day checks did not report any issues, probably because the
> pre-processor takes the table out when CONFIG_ACPI is not enabled:
> 
> #define ACPI_PTR(_ptr)	(NULL)

Yeah thanks for pointing, missed this one :)

> so no change...

yup :)
diff mbox

Patch

diff --git a/sound/soc/codecs/ts3a227e.c b/sound/soc/codecs/ts3a227e.c
index 4356843..738e04b 100644
--- a/sound/soc/codecs/ts3a227e.c
+++ b/sound/soc/codecs/ts3a227e.c
@@ -15,6 +15,7 @@ 
 #include <linux/module.h>
 #include <linux/of_gpio.h>
 #include <linux/regmap.h>
+#include <linux/acpi.h>
 
 #include <sound/core.h>
 #include <sound/jack.h>
@@ -374,11 +375,20 @@  static const struct of_device_id ts3a227e_of_match[] = {
 };
 MODULE_DEVICE_TABLE(of, ts3a227e_of_match);
 
+#ifdef CONFIG_ACPI
+static struct acpi_device_id ts3a227e_acpi_match[] = {
+	{ "104C227E", 0 },
+	{},
+};
+MODULE_DEVICE_TABLE(acpi, ts3a227e_acpi_match);
+#endif
+
 static struct i2c_driver ts3a227e_driver = {
 	.driver = {
 		.name = "ts3a227e",
 		.pm = &ts3a227e_pm,
 		.of_match_table = of_match_ptr(ts3a227e_of_match),
+		.acpi_match_table = ACPI_PTR(ts3a227e_acpi_match),
 	},
 	.probe = ts3a227e_i2c_probe,
 	.id_table = ts3a227e_i2c_ids,