*/
#include <linux/sched.h> /* wake_up() */
-#include <asm/semaphore.h> /* struct semaphore */
+#include <linux/mutex.h> /* struct mutex */
#include <linux/rwsem.h> /* struct rw_semaphore */
#include <linux/workqueue.h> /* struct workqueue_struct */
#include <linux/pm.h> /* pm_message_t */
wait_queue_head_t shutdown_sleep;
struct work_struct free_workq; /* for free in workqueue */
struct device *dev;
-#ifdef CONFIG_SND_GENERIC_DRIVER
- struct snd_generic_device *generic_dev;
-#endif
#ifdef CONFIG_PM
- int (*pm_suspend)(struct snd_card *card, pm_message_t state);
- int (*pm_resume)(struct snd_card *card);
- void *pm_private_data;
unsigned int power_state; /* power state */
- struct semaphore power_lock; /* power lock */
+ struct mutex power_lock; /* power lock */
wait_queue_head_t power_sleep;
#endif
#ifdef CONFIG_PM
static inline void snd_power_lock(struct snd_card *card)
{
- down(&card->power_lock);
+ mutex_lock(&card->power_lock);
}
static inline void snd_power_unlock(struct snd_card *card)
{
- up(&card->power_lock);
+ mutex_unlock(&card->power_lock);
}
static inline unsigned int snd_power_get_state(struct snd_card *card)
}
/* init.c */
-int snd_power_wait(struct snd_card *card, unsigned int power_state, struct file *file);
-
-int snd_card_set_pm_callback(struct snd_card *card,
- int (*suspend)(struct snd_card *, pm_message_t),
- int (*resume)(struct snd_card *),
- void *private_data);
-int snd_card_set_generic_pm_callback(struct snd_card *card,
- int (*suspend)(struct snd_card *, pm_message_t),
- int (*resume)(struct snd_card *),
- void *private_data);
-#define snd_card_set_isa_pm_callback(card,suspend,resume,data) \
- snd_card_set_generic_pm_callback(card, suspend, resume, data)
-struct pci_dev;
-int snd_card_pci_suspend(struct pci_dev *dev, pm_message_t state);
-int snd_card_pci_resume(struct pci_dev *dev);
-#define SND_PCI_PM_CALLBACKS \
- .suspend = snd_card_pci_suspend, .resume = snd_card_pci_resume
+int snd_power_wait(struct snd_card *card, unsigned int power_state);
#else /* ! CONFIG_PM */
#define snd_power_lock(card) do { (void)(card); } while (0)
#define snd_power_unlock(card) do { (void)(card); } while (0)
-static inline int snd_power_wait(struct snd_card *card, unsigned int state, struct file *file) { return 0; }
+static inline int snd_power_wait(struct snd_card *card, unsigned int state) { return 0; }
#define snd_power_get_state(card) SNDRV_CTL_POWER_D0
#define snd_power_change_state(card, state) do { (void)(card); } while (0)
-#define snd_card_set_pm_callback(card,suspend,resume,data)
-#define snd_card_set_generic_pm_callback(card,suspend,resume,data)
-#define snd_card_set_isa_pm_callback(card,suspend,resume,data)
-#define SND_PCI_PM_CALLBACKS
#endif /* CONFIG_PM */
struct snd_minor {
- struct list_head list; /* list of all minors per card */
- int number; /* minor number */
+ int type; /* SNDRV_DEVICE_TYPE_XXX */
+ int card; /* card number */
int device; /* device number */
- const char *comment; /* for /proc/asound/devices */
- struct file_operations *f_ops; /* file operations */
+ const struct file_operations *f_ops; /* file operations */
+ void *private_data; /* private data for f_ops->open */
char name[0]; /* device name (keep at the end of
structure) */
};
void snd_request_card(int card);
-int snd_register_device(int type, struct snd_card *card, int dev, struct snd_minor *reg, const char *name);
+int snd_register_device(int type, struct snd_card *card, int dev,
+ const struct file_operations *f_ops, void *private_data,
+ const char *name);
int snd_unregister_device(int type, struct snd_card *card, int dev);
+void *snd_lookup_minor_data(unsigned int minor, int type);
#ifdef CONFIG_SND_OSSEMUL
-int snd_register_oss_device(int type, struct snd_card *card, int dev, struct snd_minor *reg, const char *name);
+int snd_register_oss_device(int type, struct snd_card *card, int dev,
+ const struct file_operations *f_ops, void *private_data,
+ const char *name);
int snd_unregister_oss_device(int type, struct snd_card *card, int dev);
+void *snd_lookup_oss_minor_data(unsigned int minor, int type);
#endif
int snd_minor_info_init(void);
#ifdef CONFIG_SND_OSSEMUL
int snd_minor_info_oss_init(void);
int snd_minor_info_oss_done(void);
-int snd_oss_init_module(void);
#else
#define snd_minor_info_oss_init() /*NOP*/
#define snd_minor_info_oss_done() /*NOP*/
-#define snd_oss_init_module() 0
#endif
/* memory.c */
#ifndef snd_card_set_dev
#define snd_card_set_dev(card,devptr) ((card)->dev = (devptr))
#endif
-/* register a generic device (for ISA, etc) */
-int snd_card_set_generic_dev(struct snd_card *card);
/* device.c */
#ifdef CONFIG_SND_VERBOSE_PRINTK
/**
* snd_printd - debug printk
- * @format: format string
+ * @fmt: format string
*
* Compiled only when Works like snd_printk() for debugging purpose.
* Ignored when CONFIG_SND_DEBUG is not set.
/**
* snd_assert - run-time assertion macro
* @expr: expression
- * @args...: the action
*
* This macro checks the expression in run-time and invokes the commands
* given in the rest arguments if the assertion is failed.