summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2014-06-23 21:18:22 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-06-26 21:02:13 -0400
commit4fb9ab4ec9c6fd8a1c823a31a9e9d21a13f272a5 (patch)
tree6bc44697b8b10cc7511b92eb1975e1f9a6773351
parente4e9d83e63fd07e153c01305ec23782972371b31 (diff)
Staging: bcm: led_control.c: Outsourced code chunk
Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/bcm/led_control.c159
1 files changed, 93 insertions, 66 deletions
diff --git a/drivers/staging/bcm/led_control.c b/drivers/staging/bcm/led_control.c
index 085493a7b29..5060badfc3a 100644
--- a/drivers/staging/bcm/led_control.c
+++ b/drivers/staging/bcm/led_control.c
@@ -97,7 +97,89 @@ static INT ScaleRateofTransfer(ULONG rate)
return MAX_NUM_OF_BLINKS;
}
+static INT blink_in_normal_bandwidth(struct bcm_mini_adapter *Adapter,
+ INT *num_of_time,
+ INT *num_of_time_tx,
+ INT *num_of_time_rx,
+ UCHAR GPIO_Num_tx,
+ UCHAR uiTxLedIndex,
+ UCHAR GPIO_Num_rx,
+ UCHAR uiRxLedIndex,
+ enum bcm_led_events currdriverstate,
+ ulong *timeout)
+{
+ bool bBlinkBothLED = TRUE;
+
+ /*
+ * 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.
+ */
+ if (*num_of_time_tx > *num_of_time_rx)
+ *num_of_time = *num_of_time_rx;
+ else
+ *num_of_time = *num_of_time_tx;
+ if (*num_of_time > 0) {
+ /* Blink both Tx and Rx LEDs */
+ if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
+ uiTxLedIndex, *timeout,
+ *num_of_time, currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+
+ if (LED_Blink(Adapter, 1 << GPIO_Num_rx,
+ uiRxLedIndex, *timeout,
+ *num_of_time, currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+
+ }
+
+ if (*num_of_time == *num_of_time_tx) {
+ /* Blink pending rate of Rx */
+ if (LED_Blink(Adapter, (1 << GPIO_Num_rx),
+ uiRxLedIndex, *timeout,
+ *num_of_time_rx - *num_of_time,
+ currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+
+ *num_of_time = *num_of_time_rx;
+ } else {
+ /* Blink pending rate of Tx */
+ if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
+ uiTxLedIndex, *timeout,
+ *num_of_time_tx - *num_of_time,
+ currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+
+ *num_of_time = *num_of_time_tx;
+ }
+ } else {
+ if (*num_of_time == *num_of_time_tx) {
+ /* Blink pending rate of Rx */
+ if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
+ uiTxLedIndex, *timeout,
+ *num_of_time, currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+ } else {
+ /* Blink pending rate of Tx */
+ if (LED_Blink(Adapter, 1 << GPIO_Num_rx,
+ uiRxLedIndex, *timeout,
+ *num_of_time, currdriverstate)
+ == EVENT_SIGNALED)
+ return EVENT_SIGNALED;
+ }
+ }
+ return 0;
+}
static INT LED_Proportional_Blink(struct bcm_mini_adapter *Adapter,
UCHAR GPIO_Num_tx,
@@ -115,7 +197,6 @@ static INT LED_Proportional_Blink(struct bcm_mini_adapter *Adapter,
int Status = STATUS_SUCCESS;
INT num_of_time = 0, num_of_time_tx = 0, num_of_time_rx = 0;
UINT remDelay = 0;
- bool bBlinkBothLED = TRUE;
/* UINT GPIO_num = DISABLE_GPIO_NUM; */
ulong timeout = 0;
@@ -129,73 +210,19 @@ static INT LED_Proportional_Blink(struct bcm_mini_adapter *Adapter,
while ((Adapter->device_removed == false)) {
timeout = 50;
- /*
- * 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.
- */
- if (num_of_time_tx > num_of_time_rx)
- num_of_time = num_of_time_rx;
- else
- num_of_time = num_of_time_tx;
- if (num_of_time > 0) {
- /* Blink both Tx and Rx LEDs */
- if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
- uiTxLedIndex, timeout,
- num_of_time, currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
-
- if (LED_Blink(Adapter, 1 << GPIO_Num_rx,
- uiRxLedIndex, timeout,
- num_of_time, currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
-
- }
- if (num_of_time == num_of_time_tx) {
- /* Blink pending rate of Rx */
- if (LED_Blink(Adapter, (1 << GPIO_Num_rx),
- uiRxLedIndex, timeout,
- num_of_time_rx-num_of_time,
- currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
+ if (EVENT_SIGNALED == blink_in_normal_bandwidth(Adapter,
+ &num_of_time,
+ &num_of_time_tx,
+ &num_of_time_rx,
+ GPIO_Num_tx,
+ uiTxLedIndex,
+ GPIO_Num_rx,
+ uiRxLedIndex,
+ currdriverstate,
+ &timeout))
+ return EVENT_SIGNALED;
- num_of_time = num_of_time_rx;
- } else {
- /* Blink pending rate of Tx */
- if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
- uiTxLedIndex, timeout,
- num_of_time_tx-num_of_time,
- currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
-
- num_of_time = num_of_time_tx;
- }
- } else {
- if (num_of_time == num_of_time_tx) {
- /* Blink pending rate of Rx */
- if (LED_Blink(Adapter, 1 << GPIO_Num_tx,
- uiTxLedIndex, timeout,
- num_of_time, currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
- } else {
- /* Blink pending rate of Tx */
- if (LED_Blink(Adapter, 1 << GPIO_Num_rx,
- uiRxLedIndex, timeout,
- num_of_time, currdriverstate)
- == EVENT_SIGNALED)
- return EVENT_SIGNALED;
- }
- }
/*
* If Tx/Rx rate is less than maximum blinks per second,