This function is really related to the transport layer - move it.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
IWL_INFO(priv, "Detected %s, REV=0x%X\n",
priv->cfg->name, hw_rev);
- if (iwl_prepare_card_hw(priv)) {
+ if (trans_prepare_card_hw(priv)) {
err = -EIO;
IWL_WARN(priv, "Failed, HW not ready\n");
goto out_free_traffic_mem;
hdr->data_valid = 1;
}
-/* TODO: this one should be API of the transport layer */
-int iwl_prepare_card_hw(struct iwl_priv *priv);
-
/* tx queue */
void iwl_free_tfds_in_queue(struct iwl_priv *priv,
int sta_id, int tid, int freed);
* struct iwl_trans_ops - transport specific operations
* @start_device: allocates and inits all the resources for the transport
* layer.
+ * @prepare_card_hw: claim the ownership on the HW. Will be called during
+ * probe.
* @tx_start: starts and configures all the Tx fifo - usually done once the fw
* is alive.
* @stop_device:stops the whole device (embedded CPU put to reset)
struct iwl_trans_ops {
int (*start_device)(struct iwl_priv *priv);
+ int (*prepare_card_hw)(struct iwl_priv *priv);
void (*stop_device)(struct iwl_priv *priv);
void (*tx_start)(struct iwl_priv *priv);
void (*tx_free)(struct iwl_priv *priv);
}
/* Note: returns standard 0/-ERROR code */
-int iwl_prepare_card_hw(struct iwl_priv *priv)
+static int iwl_trans_prepare_card_hw(struct iwl_priv *priv)
{
int ret;
- IWL_DEBUG_INFO(priv, "iwl_prepare_card_hw enter\n");
+ IWL_DEBUG_INFO(priv, "iwl_trans_prepare_card_hw enter\n");
ret = iwl_set_hw_ready(priv);
if (ret >= 0)
priv->ucode_owner = IWL_OWNERSHIP_DRIVER;
if ((priv->cfg->sku & EEPROM_SKU_CAP_AMT_ENABLE) &&
- iwl_prepare_card_hw(priv)) {
+ iwl_trans_prepare_card_hw(priv)) {
IWL_WARN(priv, "Exit HW not ready\n");
return -EIO;
}
static const struct iwl_trans_ops trans_ops = {
.start_device = iwl_trans_start_device,
+ .prepare_card_hw = iwl_trans_prepare_card_hw,
.stop_device = iwl_trans_stop_device,
+
.tx_start = iwl_trans_tx_start,
.rx_free = iwl_trans_rx_free,
return priv->trans.ops->start_device(priv);
}
+static inline int trans_prepare_card_hw(struct iwl_priv *priv)
+{
+ return priv->trans.ops->prepare_card_hw(priv);
+}
+
static inline void trans_stop_device(struct iwl_priv *priv)
{
priv->trans.ops->stop_device(priv);