iwlagn: remove the indirection for the dma channel num
[pandora-kernel.git] / drivers / net / wireless / iwlwifi / iwl-agn-eeprom.c
index 3bcaa10..7745816 100644 (file)
  *
 ******************************************************************************/
 
-/*
- * The device's EEPROM semaphore prevents conflicts between driver and uCode
- * when accessing the EEPROM; each access is a series of pulses to/from the
- * EEPROM chip, not a single event, so even reads could conflict if they
- * weren't arbitrated by the semaphore.
- */
-int iwlcore_eeprom_acquire_semaphore(struct iwl_priv *priv)
-{
-       u16 count;
-       int ret;
-
-       for (count = 0; count < EEPROM_SEM_RETRY_LIMIT; count++) {
-               /* Request semaphore */
-               iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
-                           CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM);
-
-               /* See if we got it */
-               ret = iwl_poll_bit(priv, CSR_HW_IF_CONFIG_REG,
-                               CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM,
-                               CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM,
-                               EEPROM_SEM_TIMEOUT);
-               if (ret >= 0) {
-                       IWL_DEBUG_EEPROM(priv,
-                               "Acquired semaphore after %d tries.\n",
-                               count+1);
-                       return ret;
-               }
-       }
-
-       return ret;
-}
-
-void iwlcore_eeprom_release_semaphore(struct iwl_priv *priv)
-{
-       iwl_clear_bit(priv, CSR_HW_IF_CONFIG_REG,
-               CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM);
-
-}
-
 int iwl_eeprom_check_version(struct iwl_priv *priv)
 {
        u16 eeprom_ver;
        u16 calib_ver;
 
        eeprom_ver = iwl_eeprom_query16(priv, EEPROM_VERSION);
-       calib_ver = priv->cfg->ops->lib->eeprom_ops.calib_version(priv);
+       calib_ver = iwlagn_eeprom_calib_version(priv);
 
        if (eeprom_ver < priv->cfg->eeprom_ver ||
            calib_ver < priv->cfg->eeprom_calib_ver)
@@ -147,18 +108,16 @@ err:
 
 int iwl_eeprom_check_sku(struct iwl_priv *priv)
 {
-       u16 eeprom_sku;
        u16 radio_cfg;
 
-       eeprom_sku = iwl_eeprom_query16(priv, EEPROM_SKU_CAP);
-
        if (!priv->cfg->sku) {
                /* not using sku overwrite */
-               priv->cfg->sku =
-                       ((eeprom_sku & EEPROM_SKU_CAP_BAND_SELECTION) >>
-                       EEPROM_SKU_CAP_BAND_POS);
-               if (eeprom_sku & EEPROM_SKU_CAP_11N_ENABLE)
-                       priv->cfg->sku |= IWL_SKU_N;
+               priv->cfg->sku = iwl_eeprom_query16(priv, EEPROM_SKU_CAP);
+               if (priv->cfg->sku & EEPROM_SKU_CAP_11N_ENABLE &&
+                   !priv->cfg->ht_params) {
+                       IWL_ERR(priv, "Invalid 11n configuration\n");
+                       return -EINVAL;
+               }
        }
        if (!priv->cfg->sku) {
                IWL_ERR(priv, "Invalid device sku\n");