aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath/ar9170/usb.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ar9170/usb.c b/drivers/net/wireless/ath/ar9170/usb.c
index d7c13c0177ca..3c97c0985e2a 100644
--- a/drivers/net/wireless/ath/ar9170/usb.c
+++ b/drivers/net/wireless/ath/ar9170/usb.c
@@ -51,6 +51,7 @@ MODULE_AUTHOR("Johannes Berg <johannes@sipsolutions.net>");
51MODULE_AUTHOR("Christian Lamparter <chunkeey@web.de>"); 51MODULE_AUTHOR("Christian Lamparter <chunkeey@web.de>");
52MODULE_LICENSE("GPL"); 52MODULE_LICENSE("GPL");
53MODULE_DESCRIPTION("Atheros AR9170 802.11n USB wireless"); 53MODULE_DESCRIPTION("Atheros AR9170 802.11n USB wireless");
54MODULE_FIRMWARE("ar9170.fw");
54MODULE_FIRMWARE("ar9170-1.fw"); 55MODULE_FIRMWARE("ar9170-1.fw");
55MODULE_FIRMWARE("ar9170-2.fw"); 56MODULE_FIRMWARE("ar9170-2.fw");
56 57
@@ -504,17 +505,23 @@ static int ar9170_usb_request_firmware(struct ar9170_usb *aru)
504{ 505{
505 int err = 0; 506 int err = 0;
506 507
507 err = request_firmware(&aru->init_values, "ar9170-1.fw", 508 err = request_firmware(&aru->firmware, "ar9170.fw",
508 &aru->udev->dev); 509 &aru->udev->dev);
509 if (err) { 510 if (!err) {
510 dev_err(&aru->udev->dev, "file with init values not found.\n"); 511 aru->init_values = NULL;
511 return err; 512 return 0;
512 } 513 }
513 514
515 dev_err(&aru->udev->dev, "ar9170.fw firmware file "
516 "not found, trying old firmware...\n");
517
518 err = request_firmware(&aru->init_values, "ar9170-1.fw",
519 &aru->udev->dev);
520
514 err = request_firmware(&aru->firmware, "ar9170-2.fw", &aru->udev->dev); 521 err = request_firmware(&aru->firmware, "ar9170-2.fw", &aru->udev->dev);
515 if (err) { 522 if (err) {
516 release_firmware(aru->init_values); 523 release_firmware(aru->init_values);
517 dev_err(&aru->udev->dev, "firmware file not found.\n"); 524 dev_err(&aru->udev->dev, "file with init values not found.\n");
518 return err; 525 return err;
519 } 526 }
520 527
@@ -548,6 +555,9 @@ static int ar9170_usb_upload_firmware(struct ar9170_usb *aru)
548{ 555{
549 int err; 556 int err;
550 557
558 if (!aru->init_values)
559 goto upload_fw_start;
560
551 /* First, upload initial values to device RAM */ 561 /* First, upload initial values to device RAM */
552 err = ar9170_usb_upload(aru, aru->init_values->data, 562 err = ar9170_usb_upload(aru, aru->init_values->data,
553 aru->init_values->size, 0x102800, false); 563 aru->init_values->size, 0x102800, false);
@@ -557,6 +567,8 @@ static int ar9170_usb_upload_firmware(struct ar9170_usb *aru)
557 return err; 567 return err;
558 } 568 }
559 569
570upload_fw_start:
571
560 /* Then, upload the firmware itself and start it */ 572 /* Then, upload the firmware itself and start it */
561 return ar9170_usb_upload(aru, aru->firmware->data, aru->firmware->size, 573 return ar9170_usb_upload(aru, aru->firmware->data, aru->firmware->size,
562 0x200000, true); 574 0x200000, true);