diff --git a/targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c b/targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c
index 8f9379f73b784425439ec5ba9df38512694dab63..8a347a73ed0519e3fee7495e4e60b73324127ccd 100644
--- a/targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c
+++ b/targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c
@@ -246,9 +246,6 @@ int exmimo_firmware_init(int card)
     iowrite32( pphys_exmimo_pci_phys[card], (bar[card]+PCIE_PCIBASEL) );  // lower 32bit of address
     iowrite32( 0, (bar[card]+PCIE_PCIBASEH) );                            // higher 32bit of address
     
-    if ( exmimo_pci_kvirt[card].exmimo_id_ptr->board_swrev == BOARD_SWREV_CMDREGISTERS )
-        iowrite32( EXMIMO_CONTROL2_COOKIE, bar[card]+PCIE_CONTROL2 );
-
     //printk("exmimo_firmware_init(): initializing Leon (EXMIMO_PCIE_INIT)...\n");
     exmimo_send_pccmd(card, EXMIMO_PCIE_INIT);
     
@@ -309,15 +306,6 @@ int exmimo_send_pccmd(int card_id, unsigned int cmd)
     //    printk("Readback of control0 %x\n",ioread32(bar[0]+PCIE_CONTROL0));
     
     // workaround for ExMIMO1: no command ack -> sleep
-    if ( exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_LEGACY ) {
-        switch(cmd) {  // currently, exmimo1 implements no command ack in bootloader -> sleep
-            case EXMIMO_PCIE_INIT : msleep(1000); break;
-            case EXMIMO_GET_FRAME : /* no sleep - wait for GET_FRAME_DONE*/ ; break;
-            case EXMIMO_START_RT_ACQUISITION : /* no sleep */ ; break;
-            default: msleep(500); break;
-        }
-    }
-    else {
         while (cnt<100 && ( ioread32(bar[card_id]+PCIE_CONTROL1) != EXMIMO_NOP )) {
             //printk("ctrl0: %08x, ctrl1: %08x, ctrl2: %08x, status: %08x\n", ioread32(bar[card_id]+PCIE_CONTROL0), ioread32(bar[card_id]+PCIE_CONTROL1), ioread32(bar[card_id]+PCIE_CONTROL2), ioread32(bar[card_id]+PCIE_STATUS));
             msleep(100);
@@ -325,7 +313,7 @@ int exmimo_send_pccmd(int card_id, unsigned int cmd)
         }
         if (cnt==100)
             printk("exmimo_send_pccmd error: Timeout: no EXMIMO_NOP received within 10sec for card%d, pccmd=%x\n", card_id, cmd);
-    }
+    
     //printk("Ctrl0: %08x, ctrl1: %08x, ctrl2: %08x, status: %08x\n", ioread32(bar[card_id]+PCIE_CONTROL0), ioread32(bar[card_id]+PCIE_CONTROL1), ioread32(bar[card_id]+PCIE_CONTROL2), ioread32(bar[card_id]+PCIE_STATUS));
     return(0);
 }
diff --git a/targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c b/targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c
index 3dc7c0faf8bf5ed1e474484da1b3fb0a7b75f407..de031cddaefe0f85665f185fc6d0b0b234fb5943 100755
--- a/targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c
+++ b/targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c
@@ -381,7 +381,7 @@ int openair_device_ioctl(struct inode *inode,struct file *filp, unsigned int cmd
                 fw_block[1] = update_firmware_stack_pointer;
       
                 exmimo_send_pccmd(c, EXMIMO_FW_START_EXEC);
-                
+                msleep(10); 
                 exmimo_firmware_init(c);
             }
             break;
diff --git a/targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c b/targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c
index b23f64c5cde2dd1ff316d8fb83e185289a8287be..4786ad23407dd667d3a6b796abe50172fdc052bf 100644
--- a/targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c
+++ b/targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c
@@ -35,7 +35,7 @@ irqreturn_t openair_irq_handler(int irq, void *cookie)
     unsigned int irqval;
     unsigned int irqcmd = EXMIMO_NOP;
     unsigned long card_id; // = (unsigned long) cookie;
-    unsigned int pcie_control = PCIE_CONTROL1;
+    unsigned int pcie_control = PCIE_CONTROL2;
 
     // check interrupt status register
     //pci_read_config_word(pdev[0],6 , &irqval);
@@ -45,11 +45,6 @@ irqreturn_t openair_irq_handler(int irq, void *cookie)
         if ( pdev[card_id] == cookie )
             break;
 
-    if (exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_LEGACY)
-        pcie_control = PCIE_CONTROL1;
-    else if (exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_CMDREGISTERS)
-        pcie_control = PCIE_CONTROL2;
-
     //printk("irq hndl called: card_id=%i, irqval=%i\n", card_id, irqval);
 
     // get AHBPCIE interrupt line (bit 7) to determine if IRQ was for us from ExMIMO card, or from a different device
@@ -60,51 +55,31 @@ irqreturn_t openair_irq_handler(int irq, void *cookie)
     //printk("IRQ handler: ctrl0: %08x, ctrl1: %08x, ctrl2: %08x, status: %08x\n", irqval, ioread32(bar[card_id]+PCIE_CONTROL1), ioread32(bar[card_id]+PCIE_CONTROL2), ioread32(bar[card_id]+PCIE_STATUS));
     
     if ( (irqval & 0x80) == 0 )  {  // CTRL0.bit7 is no set -> IRQ is not from ExMIMO i.e. not for us 
-        if ( irqcmd != EXMIMO_NOP ) {
-            static int hide_warning=0;
-            if (hide_warning == 0) {
-                printk("EXMIMO: Warning: unclear source of IRQ: CTL0.bit7 not set, but cmd!=EXMIMO_NOP. Will now execute irqcmd (card %lu, cmd 0x%X). Will hide all future warnings!\n", card_id, irqcmd);
-                hide_warning = 1;
-            }
-        }
-        else
             return IRQ_NONE;
     }
-    if (exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_LEGACY) {
-        // clear PCIE interrupt bit (bit 7 of register 0x0)
-        if ( (irqval&0x80) != 0)
-            iowrite32(irqval&0xffffff7f,bar[card_id]+PCIE_CONTROL0);
-    }
+    else
+    {
 
     if (irqcmd == GET_FRAME_DONE)
     {
         get_frame_done = 1;
     }
-    else if (irqcmd == PCI_PRINTK)
-    {
-        // TODO: copy printk_buffer into FIFO to allow several consecutive printks and ACK pcie_printk
-        //iowrite32(EXMIMO_NOP, bar[card_id]+pcie_control);
-    }
     
     openair_tasklet.data = card_id;
     tasklet_schedule(&openair_tasklet);
     openair_bh_cnt++;
 
     return IRQ_HANDLED;
+    }
 }
 
 void openair_do_tasklet (unsigned long card_id)
 {
     int save_irq_cnt = openair_bh_cnt;
     unsigned int irqcmd;
-    unsigned int pcie_control = PCIE_CONTROL1;
+    unsigned int pcie_control = PCIE_CONTROL2;
     openair_bh_cnt = 0;
     
-    if (exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_LEGACY)
-        pcie_control = PCIE_CONTROL1;
-    else if (exmimo_pci_kvirt[card_id].exmimo_id_ptr->board_swrev == BOARD_SWREV_CMDREGISTERS)
-        pcie_control = PCIE_CONTROL2;
-        
     irqcmd = ioread32(bar[card_id]+pcie_control);
     
     if (save_irq_cnt > 1)
@@ -143,7 +118,7 @@ void pcie_printk(int card_id)
     //printk("In pci_fifo_printk : buffer %p, len %d: \n",buffer,len);
     printk("[LEON card%d]: ", card_id);
 
-    if (len<256)
+    if (len<1024)
     {
         if ( (len&3) >0 )
             off=1;
diff --git a/targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c b/targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c
index 7fef82c51c73b373db753edd7abbc8c0cf42bd2c..ba468b063c61d86a7a329a7dadc6b3e463ff39a7 100755
--- a/targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c
+++ b/targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c
@@ -189,7 +189,7 @@ static int __init openair_init_module( void )
             openair_cleanup();
             return -EIO;
         }
-        iowrite32((1<<8) | (1<<9) | (1<<10), bar[card] +PCIE_CONTROL0 ); // bit8=AHBPCIE_CTL0_SOFTRESET, but what is bit9 and bit10?
+        iowrite32((1<<8), bar[card] +PCIE_CONTROL0 ); // bit8=AHBPCIE_CTL0_SOFTRESET, but what is bit9 and bit10?
         udelay(1000);
         readback = ioread32( bar[card] +PCIE_CONTROL0);
         printk("CONTROL0 readback %x\n",readback);