Fix Phantom sleep LED.
This commit is contained in:
		@@ -39,6 +39,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
/* Set 0 if need no debouncing */
 | 
			
		||||
#define DEBOUNCE    7
 | 
			
		||||
 | 
			
		||||
/* Set LED brightness 0-255.
 | 
			
		||||
 * This have no effect if sleep LED is enabled. */
 | 
			
		||||
#define LED_BRIGHTNESS  250
 | 
			
		||||
 | 
			
		||||
/* key combination for command */
 | 
			
		||||
#define IS_COMMAND() ( \
 | 
			
		||||
    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 | 
			
		||||
 
 | 
			
		||||
@@ -16,19 +16,34 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <avr/io.h>
 | 
			
		||||
#include "stdint.h"
 | 
			
		||||
#include "led.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void led_set(uint8_t usb_led)
 | 
			
		||||
{
 | 
			
		||||
    if (!(usb_led & (1<<USB_LED_CAPS_LOCK)))
 | 
			
		||||
        DDRB &= ~(1<<6);
 | 
			
		||||
    else
 | 
			
		||||
    if (usb_led & (1<<USB_LED_CAPS_LOCK))
 | 
			
		||||
    {
 | 
			
		||||
        // Output high.
 | 
			
		||||
        DDRB |= (1<<6);
 | 
			
		||||
 | 
			
		||||
    if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)))
 | 
			
		||||
        DDRB &= ~(1<<7);
 | 
			
		||||
        PORTB |= (1<<6);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
        DDRB |= (1<<7);
 | 
			
		||||
    {
 | 
			
		||||
        // Output low.
 | 
			
		||||
        DDRB &= ~(1<<6);
 | 
			
		||||
        PORTB &= ~(1<<6);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
 | 
			
		||||
    {
 | 
			
		||||
        // Output high.
 | 
			
		||||
        DDRB &= ~(1<<7);
 | 
			
		||||
        PORTB |= (1<<7);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        // Output low.
 | 
			
		||||
        DDRB &= ~(1<<7);
 | 
			
		||||
        PORTB &= ~(1<<7);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ static void init_rows(void);
 | 
			
		||||
static void unselect_cols(void);
 | 
			
		||||
static void select_col(uint8_t col);
 | 
			
		||||
 | 
			
		||||
#ifndef SLEEP_LED_ENABLE
 | 
			
		||||
/* LEDs are on output compare pins OC1B OC1C
 | 
			
		||||
   This activates fast PWM mode on them.
 | 
			
		||||
   Prescaler 256 and 8-bit counter results in
 | 
			
		||||
@@ -51,12 +52,13 @@ void setup_leds(void)
 | 
			
		||||
    TCCR1B |=      // Timer control register 1B
 | 
			
		||||
        (1<<WGM12) | // Fast PWM 8-bit
 | 
			
		||||
        (1<<CS12);   // Prescaler 256
 | 
			
		||||
    OCR1B = 250;    // Output compare register 1B
 | 
			
		||||
    OCR1C = 250;    // Output compare register 1C
 | 
			
		||||
    OCR1B = LED_BRIGHTNESS;    // Output compare register 1B
 | 
			
		||||
    OCR1C = LED_BRIGHTNESS;    // Output compare register 1C
 | 
			
		||||
    // LEDs: LED_A -> PORTB6, LED_B -> PORTB7
 | 
			
		||||
    DDRB  &= 0x3F;
 | 
			
		||||
    PORTB &= 0x3F;
 | 
			
		||||
    DDRB  |= (1<<6) | (1<<7);
 | 
			
		||||
    PORTB  &= ~((1<<6) | (1<<7));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
inline
 | 
			
		||||
uint8_t matrix_rows(void)
 | 
			
		||||
@@ -79,7 +81,9 @@ void matrix_init(void)
 | 
			
		||||
    // initialize row and col
 | 
			
		||||
    unselect_cols();
 | 
			
		||||
    init_rows();
 | 
			
		||||
#ifndef SLEEP_LED_ENABLE
 | 
			
		||||
    setup_leds();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // initialize matrix state: all keys off
 | 
			
		||||
    for (uint8_t i = 0; i < MATRIX_ROWS; i++)  {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user