static void pcan_set_leds(struct pcan_pccard *card, u8 led_mask, u8 state) { u8 ccr = card->ccr; int i; for (i = 0; i < card->chan_count; i++) if (led_mask & PCC_LED(i)) { /* clear corresponding led bits in ccr */ ccr &= ~PCC_CCR_LED_MASK_CHAN(i); /* then set new bits */ ccr |= PCC_CCR_LED_CHAN(state, i); } /* real write only if something has changed in ccr */ pcan_write_reg(card, PCC_CCR, ccr); }
static void pcan_set_leds(struct pcan_pccard *card, u8 led_mask, u8 state) { u8 ccr = card->ccr; int i; for (i = 0; i < card->chan_count; i++) if (led_mask & PCC_LED(i)) { ccr &= ~PCC_CCR_LED_MASK_CHAN(i); ccr |= PCC_CCR_LED_CHAN(state, i); } pcan_write_reg(card, PCC_CCR, ccr); }