Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 467cbd20 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-nuke-platforms-for-linus' of...

Merge branch 'x86-nuke-platforms-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 old platform removal from Peter Anvin:
 "This patchset removes support for several completely obsolete
  platforms, where the maintainers either have completely vanished or
  acked the removal.  For some of them it is questionable if there even
  exists functional specimens of the hardware"

Geert Uytterhoeven apparently thought this was a April Fool's pull request ;)

* 'x86-nuke-platforms-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, platforms: Remove NUMAQ
  x86, platforms: Remove SGI Visual Workstation
  x86, apic: Remove support for IBM Summit/EXA chipset
  x86, apic: Remove support for ia32-based Unisys ES7000
parents 7125764c b5660ba7
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -413,8 +413,6 @@ serial-console.txt
	- how to set up Linux with a serial line console as the default.
sgi-ioc4.txt
	- description of the SGI IOC4 PCI (multi function) device.
sgi-visws.txt
	- short blurb on the SGI Visual Workstations.
sh/
	- directory with info on porting Linux to a new architecture.
smsc_ece1099.txt

Documentation/sgi-visws.txt

deleted100644 → 0
+0 −13
Original line number Diff line number Diff line

The SGI Visual Workstations (models 320 and 540) are based around
the Cobalt, Lithium, and Arsenic ASICs.  The Cobalt ASIC is the
main system ASIC which interfaces the 1-4 IA32 cpus, the memory
system, and the I/O system in the Lithium ASIC.  The Cobalt ASIC
also contains the 3D gfx rendering engine which renders to main
system memory -- part of which is used as the frame buffer which
is DMA'ed to a video connector using the Arsenic ASIC.  A PIIX4
chip and NS87307 are used to provide legacy device support (IDE,
serial, floppy, and parallel).

The Visual Workstation chipset largely conforms to the PC architecture
with some notable exceptions such as interrupt handling.

Documentation/sound/oss/vwsnd

deleted100644 → 0
+0 −293
Original line number Diff line number Diff line
vwsnd - Sound driver for the Silicon Graphics 320 and 540 Visual
Workstations' onboard audio.

Copyright 1999 Silicon Graphics, Inc.  All rights reserved.


At the time of this writing, March 1999, there are two models of
Visual Workstation, the 320 and the 540.  This document only describes
those models.  Future Visual Workstation models may have different
sound capabilities, and this driver will probably not work on those
boxes.

The Visual Workstation has an Analog Devices AD1843 "SoundComm" audio
codec chip.  The AD1843 is accessed through the Cobalt I/O ASIC, also
known as Lithium.  This driver programs both chips.

==============================================================================
QUICK CONFIGURATION

	# insmod soundcore
	# insmod vwsnd

==============================================================================
I/O CONNECTIONS

On the Visual Workstation, only three of the AD1843 inputs are hooked
up.  The analog line in jacks are connected to the AD1843's AUX1
input.  The CD audio lines are connected to the AD1843's AUX2 input.
The microphone jack is connected to the AD1843's MIC input.  The mic
jack is mono, but the signal is delivered to both the left and right
MIC inputs.  You can record in stereo from the mic input, but you will
get the same signal on both channels (within the limits of A/D
accuracy).  Full scale on the Line input is +/- 2.0 V.  Full scale on
the MIC input is 20 dB less, or +/- 0.2 V.

The AD1843's LOUT1 outputs are connected to the Line Out jacks.  The
AD1843's HPOUT outputs are connected to the speaker/headphone jack.
LOUT2 is not connected.  Line out's maximum level is +/- 2.0 V peak to
peak.  The speaker/headphone out's maximum is +/- 4.0 V peak to peak.

The AD1843's PCM input channel and one of its output channels (DAC1)
are connected to Lithium.  The other output channel (DAC2) is not
connected.

==============================================================================
CAPABILITIES

The AD1843 has PCM input and output (Pulse Code Modulation, also known
as wavetable).  PCM input and output can be mono or stereo in any of
four formats.  The formats are 16 bit signed and 8 bit unsigned,
u-Law, and A-Law format.  Any sample rate from 4 KHz to 49 KHz is
available, in 1 Hz increments.

The AD1843 includes an analog mixer that can mix all three input
signals (line, mic and CD) into the analog outputs.  The mixer has a
separate gain control and mute switch for each input.

There are two outputs, line out and speaker/headphone out.  They
always produce the same signal, and the speaker always has 3 dB more
gain than the line out.  The speaker/headphone output can be muted,
but this driver does not export that function.

The hardware can sync audio to the video clock, but this driver does
not have a way to specify syncing to video.

==============================================================================
PROGRAMMING

This section explains the API supported by the driver.  Also see the
Open Sound Programming Guide at http://www.opensound.com/pguide/ .
This section assumes familiarity with that document.

The driver has two interfaces, an I/O interface and a mixer interface.
There is no MIDI or sequencer capability.

==============================================================================
PROGRAMMING PCM I/O

The I/O interface is usually accessed as /dev/audio or /dev/dsp.
Using the standard Open Sound System (OSS) ioctl calls, the sample
rate, number of channels, and sample format may be set within the
limitations described above.  The driver supports triggering.  It also
supports getting the input and output pointers with one-sample
accuracy.

The SNDCTL_DSP_GETCAP ioctl returns these capabilities.

	DSP_CAP_DUPLEX - driver supports full duplex.

	DSP_CAP_TRIGGER - driver supports triggering.

	DSP_CAP_REALTIME - values returned by SNDCTL_DSP_GETIPTR
	and SNDCTL_DSP_GETOPTR are accurate to a few samples.

Memory mapping (mmap) is not implemented.

The driver permits subdivided fragment sizes from 64 to 4096 bytes.
The number of fragments can be anything from 3 fragments to however
many fragments fit into 124 kilobytes.  It is up to the user to
determine how few/small fragments can be used without introducing
glitches with a given workload.  Linux is not realtime, so we can't
promise anything.  (sigh...)

When this driver is switched into or out of mu-Law or A-Law mode on
output, it may produce an audible click.  This is unavoidable.  To
prevent clicking, use signed 16-bit mode instead, and convert from
mu-Law or A-Law format in software.

==============================================================================
PROGRAMMING THE MIXER INTERFACE

The mixer interface is usually accessed as /dev/mixer.  It is accessed
through ioctls.  The mixer allows the application to control gain or
mute several audio signal paths, and also allows selection of the
recording source.

Each of the constants described here can be read using the
MIXER_READ(SOUND_MIXER_xxx) ioctl.  Those that are not read-only can
also be written using the MIXER_WRITE(SOUND_MIXER_xxx) ioctl.  In most
cases, <sys/soundcard.h> defines constants SOUND_MIXER_READ_xxx and
SOUND_MIXER_WRITE_xxx which work just as well.

SOUND_MIXER_CAPS	Read-only

This is a mask of optional driver capabilities that are implemented.
This driver's only capability is SOUND_CAP_EXCL_INPUT, which means
that only one recording source can be active at a time.

SOUND_MIXER_DEVMASK	Read-only

This is a mask of the sound channels.  This driver's channels are PCM,
LINE, MIC, CD, and RECLEV.

SOUND_MIXER_STEREODEVS	Read-only

This is a mask of which sound channels are capable of stereo.  All
channels are capable of stereo.  (But see caveat on MIC input in I/O
CONNECTIONS section above).

SOUND_MIXER_OUTMASK	Read-only

This is a mask of channels that route inputs through to outputs.
Those are LINE, MIC, and CD.

SOUND_MIXER_RECMASK	Read-only

This is a mask of channels that can be recording sources.  Those are
PCM, LINE, MIC, CD.

SOUND_MIXER_PCM		Default: 0x5757 (0 dB)

This is the gain control for PCM output.  The left and right channel
gain are controlled independently.  This gain control has 64 levels,
which range from -82.5 dB to +12.0 dB in 1.5 dB steps.  Those 64
levels are mapped onto 100 levels at the ioctl, see below.

SOUND_MIXER_LINE	Default: 0x4a4a (0 dB)

This is the gain control for mixing the Line In source into the
outputs.  The left and right channel gain are controlled
independently.  This gain control has 32 levels, which range from
-34.5 dB to +12.0 dB in 1.5 dB steps.  Those 32 levels are mapped onto
100 levels at the ioctl, see below.

SOUND_MIXER_MIC		Default: 0x4a4a (0 dB)

This is the gain control for mixing the MIC source into the outputs.
The left and right channel gain are controlled independently.  This
gain control has 32 levels, which range from -34.5 dB to +12.0 dB in
1.5 dB steps.  Those 32 levels are mapped onto 100 levels at the
ioctl, see below.

SOUND_MIXER_CD		Default: 0x4a4a (0 dB)

This is the gain control for mixing the CD audio source into the
outputs.  The left and right channel gain are controlled
independently.  This gain control has 32 levels, which range from
-34.5 dB to +12.0 dB in 1.5 dB steps.  Those 32 levels are mapped onto
100 levels at the ioctl, see below.

SOUND_MIXER_RECLEV	 Default: 0 (0 dB)

This is the gain control for PCM input (RECording LEVel).  The left
and right channel gain are controlled independently.  This gain
control has 16 levels, which range from 0 dB to +22.5 dB in 1.5 dB
steps.  Those 16 levels are mapped onto 100 levels at the ioctl, see
below.

SOUND_MIXER_RECSRC	 Default: SOUND_MASK_LINE

This is a mask of currently selected PCM input sources (RECording
SouRCes).  Because the AD1843 can only have a single recording source
at a time, only one bit at a time can be set in this mask.  The
allowable values are SOUND_MASK_PCM, SOUND_MASK_LINE, SOUND_MASK_MIC,
or SOUND_MASK_CD.  Selecting SOUND_MASK_PCM sets up internal
resampling which is useful for loopback testing and for hardware
sample rate conversion.  But software sample rate conversion is
probably faster, so I don't know how useful that is.

SOUND_MIXER_OUTSRC	DEFAULT: SOUND_MASK_LINE|SOUND_MASK_MIC|SOUND_MASK_CD

This is a mask of sources that are currently passed through to the
outputs.  Those sources whose bits are not set are muted.

==============================================================================
GAIN CONTROL

There are five gain controls listed above.  Each has 16, 32, or 64
steps.  Each control has 1.5 dB of gain per step.  Each control is
stereo.

The OSS defines the argument to a channel gain ioctl as having two
components, left and right, each of which ranges from 0 to 100.  The
two components are packed into the same word, with the left side gain
in the least significant byte, and the right side gain in the second
least significant byte.  In C, we would say this.

	#include <assert.h>

	...

	 	assert(leftgain >= 0 && leftgain <= 100);
		assert(rightgain >= 0 && rightgain <= 100);
		arg = leftgain | rightgain << 8;

So each OSS gain control has 101 steps.  But the hardware has 16, 32,
or 64 steps.  The hardware steps are spread across the 101 OSS steps
nearly evenly.  The conversion formulas are like this, given N equals
16, 32, or 64.

	int round = N/2 - 1;
	OSS_gain_steps = (hw_gain_steps * 100 + round) / (N - 1);
	hw_gain_steps = (OSS_gain_steps * (N - 1) + round) / 100;

Here is a snippet of C code that will return the left and right gain
of any channel in dB.  Pass it one of the predefined gain_desc_t
structures to access any of the five channels' gains.

	typedef struct gain_desc {
		float min_gain;
		float gain_step;
		int nbits;
		int chan;
	} gain_desc_t;

	const gain_desc_t gain_pcm    = { -82.5, 1.5, 6, SOUND_MIXER_PCM    };
	const gain_desc_t gain_line   = { -34.5, 1.5, 5, SOUND_MIXER_LINE   };
	const gain_desc_t gain_mic    = { -34.5, 1.5, 5, SOUND_MIXER_MIC    };
	const gain_desc_t gain_cd     = { -34.5, 1.5, 5, SOUND_MIXER_CD     };
	const gain_desc_t gain_reclev = {   0.0, 1.5, 4, SOUND_MIXER_RECLEV };

	int get_gain_dB(int fd, const gain_desc_t *gp,
			float *left, float *right)
	{
		int word;
		int lg, rg;
		int mask = (1 << gp->nbits) - 1;

		if (ioctl(fd, MIXER_READ(gp->chan), &word) != 0)
			return -1;	/* fail */
		lg = word & 0xFF;
		rg = word >> 8 & 0xFF;
		lg = (lg * mask + mask / 2) / 100;
		rg = (rg * mask + mask / 2) / 100;
		*left = gp->min_gain + gp->gain_step * lg;
		*right = gp->min_gain + gp->gain_step * rg;
		return 0;
	}	

And here is the corresponding routine to set a channel's gain in dB.

	int set_gain_dB(int fd, const gain_desc_t *gp, float left, float right)
	{
		float max_gain =
			gp->min_gain + (1 << gp->nbits) * gp->gain_step;
		float round = gp->gain_step / 2;
		int mask = (1 << gp->nbits) - 1;
		int word;
		int lg, rg;

		if (left < gp->min_gain || right < gp->min_gain)
			return EINVAL;
		lg = (left - gp->min_gain + round) / gp->gain_step;
		rg = (right - gp->min_gain + round) / gp->gain_step;
		if (lg >= (1 << gp->nbits) || rg >= (1 << gp->nbits))
			return EINVAL;
		lg = (100 * lg + mask / 2) / mask;
		rg = (100 * rg + mask / 2) / mask;
		word = lg | rg << 8;

		return ioctl(fd, MIXER_WRITE(gp->chan), &word);
	}
+0 −7
Original line number Diff line number Diff line
@@ -7840,13 +7840,6 @@ F: Documentation/ia64/serial.txt
F:	drivers/tty/serial/ioc?_serial.c
F:	include/linux/ioc?.h

SGI VISUAL WORKSTATION 320 AND 540
M:	Andrey Panin <pazke@donpac.ru>
L:	linux-visws-devel@lists.sf.net
W:	http://linux-visws.sf.net
S:	Maintained for 2.6.
F:	Documentation/sgi-visws.txt

SGI XP/XPC/XPNET DRIVER
M:	Cliff Whickman <cpw@sgi.com>
M:	Robin Holt <robinmholt@gmail.com>
+9 −73
Original line number Diff line number Diff line
@@ -344,12 +344,9 @@ config X86_EXTENDED_PLATFORM
	  for the following (non-PC) 32 bit x86 platforms:
		Goldfish (Android emulator)
		AMD Elan
		NUMAQ (IBM/Sequent)
		RDC R-321x SoC
		SGI 320/540 (Visual Workstation)
		STA2X11-based (e.g. Northville)
		Summit/EXA (IBM x440)
		Unisys ES7000 IA32 series
		Moorestown MID devices

	  If you have one of these systems, or if you want to build a
@@ -487,49 +484,22 @@ config X86_32_NON_STANDARD
	depends on X86_32 && SMP
	depends on X86_EXTENDED_PLATFORM
	---help---
	  This option compiles in the NUMAQ, Summit, bigsmp, ES7000,
	  STA2X11, default subarchitectures.  It is intended for a generic
	  binary kernel. If you select them all, kernel will probe it
	  one by one and will fallback to default.
	  This option compiles in the bigsmp and STA2X11 default
	  subarchitectures.  It is intended for a generic binary
	  kernel. If you select them all, kernel will probe it one by
	  one and will fallback to default.

# Alphabetically sorted list of Non standard 32 bit platforms

config X86_NUMAQ
	bool "NUMAQ (IBM/Sequent)"
	depends on X86_32_NON_STANDARD
	depends on PCI
	select NUMA
	select X86_MPPARSE
	---help---
	  This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
	  NUMA multiquad box. This changes the way that processors are
	  bootstrapped, and uses Clustered Logical APIC addressing mode instead
	  of Flat Logical.  You will need a new lynxer.elf file to flash your
	  firmware with - send email to <Martin.Bligh@us.ibm.com>.

config X86_SUPPORTS_MEMORY_FAILURE
	def_bool y
	# MCE code calls memory_failure():
	depends on X86_MCE
	# On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
	depends on !X86_NUMAQ
	# On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
	depends on X86_64 || !SPARSEMEM
	select ARCH_SUPPORTS_MEMORY_FAILURE

config X86_VISWS
	bool "SGI 320/540 (Visual Workstation)"
	depends on X86_32 && PCI && X86_MPPARSE && PCI_GODIRECT
	depends on X86_32_NON_STANDARD
	---help---
	  The SGI Visual Workstation series is an IA32-based workstation
	  based on SGI systems chips with some legacy PC hardware attached.

	  Say Y here to create a kernel to run on the SGI 320 or 540.

	  A kernel compiled for the Visual Workstation will run on general
	  PCs as well. See <file:Documentation/sgi-visws.txt> for details.

config STA2X11
	bool "STA2X11 Companion Chip Support"
	depends on X86_32_NON_STANDARD && PCI
@@ -546,20 +516,6 @@ config STA2X11
	  option is selected the kernel will still be able to boot on
	  standard PC machines.

config X86_SUMMIT
	bool "Summit/EXA (IBM x440)"
	depends on X86_32_NON_STANDARD
	---help---
	  This option is needed for IBM systems that use the Summit/EXA chipset.
	  In particular, it is needed for the x440.

config X86_ES7000
	bool "Unisys ES7000 IA32 series"
	depends on X86_32_NON_STANDARD && X86_BIGSMP
	---help---
	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
	  supposed to run on an IA32-based Unisys ES7000 system.

config X86_32_IRIS
	tristate "Eurobraille/Iris poweroff module"
	depends on X86_32
@@ -682,14 +638,6 @@ config MEMTEST
	        memtest=4, mean do 4 test patterns.
	  If you are unsure how to answer this question, answer N.

config X86_SUMMIT_NUMA
	def_bool y
	depends on X86_32 && NUMA && X86_32_NON_STANDARD

config X86_CYCLONE_TIMER
	def_bool y
	depends on X86_SUMMIT

source "arch/x86/Kconfig.cpu"

config HPET_TIMER
@@ -818,7 +766,7 @@ config NR_CPUS
	range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
	default "1" if !SMP
	default "8192" if MAXSMP
	default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
	default "32" if SMP && X86_BIGSMP
	default "8" if SMP
	---help---
	  This allows you to specify the maximum number of CPUs which this
@@ -882,10 +830,6 @@ config X86_IO_APIC
	def_bool y
	depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC || PCI_MSI

config X86_VISWS_APIC
	def_bool y
	depends on X86_32 && X86_VISWS

config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
	bool "Reroute for broken boot IRQs"
	depends on X86_IO_APIC
@@ -1103,13 +1047,11 @@ config X86_CPUID

choice
	prompt "High Memory Support"
	default HIGHMEM64G if X86_NUMAQ
	default HIGHMEM4G
	depends on X86_32

config NOHIGHMEM
	bool "off"
	depends on !X86_NUMAQ
	---help---
	  Linux can use up to 64 Gigabytes of physical memory on x86 systems.
	  However, the address space of 32-bit x86 processors is only 4
@@ -1146,7 +1088,6 @@ config NOHIGHMEM

config HIGHMEM4G
	bool "4GB"
	depends on !X86_NUMAQ
	---help---
	  Select this if you have a 32-bit processor and between 1 and 4
	  gigabytes of physical RAM.
@@ -1238,8 +1179,8 @@ config DIRECT_GBPAGES
config NUMA
	bool "Numa Memory Allocation and Scheduler Support"
	depends on SMP
	depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI))
	default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
	depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
	default y if X86_BIGSMP
	---help---
	  Enable NUMA (Non Uniform Memory Access) support.

@@ -1250,15 +1191,11 @@ config NUMA
	  For 64-bit this is recommended if the system is Intel Core i7
	  (or later), AMD Opteron, or EM64T NUMA.

	  For 32-bit this is only needed on (rare) 32-bit-only platforms
	  that support NUMA topologies, such as NUMAQ / Summit, or if you
	  boot a 32-bit kernel on a 64-bit NUMA platform.
	  For 32-bit this is only needed if you boot a 32-bit
	  kernel on a 64-bit NUMA platform.

	  Otherwise, you should say N.

comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
	depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)

config AMD_NUMA
	def_bool y
	prompt "Old style AMD Opteron NUMA detection"
@@ -1300,7 +1237,6 @@ config NODES_SHIFT
	range 1 10
	default "10" if MAXSMP
	default "6" if X86_64
	default "4" if X86_NUMAQ
	default "3"
	depends on NEED_MULTIPLE_NODES
	---help---
Loading