diff --git a/drivers/lcd/ssd1306.h b/drivers/lcd/ssd1306.h index e316af08b58..8dbb4f1a831 100644 --- a/drivers/lcd/ssd1306.h +++ b/drivers/lcd/ssd1306.h @@ -235,6 +235,7 @@ struct ssd1306_dev_s FAR struct spi_dev_s *spi; /* Cached SPI device reference */ #else FAR struct i2c_dev_s *i2c; /* Cached SPI device reference */ + uint8_t addr; /* 7-bit I2C address */ #endif uint8_t contrast; /* Current contrast setting */ bool on; /* true: display is on */ diff --git a/drivers/lcd/ssd1306_base.c b/drivers/lcd/ssd1306_base.c index 47a93a85181..5186850d89d 100644 --- a/drivers/lcd/ssd1306_base.c +++ b/drivers/lcd/ssd1306_base.c @@ -836,7 +836,10 @@ FAR struct lcd_dev_s *ssd1306_initialize(FAR struct i2c_dev_s *dev, unsigned int # endif #else - priv->i2c = dev; + /* Remember the I2C configuration */ + + priv->i2c = dev; + priv->addr = CONFIG_SSD1306_I2CADDR; /* Set the I2C address and frequency. REVISIT: This logic would be * insufficient if we share the I2C bus with any other devices that also diff --git a/drivers/lcd/ssd1306_i2c.c b/drivers/lcd/ssd1306_i2c.c index 46721d01873..7164d890bef 100644 --- a/drivers/lcd/ssd1306_i2c.c +++ b/drivers/lcd/ssd1306_i2c.c @@ -44,11 +44,12 @@ #include #include +#include #include #include "ssd1306.h" -#if defined(CONFIG_LCD_SSD1306) && defined(CONFIG_LCD_UG2864HSWEG01_I2C) +#if defined(CONFIG_LCD_SSD1306) && defined(CONFIG_LCD_SSD1306_I2C) /**************************************************************************** * Name: ssd1306_sendbyte @@ -81,7 +82,7 @@ void ssd1306_sendbyte(FAR struct ssd1306_dev_s *priv, uint8_t regval) /* Setup 8-bit SSD1306 address write message */ - msg.addr = priv->config->address; /* 7-bit address */ + msg.addr = priv->addr; /* 7-bit address */ msg.flags = 0; /* Write transaction, beginning with START */ msg.buffer = txbuffer; /* Transfer from this address */ msg.length = 1; /* Send one byte following the address @@ -116,7 +117,7 @@ void ssd1306_sendblk(FAR struct ssd1306_dev_s *priv, uint8_t *data, uint8_t len) /* Setup 8-bit SSD1306 address write message */ - msg.addr = priv->config->address; /* 7-bit address */ + msg.addr = priv->addr; /* 7-bit address */ msg.flags = 0; /* Write transaction, beginning with START */ msg.buffer = data; /* Transfer from this address */ msg.length = len; /* Send one byte following the address @@ -131,4 +132,4 @@ void ssd1306_sendblk(FAR struct ssd1306_dev_s *priv, uint8_t *data, uint8_t len) } } -#endif /* CONFIG_LCD_SSD1306 &7 CONFIG_LCD_UG2864HSWEG01_I2C */ +#endif /* CONFIG_LCD_SSD1306 &7 CONFIG_LCD_SSD1306_I2C */ diff --git a/drivers/lcd/ssd1306_spi.c b/drivers/lcd/ssd1306_spi.c index 107b128de6d..78fcdbb6014 100644 --- a/drivers/lcd/ssd1306_spi.c +++ b/drivers/lcd/ssd1306_spi.c @@ -48,7 +48,7 @@ #include "ssd1306.h" -#if defined(CONFIG_LCD_UG2864HSWEG01) && defined(CONFIG_LCD_UG2864HSWEG01_SPI) +#if defined(CONFIG_LCD_SSD1306) && defined(CONFIG_LCD_SSD1306_SPI) /**************************************************************************** * Private Functions @@ -67,7 +67,7 @@ static inline void ssd1306_configspi(FAR struct spi_dev_s *spi) lcdvdbg("Mode: %d Bits: 8 Frequency: %d\n", CONFIG_SSD1306_SPIMODE, CONFIG_SSD1306_FREQUENCY); - /* Configure SPI for the UG2864AMBAG01 */ + /* Configure SPI for the SSD1306 */ SPI_SETMODE(spi, CONFIG_SSD1306_SPIMODE); SPI_SETBITS(spi, 8); @@ -83,13 +83,13 @@ static inline void ssd1306_configspi(FAR struct spi_dev_s *spi) * Name: ssd1306_sendbyte * * Description: - * Write a value to an 8-bit value to UG2864AMBAG01 + * Write a value to an 8-bit value to SSD1306 * ****************************************************************************/ void ssd1306_sendbyte(FAR struct ssd1306_dev_s *priv, uint8_t regval) { -#ifdef CONFIG_LCD_UG2864AMBAG01_REGDEBUG +#ifdef CONFIG_LCD_SSD1306_REGDEBUG lldbg("->0x%02x\n", regval); #endif @@ -102,7 +102,7 @@ void ssd1306_sendbyte(FAR struct ssd1306_dev_s *priv, uint8_t regval) * Name: ssd1306_sendblk * * Description: - * Write an array of bytes to UG2864AMBAG01 + * Write an array of bytes to SSD1306 * ****************************************************************************/ @@ -117,7 +117,7 @@ void ssd1306_sendblk(FAR struct ssd1306_dev_s *priv, uint8_t *data, uint8_t len) * Name: ssd1306_select * * Description: - * Enable/Disable UG2864AMBAG01 SPI CS + * Enable/Disable SSD1306 SPI CS * ****************************************************************************/ @@ -155,7 +155,7 @@ void ssd1306_select(FAR struct ssd1306_dev_s *priv, bool cs) * Name: ssd1306_cmddata * * Description: - * Select Command/Data mode for UG2864AMBAG01 + * Select Command/Data mode for SSD1306 * ****************************************************************************/ @@ -165,4 +165,4 @@ void ssd1306_cmddata(FAR struct ssd1306_dev_s *priv, bool cmd) SPI_CMDDATA(priv->spi, SPIDEV_DISPLAY, cmd); } -#endif /* CONFIG_LCD_UG2864AMBAG01 && CONFIG_LCD_UG2864AMBAG01_SPI */ +#endif /* CONFIG_LCD_SSD1306 && CONFIG_LCD_SSD1306_SPI */