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: Gregory Greenman <gregory.greenman@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
parent
ed6a380340
commit
a591697730
|
@ -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 @@
|
||||||
#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)
|
||||||
/* 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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
* 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);
|
||||||
|
|
Loading…
Reference in New Issue