Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 224703
b: refs/heads/master
c: fa6e15e
h: refs/heads/master
i:
  224701: 41b28ad
  224699: 6865918
  224695: 2bb6964
  224687: 222f862
  224671: bb16698
  224639: 163ec0c
v: v3
  • Loading branch information
Rajkumar Manoharan authored and John W. Linville committed Nov 24, 2010
1 parent bee2a54 commit 5746395
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 56 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f7ec8fb4d6f8f3ecb8b11e9e46ece95aa66139cc
refs/heads/master: fa6e15e0b5952fd2cd99fc6d4f4473f6b9da18df
41 changes: 14 additions & 27 deletions trunk/drivers/net/wireless/ath/ath9k/hif_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,8 @@ static void ath9k_hif_usb_dealloc_urbs(struct hif_device_usb *hif_dev)
ath9k_hif_usb_dealloc_rx_urbs(hif_dev);
}

static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev,
u32 drv_info)
{
int transfer, err;
const void *data = hif_dev->firmware->data;
Expand Down Expand Up @@ -817,18 +818,10 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
}
kfree(buf);

switch (hif_dev->device_id) {
case 0x7010:
case 0x7015:
case 0x9018:
case 0xA704:
case 0x1200:
if (drv_info & AR7010_DEVICE)
firm_offset = AR7010_FIRMWARE_TEXT;
break;
default:
else
firm_offset = AR9271_FIRMWARE_TEXT;
break;
}

/*
* Issue FW download complete command to firmware.
Expand All @@ -846,7 +839,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
return 0;
}

static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev)
static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev, u32 drv_info)
{
int ret, idx;
struct usb_host_interface *alt = &hif_dev->interface->altsetting[0];
Expand All @@ -862,7 +855,7 @@ static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev)
}

/* Download firmware */
ret = ath9k_hif_usb_download_fw(hif_dev);
ret = ath9k_hif_usb_download_fw(hif_dev, drv_info);
if (ret) {
dev_err(&hif_dev->udev->dev,
"ath9k_htc: Firmware - %s download failed\n",
Expand Down Expand Up @@ -941,31 +934,23 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,

/* Find out which firmware to load */

switch(hif_dev->device_id) {
case 0x7010:
case 0x7015:
case 0x9018:
case 0xA704:
case 0x1200:
if (id->driver_info & AR7010_DEVICE)
if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
hif_dev->fw_name = FIRMWARE_AR7010_1_1;
else
hif_dev->fw_name = FIRMWARE_AR7010;
break;
default:
else
hif_dev->fw_name = FIRMWARE_AR9271;
break;
}

ret = ath9k_hif_usb_dev_init(hif_dev);
ret = ath9k_hif_usb_dev_init(hif_dev, id->driver_info);
if (ret) {
ret = -EINVAL;
goto err_hif_init_usb;
}

ret = ath9k_htc_hw_init(hif_dev->htc_handle,
&hif_dev->udev->dev, hif_dev->device_id,
hif_dev->udev->product);
hif_dev->udev->product, id->driver_info);
if (ret) {
ret = -EINVAL;
goto err_htc_hw_init;
Expand Down Expand Up @@ -1043,14 +1028,16 @@ static int ath9k_hif_usb_resume(struct usb_interface *interface)
{
struct hif_device_usb *hif_dev =
(struct hif_device_usb *) usb_get_intfdata(interface);
struct htc_target *htc_handle = hif_dev->htc_handle;
int ret;

ret = ath9k_hif_usb_alloc_urbs(hif_dev);
if (ret)
return ret;

if (hif_dev->firmware) {
ret = ath9k_hif_usb_download_fw(hif_dev);
ret = ath9k_hif_usb_download_fw(hif_dev,
htc_handle->drv_priv->ah->common.driver_info);
if (ret)
goto fail_resume;
} else {
Expand All @@ -1060,7 +1047,7 @@ static int ath9k_hif_usb_resume(struct usb_interface *interface)

mdelay(100);

ret = ath9k_htc_resume(hif_dev->htc_handle);
ret = ath9k_htc_resume(htc_handle);

if (ret)
goto fail_resume;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/ath/ath9k/htc.h
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ void ath9k_init_leds(struct ath9k_htc_priv *priv);
void ath9k_deinit_leds(struct ath9k_htc_priv *priv);

int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
u16 devid, char *product);
u16 devid, char *product, u32 drv_info);
void ath9k_htc_disconnect_device(struct htc_target *htc_handle, bool hotunplug);
#ifdef CONFIG_PM
int ath9k_htc_resume(struct htc_target *htc_handle);
Expand Down
35 changes: 16 additions & 19 deletions trunk/drivers/net/wireless/ath/ath9k/htc_drv_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@ static inline int ath9k_htc_connect_svc(struct ath9k_htc_priv *priv,
return htc_connect_service(priv->htc, &req, ep_id);
}

static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid,
u32 drv_info)
{
int ret;

Expand Down Expand Up @@ -245,17 +246,10 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
* the HIF layer, shouldn't matter much.
*/

switch(devid) {
case 0x7010:
case 0x7015:
case 0x9018:
case 0xA704:
case 0x1200:
if (drv_info & AR7010_DEVICE)
priv->htc->credits = 45;
break;
default:
else
priv->htc->credits = 33;
}

ret = htc_init(priv->htc);
if (ret)
Expand Down Expand Up @@ -627,7 +621,8 @@ static void ath9k_init_btcoex(struct ath9k_htc_priv *priv)
}

static int ath9k_init_priv(struct ath9k_htc_priv *priv,
u16 devid, char *product)
u16 devid, char *product,
u32 drv_info)
{
struct ath_hw *ah = NULL;
struct ath_common *common;
Expand All @@ -651,6 +646,7 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv,
common->hw = priv->hw;
common->priv = priv;
common->debug_mask = ath9k_debug;
common->driver_info = drv_info;

spin_lock_init(&priv->wmi->wmi_lock);
spin_lock_init(&priv->beacon_lock);
Expand Down Expand Up @@ -763,7 +759,7 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv,
}

static int ath9k_init_device(struct ath9k_htc_priv *priv,
u16 devid, char *product)
u16 devid, char *product, u32 drv_info)
{
struct ieee80211_hw *hw = priv->hw;
struct ath_common *common;
Expand All @@ -772,7 +768,7 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv,
struct ath_regulatory *reg;

/* Bring up device */
error = ath9k_init_priv(priv, devid, product);
error = ath9k_init_priv(priv, devid, product, drv_info);
if (error != 0)
goto err_init;

Expand Down Expand Up @@ -830,7 +826,7 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv,
}

int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
u16 devid, char *product)
u16 devid, char *product, u32 drv_info)
{
struct ieee80211_hw *hw;
struct ath9k_htc_priv *priv;
Expand All @@ -857,14 +853,14 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
goto err_free;
}

ret = ath9k_init_htc_services(priv, devid);
ret = ath9k_init_htc_services(priv, devid, drv_info);
if (ret)
goto err_init;

/* The device may have been unplugged earlier. */
priv->op_flags &= ~OP_UNPLUGGED;

ret = ath9k_init_device(priv, devid, product);
ret = ath9k_init_device(priv, devid, product, drv_info);
if (ret)
goto err_init;

Expand Down Expand Up @@ -894,14 +890,15 @@ void ath9k_htc_disconnect_device(struct htc_target *htc_handle, bool hotunplug)
#ifdef CONFIG_PM
int ath9k_htc_resume(struct htc_target *htc_handle)
{
struct ath9k_htc_priv *priv = htc_handle->drv_priv;
int ret;

ret = ath9k_htc_wait_for_target(htc_handle->drv_priv);
ret = ath9k_htc_wait_for_target(priv);
if (ret)
return ret;

ret = ath9k_init_htc_services(htc_handle->drv_priv,
htc_handle->drv_priv->ah->hw_version.devid);
ret = ath9k_init_htc_services(priv, priv->ah->hw_version.devid,
priv->ah->common.driver_info);
return ret;
}
#endif
Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/net/wireless/ath/ath9k/htc_hst.c
Original file line number Diff line number Diff line change
Expand Up @@ -462,9 +462,10 @@ void ath9k_htc_hw_free(struct htc_target *htc)
}

int ath9k_htc_hw_init(struct htc_target *target,
struct device *dev, u16 devid, char *product)
struct device *dev, u16 devid,
char *product, u32 drv_info)
{
if (ath9k_htc_probe_device(target, dev, devid, product)) {
if (ath9k_htc_probe_device(target, dev, devid, product, drv_info)) {
printk(KERN_ERR "Failed to initialize the device\n");
return -ENODEV;
}
Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/net/wireless/ath/ath9k/htc_hst.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,8 @@ struct htc_target *ath9k_htc_hw_alloc(void *hif_handle,
struct device *dev);
void ath9k_htc_hw_free(struct htc_target *htc);
int ath9k_htc_hw_init(struct htc_target *target,
struct device *dev, u16 devid, char *product);
struct device *dev, u16 devid, char *product,
u32 drv_info);
void ath9k_htc_hw_deinit(struct htc_target *target, bool hot_unplug);

#endif /* HTC_HST_H */
6 changes: 1 addition & 5 deletions trunk/drivers/net/wireless/ath/ath9k/reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -864,11 +864,7 @@
((REG_READ(_ah, AR_AN_SYNTH9) & 0x7) == 0x1))

#define AR_DEVID_7010(_ah) \
(((_ah)->hw_version.devid == 0x7010) || \
((_ah)->hw_version.devid == 0x7015) || \
((_ah)->hw_version.devid == 0x9018) || \
((_ah)->hw_version.devid == 0xA704) || \
((_ah)->hw_version.devid == 0x1200))
((_ah)->common.driver_info & AR7010_DEVICE)

#define AR_RADIO_SREV_MAJOR 0xf0
#define AR_RAD5133_SREV_MAJOR 0xc0
Expand Down

0 comments on commit 5746395

Please sign in to comment.