iwlagn: move iwl_prepare_card_hw to the transport layer
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 10 Jul 2011 12:39:57 +0000 (15:39 +0300)
committerWey-Yi Guy <wey-yi.w.guy@intel.com>
Thu, 21 Jul 2011 14:29:35 +0000 (07:29 -0700)
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>
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.h
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-trans.c
drivers/net/wireless/iwlwifi/iwl-trans.h

index d0f6875c64ae6dd222ca406a0dc0094b26887961..703c106aa8ddd1090e933fc79b167d2f93591596 100644 (file)
@@ -3174,7 +3174,7 @@ int iwl_probe(void *bus_specific, struct iwl_bus_ops *bus_ops,
        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;
index ffb6bd2e02a930387bb7fbe21ee953f487b98020..496ab99c424d7b7c90818285be57c589f638b1ad 100644 (file)
@@ -122,9 +122,6 @@ static inline void iwl_set_calib_hdr(struct iwl_calib_hdr *hdr, u8 cmd)
        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);
index ca154344bed176c6c675a9a39e2ad36108a698c3..9a39836c0cd19129dcd1da3100094de5687fcae1 100644 (file)
@@ -1236,6 +1236,8 @@ struct iwl_trans;
  * 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)
@@ -1259,6 +1261,7 @@ struct iwl_trans;
 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);
index e9c7de9f8e0f79a5ec12819a6d8bf55a12407f97..88ab20abe253707d895c8bf117db8caeb36bfe58 100644 (file)
@@ -647,11 +647,11 @@ static int iwl_set_hw_ready(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)
@@ -682,7 +682,7 @@ static int iwl_trans_start_device(struct iwl_priv *priv)
        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;
        }
@@ -1123,7 +1123,9 @@ static void iwl_trans_free(struct iwl_priv *priv)
 
 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,
index 9e801d8963d1d0b4f41a46ba4ebbd8374aab7d82..fca01819f10c7c03f18107646cb6e57360a82bd5 100644 (file)
@@ -69,6 +69,11 @@ static inline int trans_start_device(struct iwl_priv *priv)
        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);