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. 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 a Terratec specific operation. To get source
of clock. AV/C Audio Subunit command is used.

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. Get/Set 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 usual Firewire series

This commit allows this driver to support some models which M-Audio produces
with DM1000 with usual firmware. They are:
 - Firewire 410
 - Firewire AudioPhile
 - Firewire Solo
 - Ozonic
 - NRV10
 - FirewireLightBridge

This commit adds M-Audio quirks and specific operations to get metering
information. This information also includes status of clock synchronization if
the model supports to switch source of clock.

M-Audio usual firmware quirks:
 - Just after powering on, Firewire 410 waits to download firmware. This state
   is changed when receiving cue. Then bus reset is generated and the device is
   recognized as a different model with the firmware.
 - Firewire Audiophile also waits to download firmware but the vendor/model id
   is the same as the one after loading firmware.

This module don't support to upload firmware.

The specification of FirewireLightBridge is unknown. So in this time, normal
operations are applied for this model.
bebob: Add support for M-Audio special Firewire series

This commit allows this driver to support some models which M-Audio produces
with DM1000 but its firmware is special. They are:
 - Firewire 1814
 - ProjectMix I/O

They have heavily customized version of BeBoB firmware. The usual operations
can't be applied to them. For this reason, this commit adds some model specific
members in 'struct snd_bebob' and model specific functions. Some parameters are
write-only so this commit also adds control interface for them.

M-Audio special firmware quirks:
 - Just after powering on, they wait to download firmware. This state is
   changed when receiving cue. Then bus reset is generated and the device is
   recognized as a different model with the firmware.
 - They don't respond against BridgeCo extension commands. So drivers can't get
   their stream formations.
 - They do not start to transmit packets only by establishing connection, but
   also by receiving SIGNAL FORMAT command.
 - They can't handle frequent transactions so. In this reason, this driver often
   fail to handle them.

This module don't support to upload firmware.
bebob: Send a cue to load firmware for M-Audio Firewire series

This commit is optional. The purpose of this commit is to help testers.

Just powering on, these devices below wait to download firmware.
 - Firewire Audiophile
 - Firewire 410
 - Firewire 1814
 - ProjectMix I/O

But firmware version 5058 or later, flash memory in the device store it. So
this driver can tell the device to load the firmware by sending a certain cue.

I think this functionality should be implemented in user-land.