ALSA: bebob: add 'version' member for BeBoB protocol version
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 14 Jun 2015 03:49:33 +0000 (12:49 +0900)
committerTakashi Iwai <tiwai@suse.de>
Mon, 15 Jun 2015 11:37:26 +0000 (13:37 +0200)
BeBoB installed devices have BeBoB register area. This area stores
basic information about its firmware. A register has its protocol
version.

This commit adds 'version' member and store the device's protocol
version to handle v3 quirks in following commits.

Tested-by: Kim Tore Jensen <kim@incendio.no>
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/bebob/bebob.c
sound/firewire/bebob/bebob.h

index e71bd35..920571b 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
@@ -73,6 +74,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 */
@@ -105,6 +107,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);
index 11362b3..1520854 100644 (file)
@@ -115,6 +115,9 @@ struct snd_bebob {
        /* for M-Audio special devices */
        void *maudio_special_quirk;
        bool deferred_registration;
+
+       /* For BeBoB version quirk. */
+       unsigned int version;
 };
 
 static inline int