These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / firewire / bebob / bebob.c
index 611b7da..091290d 100644 (file)
@@ -33,6 +33,7 @@ static DEFINE_MUTEX(devices_mutex);
 static DECLARE_BITMAP(devices_used, SNDRV_CARDS);
 
 /* Offsets from information register. */
+#define INFO_OFFSET_BEBOB_VERSION      0x08
 #define INFO_OFFSET_GUID               0x10
 #define INFO_OFFSET_HW_MODEL_ID                0x18
 #define INFO_OFFSET_HW_MODEL_REVISION  0x1c
@@ -40,7 +41,8 @@ static DECLARE_BITMAP(devices_used, SNDRV_CARDS);
 #define VEN_EDIROL     0x000040ab
 #define VEN_PRESONUS   0x00000a92
 #define VEN_BRIDGECO   0x000007f5
-#define VEN_MACKIE     0x0000000f
+#define VEN_MACKIE1    0x0000000f
+#define VEN_MACKIE2    0x00000ff2
 #define VEN_STANTON    0x00001260
 #define VEN_TASCAM     0x0000022e
 #define VEN_BEHRINGER  0x00001564
@@ -57,6 +59,7 @@ static DECLARE_BITMAP(devices_used, SNDRV_CARDS);
 #define VEN_FOCUSRITE  0x0000130e
 #define VEN_MAUDIO1    0x00000d6c
 #define VEN_MAUDIO2    0x000007f5
+#define VEN_DIGIDESIGN 0x00a07e
 
 #define MODEL_FOCUSRITE_SAFFIRE_BOTH   0x00000000
 #define MODEL_MAUDIO_AUDIOPHILE_BOTH   0x00010060
@@ -72,6 +75,7 @@ name_device(struct snd_bebob *bebob, unsigned int vendor_id)
        u32 hw_id;
        u32 data[2] = {0};
        u32 revision;
+       u32 version;
        int err;
 
        /* get vendor name from root directory */
@@ -104,6 +108,12 @@ name_device(struct snd_bebob *bebob, unsigned int vendor_id)
        if (err < 0)
                goto end;
 
+       err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_BEBOB_VERSION,
+                                 &version);
+       if (err < 0)
+               goto end;
+       bebob->version = version;
+
        strcpy(bebob->card->driver, "BeBoB");
        strcpy(bebob->card->shortname, model);
        strcpy(bebob->card->mixername, model);
@@ -325,7 +335,7 @@ static void bebob_remove(struct fw_unit *unit)
        snd_card_free_when_closed(bebob->card);
 }
 
-static struct snd_bebob_rate_spec normal_rate_spec = {
+static const struct snd_bebob_rate_spec normal_rate_spec = {
        .get    = &snd_bebob_stream_get_rate,
        .set    = &snd_bebob_stream_set_rate
 };
@@ -351,9 +361,9 @@ static const struct ieee1394_device_id bebob_id_table[] = {
        /* BridgeCo, Audio5 */
        SND_BEBOB_DEV_ENTRY(VEN_BRIDGECO, 0x00010049, &spec_normal),
        /* Mackie, Onyx 1220/1620/1640 (Firewire I/O Card) */
-       SND_BEBOB_DEV_ENTRY(VEN_MACKIE, 0x00010065, &spec_normal),
+       SND_BEBOB_DEV_ENTRY(VEN_MACKIE2, 0x00010065, &spec_normal),
        /* Mackie, d.2 (Firewire Option) */
-       SND_BEBOB_DEV_ENTRY(VEN_MACKIE, 0x00010067, &spec_normal),
+       SND_BEBOB_DEV_ENTRY(VEN_MACKIE1, 0x00010067, &spec_normal),
        /* Stanton, ScratchAmp */
        SND_BEBOB_DEV_ENTRY(VEN_STANTON, 0x00000001, &spec_normal),
        /* Tascam, IF-FW DM */
@@ -364,6 +374,10 @@ static const struct ieee1394_device_id bebob_id_table[] = {
        SND_BEBOB_DEV_ENTRY(VEN_BEHRINGER, 0x00001604, &spec_normal),
        /* Behringer, Digital Mixer X32 series (X-UF Card) */
        SND_BEBOB_DEV_ENTRY(VEN_BEHRINGER, 0x00000006, &spec_normal),
+       /*  Behringer, F-Control Audio 1616 */
+       SND_BEBOB_DEV_ENTRY(VEN_BEHRINGER, 0x001616, &spec_normal),
+       /*  Behringer, F-Control Audio 610 */
+       SND_BEBOB_DEV_ENTRY(VEN_BEHRINGER, 0x000610, &spec_normal),
        /* Apogee Electronics, Rosetta 200/400 (X-FireWire card) */
        /* Apogee Electronics, DA/AD/DD-16X (X-FireWire card) */
        SND_BEBOB_DEV_ENTRY(VEN_APOGEE, 0x00010048, &spec_normal),
@@ -433,11 +447,11 @@ static const struct ieee1394_device_id bebob_id_table[] = {
        /* M-Audio ProjectMix */
        SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, MODEL_MAUDIO_PROJECTMIX,
                            &maudio_special_spec),
+       /* Digidesign Mbox 2 Pro */
+       SND_BEBOB_DEV_ENTRY(VEN_DIGIDESIGN, 0x0000a9, &spec_normal),
        /* IDs are unknown but able to be supported */
        /*  Apogee, Mini-ME Firewire */
        /*  Apogee, Mini-DAC Firewire */
-       /*  Behringer, F-Control Audio 1616 */
-       /*  Behringer, F-Control Audio 610 */
        /*  Cakawalk, Sonar Power Studio 66 */
        /*  CME, UF400e */
        /*  ESI, Quotafire XL */