diff options
-rw-r--r-- | drivers/staging/winbond/wbusb.c | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c index 897ac94f63a..4ce2e5af959 100644 --- a/drivers/staging/winbond/wbusb.c +++ b/drivers/staging/winbond/wbusb.c | |||
@@ -487,38 +487,42 @@ static int hal_init_hardware(struct ieee80211_hw *hw) | |||
487 | pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold | 487 | pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold |
488 | 488 | ||
489 | pHwData->InitialResource = 1; | 489 | pHwData->InitialResource = 1; |
490 | if( Wb35Reg_initial(pHwData)) { | 490 | if (!Wb35Reg_initial(pHwData)) |
491 | pHwData->InitialResource = 2; | 491 | goto error; |
492 | if (Wb35Tx_initial(pHwData)) { | 492 | |
493 | pHwData->InitialResource = 3; | 493 | pHwData->InitialResource = 2; |
494 | if (Wb35Rx_initial(pHwData)) { | 494 | if (!Wb35Tx_initial(pHwData)) |
495 | pHwData->InitialResource = 4; | 495 | goto error; |
496 | init_timer(&pHwData->LEDTimer); | 496 | |
497 | pHwData->LEDTimer.function = hal_led_control; | 497 | pHwData->InitialResource = 3; |
498 | pHwData->LEDTimer.data = (unsigned long) priv; | 498 | if (!Wb35Rx_initial(pHwData)) |
499 | pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000); | 499 | goto error; |
500 | add_timer(&pHwData->LEDTimer); | 500 | |
501 | 501 | pHwData->InitialResource = 4; | |
502 | // | 502 | init_timer(&pHwData->LEDTimer); |
503 | // For restrict to vendor's hardware | 503 | pHwData->LEDTimer.function = hal_led_control; |
504 | // | 504 | pHwData->LEDTimer.data = (unsigned long) priv; |
505 | SoftwareSet = hal_software_set( pHwData ); | 505 | pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000); |
506 | 506 | add_timer(&pHwData->LEDTimer); | |
507 | #ifdef Vendor2 | 507 | |
508 | // Try to make sure the EEPROM contain | 508 | // |
509 | SoftwareSet >>= 8; | 509 | // For restrict to vendor's hardware |
510 | if( SoftwareSet != 0x82 ) | 510 | // |
511 | return false; | 511 | SoftwareSet = hal_software_set( pHwData ); |
512 | #endif | 512 | |
513 | 513 | #ifdef Vendor2 | |
514 | Wb35Rx_start(hw); | 514 | // Try to make sure the EEPROM contain |
515 | Wb35Tx_EP2VM_start(priv); | 515 | SoftwareSet >>= 8; |
516 | 516 | if( SoftwareSet != 0x82 ) | |
517 | return 0; | 517 | return false; |
518 | } | 518 | #endif |
519 | } | ||
520 | } | ||
521 | 519 | ||
520 | Wb35Rx_start(hw); | ||
521 | Wb35Tx_EP2VM_start(priv); | ||
522 | |||
523 | return 0; | ||
524 | |||
525 | error: | ||
522 | pHwData->SurpriseRemove = 1; | 526 | pHwData->SurpriseRemove = 1; |
523 | return -EINVAL; | 527 | return -EINVAL; |
524 | } | 528 | } |