bus->irq = pdev->irq;
        bus->ops = &bus_ops_pci;
 
+#ifdef CONFIG_IWLWIFI_IDI
+       err = iwl_probe(bus, &trans_ops_idi, cfg);
+#else
        err = iwl_probe(bus, &trans_ops_pcie, cfg);
+#endif
        if (err)
                goto out_disable_msi;
        return 0;
 
 #include "iwl-io.h"
 #include "iwl-trans-pcie-int.h"
 
+#ifdef CONFIG_IWLWIFI_IDI
+#include "iwl-amfh.h"
+#endif
+
 /******************************************************************************
  *
  * RX path functions
                /* Disable periodic interrupt; we use it as just a one-shot. */
                iwl_write8(bus(trans), CSR_INT_PERIODIC_REG,
                            CSR_INT_PERIODIC_DIS);
+#ifdef CONFIG_IWLWIFI_IDI
+               iwl_amfh_rx_handler();
+#else
                iwl_rx_handle(trans);
-
+#endif
                /*
                 * Enable periodic interrupt in 8 msec only if we received
                 * real RX interrupt (instead of just periodic int), to catch
                isr_stats->tx++;
                handled |= CSR_INT_BIT_FH_TX;
                /* Wake up uCode load routine, now that load is complete */
+#ifdef CONFIG_IWLWIFI_IDI
+               trans->shrd->trans->ucode_write_complete = 1;
+#else
                trans->ucode_write_complete = 1;
+#endif
                wake_up(&trans->shrd->wait_command_queue);
        }
 
 
 
        iwl_nic_config(priv(trans));
 
+#ifndef CONFIG_IWLWIFI_IDI
        /* Allocate the RX queue, or reset if it is already allocated */
        iwl_rx_init(trans);
+#endif
 
        /* Allocate or reset and init all Tx and Command queues */
        if (iwl_tx_init(trans))
         */
        if (test_bit(STATUS_DEVICE_ENABLED, &trans->shrd->status)) {
                iwl_trans_tx_stop(trans);
+#ifndef CONFIG_IWLWIFI_IDI
                iwl_trans_rx_stop(trans);
-
+#endif
                /* Power-down device's busmaster DMA clocks */
                iwl_write_prph(bus(trans), APMG_CLK_DIS_REG,
                               APMG_CLK_VAL_DMA_CLK_RQT);
 {
        iwl_calib_free_results(trans);
        iwl_trans_pcie_tx_free(trans);
+#ifndef CONFIG_IWLWIFI_IDI
        iwl_trans_pcie_rx_free(trans);
+#endif
        free_irq(bus(trans)->irq, trans);
        iwl_free_isr_ict(trans);
        trans->shrd->trans = NULL;
 
 * Transport layers implementations
 ******************************************************/
 extern const struct iwl_trans_ops trans_ops_pcie;
+extern const struct iwl_trans_ops trans_ops_idi;
 
 int iwl_alloc_fw_desc(struct iwl_bus *bus, struct fw_desc *desc,
                      const void *data, size_t len);