Patchwork aoa: remove driver_data direct access of struct device

login
register
mail settings
Submitter roel kluin
Date May 11, 2009, 7:54 p.m.
Message ID <4A08828B.7090106@gmail.com>
Download mbox | patch
Permalink /patch/27062/
State Accepted
Headers show

Comments

roel kluin - May 11, 2009, 7:54 p.m.
To avoid direct access to the driver_data pointer in struct device, the
functions dev_get_drvdata() and dev_set_drvdata() should be used.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
Takashi Iwai - May 12, 2009, 6:40 a.m.
At Mon, 11 May 2009 21:54:51 +0200,
Roel Kluin wrote:
> 
> To avoid direct access to the driver_data pointer in struct device, the
> functions dev_get_drvdata() and dev_set_drvdata() should be used.
> 
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>

The same fix has been already in Greg's tree (and thus in linux-next).

Greg, is it OK that I take over your patch to sound git tree?


thanks,

Takashi

> ---
> diff --git a/sound/aoa/fabrics/layout.c b/sound/aoa/fabrics/layout.c
> index fbf5c93..586965f 100644
> --- a/sound/aoa/fabrics/layout.c
> +++ b/sound/aoa/fabrics/layout.c
> @@ -1037,7 +1037,7 @@ static int aoa_fabric_layout_probe(struct soundbus_dev *sdev)
>  	}
>  	ldev->selfptr_headphone.ptr = ldev;
>  	ldev->selfptr_lineout.ptr = ldev;
> -	sdev->ofdev.dev.driver_data = ldev;
> +	dev_set_drvdata(&sdev->ofdev.dev, ldev);
>  	list_add(&ldev->list, &layouts_list);
>  	layouts_list_items++;
>  
> @@ -1081,7 +1081,7 @@ static int aoa_fabric_layout_probe(struct soundbus_dev *sdev)
>  
>  static int aoa_fabric_layout_remove(struct soundbus_dev *sdev)
>  {
> -	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
> +	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
>  	int i;
>  
>  	for (i=0; i<MAX_CODECS_PER_BUS; i++) {
> @@ -1114,7 +1114,7 @@ static int aoa_fabric_layout_remove(struct soundbus_dev *sdev)
>  #ifdef CONFIG_PM
>  static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t state)
>  {
> -	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
> +	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
>  
>  	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_off)
>  		ldev->gpio.methods->all_amps_off(&ldev->gpio);
> @@ -1124,7 +1124,7 @@ static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t sta
>  
>  static int aoa_fabric_layout_resume(struct soundbus_dev *sdev)
>  {
> -	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
> +	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
>  
>  	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_off)
>  		ldev->gpio.methods->all_amps_restore(&ldev->gpio);
> diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c
> index 418c84c..4e3b819 100644
> --- a/sound/aoa/soundbus/i2sbus/core.c
> +++ b/sound/aoa/soundbus/i2sbus/core.c
> @@ -358,14 +358,14 @@ static int i2sbus_probe(struct macio_dev* dev, const struct of_device_id *match)
>  		return -ENODEV;
>  	}
>  
> -	dev->ofdev.dev.driver_data = control;
> +	dev_set_drvdata(&dev->ofdev.dev, control);
>  
>  	return 0;
>  }
>  
>  static int i2sbus_remove(struct macio_dev* dev)
>  {
> -	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
> +	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
>  	struct i2sbus_dev *i2sdev, *tmp;
>  
>  	list_for_each_entry_safe(i2sdev, tmp, &control->list, item)
> @@ -377,7 +377,7 @@ static int i2sbus_remove(struct macio_dev* dev)
>  #ifdef CONFIG_PM
>  static int i2sbus_suspend(struct macio_dev* dev, pm_message_t state)
>  {
> -	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
> +	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
>  	struct codec_info_item *cii;
>  	struct i2sbus_dev* i2sdev;
>  	int err, ret = 0;
> @@ -407,7 +407,7 @@ static int i2sbus_suspend(struct macio_dev* dev, pm_message_t state)
>  
>  static int i2sbus_resume(struct macio_dev* dev)
>  {
> -	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
> +	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
>  	struct codec_info_item *cii;
>  	struct i2sbus_dev* i2sdev;
>  	int err, ret = 0;
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
gregkh@suse.de - May 12, 2009, 6:57 a.m.
On Tue, May 12, 2009 at 08:40:05AM +0200, Takashi Iwai wrote:
> At Mon, 11 May 2009 21:54:51 +0200,
> Roel Kluin wrote:
> > 
> > To avoid direct access to the driver_data pointer in struct device, the
> > functions dev_get_drvdata() and dev_set_drvdata() should be used.
> > 
> > Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> 
> The same fix has been already in Greg's tree (and thus in linux-next).
> 
> Greg, is it OK that I take over your patch to sound git tree?

Yes, please do, no objection from me at all.

thanks,

greg k-h
Takashi Iwai - May 12, 2009, 7:23 a.m.
At Mon, 11 May 2009 23:57:43 -0700,
Greg KH wrote:
> 
> On Tue, May 12, 2009 at 08:40:05AM +0200, Takashi Iwai wrote:
> > At Mon, 11 May 2009 21:54:51 +0200,
> > Roel Kluin wrote:
> > > 
> > > To avoid direct access to the driver_data pointer in struct device, the
> > > functions dev_get_drvdata() and dev_set_drvdata() should be used.
> > > 
> > > Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> > 
> > The same fix has been already in Greg's tree (and thus in linux-next).
> > 
> > Greg, is it OK that I take over your patch to sound git tree?
> 
> Yes, please do, no objection from me at all.

OK, will do.

BTW, should it be pushed to 2.6.30?  If "the near future" you
mentioned in the patch means 2.6.31, it'll be better to merge that fix
now.  Otherwise, I'm going to apply the patch as a 2.6.31 material.


thanks,

Takashi
gregkh@suse.de - May 12, 2009, 11:05 p.m.
On Tue, May 12, 2009 at 09:23:47AM +0200, Takashi Iwai wrote:
> At Mon, 11 May 2009 23:57:43 -0700,
> Greg KH wrote:
> > 
> > On Tue, May 12, 2009 at 08:40:05AM +0200, Takashi Iwai wrote:
> > > At Mon, 11 May 2009 21:54:51 +0200,
> > > Roel Kluin wrote:
> > > > 
> > > > To avoid direct access to the driver_data pointer in struct device, the
> > > > functions dev_get_drvdata() and dev_set_drvdata() should be used.
> > > > 
> > > > Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> > > 
> > > The same fix has been already in Greg's tree (and thus in linux-next).
> > > 
> > > Greg, is it OK that I take over your patch to sound git tree?
> > 
> > Yes, please do, no objection from me at all.
> 
> OK, will do.
> 
> BTW, should it be pushed to 2.6.30?  If "the near future" you
> mentioned in the patch means 2.6.31, it'll be better to merge that fix
> now.  Otherwise, I'm going to apply the patch as a 2.6.31 material.

.31 is fine, that is what I was meaning by with "near future" :)

thanks,

greg k-h
Takashi Iwai - May 13, 2009, 5:44 a.m.
At Tue, 12 May 2009 16:05:14 -0700,
Greg KH wrote:
> 
> On Tue, May 12, 2009 at 09:23:47AM +0200, Takashi Iwai wrote:
> > At Mon, 11 May 2009 23:57:43 -0700,
> > Greg KH wrote:
> > > 
> > > On Tue, May 12, 2009 at 08:40:05AM +0200, Takashi Iwai wrote:
> > > > At Mon, 11 May 2009 21:54:51 +0200,
> > > > Roel Kluin wrote:
> > > > > 
> > > > > To avoid direct access to the driver_data pointer in struct device, the
> > > > > functions dev_get_drvdata() and dev_set_drvdata() should be used.
> > > > > 
> > > > > Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> > > > 
> > > > The same fix has been already in Greg's tree (and thus in linux-next).
> > > > 
> > > > Greg, is it OK that I take over your patch to sound git tree?
> > > 
> > > Yes, please do, no objection from me at all.
> > 
> > OK, will do.
> > 
> > BTW, should it be pushed to 2.6.30?  If "the near future" you
> > mentioned in the patch means 2.6.31, it'll be better to merge that fix
> > now.  Otherwise, I'm going to apply the patch as a 2.6.31 material.
> 
> .31 is fine, that is what I was meaning by with "near future" :)

OK, thanks!


Takashi

Patch

diff --git a/sound/aoa/fabrics/layout.c b/sound/aoa/fabrics/layout.c
index fbf5c93..586965f 100644
--- a/sound/aoa/fabrics/layout.c
+++ b/sound/aoa/fabrics/layout.c
@@ -1037,7 +1037,7 @@  static int aoa_fabric_layout_probe(struct soundbus_dev *sdev)
 	}
 	ldev->selfptr_headphone.ptr = ldev;
 	ldev->selfptr_lineout.ptr = ldev;
-	sdev->ofdev.dev.driver_data = ldev;
+	dev_set_drvdata(&sdev->ofdev.dev, ldev);
 	list_add(&ldev->list, &layouts_list);
 	layouts_list_items++;
 
@@ -1081,7 +1081,7 @@  static int aoa_fabric_layout_probe(struct soundbus_dev *sdev)
 
 static int aoa_fabric_layout_remove(struct soundbus_dev *sdev)
 {
-	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
+	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
 	int i;
 
 	for (i=0; i<MAX_CODECS_PER_BUS; i++) {
@@ -1114,7 +1114,7 @@  static int aoa_fabric_layout_remove(struct soundbus_dev *sdev)
 #ifdef CONFIG_PM
 static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t state)
 {
-	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
+	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
 
 	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_off)
 		ldev->gpio.methods->all_amps_off(&ldev->gpio);
@@ -1124,7 +1124,7 @@  static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t sta
 
 static int aoa_fabric_layout_resume(struct soundbus_dev *sdev)
 {
-	struct layout_dev *ldev = sdev->ofdev.dev.driver_data;
+	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
 
 	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_off)
 		ldev->gpio.methods->all_amps_restore(&ldev->gpio);
diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c
index 418c84c..4e3b819 100644
--- a/sound/aoa/soundbus/i2sbus/core.c
+++ b/sound/aoa/soundbus/i2sbus/core.c
@@ -358,14 +358,14 @@  static int i2sbus_probe(struct macio_dev* dev, const struct of_device_id *match)
 		return -ENODEV;
 	}
 
-	dev->ofdev.dev.driver_data = control;
+	dev_set_drvdata(&dev->ofdev.dev, control);
 
 	return 0;
 }
 
 static int i2sbus_remove(struct macio_dev* dev)
 {
-	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
+	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
 	struct i2sbus_dev *i2sdev, *tmp;
 
 	list_for_each_entry_safe(i2sdev, tmp, &control->list, item)
@@ -377,7 +377,7 @@  static int i2sbus_remove(struct macio_dev* dev)
 #ifdef CONFIG_PM
 static int i2sbus_suspend(struct macio_dev* dev, pm_message_t state)
 {
-	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
+	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
 	struct codec_info_item *cii;
 	struct i2sbus_dev* i2sdev;
 	int err, ret = 0;
@@ -407,7 +407,7 @@  static int i2sbus_suspend(struct macio_dev* dev, pm_message_t state)
 
 static int i2sbus_resume(struct macio_dev* dev)
 {
-	struct i2sbus_control *control = dev->ofdev.dev.driver_data;
+	struct i2sbus_control *control = dev_get_drvdata(&dev->ofdev.dev);
 	struct codec_info_item *cii;
 	struct i2sbus_dev* i2sdev;
 	int err, ret = 0;