summaryrefslogtreecommitdiff
path: root/nuttx/drivers/lcd
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-06-23 14:39:56 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-06-23 14:39:56 -0600
commit9d4f3f645e606d812e3bec76a10940691b30b5ff (patch)
treeec970f690586d7ce93d937df8d6389bc1ecbdf57 /nuttx/drivers/lcd
parent333edc2da8d4bad41a3ea553bf635cbad5119427 (diff)
downloadpx4-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/Kconfig68
-rw-r--r--nuttx/drivers/lcd/Make.defs8
-rw-r--r--nuttx/drivers/lcd/README.txt5
-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 */