bebob: Add skelton for BeBoB based devices

This commit add a new driver for BeBoB based devices with no functionality. This
driver just create/remove card instance according to callbacks.

Current supported devices:
 - Edirol FA-66/FA-101
 - PreSonus FIREBOX/FIREPOD
 - BridgeCo RDAudio1/Audio5
 - Mackie Onyx 820/1220/1620/1640 (Firewire I/O Card)
 - Mackie d.2 (Firewire Option)
 - Stanton FinalScratch 2 (ScratchAmp)
 - Tascam  IF-FW DM
 - Apogee Rosetta 200/Rosetta 400 (X-FireWire card)
 - Apogee DA-16X/AD-16X/DD-16X (X-FireWire card)
 - ESI Quotafire610
 - AcousticReality eARMasterOne
 - CME MatrixKFW
 - Phonic HB12/12 MkII/12 Universal
 - Phonic HB18/18 MkII/18 Universal
 - Phonic HB24/24 MkII/24 Universal
 - Phonic FireFly 202/302
 - Lynx Aurora 8/16 (LT-FW)
 - ICON FireXon
 - PrismSound, Orpheus/ADA-8XR

Devices possible to be supported if identifying IDs:
 - PreSonus Inspire 1394
 - Mackie Digital X Bus x.200/400
 - CME UF400e
 - Infrasonic DewX/Windy6
 - Rolf Spuler Firewire Guitar
bebob: Add command and stream management

This commit adds BridgeCo's AV/C extension commands and connection/stream
management. The driver can get channel combination with the commands.
bebob: Add proc interface for debug

This commit adds proc interface to get chipset information and stream
formation for debug.
bebob: Add MIDI interface

This commit adds a functionality to capture/playback MIDI messages.

When no AMDTP streams are running, this module starts AMDTP stream at current
sampling rate for MIDI stream.
bebob: Add PCM interface

This commit adds a functionality to capture/playback PCM samples.

When AMDTP stream is already running for PCM or the source of clock is not
internal, available sampling rate is limited at current one.
fireworks: Add hwdep interface

This interface is designed for mixer/control application. To use hwdep
interface, the application can get information about firewire node, can
lock/unlock kernel streaming and can get notification at starting/stopping
kernel streaming.
bebob: Prepare for device specific operations

This commit is for some devices with its own operations or quirks.

Many functionality should be implemented in user land. Then this commit adds
functionality related to stream such as sampling frequency or clock source. And
some device need cue to load firmware. This commit adds this mechanism. For
help to debug, this commit adds the functionality to get metering information
if it's available.

To help these functionalities, this commit adds some AV/C commands defined in
'AV/C Audio Subunit Specification (1394TA).
bebob: Add support for Yamaha GO series

This commit allows this driver to support all of models which Yamaha produced
with DM1000/BeBoB. They are:
 - GO44
 - GO46

This commit adds Yamaha specific operations. To get source of clock, AV/C Audio
Subunit command is used.
bebob: Add support for Terratec PHASE, EWS series and Aureon

This commit allows this driver to support all of models which Terratec produced
with DM1000/BeBoB. They are:
 - PHASE 24 FW
 - PHASE X24 FW
 - PHASE 88 Rack FW
 - EWS MIC2
 - EWS MIC4
 - Aureon 7.1 Firewire

For Phase series, this commit adds Terratec specific operations to changing
source of clock. AV/C Audio Subunit command is used for this purpose.

For EWS series and Aureon, this module uses normal operations.
bebob: Add support for Focusrite Saffire/SaffirePro series

This commit allows this driver to support all of models which Focusrite
produces with DM1000/BeBoB. They are:
 - Saffire
 - Saffire LE
 - SaffirePro 10 I/O
 - SaffirePro 26 I/O

This commit adds Focusrite specific operations:.
1. Get source of clock
2. Change sampling frequency
3. Get metering information

The driver uses these functionalities to read/write specific address by async
transaction.
bebob: Add support for M-Audio Firewire series

This commit allows this driver to support all of models which M-Audio produces
with DM1000/BeBoB. They are:
 - Firewire Solo
 - Firewire AudioPhile
 - Firewire 410
 - Firewire 1814
 - Ozonic
 - NRV10
 - ProjectMix I/O
 - FirewireLightBridge

This commit adds M-Audio specific operations, quirks and functionalities. They
are categorized to three parts.

1. sending cue to load firmware
This is for 'Firewire Audiophile', 'Firewire410', 'Firewire1814' and
'ProjectMix I/O'. With firmware version 5058 or later, they wait to receive a
cue to load firmware just after powering on. With less firmware version, they
wait to upload firmware binary blob so this driver can't handle this versions.
This functionality can be implemented in user land but currently in kernel land
for my convinience.

2. switching source of clock
This if for 'Firewire Solo', 'Firewire Audiophile', 'Firewire410',
'Firewire1814' and'ProjectMix I/O'. They can switch source of clock with signal
source command but the value of parameters is a bit different.

3. handling metering information
This is all of models, mainly for my debugging. This information includes
information for clock synchronization.

Firewire1814 and ProjectMix I/O has BeBoB firmware but it's heavily customized.
The usual operations given by BeBoB aren't be applied for them. For this reason,
this commit add some model specific members in 'struct snd_bebob' and model
specific functions and control interface.