ALSA: hwdep: Take private_data as drvdata for sysfs
authorTakashi Iwai <tiwai@suse.de>
Tue, 25 Feb 2014 09:00:58 +0000 (10:00 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 25 Feb 2014 11:12:50 +0000 (12:12 +0100)
For referring to a different object from sysfs ops, take hwdep
private_data as stored via dev_set_drvdata() at creating the device
object.  In that way, the same sysfs ops can be used by different
device types.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/hwdep.c
sound/pci/hda/hda_hwdep.c

index 99f7e8515ba139069c4857c864b5636f3fb432bb..825cd2847940057fd9b02fc7d5e8fd295fe79f10 100644 (file)
@@ -441,6 +441,8 @@ static int snd_hwdep_dev_register(struct snd_device *device)
                struct device *d = snd_get_device(SNDRV_DEVICE_TYPE_HWDEP,
                                                  hwdep->card, hwdep->device);
                if (d) {
+                       if (hwdep->private_data)
+                               dev_set_drvdata(d, hwdep->private_data);
                        err = sysfs_create_groups(&d->kobj, hwdep->groups);
                        if (err < 0)
                                dev_warn(card->dev,
index 53eef6a01589738086c884d55f3e9e87663fb5be..0fada0f8cfe8c2112007c2e5badf7c6f06f8eda3 100644 (file)
@@ -163,8 +163,7 @@ static ssize_t power_on_acct_show(struct device *dev,
                                  struct device_attribute *attr,
                                  char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        snd_hda_update_power_acct(codec);
        return sprintf(buf, "%u\n", jiffies_to_msecs(codec->power_on_acct));
 }
@@ -173,8 +172,7 @@ static ssize_t power_off_acct_show(struct device *dev,
                                   struct device_attribute *attr,
                                   char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        snd_hda_update_power_acct(codec);
        return sprintf(buf, "%u\n", jiffies_to_msecs(codec->power_off_acct));
 }
@@ -251,8 +249,7 @@ static ssize_t type##_show(struct device *dev,                      \
                           struct device_attribute *attr,       \
                           char *buf)                           \
 {                                                              \
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);         \
-       struct hda_codec *codec = hwdep->private_data;          \
+       struct hda_codec *codec = dev_get_drvdata(dev);         \
        return sprintf(buf, "0x%x\n", codec->type);             \
 }
 
@@ -261,8 +258,7 @@ static ssize_t type##_show(struct device *dev,                      \
                             struct device_attribute *attr,     \
                                        char *buf)              \
 {                                                              \
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);         \
-       struct hda_codec *codec = hwdep->private_data;          \
+       struct hda_codec *codec = dev_get_drvdata(dev);         \
        return sprintf(buf, "%s\n",                             \
                       codec->type ? codec->type : "");         \
 }
@@ -281,8 +277,7 @@ static ssize_t type##_store(struct device *dev,                     \
                            struct device_attribute *attr,      \
                            const char *buf, size_t count)      \
 {                                                              \
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);         \
-       struct hda_codec *codec = hwdep->private_data;          \
+       struct hda_codec *codec = dev_get_drvdata(dev);         \
        unsigned long val;                                      \
        int err = kstrtoul(buf, 0, &val);                       \
        if (err < 0)                                            \
@@ -296,8 +291,7 @@ static ssize_t type##_store(struct device *dev,                     \
                            struct device_attribute *attr,      \
                            const char *buf, size_t count)      \
 {                                                              \
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);         \
-       struct hda_codec *codec = hwdep->private_data;          \
+       struct hda_codec *codec = dev_get_drvdata(dev);         \
        char *s = kstrndup_noeol(buf, 64);                      \
        if (!s)                                                 \
                return -ENOMEM;                                 \
@@ -318,8 +312,7 @@ static ssize_t type##_store(struct device *dev,                     \
                            struct device_attribute *attr,      \
                            const char *buf, size_t count)      \
 {                                                              \
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);         \
-       struct hda_codec *codec = hwdep->private_data;          \
+       struct hda_codec *codec = dev_get_drvdata(dev);         \
        int err = 0;                                            \
        if (*buf)                                               \
                err = type##_codec(codec);                      \
@@ -333,8 +326,7 @@ static ssize_t init_verbs_show(struct device *dev,
                               struct device_attribute *attr,
                               char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        int i, len = 0;
        mutex_lock(&codec->user_mutex);
        for (i = 0; i < codec->init_verbs.used; i++) {
@@ -373,8 +365,7 @@ static ssize_t init_verbs_store(struct device *dev,
                                struct device_attribute *attr,
                                const char *buf, size_t count)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        int err = parse_init_verbs(codec, buf);
        if (err < 0)
                return err;
@@ -385,8 +376,7 @@ static ssize_t hints_show(struct device *dev,
                          struct device_attribute *attr,
                          char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        int i, len = 0;
        mutex_lock(&codec->user_mutex);
        for (i = 0; i < codec->hints.used; i++) {
@@ -480,8 +470,7 @@ static ssize_t hints_store(struct device *dev,
                           struct device_attribute *attr,
                           const char *buf, size_t count)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        int err = parse_hints(codec, buf);
        if (err < 0)
                return err;
@@ -507,8 +496,7 @@ static ssize_t init_pin_configs_show(struct device *dev,
                                     struct device_attribute *attr,
                                     char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        return pin_configs_show(codec, &codec->init_pins, buf);
 }
 
@@ -516,8 +504,7 @@ static ssize_t user_pin_configs_show(struct device *dev,
                                     struct device_attribute *attr,
                                     char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        return pin_configs_show(codec, &codec->user_pins, buf);
 }
 
@@ -525,8 +512,7 @@ static ssize_t driver_pin_configs_show(struct device *dev,
                                       struct device_attribute *attr,
                                       char *buf)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        return pin_configs_show(codec, &codec->driver_pins, buf);
 }
 
@@ -550,8 +536,7 @@ static ssize_t user_pin_configs_store(struct device *dev,
                                      struct device_attribute *attr,
                                      const char *buf, size_t count)
 {
-       struct snd_hwdep *hwdep = dev_get_drvdata(dev);
-       struct hda_codec *codec = hwdep->private_data;
+       struct hda_codec *codec = dev_get_drvdata(dev);
        int err = parse_user_pin_configs(codec, buf);
        if (err < 0)
                return err;