summaryrefslogtreecommitdiffstats
path: root/drivers/staging/bcm
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2014-07-20 15:14:10 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-07-21 12:30:41 -0700
commit093300f44452a909e6bd02524c98b57fd6101eb8 (patch)
tree6d58a9b5e00d656e5363cbf301780daf4e6610e1 /drivers/staging/bcm
parent3ccc0fd52484f8967d696a1f23e1bf9b26e01902 (diff)
downloadlinux-stable-093300f44452a909e6bd02524c98b57fd6101eb8.tar.gz
linux-stable-093300f44452a909e6bd02524c98b57fd6101eb8.tar.bz2
linux-stable-093300f44452a909e6bd02524c98b57fd6101eb8.zip
Staging: bcm: nvm.c: Outsourced chunk of code into function
This patch outsources a chunk of code into an own function. It also refactors the variable names which are used within this function. The function name may be not appropriate. Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/bcm')
-rw-r--r--drivers/staging/bcm/nvm.c70
1 files changed, 48 insertions, 22 deletions
diff --git a/drivers/staging/bcm/nvm.c b/drivers/staging/bcm/nvm.c
index 76c86ebbeea8..4aa195c791e9 100644
--- a/drivers/staging/bcm/nvm.c
+++ b/drivers/staging/bcm/nvm.c
@@ -1033,6 +1033,44 @@ static ULONG BcmFlashUnProtectBlock(struct bcm_mini_adapter *Adapter, unsigned i
return ulStatus;
}
+static int bulk_read_complete_sector(struct bcm_mini_adapter *ad,
+ UCHAR read_bk[],
+ PCHAR tmpbuff,
+ unsigned int offset,
+ unsigned int partoff,
+ unsigned int i)
+{
+ unsigned int j;
+ int bulk_read_stat;
+
+ for (i = 0; i < ad->uiSectorSize; i += MAX_RW_SIZE) {
+ bulk_read_stat = BeceemFlashBulkRead(ad,
+ (PUINT)read_bk,
+ offset + i,
+ MAX_RW_SIZE);
+
+ if (bulk_read_stat == STATUS_SUCCESS) {
+ if (ad->ulFlashWriteSize == 1) {
+ for (j = 0; j < 16; j++) {
+ if (read_bk[j] != tmpbuff[i+j]) {
+ if (STATUS_SUCCESS != (*ad->fpFlashWriteWithStatusCheck)(ad, partoff + i + j, &tmpbuff[i+j])) {
+ return STATUS_FAILURE;
+ }
+ }
+ }
+ } else {
+ if (memcmp(read_bk, &tmpbuff[i], MAX_RW_SIZE)) {
+ if (STATUS_SUCCESS != (*ad->fpFlashWriteWithStatusCheck)(ad, partoff + i, &tmpbuff[i])) {
+ return STATUS_FAILURE;
+ }
+ }
+ }
+ }
+ }
+
+ return STATUS_SUCCESS;
+}
+
/*
* Procedure: BeceemFlashBulkWrite
*
@@ -1169,29 +1207,17 @@ static int BeceemFlashBulkWrite(struct bcm_mini_adapter *Adapter,
/* do_gettimeofday(&tw);
* BCM_DEBUG_PRINT(Adapter,DBG_TYPE_PRINTK, 0, 0, "Total time taken in Write to Flash :%ld ms\n", (tw.tv_sec *1000 + tw.tv_usec/1000) - (te.tv_sec *1000 + te.tv_usec/1000));
*/
- for (uiIndex = 0; uiIndex < Adapter->uiSectorSize; uiIndex += MAX_RW_SIZE) {
- if (STATUS_SUCCESS == BeceemFlashBulkRead(Adapter, (PUINT)ucReadBk, uiOffsetFromSectStart + uiIndex, MAX_RW_SIZE)) {
- if (Adapter->ulFlashWriteSize == 1) {
- unsigned int uiReadIndex = 0;
-
- for (uiReadIndex = 0; uiReadIndex < 16; uiReadIndex++) {
- if (ucReadBk[uiReadIndex] != pTempBuff[uiIndex + uiReadIndex]) {
- if (STATUS_SUCCESS != (*Adapter->fpFlashWriteWithStatusCheck)(Adapter, uiPartOffset + uiIndex + uiReadIndex, &pTempBuff[uiIndex+uiReadIndex])) {
- Status = STATUS_FAILURE;
- goto BeceemFlashBulkWrite_EXIT;
- }
- }
- }
- } else {
- if (memcmp(ucReadBk, &pTempBuff[uiIndex], MAX_RW_SIZE)) {
- if (STATUS_SUCCESS != (*Adapter->fpFlashWriteWithStatusCheck)(Adapter, uiPartOffset + uiIndex, &pTempBuff[uiIndex])) {
- Status = STATUS_FAILURE;
- goto BeceemFlashBulkWrite_EXIT;
- }
- }
- }
- }
+
+ if (STATUS_FAILURE == bulk_read_complete_sector(Adapter,
+ ucReadBk,
+ pTempBuff,
+ uiOffsetFromSectStart,
+ uiPartOffset,
+ uiIndex)) {
+ Status = STATUS_FAILURE;
+ goto BeceemFlashBulkWrite_EXIT;
}
+
/* do_gettimeofday(&twv);
* BCM_DEBUG_PRINT(Adapter,DBG_TYPE_PRINTK, 0, 0, "Total time taken in Write to Flash verification :%ld ms\n", (twv.tv_sec *1000 + twv.tv_usec/1000) - (tw.tv_sec *1000 + tw.tv_usec/1000));
*/