snd-bebob: support channel remapping

The posision of each channel in a data block of AMDTP packets is not "linear".
Here I use "linear" to mean the position is not the same as PCM or MIDI
position.

For example, Yamaha Go44:
	channel 0: PCM5 (Digital4)
	channel 1: PCM0 (Analog0)
	channel 2: PCM2 (Analog1)
	channel 3: PCM6 (Digital5)
	channel 4: PCM1 (Analog2)
	channel 5: PCM4 (Analog3)
	channel 6: MIDI0

The driver can understand these positions by bridgeco's AVC extension of
"plug info" command. these are several extensions but this driver utilize
two of them for this purpose. One is "Plug Channel Position Specific Data"
command and another is "Cluster Info Specific Data" command. The former
givess the number of clusters in a data block, the number of channels in each
cluster, the position and "location" of each channel. The latter gives the type
of cluster. (Here "location" means left, right center and so on...)
snd-firewire-lib: move sync mode to CIP flags.

This commit remove "sync_mode" member and add new flags for it to
"struct amdtp_stream". This flag should be set with
"amdtp_stream_set_sync()".
fix minor bugs.
firewire-lib: remove WARN_ON() for firewire context to set transfer_samples()

For time stamp synchronization, amdtp_stream_set_pcm_format() needs to set
callback function to transfer_samples() member in struct amdtp_stream even
if the stream already run.

With this commit, snd-fireworks can handle received samples after starting
transmit stream.
snd-firewire-lib: add MIDI quirk for Echo Fireworks

Echo Fireworks ignores MIDI messages in greater than 8 data blocks in an AMDTP
packet. This commit add a quirk for this to add a argument to
 amdtp_stream_midi_add().
Revert "snd-firewire-lib: add MIDI quirk for Echo Fireworks"

This reverts commit cd6746aba34e11c3cf1b2db52c35b9f42d26afc5.
snd-firewire-lib: add MIDI quirk for Echo Fireworks

Echo Fireworks ignores MIDI messages in greater than 8 data blocks in an AMDTP
packet. This commit add a quirk for this issue to add 'blocks_for_midi' member
in 'struct amdtp_stream'.

As a default, this member is set as INT_MAX. Then whole data blocks in an AMDTP
packet can include MIDI messages. When this is set 'n', first 'n' data blocks
in an AMDTP packet can include MIDI messages.
add hardware information about Echo AudioFire4
fireworks: add wait just after setting clock parameters

With firmware version 5.8, just after changing clock state, these parameters
are not immediately retrieved by get command. In my trial, there needs to be
100msec to get changed parameters.

This commid adds wait for 150msec just after setting command.
fireworks: support switching clock source

mechanism:
1.when detecting clock source, fireworks return bit flag against GET_POLLED
  command. The position of bit is the same as the value of
  enum snd_efw_clock_source. Of cource, any flag stands when multiple clock
  source are available.
  'Internal' is always available, so the first bit always stands.
2.When requesting to switch clock source, driver can set the value by set
  command. Then the firmware returns the changed value against get command.
  This can be done when no other sources than internal. So the driver should
  check the flag before setting.
  When any clock source are set even if they're not available, the firmware
  seems to be select 'Internal' instead of it.
firewire-lib: remove needless initialization for MIDI stuff

struct snd_efw is kept by snd_card_create(). This function keeps memory with
zcalloc so the content is zero-ed. In this reason, initialization for MIDI is
needless.
fireworks/bebob: fix compiling warning

Each module has 'enable' local variable to switch enable/disable the module.
Even if it's registered as 'bool' type option, it's declared as 'int'.
fireworks: shorten the name of 'connection' member

'input_connection' to 'in_conn'
'output_connection' to 'out_conn'
fireworks: change the timing to start stream

Start streaming should be a part of pcm_prepare process.
bebob: enable Firewire 410 to be proved

Firewire 410 with firmware version 5058 has a different vendor id.
fireworks/bebob: migration from Linux 3.8 to Linux 3.11

Juju, the nickname for Linux Firewire Stack, changes some API at Linux 3.11.
This commit change some codes according to it so these modules cannot be build
in older kernel.
bebob: shorten the name related to CMP

'input_connection' to 'in_conn'
'outout_connection' to 'out_conn'
bebob: allow INTERIM state for set_sampling_rate()

M-Audio Firewire 410 returns INTERIUM when 'INPUT PLUG SIGNAL FORMAT' command
is executed to set sampling rate. This commit allow it.
fireworks/bebob: fix NULL pointer dereference when removed

Because of getting wrong pointer for struct snd_efw.
It was a pointer to struct snd_card.
fireworks: add ID for AudioFire8(as of July 2009) and AudioFirePre8

These two devices has the same ID. Then we distinguish them by their name.