if (!strncmp(ci->name, "EAE PLX-PCI FB2", 15))
                        lp->backplane = 1;
 
-               /* Get the dev_id from the PLX rotary coder */
-               if (!strncmp(ci->name, "EAE PLX-PCI MA1", 15))
-                       dev_id_mask = 0x3;
-               dev->dev_id = (inb(priv->misc + ci->rotary) >> 4) & dev_id_mask;
-
-               snprintf(dev->name, sizeof(dev->name), "arc%d-%d", dev->dev_id, i);
+               if (ci->flags & ARC_HAS_ROTARY) {
+                       /* Get the dev_id from the PLX rotary coder */
+                       if (!strncmp(ci->name, "EAE PLX-PCI MA1", 15))
+                               dev_id_mask = 0x3;
+                       dev->dev_id = (inb(priv->misc + ci->rotary) >> 4) & dev_id_mask;
+                       snprintf(dev->name, sizeof(dev->name), "arc%d-%d", dev->dev_id, i);
+               }
 
                if (arcnet_inb(ioaddr, COM20020_REG_R_STATUS) == 0xFF) {
                        pr_err("IO address %Xh is empty!\n", ioaddr);
                        goto err_free_arcdev;
                }
 
+               ret = com20020_found(dev, IRQF_SHARED);
+               if (ret)
+                       goto err_free_arcdev;
+
                card = devm_kzalloc(&pdev->dev, sizeof(struct com20020_dev),
                                    GFP_KERNEL);
                if (!card) {
 
                card->index = i;
                card->pci_priv = priv;
-               card->tx_led.brightness_set = led_tx_set;
-               card->tx_led.default_trigger = devm_kasprintf(&pdev->dev,
-                                               GFP_KERNEL, "arc%d-%d-tx",
-                                               dev->dev_id, i);
-               card->tx_led.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
-                                               "pci:green:tx:%d-%d",
-                                               dev->dev_id, i);
-
-               card->tx_led.dev = &dev->dev;
-               card->recon_led.brightness_set = led_recon_set;
-               card->recon_led.default_trigger = devm_kasprintf(&pdev->dev,
-                                               GFP_KERNEL, "arc%d-%d-recon",
-                                               dev->dev_id, i);
-               card->recon_led.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
-                                               "pci:red:recon:%d-%d",
-                                               dev->dev_id, i);
-               card->recon_led.dev = &dev->dev;
-               card->dev = dev;
-
-               ret = devm_led_classdev_register(&pdev->dev, &card->tx_led);
-               if (ret)
-                       goto err_free_arcdev;
 
-               ret = devm_led_classdev_register(&pdev->dev, &card->recon_led);
-               if (ret)
-                       goto err_free_arcdev;
-
-               dev_set_drvdata(&dev->dev, card);
-
-               ret = com20020_found(dev, IRQF_SHARED);
-               if (ret)
-                       goto err_free_arcdev;
-
-               devm_arcnet_led_init(dev, dev->dev_id, i);
+               if (ci->flags & ARC_HAS_LED) {
+                       card->tx_led.brightness_set = led_tx_set;
+                       card->tx_led.default_trigger = devm_kasprintf(&pdev->dev,
+                                                       GFP_KERNEL, "arc%d-%d-tx",
+                                                       dev->dev_id, i);
+                       card->tx_led.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
+                                                       "pci:green:tx:%d-%d",
+                                                       dev->dev_id, i);
+
+                       card->tx_led.dev = &dev->dev;
+                       card->recon_led.brightness_set = led_recon_set;
+                       card->recon_led.default_trigger = devm_kasprintf(&pdev->dev,
+                                                       GFP_KERNEL, "arc%d-%d-recon",
+                                                       dev->dev_id, i);
+                       card->recon_led.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
+                                                       "pci:red:recon:%d-%d",
+                                                       dev->dev_id, i);
+                       card->recon_led.dev = &dev->dev;
+
+                       ret = devm_led_classdev_register(&pdev->dev, &card->tx_led);
+                       if (ret)
+                               goto err_free_arcdev;
+
+                       ret = devm_led_classdev_register(&pdev->dev, &card->recon_led);
+                       if (ret)
+                               goto err_free_arcdev;
+
+                       dev_set_drvdata(&dev->dev, card);
+                       devm_arcnet_led_init(dev, dev->dev_id, i);
+               }
 
+               card->dev = dev;
                list_add(&card->list, &priv->list_dev);
                continue;
 
 };
 
 static struct com20020_pci_card_info card_info_sohard = {
-       .name = "PLX-PCI",
+       .name = "SOHARD SH ARC-PCI",
        .devcount = 1,
        /* SOHARD needs PCI base addr 4 */
        .chan_map_tbl = {
                },
        },
        .rotary = 0x0,
-       .flags = ARC_CAN_10MBIT,
+       .flags = ARC_HAS_ROTARY | ARC_HAS_LED | ARC_CAN_10MBIT,
 };
 
 static struct com20020_pci_card_info card_info_eae_ma1 = {
                },
        },
        .rotary = 0x0,
-       .flags = ARC_CAN_10MBIT,
+       .flags = ARC_HAS_ROTARY | ARC_HAS_LED | ARC_CAN_10MBIT,
 };
 
 static struct com20020_pci_card_info card_info_eae_fb2 = {
                },
        },
        .rotary = 0x0,
-       .flags = ARC_CAN_10MBIT,
+       .flags = ARC_HAS_ROTARY | ARC_HAS_LED | ARC_CAN_10MBIT,
 };
 
 static const struct pci_device_id com20020pci_id_table[] = {