]> git.donarmstrong.com Git - tmk_firmware.git/commitdiff
Fix Phantom sleep LED.
authorMathias Andersson <wraul@dbox.se>
Mon, 20 May 2013 19:08:21 +0000 (21:08 +0200)
committerMathias Andersson <wraul@dbox.se>
Mon, 27 May 2013 18:53:11 +0000 (20:53 +0200)
keyboard/phantom/config.h
keyboard/phantom/led.c
keyboard/phantom/matrix.c

index 09f758cd056f3f94ad2e1e459738f5e846812934..6f5389336e00fe2ff383e2b2f5bfc968a29522d1 100644 (file)
@@ -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)) \
index 109004ba89ee6389e1cc5013bc4d04a4680ed386..f4e9108f062457965a04771cb3971a166f2adb8f 100644 (file)
@@ -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);
+        PORTB |= (1<<6);
+    }
+    else
+    {
+        // Output low.
+        DDRB &= ~(1<<6);
+        PORTB &= ~(1<<6);
+    }
 
-    if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)))
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+    {
+        // Output high.
         DDRB &= ~(1<<7);
+        PORTB |= (1<<7);
+    }
     else
-        DDRB |= (1<<7);
+    {
+        // Output low.
+        DDRB &= ~(1<<7);
+        PORTB &= ~(1<<7);
+    }
 }
index c91c0d99ab708e6368fce5036bd58b30a9f9170c..6c3ae49c3a198eeabdb2ffa41d17b9c67aea9497 100644 (file)
@@ -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++)  {