Loading drivers/staging/bcm/led_control.c +167 −122 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, INT num_of_time = 0, num_of_time_tx = 0, num_of_time_rx = 0; UINT remDelay = 0; BOOLEAN bBlinkBothLED = TRUE; //UINT GPIO_num = DISABLE_GPIO_NUM; /* UINT GPIO_num = DISABLE_GPIO_NUM; */ ulong timeout = 0; /* Read initial value of packets sent/received */ Loading @@ -119,10 +119,16 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, while ((Adapter->device_removed == FALSE)) { timeout = 50; /*Blink Tx and Rx LED when both Tx and Rx is in normal bandwidth*/ /* * Blink Tx and Rx LED when both Tx and Rx is * in normal bandwidth */ if (bBlinkBothLED) { /*Assign minimum number of blinks of either Tx or Rx.*/ /* * Assign minimum number of blinks of * either Tx or Rx. */ if (num_of_time_tx > num_of_time_rx) num_of_time = num_of_time_rx; else Loading Loading @@ -185,7 +191,9 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, } } } /* If Tx/Rx rate is less than maximum blinks per second, /* * If Tx/Rx rate is less than maximum blinks per second, * wait till delay completes to 1 second */ remDelay = MAX_NUM_OF_BLINKS - num_of_time; Loading Loading @@ -232,21 +240,22 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, return Status; } //----------------------------------------------------------------------------- // Procedure: ValidateDSDParamsChecksum // // Description: Reads DSD Params and validates checkusm. // // Arguments: // Adapter - Pointer to Adapter structure. // ulParamOffset - Start offset of the DSD parameter to be read and validated. // usParamLen - Length of the DSD Parameter. // // Returns: // <OSAL_STATUS_CODE> //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: ValidateDSDParamsChecksum * * Description: Reads DSD Params and validates checkusm. * * Arguments: * Adapter - Pointer to Adapter structure. * ulParamOffset - Start offset of the DSD parameter to be read and * validated. * usParamLen - Length of the DSD Parameter. * * Returns: * <OSAL_STATUS_CODE> * ----------------------------------------------------------------------------- */ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset, USHORT usParamLen) { INT Status = STATUS_SUCCESS; Loading @@ -264,9 +273,7 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset } // // Read the DSD data from the parameter offset. // /* Read the DSD data from the parameter offset. */ if (STATUS_SUCCESS != BeceemNVMRead(Adapter, (PUINT)puBuffer, ulParamOffset, usParamLen)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum BeceemNVMRead failed"); Loading @@ -274,16 +281,14 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset goto exit; } // // Calculate the checksum of the data read from the DSD parameter. // /* Calculate the checksum of the data read from the DSD parameter. */ usChecksumCalculated = CFG_CalculateChecksum(puBuffer, usParamLen); BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: usCheckSumCalculated = 0x%x\n", usChecksumCalculated); // // End of the DSD parameter will have a TWO bytes checksum stored in it. Read it and compare with the calculated // Checksum. // /* * End of the DSD parameter will have a TWO bytes checksum stored in it. * Read it and compare with the calculated Checksum. */ if (STATUS_SUCCESS != BeceemNVMRead(Adapter, (PUINT)&usChksmOrg, ulParamOffset+usParamLen, 2)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum BeceemNVMRead failed"); Loading @@ -293,9 +298,10 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset usChksmOrg = ntohs(usChksmOrg); BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: usChksmOrg = 0x%x", usChksmOrg); // // Compare the checksum calculated with the checksum read from DSD section // /* * Compare the checksum calculated with the checksum read * from DSD section */ if (usChecksumCalculated ^ usChksmOrg) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum: Checksums don't match"); Loading @@ -309,25 +315,30 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset } //----------------------------------------------------------------------------- // Procedure: ValidateHWParmStructure // // Description: Validates HW Parameters. // // Arguments: // Adapter - Pointer to Adapter structure. // ulHwParamOffset - Start offset of the HW parameter Section to be read and validated. // // Returns: // <OSAL_STATUS_CODE> //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: ValidateHWParmStructure * * Description: Validates HW Parameters. * * Arguments: * Adapter - Pointer to Adapter structure. * ulHwParamOffset - Start offset of the HW parameter Section to be read * and validated. * * Returns: * <OSAL_STATUS_CODE> * ----------------------------------------------------------------------------- */ static INT ValidateHWParmStructure(PMINI_ADAPTER Adapter, ULONG ulHwParamOffset) { INT Status = STATUS_SUCCESS; USHORT HwParamLen = 0; // Add DSD start offset to the hwParamOffset to get the actual address. /* * Add DSD start offset to the hwParamOffset to get * the actual address. */ ulHwParamOffset += DSD_START_OFFSET; /* Read the Length of HW_PARAM structure */ Loading Loading @@ -366,9 +377,10 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ } else { // // Validate Compatibility section and then read HW param if compatibility section is valid. // /* * Validate Compatibility section and then read HW param * if compatibility section is valid. */ Status = ValidateDSDParamsChecksum(Adapter, DSD_START_OFFSET, COMPATIBILITY_SECTION_LENGTH_MAP5); Loading @@ -384,12 +396,12 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: Start address of HW_PARAM structure = 0x%lx", dwReadValue); // // Validate if the address read out is within the DSD. // Adapter->uiNVMDSDSize gives whole DSD size inclusive of Autoinit. // lower limit should be above DSD_START_OFFSET and // upper limit should be below (Adapter->uiNVMDSDSize-DSD_START_OFFSET) // /* * Validate if the address read out is within the DSD. * Adapter->uiNVMDSDSize gives whole DSD size inclusive of Autoinit. * lower limit should be above DSD_START_OFFSET and * upper limit should be below (Adapter->uiNVMDSDSize-DSD_START_OFFSET) */ if (dwReadValue < DSD_START_OFFSET || dwReadValue > (Adapter->uiNVMDSDSize-DSD_START_OFFSET)) { Loading @@ -402,15 +414,18 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ } /* Add DSD_START_OFFSET to the offset read from the EEPROM. This will give the actual start HW Parameters start address. To read GPIO section, add GPIO offset further. * Add DSD_START_OFFSET to the offset read from the EEPROM. * This will give the actual start HW Parameters start address. * To read GPIO section, add GPIO offset further. */ dwReadValue += DSD_START_OFFSET; // = start address of hw param section. dwReadValue += GPIO_SECTION_START_OFFSET; // = GPIO start offset within HW Param section. dwReadValue += DSD_START_OFFSET; /* = start address of hw param section. */ dwReadValue += GPIO_SECTION_START_OFFSET; /* = GPIO start offset within HW Param section. */ /* Read the GPIO values for 32 GPIOs from EEPROM and map the function /* * Read the GPIO values for 32 GPIOs from EEPROM and map the function * number to GPIO pin number to GPIO_Array */ BeceemNVMRead(Adapter, (UINT *)ucGPIOInfo, dwReadValue, 32); Loading Loading @@ -456,7 +471,8 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread) { int Status = STATUS_SUCCESS; UCHAR GPIO_Array[NUM_OF_LEDS+1]; /*Array to store GPIO numbers from EEPROM*/ /* Array to store GPIO numbers from EEPROM */ UCHAR GPIO_Array[NUM_OF_LEDS+1]; UINT uiIndex = 0; UINT uiNum_of_LED_Type = 0; PUCHAR puCFGData = NULL; Loading @@ -482,6 +498,7 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread *bEnableThread = FALSE; return Status; } /* * CONFIG file read successfully. Deallocate the memory of * uiFileNameBufferSize Loading @@ -499,7 +516,10 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread { bData = *puCFGData; /*Check Bit 8 for polarity. If it is set, polarity is reverse polarity*/ /* * Check Bit 8 for polarity. If it is set, * polarity is reverse polarity */ if (bData & 0x80) { Adapter->LEDInfo.LEDState[uiIndex].BitPolarity = 0; Loading @@ -522,7 +542,10 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread puCFGData++; } /*Check if all the LED settings are disabled. If it is disabled, dont launch the LED control thread.*/ /* * Check if all the LED settings are disabled. If it is disabled, * dont launch the LED control thread. */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { if ((Adapter->LEDInfo.LEDState[uiIndex].LED_Type == DISABLE_GPIO_NUM) || Loading @@ -535,19 +558,21 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread return Status; } //-------------------------------------------------------------------------- // Procedure: LedGpioInit // // Description: Initializes LED GPIOs. Makes the LED GPIOs to OUTPUT mode and make the // initial state to be OFF. // // Arguments: // Adapter - Pointer to MINI_ADAPTER structure. // // Returns: VOID // //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: LedGpioInit * * Description: Initializes LED GPIOs. Makes the LED GPIOs to OUTPUT mode * and make the initial state to be OFF. * * Arguments: * Adapter - Pointer to MINI_ADAPTER structure. * * Returns: VOID * * ----------------------------------------------------------------------------- */ static VOID LedGpioInit(PMINI_ADAPTER Adapter) { UINT uiResetValue = 0; Loading @@ -567,7 +592,6 @@ static VOID LedGpioInit(PMINI_ADAPTER Adapter) Adapter->LEDInfo.bIdle_led_off = FALSE; } //----------------------------------------------------------------------------- static INT BcmGetGPIOPinInfo(PMINI_ADAPTER Adapter, UCHAR *GPIO_num_tx, UCHAR *GPIO_num_rx, UCHAR *uiLedTxIndex, UCHAR *uiLedRxIndex, LedEventInfo_t currdriverstate) { Loading Loading @@ -628,12 +652,15 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) UCHAR dummyGPIONum = 0; UCHAR dummyIndex = 0; //currdriverstate = Adapter->DriverState; /* currdriverstate = Adapter->DriverState; */ Adapter->LEDInfo.bIdleMode_tx_from_host = FALSE; /*Wait till event is triggered*/ //wait_event(Adapter->LEDInfo.notify_led_event, // currdriverstate!= Adapter->DriverState); /* * Wait till event is triggered * * wait_event(Adapter->LEDInfo.notify_led_event, * currdriverstate!= Adapter->DriverState); */ GPIO_num = DISABLE_GPIO_NUM; Loading @@ -657,7 +684,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "Led thread got signal to exit..hence exiting"); Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_DISABLED; TURN_OFF_LED(1 << GPIO_num, uiLedIndex); return;//STATUS_FAILURE; return; /* STATUS_FAILURE; */ } if (GPIO_num != DISABLE_GPIO_NUM) Loading @@ -675,7 +702,8 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) { case DRIVER_INIT: { currdriverstate = DRIVER_INIT;//Adapter->DriverState; currdriverstate = DRIVER_INIT; /* Adapter->DriverState; */ BcmGetGPIOPinInfo(Adapter, &GPIO_num, &dummyGPIONum, &uiLedIndex, &dummyIndex, currdriverstate); if (GPIO_num != DISABLE_GPIO_NUM) Loading @@ -686,7 +714,11 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) break; case FW_DOWNLOAD: { //BCM_DEBUG_PRINT (Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL,"LED Thread: FW_DN_DONE called\n"); /* * BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, * LED_DUMP_INFO, DBG_LVL_ALL, * "LED Thread: FW_DN_DONE called\n"); */ currdriverstate = FW_DOWNLOAD; BcmGetGPIOPinInfo(Adapter, &GPIO_num, &dummyGPIONum, &uiLedIndex, &dummyIndex, currdriverstate); Loading @@ -709,8 +741,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) break; case SHUTDOWN_EXIT: //no break, continue to NO_NETWORK_ENTRY state as well. /* * no break, continue to NO_NETWORK_ENTRY * state as well. */ case NO_NETWORK_ENTRY: { currdriverstate = NO_NETWORK_ENTRY; Loading @@ -737,7 +771,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) } else { /*If single LED is selected, use same for both Tx and Rx*/ /* * If single LED is selected, use same * for both Tx and Rx */ if (GPIO_num_tx == DISABLE_GPIO_NUM) { GPIO_num_tx = GPIO_num_rx; Loading @@ -748,7 +785,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) GPIO_num_rx = GPIO_num_tx; uiLEDRx = uiLEDTx; } /*Blink the LED in proportionate to Tx and Rx transmissions.*/ /* * Blink the LED in proportionate * to Tx and Rx transmissions. */ LED_Proportional_Blink(Adapter, GPIO_num_tx, uiLEDTx, GPIO_num_rx, uiLEDRx, currdriverstate); } } Loading Loading @@ -794,7 +834,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) DISABLE_GPIO_NUM) TURN_OFF_LED((1 << Adapter->LEDInfo.LEDState[uiIndex].GPIO_Num), uiIndex); } //Adapter->DriverState = DRIVER_INIT; /* Adapter->DriverState = DRIVER_INIT; */ } break; case LED_THREAD_INACTIVE: Loading @@ -803,7 +843,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) currdriverstate = LED_THREAD_INACTIVE; Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_RUNNING_INACTIVELY; Adapter->LEDInfo.bLedInitDone = FALSE; //disable ALL LED /* disable ALL LED */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { if (Adapter->LEDInfo.LEDState[uiIndex].GPIO_Num != Loading @@ -823,7 +863,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_RUNNING_ACTIVELY; } break; //return; /* return; */ default: break; } Loading @@ -837,14 +877,19 @@ int InitLedSettings(PMINI_ADAPTER Adapter) BOOLEAN bEnableThread = TRUE; UCHAR uiIndex = 0; /*Initially set BitPolarity to normal polarity. The bit 8 of LED type * is used to change the polarity of the LED.*/ /* * Initially set BitPolarity to normal polarity. The bit 8 of LED type * is used to change the polarity of the LED. */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { Adapter->LEDInfo.LEDState[uiIndex].BitPolarity = 1; } /*Read the LED settings of CONFIG file and map it to GPIO numbers in EEPROM*/ /* * Read the LED settings of CONFIG file and map it * to GPIO numbers in EEPROM */ Status = ReadConfigFileStructure(Adapter, &bEnableThread); if (STATUS_SUCCESS != Status) { Loading Loading
drivers/staging/bcm/led_control.c +167 −122 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, INT num_of_time = 0, num_of_time_tx = 0, num_of_time_rx = 0; UINT remDelay = 0; BOOLEAN bBlinkBothLED = TRUE; //UINT GPIO_num = DISABLE_GPIO_NUM; /* UINT GPIO_num = DISABLE_GPIO_NUM; */ ulong timeout = 0; /* Read initial value of packets sent/received */ Loading @@ -119,10 +119,16 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, while ((Adapter->device_removed == FALSE)) { timeout = 50; /*Blink Tx and Rx LED when both Tx and Rx is in normal bandwidth*/ /* * Blink Tx and Rx LED when both Tx and Rx is * in normal bandwidth */ if (bBlinkBothLED) { /*Assign minimum number of blinks of either Tx or Rx.*/ /* * Assign minimum number of blinks of * either Tx or Rx. */ if (num_of_time_tx > num_of_time_rx) num_of_time = num_of_time_rx; else Loading Loading @@ -185,7 +191,9 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, } } } /* If Tx/Rx rate is less than maximum blinks per second, /* * If Tx/Rx rate is less than maximum blinks per second, * wait till delay completes to 1 second */ remDelay = MAX_NUM_OF_BLINKS - num_of_time; Loading Loading @@ -232,21 +240,22 @@ static INT LED_Proportional_Blink(PMINI_ADAPTER Adapter, UCHAR GPIO_Num_tx, return Status; } //----------------------------------------------------------------------------- // Procedure: ValidateDSDParamsChecksum // // Description: Reads DSD Params and validates checkusm. // // Arguments: // Adapter - Pointer to Adapter structure. // ulParamOffset - Start offset of the DSD parameter to be read and validated. // usParamLen - Length of the DSD Parameter. // // Returns: // <OSAL_STATUS_CODE> //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: ValidateDSDParamsChecksum * * Description: Reads DSD Params and validates checkusm. * * Arguments: * Adapter - Pointer to Adapter structure. * ulParamOffset - Start offset of the DSD parameter to be read and * validated. * usParamLen - Length of the DSD Parameter. * * Returns: * <OSAL_STATUS_CODE> * ----------------------------------------------------------------------------- */ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset, USHORT usParamLen) { INT Status = STATUS_SUCCESS; Loading @@ -264,9 +273,7 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset } // // Read the DSD data from the parameter offset. // /* Read the DSD data from the parameter offset. */ if (STATUS_SUCCESS != BeceemNVMRead(Adapter, (PUINT)puBuffer, ulParamOffset, usParamLen)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum BeceemNVMRead failed"); Loading @@ -274,16 +281,14 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset goto exit; } // // Calculate the checksum of the data read from the DSD parameter. // /* Calculate the checksum of the data read from the DSD parameter. */ usChecksumCalculated = CFG_CalculateChecksum(puBuffer, usParamLen); BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: usCheckSumCalculated = 0x%x\n", usChecksumCalculated); // // End of the DSD parameter will have a TWO bytes checksum stored in it. Read it and compare with the calculated // Checksum. // /* * End of the DSD parameter will have a TWO bytes checksum stored in it. * Read it and compare with the calculated Checksum. */ if (STATUS_SUCCESS != BeceemNVMRead(Adapter, (PUINT)&usChksmOrg, ulParamOffset+usParamLen, 2)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum BeceemNVMRead failed"); Loading @@ -293,9 +298,10 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset usChksmOrg = ntohs(usChksmOrg); BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: usChksmOrg = 0x%x", usChksmOrg); // // Compare the checksum calculated with the checksum read from DSD section // /* * Compare the checksum calculated with the checksum read * from DSD section */ if (usChecksumCalculated ^ usChksmOrg) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: ValidateDSDParamsChecksum: Checksums don't match"); Loading @@ -309,25 +315,30 @@ static INT ValidateDSDParamsChecksum(PMINI_ADAPTER Adapter, ULONG ulParamOffset } //----------------------------------------------------------------------------- // Procedure: ValidateHWParmStructure // // Description: Validates HW Parameters. // // Arguments: // Adapter - Pointer to Adapter structure. // ulHwParamOffset - Start offset of the HW parameter Section to be read and validated. // // Returns: // <OSAL_STATUS_CODE> //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: ValidateHWParmStructure * * Description: Validates HW Parameters. * * Arguments: * Adapter - Pointer to Adapter structure. * ulHwParamOffset - Start offset of the HW parameter Section to be read * and validated. * * Returns: * <OSAL_STATUS_CODE> * ----------------------------------------------------------------------------- */ static INT ValidateHWParmStructure(PMINI_ADAPTER Adapter, ULONG ulHwParamOffset) { INT Status = STATUS_SUCCESS; USHORT HwParamLen = 0; // Add DSD start offset to the hwParamOffset to get the actual address. /* * Add DSD start offset to the hwParamOffset to get * the actual address. */ ulHwParamOffset += DSD_START_OFFSET; /* Read the Length of HW_PARAM structure */ Loading Loading @@ -366,9 +377,10 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ } else { // // Validate Compatibility section and then read HW param if compatibility section is valid. // /* * Validate Compatibility section and then read HW param * if compatibility section is valid. */ Status = ValidateDSDParamsChecksum(Adapter, DSD_START_OFFSET, COMPATIBILITY_SECTION_LENGTH_MAP5); Loading @@ -384,12 +396,12 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "LED Thread: Start address of HW_PARAM structure = 0x%lx", dwReadValue); // // Validate if the address read out is within the DSD. // Adapter->uiNVMDSDSize gives whole DSD size inclusive of Autoinit. // lower limit should be above DSD_START_OFFSET and // upper limit should be below (Adapter->uiNVMDSDSize-DSD_START_OFFSET) // /* * Validate if the address read out is within the DSD. * Adapter->uiNVMDSDSize gives whole DSD size inclusive of Autoinit. * lower limit should be above DSD_START_OFFSET and * upper limit should be below (Adapter->uiNVMDSDSize-DSD_START_OFFSET) */ if (dwReadValue < DSD_START_OFFSET || dwReadValue > (Adapter->uiNVMDSDSize-DSD_START_OFFSET)) { Loading @@ -402,15 +414,18 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ } /* Add DSD_START_OFFSET to the offset read from the EEPROM. This will give the actual start HW Parameters start address. To read GPIO section, add GPIO offset further. * Add DSD_START_OFFSET to the offset read from the EEPROM. * This will give the actual start HW Parameters start address. * To read GPIO section, add GPIO offset further. */ dwReadValue += DSD_START_OFFSET; // = start address of hw param section. dwReadValue += GPIO_SECTION_START_OFFSET; // = GPIO start offset within HW Param section. dwReadValue += DSD_START_OFFSET; /* = start address of hw param section. */ dwReadValue += GPIO_SECTION_START_OFFSET; /* = GPIO start offset within HW Param section. */ /* Read the GPIO values for 32 GPIOs from EEPROM and map the function /* * Read the GPIO values for 32 GPIOs from EEPROM and map the function * number to GPIO pin number to GPIO_Array */ BeceemNVMRead(Adapter, (UINT *)ucGPIOInfo, dwReadValue, 32); Loading Loading @@ -456,7 +471,8 @@ static int ReadLEDInformationFromEEPROM(PMINI_ADAPTER Adapter, UCHAR GPIO_Array[ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread) { int Status = STATUS_SUCCESS; UCHAR GPIO_Array[NUM_OF_LEDS+1]; /*Array to store GPIO numbers from EEPROM*/ /* Array to store GPIO numbers from EEPROM */ UCHAR GPIO_Array[NUM_OF_LEDS+1]; UINT uiIndex = 0; UINT uiNum_of_LED_Type = 0; PUCHAR puCFGData = NULL; Loading @@ -482,6 +498,7 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread *bEnableThread = FALSE; return Status; } /* * CONFIG file read successfully. Deallocate the memory of * uiFileNameBufferSize Loading @@ -499,7 +516,10 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread { bData = *puCFGData; /*Check Bit 8 for polarity. If it is set, polarity is reverse polarity*/ /* * Check Bit 8 for polarity. If it is set, * polarity is reverse polarity */ if (bData & 0x80) { Adapter->LEDInfo.LEDState[uiIndex].BitPolarity = 0; Loading @@ -522,7 +542,10 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread puCFGData++; } /*Check if all the LED settings are disabled. If it is disabled, dont launch the LED control thread.*/ /* * Check if all the LED settings are disabled. If it is disabled, * dont launch the LED control thread. */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { if ((Adapter->LEDInfo.LEDState[uiIndex].LED_Type == DISABLE_GPIO_NUM) || Loading @@ -535,19 +558,21 @@ static int ReadConfigFileStructure(PMINI_ADAPTER Adapter, BOOLEAN *bEnableThread return Status; } //-------------------------------------------------------------------------- // Procedure: LedGpioInit // // Description: Initializes LED GPIOs. Makes the LED GPIOs to OUTPUT mode and make the // initial state to be OFF. // // Arguments: // Adapter - Pointer to MINI_ADAPTER structure. // // Returns: VOID // //----------------------------------------------------------------------------- /* * ----------------------------------------------------------------------------- * Procedure: LedGpioInit * * Description: Initializes LED GPIOs. Makes the LED GPIOs to OUTPUT mode * and make the initial state to be OFF. * * Arguments: * Adapter - Pointer to MINI_ADAPTER structure. * * Returns: VOID * * ----------------------------------------------------------------------------- */ static VOID LedGpioInit(PMINI_ADAPTER Adapter) { UINT uiResetValue = 0; Loading @@ -567,7 +592,6 @@ static VOID LedGpioInit(PMINI_ADAPTER Adapter) Adapter->LEDInfo.bIdle_led_off = FALSE; } //----------------------------------------------------------------------------- static INT BcmGetGPIOPinInfo(PMINI_ADAPTER Adapter, UCHAR *GPIO_num_tx, UCHAR *GPIO_num_rx, UCHAR *uiLedTxIndex, UCHAR *uiLedRxIndex, LedEventInfo_t currdriverstate) { Loading Loading @@ -628,12 +652,15 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) UCHAR dummyGPIONum = 0; UCHAR dummyIndex = 0; //currdriverstate = Adapter->DriverState; /* currdriverstate = Adapter->DriverState; */ Adapter->LEDInfo.bIdleMode_tx_from_host = FALSE; /*Wait till event is triggered*/ //wait_event(Adapter->LEDInfo.notify_led_event, // currdriverstate!= Adapter->DriverState); /* * Wait till event is triggered * * wait_event(Adapter->LEDInfo.notify_led_event, * currdriverstate!= Adapter->DriverState); */ GPIO_num = DISABLE_GPIO_NUM; Loading @@ -657,7 +684,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL, "Led thread got signal to exit..hence exiting"); Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_DISABLED; TURN_OFF_LED(1 << GPIO_num, uiLedIndex); return;//STATUS_FAILURE; return; /* STATUS_FAILURE; */ } if (GPIO_num != DISABLE_GPIO_NUM) Loading @@ -675,7 +702,8 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) { case DRIVER_INIT: { currdriverstate = DRIVER_INIT;//Adapter->DriverState; currdriverstate = DRIVER_INIT; /* Adapter->DriverState; */ BcmGetGPIOPinInfo(Adapter, &GPIO_num, &dummyGPIONum, &uiLedIndex, &dummyIndex, currdriverstate); if (GPIO_num != DISABLE_GPIO_NUM) Loading @@ -686,7 +714,11 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) break; case FW_DOWNLOAD: { //BCM_DEBUG_PRINT (Adapter, DBG_TYPE_OTHERS, LED_DUMP_INFO, DBG_LVL_ALL,"LED Thread: FW_DN_DONE called\n"); /* * BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, * LED_DUMP_INFO, DBG_LVL_ALL, * "LED Thread: FW_DN_DONE called\n"); */ currdriverstate = FW_DOWNLOAD; BcmGetGPIOPinInfo(Adapter, &GPIO_num, &dummyGPIONum, &uiLedIndex, &dummyIndex, currdriverstate); Loading @@ -709,8 +741,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) break; case SHUTDOWN_EXIT: //no break, continue to NO_NETWORK_ENTRY state as well. /* * no break, continue to NO_NETWORK_ENTRY * state as well. */ case NO_NETWORK_ENTRY: { currdriverstate = NO_NETWORK_ENTRY; Loading @@ -737,7 +771,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) } else { /*If single LED is selected, use same for both Tx and Rx*/ /* * If single LED is selected, use same * for both Tx and Rx */ if (GPIO_num_tx == DISABLE_GPIO_NUM) { GPIO_num_tx = GPIO_num_rx; Loading @@ -748,7 +785,10 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) GPIO_num_rx = GPIO_num_tx; uiLEDRx = uiLEDTx; } /*Blink the LED in proportionate to Tx and Rx transmissions.*/ /* * Blink the LED in proportionate * to Tx and Rx transmissions. */ LED_Proportional_Blink(Adapter, GPIO_num_tx, uiLEDTx, GPIO_num_rx, uiLEDRx, currdriverstate); } } Loading Loading @@ -794,7 +834,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) DISABLE_GPIO_NUM) TURN_OFF_LED((1 << Adapter->LEDInfo.LEDState[uiIndex].GPIO_Num), uiIndex); } //Adapter->DriverState = DRIVER_INIT; /* Adapter->DriverState = DRIVER_INIT; */ } break; case LED_THREAD_INACTIVE: Loading @@ -803,7 +843,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) currdriverstate = LED_THREAD_INACTIVE; Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_RUNNING_INACTIVELY; Adapter->LEDInfo.bLedInitDone = FALSE; //disable ALL LED /* disable ALL LED */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { if (Adapter->LEDInfo.LEDState[uiIndex].GPIO_Num != Loading @@ -823,7 +863,7 @@ static VOID LEDControlThread(PMINI_ADAPTER Adapter) Adapter->LEDInfo.led_thread_running = BCM_LED_THREAD_RUNNING_ACTIVELY; } break; //return; /* return; */ default: break; } Loading @@ -837,14 +877,19 @@ int InitLedSettings(PMINI_ADAPTER Adapter) BOOLEAN bEnableThread = TRUE; UCHAR uiIndex = 0; /*Initially set BitPolarity to normal polarity. The bit 8 of LED type * is used to change the polarity of the LED.*/ /* * Initially set BitPolarity to normal polarity. The bit 8 of LED type * is used to change the polarity of the LED. */ for (uiIndex = 0; uiIndex < NUM_OF_LEDS; uiIndex++) { Adapter->LEDInfo.LEDState[uiIndex].BitPolarity = 1; } /*Read the LED settings of CONFIG file and map it to GPIO numbers in EEPROM*/ /* * Read the LED settings of CONFIG file and map it * to GPIO numbers in EEPROM */ Status = ReadConfigFileStructure(Adapter, &bEnableThread); if (STATUS_SUCCESS != Status) { Loading