summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2002-12-20 09:47:54 +1100
committerPaul Mackerras <paulus@samba.org>2002-12-20 09:47:54 +1100
commitbba32258181346cb476419033bb0243aa20360d2 (patch)
tree45dbe6adaa7b9af62681504daa658f6969fed33b /include
parent8ca34b9e54cb7a20a4d2f3bbd7e160f071f30230 (diff)
parent75fb58eebfbaca27864b925e49370ccbf1bc33ba (diff)
Merge samba.org:/home/paulus/kernel/linux-2.5
into samba.org:/home/paulus/kernel/for-linus-ppc
Diffstat (limited to 'include')
-rw-r--r--include/asm-alpha/dma.h4
-rw-r--r--include/asm-alpha/uaccess.h48
-rw-r--r--include/asm-i386/elf.h11
-rw-r--r--include/asm-i386/fixmap.h2
-rw-r--r--include/asm-i386/irq.h1
-rw-r--r--include/asm-i386/segment.h4
-rw-r--r--include/scsi/scsi.h4
-rw-r--r--include/sound/ac97_codec.h4
-rw-r--r--include/sound/control.h2
-rw-r--r--include/sound/core.h39
-rw-r--r--include/sound/cs46xx.h2
-rw-r--r--include/sound/cs46xx_dsp_spos.h6
-rw-r--r--include/sound/initval.h13
-rw-r--r--include/sound/mixer_oss.h1
-rw-r--r--include/sound/mpu401.h6
-rw-r--r--include/sound/opl3.h1
-rw-r--r--include/sound/pcm.h5
-rw-r--r--include/sound/pcm_oss.h1
-rw-r--r--include/sound/sb.h9
-rw-r--r--include/sound/trident.h18
-rw-r--r--include/sound/version.h4
21 files changed, 133 insertions, 52 deletions
diff --git a/include/asm-alpha/dma.h b/include/asm-alpha/dma.h
index dc46ba5b4f1c..683afaa3deed 100644
--- a/include/asm-alpha/dma.h
+++ b/include/asm-alpha/dma.h
@@ -112,9 +112,9 @@
# elif defined(CONFIG_ALPHA_RUFFIAN)
# define MAX_ISA_DMA_ADDRESS ALPHA_RUFFIAN_MAX_ISA_DMA_ADDRESS
# elif defined(CONFIG_ALPHA_SABLE)
-# define MAX_ISA_DMA_ADDRESS ALPHA_SABLE_MAX_DMA_ISA_ADDRESS
+# define MAX_ISA_DMA_ADDRESS ALPHA_SABLE_MAX_ISA_DMA_ADDRESS
# elif defined(CONFIG_ALPHA_ALCOR)
-# define MAX_ISA_DMA_ADDRESS ALPHA_ALCOR_MAX_DMA_ISA_ADDRESS
+# define MAX_ISA_DMA_ADDRESS ALPHA_ALCOR_MAX_ISA_DMA_ADDRESS
# else
# define MAX_ISA_DMA_ADDRESS ALPHA_MAX_ISA_DMA_ADDRESS
# endif
diff --git a/include/asm-alpha/uaccess.h b/include/asm-alpha/uaccess.h
index f215aa90809b..5a3b8681f6af 100644
--- a/include/asm-alpha/uaccess.h
+++ b/include/asm-alpha/uaccess.h
@@ -126,7 +126,7 @@ struct __large_struct { unsigned long buf[100]; };
__asm__("1: ldq %0,%2\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 2b-1b(%1)\n" \
".previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
@@ -136,7 +136,7 @@ struct __large_struct { unsigned long buf[100]; };
__asm__("1: ldl %0,%2\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 2b-1b(%1)\n" \
".previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
@@ -149,7 +149,7 @@ struct __large_struct { unsigned long buf[100]; };
__asm__("1: ldwu %0,%2\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 2b-1b(%1)\n" \
".previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
@@ -159,7 +159,7 @@ struct __large_struct { unsigned long buf[100]; };
__asm__("1: ldbu %0,%2\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 2b-1b(%1)\n" \
".previous" \
: "=r"(__gu_val), "=r"(__gu_err) \
@@ -178,10 +178,10 @@ struct __large_struct { unsigned long buf[100]; };
" or %0,%1,%0\n" \
"3:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 3b-1b(%2)\n" \
- " .gprel32 2b\n" \
- " lda %0, 2b-1b(%2)\n" \
+ " .long 2b - .\n" \
+ " lda %0, 3b-2b(%2)\n" \
".previous" \
: "=&r"(__gu_val), "=&r"(__gu_tmp), "=r"(__gu_err) \
: "r"(addr), "2"(__gu_err)); \
@@ -192,7 +192,7 @@ struct __large_struct { unsigned long buf[100]; };
" extbl %0,%2,%0\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda %0, 2b-1b(%1)\n" \
".previous" \
: "=&r"(__gu_val), "=r"(__gu_err) \
@@ -240,7 +240,7 @@ extern void __put_user_unknown(void);
__asm__ __volatile__("1: stq %r2,%1\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31,2b-1b(%0)\n" \
".previous" \
: "=r"(__pu_err) \
@@ -250,7 +250,7 @@ __asm__ __volatile__("1: stq %r2,%1\n" \
__asm__ __volatile__("1: stl %r2,%1\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31,2b-1b(%0)\n" \
".previous" \
: "=r"(__pu_err) \
@@ -263,7 +263,7 @@ __asm__ __volatile__("1: stl %r2,%1\n" \
__asm__ __volatile__("1: stw %r2,%1\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31,2b-1b(%0)\n" \
".previous" \
: "=r"(__pu_err) \
@@ -273,7 +273,7 @@ __asm__ __volatile__("1: stw %r2,%1\n" \
__asm__ __volatile__("1: stb %r2,%1\n" \
"2:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31,2b-1b(%0)\n" \
".previous" \
: "=r"(__pu_err) \
@@ -298,13 +298,13 @@ __asm__ __volatile__("1: stb %r2,%1\n" \
"4: stq_u %1,0(%5)\n" \
"5:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31, 5b-1b(%0)\n" \
- " .gprel32 2b\n" \
+ " .long 2b - .\n" \
" lda $31, 5b-2b(%0)\n" \
- " .gprel32 3b\n" \
+ " .long 3b - .\n" \
" lda $31, 5b-3b(%0)\n" \
- " .gprel32 4b\n" \
+ " .long 4b - .\n" \
" lda $31, 5b-4b(%0)\n" \
".previous" \
: "=r"(__pu_err), "=&r"(__pu_tmp1), \
@@ -324,9 +324,9 @@ __asm__ __volatile__("1: stb %r2,%1\n" \
"2: stq_u %1,0(%4)\n" \
"3:\n" \
".section __ex_table,\"a\"\n" \
- " .gprel32 1b\n" \
+ " .long 1b - .\n" \
" lda $31, 3b-1b(%0)\n" \
- " .gprel32 2b\n" \
+ " .long 2b - .\n" \
" lda $31, 3b-2b(%0)\n" \
".previous" \
: "=r"(__pu_err), \
@@ -356,7 +356,7 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len)
register long __cu_len __asm__("$0") = len;
__asm__ __volatile__(
- "jsr $28,(%3),__copy_user\n\tldgp $29,0($28)"
+ "jsr $28,(%3),__copy_user"
: "=r" (__cu_len), "=r" (__cu_from), "=r" (__cu_to), "=r"(pv)
: "0" (__cu_len), "1" (__cu_from), "2" (__cu_to), "3"(pv)
: "$1","$2","$3","$4","$5","$28","memory");
@@ -373,7 +373,7 @@ __copy_tofrom_user(void *to, const void *from, long len, const void *validate)
register const void * __cu_from __asm__("$7") = from;
register long __cu_len __asm__("$0") = len;
__asm__ __volatile__(
- "jsr $28,(%3),__copy_user\n\tldgp $29,0($28)"
+ "jsr $28,(%3),__copy_user"
: "=r"(__cu_len), "=r"(__cu_from), "=r"(__cu_to),
"=r" (pv)
: "0" (__cu_len), "1" (__cu_from), "2" (__cu_to),
@@ -413,7 +413,7 @@ __clear_user(void *to, long len)
register void * __cl_to __asm__("$6") = to;
register long __cl_len __asm__("$0") = len;
__asm__ __volatile__(
- "jsr $28,(%2),__do_clear_user\n\tldgp $29,0($28)"
+ "jsr $28,(%2),__do_clear_user"
: "=r"(__cl_len), "=r"(__cl_to), "=r"(pv)
: "0"(__cl_len), "1"(__cl_to), "2"(pv)
: "$1","$2","$3","$4","$5","$28","memory");
@@ -428,7 +428,7 @@ clear_user(void *to, long len)
register void * __cl_to __asm__("$6") = to;
register long __cl_len __asm__("$0") = len;
__asm__ __volatile__(
- "jsr $28,(%2),__do_clear_user\n\tldgp $29,0($28)"
+ "jsr $28,(%2),__do_clear_user"
: "=r"(__cl_len), "=r"(__cl_to), "=r"(pv)
: "0"(__cl_len), "1"(__cl_to), "2"(pv)
: "$1","$2","$3","$4","$5","$28","memory");
@@ -471,7 +471,7 @@ extern inline long strnlen_user(const char *str, long n)
/*
* About the exception table:
*
- * - insn is a 32-bit offset off of the kernel's or module's gp.
+ * - insn is a 32-bit pc-relative offset from the faulting insn.
* - nextinsn is a 16-bit offset off of the faulting instruction
* (not off of the *next* instruction as branches are).
* - errreg is the register in which to place -EFAULT.
@@ -502,7 +502,7 @@ struct exception_table_entry
};
/* Returns 0 if exception not found and fixup.unit otherwise. */
-extern unsigned search_exception_table(unsigned long, unsigned long);
+extern unsigned search_exception_table(unsigned long);
/* Returns the new pc */
#define fixup_exception(map_reg, fixup_unit, pc) \
diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h
index 69b242234d8a..f7ad699487b4 100644
--- a/include/asm-i386/elf.h
+++ b/include/asm-i386/elf.h
@@ -100,6 +100,12 @@ typedef struct user_fxsr_struct elf_fpxregset_t;
#define ELF_PLATFORM (system_utsname.machine)
+/*
+ * Architecture-neutral AT_ values in 0-17, leave some room
+ * for more of them, start the x86-specific ones at 32.
+ */
+#define AT_SYSINFO 32
+
#ifdef __KERNEL__
#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
@@ -116,6 +122,11 @@ extern void dump_smp_unlazy_fpu(void);
#define ELF_CORE_SYNC dump_smp_unlazy_fpu
#endif
+#define ARCH_DLINFO \
+do { \
+ NEW_AUX_ENT(AT_SYSINFO, 0xffffe000); \
+} while (0)
+
#endif
#endif
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h
index 0972df25f4c9..a5ccad80c262 100644
--- a/include/asm-i386/fixmap.h
+++ b/include/asm-i386/fixmap.h
@@ -42,8 +42,8 @@
* task switches.
*/
enum fixed_addresses {
- FIX_VSYSCALL,
FIX_HOLE,
+ FIX_VSYSCALL,
#ifdef CONFIG_X86_LOCAL_APIC
FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
#endif
diff --git a/include/asm-i386/irq.h b/include/asm-i386/irq.h
index 0a5e1dd66212..3cb90417556b 100644
--- a/include/asm-i386/irq.h
+++ b/include/asm-i386/irq.h
@@ -23,6 +23,7 @@ static __inline__ int irq_cannonicalize(int irq)
extern void disable_irq(unsigned int);
extern void disable_irq_nosync(unsigned int);
extern void enable_irq(unsigned int);
+extern void release_x86_irqs(struct task_struct *);
#ifdef CONFIG_X86_LOCAL_APIC
#define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
diff --git a/include/asm-i386/segment.h b/include/asm-i386/segment.h
index 2abdb7c5bea7..f6949fb109d9 100644
--- a/include/asm-i386/segment.h
+++ b/include/asm-i386/segment.h
@@ -65,9 +65,9 @@
#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11)
/*
- * The GDT has 23 entries but we pad it to cacheline boundary:
+ * The GDT has 25 entries but we pad it to cacheline boundary:
*/
-#define GDT_ENTRIES 24
+#define GDT_ENTRIES 28
#define GDT_SIZE (GDT_ENTRIES * 8)
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h
index c7562734f0ac..8b014e109f20 100644
--- a/include/scsi/scsi.h
+++ b/include/scsi/scsi.h
@@ -96,6 +96,10 @@ extern const unsigned char scsi_command_size[8];
#define READ_ELEMENT_STATUS 0xb8
#define SEND_VOLUME_TAG 0xb6
#define WRITE_LONG_2 0xea
+#define READ_16 0x88
+#define WRITE_16 0x8a
+#define SERVICE_ACTION_IN 0x9e
+
/*
* Status codes
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index fd550b424a7c..fd6c403d0828 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -199,6 +199,10 @@
#define AC97_ALC650_MULTICH 0x6a
#define AC97_ALC650_CLOCK 0x7a
+/* specific - Yamaha YMF753 */
+#define AC97_YMF753_DIT_CTRL2 0x66 /* DIT Control 2 */
+#define AC97_YMF753_3D_MODE_SEL 0x68 /* 3D Mode Select */
+
/* ac97->scaps */
#define AC97_SCAP_AUDIO (1<<0) /* audio AC'97 codec */
#define AC97_SCAP_MODEM (1<<1) /* modem AC'97 codec */
diff --git a/include/sound/control.h b/include/sound/control.h
index ec0f2f6ccf65..139028a72a65 100644
--- a/include/sound/control.h
+++ b/include/sound/control.h
@@ -111,6 +111,8 @@ snd_kcontrol_t *snd_ctl_find_numid(snd_card_t * card, unsigned int numid);
snd_kcontrol_t *snd_ctl_find_id(snd_card_t * card, snd_ctl_elem_id_t *id);
int snd_ctl_register(snd_card_t *card);
+int snd_ctl_disconnect(snd_card_t *card);
+int snd_ctl_can_unregister(snd_card_t *card);
int snd_ctl_unregister(snd_card_t *card);
int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn);
int snd_ctl_unregister_ioctl(snd_kctl_ioctl_func_t fcn);
diff --git a/include/sound/core.h b/include/sound/core.h
index 4ea5f5ff8849..9d705453eca1 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -24,6 +24,7 @@
#include <linux/sched.h> /* wake_up() */
#include <asm/semaphore.h> /* struct semaphore */
+#include <linux/rwsem.h> /* struct rw_semaphore */
/* Typedef's */
typedef struct timeval snd_timestamp_t;
@@ -58,8 +59,9 @@ typedef enum {
} snd_device_type_t;
typedef enum {
- SNDRV_DEV_BUILD = 0,
- SNDRV_DEV_REGISTERED = 1
+ SNDRV_DEV_BUILD,
+ SNDRV_DEV_REGISTERED,
+ SNDRV_DEV_DISCONNECTED
} snd_device_state_t;
typedef enum {
@@ -73,11 +75,13 @@ typedef struct _snd_device snd_device_t;
typedef int (snd_dev_free_t)(snd_device_t *device);
typedef int (snd_dev_register_t)(snd_device_t *device);
+typedef int (snd_dev_disconnect_t)(snd_device_t *device);
typedef int (snd_dev_unregister_t)(snd_device_t *device);
typedef struct {
snd_dev_free_t *dev_free;
snd_dev_register_t *dev_register;
+ snd_dev_disconnect_t *dev_disconnect;
snd_dev_unregister_t *dev_unregister;
} snd_device_ops_t;
@@ -109,6 +113,15 @@ typedef struct _snd_hwdep snd_hwdep_t;
typedef struct _snd_oss_mixer snd_mixer_oss_t;
#endif
+/* monitor files for graceful shutdown (hotplug) */
+
+struct snd_monitor_file {
+ struct file *file;
+ struct snd_monitor_file *next;
+};
+
+struct snd_shutdown_f_ops; /* define it later */
+
/* main structure for soundcard */
struct _snd_card {
@@ -129,8 +142,8 @@ struct _snd_card {
struct list_head devices; /* devices */
unsigned int last_numid; /* last used numeric ID */
- rwlock_t control_rwlock; /* control list lock */
- rwlock_t control_owner_lock; /* control list lock */
+ struct rw_semaphore controls_rwsem; /* controls list lock */
+ rwlock_t ctl_files_rwlock; /* ctl_files list lock */
int controls_count; /* count of all controls */
struct list_head controls; /* all controls for this card */
struct list_head ctl_files; /* active control files */
@@ -139,6 +152,12 @@ struct _snd_card {
snd_info_entry_t *proc_id; /* the card id */
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 */
+ spinlock_t files_lock; /* lock the files for this card */
+ int shutdown; /* this card is going down */
+ wait_queue_head_t shutdown_sleep;
+
#ifdef CONFIG_PM
int (*set_power_state) (snd_card_t *card, unsigned int state);
void *power_state_private_data;
@@ -285,19 +304,27 @@ int copy_from_user_toio(unsigned long dst, const void *src, size_t count);
/* init.c */
extern int snd_cards_count;
+extern unsigned int snd_cards_lock;
extern snd_card_t *snd_cards[SNDRV_CARDS];
extern rwlock_t snd_card_rwlock;
#if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
-extern int (*snd_mixer_oss_notify_callback)(snd_card_t *card, int free_flag);
+#define SND_MIXER_OSS_NOTIFY_REGISTER 0
+#define SND_MIXER_OSS_NOTIFY_DISCONNECT 1
+#define SND_MIXER_OSS_NOTIFY_FREE 2
+extern int (*snd_mixer_oss_notify_callback)(snd_card_t *card, int cmd);
#endif
snd_card_t *snd_card_new(int idx, const char *id,
struct module *module, int extra_size);
+int snd_card_disconnect(snd_card_t *card);
int snd_card_free(snd_card_t *card);
+int snd_card_free_in_thread(snd_card_t *card);
int snd_card_register(snd_card_t *card);
int snd_card_info_init(void);
int snd_card_info_done(void);
int snd_component_add(snd_card_t *card, const char *component);
+int snd_card_file_add(snd_card_t *card, struct file *file);
+int snd_card_file_remove(snd_card_t *card, struct file *file);
/* device.c */
@@ -305,6 +332,8 @@ int snd_device_new(snd_card_t *card, snd_device_type_t type,
void *device_data, snd_device_ops_t *ops);
int snd_device_register(snd_card_t *card, void *device_data);
int snd_device_register_all(snd_card_t *card);
+int snd_device_disconnect(snd_card_t *card, void *device_data);
+int snd_device_disconnect_all(snd_card_t *card);
int snd_device_free(snd_card_t *card, void *device_data);
int snd_device_free_all(snd_card_t *card, snd_device_cmd_t cmd);
diff --git a/include/sound/cs46xx.h b/include/sound/cs46xx.h
index 09ae6c772aa0..dc849a634aec 100644
--- a/include/sound/cs46xx.h
+++ b/include/sound/cs46xx.h
@@ -1663,6 +1663,8 @@ typedef struct _snd_cs46xx_pcm_t {
snd_pcm_substream_t *substream;
pcm_channel_descriptor_t * pcm_channel;
+
+ int pcm_channel_id; /* Fron Rear, Center Lfe ... */
} cs46xx_pcm_t;
typedef struct {
diff --git a/include/sound/cs46xx_dsp_spos.h b/include/sound/cs46xx_dsp_spos.h
index 8366aefaff6b..1522a61ba85c 100644
--- a/include/sound/cs46xx_dsp_spos.h
+++ b/include/sound/cs46xx_dsp_spos.h
@@ -63,7 +63,6 @@
#define DSP_SPDIF_STATUS_OUTPUT_ENABLED 1
#define DSP_SPDIF_STATUS_PLAYBACK_OPEN 2
#define DSP_SPDIF_STATUS_HW_ENABLED 4
-#define DSP_SPDIF_STATUS_AC3_MODE 8
struct _dsp_module_desc_t;
@@ -141,7 +140,6 @@ typedef struct _pcm_channel_descriptor_t {
dsp_scb_descriptor_t * pcm_reader_scb;
dsp_scb_descriptor_t * src_scb;
dsp_scb_descriptor_t * mixer_scb;
- int pcm_channel_id;
void * private_data;
} pcm_channel_descriptor_t;
@@ -196,6 +194,10 @@ typedef struct _dsp_spos_instance_t {
int spdif_status_in;
u16 spdif_input_volume_right;
u16 spdif_input_volume_left;
+ /* spdif channel status,
+ left right and user validity bits */
+ int spdif_csuv_default;
+ int spdif_csuv_stream;
/* SPDIF input sample rate converter */
dsp_scb_descriptor_t * spdif_in_src;
diff --git a/include/sound/initval.h b/include/sound/initval.h
index 7f47b8c74f92..2cced5c7eb06 100644
--- a/include/sound/initval.h
+++ b/include/sound/initval.h
@@ -155,12 +155,15 @@ static int __init get_id(char **str, char **dst)
return 0;
for (s = *str; isalpha(*s) || isdigit(*s) || *s == '_'; s++);
if (s != *str) {
- *dst = (char *)kmalloc(s - *str, GFP_KERNEL);
- if ((d = *dst) != NULL) {
- s = *str;
- while (isalpha(*s) || isdigit(*s) || *s == '_')
- *d++ = *s++;
+ *dst = (char *)kmalloc((s - *str) + 1, GFP_KERNEL);
+ s = *str; d = *dst;
+ while (isalpha(*s) || isdigit(*s) || *s == '_') {
+ if (d != NULL)
+ *d++ = *s;
+ s++;
}
+ if (d != NULL)
+ *d = '\0';
}
*str = s;
if (*s == ',') {
diff --git a/include/sound/mixer_oss.h b/include/sound/mixer_oss.h
index 458d53cbd583..d88e1621097d 100644
--- a/include/sound/mixer_oss.h
+++ b/include/sound/mixer_oss.h
@@ -61,6 +61,7 @@ struct _snd_oss_mixer {
void (*private_free_recsrc)(snd_mixer_oss_t *mixer);
struct semaphore reg_mutex;
snd_info_entry_t *proc_entry;
+ int oss_dev_alloc;
/* --- */
int oss_recsrc;
};
diff --git a/include/sound/mpu401.h b/include/sound/mpu401.h
index 41502e177c0e..5ebec02cccd5 100644
--- a/include/sound/mpu401.h
+++ b/include/sound/mpu401.h
@@ -41,6 +41,7 @@
#define MPU401_HW_CMIPCI 15 /* CMIPCI MPU-401 UART */
#define MPU401_HW_ALS4000 16 /* Avance Logic ALS4000 */
#define MPU401_HW_INTEL8X0 17 /* Intel8x0 driver */
+#define MPU401_HW_PC98II 18 /* Roland PC98II */
#define MPU401_MODE_BIT_INPUT 0
#define MPU401_MODE_BIT_OUTPUT 1
@@ -64,6 +65,7 @@ struct _snd_mpu401 {
unsigned short hardware; /* MPU401_HW_XXXX */
unsigned long port; /* base port of MPU-401 chip */
+ unsigned long cport; /* port + 1 (usually) */
struct resource *res; /* port resource */
int irq; /* IRQ number of MPU-401 chip (-1 = poll) */
int irq_flags;
@@ -89,8 +91,8 @@ struct _snd_mpu401 {
/* I/O ports */
-#define MPU401C(mpu) ((mpu)->port + 1)
-#define MPU401D(mpu) ((mpu)->port + 0)
+#define MPU401C(mpu) (mpu)->cport
+#define MPU401D(mpu) (mpu)->port
/*
diff --git a/include/sound/opl3.h b/include/sound/opl3.h
index a447f92a6957..f516550dc9a1 100644
--- a/include/sound/opl3.h
+++ b/include/sound/opl3.h
@@ -229,6 +229,7 @@
#define OPL3_HW_OPL3_CS 0x0302 /* CS4232/CS4236+ */
#define OPL3_HW_OPL3_FM801 0x0303 /* FM801 */
#define OPL3_HW_OPL3_CS4281 0x0304 /* CS4281 */
+#define OPL3_HW_OPL3_PC98 0x0305 /* PC9800 */
#define OPL3_HW_OPL4 0x0400
#define OPL3_HW_MASK 0xff00
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index c7f41630c253..d97f7e751d9a 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -443,8 +443,9 @@ struct _snd_pcm {
};
typedef struct _snd_pcm_notify {
- int (*n_register) (unsigned short minor, snd_pcm_t * pcm);
- int (*n_unregister) (unsigned short minor, snd_pcm_t * pcm);
+ int (*n_register) (snd_pcm_t * pcm);
+ int (*n_disconnect) (snd_pcm_t * pcm);
+ int (*n_unregister) (snd_pcm_t * pcm);
struct list_head list;
} snd_pcm_notify_t;
diff --git a/include/sound/pcm_oss.h b/include/sound/pcm_oss.h
index 1c3d8d138518..d6274a5a1c76 100644
--- a/include/sound/pcm_oss.h
+++ b/include/sound/pcm_oss.h
@@ -77,6 +77,7 @@ typedef struct _snd_pcm_oss_stream {
typedef struct _snd_pcm_oss {
int reg;
+ unsigned int reg_mask;
} snd_pcm_oss_t;
#endif /* __SOUND_PCM_OSS_H */
diff --git a/include/sound/sb.h b/include/sound/sb.h
index ec4f93c1b350..53f243b7bf64 100644
--- a/include/sound/sb.h
+++ b/include/sound/sb.h
@@ -225,7 +225,6 @@ typedef struct _snd_sb sb_t;
#define SB_DT019X_MIC_DEV 0x6a
#define SB_DT019X_SPKR_DEV 0x6a
#define SB_DT019X_LINE_DEV 0x6e
-#define SB_DT019X_OUTPUT_SW1 0x3c
#define SB_DT019X_OUTPUT_SW2 0x4c
#define SB_DT019X_CAPTURE_SW 0x6c
@@ -235,6 +234,14 @@ typedef struct _snd_sb sb_t;
#define SB_DT019X_CAP_SYNTH 0x07
#define SB_DT019X_CAP_MAIN 0x07
+#define SB_ALS4000_MONO_IO_CTRL 0x4b
+#define SB_ALS4000_MIC_IN_GAIN 0x4d
+#define SB_ALS4000_FMDAC 0x4f
+#define SB_ALS4000_3D_SND_FX 0x50
+#define SB_ALS4000_3D_TIME_DELAY 0x51
+#define SB_ALS4000_3D_AUTO_MUTE 0x52
+#define SB_ALS4000_QSOUND 0xdb
+
/* IRQ setting bitmap */
#define SB_IRQSETUP_IRQ9 0x01
#define SB_IRQSETUP_IRQ5 0x02
diff --git a/include/sound/trident.h b/include/sound/trident.h
index 56bf20a14a03..bf4ed45f1a63 100644
--- a/include/sound/trident.h
+++ b/include/sound/trident.h
@@ -101,10 +101,18 @@
/* Global registers */
enum global_control_bits {
- CHANNEL_IDX = 0x0000003f, OVERRUN_IE = 0x00000400,
- UNDERRUN_IE = 0x00000800, ENDLP_IE = 0x00001000,
- MIDLP_IE = 0x00002000, ETOG_IE = 0x00004000,
- EDROP_IE = 0x00008000, BANK_B_EN = 0x00010000
+ CHANNEL_IDX = 0x0000003f,
+ OVERRUN_IE = 0x00000400, /* interrupt enable: capture overrun */
+ UNDERRUN_IE = 0x00000800, /* interrupt enable: playback underrun */
+ ENDLP_IE = 0x00001000, /* interrupt enable: end of buffer */
+ MIDLP_IE = 0x00002000, /* interrupt enable: middle buffer */
+ ETOG_IE = 0x00004000, /* interrupt enable: envelope toggling */
+ EDROP_IE = 0x00008000, /* interrupt enable: envelope drop */
+ BANK_B_EN = 0x00010000, /* SiS: enable bank B (64 channels) */
+ PCMIN_B_MIX = 0x00020000, /* SiS: PCM IN B mixing enable */
+ I2S_OUT_ASSIGN = 0x00040000, /* SiS: I2S Out contains surround PCM */
+ SPDIF_OUT_ASSIGN= 0x00080000, /* SiS: 0=S/PDIF L/R | 1=PCM Out FIFO */
+ MAIN_OUT_ASSIGN = 0x00100000, /* SiS: 0=PCM Out FIFO | 1=MMC Out buffer */
};
enum miscint_bits {
@@ -423,6 +431,8 @@ struct _snd_trident {
int ChanPCM; /* max number of PCM channels */
int ChanPCMcnt; /* actual number of PCM channels */
+ int ac97_detect; /* 1 = AC97 in detection phase */
+
struct _snd_4dwave synth; /* synth specific variables */
spinlock_t event_lock;
diff --git a/include/sound/version.h b/include/sound/version.h
index acaac7181bbe..a0166739358d 100644
--- a/include/sound/version.h
+++ b/include/sound/version.h
@@ -1,3 +1,3 @@
/* include/version.h. Generated automatically by configure. */
-#define CONFIG_SND_VERSION "0.9.0rc5"
-#define CONFIG_SND_DATE " (Sun Nov 10 19:48:18 2002 UTC)"
+#define CONFIG_SND_VERSION "0.9.0rc6"
+#define CONFIG_SND_DATE " (Tue Dec 17 19:01:13 2002 UTC)"