projects/linux·commit d351cf46

Merge branch 'topic/misc' into for-linus

d351cf46 · Takashi Iwai <[email protected]> · 2011-03-18 07:39:08 +01:00

Commit
d351cf4603edb2a5bfa9a48d06c425511c63f2a3
Parents
433e8327 · 4a122c10

Merge commit. Changes below are compared with the first parent: 433e8327.

Changes

91 files changed · +9928 −6530

FileStatusAddDelContent
include/sound/ac97_codec.hmodified+5−0View file
include/sound/hdspm.hmodified+137−42View file
include/sound/mixer_oss.hmodified+3−0View file
include/sound/pcm.hmodified+46−45View file
include/sound/version.hmodified+1−1View file
sound/core/control.cmodified+10−12View file
sound/core/device.cmodified+4−3View file
sound/core/memalloc.cmodified+2−1View file
sound/core/oss/linear.cmodified+4−3View file
sound/core/oss/mixer_oss.cmodified+6−4View file
sound/core/oss/mulaw.cmodified+1−1View file
sound/core/oss/pcm_oss.cmodified+28−23View file
sound/core/oss/pcm_plugin.cmodified+22−18View file
sound/core/oss/pcm_plugin.hmodified+6−5View file
sound/core/oss/route.cmodified+3−3View file
sound/core/pcm.cmodified+5−5View file
sound/core/pcm_misc.cmodified+19−16View file
sound/core/pcm_native.cmodified+1−1View file
sound/core/seq/seq_clientmgr.cmodified+2−5View file
sound/core/seq/seq_memory.cmodified+3−3View file
sound/core/seq/seq_memory.hmodified+4−0View file
sound/core/seq/seq_ports.cmodified+1−1View file
sound/core/timer.cmodified+3−5View file
sound/core/vmaster.cmodified+1−1View file
sound/drivers/aloop.cmodified+9−10View file
sound/oss/soundcard.cmodified+20−36View file
sound/pci/Kconfigmodified+9−3View file
sound/pci/ac97/ac97_codec.cmodified+56−34View file
sound/pci/ac97/ac97_patch.cmodified+52−0View file
sound/pci/asihpi/asihpi.cmodified+386−388View file
sound/pci/asihpi/hpi.hmodified+448−766View file
sound/pci/asihpi/hpi6000.cmodified+137−162View file
sound/pci/asihpi/hpi6205.cmodified+250−353View file
sound/pci/asihpi/hpi6205.hmodified+2−5View file
sound/pci/asihpi/hpi_internal.hmodified+530−588View file
sound/pci/asihpi/hpicmn.cmodified+265−215View file
sound/pci/asihpi/hpicmn.hmodified+11−13View file
sound/pci/asihpi/hpidebug.cmodified+5−152View file
sound/pci/asihpi/hpidebug.hmodified+20−303View file
sound/pci/asihpi/hpidspcd.cmodified+20−17View file
sound/pci/asihpi/hpidspcd.hmodified+1−1View file
sound/pci/asihpi/hpifunc.cmodified+725−1773View file
sound/pci/asihpi/hpimsginit.cmodified+2−16View file
sound/pci/asihpi/hpimsginit.hmodified+9−3View file
sound/pci/asihpi/hpimsgx.cmodified+51−152View file
sound/pci/asihpi/hpioctl.cmodified+46−44View file
sound/pci/asihpi/hpios.hmodified+4−6View file
sound/pci/atiixp.cmodified+1−1View file
sound/pci/atiixp_modem.cmodified+1−1View file
sound/pci/au88x0/au88x0_eq.cmodified+2−1View file
sound/pci/azt3328.cmodified+402−48View file
sound/pci/ctxfi/ctatc.cmodified+1−1View file
sound/pci/ctxfi/ctdaio.cmodified+2−0View file
sound/pci/ctxfi/cthw20k2.cmodified+18−10View file
sound/pci/ctxfi/ctmixer.cmodified+5−14View file
sound/pci/ctxfi/ctvmem.cmodified+1−2View file
sound/pci/emu10k1/emu10k1_main.cmodified+1−1View file
sound/pci/hda/patch_realtek.cmodified+1−1View file
sound/pci/intel8x0m.cmodified+54−53View file
sound/pci/rme9652/hdspm.cmodified+3352−1114View file
sound/ppc/pmac.cmodified+5−1View file
sound/sound_core.cmodified+3−0View file
sound/usb/6fire/Makefileadded+3−0View file
sound/usb/6fire/chip.cadded+232−0View file
sound/usb/6fire/chip.hadded+32−0View file
sound/usb/6fire/comm.cadded+176−0View file
sound/usb/6fire/comm.hadded+44−0View file
sound/usb/6fire/common.hadded+30−0View file
sound/usb/6fire/control.cadded+275−0View file
sound/usb/6fire/control.hadded+37−0View file
sound/usb/6fire/firmware.cadded+426−0View file
sound/usb/6fire/firmware.hadded+27−0View file
sound/usb/6fire/midi.cadded+203−0View file
sound/usb/6fire/midi.hadded+46−0View file
sound/usb/6fire/pcm.cadded+688−0View file
sound/usb/6fire/pcm.hadded+76−0View file
sound/usb/Kconfigmodified+17−0View file
sound/usb/Makefilemodified+1−1View file
sound/usb/caiaq/audio.cmodified+1−0View file
sound/usb/caiaq/device.cmodified+6−0View file
sound/usb/caiaq/device.hmodified+1−0View file
sound/usb/card.cmodified+55−9View file
sound/usb/midi.cmodified+8−0View file
sound/usb/mixer.cmodified+61−4View file
sound/usb/mixer.hmodified+2−0View file
sound/usb/mixer_quirks.cmodified+161−13View file
sound/usb/pcm.cmodified+15−5View file
sound/usb/power.hadded+17−0View file
sound/usb/quirks-table.hmodified+14−0View file
sound/usb/quirks.cmodified+45−11View file
sound/usb/usbaudio.hmodified+5−1View file

Only the first 600 diff lines are shown. Download the complete patch.

include/sound/ac97_codec.h

View file
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index b602f47..f1dcefe 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -96,6 +96,10 @@
#define AC97_FUNC_INFO 0x68 /* Function Information */
#define AC97_SENSE_INFO 0x6a /* Sense Details */
+/* volume controls */
+#define AC97_MUTE_MASK_MONO 0x8000
+#define AC97_MUTE_MASK_STEREO 0x8080
+
/* slot allocation */
#define AC97_SLOT_TAG 0
#define AC97_SLOT_CMD_ADDR 1
@@ -138,6 +142,7 @@
#define AC97_BC_18BIT_ADC 0x0100 /* 18-bit ADC resolution */
#define AC97_BC_20BIT_ADC 0x0200 /* 20-bit ADC resolution */
#define AC97_BC_ADC_MASK 0x0300
+#define AC97_BC_3D_TECH_ID_MASK 0x7c00 /* Per-vendor ID of 3D enhancement */
/* general purpose */
#define AC97_GP_DRSS_MASK 0x0c00 /* double rate slot select */

include/sound/hdspm.h

View file
diff --git a/include/sound/hdspm.h b/include/sound/hdspm.h
index 81990b2..1774ff5 100644
--- a/include/sound/hdspm.h
+++ b/include/sound/hdspm.h
@@ -3,8 +3,8 @@
/*
* Copyright (C) 2003 Winfried Ritsch (IEM)
* based on hdsp.h from Thomas Charbonnel ([email protected])
- *
- *
+ *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -23,50 +23,41 @@
/* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
#define HDSPM_MAX_CHANNELS 64
-/* -------------------- IOCTL Peak/RMS Meters -------------------- */
-
-/* peam rms level structure like we get from hardware
-
- maybe in future we can memory map it so I just copy it
- to user on ioctl call now an dont change anything
- rms are made out of low and high values
- where (long) ????_rms = (????_rms_l >> 8) + ((????_rms_h & 0xFFFFFF00)<<24)
- (i asume so from the code)
-*/
-
-struct hdspm_peak_rms {
-
- unsigned int level_offset[1024];
+enum hdspm_io_type {
+ MADI,
+ MADIface,
+ AIO,
+ AES32,
+ RayDAT
+};
- unsigned int input_peak[64];
- unsigned int playback_peak[64];
- unsigned int output_peak[64];
- unsigned int xxx_peak[64]; /* not used */
+enum hdspm_speed {
+ ss,
+ ds,
+ qs
+};
- unsigned int reserved[256]; /* not used */
+/* -------------------- IOCTL Peak/RMS Meters -------------------- */
- unsigned int input_rms_l[64];
- unsigned int playback_rms_l[64];
- unsigned int output_rms_l[64];
- unsigned int xxx_rms_l[64]; /* not used */
+struct hdspm_peak_rms {
+ uint32_t input_peaks[64];
+ uint32_t playback_peaks[64];
+ uint32_t output_peaks[64];
- unsigned int input_rms_h[64];
- unsigned int playback_rms_h[64];
- unsigned int output_rms_h[64];
- unsigned int xxx_rms_h[64]; /* not used */
-};
+ uint64_t input_rms[64];
+ uint64_t playback_rms[64];
+ uint64_t output_rms[64];
-struct hdspm_peak_rms_ioctl {
- struct hdspm_peak_rms *peak;
+ uint8_t speed; /* enum {ss, ds, qs} */
+ int status2;
};
-/* use indirect access due to the limit of ioctl bit size */
#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS \
- _IOR('H', 0x40, struct hdspm_peak_rms_ioctl)
+ _IOR('H', 0x42, struct hdspm_peak_rms)
/* ------------ CONFIG block IOCTL ---------------------- */
-struct hdspm_config_info {
+struct hdspm_config {
unsigned char pref_sync_ref;
unsigned char wordclock_sync_check;
unsigned char madi_sync_check;
@@ -80,18 +71,121 @@ struct hdspm_config_info {
unsigned int analog_out;
};
-#define SNDRV_HDSPM_IOCTL_GET_CONFIG_INFO \
- _IOR('H', 0x41, struct hdspm_config_info)
+#define SNDRV_HDSPM_IOCTL_GET_CONFIG \
+ _IOR('H', 0x41, struct hdspm_config)
+
+/**
+ * If there's a TCO (TimeCode Option) board installed,
+ * there are further options and status data available.
+ * The hdspm_ltc structure contains the current SMPTE
+ * timecode and some status information and can be
+ * obtained via SNDRV_HDSPM_IOCTL_GET_LTC or in the
+ * hdspm_status struct.
+ **/
+
+enum hdspm_ltc_format {
+ format_invalid,
+ fps_24,
+ fps_25,
+ fps_2997,
+ fps_30
+};
+
+enum hdspm_ltc_frame {
+ frame_invalid,
+ drop_frame,
+ full_frame
+};
+
+enum hdspm_ltc_input_format {
+ ntsc,
+ pal,
+ no_video
+};
+
+struct hdspm_ltc {
+ unsigned int ltc;
+ enum hdspm_ltc_format format;
+ enum hdspm_ltc_frame frame;
+ enum hdspm_ltc_input_format input_format;
+};
+
+#define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_mixer_ioctl)
+
+/**
+ * The status data reflects the device's current state
+ * as determined by the card's configuration and
+ * connection status.
+ **/
+
+enum hdspm_sync {
+ hdspm_sync_no_lock = 0,
+ hdspm_sync_lock = 1,
+ hdspm_sync_sync = 2
+};
-/* get Soundcard Version */
+enum hdspm_madi_input {
+ hdspm_input_optical = 0,
+ hdspm_input_coax = 1
+};
+
+enum hdspm_madi_channel_format {
+ hdspm_format_ch_64 = 0,
+ hdspm_format_ch_56 = 1
+};
+
+enum hdspm_madi_frame_format {
+ hdspm_frame_48 = 0,
+ hdspm_frame_96 = 1
+};
+
+enum hdspm_syncsource {
+ syncsource_wc = 0,
+ syncsource_madi = 1,
+ syncsource_tco = 2,
+ syncsource_sync = 3,
+ syncsource_none = 4
+};
+
+struct hdspm_status {
+ uint8_t card_type; /* enum hdspm_io_type */
+ enum hdspm_syncsource autosync_source;
+
+ uint64_t card_clock;
+ uint32_t master_period;
+
+ union {
+ struct {
+ uint8_t sync_wc; /* enum hdspm_sync */
+ uint8_t sync_madi; /* enum hdspm_sync */
+ uint8_t sync_tco; /* enum hdspm_sync */
+ uint8_t sync_in; /* enum hdspm_sync */
+ uint8_t madi_input; /* enum hdspm_madi_input */
+ uint8_t channel_format; /* enum hdspm_madi_channel_format */
+ uint8_t frame_format; /* enum hdspm_madi_frame_format */
+ } madi;
+ } card_specific;
+};
+
+#define SNDRV_HDSPM_IOCTL_GET_STATUS \
+ _IOR('H', 0x47, struct hdspm_status)
+
+/**
+ * Get information about the card and its add-ons.
+ **/
+
+#define HDSPM_ADDON_TCO 1
struct hdspm_version {
+ uint8_t card_type; /* enum hdspm_io_type */
+ char cardname[20];
+ unsigned int serial;
unsigned short firmware_rev;
+ int addons;
};
-#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdspm_version)
-
+#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
/* ------------- get Matrix Mixer IOCTL --------------- */
@@ -103,7 +197,7 @@ struct hdspm_version {
/* equivalent to hardware definition, maybe for future feature of mmap of
* them
*/
-/* each of 64 outputs has 64 infader and 64 outfader:
+/* each of 64 outputs has 64 infader and 64 outfader:
Ins to Outs mixer[out].in[in], Outstreams to Outs mixer[out].pb[pb] */
#define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
@@ -131,4 +225,5 @@ typedef struct hdspm_version hdspm_version_t;
typedef struct hdspm_channelfader snd_hdspm_channelfader_t;
typedef struct hdspm_mixer hdspm_mixer_t;
-#endif /* __SOUND_HDSPM_H */
+
+#endif

include/sound/mixer_oss.h

View file
diff --git a/include/sound/mixer_oss.h b/include/sound/mixer_oss.h
index 51fbcb4..13cb0b4 100644
--- a/include/sound/mixer_oss.h
+++ b/include/sound/mixer_oss.h
@@ -73,6 +73,9 @@ struct snd_mixer_oss_file {
struct snd_mixer_oss *mixer;
};
+int snd_mixer_oss_ioctl_card(struct snd_card *card,
+ unsigned int cmd, unsigned long arg);
+
#endif /* CONFIG_SND_MIXER_OSS */
#endif /* __SOUND_MIXER_OSS_H */

include/sound/pcm.h

View file
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index e731f8d..430a9cc 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -136,48 +136,49 @@ struct snd_pcm_ops {
SNDRV_PCM_RATE_88200|SNDRV_PCM_RATE_96000)
#define SNDRV_PCM_RATE_8000_192000 (SNDRV_PCM_RATE_8000_96000|SNDRV_PCM_RATE_176400|\
SNDRV_PCM_RATE_192000)
-#define SNDRV_PCM_FMTBIT_S8 (1ULL << SNDRV_PCM_FORMAT_S8)
-#define SNDRV_PCM_FMTBIT_U8 (1ULL << SNDRV_PCM_FORMAT_U8)
-#define SNDRV_PCM_FMTBIT_S16_LE (1ULL << SNDRV_PCM_FORMAT_S16_LE)
-#define SNDRV_PCM_FMTBIT_S16_BE (1ULL << SNDRV_PCM_FORMAT_S16_BE)
-#define SNDRV_PCM_FMTBIT_U16_LE (1ULL << SNDRV_PCM_FORMAT_U16_LE)
-#define SNDRV_PCM_FMTBIT_U16_BE (1ULL << SNDRV_PCM_FORMAT_U16_BE)
-#define SNDRV_PCM_FMTBIT_S24_LE (1ULL << SNDRV_PCM_FORMAT_S24_LE)
-#define SNDRV_PCM_FMTBIT_S24_BE (1ULL << SNDRV_PCM_FORMAT_S24_BE)
-#define SNDRV_PCM_FMTBIT_U24_LE (1ULL << SNDRV_PCM_FORMAT_U24_LE)
-#define SNDRV_PCM_FMTBIT_U24_BE (1ULL << SNDRV_PCM_FORMAT_U24_BE)
-#define SNDRV_PCM_FMTBIT_S32_LE (1ULL << SNDRV_PCM_FORMAT_S32_LE)
-#define SNDRV_PCM_FMTBIT_S32_BE (1ULL << SNDRV_PCM_FORMAT_S32_BE)
-#define SNDRV_PCM_FMTBIT_U32_LE (1ULL << SNDRV_PCM_FORMAT_U32_LE)
-#define SNDRV_PCM_FMTBIT_U32_BE (1ULL << SNDRV_PCM_FORMAT_U32_BE)
-#define SNDRV_PCM_FMTBIT_FLOAT_LE (1ULL << SNDRV_PCM_FORMAT_FLOAT_LE)
-#define SNDRV_PCM_FMTBIT_FLOAT_BE (1ULL << SNDRV_PCM_FORMAT_FLOAT_BE)
-#define SNDRV_PCM_FMTBIT_FLOAT64_LE (1ULL << SNDRV_PCM_FORMAT_FLOAT64_LE)
-#define SNDRV_PCM_FMTBIT_FLOAT64_BE (1ULL << SNDRV_PCM_FORMAT_FLOAT64_BE)
-#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE (1ULL << SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE)
-#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE (1ULL << SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE)
-#define SNDRV_PCM_FMTBIT_MU_LAW (1ULL << SNDRV_PCM_FORMAT_MU_LAW)
-#define SNDRV_PCM_FMTBIT_A_LAW (1ULL << SNDRV_PCM_FORMAT_A_LAW)
-#define SNDRV_PCM_FMTBIT_IMA_ADPCM (1ULL << SNDRV_PCM_FORMAT_IMA_ADPCM)
-#define SNDRV_PCM_FMTBIT_MPEG (1ULL << SNDRV_PCM_FORMAT_MPEG)
-#define SNDRV_PCM_FMTBIT_GSM (1ULL << SNDRV_PCM_FORMAT_GSM)
-#define SNDRV_PCM_FMTBIT_SPECIAL (1ULL << SNDRV_PCM_FORMAT_SPECIAL)
-#define SNDRV_PCM_FMTBIT_S24_3LE (1ULL << SNDRV_PCM_FORMAT_S24_3LE)
-#define SNDRV_PCM_FMTBIT_U24_3LE (1ULL << SNDRV_PCM_FORMAT_U24_3LE)
-#define SNDRV_PCM_FMTBIT_S24_3BE (1ULL << SNDRV_PCM_FORMAT_S24_3BE)
-#define SNDRV_PCM_FMTBIT_U24_3BE (1ULL << SNDRV_PCM_FORMAT_U24_3BE)
-#define SNDRV_PCM_FMTBIT_S20_3LE (1ULL << SNDRV_PCM_FORMAT_S20_3LE)
-#define SNDRV_PCM_FMTBIT_U20_3LE (1ULL << SNDRV_PCM_FORMAT_U20_3LE)
-#define SNDRV_PCM_FMTBIT_S20_3BE (1ULL << SNDRV_PCM_FORMAT_S20_3BE)
-#define SNDRV_PCM_FMTBIT_U20_3BE (1ULL << SNDRV_PCM_FORMAT_U20_3BE)
-#define SNDRV_PCM_FMTBIT_S18_3LE (1ULL << SNDRV_PCM_FORMAT_S18_3LE)
-#define SNDRV_PCM_FMTBIT_U18_3LE (1ULL << SNDRV_PCM_FORMAT_U18_3LE)
-#define SNDRV_PCM_FMTBIT_S18_3BE (1ULL << SNDRV_PCM_FORMAT_S18_3BE)
-#define SNDRV_PCM_FMTBIT_U18_3BE (1ULL << SNDRV_PCM_FORMAT_U18_3BE)
-#define SNDRV_PCM_FMTBIT_G723_24 (1ULL << SNDRV_PCM_FORMAT_G723_24)
-#define SNDRV_PCM_FMTBIT_G723_24_1B (1ULL << SNDRV_PCM_FORMAT_G723_24_1B)
-#define SNDRV_PCM_FMTBIT_G723_40 (1ULL << SNDRV_PCM_FORMAT_G723_40)
-#define SNDRV_PCM_FMTBIT_G723_40_1B (1ULL << SNDRV_PCM_FORMAT_G723_40_1B)
+#define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (__force int)SNDRV_PCM_FORMAT_##fmt)
+#define SNDRV_PCM_FMTBIT_S8 _SNDRV_PCM_FMTBIT(S8)
+#define SNDRV_PCM_FMTBIT_U8 _SNDRV_PCM_FMTBIT(U8)
+#define SNDRV_PCM_FMTBIT_S16_LE _SNDRV_PCM_FMTBIT(S16_LE)
+#define SNDRV_PCM_FMTBIT_S16_BE _SNDRV_PCM_FMTBIT(S16_BE)
+#define SNDRV_PCM_FMTBIT_U16_LE _SNDRV_PCM_FMTBIT(U16_LE)
+#define SNDRV_PCM_FMTBIT_U16_BE _SNDRV_PCM_FMTBIT(U16_BE)
+#define SNDRV_PCM_FMTBIT_S24_LE _SNDRV_PCM_FMTBIT(S24_LE)
+#define SNDRV_PCM_FMTBIT_S24_BE _SNDRV_PCM_FMTBIT(S24_BE)
+#define SNDRV_PCM_FMTBIT_U24_LE _SNDRV_PCM_FMTBIT(U24_LE)
+#define SNDRV_PCM_FMTBIT_U24_BE _SNDRV_PCM_FMTBIT(U24_BE)
+#define SNDRV_PCM_FMTBIT_S32_LE _SNDRV_PCM_FMTBIT(S32_LE)
+#define SNDRV_PCM_FMTBIT_S32_BE _SNDRV_PCM_FMTBIT(S32_BE)
+#define SNDRV_PCM_FMTBIT_U32_LE _SNDRV_PCM_FMTBIT(U32_LE)
+#define SNDRV_PCM_FMTBIT_U32_BE _SNDRV_PCM_FMTBIT(U32_BE)
+#define SNDRV_PCM_FMTBIT_FLOAT_LE _SNDRV_PCM_FMTBIT(FLOAT_LE)
+#define SNDRV_PCM_FMTBIT_FLOAT_BE _SNDRV_PCM_FMTBIT(FLOAT_BE)
+#define SNDRV_PCM_FMTBIT_FLOAT64_LE _SNDRV_PCM_FMTBIT(FLOAT64_LE)
+#define SNDRV_PCM_FMTBIT_FLOAT64_BE _SNDRV_PCM_FMTBIT(FLOAT64_BE)
+#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_LE)
+#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_BE)
+#define SNDRV_PCM_FMTBIT_MU_LAW _SNDRV_PCM_FMTBIT(MU_LAW)
+#define SNDRV_PCM_FMTBIT_A_LAW _SNDRV_PCM_FMTBIT(A_LAW)
+#define SNDRV_PCM_FMTBIT_IMA_ADPCM _SNDRV_PCM_FMTBIT(IMA_ADPCM)
+#define SNDRV_PCM_FMTBIT_MPEG _SNDRV_PCM_FMTBIT(MPEG)
+#define SNDRV_PCM_FMTBIT_GSM _SNDRV_PCM_FMTBIT(GSM)
+#define SNDRV_PCM_FMTBIT_SPECIAL _SNDRV_PCM_FMTBIT(SPECIAL)
+#define SNDRV_PCM_FMTBIT_S24_3LE _SNDRV_PCM_FMTBIT(S24_3LE)
+#define SNDRV_PCM_FMTBIT_U24_3LE _SNDRV_PCM_FMTBIT(U24_3LE)
+#define SNDRV_PCM_FMTBIT_S24_3BE _SNDRV_PCM_FMTBIT(S24_3BE)
+#define SNDRV_PCM_FMTBIT_U24_3BE _SNDRV_PCM_FMTBIT(U24_3BE)
+#define SNDRV_PCM_FMTBIT_S20_3LE _SNDRV_PCM_FMTBIT(S20_3LE)
+#define SNDRV_PCM_FMTBIT_U20_3LE _SNDRV_PCM_FMTBIT(U20_3LE)
+#define SNDRV_PCM_FMTBIT_S20_3BE _SNDRV_PCM_FMTBIT(S20_3BE)
+#define SNDRV_PCM_FMTBIT_U20_3BE _SNDRV_PCM_FMTBIT(U20_3BE)
+#define SNDRV_PCM_FMTBIT_S18_3LE _SNDRV_PCM_FMTBIT(S18_3LE)
+#define SNDRV_PCM_FMTBIT_U18_3LE _SNDRV_PCM_FMTBIT(U18_3LE)
+#define SNDRV_PCM_FMTBIT_S18_3BE _SNDRV_PCM_FMTBIT(S18_3BE)
+#define SNDRV_PCM_FMTBIT_U18_3BE _SNDRV_PCM_FMTBIT(U18_3BE)
+#define SNDRV_PCM_FMTBIT_G723_24 _SNDRV_PCM_FMTBIT(G723_24)
+#define SNDRV_PCM_FMTBIT_G723_24_1B _SNDRV_PCM_FMTBIT(G723_24_1B)
+#define SNDRV_PCM_FMTBIT_G723_40 _SNDRV_PCM_FMTBIT(G723_40)
+#define SNDRV_PCM_FMTBIT_G723_40_1B _SNDRV_PCM_FMTBIT(G723_40_1B)
#ifdef SNDRV_LITTLE_ENDIAN
#define SNDRV_PCM_FMTBIT_S16 SNDRV_PCM_FMTBIT_S16_LE
@@ -490,7 +491,7 @@ int snd_pcm_info_user(struct snd_pcm_substream *substream,
int snd_pcm_status(struct snd_pcm_substream *substream,
struct snd_pcm_status *status);
int snd_pcm_start(struct snd_pcm_substream *substream);
-int snd_pcm_stop(struct snd_pcm_substream *substream, int status);
+int snd_pcm_stop(struct snd_pcm_substream *substream, snd_pcm_state_t status);
int snd_pcm_drain_done(struct snd_pcm_substream *substream);
#ifdef CONFIG_PM
int snd_pcm_suspend(struct snd_pcm_substream *substream);
@@ -748,8 +749,8 @@ static inline const struct snd_interval *hw_param_interval_c(const struct snd_pc
return &params->intervals[var - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL];
}
-#define params_access(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_ACCESS))
-#define params_format(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_FORMAT))
+#define params_access(p) ((__force snd_pcm_access_t)snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_ACCESS)))
+#define params_format(p) ((__force snd_pcm_format_t)snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_FORMAT)))
#define params_subformat(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_SUBFORMAT))
#define params_channels(p) hw_param_interval((p), SNDRV_PCM_HW_PARAM_CHANNELS)->min
#define params_rate(p) hw_param_interval((p), SNDRV_PCM_HW_PARAM_RATE)->min

include/sound/version.h

View file
diff --git a/include/sound/version.h b/include/sound/version.h
index bf69a5b..8fc5321 100644
--- a/include/sound/version.h
+++ b/include/sound/version.h
@@ -1,3 +1,3 @@
/* include/version.h */
-#define CONFIG_SND_VERSION "1.0.23"
+#define CONFIG_SND_VERSION "1.0.24"
#define CONFIG_SND_DATE ""

sound/core/control.c

View file
diff --git a/sound/core/control.c b/sound/core/control.c
index db51e4e..a08ad57 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -279,33 +279,31 @@ void snd_ctl_free_one(struct snd_kcontrol *kcontrol)
EXPORT_SYMBOL(snd_ctl_free_one);
-static unsigned int snd_ctl_hole_check(struct snd_card *card,
- unsigned int count)
+static bool snd_ctl_remove_numid_conflict(struct snd_card *card,
+ unsigned int count)
{
struct snd_kcontrol *kctl;
list_for_each_entry(kctl, &card->controls, list) {
- if ((kctl->id.numid <= card->last_numid &&
- kctl->id.numid + kctl->count > card->last_numid) ||
- (kctl->id.numid <= card->last_numid + count - 1 &&
- kctl->id.numid + kctl->count > card->last_numid + count - 1))
- return card->last_numid = kctl->id.numid + kctl->count - 1;
+ if (kctl->id.numid < card->last_numid + 1 + count &&
+ kctl->id.numid + kctl->count > card->last_numid + 1) {
+ card->last_numid = kctl->id.numid + kctl->count - 1;
+ return true;
+ }
}
- return card->last_numid;
+ return false;
}
static int snd_ctl_find_hole(struct snd_card *card, unsigned int count)
{
- unsigned int last_numid, iter = 100000;
+ unsigned int iter = 100000;
- last_numid = card->last_numid;
- while (last_numid != snd_ctl_hole_check(card, count)) {
+ while (snd_ctl_remove_numid_conflict(card, count)) {
if (--iter == 0) {
/* this situation is very unlikely */
snd_printk(KERN_ERR "unable to allocate new control numid\n");
return -ENOMEM;
}
- last_numid = card->last_numid;
}
return 0;
}

sound/core/device.c

View file
diff --git a/sound/core/device.c b/sound/core/device.c
index a67dfac..2d1ad4b 100644
--- a/sound/core/device.c
+++ b/sound/core/device.c
@@ -225,15 +225,16 @@ int snd_device_free_all(struct snd_card *card, snd_device_cmd_t cmd)
{
struct snd_device *dev;
int err;
- unsigned int range_low, range_high;
+ unsigned int range_low, range_high, type;
if (snd_BUG_ON(!card))
return -ENXIO;
- range_low = cmd * SNDRV_DEV_TYPE_RANGE_SIZE;
+ range_low = (__force unsigned int)cmd * SNDRV_DEV_TYPE_RANGE_SIZE;
range_high = range_low + SNDRV_DEV_TYPE_RANGE_SIZE - 1;
__again:
list_for_each_entry(dev, &card->devices, list) {
- if (dev->type >= range_low && dev->type <= range_high) {
+ type = (__force unsigned int)dev->type;
+ if (type >= range_low && type <= range_high) {
if ((err = snd_device_free(card, dev->device_data)) < 0)
return err;
goto __again;

sound/core/memalloc.c

View file
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index 9e92441..16bd9c0 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -192,7 +192,8 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size,
dmab->bytes = 0;
switch (type) {
case SNDRV_DMA_TYPE_CONTINUOUS:
- dmab->area = snd_malloc_pages(size, (unsigned long)device);
+ dmab->area = snd_malloc_pages(size,
+ (__force gfp_t)(unsigned long)device);
dmab->addr = 0;
break;
#ifdef CONFIG_HAS_DMA

sound/core/oss/linear.c

View file
diff --git a/sound/core/oss/linear.c b/sound/core/oss/linear.c
index 4c1d168..13b3f6f 100644
--- a/sound/core/oss/linear.c
+++ b/sound/core/oss/linear.c
@@ -114,7 +114,8 @@ static snd_pcm_sframes_t linear_transfer(struct snd_pcm_plugin *plugin,
return frames;
}
-static void init_data(struct linear_priv *data, int src_format, int dst_format)
+static void init_data(struct linear_priv *data,
+ snd_pcm_format_t src_format, snd_pcm_format_t dst_format)
{
int src_le, dst_le, src_bytes, dst_bytes;
@@ -140,9 +141,9 @@ static void init_data(struct linear_priv *data, int src_format, int dst_format)
if (snd_pcm_format_signed(src_format) !=
snd_pcm_format_signed(dst_format)) {
if (dst_le)
- data->flip = cpu_to_le32(0x80000000);
+ data->flip = (__force u32)cpu_to_le32(0x80000000);
else
- data->flip = cpu_to_be32(0x80000000);
+ data->flip = (__force u32)cpu_to_be32(0x80000000);
}
}

sound/core/oss/mixer_oss.c

View file
diff --git a/sound/core/oss/mixer_oss.c b/sound/core/oss/mixer_oss.c
index 822dd56..d8359cf 100644
--- a/sound/core/oss/mixer_oss.c
+++ b/sound/core/oss/mixer_oss.c
@@ -190,9 +190,10 @@ static int snd_mixer_oss_get_recsrc(struct snd_mixer_oss_file *fmixer)
return -EIO;
if (mixer->put_recsrc && mixer->get_recsrc) { /* exclusive */
int err;
- if ((err = mixer->get_recsrc(fmixer, &result)) < 0)
+ unsigned int index;
+ if ((err = mixer->get_recsrc(fmixer, &index)) < 0)
return err;
- result = 1 << result;
+ result = 1 << index;
} else {
struct snd_mixer_oss_slot *pslot;
int chn;
@@ -214,6 +215,7 @@ static int snd_mixer_oss_set_recsrc(struct snd_mixer_oss_file *fmixer, int recsr
struct snd_mixer_oss *mixer = fmixer->mixer;
struct snd_mixer_oss_slot *pslot;
int chn, active;
+ unsigned int index;
int result = 0;
if (mixer == NULL)
@@ -222,8 +224,8 @@ static int snd_mixer_oss_set_recsrc(struct snd_mixer_oss_file *fmixer, int recsr
if (recsrc & ~mixer->oss_recsrc)
recsrc &= ~mixer->oss_recsrc;
mixer->put_recsrc(fmixer, ffz(~recsrc));
- mixer->get_recsrc(fmixer, &result);
- result = 1 << result;
+ mixer->get_recsrc(fmixer, &index);
+ result = 1 << index;
}
for (chn = 0; chn < 31; chn++) {
pslot = &mixer->slots[chn];

sound/core/oss/mulaw.c

View file
diff --git a/sound/core/oss/mulaw.c b/sound/core/oss/mulaw.c
index f7649d4..7915564 100644
--- a/sound/core/oss/mulaw.c
+++ b/sound/core/oss/mulaw.c
@@ -274,7 +274,7 @@ static snd_pcm_sframes_t mulaw_transfer(struct snd_pcm_plugin *plugin,
return frames;
}
-static void init_data(struct mulaw_priv *data, int format)
+static void init_data(struct mulaw_priv *data, snd_pcm_format_t format)
{
#ifdef SNDRV_LITTLE_ENDIAN
data->cvt_endian = snd_pcm_format_big_endian(format) > 0;

sound/core/oss/pcm_oss.c

View file
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index a2e4eb3..23c34a0 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -41,6 +41,7 @@
#include <sound/info.h>
#include <linux/soundcard.h>
#include <sound/initval.h>
+#include <sound/mixer_oss.h>
#define OSS_ALSAEMULVER _SIOR ('M', 249, int)
@@ -60,7 +61,6 @@ MODULE_PARM_DESC(nonblock_open, "Don't block opening busy PCM devices.");
MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_PCM);
MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_PCM1);
-extern int snd_mixer_oss_ioctl_card(struct snd_card *card, unsigned int cmd, unsigned long arg);
static int snd_pcm_oss_get_rate(struct snd_pcm_oss_file *pcm_oss_file);
static int snd_pcm_oss_get_channels(struct snd_pcm_oss_file *pcm_oss_file);
static int snd_pcm_oss_get_format(struct snd_pcm_oss_file *pcm_oss_file);
@@ -656,7 +656,7 @@ snd_pcm_uframes_t get_hw_ptr_period(struct snd_pcm_runtime *runtime)
#define AFMT_AC3 0x00000400
#define AFMT_VORBIS 0x00000800
-static int snd_pcm_oss_format_from(int format)
+static snd_pcm_format_t snd_pcm_oss_format_from(int format)
{
switch (format) {
case AFMT_MU_LAW: return SNDRV_PCM_FORMAT_MU_LAW;
@@ -680,7 +680,7 @@ static int snd_pcm_oss_format_from(int format)
}
}
-static int snd_pcm_oss_format_to(int format)
+static int snd_pcm_oss_format_to(snd_pcm_format_t format)
{
switch (format) {
case SNDRV_PCM_FORMAT_MU_LAW: return AFMT_MU_LAW;
@@ -843,7 +843,8 @@ static int snd_pcm_oss_change_params(struct snd_pcm_substream *substream)
size_t oss_frame_size;
int err;
int direct;
- int format, sformat, n;
+ snd_pcm_format_t format, sformat;

This diff is incomplete. Download the complete patch.

sound/core/oss/pcm_plugin.c

View file

This diff is incomplete. Download the complete patch.

sound/core/oss/pcm_plugin.h

View file

This diff is incomplete. Download the complete patch.

sound/core/oss/route.c

View file

This diff is incomplete. Download the complete patch.

sound/core/pcm.c

View file

This diff is incomplete. Download the complete patch.

sound/core/pcm_misc.c

View file

This diff is incomplete. Download the complete patch.

sound/core/pcm_native.c

View file

This diff is incomplete. Download the complete patch.

sound/core/seq/seq_clientmgr.c

View file

This diff is incomplete. Download the complete patch.

sound/core/seq/seq_memory.c

View file

This diff is incomplete. Download the complete patch.

sound/core/seq/seq_memory.h

View file

This diff is incomplete. Download the complete patch.

sound/core/seq/seq_ports.c

View file

This diff is incomplete. Download the complete patch.

sound/core/timer.c

View file

This diff is incomplete. Download the complete patch.

sound/core/vmaster.c

View file

This diff is incomplete. Download the complete patch.

sound/drivers/aloop.c

View file

This diff is incomplete. Download the complete patch.

sound/oss/soundcard.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/Kconfig

View file

This diff is incomplete. Download the complete patch.

sound/pci/ac97/ac97_codec.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ac97/ac97_patch.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/asihpi.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpi.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpi6000.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpi6205.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpi6205.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpi_internal.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpicmn.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpicmn.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpidebug.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpidebug.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpidspcd.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpidspcd.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpifunc.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpimsginit.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpimsginit.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpimsgx.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpioctl.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/asihpi/hpios.h

View file

This diff is incomplete. Download the complete patch.

sound/pci/atiixp.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/atiixp_modem.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/au88x0/au88x0_eq.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/azt3328.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ctxfi/ctatc.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ctxfi/ctdaio.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ctxfi/cthw20k2.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ctxfi/ctmixer.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/ctxfi/ctvmem.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/emu10k1/emu10k1_main.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/hda/patch_realtek.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/intel8x0m.c

View file

This diff is incomplete. Download the complete patch.

sound/pci/rme9652/hdspm.c

View file

This diff is incomplete. Download the complete patch.

sound/ppc/pmac.c

View file

This diff is incomplete. Download the complete patch.

sound/sound_core.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/Makefile

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/chip.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/chip.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/comm.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/comm.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/common.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/control.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/control.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/firmware.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/firmware.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/midi.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/midi.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/pcm.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/6fire/pcm.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/Kconfig

View file

This diff is incomplete. Download the complete patch.

sound/usb/Makefile

View file

This diff is incomplete. Download the complete patch.

sound/usb/caiaq/audio.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/caiaq/device.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/caiaq/device.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/card.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/midi.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/mixer.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/mixer.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/mixer_quirks.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/pcm.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/power.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/quirks-table.h

View file

This diff is incomplete. Download the complete patch.

sound/usb/quirks.c

View file

This diff is incomplete. Download the complete patch.

sound/usb/usbaudio.h

View file

This diff is incomplete. Download the complete patch.