#define MWL8K_TX_QUEUES                4
 
 struct mwl8k_device_info {
-       int part_num;
+       char *part_name;
+       char *helper_image;
+       char *fw_image;
 };
 
 struct mwl8k_rx_queue {
 
 /* Pointers to the firmware data and meta information about it.  */
 struct mwl8k_firmware {
-       /* Microcode */
-       struct firmware *ucode;
-
        /* Boot helper code */
        struct firmware *helper;
+
+       /* Microcode */
+       struct firmware *ucode;
 };
 
 struct mwl8k_priv {
 
 static int mwl8k_request_firmware(struct mwl8k_priv *priv)
 {
-       u8 filename[64];
+       struct mwl8k_device_info *di = priv->device_info;
        int rc;
 
-       snprintf(filename, sizeof(filename),
-                "mwl8k/helper_%u.fw", priv->device_info->part_num);
-
-       rc = mwl8k_request_fw(priv, filename, &priv->fw.helper);
-       if (rc) {
-               printk(KERN_ERR "%s: Error requesting helper firmware "
-                      "file %s\n", pci_name(priv->pdev), filename);
-               return rc;
+       if (di->helper_image != NULL) {
+               rc = mwl8k_request_fw(priv, di->helper_image, &priv->fw.helper);
+               if (rc) {
+                       printk(KERN_ERR "%s: Error requesting helper "
+                              "firmware file %s\n", pci_name(priv->pdev),
+                              di->helper_image);
+                       return rc;
+               }
        }
 
-       snprintf(filename, sizeof(filename),
-                "mwl8k/fmimage_%u.fw", priv->device_info->part_num);
-
-       rc = mwl8k_request_fw(priv, filename, &priv->fw.ucode);
+       rc = mwl8k_request_fw(priv, di->fw_image, &priv->fw.ucode);
        if (rc) {
                printk(KERN_ERR "%s: Error requesting firmware file %s\n",
-                      pci_name(priv->pdev), filename);
+                      pci_name(priv->pdev), di->fw_image);
                mwl8k_release_fw(&priv->fw.helper);
                return rc;
        }
 }
 
 static struct mwl8k_device_info di_8687 = {
-       .part_num       = 8687,
+       .part_name      = "88w8687",
+       .helper_image   = "mwl8k/helper_8687.fw",
+       .fw_image       = "mwl8k/fmimage_8687.fw",
 };
 
 static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {
                goto err_stop_firmware;
        }
 
-       printk(KERN_INFO "%s: 88w%u v%d, %pM, firmware version %u.%u.%u.%u\n",
-              wiphy_name(hw->wiphy), priv->device_info->part_num,
+       printk(KERN_INFO "%s: %s v%d, %pM, firmware version %u.%u.%u.%u\n",
+              wiphy_name(hw->wiphy), priv->device_info->part_name,
               priv->hw_rev, hw->wiphy->perm_addr,
               (priv->fw_rev >> 24) & 0xff, (priv->fw_rev >> 16) & 0xff,
               (priv->fw_rev >> 8) & 0xff, priv->fw_rev & 0xff);