scheduled OSS driver removal

This patch contains the scheduled removal of OSS drivers whose config
options have been removed in 2.6.23.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Adrian Bunk
2008-02-06 01:36:36 -08:00
committed by Linus Torvalds
parent b4cf9c342a
commit 83bad1d764
12 changed files with 4 additions and 9697 deletions
-9
View File
@@ -6,7 +6,6 @@
# Each configuration option enables a list of files.
obj-$(CONFIG_SOUND_OSS) += sound.o
obj-$(CONFIG_SOUND_CS4232) += cs4232.o ad1848.o
# Please leave it as is, cause the link order is significant !
@@ -16,7 +15,6 @@ obj-$(CONFIG_SOUND_AEDSP16) += aedsp16.o
obj-$(CONFIG_SOUND_PSS) += pss.o ad1848.o mpu401.o
obj-$(CONFIG_SOUND_TRIX) += trix.o ad1848.o sb_lib.o uart401.o
obj-$(CONFIG_SOUND_SSCAPE) += sscape.o ad1848.o mpu401.o
obj-$(CONFIG_SOUND_CS4232) += cs4232.o uart401.o
obj-$(CONFIG_SOUND_MSS) += ad1848.o
obj-$(CONFIG_SOUND_PAS) += pas2.o sb.o sb_lib.o uart401.o
obj-$(CONFIG_SOUND_SB) += sb.o sb_lib.o uart401.o
@@ -27,19 +25,12 @@ obj-$(CONFIG_SOUND_YM3812) += opl3.o
obj-$(CONFIG_SOUND_VMIDI) += v_midi.o
obj-$(CONFIG_SOUND_VIDC) += vidc_mod.o
obj-$(CONFIG_SOUND_WAVEARTIST) += waveartist.o
obj-$(CONFIG_SOUND_VIA82CXXX) += via82cxxx_audio.o ac97_codec.o
ifeq ($(CONFIG_MIDI_VIA82CXXX),y)
obj-$(CONFIG_SOUND_VIA82CXXX) += sound.o uart401.o
endif
obj-$(CONFIG_SOUND_MSNDCLAS) += msnd.o msnd_classic.o
obj-$(CONFIG_SOUND_MSNDPIN) += msnd.o msnd_pinnacle.o
obj-$(CONFIG_SOUND_VWSND) += vwsnd.o
obj-$(CONFIG_SOUND_ICH) += i810_audio.o ac97_codec.o
obj-$(CONFIG_SOUND_AU1550_AC97) += au1550_ac97.o ac97_codec.o
obj-$(CONFIG_SOUND_TRIDENT) += trident.o ac97_codec.o
obj-$(CONFIG_SOUND_BCM_CS4297A) += swarm_cs4297a.o
obj-$(CONFIG_SOUND_BT878) += btaudio.o
obj-$(CONFIG_SOUND_WM97XX) += ac97_plugin_wm97xx.o
-284
View File
@@ -189,42 +189,6 @@ static const struct {
{0x57454301, "Winbond 83971D", &null_ops},
};
static const char *ac97_stereo_enhancements[] =
{
/* 0 */ "No 3D Stereo Enhancement",
/* 1 */ "Analog Devices Phat Stereo",
/* 2 */ "Creative Stereo Enhancement",
/* 3 */ "National Semi 3D Stereo Enhancement",
/* 4 */ "YAMAHA Ymersion",
/* 5 */ "BBE 3D Stereo Enhancement",
/* 6 */ "Crystal Semi 3D Stereo Enhancement",
/* 7 */ "Qsound QXpander",
/* 8 */ "Spatializer 3D Stereo Enhancement",
/* 9 */ "SRS 3D Stereo Enhancement",
/* 10 */ "Platform Tech 3D Stereo Enhancement",
/* 11 */ "AKM 3D Audio",
/* 12 */ "Aureal Stereo Enhancement",
/* 13 */ "Aztech 3D Enhancement",
/* 14 */ "Binaura 3D Audio Enhancement",
/* 15 */ "ESS Technology Stereo Enhancement",
/* 16 */ "Harman International VMAx",
/* 17 */ "Nvidea 3D Stereo Enhancement",
/* 18 */ "Philips Incredible Sound",
/* 19 */ "Texas Instruments 3D Stereo Enhancement",
/* 20 */ "VLSI Technology 3D Stereo Enhancement",
/* 21 */ "TriTech 3D Stereo Enhancement",
/* 22 */ "Realtek 3D Stereo Enhancement",
/* 23 */ "Samsung 3D Stereo Enhancement",
/* 24 */ "Wolfson Microelectronics 3D Enhancement",
/* 25 */ "Delta Integration 3D Enhancement",
/* 26 */ "SigmaTel 3D Enhancement",
/* 27 */ "Winbond 3D Stereo Enhancement",
/* 28 */ "Rockwell 3D Stereo Enhancement",
/* 29 */ "Reserved 29",
/* 30 */ "Reserved 30",
/* 31 */ "Reserved 31"
};
/* this table has default mixer values for all OSS mixers. */
static struct mixer_defaults {
int mixer;
@@ -614,83 +578,6 @@ static int ac97_mixer_ioctl(struct ac97_codec *codec, unsigned int cmd, unsigned
return -EINVAL;
}
/* entry point for /proc/driver/controller_vendor/ac97/%d */
int ac97_read_proc (char *page, char **start, off_t off,
int count, int *eof, void *data)
{
int len = 0, cap, extid, val, id1, id2;
struct ac97_codec *codec;
int is_ac97_20 = 0;
if ((codec = data) == NULL)
return -ENODEV;
id1 = codec->codec_read(codec, AC97_VENDOR_ID1);
id2 = codec->codec_read(codec, AC97_VENDOR_ID2);
len += sprintf (page+len, "Vendor name : %s\n", codec->name);
len += sprintf (page+len, "Vendor id : %04X %04X\n", id1, id2);
extid = codec->codec_read(codec, AC97_EXTENDED_ID);
extid &= ~((1<<2)|(1<<4)|(1<<5)|(1<<10)|(1<<11)|(1<<12)|(1<<13));
len += sprintf (page+len, "AC97 Version : %s\n",
extid ? "2.0 or later" : "1.0");
if (extid) is_ac97_20 = 1;
cap = codec->codec_read(codec, AC97_RESET);
len += sprintf (page+len, "Capabilities :%s%s%s%s%s%s\n",
cap & 0x0001 ? " -dedicated MIC PCM IN channel-" : "",
cap & 0x0002 ? " -reserved1-" : "",
cap & 0x0004 ? " -bass & treble-" : "",
cap & 0x0008 ? " -simulated stereo-" : "",
cap & 0x0010 ? " -headphone out-" : "",
cap & 0x0020 ? " -loudness-" : "");
val = cap & 0x00c0;
len += sprintf (page+len, "DAC resolutions :%s%s%s\n",
" -16-bit-",
val & 0x0040 ? " -18-bit-" : "",
val & 0x0080 ? " -20-bit-" : "");
val = cap & 0x0300;
len += sprintf (page+len, "ADC resolutions :%s%s%s\n",
" -16-bit-",
val & 0x0100 ? " -18-bit-" : "",
val & 0x0200 ? " -20-bit-" : "");
len += sprintf (page+len, "3D enhancement : %s\n",
ac97_stereo_enhancements[(cap >> 10) & 0x1f]);
val = codec->codec_read(codec, AC97_GENERAL_PURPOSE);
len += sprintf (page+len, "POP path : %s 3D\n"
"Sim. stereo : %s\n"
"3D enhancement : %s\n"
"Loudness : %s\n"
"Mono output : %s\n"
"MIC select : %s\n"
"ADC/DAC loopback : %s\n",
val & 0x8000 ? "post" : "pre",
val & 0x4000 ? "on" : "off",
val & 0x2000 ? "on" : "off",
val & 0x1000 ? "on" : "off",
val & 0x0200 ? "MIC" : "MIX",
val & 0x0100 ? "MIC2" : "MIC1",
val & 0x0080 ? "on" : "off");
extid = codec->codec_read(codec, AC97_EXTENDED_ID);
cap = extid;
len += sprintf (page+len, "Ext Capabilities :%s%s%s%s%s%s%s\n",
cap & 0x0001 ? " -var rate PCM audio-" : "",
cap & 0x0002 ? " -2x PCM audio out-" : "",
cap & 0x0008 ? " -var rate MIC in-" : "",
cap & 0x0040 ? " -PCM center DAC-" : "",
cap & 0x0080 ? " -PCM surround DAC-" : "",
cap & 0x0100 ? " -PCM LFE DAC-" : "",
cap & 0x0200 ? " -slot/DAC mappings-" : "");
if (is_ac97_20) {
len += sprintf (page+len, "Front DAC rate : %d\n",
codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE));
}
return len;
}
/**
* codec_id - Turn id1/id2 into a PnP string
* @id1: Vendor ID1
@@ -1313,176 +1200,5 @@ static int pt101_init(struct ac97_codec * codec)
#endif
EXPORT_SYMBOL(ac97_read_proc);
EXPORT_SYMBOL(ac97_probe_codec);
/*
* AC97 library support routines
*/
/**
* ac97_set_dac_rate - set codec rate adaption
* @codec: ac97 code
* @rate: rate in hertz
*
* Set the DAC rate. Assumes the codec supports VRA. The caller is
* expected to have checked this little detail.
*/
unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate)
{
unsigned int new_rate = rate;
u32 dacp;
u32 mast_vol, phone_vol, mono_vol, pcm_vol;
u32 mute_vol = 0x8000; /* The mute volume? */
if(rate != codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE))
{
/* Mute several registers */
mast_vol = codec->codec_read(codec, AC97_MASTER_VOL_STEREO);
mono_vol = codec->codec_read(codec, AC97_MASTER_VOL_MONO);
phone_vol = codec->codec_read(codec, AC97_HEADPHONE_VOL);
pcm_vol = codec->codec_read(codec, AC97_PCMOUT_VOL);
codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mute_vol);
codec->codec_write(codec, AC97_MASTER_VOL_MONO, mute_vol);
codec->codec_write(codec, AC97_HEADPHONE_VOL, mute_vol);
codec->codec_write(codec, AC97_PCMOUT_VOL, mute_vol);
/* Power down the DAC */
dacp=codec->codec_read(codec, AC97_POWER_CONTROL);
codec->codec_write(codec, AC97_POWER_CONTROL, dacp|0x0200);
/* Load the rate and read the effective rate */
codec->codec_write(codec, AC97_PCM_FRONT_DAC_RATE, rate);
new_rate=codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE);
/* Power it back up */
codec->codec_write(codec, AC97_POWER_CONTROL, dacp);
/* Restore volumes */
codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mast_vol);
codec->codec_write(codec, AC97_MASTER_VOL_MONO, mono_vol);
codec->codec_write(codec, AC97_HEADPHONE_VOL, phone_vol);
codec->codec_write(codec, AC97_PCMOUT_VOL, pcm_vol);
}
return new_rate;
}
EXPORT_SYMBOL(ac97_set_dac_rate);
/**
* ac97_set_adc_rate - set codec rate adaption
* @codec: ac97 code
* @rate: rate in hertz
*
* Set the ADC rate. Assumes the codec supports VRA. The caller is
* expected to have checked this little detail.
*/
unsigned int ac97_set_adc_rate(struct ac97_codec *codec, unsigned int rate)
{
unsigned int new_rate = rate;
u32 dacp;
if(rate != codec->codec_read(codec, AC97_PCM_LR_ADC_RATE))
{
/* Power down the ADC */
dacp=codec->codec_read(codec, AC97_POWER_CONTROL);
codec->codec_write(codec, AC97_POWER_CONTROL, dacp|0x0100);
/* Load the rate and read the effective rate */
codec->codec_write(codec, AC97_PCM_LR_ADC_RATE, rate);
new_rate=codec->codec_read(codec, AC97_PCM_LR_ADC_RATE);
/* Power it back up */
codec->codec_write(codec, AC97_POWER_CONTROL, dacp);
}
return new_rate;
}
EXPORT_SYMBOL(ac97_set_adc_rate);
static int swap_headphone(int remove_master)
{
struct list_head *l;
struct ac97_codec *c;
if (remove_master) {
mutex_lock(&codec_mutex);
list_for_each(l, &codecs)
{
c = list_entry(l, struct ac97_codec, list);
if (supported_mixer(c, SOUND_MIXER_PHONEOUT))
c->supported_mixers &= ~SOUND_MASK_PHONEOUT;
}
mutex_unlock(&codec_mutex);
} else
ac97_hw[SOUND_MIXER_PHONEOUT].offset = AC97_MASTER_VOL_STEREO;
/* Scale values already match */
ac97_hw[SOUND_MIXER_VOLUME].offset = AC97_MASTER_VOL_MONO;
return 0;
}
static int apply_quirk(int quirk)
{
switch (quirk) {
case AC97_TUNE_NONE:
return 0;
case AC97_TUNE_HP_ONLY:
return swap_headphone(1);
case AC97_TUNE_SWAP_HP:
return swap_headphone(0);
case AC97_TUNE_SWAP_SURROUND:
return -ENOSYS; /* not yet implemented */
case AC97_TUNE_AD_SHARING:
return -ENOSYS; /* not yet implemented */
case AC97_TUNE_ALC_JACK:
return -ENOSYS; /* not yet implemented */
}
return -EINVAL;
}
/**
* ac97_tune_hardware - tune up the hardware
* @pdev: pci_dev pointer
* @quirk: quirk list
* @override: explicit quirk value (overrides if not AC97_TUNE_DEFAULT)
*
* Do some workaround for each pci device, such as renaming of the
* headphone (true line-out) control as "Master".
* The quirk-list must be terminated with a zero-filled entry.
*
* Returns zero if successful, or a negative error code on failure.
*/
int ac97_tune_hardware(struct pci_dev *pdev, struct ac97_quirk *quirk, int override)
{
int result;
if (!quirk)
return -EINVAL;
if (override != AC97_TUNE_DEFAULT) {
result = apply_quirk(override);
if (result < 0)
printk(KERN_ERR "applying quirk type %d failed (%d)\n", override, result);
return result;
}
for (; quirk->vendor; quirk++) {
if (quirk->vendor != pdev->subsystem_vendor)
continue;
if ((! quirk->mask && quirk->device == pdev->subsystem_device) ||
quirk->device == (quirk->mask & pdev->subsystem_device)) {
#ifdef DEBUG
printk("ac97 quirk for %s (%04x:%04x)\n", quirk->name, ac97->subsystem_vendor, pdev->subsystem_device);
#endif
result = apply_quirk(quirk->type);
if (result < 0)
printk(KERN_ERR "applying quirk type %d for %s failed (%d)\n", quirk->type, quirk->name, result);
return result;
}
}
return 0;
}
EXPORT_SYMBOL_GPL(ac97_tune_hardware);
MODULE_LICENSE("GPL");
-1139
View File
File diff suppressed because it is too large Load Diff
-526
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff