.mmap      = snd_pcm_lib_mmap_vmalloc,
        };
        struct snd_pcm *pcm;
-       unsigned int i, max_capture, max_playback, capture, playback;
+       unsigned int capture, playback;
+       int i, j;
        int err;
 
-       /* Check whether PCM substreams are required. */
-       if (dice->force_two_pcms) {
-               max_capture = max_playback = 2;
-       } else {
-               int j;
-               max_capture = max_playback = 0;
-               for (i = 0; i < MAX_STREAMS; ++i) {
-                       for (j = 0; j < SND_DICE_RATE_MODE_COUNT; ++j) {
-                               if (dice->tx_pcm_chs[i][j] > 0) {
-                                       ++max_capture;
-                                       break;
-                               }
-                       }
-
-                       for (j = 0; j < SND_DICE_RATE_MODE_COUNT; ++j) {
-                               if (dice->rx_pcm_chs[i][j] > 0) {
-                                       ++max_playback;
-                                       break;
-                               }
-                       }
-               }
-       }
-
        for (i = 0; i < MAX_STREAMS; i++) {
                capture = playback = 0;
-               if (i < max_capture)
-                       capture = 1;
-               if (i < max_playback)
-                       playback = 1;
-               if (capture == 0 && playback == 0)
-                       break;
+               for (j = 0; j < SND_DICE_RATE_MODE_COUNT; ++j) {
+                       if (dice->tx_pcm_chs[i][j] > 0)
+                               capture = 1;
+                       if (dice->rx_pcm_chs[i][j] > 0)
+                               playback = 1;
+               }
 
                err = snd_pcm_new(dice->card, "DICE", i, playback, capture,
                                  &pcm);
 
 
 #define MODEL_ALESIS_IO_BOTH   0x000001
 
-/*
- * Some models support several isochronous channels, while these streams are not
- * always available. In this case, add the model name to this list.
- */
-static bool force_two_pcm_support(struct fw_unit *unit)
-{
-       static const char *const models[] = {
-               /* TC Electronic models. */
-               "StudioKonnekt48",
-               /* Focusrite models. */
-               "SAFFIRE_PRO_40",
-               "LIQUID_SAFFIRE_56",
-               "SAFFIRE_PRO_40_1",
-       };
-       char model[32];
-       unsigned int i;
-       int err;
-
-       err = fw_csr_string(unit->directory, CSR_MODEL, model, sizeof(model));
-       if (err < 0)
-               return false;
-
-       for (i = 0; i < ARRAY_SIZE(models); i++) {
-               if (strcmp(models[i], model) == 0)
-                       break;
-       }
-
-       return i < ARRAY_SIZE(models);
-}
-
 static int check_dice_category(struct fw_unit *unit)
 {
        struct fw_device *device = fw_parent_device(unit);
                }
        }
 
-       if (vendor == OUI_FOCUSRITE || vendor == OUI_TCELECTRONIC) {
-               if (force_two_pcm_support(unit))
-                       return 0;
-       }
-
        if (vendor == OUI_WEISS)
                category = WEISS_CATEGORY_ID;
        else if (vendor == OUI_LOUD)
        if (err < 0)
                return;
 
-       if (force_two_pcm_support(dice->unit))
-               dice->force_two_pcms = true;
-
        err = snd_dice_transaction_init(dice);
        if (err < 0)
                goto error;
 
        bool global_enabled;
        struct completion clock_accepted;
        unsigned int substreams_counter;
-
-       bool force_two_pcms;
 };
 
 enum snd_dice_addr_type {