            Information about PowerPC Sound support
=====================================================================

Please mail me (Cort Dougan, cort@fsmlabs.com) if you have questions,
comments or corrections.

Last Change: 6.16.99

This just covers sound on the PReP and CHRP systems for now and later
will contain information on the PowerMac's.

Sound on PReP has been tested and is working with the PowerStack and IBM
Power Series onboard sound systems which are based on the cs4231(2) chip.
The sound options when doing the make config are a bit different from
the default, though.

The I/O base, irq and dma lines that you enter during the make config
are ignored and are set when booting according to the machine type.
This is so that one binary can be used for Motorola and IBM machines
which use different values and isn't allowed by the driver, so things
are hacked together in such a way as to allow this information to be
set automatically on boot.

1. Motorola PowerStack PReP machines

  Enable support for "Crystal CS4232 based (PnP) cards" and for the
  Microsoft Sound System.  The MSS isn't used, but some of the routines
  that the CS4232 driver uses are in it.

  Although the options you set are ignored and determined automatically
  on boot these are included for information only:

  (830) CS4232 audio I/O base 530, 604, E80 or F40
  (10) CS4232 audio IRQ 5, 7, 9, 11, 12 or 15
  (6) CS4232 audio DMA 0, 1 or 3
  (7) CS4232 second (duplex) DMA 0, 1 or 3

  This will allow simultaneous record and playback, as 2 different dma
  channels are used.

  The sound will be all left channel and very low volume since the
  auxiliary input isn't muted by default.  I had the changes necessary
  for this in the kernel but the sound driver maintainer didn't want
  to include them since it wasn't common in other machines.  To fix this
  you need to mute it using a mixer utility of some sort (if you find one
  please let me know) or by patching the driver yourself and recompiling.

  There is a problem on the PowerStack 2's (PowerStack Pro's) using a
  different irq/drq than the kernel expects.  Unfortunately, I don't know
  which irq/drq it is so if anyone knows please email me.

  Midi is not supported since the cs4232 driver doesn't support midi yet.

2. IBM PowerPersonal PReP machines

  I've only tested sound on the Power Personal Series of IBM workstations
  so if you try it on others please let me know the result.  I'm especially
  interested in the 43p's sound system, which I know nothing about.

  Enable support for "Crystal CS4232 based (PnP) cards" and for the
  Microsoft Sound System.  The MSS isn't used, but some of the routines
  that the CS4232 driver uses are in it.

  Although the options you set are ignored and determined automatically
  on boot these are included for information only:

  (530) CS4232 audio I/O base 530, 604, E80 or F40
  (5) CS4232 audio IRQ 5, 7, 9, 11, 12 or 15
  (1) CS4232 audio DMA 0, 1 or 3
  (7) CS4232 second (duplex) DMA 0, 1 or 3
  (330) CS4232 MIDI I/O base 330, 370, 3B0 or 3F0
  (9) CS4232 MIDI IRQ 5, 7, 9, 11, 12 or 15

  This setup does _NOT_ allow for recording yet.

  Midi is not supported since the cs4232 driver doesn't support midi yet.

2. IBM CHRP

  I have only tested this on the 43P-150.  Build the kernel with the cs4232
  set as a module and load the module with irq=9 dma=1 dma2=2 io=0x550
