ALSA: compress: Embed struct device
authorTakashi Iwai <tiwai@suse.de>
Fri, 30 Jan 2015 07:16:35 +0000 (08:16 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 2 Feb 2015 13:42:45 +0000 (14:42 +0100)
Like previous patches, this one embeds the struct device into struct
snd_compr.  As the dev field wasn't used beforehand, it's reused as
the new device struct.

Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/compress_driver.h
sound/core/compress_offload.c

index 396e8f73670a59a2eea321867d36a6b3d0a22b2d..1d0593b525738677098480b17b82d5433ddf717e 100644 (file)
@@ -134,7 +134,7 @@ struct snd_compr_ops {
 /**
  * struct snd_compr: Compressed device
  * @name: DSP device name
- * @dev: Device pointer
+ * @dev: associated device instance
  * @ops: pointer to DSP callbacks
  * @private_data: pointer to DSP pvt data
  * @card: sound card pointer
@@ -144,7 +144,7 @@ struct snd_compr_ops {
  */
 struct snd_compr {
        const char *name;
-       struct device *dev;
+       struct device dev;
        struct snd_compr_ops *ops;
        void *private_data;
        struct snd_card *card;
index 89028fab64fdd27bd75698e651fdc3b26b424941..cb58c3f7f80ccd39f243456c88e0bfc2ad328334 100644 (file)
@@ -868,12 +868,13 @@ static int snd_compress_dev_register(struct snd_device *device)
                return -EBADFD;
        compr = device->device_data;
 
-       sprintf(str, "comprC%iD%i", compr->card->number, compr->device);
        pr_debug("reg %s for device %s, direction %d\n", str, compr->name,
                        compr->direction);
        /* register compressed device */
-       ret = snd_register_device(SNDRV_DEVICE_TYPE_COMPRESS, compr->card,
-                       compr->device, &snd_compr_file_ops, compr, str);
+       ret = snd_register_device_for_dev(SNDRV_DEVICE_TYPE_COMPRESS,
+                                         compr->card, compr->device,
+                                         &snd_compr_file_ops, compr,
+                                         &compr->dev, NULL, NULL);
        if (ret < 0) {
                pr_err("snd_register_device failed\n %d", ret);
                return ret;
@@ -892,6 +893,15 @@ static int snd_compress_dev_disconnect(struct snd_device *device)
        return 0;
 }
 
+static int snd_compress_dev_free(struct snd_device *device)
+{
+       struct snd_compr *compr;
+
+       compr = device->device_data;
+       put_device(&compr->dev);
+       return 0;
+}
+
 /*
  * snd_compress_new: create new compress device
  * @card: sound card pointer
@@ -903,7 +913,7 @@ int snd_compress_new(struct snd_card *card, int device,
                        int dirn, struct snd_compr *compr)
 {
        static struct snd_device_ops ops = {
-               .dev_free = NULL,
+               .dev_free = snd_compress_dev_free,
                .dev_register = snd_compress_dev_register,
                .dev_disconnect = snd_compress_dev_disconnect,
        };
@@ -911,6 +921,10 @@ int snd_compress_new(struct snd_card *card, int device,
        compr->card = card;
        compr->device = device;
        compr->direction = dirn;
+
+       snd_device_initialize(&compr->dev, card);
+       dev_set_name(&compr->dev, "comprC%iD%i", card->number, device);
+
        return snd_device_new(card, SNDRV_DEV_COMPRESS, compr, &ops);
 }
 EXPORT_SYMBOL_GPL(snd_compress_new);
@@ -948,7 +962,7 @@ int snd_compress_register(struct snd_compr *device)
 {
        int retval;
 
-       if (device->name == NULL || device->dev == NULL || device->ops == NULL)
+       if (device->name == NULL || device->ops == NULL)
                return -EINVAL;
 
        pr_debug("Registering compressed device %s\n", device->name);