struct as10x_bus_adapter_t bus_adap;
        struct list_head device_entry;
        struct kref kref;
-       unsigned long minor;
+       uint8_t elna_cfg;
 
        struct dvb_adapter dvb_adap;
        struct dvb_frontend dvb_fe;
 
 
        if (acquire) {
                if (elna_enable)
-                       as10x_cmd_set_context(&dev->bus_adap, 1010, 0xC0);
+                       as10x_cmd_set_context(&dev->bus_adap, CONTEXT_LNA, dev->elna_cfg);
 
                ret = as10x_cmd_turn_on(&dev->bus_adap);
        } else {
 
        NULL /* Terminating entry */
 };
 
+/* eLNA configuration: devices built on the reference design work best
+   with 0xA0, while custom designs seem to require 0xC0 */
+static uint8_t const as102_elna_cfg[] = {
+       0xA0,
+       0xC0,
+       0xC0,
+       0xA0,
+       0xA0,
+       0x00 /* Terminating entry */
+};
+
 struct usb_driver as102_usb_driver = {
        .name           = DRIVER_FULL_NAME,
        .probe          = as102_usb_probe,
        /* Assign the user-friendly device name */
        for (i = 0; i < (sizeof(as102_usb_id_table) /
                         sizeof(struct usb_device_id)); i++) {
-               if (id == &as102_usb_id_table[i])
+               if (id == &as102_usb_id_table[i]) {
                        as102_dev->name = as102_device_names[i];
+                       as102_dev->elna_cfg = as102_elna_cfg[i];
+               }
        }
 
        if (as102_dev->name == NULL)