aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2017-06-03 21:30:52 +0300
committerFred Sundvik <fsundvik@gmail.com>2017-06-03 21:30:52 +0300
commit2a7f9a7e46e1f4350be249c267fa7c35fd6562b5 (patch)
tree371987383b46263043ea9a9cad73ad33a5ce277f
parenteffffa33a503a093be4fa00b570df7a4e2996edc (diff)
downloadqmk_firmware-2a7f9a7e46e1f4350be249c267fa7c35fd6562b5.tar.gz
qmk_firmware-2a7f9a7e46e1f4350be249c267fa7c35fd6562b5.zip
Add backlight control to the IS31FL3731 driver
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
index 247269446..0b48783d6 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
+++ b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
@@ -43,7 +43,7 @@ extern const uint8_t CIE1931_CURVE[];
43 #define GDISP_INITIAL_CONTRAST 0 43 #define GDISP_INITIAL_CONTRAST 0
44#endif 44#endif
45#ifndef GDISP_INITIAL_BACKLIGHT 45#ifndef GDISP_INITIAL_BACKLIGHT
46 #define GDISP_INITIAL_BACKLIGHT 100 46 #define GDISP_INITIAL_BACKLIGHT 0
47#endif 47#endif
48 48
49#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0) 49#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
@@ -204,7 +204,8 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
204 uint8_t* src = PRIV(g)->frame_buffer; 204 uint8_t* src = PRIV(g)->frame_buffer;
205 for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) { 205 for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
206 for (int x=0;x<GDISP_SCREEN_WIDTH;x++) { 206 for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
207 PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[*src]; 207 uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
208 PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
208 ++src; 209 ++src;
209 } 210 }
210 } 211 }
@@ -297,8 +298,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
297 g->g.Orientation = (orientation_t)g->p.ptr; 298 g->g.Orientation = (orientation_t)g->p.ptr;
298 return; 299 return;
299 300
300 case GDISP_CONTROL_CONTRAST: 301 case GDISP_CONTROL_BACKLIGHT:
301 return; 302 if (g->g.Backlight == (unsigned)g->p.ptr)
303 return;
304 unsigned val = (unsigned)g->p.ptr;
305 g->g.Backlight = val > 255 ? 255 : val;
306 g->flags |= GDISP_FLG_NEEDFLUSH;
307 return;
302 } 308 }
303 } 309 }
304#endif // GDISP_NEED_CONTROL 310#endif // GDISP_NEED_CONTROL