sound: make all 'class' structures const
Now that the driver core allows for struct class to be in read-only memory, making all 'class' structures to be declared at build time placing them into read-only memory, instead of having to be dynamically allocated at load time. Cc: Jaroslav Kysela <perex@perex.cz> Cc: Takashi Iwai <tiwai@suse.com> Cc: Ivan Orlov <ivan.orlov0322@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Geoff Levand <geoff@infradead.org> Cc: Thierry Reding <treding@nvidia.com> Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de> Cc: alsa-devel@alsa-project.org Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20230620175633.641141-2-gregkh@linuxfoundation.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7ea9ee0064
commit
8d0cf150d2
@ -232,7 +232,7 @@ static inline struct device *snd_card_get_device_link(struct snd_card *card)
|
||||
|
||||
extern int snd_major;
|
||||
extern int snd_ecards_limit;
|
||||
extern struct class *sound_class;
|
||||
extern const struct class sound_class;
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
extern struct dentry *sound_debugfs_root;
|
||||
#endif
|
||||
|
@ -737,7 +737,7 @@ static int __init snd_ctl_led_init(void)
|
||||
unsigned int group;
|
||||
|
||||
device_initialize(&snd_ctl_led_dev);
|
||||
snd_ctl_led_dev.class = sound_class;
|
||||
snd_ctl_led_dev.class = &sound_class;
|
||||
snd_ctl_led_dev.release = snd_ctl_led_dev_release;
|
||||
dev_set_name(&snd_ctl_led_dev, "ctl-led");
|
||||
if (device_add(&snd_ctl_led_dev)) {
|
||||
|
@ -129,7 +129,7 @@ void snd_device_initialize(struct device *dev, struct snd_card *card)
|
||||
device_initialize(dev);
|
||||
if (card)
|
||||
dev->parent = &card->card_dev;
|
||||
dev->class = sound_class;
|
||||
dev->class = &sound_class;
|
||||
dev->release = default_release;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_device_initialize);
|
||||
@ -331,7 +331,7 @@ static int snd_card_init(struct snd_card *card, struct device *parent,
|
||||
|
||||
device_initialize(&card->card_dev);
|
||||
card->card_dev.parent = parent;
|
||||
card->card_dev.class = sound_class;
|
||||
card->card_dev.class = &sound_class;
|
||||
card->card_dev.release = release_card_device;
|
||||
card->card_dev.groups = card->dev_groups;
|
||||
card->dev_groups[0] = &card_dev_attr_group;
|
||||
|
@ -23,9 +23,6 @@ static inline int init_oss_soundcore(void) { return 0; }
|
||||
static inline void cleanup_oss_soundcore(void) { }
|
||||
#endif
|
||||
|
||||
struct class *sound_class;
|
||||
EXPORT_SYMBOL(sound_class);
|
||||
|
||||
MODULE_DESCRIPTION("Core sound module");
|
||||
MODULE_AUTHOR("Alan Cox");
|
||||
MODULE_LICENSE("GPL");
|
||||
@ -37,6 +34,12 @@ static char *sound_devnode(const struct device *dev, umode_t *mode)
|
||||
return kasprintf(GFP_KERNEL, "snd/%s", dev_name(dev));
|
||||
}
|
||||
|
||||
const struct class sound_class = {
|
||||
.name = "sound",
|
||||
.devnode = sound_devnode,
|
||||
};
|
||||
EXPORT_SYMBOL(sound_class);
|
||||
|
||||
static int __init init_soundcore(void)
|
||||
{
|
||||
int rc;
|
||||
@ -45,21 +48,19 @@ static int __init init_soundcore(void)
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
sound_class = class_create("sound");
|
||||
if (IS_ERR(sound_class)) {
|
||||
rc = class_register(&sound_class);
|
||||
if (rc) {
|
||||
cleanup_oss_soundcore();
|
||||
return PTR_ERR(sound_class);
|
||||
return rc;
|
||||
}
|
||||
|
||||
sound_class->devnode = sound_devnode;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit cleanup_soundcore(void)
|
||||
{
|
||||
cleanup_oss_soundcore();
|
||||
class_destroy(sound_class);
|
||||
class_unregister(&sound_class);
|
||||
}
|
||||
|
||||
subsys_initcall(init_soundcore);
|
||||
@ -276,7 +277,7 @@ retry:
|
||||
}
|
||||
}
|
||||
|
||||
device_create(sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
|
||||
device_create(&sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
|
||||
NULL, "%s", s->name+6);
|
||||
return s->unit_minor;
|
||||
|
||||
@ -302,7 +303,7 @@ static void sound_remove_unit(struct sound_unit **list, int unit)
|
||||
if (!preclaim_oss)
|
||||
__unregister_chrdev(SOUND_MAJOR, p->unit_minor, 1,
|
||||
p->name);
|
||||
device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
|
||||
device_destroy(&sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
|
||||
kfree(p);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user