diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2013-06-23 14:39:56 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2013-06-23 14:39:56 -0600 |
commit | 9d4f3f645e606d812e3bec76a10940691b30b5ff (patch) | |
tree | ec970f690586d7ce93d937df8d6389bc1ecbdf57 /nuttx/drivers/lcd | |
parent | 333edc2da8d4bad41a3ea553bf635cbad5119427 (diff) | |
download | px4-nuttx-9d4f3f645e606d812e3bec76a10940691b30b5ff.tar.gz px4-nuttx-9d4f3f645e606d812e3bec76a10940691b30b5ff.tar.bz2 px4-nuttx-9d4f3f645e606d812e3bec76a10940691b30b5ff.zip |
Add support for the UG-2843HHSWEG04 OLED and for the SAM4L Xplained Pro OLED module that uses that OLED.
Diffstat (limited to 'nuttx/drivers/lcd')
-rw-r--r-- | nuttx/drivers/lcd/Kconfig | 68 | ||||
-rw-r--r-- | nuttx/drivers/lcd/Make.defs | 8 | ||||
-rw-r--r-- | nuttx/drivers/lcd/README.txt | 5 | ||||
-rw-r--r-- | nuttx/drivers/lcd/ssd1306.c (renamed from nuttx/drivers/lcd/ug-2864hsweg01.c) | 376 |
4 files changed, 254 insertions, 203 deletions
diff --git a/nuttx/drivers/lcd/Kconfig b/nuttx/drivers/lcd/Kconfig index 7f0871201..2f956963b 100644 --- a/nuttx/drivers/lcd/Kconfig +++ b/nuttx/drivers/lcd/Kconfig @@ -205,6 +205,7 @@ config LCD_MIO283QT2 config LCD_UG9664HSWAG01 bool "UG-9664HSWAG01 OLED Display Module" default n + depends on SPI ---help--- OLED Display Module, UG-9664HSWAG01, Univision Technology Inc. Used with the LPCXpresso and Embedded Artists base board. @@ -221,6 +222,7 @@ if LCD_UG9664HSWAG01 config UG9664HSWAG01_SPIMODE int "UG-9664HSWAG01 SPI Mode" default 0 + range 0 3 ---help--- Controls the SPI mode @@ -247,6 +249,68 @@ config UG9664HSWAG01_POWER endif +config LCD_UG2864HSWEG01 + bool "UG-2864HSWEG01 OLED Display Module" + default n + depends on SPI + select LCD_SSD1306 + ---help--- + OLED Display Module, UG-2864HSWEG01, Univision Technology Inc based + on the Solomon Tech SSD1306 LCD controller. + + Required LCD driver settings: + LCD_MAXCONTRAST should be 255, but any value >0 and <=255 will be accepted. + LCD_MAXPOWER should be 1: 0=off, 1=on + + Required SPI driver settings: + SPI_CMDDATA - Include support for cmd/data selection. + + +config LCD_UG2832HSWEG04 + bool "UG-2832HSWEG04 OLED Display Module" + default n + depends on SPI && !LCD_UG2864HSWEG01 + select LCD_SSD1306 + ---help--- + OLED Display Module, UG-UG2832HSWEG04, Univision Technology Inc + based on the Solomon Tech SSD1306 LCD controller. Used with the + Atmel SAM4L Xplained Pro board on the OLED1 module. + + Required LCD driver settings: + LCD_MAXCONTRAST should be 255, but any value >0 and <=255 will be accepted. + LCD_MAXPOWER should be 1: 0=off, 1=on + + Required SPI driver settings: + SPI_CMDDATA - Include support for cmd/data selection. + +config LCD_SSD1306 + bool + +if LCD_SSD1306 + +config SSD1306_SPIMODE + int "SSD1306 SPI Mode" + default 0 + range 0 3 + ---help--- + Selects the SPI mode used with the SSD1306 device + +config SSD1306_FREQUENCY + int "SSD1306 SPI Frequency" + default 3500000 + ---help--- + Selects the SPI bus frequency used with the SSD1306 device + +#config SSD1306_NINTERFACES +# int "Number of SSD1306 Devices" +# default 1 +# ---help--- +# Specifies the number of physical SSD1306 devices that will be +# supported. NOTE: At present, this must be undefined or defined to +# be 1. + +endif + config LCD_ST7567 bool "ST7567 LCD Display Module" default n @@ -266,6 +330,7 @@ if LCD_ST7567 config ST7567_SPIMODE int "ST7567 SPI Mode" default 0 + range 0 3 ---help--- Controls the SPI mode @@ -319,9 +384,10 @@ config LCD_UG2864AMBAG01 if LCD_UG2864AMBAG01 - config UG2864AMBAG01_SPIMODE +config UG2864AMBAG01_SPIMODE int "UG-2864AMBAG01 SPI Mode" default 3 + range 0 3 ---help--- Controls the SPI mode diff --git a/nuttx/drivers/lcd/Make.defs b/nuttx/drivers/lcd/Make.defs index 649979121..fcff2e02e 100644 --- a/nuttx/drivers/lcd/Make.defs +++ b/nuttx/drivers/lcd/Make.defs @@ -51,14 +51,14 @@ ifeq ($(CONFIG_LCD_UG2864AMBAG01),y) CSRCS += ug-2864ambag01.c endif -ifeq ($(CONFIG_LCD_UG2864HSWEG01),y) - CSRCS += ug-2864hsweg01.c -endif - ifeq ($(CONFIG_LCD_UG9664HSWAG01),y) CSRCS += ug-9664hswag01.c endif +ifeq ($(CONFIG_LCD_SSD1306),y) + CSRCS += ssd1306.c +endif + ifeq ($(CONFIG_LCD_SSD1289),y) CSRCS += ssd1289.c endif diff --git a/nuttx/drivers/lcd/README.txt b/nuttx/drivers/lcd/README.txt index 2092b53d1..469e2f499 100644 --- a/nuttx/drivers/lcd/README.txt +++ b/nuttx/drivers/lcd/README.txt @@ -118,6 +118,11 @@ Re-usable LCD drivers reside in the drivers/lcd directory: Technology Inc. Used with the LPC Xpresso and Embedded Artists base board. + ssd1306.c. OLED Display Modules based on the SSD1306 controllers. + This includes the UG-2864HSWEG01 and UG2832HSWEG04, Both from Univision + Technology Inc. The latter is used with the OLED1 module that comes + with the Atmel SAM4l Xplained Pro board. + Examples: configs/ ================== diff --git a/nuttx/drivers/lcd/ug-2864hsweg01.c b/nuttx/drivers/lcd/ssd1306.c index 02a59b104..684193173 100644 --- a/nuttx/drivers/lcd/ug-2864hsweg01.c +++ b/nuttx/drivers/lcd/ssd1306.c @@ -1,15 +1,17 @@ /************************************************************************************** - * drivers/lcd/ug-2864hsweg01.c - * Driver for Univision UG-2864HSWEG01 OLED display (wih SSD1306 controller) in SPI - * mode + * drivers/lcd/ssd1306.c + * Driver for Univision UG-2864HSWEG01 OLED display or UG-2832HSWEG04 both with the + * Univision SSD1306 controller in SPI mode * - * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Copyright (C) 2012-2013 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * References: * 1. Product Specification (Preliminary), Part Name: OEL Display Module, Part ID: * UG-2864HSWEG01, Doc No: SAS1-9046-B, Univision Technology Inc. - * 2. SSD1306, 128 X 64 Dot Matrix OLED/PLED, Preliminary Segment/Common Driver with + * 2. Product Specification, Part Name: OEL Display Module, Part ID: UG-2832HSWEG04, + * Doc No.: SAS1-B020-B, Univision Technology Inc. + * 3. SSD1306, 128 X 64 Dot Matrix OLED/PLED, Preliminary Segment/Common Driver with * Controller, Solomon Systech * * Redistribution and use in source and binary forms, with or without @@ -129,11 +131,11 @@ #include <nuttx/arch.h> #include <nuttx/spi.h> #include <nuttx/lcd/lcd.h> -#include <nuttx/lcd/ug-2864hsweg01.h> +#include <nuttx/lcd/ssd1306.h> #include <arch/irq.h> -#ifdef CONFIG_LCD_UG2864HSWEG01 +#ifdef CONFIG_LCD_SSD1306 /************************************************************************************** * Pre-processor Definitions @@ -141,10 +143,18 @@ /* Configuration **********************************************************************/ /* Limitations of the current configuration that I hope to fix someday */ -#if CONFIG_UG2864HSWEG01_NINTERFACES != 1 -# warning "This implementation supports only a single OLED device" -# undef CONFIG_UG2864HSWEG01_NINTERFACES -# define CONFIG_UG2864HSWEG01_NINTERFACES 1 +#ifndef CONFIG_SSD1306_NINTERFACES +# define CONFIG_SSD1306_NINTERFACES 1 +#endif + +#if CONFIG_SSD1306_NINTERFACES != 1 +# warning "This implementation supports only a single SSD1306 device" +# undef CONFIG_SSD1306_NINTERFACES +# define CONFIG_SSD1306_NINTERFACES 1 +#endif + +#if !defined(CONFIG_LCD_UG2864HSWEG01) && !defined(CONFIG_LCD_UG2832HSWEG04) +# error "Unknown and unsupported SSD1306 LCD" #endif #if defined(CONFIG_LCD_PORTRAIT) || defined(CONFIG_LCD_RPORTRAIT) @@ -194,12 +204,12 @@ # define SSD1306_CHRGPER(d,p) ((((d) & 0x0f) << 4) | ((p) & 0x0f)) #define SSD1306_CMNPAD_CONFIG (0xda) /* Set Common pads hardware configuration: (Double Bytes Command) */ # define SSD1306_CMNPAD(c) ((0x02) | ((c) & 0x10)) -#define SSD1306_VCOM_SET (0xdb) /* Set VCOM Deselect Level: (Double Bytes Command) */ +#define SSD1306_VCOM_SET (0xdb) /* Set VCOM Deselect Level: (Double Byte Command) */ # define SSD1306_VCOM(v) (v) -#define SSD1306_CHRPUMP_SET (0x8d) /* Charge Pump Setting */ -# define SSD1306_CHRPUMP_ON (0x14) -# define SSD1306_CHRPUMP_OFF (0x10) +#define SSD1306_CHRPUMP_SET (0x8d) /* Charge Pump Setting */ +# define SSD1306_CHRPUMP_ON (0x14) +# define SSD1306_CHRPUMP_OFF (0x10) #define SSD1306_RMWSTART (0xe0) /* Read-Modify-Write: (e0h) */ #define SSD1306_NOP (0xe3) /* NOP: (e3h) */ @@ -214,35 +224,42 @@ /* Display Resolution * * The SSD1306 display controller can handle a resolution of 132x64. The UG-2864HSWEG01 - * on the base board is 128x64. + * on the base board is 128x64; the UG-2832HSWEG04 is 128x32. */ -#define UG2864HSWEG01_DEV_XRES 128 /* Only 128 of 131 columns used */ -#define UG2864HSWEG01_DEV_YRES 64 /* 8 pages each 8 rows */ -#define UG2864HSWEG01_DEV_XOFFSET 2 /* Offset to logical column 0 */ -#define UG2864HSWEG01_DEV_PAGES 8 /* 8 pages */ +#if defined(CONFIG_LCD_UG2864HSWEG01) +# define SSD1306_DEV_NATIVE_XRES 128 /* Only 128 of 131 columns used */ +# define SSD1306_DEV_NATIVE_YRES 64 /* 8 pages each 8 rows */ +# define SSD1306_DEV_XOFFSET 2 /* Offset to logical column 0 */ +# define SSD1306_DEV_PAGES 8 /* 8 pages */ +#elif defined(CONFIG_LCD_UG2832HSWEG04) +# define SSD1306_DEV_NATIVE_XRES 128 /* Only 128 of 131 columns used */ +# define SSD1306_DEV_NATIVE_YRES 32 /* 4 pages each 8 rows */ +# define SSD1306_DEV_XOFFSET 2 /* Offset to logical column 0 */ +# define SSD1306_DEV_PAGES 4 /* 4 pages */ +#endif #if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE) -# define UG2864HSWEG01_XRES UG2864HSWEG01_DEV_XRES -# define UG2864HSWEG01_YRES UG2864HSWEG01_DEV_YRES +# define SSD1306_DEV_XRES SSD1306_DEV_NATIVE_XRES +# define SSD1306_DEV_YRES SSD1306_DEV_NATIVE_YRES #else -# define UG2864HSWEG01_XRES UG2864HSWEG01_DEV_YRES -# define UG2864HSWEG01_YRES UG2864HSWEG01_DEV_XRES +# define SSD1306_DEV_XRES SSD1306_DEV_NATIVE_YRES +# define SSD1306_DEV_YRES SSD1306_DEV_NATIVE_XRES #endif -/* Color depth and format */ +/* Bytes per logical row and actual device row */ -#define UG2864HSWEG01_BPP 1 -#define UG2864HSWEG01_COLORFMT FB_FMT_Y1 +#define SSD1306_DEV_XSTRIDE (SSD1306_DEV_XRES >> 3) +#define SSD1306_DEV_YSTRIDE (SSD1306_DEV_YRES >> 3) -/* Bytes per logical row and actual device row */ +/* Color depth and format */ -#define UG2864HSWEG01_XSTRIDE (UG2864HSWEG01_XRES >> 3) -#define UG2864HSWEG01_YSTRIDE (UG2864HSWEG01_YRES >> 3) +#define SSD1306_DEV_BPP 1 +#define SSD1306_DEV_COLORFMT FB_FMT_Y1 /* Default contrast */ -#define UG2864HSWEG01_CONTRAST (128) +#define SSD1306_DEV_CONTRAST (128) /* The size of the shadow frame buffer or one row buffer. * @@ -250,19 +267,19 @@ * Row size: 128 columns x 8 rows-per-page / 8 bits-per-pixel */ -#define UG2864HSWEG01_FBSIZE (UG2864HSWEG01_XSTRIDE * UG2864HSWEG01_YRES) -#define UG2864HSWEG01_ROWSIZE (UG2864HSWEG01_XSTRIDE) +#define SSD1306_DEV_FBSIZE (SSD1306_DEV_XSTRIDE * SSD1306_DEV_YRES) +#define SSD1306_DEV_ROWSIZE (SSD1306_DEV_XSTRIDE) /* Bit helpers */ -#define LS_BIT (1 << 0) -#define MS_BIT (1 << 7) +#define LS_BIT (1 << 0) +#define MS_BIT (1 << 7) /* Debug ******************************************************************************/ #ifdef CONFIG_DEBUG_LCD -# define lcddbg(format, arg...) dbg(format, ##arg) -# define lcdvdbg(format, arg...) vdbg(format, ##arg) +# define lcddbg(format, arg...) dbg(format, ##arg) +# define lcdvdbg(format, arg...) vdbg(format, ##arg) #else # define lcddbg(x...) # define lcdvdbg(x...) @@ -274,7 +291,7 @@ /* This structure describes the state of this driver */ -struct ug2864hsweg01_dev_s +struct ssd1306_dev_s { struct lcd_dev_s dev; /* Publically visible device structure */ @@ -290,7 +307,7 @@ struct ug2864hsweg01_dev_s * a shadow copy of the framebuffer memory. At 128x64, this amounts to 1KB. */ - uint8_t fb[UG2864HSWEG01_FBSIZE]; + uint8_t fb[SSD1306_DEV_FBSIZE]; }; /************************************************************************************** @@ -300,28 +317,28 @@ struct ug2864hsweg01_dev_s /* Low-level SPI helpers */ #ifdef CONFIG_SPI_OWNBUS -static inline void ug2864hsweg01_configspi(FAR struct spi_dev_s *spi); -# define ug2864hsweg01_lock(spi) -# define ug2864hsweg01_unlock(spi) +static inline void ssd1306_configspi(FAR struct spi_dev_s *spi); +# define ssd1306_lock(spi) +# define ssd1306_unlock(spi) #else -# define ug2864hsweg01_configspi(spi) -static void ug2864hsweg01_lock(FAR struct spi_dev_s *spi); -static void ug2864hsweg01_unlock(FAR struct spi_dev_s *spi); +# define ssd1306_configspi(spi) +static void ssd1306_lock(FAR struct spi_dev_s *spi); +static void ssd1306_unlock(FAR struct spi_dev_s *spi); #endif /* LCD Data Transfer Methods */ -static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, - FAR const uint8_t *buffer, size_t npixels); -static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer, - size_t npixels); +static int ssd1306_putrun(fb_coord_t row, fb_coord_t col, + FAR const uint8_t *buffer, size_t npixels); +static int ssd1306_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer, + size_t npixels); /* LCD Configuration */ -static int ug2864hsweg01_getvideoinfo(FAR struct lcd_dev_s *dev, - FAR struct fb_videoinfo_s *vinfo); -static int ug2864hsweg01_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno, - FAR struct lcd_planeinfo_s *pinfo); +static int ssd1306_getvideoinfo(FAR struct lcd_dev_s *dev, + FAR struct fb_videoinfo_s *vinfo); +static int ssd1306_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno, + FAR struct lcd_planeinfo_s *pinfo); /* LCD RGB Mapping */ @@ -337,10 +354,10 @@ static int ug2864hsweg01_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int pl /* LCD Specific Controls */ -static int ug2864hsweg01_getpower(struct lcd_dev_s *dev); -static int ug2864hsweg01_setpower(struct lcd_dev_s *dev, int power); -static int ug2864hsweg01_getcontrast(struct lcd_dev_s *dev); -static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contrast); +static int ssd1306_getpower(struct lcd_dev_s *dev); +static int ssd1306_setpower(struct lcd_dev_s *dev, int power); +static int ssd1306_getcontrast(struct lcd_dev_s *dev); +static int ssd1306_setcontrast(struct lcd_dev_s *dev, unsigned int contrast); /************************************************************************************** * Private Data @@ -357,48 +374,48 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras * if there are multiple LCD devices, they must each have unique run buffers. */ -static uint8_t g_runbuffer[UG2864HSWEG01_ROWSIZE]; +static uint8_t g_runbuffer[SSD1306_DEV_ROWSIZE]; /* This structure describes the overall LCD video controller */ static const struct fb_videoinfo_s g_videoinfo = { - .fmt = UG2864HSWEG01_COLORFMT, /* Color format: RGB16-565: RRRR RGGG GGGB BBBB */ - .xres = UG2864HSWEG01_XRES, /* Horizontal resolution in pixel columns */ - .yres = UG2864HSWEG01_YRES, /* Vertical resolution in pixel rows */ - .nplanes = 1, /* Number of color planes supported */ + .fmt = SSD1306_DEV_COLORFMT, /* Color format: RGB16-565: RRRR RGGG GGGB BBBB */ + .xres = SSD1306_DEV_XRES, /* Horizontal resolution in pixel columns */ + .yres = SSD1306_DEV_YRES, /* Vertical resolution in pixel rows */ + .nplanes = 1, /* Number of color planes supported */ }; /* This is the standard, NuttX Plane information object */ static const struct lcd_planeinfo_s g_planeinfo = { - .putrun = ug2864hsweg01_putrun, /* Put a run into LCD memory */ - .getrun = ug2864hsweg01_getrun, /* Get a run from LCD memory */ + .putrun = ssd1306_putrun, /* Put a run into LCD memory */ + .getrun = ssd1306_getrun, /* Get a run from LCD memory */ .buffer = (uint8_t*)g_runbuffer, /* Run scratch buffer */ - .bpp = UG2864HSWEG01_BPP, /* Bits-per-pixel */ + .bpp = SSD1306_DEV_BPP, /* Bits-per-pixel */ }; /* This is the OLED driver instance (only a single device is supported for now) */ -static struct ug2864hsweg01_dev_s g_oleddev = +static struct ssd1306_dev_s g_oleddev = { .dev = { /* LCD Configuration */ - .getvideoinfo = ug2864hsweg01_getvideoinfo, - .getplaneinfo = ug2864hsweg01_getplaneinfo, + .getvideoinfo = ssd1306_getvideoinfo, + .getplaneinfo = ssd1306_getplaneinfo, /* LCD RGB Mapping -- Not supported */ /* Cursor Controls -- Not supported */ /* LCD Specific Controls */ - .getpower = ug2864hsweg01_getpower, - .setpower = ug2864hsweg01_setpower, - .getcontrast = ug2864hsweg01_getcontrast, - .setcontrast = ug2864hsweg01_setcontrast, + .getpower = ssd1306_getpower, + .setpower = ssd1306_setpower, + .getcontrast = ssd1306_getcontrast, + .setcontrast = ssd1306_setcontrast, }, }; @@ -407,7 +424,7 @@ static struct ug2864hsweg01_dev_s g_oleddev = **************************************************************************************/ /************************************************************************************** - * Name: ug2864hsweg01_configspi + * Name: ssd1306_configspi * * Description: * Configure the SPI for use with the UG-2864HSWEG01 @@ -423,23 +440,23 @@ static struct ug2864hsweg01_dev_s g_oleddev = **************************************************************************************/ #ifdef CONFIG_SPI_OWNBUS -static inline void ug2864hsweg01_configspi(FAR struct spi_dev_s *spi) +static inline void ssd1306_configspi(FAR struct spi_dev_s *spi) { lcdvdbg("Mode: %d Bits: 8 Frequency: %d\n", - CONFIG_UG2864HSWEG01_SPIMODE, CONFIG_UG2864HSWEG01_FREQUENCY); + CONFIG_SSD1306_SPIMODE, CONFIG_SSD1306_FREQUENCY); /* Configure SPI for the UG-2864HSWEG01. But only if we own the SPI bus. Otherwise, * don't bother because it might change. */ - SPI_SETMODE(spi, CONFIG_UG2864HSWEG01_SPIMODE); + SPI_SETMODE(spi, CONFIG_SSD1306_SPIMODE); SPI_SETBITS(spi, 8); - SPI_SETFREQUENCY(spi, CONFIG_UG2864HSWEG01_FREQUENCY); + SPI_SETFREQUENCY(spi, CONFIG_SSD1306_FREQUENCY); } #endif /************************************************************************************** - * Name: ug2864hsweg01_lock + * Name: ssd1306_lock * * Description: * Select the SPI, locking and re-configuring if necessary @@ -455,7 +472,7 @@ static inline void ug2864hsweg01_configspi(FAR struct spi_dev_s *spi) **************************************************************************************/ #ifndef CONFIG_SPI_OWNBUS -static inline void ug2864hsweg01_lock(FAR struct spi_dev_s *spi) +static inline void ssd1306_lock(FAR struct spi_dev_s *spi) { /* Lock the SPI bus if there are multiple devices competing for the SPI bus. */ @@ -465,14 +482,14 @@ static inline void ug2864hsweg01_lock(FAR struct spi_dev_s *spi) * might have gotten configured for a different device while unlocked) */ - SPI_SETMODE(spi, CONFIG_UG2864HSWEG01_SPIMODE); + SPI_SETMODE(spi, CONFIG_SSD1306_SPIMODE); SPI_SETBITS(spi, 8); - SPI_SETFREQUENCY(spi, CONFIG_UG2864HSWEG01_FREQUENCY); + SPI_SETFREQUENCY(spi, CONFIG_SSD1306_FREQUENCY); } #endif /************************************************************************************** - * Name: ug2864hsweg01_unlock + * Name: ssd1306_unlock * * Description: * De-select the SPI @@ -488,7 +505,7 @@ static inline void ug2864hsweg01_lock(FAR struct spi_dev_s *spi) **************************************************************************************/ #ifndef CONFIG_SPI_OWNBUS -static inline void ug2864hsweg01_unlock(FAR struct spi_dev_s *spi) +static inline void ssd1306_unlock(FAR struct spi_dev_s *spi) { /* De-select UG-2864HSWEG01 chip and relinquish the SPI bus. */ @@ -497,7 +514,7 @@ static inline void ug2864hsweg01_unlock(FAR struct spi_dev_s *spi) #endif /************************************************************************************** - * Name: ug2864hsweg01_putrun + * Name: ssd1306_putrun * * Description: * This method can be used to write a partial raster line to the LCD. @@ -512,12 +529,12 @@ static inline void ug2864hsweg01_unlock(FAR struct spi_dev_s *spi) **************************************************************************************/ #if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE) -static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer, - size_t npixels) +static int ssd1306_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer, + size_t npixels) { /* Because of this line of code, we will only be able to support a single UG device */ - FAR struct ug2864hsweg01_dev_s *priv = (FAR struct ug2864hsweg01_dev_s *)&g_oleddev; + FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)&g_oleddev; FAR uint8_t *fbptr; FAR uint8_t *ptr; uint8_t devcol; @@ -533,14 +550,14 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ /* Clip the run to the display */ pixlen = npixels; - if ((unsigned int)col + (unsigned int)pixlen > (unsigned int)UG2864HSWEG01_XRES) + if ((unsigned int)col + (unsigned int)pixlen > (unsigned int)SSD1306_DEV_XRES) { - pixlen = (int)UG2864HSWEG01_XRES - (int)col; + pixlen = (int)SSD1306_DEV_XRES - (int)col; } /* Verify that some portion of the run remains on the display */ - if (pixlen <= 0 || row > UG2864HSWEG01_YRES) + if (pixlen <= 0 || row > SSD1306_DEV_YRES) { return OK; } @@ -548,8 +565,8 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ /* Perform coordinate conversion for reverse landscape mode */ #ifdef CONFIG_LCD_RLANDSCAPE - row = (UG2864HSWEG01_YRES-1) - row; - col = (UG2864HSWEG01_XRES-1) - col; + row = (SSD1306_DEV_YRES-1) - row; + col = (SSD1306_DEV_XRES-1) - col; #endif /* Get the page number. The range of 64 lines is divided up into eight @@ -581,7 +598,7 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ */ fbmask = 1 << (row & 7); - fbptr = &priv->fb[page * UG2864HSWEG01_XRES + col]; + fbptr = &priv->fb[page * SSD1306_DEV_XRES + col]; #ifdef CONFIG_LCD_RLANDSCAPE ptr = fbptr + pixlen - 1; #else @@ -646,11 +663,11 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ * display range. */ - devcol = col + UG2864HSWEG01_DEV_XOFFSET; + devcol = col + SSD1306_DEV_XOFFSET; /* Lock and select device */ - ug2864hsweg01_lock(priv->spi); + ssd1306_lock(priv->spi); SPI_SELECT(priv->spi, SPIDEV_DISPLAY, true); /* Select command transfer */ @@ -678,7 +695,7 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ /* De-select and unlock the device */ SPI_SELECT(priv->spi, SPIDEV_DISPLAY, false); - ug2864hsweg01_unlock(priv->spi); + ssd1306_unlock(priv->spi); return OK; } #else @@ -686,7 +703,7 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ #endif /************************************************************************************** - * Name: ug2864hsweg01_getrun + * Name: ssd1306_getrun * * Description: * This method can be used to read a partial raster line from the LCD: @@ -703,12 +720,12 @@ static int ug2864hsweg01_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_ **************************************************************************************/ #if defined(CONFIG_LCD_LANDSCAPE) || defined(CONFIG_LCD_RLANDSCAPE) -static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer, +static int ssd1306_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer, size_t npixels) { /* Because of this line of code, we will only be able to support a single UG device */ - FAR struct ug2864hsweg01_dev_s *priv = &g_oleddev; + FAR struct ssd1306_dev_s *priv = &g_oleddev; FAR uint8_t *fbptr; uint8_t page; uint8_t fbmask; @@ -722,14 +739,14 @@ static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buf /* Clip the run to the display */ pixlen = npixels; - if ((unsigned int)col + (unsigned int)pixlen > (unsigned int)UG2864HSWEG01_XRES) + if ((unsigned int)col + (unsigned int)pixlen > (unsigned int)SSD1306_DEV_XRES) { - pixlen = (int)UG2864HSWEG01_XRES - (int)col; + pixlen = (int)SSD1306_DEV_XRES - (int)col; } /* Verify that some portion of the run is actually the display */ - if (pixlen <= 0 || row > UG2864HSWEG01_YRES) + if (pixlen <= 0 || row > SSD1306_DEV_YRES) { return -EINVAL; } @@ -737,8 +754,8 @@ static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buf /* Perform coordinate conversion for reverse landscape mode */ #ifdef CONFIG_LCD_RLANDSCAPE - row = (UG2864HSWEG01_YRES-1) - row; - col = (UG2864HSWEG01_XRES-1) - col; + row = (SSD1306_DEV_YRES-1) - row; + col = (SSD1306_DEV_XRES-1) - col; #endif /* Then transfer the display data from the shadow frame buffer memory */ @@ -772,9 +789,9 @@ static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buf fbmask = 1 << (row & 7); #ifdef CONFIG_LCD_RLANDSCAPE - fbptr = &priv->fb[page * (UG2864HSWEG01_XRES-1) + col + pixlen]; + fbptr = &priv->fb[page * (SSD1306_DEV_XRES-1) + col + pixlen]; #else - fbptr = &priv->fb[page * UG2864HSWEG01_XRES + col]; + fbptr = &priv->fb[page * SSD1306_DEV_XRES + col]; #endif #ifdef CONFIG_NX_PACKEDMSFIRST usrmask = MS_BIT; @@ -834,15 +851,15 @@ static int ug2864hsweg01_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buf #endif /************************************************************************************** - * Name: ug2864hsweg01_getvideoinfo + * Name: ssd1306_getvideoinfo * * Description: * Get information about the LCD video controller configuration. * **************************************************************************************/ -static int ug2864hsweg01_getvideoinfo(FAR struct lcd_dev_s *dev, - FAR struct fb_videoinfo_s *vinfo) +static int ssd1306_getvideoinfo(FAR struct lcd_dev_s *dev, + FAR struct fb_videoinfo_s *vinfo) { DEBUGASSERT(dev && vinfo); lcdvdbg("fmt: %d xres: %d yres: %d nplanes: %d\n", @@ -852,15 +869,15 @@ static int ug2864hsweg01_getvideoinfo(FAR struct lcd_dev_s *dev, } /************************************************************************************** - * Name: ug2864hsweg01_getplaneinfo + * Name: ssd1306_getplaneinfo * * Description: * Get information about the configuration of each LCD color plane. * **************************************************************************************/ -static int ug2864hsweg01_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno, - FAR struct lcd_planeinfo_s *pinfo) +static int ssd1306_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int planeno, + FAR struct lcd_planeinfo_s *pinfo) { DEBUGASSERT(pinfo && planeno == 0); lcdvdbg("planeno: %d bpp: %d\n", planeno, g_planeinfo.bpp); @@ -869,7 +886,7 @@ static int ug2864hsweg01_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int pl } /************************************************************************************** - * Name: ug2864hsweg01_getpower + * Name: ssd1306_getpower * * Description: * Get the LCD panel power status (0: full off - CONFIG_LCD_MAXPOWER: full on. On @@ -877,9 +894,9 @@ static int ug2864hsweg01_getplaneinfo(FAR struct lcd_dev_s *dev, unsigned int pl * **************************************************************************************/ -static int ug2864hsweg01_getpower(FAR struct lcd_dev_s *dev) +static int ssd1306_getpower(FAR struct lcd_dev_s *dev) { - FAR struct ug2864hsweg01_dev_s *priv = (FAR struct ug2864hsweg01_dev_s *)dev; + FAR struct ssd1306_dev_s *priv = (FAR struct ssd1306_dev_s *)dev; DEBUGASSERT(priv); lcdvdbg("power: %s\n", priv->on ? "ON" : "OFF"); @@ -887,7 +904,7 @@ static int ug2864hsweg01_getpower(FAR struct lcd_dev_s *dev) } /************************************************************************************** - * Name: ug2864hsweg01_setpower + * Name: ssd1306_setpower * * Description: * Enable/disable LCD panel power (0: full off - CONFIG_LCD_MAXPOWER: full on). On @@ -895,16 +912,16 @@ static int ug2864hsweg01_getpower(FAR struct lcd_dev_s *dev) * **************************************************************************************/ -static int ug2864hsweg01_setpower(struct lcd_dev_s *dev, int power) +static int ssd1306_setpower(struct lcd_dev_s *dev, int power) { - struct ug2864hsweg01_dev_s *priv = (struct ug2864hsweg01_dev_s *)dev; + struct ssd1306_dev_s *priv = (struct ssd1306_dev_s *)dev; DEBUGASSERT(priv && (unsigned)power <= CONFIG_LCD_MAXPOWER && priv->spi); lcdvdbg("power: %d [%d]\n", power, priv->on ? CONFIG_LCD_MAXPOWER : 0); /* Lock and select device */ - ug2864hsweg01_lock(priv->spi); + ssd1306_lock(priv->spi); SPI_SELECT(priv->spi, SPIDEV_DISPLAY, true); if (power <= 0) @@ -925,21 +942,21 @@ static int ug2864hsweg01_setpower(struct lcd_dev_s *dev, int power) /* De-select and unlock the device */ SPI_SELECT(priv->spi, SPIDEV_DISPLAY, false); - ug2864hsweg01_unlock(priv->spi); + ssd1306_unlock(priv->spi); return OK; } /************************************************************************************** - * Name: ug2864hsweg01_getcontrast + * Name: ssd1306_getcontrast * * Description: * Get the current contrast setting (0-CONFIG_LCD_MAXCONTRAST). * **************************************************************************************/ -static int ug2864hsweg01_getcontrast(struct lcd_dev_s *dev) +static int ssd1306_getcontrast(struct lcd_dev_s *dev) { - struct ug2864hsweg01_dev_s *priv = (struct ug2864hsweg01_dev_s *)dev; + struct ssd1306_dev_s *priv = (struct ssd1306_dev_s *)dev; DEBUGASSERT(priv); lcdvdbg("contrast: %d\n", priv->contrast); @@ -947,16 +964,16 @@ static int ug2864hsweg01_getcontrast(struct lcd_dev_s *dev) } /************************************************************************************** - * Name: ug2864hsweg01_setcontrast + * Name: ssd1306_setcontrast * * Description: * Set LCD panel contrast (0-CONFIG_LCD_MAXCONTRAST). * **************************************************************************************/ -static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contrast) +static int ssd1306_setcontrast(struct lcd_dev_s *dev, unsigned int contrast) { - struct ug2864hsweg01_dev_s *priv = (struct ug2864hsweg01_dev_s *)dev; + struct ssd1306_dev_s *priv = (struct ssd1306_dev_s *)dev; unsigned int scaled; lcdvdbg("contrast: %d\n", contrast); @@ -983,7 +1000,7 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras /* Lock and select device */ - ug2864hsweg01_lock(priv->spi); + ssd1306_lock(priv->spi); SPI_SELECT(priv->spi, SPIDEV_DISPLAY, true); /* Select command transfer */ @@ -999,7 +1016,7 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras /* De-select and unlock the device */ SPI_SELECT(priv->spi, SPIDEV_DISPLAY, false); - ug2864hsweg01_unlock(priv->spi); + ssd1306_unlock(priv->spi); return OK; } @@ -1008,7 +1025,7 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras **************************************************************************************/ /************************************************************************************** - * Name: ug2864hsweg01_initialize + * Name: ssd1306_initialize * * Description: * Initialize the UG-2864HSWEG01 video hardware. The initial state of the @@ -1018,7 +1035,7 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras * Input Parameters: * * spi - A reference to the SPI driver instance. - * devno - A value in the range of 0 through CONFIG_UG2864HSWEG01_NINTERFACES-1. + * devno - A value in the range of 0 through CONFIG_SSD1306_NINTERFACES-1. * This allows support for multiple OLED devices. * * Returned Value: @@ -1028,9 +1045,9 @@ static int ug2864hsweg01_setcontrast(struct lcd_dev_s *dev, unsigned int contras * **************************************************************************************/ -FAR struct lcd_dev_s *ug2864hsweg01_initialize(FAR struct spi_dev_s *spi, unsigned int devno) +FAR struct lcd_dev_s *ssd1306_initialize(FAR struct spi_dev_s *spi, unsigned int devno) { - FAR struct ug2864hsweg01_dev_s *priv = &g_oleddev; + FAR struct ssd1306_dev_s *priv = &g_oleddev; lcdvdbg("Initializing\n"); DEBUGASSERT(spi && devno == 0); @@ -1041,11 +1058,11 @@ FAR struct lcd_dev_s *ug2864hsweg01_initialize(FAR struct spi_dev_s *spi, unsign /* Configure the SPI */ - ug2864hsweg01_configspi(spi); + ssd1306_configspi(spi); /* Lock and select device */ - ug2864hsweg01_lock(priv->spi); + ssd1306_lock(priv->spi); SPI_SELECT(spi, SPIDEV_DISPLAY, true); /* Select command transfer */ @@ -1058,92 +1075,55 @@ FAR struct lcd_dev_s *ug2864hsweg01_initialize(FAR struct spi_dev_s *spi, unsign /* Configure the device */ -//#define OLED_WriteCmd(v) SPI_SEND(spi,v) -// -// /* Module manufacturers to provide initialization code 模块厂家提供初始化代码 */ -// -// OLED_WriteCmd(0xAE); /* 关闭OLED面板显示(休眠) */ -// OLED_WriteCmd(0x00); /* 设置列地址低4bit */ -// OLED_WriteCmd(0x10); /* 设置列地址高4bit */ -// OLED_WriteCmd(0x40); /* 设置起始行地址(低5bit 0-63), 硬件相关*/ -// -// OLED_WriteCmd(0x81); /* 设置对比度命令(双字节命令),第1个字节是命令,第2个字节是对比度参数0-255 */ -// OLED_WriteCmd(0xCF); /* 设置对比度参数 */ -// -// OLED_WriteCmd(0xA1); /* A0 :列地址0映射到SEG0; A1 :列地址127映射到SEG0 */ -// OLED_WriteCmd(0xA6); /* A6 : 设置正常显示模式; A7 : 设置为反显模式 */ -// -// OLED_WriteCmd(0xA8); /* 设置COM路数 */ -// OLED_WriteCmd(0x3F); /* 1 ->(63+1)路 */ -// -// OLED_WriteCmd(0xD3); /* 设置显示偏移(双字节命令)*/ -// OLED_WriteCmd(0x00); /* 无偏移 */ -// -// OLED_WriteCmd(0xD5); /* 设置显示时钟分频系数/振荡频率 */ -// OLED_WriteCmd(0x80); /* 设置分频系数,高4bit是分频系数,低4bit是振荡频率 */ -// -// OLED_WriteCmd(0xD9); /* 设置预充电周期 */ -// OLED_WriteCmd(0xF1); /* [3:0],PHASE 1; [7:4],PHASE 2; */ -// -// OLED_WriteCmd(0xDA); /* 设置COM脚硬件接线方式 */ -// OLED_WriteCmd(0x12); -// -// OLED_WriteCmd(0xDB); /* 设置 vcomh 电压倍率 */ -// OLED_WriteCmd(0x40); /* [6:4] 000 = 0.65 x VCC; 0.77 x VCC (RESET); 0.83 x VCC */ -// -// OLED_WriteCmd(0x8D); /* 设置充电泵(和下个命令结合使用) */ -// OLED_WriteCmd(0x14); /* 0x14 使能充电泵, 0x10 是关闭 */ -// OLED_WriteCmd(0xAF); /* 打开OLED面板 */ - - SPI_SEND(spi, SSD1306_DISPOFF); /* Display off 0xAE*/ + SPI_SEND(spi, SSD1306_DISPOFF); /* Display off 0xae */ SPI_SEND(spi, SSD1306_SETCOLL(0)); /* Set lower column address 0x00 */ SPI_SEND(spi, SSD1306_SETCOLH(0)); /* Set higher column address 0x10 */ - SPI_SEND(spi, SSD1306_STARTLINE(0)); /* Set display start line 0x40*/ + SPI_SEND(spi, SSD1306_STARTLINE(0)); /* Set display start line 0x40 */ /* SPI_SEND(spi, SSD1306_PAGEADDR(0));*//* Set page address (Can ignore)*/ SPI_SEND(spi, SSD1306_CONTRAST_MODE); /* Contrast control 0x81*/ - SPI_SEND(spi ,SSD1306_CONTRAST(UG2864HSWEG01_CONTRAST)); /* Default contrast 0xCF */ - SPI_SEND(spi, SSD1306_REMAPPLEFT); /* Set segment remap left 95 to 0 | 0xA1*/ - /* SPI_SEND(spi, SSD1306_EDISPOFF); */ /* Normal display :off 0xA4 (Can ignore)*/ - SPI_SEND(spi, SSD1306_NORMAL); /* Normal (un-reversed) display mode 0xA6 */ - SPI_SEND(spi, SSD1306_MRATIO_MODE); /* Multiplex ratio 0xA8*/ + SPI_SEND(spi ,SSD1306_CONTRAST(SSD1306_DEV_CONTRAST)); /* Default contrast 0xCF */ + SPI_SEND(spi, SSD1306_REMAPPLEFT); /* Set segment remap left 95 to 0 | 0xa1*/ + /* SPI_SEND(spi, SSD1306_EDISPOFF); */ /* Normal display :off 0xa4 (Can ignore)*/ + SPI_SEND(spi, SSD1306_NORMAL); /* Normal (un-reversed) display mode 0xa6 */ + SPI_SEND(spi, SSD1306_MRATIO_MODE); /* Multiplex ratio 0xa8*/ SPI_SEND(spi, SSD1306_MRATIO(0x3f)); /* Duty = 1/64 */ /* SPI_SEND(spi, SSD1306_SCANTOCOM0);*/ /* Com scan direction: Scan from COM[n-1] to COM[0] (Can ignore)*/ - SPI_SEND(spi, SSD1306_DISPOFFS_MODE); /* Set display offset 0xD3 */ + SPI_SEND(spi, SSD1306_DISPOFFS_MODE); /* Set display offset 0xd3 */ SPI_SEND(spi, SSD1306_DISPOFFS(0)); - SPI_SEND(spi, SSD1306_CLKDIV_SET); /* Set clock divider 0xD5*/ + SPI_SEND(spi, SSD1306_CLKDIV_SET); /* Set clock divider 0xd5*/ SPI_SEND(spi, SSD1306_CLKDIV(8,0)); /* 0x80*/ - SPI_SEND(spi, SSD1306_CHRGPER_SET); /* ++Set pre-charge period 0xD9*/ - SPI_SEND(spi, SSD1306_CHRGPER(0x0f,1)); /* 0xf1 or 0x22(Enhanced mode?) */ + SPI_SEND(spi, SSD1306_CHRGPER_SET); /* ++Set pre-charge period 0xd9*/ + SPI_SEND(spi, SSD1306_CHRGPER(0x0f,1)); /* 0xf1 or 0x22 Enhanced mode */ - SPI_SEND(spi, SSD1306_CMNPAD_CONFIG); /* Set common pads / set com pins hardware configuration 0xDA*/ + SPI_SEND(spi, SSD1306_CMNPAD_CONFIG); /* Set common pads / set com pins hardware configuration 0xda */ SPI_SEND(spi, SSD1306_CMNPAD(0x12)); /* 0x12 */ SPI_SEND(spi, SSD1306_VCOM_SET); /* set vcomh 0xDB*/ SPI_SEND(spi, SSD1306_VCOM(0x40)); - SPI_SEND(spi, SSD1306_CHRPUMP_SET); /* ++Set Charge Pump enable/disable 0x8D ssd1306*/ + SPI_SEND(spi, SSD1306_CHRPUMP_SET); /* ++Set Charge Pump enable/disable 0x8d ssd1306*/ SPI_SEND(spi, SSD1306_CHRPUMP_ON); /* 0x14 close 0x10 */ /*SPI_SEND(spi, SSD1306_DCDC_MODE); */ /* DC/DC control mode: on (SSD1306 Not supported) */ /*SPI_SEND(spi, SSD1306_DCDC_ON); */ - SPI_SEND(spi, SSD1306_DISPON); /* display ON 0xAF */ + SPI_SEND(spi, SSD1306_DISPON); /* display ON 0xaf */ /* De-select and unlock the device */ SPI_SELECT(spi, SPIDEV_DISPLAY, false); - ug2864hsweg01_unlock(priv->spi); + ssd1306_unlock(priv->spi); /* Clear the display */ up_mdelay(100); - ug2864hsweg01_fill(&priv->dev, UG_Y1_BLACK); + ssd1306_fill(&priv->dev, UG_Y1_BLACK); return &priv->dev; } /************************************************************************************** - * Name: ug2864hsweg01_fill + * Name: ssd1306_fill * * Description: * This non-standard method can be used to clear the entire display by writing one @@ -1157,9 +1137,9 @@ FAR struct lcd_dev_s *ug2864hsweg01_initialize(FAR struct spi_dev_s *spi, unsign * **************************************************************************************/ -void ug2864hsweg01_fill(FAR struct lcd_dev_s *dev, uint8_t color) +void ssd1306_fill(FAR struct lcd_dev_s *dev, uint8_t color) { - FAR struct ug2864hsweg01_dev_s *priv = &g_oleddev; + FAR struct ssd1306_dev_s *priv = &g_oleddev; unsigned int page; /* Make an 8-bit version of the selected color */ @@ -1175,16 +1155,16 @@ void ug2864hsweg01_fill(FAR struct lcd_dev_s *dev, uint8_t color) /* Initialize the framebuffer */ - memset(priv->fb, color, UG2864HSWEG01_FBSIZE); + memset(priv->fb, color, SSD1306_DEV_FBSIZE); /* Lock and select device */ - ug2864hsweg01_lock(priv->spi); + ssd1306_lock(priv->spi); SPI_SELECT(priv->spi, SPIDEV_DISPLAY, true); /* Visit each page */ - for (page = 0; page < UG2864HSWEG01_DEV_PAGES; page++) + for (page = 0; page < SSD1306_DEV_PAGES; page++) { /* Select command transfer */ @@ -1192,7 +1172,7 @@ void ug2864hsweg01_fill(FAR struct lcd_dev_s *dev, uint8_t color) /* Set the column address to the XOFFSET value */ - SPI_SEND(priv->spi, SSD1306_SETCOLL(UG2864HSWEG01_DEV_XOFFSET)); + SPI_SEND(priv->spi, SSD1306_SETCOLL(SSD1306_DEV_XOFFSET)); SPI_SEND(priv->spi, SSD1306_SETCOLH(0)); /* Set the page address */ @@ -1205,14 +1185,14 @@ void ug2864hsweg01_fill(FAR struct lcd_dev_s *dev, uint8_t color) /* Transfer one page of the selected color */ - (void)SPI_SNDBLOCK(priv->spi, &priv->fb[page * UG2864HSWEG01_XRES], - UG2864HSWEG01_XRES); + (void)SPI_SNDBLOCK(priv->spi, &priv->fb[page * SSD1306_DEV_XRES], + SSD1306_DEV_XRES); } /* De-select and unlock the device */ SPI_SELECT(priv->spi, SPIDEV_DISPLAY, false); - ug2864hsweg01_unlock(priv->spi); + ssd1306_unlock(priv->spi); } -#endif /* CONFIG_LCD_UG2864HSWEG01 */ +#endif /* CONFIG_LCD_SSD1306 */ |