[alsa-devel] [PATCH v2] ASoC: rt286: Set cbj_en for ACPI devices
From: Bard Liao bardliao@realtek.com
This patch set cbj_en value for ACPI devices.
Signed-off-by: Bard Liao bardliao@realtek.com --- sound/soc/codecs/rt286.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c index e4f6102..7dfca82 100644 --- a/sound/soc/codecs/rt286.c +++ b/sound/soc/codecs/rt286.c @@ -1100,8 +1100,14 @@ static const struct i2c_device_id rt286_i2c_id[] = { }; MODULE_DEVICE_TABLE(i2c, rt286_i2c_id);
+/* the default platform data for acpi devices */ +static struct rt286_platform_data rt286_acpi_data = { + .cbj_en = true, + .gpio2_en = false, +}; + static const struct acpi_device_id rt286_acpi_match[] = { - { "INT343A", 0 }, + { "INT343A", (unsigned long)&rt286_acpi_data }, {}, }; MODULE_DEVICE_TABLE(acpi, rt286_acpi_match); @@ -1111,6 +1117,8 @@ static int rt286_i2c_probe(struct i2c_client *i2c, { struct rt286_platform_data *pdata = dev_get_platdata(&i2c->dev); struct rt286_priv *rt286; + struct device *dev = &i2c->dev; + const struct acpi_device_id *acpiid; int i, ret;
rt286 = devm_kzalloc(&i2c->dev, sizeof(*rt286), @@ -1141,6 +1149,13 @@ static int rt286_i2c_probe(struct i2c_client *i2c, if (pdata) rt286->pdata = *pdata;
+ /* enable jack combo mode on supported devices */ + acpiid = acpi_match_device(dev->driver->acpi_match_table, dev); + if (acpiid) { + rt286->pdata = *(struct rt286_platform_data *) + acpiid->driver_data; + } + regmap_write(rt286->regmap, RT286_SET_AUDIO_POWER, AC_PWRST_D3);
for (i = 0; i < RT286_POWER_REG_LEN; i++)
On Thu, Sep 11, 2014 at 09:40:54AM +0800, bardliao@realtek.com wrote:
+/* the default platform data for acpi devices */ +static struct rt286_platform_data rt286_acpi_data = {
- .cbj_en = true,
- .gpio2_en = false,
+};
static const struct acpi_device_id rt286_acpi_match[] = {
- { "INT343A", 0 },
- { "INT343A", (unsigned long)&rt286_acpi_data }, {},
};
Why does this platform data apply to all boards using this ACPI ID? Shouldn't this be _DSD data instead, or should we be doing quirks based on DMI data?
On Fri, 2014-09-12 at 14:55 +0100, Mark Brown wrote:
On Thu, Sep 11, 2014 at 09:40:54AM +0800, bardliao@realtek.com wrote:
+/* the default platform data for acpi devices */ +static struct rt286_platform_data rt286_acpi_data = {
- .cbj_en = true,
- .gpio2_en = false,
+};
static const struct acpi_device_id rt286_acpi_match[] = {
- { "INT343A", 0 },
- { "INT343A", (unsigned long)&rt286_acpi_data }, {},
};
Why does this platform data apply to all boards using this ACPI ID? Shouldn't this be _DSD data instead, or should we be doing quirks based on DMI data?
Sadly there is no data within most/all current BIOSes that have this ACPI id for the RT286. The BIOSes are a little behind in the development here compared to the codec driver. So it's probably we will have to support this and _DSD with this particular driver.
Liam
--------------------------------------------------------------------- Intel Corporation (UK) Limited Registered No. 1134945 (England) Registered Office: Pipers Way, Swindon SN3 1RJ VAT No: 860 2173 47
This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.
On Tue, Sep 16, 2014 at 08:31:54AM +0100, Liam Girdwood wrote:
On Fri, 2014-09-12 at 14:55 +0100, Mark Brown wrote:
Why does this platform data apply to all boards using this ACPI ID? Shouldn't this be _DSD data instead, or should we be doing quirks based on DMI data?
Sadly there is no data within most/all current BIOSes that have this ACPI id for the RT286. The BIOSes are a little behind in the development here compared to the codec driver. So it's probably we will have to support this and _DSD with this particular driver.
They should all have DMI data (ie, board level identification), I can see them not having _DSD but DMI has been there since forever.
participants (3)
-
bardliao@realtek.com
-
Liam Girdwood
-
Mark Brown