/* The led->state read is racy, but we don't care. In case we raced * with the brightness_set handler, we will be called again soon
* to fixup our state. */ if (radio_enabled)
turn_on = atomic_read(&led->state) != LED_OFF; else
turn_on = false; if (turn_on == led->hw_state) return;
led->hw_state = turn_on;
if (turn_on)
b43_led_turn_on(dev, led->index, led->activelow); else
b43_led_turn_off(dev, led->index, led->activelow);
}
if ((sprom[0] & sprom[1] & sprom[2] & sprom[3]) == 0xff) { /* There is no LED information in the SPROM
* for this LED. Hardcode it here. */
*activelow = false; switch (led_index) { case 0:
*behaviour = B43_LED_ACTIVITY;
*activelow = true; if (dev->dev->board_vendor == PCI_VENDOR_ID_COMPAQ)
*behaviour = B43_LED_RADIO_ALL; break; case 1:
*behaviour = B43_LED_RADIO_B; if (dev->dev->board_vendor == PCI_VENDOR_ID_ASUSTEK)
*behaviour = B43_LED_ASSOC; break; case 2:
*behaviour = B43_LED_RADIO_A; break; case 3:
*behaviour = B43_LED_OFF; break; default:
*behaviour = B43_LED_OFF;
B43_WARN_ON(1); return;
}
} else { /* keep LED disabled if no mapping is defined */ if (sprom[led_index] == 0xff)
*behaviour = B43_LED_OFF; else
*behaviour = sprom[led_index] & B43_LED_BEHAVIOUR;
*activelow = !!(sprom[led_index] & B43_LED_ACTIVELOW);
}
}
/* Sync the RF-kill LED state (if we have one) with radio and switch states. */
led = &dev->wl->leds.led_radio; if (led->wl) { if (dev->phy.radio_on && b43_is_hw_radio_enabled(dev)) {
b43_led_turn_on(dev, led->index, led->activelow);
led->hw_state = true;
atomic_set(&led->state, 1);
} else {
b43_led_turn_off(dev, led->index, led->activelow);
led->hw_state = false;
atomic_set(&led->state, 0);
}
}
/* Initialize TX/RX/ASSOC leds */
led = &dev->wl->leds.led_tx; if (led->wl) {
b43_led_turn_off(dev, led->index, led->activelow);
led->hw_state = false;
atomic_set(&led->state, 0);
}
led = &dev->wl->leds.led_rx; if (led->wl) {
b43_led_turn_off(dev, led->index, led->activelow);
led->hw_state = false;
atomic_set(&led->state, 0);
}
led = &dev->wl->leds.led_assoc; if (led->wl) {
b43_led_turn_off(dev, led->index, led->activelow);
led->hw_state = false;
atomic_set(&led->state, 0);
}
/* Initialize other LED states. */ for (i = 0; i < B43_MAX_NR_LEDS; i++) {
b43_led_get_sprominfo(dev, i, &behaviour, &activelow); switch (behaviour) { case B43_LED_OFF:
b43_led_turn_off(dev, i, activelow); break; case B43_LED_ON:
b43_led_turn_on(dev, i, activelow); break; default: /* Leave others as-is. */ break;
}
}
/* Register the LEDs to the LED subsystem. */ for (i = 0; i < B43_MAX_NR_LEDS; i++) {
b43_led_get_sprominfo(dev, i, &behaviour, &activelow);
b43_map_led(dev, i, behaviour, activelow);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.