[ALSA] Use getnstimeofday()
[linux-2.6.git] / include / sound / core.h
index f8c4ef0..fa8f4c9 100644 (file)
@@ -29,7 +29,6 @@
 #include <linux/pm.h>                  /* pm_message_t */
 
 /* Typedef's */
-typedef struct timespec snd_timestamp_t;
 typedef struct sndrv_interval snd_interval_t;
 typedef enum sndrv_card_type snd_card_type;
 typedef struct sndrv_xferi snd_xferi_t;
@@ -126,25 +125,26 @@ struct snd_monitor_file {
        struct snd_monitor_file *next;
 };
 
-struct snd_shutdown_f_ops;     /* define it later */
+struct snd_shutdown_f_ops;     /* define it later in init.c */
 
 /* main structure for soundcard */
 
 struct _snd_card {
-       int number;                     /* number of soundcard (index to snd_cards) */
+       int number;                     /* number of soundcard (index to
+                                                               snd_cards) */
 
        char id[16];                    /* id string of this card */
        char driver[16];                /* driver name */
        char shortname[32];             /* short name of this soundcard */
        char longname[80];              /* name of this soundcard */
        char mixername[80];             /* mixer name */
-       char components[80];            /* card components delimited with space */
-
+       char components[80];            /* card components delimited with
+                                                               space */
        struct module *module;          /* top-level module */
 
        void *private_data;             /* private data for soundcard */
-       void (*private_free) (snd_card_t *card); /* callback for freeing of private data */
-
+       void (*private_free) (snd_card_t *card); /* callback for freeing of
+                                                               private data */
        struct list_head devices;       /* devices */
 
        unsigned int last_numid;        /* last used numeric ID */
@@ -160,12 +160,16 @@ struct _snd_card {
        struct proc_dir_entry *proc_root_link;  /* number link to real id */
 
        struct snd_monitor_file *files; /* all files associated to this card */
-       struct snd_shutdown_f_ops *s_f_ops; /* file operations in the shutdown state */
+       struct snd_shutdown_f_ops *s_f_ops; /* file operations in the shutdown
+                                                               state */
        spinlock_t files_lock;          /* lock the files for this card */
        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_SND_GENERIC_DRIVER
+       struct snd_generic_device *generic_dev;
+#endif
 
 #ifdef CONFIG_PM
        int (*pm_suspend)(snd_card_t *card, pm_message_t state);
@@ -174,9 +178,6 @@ struct _snd_card {
        unsigned int power_state;       /* power state */
        struct semaphore power_lock;    /* power lock */
        wait_queue_head_t power_sleep;
-#ifdef CONFIG_SND_GENERIC_PM
-       struct snd_generic_device *pm_dev;      /* for ISA */
-#endif
 #endif
 
 #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
@@ -196,8 +197,6 @@ static inline void snd_power_unlock(snd_card_t *card)
        up(&card->power_lock);
 }
 
-int snd_power_wait(snd_card_t *card, unsigned int power_state, struct file *file);
-
 static inline unsigned int snd_power_get_state(snd_card_t *card)
 {
        return card->power_state;
@@ -208,6 +207,10 @@ static inline void snd_power_change_state(snd_card_t *card, unsigned int state)
        card->power_state = state;
        wake_up(&card->power_sleep);
 }
+
+/* init.c */
+int snd_power_wait(snd_card_t *card, unsigned int power_state, struct file *file);
+
 int snd_card_set_pm_callback(snd_card_t *card,
                             int (*suspend)(snd_card_t *, pm_message_t),
                             int (*resume)(snd_card_t *),
@@ -238,15 +241,14 @@ static inline int snd_power_wait(snd_card_t *card, unsigned int state, struct fi
 
 #endif /* CONFIG_PM */
 
-/* device.c */
-
 struct _snd_minor {
        struct list_head list;          /* list of all minors per card */
        int number;                     /* minor number */
        int device;                     /* device number */
        const char *comment;            /* for /proc/asound/devices */
        struct file_operations *f_ops;  /* file operations */
-       char name[0];                   /* device name (keep at the end of structure) */
+       char name[0];                   /* device name (keep at the end of
+                                                               structure) */
 };
 
 typedef struct _snd_minor snd_minor_t;
@@ -287,13 +289,15 @@ void snd_memory_init(void);
 void snd_memory_done(void);
 int snd_memory_info_init(void);
 int snd_memory_info_done(void);
-void *snd_hidden_kmalloc(size_t size, int flags);
-void *snd_hidden_kcalloc(size_t n, size_t size, int flags);
+void *snd_hidden_kmalloc(size_t size, gfp_t flags);
+void *snd_hidden_kzalloc(size_t size, gfp_t flags);
+void *snd_hidden_kcalloc(size_t n, size_t size, gfp_t flags);
 void snd_hidden_kfree(const void *obj);
 void *snd_hidden_vmalloc(unsigned long size);
 void snd_hidden_vfree(void *obj);
-char *snd_hidden_kstrdup(const char *s, int flags);
+char *snd_hidden_kstrdup(const char *s, gfp_t flags);
 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
+#define kzalloc(size, flags) snd_hidden_kzalloc(size, flags)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kfree(obj) snd_hidden_kfree(obj)
 #define vmalloc(size) snd_hidden_vmalloc(size)
@@ -343,6 +347,8 @@ int snd_card_file_remove(snd_card_t *card, struct file *file);
 #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(snd_card_t *card);
 
 /* device.c */
 
@@ -357,11 +363,13 @@ int snd_device_free_all(snd_card_t *card, snd_device_cmd_t cmd);
 
 /* isadma.c */
 
+#ifdef CONFIG_ISA_DMA_API
 #define DMA_MODE_NO_ENABLE     0x0100
 
 void snd_dma_program(unsigned long dma, unsigned long addr, unsigned int size, unsigned short mode);
 void snd_dma_disable(unsigned long dma);
 unsigned int snd_dma_pointer(unsigned long dma, unsigned int size);
+#endif
 
 /* misc.c */
 
@@ -411,7 +419,7 @@ void snd_verbose_printd(const char *file, int line, const char *format, ...)
        printk(fmt ,##args)
 #endif
 /**
- * snd_assert - run-time assersion macro
+ * snd_assert - run-time assertion macro
  * @expr: expression
  * @args...: the action
  *
@@ -420,34 +428,24 @@ void snd_verbose_printd(const char *file, int line, const char *format, ...)
  * When CONFIG_SND_DEBUG is not set, the expression is executed but
  * not checked.
  */
-#define snd_assert(expr, args...) do {\
-       if (unlikely(!(expr))) {                                \
-               snd_printk(KERN_ERR "BUG? (%s) (called from %p)\n", __ASTRING__(expr), __builtin_return_address(0));\
-               args;\
-       }\
+#define snd_assert(expr, args...) do {                                 \
+       if (unlikely(!(expr))) {                                        \
+               snd_printk(KERN_ERR "BUG? (%s)\n", __ASTRING__(expr));  \
+               dump_stack();                                           \
+               args;                                                   \
+       }                                                               \
 } while (0)
-/**
- * snd_runtime_check - run-time assersion 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.
- * Unlike snd_assert(), the action commands are executed even if
- * CONFIG_SND_DEBUG is not set but without any error messages.
- */
-#define snd_runtime_check(expr, args...) do {\
-       if (unlikely(!(expr))) {                                \
-               snd_printk(KERN_ERR "ERROR (%s) (called from %p)\n", __ASTRING__(expr), __builtin_return_address(0));\
-               args;\
-       }\
+
+#define snd_BUG() do {                         \
+       snd_printk(KERN_ERR "BUG?\n");          \
+       dump_stack();                           \
 } while (0)
 
 #else /* !CONFIG_SND_DEBUG */
 
 #define snd_printd(fmt, args...)       /* nothing */
 #define snd_assert(expr, args...)      (void)(expr)
-#define snd_runtime_check(expr, args...) do { if (!(expr)) { args; } } while (0)
+#define snd_BUG()                      /* nothing */
 
 #endif /* CONFIG_SND_DEBUG */
 
@@ -464,30 +462,6 @@ void snd_verbose_printd(const char *file, int line, const char *format, ...)
 #define snd_printdd(format, args...) /* nothing */
 #endif
 
-#define snd_BUG() snd_assert(0, )
-
-
-static inline void snd_timestamp_now(struct timespec *tstamp, int timespec)
-{
-       struct timeval val;
-       /* FIXME: use a linear time source */
-       do_gettimeofday(&val);
-       tstamp->tv_sec = val.tv_sec;
-       tstamp->tv_nsec = val.tv_usec;
-       if (timespec)
-               tstamp->tv_nsec *= 1000L;
-}
-
-static inline void snd_timestamp_zero(struct timespec *tstamp)
-{
-       tstamp->tv_sec = 0;
-       tstamp->tv_nsec = 0;
-}
-
-static inline int snd_timestamp_null(struct timespec *tstamp)
-{
-       return tstamp->tv_sec == 0 && tstamp->tv_nsec == 0;
-}
 
 #define SNDRV_OSS_VERSION         ((3<<16)|(8<<8)|(1<<4)|(0))  /* 3.8.1a */