From 5c0b0266a8fd28d833eac2c9735dd7d9912ad616 Mon Sep 17 00:00:00 2001 From: Phani Kumar Uppalapati Date: Sun, 28 Jun 2015 23:42:59 -0700 Subject: [PATCH] ALSA: core: Add an API to create and register module Add an API to create a module under the given parent directory and then register the info entry. This API can be used to expose ID and version related information. Change-Id: I06f8bc1d8f649e6db37eb65303e948bc58eab7da Signed-off-by: Phani Kumar Uppalapati --- include/sound/info.h | 8 ++++++-- sound/core/info.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/include/sound/info.h b/include/sound/info.h index 9ca1a493d370..59380b65483b 100644 --- a/include/sound/info.h +++ b/include/sound/info.h @@ -147,7 +147,9 @@ static inline void snd_info_set_text_ops(struct snd_info_entry *entry, } int snd_info_check_reserved_words(const char *str); - +struct snd_info_entry *snd_register_module_info(struct module *module, + const char *name, + struct snd_info_entry *parent); #else #define snd_seq_root NULL @@ -177,7 +179,9 @@ static inline void snd_info_set_text_ops(struct snd_info_entry *entry __attribut void (*read)(struct snd_info_entry *, struct snd_info_buffer *)) {} static inline int snd_info_check_reserved_words(const char *str) { return 1; } - +static inline struct snd_info_entry *snd_register_module_info( + struct module *module, const char *name, + struct snd_info_entry *parent) { return NULL; } #endif /* diff --git a/sound/core/info.c b/sound/core/info.c index 08070e1eefeb..7e13a3b3aacf 100644 --- a/sound/core/info.c +++ b/sound/core/info.c @@ -674,6 +674,36 @@ int snd_info_card_free(struct snd_card *card) return 0; } +/* + * snd_register_module_info - create and register module + * @module: the module pointer + * @name: the module name + * @parent: the parent directory + * + * Creates and registers new module entry. + * + * Return: The pointer of the new instance, or NULL on failure. + */ +struct snd_info_entry *snd_register_module_info(struct module *module, + const char *name, + struct snd_info_entry *parent) +{ + struct snd_info_entry *entry; + + entry = snd_info_create_module_entry(module, name, parent); + if (!entry) + return NULL; + + entry->mode = S_IFDIR | S_IRUGO | S_IXUGO; + + if (snd_info_register(entry) < 0) { + snd_info_free_entry(entry); + return NULL; + } + + return entry; +} +EXPORT_SYMBOL(snd_register_module_info); /** * snd_info_get_line - read one line from the procfs buffer