diff mbox

[v2,1/3] ASoC: codecs: wm8904: add dt ids table

Message ID 1418614273-2303-1-git-send-email-voice.shen@atmel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bo Shen Dec. 15, 2014, 3:31 a.m. UTC
From: Alexander Morozov <linux@meltdown.ru>

Signed-off-by: Alexander Morozov <linux@meltdown.ru>
[Add driver data to distinguish device type]
Signed-off-by: Bo Shen <voice.shen@atmel.com>
---

Changes in v2:
- Add driver data for distinguish the device capability.

 sound/soc/codecs/wm8904.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Nicolas Ferre Jan. 13, 2015, 3:20 p.m. UTC | #1
Le 15/12/2014 04:31, Bo Shen a écrit :
> From: Alexander Morozov <linux@meltdown.ru>
> 
> Signed-off-by: Alexander Morozov <linux@meltdown.ru>
> [Add driver data to distinguish device type]
> Signed-off-by: Bo Shen <voice.shen@atmel.com>
> ---
> 
> Changes in v2:
> - Add driver data for distinguish the device capability.
> 
>  sound/soc/codecs/wm8904.c | 22 ++++++++++++++++++++++

Mark,

Do you want us to re-send this patch or can you take it?

On my side, I'm planning to take the 2 last ones of this series: is it
okay for you?

Thanks, bye.

>  1 file changed, 22 insertions(+)
> 
> diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
> index 4d2d2b1..6e3f175 100644
> --- a/sound/soc/codecs/wm8904.c
> +++ b/sound/soc/codecs/wm8904.c
> @@ -2255,10 +2255,32 @@ static const struct i2c_device_id wm8904_i2c_id[] = {
>  };
>  MODULE_DEVICE_TABLE(i2c, wm8904_i2c_id);
>  
> +#ifdef CONFIG_OF
> +static enum wm8904_type wm8904_data = WM8904;
> +static enum wm8904_type wm8912_data = WM8912;
> +
> +static const struct of_device_id wm8904_of_match[] = {
> +	{
> +		.compatible = "wlf,wm8904",
> +		.data = &wm8904_data,
> +	}, {
> +		.compatible = "wlf,wm8912",
> +		.data = &wm8912_data,
> +	}, {
> +		.compatible = "wlf,wm8918",
> +		.data = &wm8904_data,
> +	}, {
> +		/* sentinel */
> +	}
> +};
> +MODULE_DEVICE_TABLE(of, wm8904_of_match);
> +#endif
> +
>  static struct i2c_driver wm8904_i2c_driver = {
>  	.driver = {
>  		.name = "wm8904",
>  		.owner = THIS_MODULE,
> +		.of_match_table = of_match_ptr(wm8904_of_match),
>  	},
>  	.probe =    wm8904_i2c_probe,
>  	.remove =   wm8904_i2c_remove,
>
Mark Brown Jan. 15, 2015, 11:54 a.m. UTC | #2
On Mon, Dec 15, 2014 at 11:31:11AM +0800, Bo Shen wrote:

> +#ifdef CONFIG_OF
> +static enum wm8904_type wm8904_data = WM8904;
> +static enum wm8904_type wm8912_data = WM8912;
> +
> +static const struct of_device_id wm8904_of_match[] = {
> +	{
> +		.compatible = "wlf,wm8904",
> +		.data = &wm8904_data,

Does this end up in the i2c_driver_id driver data or do we need some
extra code when devtype is assigned to check for an of_node and look at
the DT data instead?  That certainly used to be the case...
Bo Shen Jan. 16, 2015, 1:17 a.m. UTC | #3
Hi Mark,

On 01/15/2015 07:54 PM, Mark Brown wrote:
> On Mon, Dec 15, 2014 at 11:31:11AM +0800, Bo Shen wrote:
>
>> +#ifdef CONFIG_OF
>> +static enum wm8904_type wm8904_data = WM8904;
>> +static enum wm8904_type wm8912_data = WM8912;
>> +
>> +static const struct of_device_id wm8904_of_match[] = {
>> +	{
>> +		.compatible = "wlf,wm8904",
>> +		.data = &wm8904_data,
>
> Does this end up in the i2c_driver_id driver data or do we need some
> extra code when devtype is assigned to check for an of_node and look at
> the DT data instead?  That certainly used to be the case...

At the beginning I think as the same as you, and also add the code to 
get the data as I do in <drivers/misc/atmel-ssc.c>. However, as I 
remember, I2C seems only use the compatible string after the comma, that 
means only for "wlf,wm8904", it uses "wm8904" to match. So, I remove all 
the code I added, and just keep these, and it can get the device type 
correctly.

So, when I submit the patch and keep the code as simple as possible.

Thanks.

Best Regards,
Bo Shen
Nicolas Ferre Jan. 26, 2015, 3:24 p.m. UTC | #4
Le 16/01/2015 02:17, Bo Shen a écrit :
> Hi Mark,
> 
> On 01/15/2015 07:54 PM, Mark Brown wrote:
>> On Mon, Dec 15, 2014 at 11:31:11AM +0800, Bo Shen wrote:
>>
>>> +#ifdef CONFIG_OF
>>> +static enum wm8904_type wm8904_data = WM8904;
>>> +static enum wm8904_type wm8912_data = WM8912;
>>> +
>>> +static const struct of_device_id wm8904_of_match[] = {
>>> +	{
>>> +		.compatible = "wlf,wm8904",
>>> +		.data = &wm8904_data,
>>
>> Does this end up in the i2c_driver_id driver data or do we need some
>> extra code when devtype is assigned to check for an of_node and look at
>> the DT data instead?  That certainly used to be the case...
> 
> At the beginning I think as the same as you, and also add the code to 
> get the data as I do in <drivers/misc/atmel-ssc.c>. However, as I 
> remember, I2C seems only use the compatible string after the comma, that 
> means only for "wlf,wm8904", it uses "wm8904" to match. So, I remove all 
> the code I added, and just keep these, and it can get the device type 
> correctly.
> 
> So, when I submit the patch and keep the code as simple as possible.
> 
> Thanks.
> 
> Best Regards,
> Bo Shen

I don't understand what's keeping this patch from being applied. Voice,
do you mind re-sending?

On my side, I take the two patches that apply on AT91 DT (2/3 and 3/3).

Bye,
Mark Brown Jan. 26, 2015, 4:42 p.m. UTC | #5
On Mon, Jan 26, 2015 at 04:24:38PM +0100, Nicolas Ferre wrote:
> Le 16/01/2015 02:17, Bo Shen a écrit :

> >> Does this end up in the i2c_driver_id driver data or do we need some
> >> extra code when devtype is assigned to check for an of_node and look at
> >> the DT data instead?  That certainly used to be the case...

> > At the beginning I think as the same as you, and also add the code to 
> > get the data as I do in <drivers/misc/atmel-ssc.c>. However, as I 
> > remember, I2C seems only use the compatible string after the comma, that 
> > means only for "wlf,wm8904", it uses "wm8904" to match. So, I remove all 
> > the code I added, and just keep these, and it can get the device type 
> > correctly.

> > So, when I submit the patch and keep the code as simple as possible.

> I don't understand what's keeping this patch from being applied. Voice,
> do you mind re-sending?

I need to convince myself that the above actually works and is doing the
right thing; the above explanation sounds like if it works it might be
relying on a bug.
Lars-Peter Clausen Jan. 26, 2015, 4:49 p.m. UTC | #6
On 01/26/2015 05:42 PM, Mark Brown wrote:
> On Mon, Jan 26, 2015 at 04:24:38PM +0100, Nicolas Ferre wrote:
>> Le 16/01/2015 02:17, Bo Shen a écrit :
>
>>>> Does this end up in the i2c_driver_id driver data or do we need some
>>>> extra code when devtype is assigned to check for an of_node and look at
>>>> the DT data instead?  That certainly used to be the case...
>
>>> At the beginning I think as the same as you, and also add the code to
>>> get the data as I do in <drivers/misc/atmel-ssc.c>. However, as I
>>> remember, I2C seems only use the compatible string after the comma, that
>>> means only for "wlf,wm8904", it uses "wm8904" to match. So, I remove all
>>> the code I added, and just keep these, and it can get the device type
>>> correctly.
>
>>> So, when I submit the patch and keep the code as simple as possible.
>
>> I don't understand what's keeping this patch from being applied. Voice,
>> do you mind re-sending?
>
> I need to convince myself that the above actually works and is doing the
> right thing; the above explanation sounds like if it works it might be
> relying on a bug.

I'd call it a undocumented feature. But I wouldn't rely on it being around 
for ever. In my opinion to be future proof the driver should explicitly 
handle the OF case in the probe function.
Bo Shen Jan. 27, 2015, 1:35 a.m. UTC | #7
Hi Mark, Lars-Perter,

On 01/27/2015 12:49 AM, Lars-Peter Clausen wrote:
> On 01/26/2015 05:42 PM, Mark Brown wrote:
>> On Mon, Jan 26, 2015 at 04:24:38PM +0100, Nicolas Ferre wrote:
>>> Le 16/01/2015 02:17, Bo Shen a écrit :
>>
>>>>> Does this end up in the i2c_driver_id driver data or do we need some
>>>>> extra code when devtype is assigned to check for an of_node and
>>>>> look at
>>>>> the DT data instead?  That certainly used to be the case...
>>
>>>> At the beginning I think as the same as you, and also add the code to
>>>> get the data as I do in <drivers/misc/atmel-ssc.c>. However, as I
>>>> remember, I2C seems only use the compatible string after the comma,
>>>> that
>>>> means only for "wlf,wm8904", it uses "wm8904" to match. So, I remove
>>>> all
>>>> the code I added, and just keep these, and it can get the device type
>>>> correctly.
>>
>>>> So, when I submit the patch and keep the code as simple as possible.
>>
>>> I don't understand what's keeping this patch from being applied. Voice,
>>> do you mind re-sending?
>>
>> I need to convince myself that the above actually works and is doing the
>> right thing; the above explanation sounds like if it works it might be
>> relying on a bug.
>
> I'd call it a undocumented feature. But I wouldn't rely on it being
> around for ever. In my opinion to be future proof the driver should
> explicitly handle the OF case in the probe function.
>

I will add this into probe function in next version.
Thanks.

Best Regards,
Bo Shen
diff mbox

Patch

diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
index 4d2d2b1..6e3f175 100644
--- a/sound/soc/codecs/wm8904.c
+++ b/sound/soc/codecs/wm8904.c
@@ -2255,10 +2255,32 @@  static const struct i2c_device_id wm8904_i2c_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, wm8904_i2c_id);
 
+#ifdef CONFIG_OF
+static enum wm8904_type wm8904_data = WM8904;
+static enum wm8904_type wm8912_data = WM8912;
+
+static const struct of_device_id wm8904_of_match[] = {
+	{
+		.compatible = "wlf,wm8904",
+		.data = &wm8904_data,
+	}, {
+		.compatible = "wlf,wm8912",
+		.data = &wm8912_data,
+	}, {
+		.compatible = "wlf,wm8918",
+		.data = &wm8904_data,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(of, wm8904_of_match);
+#endif
+
 static struct i2c_driver wm8904_i2c_driver = {
 	.driver = {
 		.name = "wm8904",
 		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(wm8904_of_match),
 	},
 	.probe =    wm8904_i2c_probe,
 	.remove =   wm8904_i2c_remove,