Message ID | 20170908051309.19028-6-pierre-louis.bossart@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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; };
>> +#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...
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.
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 --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,