From: Greg KH <greg@kroah.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, linux-hotplug-devel@lists.sourceforge.net
Subject: [PATCH] sysfs sound class patch for ALSA drivers - [2/2]
Date: Wed, 07 Jan 2004 23:24:25 +0000 [thread overview]
Message-ID: <20040107232425.GE2540@kroah.com> (raw)
In-Reply-To: <20040107232335.GD2540@kroah.com>
Adds sysfs sound class support for all ALSA drivers
Note, this is based on a previous patch from Leann Ogasawara
<ogasawara@osdl.org>, but modified a lot by me.
diff -Nru a/include/sound/core.h b/include/sound/core.h
--- a/include/sound/core.h Wed Jan 7 15:10:03 2004
+++ b/include/sound/core.h Wed Jan 7 15:10:03 2004
@@ -160,6 +160,7 @@
int shutdown; /* this card is going down */
wait_queue_head_t shutdown_sleep;
struct work_struct free_workq; /* for free in workqueue */
+ struct device *dev;
#ifdef CONFIG_PM
int (*set_power_state) (snd_card_t *card, unsigned int state);
diff -Nru a/sound/core/sound.c b/sound/core/sound.c
--- a/sound/core/sound.c Wed Jan 7 15:10:03 2004
+++ b/sound/core/sound.c Wed Jan 7 15:10:03 2004
@@ -38,9 +38,7 @@
static int major = CONFIG_SND_MAJOR;
int snd_major;
static int cards_limit = SNDRV_CARDS;
-#ifdef CONFIG_DEVFS_FS
static int device_mode = S_IFCHR | S_IRUGO | S_IWUGO;
-#endif
MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
MODULE_DESCRIPTION("Advanced Linux Sound Architecture driver for soundcards.");
@@ -66,6 +64,7 @@
static DECLARE_MUTEX(sound_mutex);
+extern struct class sound_class;
#ifdef CONFIG_KMOD
/**
@@ -203,6 +202,7 @@
{
int minor = snd_kernel_minor(type, card, dev);
snd_minor_t *preg;
+ struct device *device = NULL;
if (minor < 0)
return minor;
@@ -221,10 +221,14 @@
return -EBUSY;
}
list_add_tail(&preg->list, &snd_minors_hash[SNDRV_MINOR_CARD(minor)]);
-#ifdef CONFIG_DEVFS_FS
- if (strncmp(name, "controlC", 8)) /* created in sound.c */
+
+ if (strncmp(name, "controlC", 8)) { /* created in sound.c */
devfs_mk_cdev(MKDEV(major, minor), S_IFCHR | device_mode, "snd/%s", name);
-#endif
+ if (card)
+ device = card->dev;
+ simple_add_class_device(&sound_class, MKDEV(major, minor), device, name);
+ }
+
up(&sound_mutex);
return 0;
}
@@ -252,10 +256,12 @@
up(&sound_mutex);
return -EINVAL;
}
-#ifdef CONFIG_DEVFS_FS
- if (strncmp(mptr->name, "controlC", 8)) /* created in sound.c */
+
+ if (strncmp(mptr->name, "controlC", 8)) { /* created in sound.c */
devfs_remove("snd/%s", mptr->name);
-#endif
+ simple_remove_class_device(MKDEV(major, minor));
+ }
+
list_del(&mptr->list);
up(&sound_mutex);
kfree(mptr);
@@ -322,9 +328,7 @@
static int __init alsa_sound_init(void)
{
-#ifdef CONFIG_DEVFS_FS
short controlnum;
-#endif
#ifdef CONFIG_SND_OSSEMUL
int err;
#endif
@@ -358,10 +362,10 @@
#ifdef CONFIG_SND_OSSEMUL
snd_info_minor_register();
#endif
-#ifdef CONFIG_DEVFS_FS
- for (controlnum = 0; controlnum < cards_limit; controlnum++)
+ for (controlnum = 0; controlnum < cards_limit; controlnum++) {
devfs_mk_cdev(MKDEV(major, controlnum<<5), S_IFCHR | device_mode, "snd/controlC%d", controlnum);
-#endif
+ simple_add_class_device(&sound_class, MKDEV(major, controlnum<<5), NULL, "controlC%d", controlnum);
+ }
#ifndef MODULE
printk(KERN_INFO "Advanced Linux Sound Architecture Driver Version " CONFIG_SND_VERSION CONFIG_SND_DATE ".\n");
#endif
@@ -372,8 +376,10 @@
{
short controlnum;
- for (controlnum = 0; controlnum < cards_limit; controlnum++)
+ for (controlnum = 0; controlnum < cards_limit; controlnum++) {
devfs_remove("snd/controlC%d", controlnum);
+ simple_remove_class_device(MKDEV(major, controlnum<<5));
+ }
#ifdef CONFIG_SND_OSSEMUL
snd_info_minor_unregister();
diff -Nru a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
--- a/sound/pci/intel8x0.c Wed Jan 7 15:10:03 2004
+++ b/sound/pci/intel8x0.c Wed Jan 7 15:10:03 2004
@@ -2591,6 +2591,7 @@
break;
}
}
+ card->dev = &pci->dev;
if ((err = snd_intel8x0_create(card, pci, pci_id->driver_data, &chip)) < 0) {
snd_card_free(card);
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
next prev parent reply other threads:[~2004-01-07 23:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-07 23:21 [PATCH] sysfs sound class patches - [0/2] Greg KH
2004-01-07 23:23 ` [PATCH] sysfs sound class patch for OSS drivers - [1/2] Greg KH
2004-01-07 23:24 ` Greg KH [this message]
2004-01-08 20:08 ` Andreas Jellinghaus
2004-01-08 12:41 ` [PATCH] sysfs sound class patches - [0/2] Kristof vansant
2004-01-08 13:40 ` Kristof vansant
2004-01-08 17:33 ` Takashi Iwai
2004-01-09 8:00 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040107232425.GE2540@kroah.com \
--to=greg@kroah.com \
--cc=akpm@osdl.org \
--cc=linux-hotplug-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).