summaryrefslogtreecommitdiff
path: root/keyboards/ergodox
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2017-07-09 13:20:03 +0300
committerJack Humbert <jack.humb@gmail.com>2017-07-10 09:01:59 -0400
commitaca0f4dcaed3af3ae2ed689e3ae556269c3f6691 (patch)
treeadeab6e78335730ea5118ddf673eaea8725025e6 /keyboards/ergodox
parent1ff5fb000f7d38f16710e753886d8bc9635d47e2 (diff)
downloadqmk_firmware-aca0f4dcaed3af3ae2ed689e3ae556269c3f6691.tar.gz
qmk_firmware-aca0f4dcaed3af3ae2ed689e3ae556269c3f6691.zip
Move GDISP drivers to /drivers/ugfx
Diffstat (limited to 'keyboards/ergodox')
-rw-r--r--keyboards/ergodox/infinity/board_IS31FL3731C.h (renamed from keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h)0
-rw-r--r--keyboards/ergodox/infinity/board_ST7565.h (renamed from keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h)0
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk2
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c312
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h36
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk2
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c329
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h27
-rw-r--r--keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h39
-rw-r--r--keyboards/ergodox/infinity/rules.mk4
10 files changed, 2 insertions, 749 deletions
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h b/keyboards/ergodox/infinity/board_IS31FL3731C.h
index 2ea73f1fb3..2ea73f1fb3 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/board_IS31FL3731C.h
+++ b/keyboards/ergodox/infinity/board_IS31FL3731C.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h b/keyboards/ergodox/infinity/board_ST7565.h
index 9650ffb440..9650ffb440 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h
+++ b/keyboards/ergodox/infinity/board_ST7565.h
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
deleted file mode 100644
index f32d0d8685..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/gdisp/IS31FL3731C
-GFXSRC += drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
deleted file mode 100644
index b4a5c84b0a..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_IS31FL3731C.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-#define GDISP_DRIVER_VMT GDISPVMT_IS31FL3731C_ERGODOX
-#include "drivers/gdisp/IS31FL3731C/gdisp_lld_config.h"
-#include "src/gdisp/gdisp_driver.h"
-
-#include "board_IS31FL3731C.h"
-
-
-// Can't include led_tables from here
-extern const uint8_t CIE1931_CURVE[];
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-#ifndef GDISP_SCREEN_HEIGHT
- #define GDISP_SCREEN_HEIGHT 9
-#endif
-#ifndef GDISP_SCREEN_WIDTH
- #define GDISP_SCREEN_WIDTH 16
-#endif
-#ifndef GDISP_INITIAL_CONTRAST
- #define GDISP_INITIAL_CONTRAST 0
-#endif
-#ifndef GDISP_INITIAL_BACKLIGHT
- #define GDISP_INITIAL_BACKLIGHT 0
-#endif
-
-#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
-
-#define IS31_ADDR_DEFAULT 0x74
-
-#define IS31_REG_CONFIG 0x00
-// bits in reg
-#define IS31_REG_CONFIG_PICTUREMODE 0x00
-#define IS31_REG_CONFIG_AUTOPLAYMODE 0x08
-#define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18
-// D2:D0 bits are starting frame for autoplay mode
-
-#define IS31_REG_PICTDISP 0x01 // D2:D0 frame select for picture mode
-
-#define IS31_REG_AUTOPLAYCTRL1 0x02
-// D6:D4 number of loops (000=infty)
-// D2:D0 number of frames to be used
-
-#define IS31_REG_AUTOPLAYCTRL2 0x03 // D5:D0 delay time (*11ms)
-
-#define IS31_REG_DISPLAYOPT 0x05
-#define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
-#define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8
-// D2:D0 bits blink period time (*0.27s)
-
-#define IS31_REG_AUDIOSYNC 0x06
-#define IS31_REG_AUDIOSYNC_ENABLE 0x1
-
-#define IS31_REG_FRAMESTATE 0x07
-
-#define IS31_REG_BREATHCTRL1 0x08
-// D6:D4 fade out time (26ms*2^i)
-// D2:D0 fade in time (26ms*2^i)
-
-#define IS31_REG_BREATHCTRL2 0x09
-#define IS31_REG_BREATHCTRL2_ENABLE 0x10
-// D2:D0 extinguish time (3.5ms*2^i)
-
-#define IS31_REG_SHUTDOWN 0x0A
-#define IS31_REG_SHUTDOWN_OFF 0x0
-#define IS31_REG_SHUTDOWN_ON 0x1
-
-#define IS31_REG_AGCCTRL 0x0B
-#define IS31_REG_ADCRATE 0x0C
-
-#define IS31_COMMANDREGISTER 0xFD
-#define IS31_FUNCTIONREG 0x0B // helpfully called 'page nine'
-#define IS31_FUNCTIONREG_SIZE 0xD
-
-#define IS31_FRAME_SIZE 0xB4
-
-#define IS31_PWM_REG 0x24
-#define IS31_PWM_SIZE 0x90
-
-#define IS31_LED_MASK_SIZE 0x12
-#define IS31_SCREEN_WIDTH 16
-
-#define IS31
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-typedef struct{
- uint8_t write_buffer_offset;
- uint8_t write_buffer[IS31_FRAME_SIZE];
- uint8_t frame_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH];
- uint8_t page;
-}__attribute__((__packed__)) PrivData;
-
-// Some common routines and macros
-#define PRIV(g) ((PrivData*)g->priv)
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-static GFXINLINE void write_page(GDisplay* g, uint8_t page) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = IS31_COMMANDREGISTER;
- tx[1] = page;
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_register(GDisplay* g, uint8_t page, uint8_t reg, uint8_t data) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = reg;
- tx[1] = data;
- write_page(g, page);
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint16_t length) {
- PRIV(g)->write_buffer_offset = offset;
- write_page(g, page);
- write_data(g, (uint8_t*)PRIV(g), length + 1);
-}
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(sizeof(PrivData));
- __builtin_memset(PRIV(g), 0, sizeof(PrivData));
- PRIV(g)->page = 0;
-
- // Initialise the board interface
- init_board(g);
- gfxSleepMilliseconds(10);
-
- // zero function page, all registers (assuming full_page is all zeroes)
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- set_hardware_shutdown(g, false);
- gfxSleepMilliseconds(10);
- // software shutdown
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
- // zero function page, all registers
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- gfxSleepMilliseconds(10);
-
-
- // zero all LED registers on all 8 pages, and enable the mask
- __builtin_memcpy(PRIV(g)->write_buffer, get_led_mask(g), IS31_LED_MASK_SIZE);
- for(uint8_t i=0; i<8; i++) {
- write_ram(g, i, 0, IS31_FRAME_SIZE);
- gfxSleepMilliseconds(1);
- }
-
- // software shutdown disable (i.e. turn stuff on)
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
-
- // Finish Init
- post_init_board(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-#if GDISP_HARDWARE_FLUSH
- LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH))
- return;
-
- PRIV(g)->page++;
- PRIV(g)->page %= 2;
- // TODO: some smarter algorithm for this
- // We should run only one physical page at a time
- // This way we don't need to send so much data, and
- // we could use slightly less memory
- uint8_t* src = PRIV(g)->frame_buffer;
- for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
- for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
- uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
- PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
- ++src;
- }
- }
- write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE);
- gfxSleepMilliseconds(1);
- write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
- }
-#endif
-
-#if GDISP_HARDWARE_DRAWPIXEL
- LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch(g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH-1 - g->p.x;
- y = g->p.y;
- break;
- }
- PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
- g->flags |= GDISP_FLG_NEEDFLUSH;
- }
-#endif
-
-#if GDISP_HARDWARE_PIXELREAD
- LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch(g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH-1 - g->p.x;
- y = g->p.y;
- break;
- }
- return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
- }
-#endif
-
-#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
- LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch(g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr)
- return;
- switch((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- break;
- case powerOn:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr)
- return;
- switch((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_BACKLIGHT:
- if (g->g.Backlight == (unsigned)g->p.ptr)
- return;
- unsigned val = (unsigned)g->p.ptr;
- g->g.Backlight = val > 100 ? 100 : val;
- g->flags |= GDISP_FLG_NEEDFLUSH;
- return;
- }
- }
-#endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h b/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
deleted file mode 100644
index bb28ad775e..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/IS31FL3731C/gdisp_lld_config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
-#define GDISP_HARDWARE_DRAWPIXEL TRUE
-#define GDISP_HARDWARE_PIXELREAD TRUE
-#define GDISP_HARDWARE_CONTROL TRUE
-
-#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
deleted file mode 100644
index 889a1a0317..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/driver.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-GFXINC += drivers/gdisp/st7565ergodox
-GFXSRC += drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
deleted file mode 100644
index b04ad02935..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-#define GDISP_DRIVER_VMT GDISPVMT_ST7565_ERGODOX
-#include "drivers/gdisp/st7565ergodox/gdisp_lld_config.h"
-#include "src/gdisp/gdisp_driver.h"
-
-#include "board_ST7565.h"
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-#ifndef GDISP_SCREEN_HEIGHT
-#define GDISP_SCREEN_HEIGHT 32
-#endif
-#ifndef GDISP_SCREEN_WIDTH
-#define GDISP_SCREEN_WIDTH 128
-#endif
-#ifndef GDISP_INITIAL_CONTRAST
-#define GDISP_INITIAL_CONTRAST 35
-#endif
-#ifndef GDISP_INITIAL_BACKLIGHT
-#define GDISP_INITIAL_BACKLIGHT 100
-#endif
-
-#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
-
-#include "drivers/gdisp/st7565ergodox/st7565.h"
-
-/*===========================================================================*/
-/* Driver config defaults for backward compatibility. */
-/*===========================================================================*/
-#ifndef ST7565_LCD_BIAS
-#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-#endif
-#ifndef ST7565_ADC
-#define ST7565_ADC ST7565_ADC_NORMAL
-#endif
-#ifndef ST7565_COM_SCAN
-#define ST7565_COM_SCAN ST7565_COM_SCAN_INC
-#endif
-#ifndef ST7565_PAGE_ORDER
-#define ST7565_PAGE_ORDER 0,1,2,3
-#endif
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-typedef struct{
- bool_t buffer2;
- uint8_t data_pos;
- uint8_t data[16];
- uint8_t ram[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8];
-}PrivData;
-
-// Some common routines and macros
-#define PRIV(g) ((PrivData*)g->priv)
-#define RAM(g) (PRIV(g)->ram)
-
-static GFXINLINE void write_cmd(GDisplay* g, uint8_t cmd) {
- PRIV(g)->data[PRIV(g)->data_pos++] = cmd;
-}
-
-static GFXINLINE void flush_cmd(GDisplay* g) {
- write_data(g, PRIV(g)->data, PRIV(g)->data_pos);
- PRIV(g)->data_pos = 0;
-}
-
-#define write_cmd2(g, cmd1, cmd2) { write_cmd(g, cmd1); write_cmd(g, cmd2); }
-#define write_cmd3(g, cmd1, cmd2, cmd3) { write_cmd(g, cmd1); write_cmd(g, cmd2); write_cmd(g, cmd3); }
-
-// Some common routines and macros
-#define delay(us) gfxSleepMicroseconds(us)
-#define delay_ms(ms) gfxSleepMilliseconds(ms)
-
-#define xyaddr(x, y) ((x) + ((y)>>3)*GDISP_SCREEN_WIDTH)
-#define xybit(y) (1<<((y)&7))
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/*
- * As this controller can't update on a pixel boundary we need to maintain the
- * the entire display surface in memory so that we can do the necessary bit
- * operations. Fortunately it is a small display in monochrome.
- * 64 * 128 / 8 = 1024 bytes.
- */
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(sizeof(PrivData));
- PRIV(g)->buffer2 = false;
- PRIV(g)->data_pos = 0;
-
- // Initialise the board interface
- init_board(g);
-
- // Hardware reset
- setpin_reset(g, TRUE);
- gfxSleepMilliseconds(20);
- setpin_reset(g, FALSE);
- gfxSleepMilliseconds(20);
- acquire_bus(g);
- enter_cmd_mode(g);
-
- write_cmd(g, ST7565_RESET);
- write_cmd(g, ST7565_LCD_BIAS);
- write_cmd(g, ST7565_ADC);
- write_cmd(g, ST7565_COM_SCAN);
-
- write_cmd(g, ST7565_RESISTOR_RATIO | 0x1);
- write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST);
-
- // turn on internal power supply (VC=1, VR=1, VF=1)
- write_cmd(g, ST7565_POWER_CONTROL | 0x07);
-
- write_cmd(g, ST7565_INVERT_DISPLAY);
- write_cmd(g, ST7565_ALLON_NORMAL);
-
- write_cmd(g, ST7565_START_LINE | 0);
- write_cmd(g, ST7565_RMW);
- flush_cmd(g);
-
- // Finish Init
- post_init_board(g);
-
- // Release the bus
- release_bus(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-#if GDISP_HARDWARE_FLUSH
-LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- unsigned p;
-
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH))
- return;
-
- acquire_bus(g);
- enter_cmd_mode(g);
- unsigned dstOffset = (PRIV(g)->buffer2 ? 4 : 0);
- for (p = 0; p < 4; p++) {
- write_cmd(g, ST7565_PAGE | (p + dstOffset));
- write_cmd(g, ST7565_COLUMN_MSB | 0);
- write_cmd(g, ST7565_COLUMN_LSB | 0);
- write_cmd(g, ST7565_RMW);
- flush_cmd(g);
- enter_data_mode(g);
- write_data(g, RAM(g) + (p*GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH);
- enter_cmd_mode(g);
- }
- unsigned line = (PRIV(g)->buffer2 ? 32 : 0);
- write_cmd(g, ST7565_START_LINE | line);
- flush_cmd(g);
- PRIV(g)->buffer2 = !PRIV(g)->buffer2;
- release_bus(g);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
-}
-#endif
-
-#if GDISP_HARDWARE_DRAWPIXEL
-LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch(g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT-1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH-1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT-1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT-1 - g->p.y;
- y = g->p.x;
- break;
- }
- if (gdispColor2Native(g->p.color) != Black)
- RAM(g)[xyaddr(x, y)] |= xybit(y);
- else
- RAM(g)[xyaddr(x, y)] &= ~xybit(y);
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-#endif
-
-#if GDISP_HARDWARE_PIXELREAD
-LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch(g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT-1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH-1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT-1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT-1 - g->p.y;
- y = g->p.x;
- break;
- }
- return (RAM(g)[xyaddr(x, y)] & xybit(y)) ? White : Black;
-}
-#endif
-
-LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
- uint8_t* buffer = (uint8_t*)g->p.ptr;
- int linelength = g->p.cx;
- for (int i = 0; i < g->p.cy; i++) {
- unsigned dstx = g->p.x;
- unsigned dsty = g->p.y + i;
- unsigned srcx = g->p.x1;
- unsigned srcy = g->p.y1 + i;
- unsigned srcbit = srcy * g->p.x2 + srcx;
- for(int j=0; j < linelength; j++) {
- uint8_t src = buffer[srcbit / 8];
- uint8_t bit = 7-(srcbit % 8);
- uint8_t bitset = (src >> bit) & 1;
- uint8_t* dst = &(RAM(g)[xyaddr(dstx, dsty)]);
- if (bitset) {
- *dst |= xybit(dsty);
- }
- else {
- *dst &= ~xybit(dsty);
- }
- dstx++;
- srcbit++;
- }
- }
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-
-#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch(g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr)
- return;
- switch((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- acquire_bus(g);
- enter_cmd_mode(g);
- write_cmd(g, ST7565_DISPLAY_OFF);
- flush_cmd(g);
- release_bus(g);
- break;
- case powerOn:
- acquire_bus(g);
- enter_cmd_mode(g);
- write_cmd(g, ST7565_DISPLAY_ON);
- flush_cmd(g);
- release_bus(g);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr)
- return;
- switch((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_CONTRAST:
- g->g.Contrast = (unsigned)g->p.ptr & 63;
- acquire_bus(g);
- enter_cmd_mode(g);
- write_cmd2(g, ST7565_CONTRAST, g->g.Contrast);
- flush_cmd(g);
- release_bus(g);
- return;
- }
-}
-#endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h
deleted file mode 100644
index 2b66a877c8..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
-#define GDISP_HARDWARE_DRAWPIXEL TRUE
-#define GDISP_HARDWARE_PIXELREAD TRUE
-#define GDISP_HARDWARE_CONTROL TRUE
-#define GDISP_HARDWARE_BITFILLS TRUE
-
-#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h
deleted file mode 100644
index 24924ff050..0000000000
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/st7565.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _ST7565_H
-#define _ST7565_H
-
-#define ST7565_CONTRAST 0x81
-#define ST7565_ALLON_NORMAL 0xA4
-#define ST7565_ALLON 0xA5
-#define ST7565_POSITIVE_DISPLAY 0xA6
-#define ST7565_INVERT_DISPLAY 0xA7
-#define ST7565_DISPLAY_OFF 0xAE
-#define ST7565_DISPLAY_ON 0xAF
-
-#define ST7565_LCD_BIAS_7 0xA3
-#define ST7565_LCD_BIAS_9 0xA2
-
-#define ST7565_ADC_NORMAL 0xA0
-#define ST7565_ADC_REVERSE 0xA1
-
-#define ST7565_COM_SCAN_INC 0xC0
-#define ST7565_COM_SCAN_DEC 0xC8
-
-#define ST7565_START_LINE 0x40
-#define ST7565_PAGE 0xB0
-#define ST7565_COLUMN_MSB 0x10
-#define ST7565_COLUMN_LSB 0x00
-#define ST7565_RMW 0xE0
-
-#define ST7565_RESISTOR_RATIO 0x20
-#define ST7565_POWER_CONTROL 0x28
-
-#define ST7565_RESET 0xE2
-
-#endif /* _ST7565_H */
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index bbb0f6efea..9e22463637 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -67,5 +67,5 @@ LCD_BACKLIGHT_ENABLE = yes
MIDI_ENABLE = no
RGBLIGHT_ENABLE = no
-include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
-include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk \ No newline at end of file
+include $(TOP_DIR)/drivers/ugfx/gdisp/st7565ergodox/driver.mk
+include $(TOP_DIR)/drivers/ugfx/gdisp/IS31FL3731C/driver.mk \ No newline at end of file