Commit a5916977 authored by Gregory Greenman's avatar Gregory Greenman Committed by Wey-Yi Guy
Browse files

iwlwifi: Connect IDI transport to driver.



This patch connects IDI transport to driver. It does so
by using a number of ifdefs at this stage.
IDI is a new transport that is under development.
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
parent ed6a3803
...@@ -454,7 +454,11 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -454,7 +454,11 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
bus->irq = pdev->irq; bus->irq = pdev->irq;
bus->ops = &bus_ops_pci; 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); err = iwl_probe(bus, &trans_ops_pcie, cfg);
#endif
if (err) if (err)
goto out_disable_msi; goto out_disable_msi;
return 0; return 0;
......
...@@ -35,6 +35,10 @@ ...@@ -35,6 +35,10 @@
#include "iwl-io.h" #include "iwl-io.h"
#include "iwl-trans-pcie-int.h" #include "iwl-trans-pcie-int.h"
#ifdef CONFIG_IWLWIFI_IDI
#include "iwl-amfh.h"
#endif
/****************************************************************************** /******************************************************************************
* *
* RX path functions * RX path functions
...@@ -1100,8 +1104,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans) ...@@ -1100,8 +1104,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
/* Disable periodic interrupt; we use it as just a one-shot. */ /* Disable periodic interrupt; we use it as just a one-shot. */
iwl_write8(bus(trans), CSR_INT_PERIODIC_REG, iwl_write8(bus(trans), CSR_INT_PERIODIC_REG,
CSR_INT_PERIODIC_DIS); CSR_INT_PERIODIC_DIS);
#ifdef CONFIG_IWLWIFI_IDI
iwl_amfh_rx_handler();
#else
iwl_rx_handle(trans); iwl_rx_handle(trans);
#endif
/* /*
* Enable periodic interrupt in 8 msec only if we received * Enable periodic interrupt in 8 msec only if we received
* real RX interrupt (instead of just periodic int), to catch * real RX interrupt (instead of just periodic int), to catch
...@@ -1123,7 +1130,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans) ...@@ -1123,7 +1130,11 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
isr_stats->tx++; isr_stats->tx++;
handled |= CSR_INT_BIT_FH_TX; handled |= CSR_INT_BIT_FH_TX;
/* Wake up uCode load routine, now that load is complete */ /* 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; trans->ucode_write_complete = 1;
#endif
wake_up(&trans->shrd->wait_command_queue); wake_up(&trans->shrd->wait_command_queue);
} }
......
...@@ -647,8 +647,10 @@ static int iwl_nic_init(struct iwl_trans *trans) ...@@ -647,8 +647,10 @@ static int iwl_nic_init(struct iwl_trans *trans)
iwl_nic_config(priv(trans)); iwl_nic_config(priv(trans));
#ifndef CONFIG_IWLWIFI_IDI
/* Allocate the RX queue, or reset if it is already allocated */ /* Allocate the RX queue, or reset if it is already allocated */
iwl_rx_init(trans); iwl_rx_init(trans);
#endif
/* Allocate or reset and init all Tx and Command queues */ /* Allocate or reset and init all Tx and Command queues */
if (iwl_tx_init(trans)) if (iwl_tx_init(trans))
...@@ -1016,8 +1018,9 @@ static void iwl_trans_pcie_stop_device(struct iwl_trans *trans) ...@@ -1016,8 +1018,9 @@ static void iwl_trans_pcie_stop_device(struct iwl_trans *trans)
*/ */
if (test_bit(STATUS_DEVICE_ENABLED, &trans->shrd->status)) { if (test_bit(STATUS_DEVICE_ENABLED, &trans->shrd->status)) {
iwl_trans_tx_stop(trans); iwl_trans_tx_stop(trans);
#ifndef CONFIG_IWLWIFI_IDI
iwl_trans_rx_stop(trans); iwl_trans_rx_stop(trans);
#endif
/* Power-down device's busmaster DMA clocks */ /* Power-down device's busmaster DMA clocks */
iwl_write_prph(bus(trans), APMG_CLK_DIS_REG, iwl_write_prph(bus(trans), APMG_CLK_DIS_REG,
APMG_CLK_VAL_DMA_CLK_RQT); APMG_CLK_VAL_DMA_CLK_RQT);
...@@ -1298,7 +1301,9 @@ static void iwl_trans_pcie_free(struct iwl_trans *trans) ...@@ -1298,7 +1301,9 @@ static void iwl_trans_pcie_free(struct iwl_trans *trans)
{ {
iwl_calib_free_results(trans); iwl_calib_free_results(trans);
iwl_trans_pcie_tx_free(trans); iwl_trans_pcie_tx_free(trans);
#ifndef CONFIG_IWLWIFI_IDI
iwl_trans_pcie_rx_free(trans); iwl_trans_pcie_rx_free(trans);
#endif
free_irq(bus(trans)->irq, trans); free_irq(bus(trans)->irq, trans);
iwl_free_isr_ict(trans); iwl_free_isr_ict(trans);
trans->shrd->trans = NULL; trans->shrd->trans = NULL;
......
...@@ -383,6 +383,7 @@ static inline int iwl_trans_resume(struct iwl_trans *trans) ...@@ -383,6 +383,7 @@ static inline int iwl_trans_resume(struct iwl_trans *trans)
* Transport layers implementations * Transport layers implementations
******************************************************/ ******************************************************/
extern const struct iwl_trans_ops trans_ops_pcie; 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, int iwl_alloc_fw_desc(struct iwl_bus *bus, struct fw_desc *desc,
const void *data, size_t len); const void *data, size_t len);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment