diff options
| author | Fred Sundvik <fsundvik@gmail.com> | 2017-06-03 21:30:52 +0300 |
|---|---|---|
| committer | Fred Sundvik <fsundvik@gmail.com> | 2017-06-03 21:30:52 +0300 |
| commit | 2a7f9a7e46e1f4350be249c267fa7c35fd6562b5 (patch) | |
| tree | 371987383b46263043ea9a9cad73ad33a5ce277f | |
| parent | effffa33a503a093be4fa00b570df7a4e2996edc (diff) | |
| download | qmk_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.c | 14 |
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 |
