MIPI Display Bus Interface (DBI)
The MIPI DBI driver class implements support for MIPI DBI compliant display controllers.
MIPI DBI defines 3 interface types: * Type A: Motorola 6800 parallel bus
Type B: Intel 8080 parallel bus
Type C: SPI Type serial bit bus with 3 options:
9 write clocks per byte, final bit is command/data selection bit
Same as above, but 16 write clocks per byte
8 write clocks per byte. Command/data selected via GPIO pin
Currently, the API only supports Type C controllers, options 1 and 3.
API Reference
- group mipi_dbi_interface
MIPI-DBI driver APIs.
Defines
-
MIPI_DBI_MODE_SPI_3WIRE
SPI 3 wire (Type C1).
Uses 9 write clocks to send a byte of data. The bit sent on the 9th clock indicates whether the byte is a command or data byte
.-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .- SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- DOUT |D/C| D7| D6| D5| D4| D3| D2| D1| D0|D/C| D7| D6| D5| D4|...| -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- | Word 1 | Word n -. .- CS '-----------------------------------------------------------'
-
MIPI_DBI_MODE_SPI_4WIRE
SPI 4 wire (Type C3).
Uses 8 write clocks to send a byte of data. an additional C/D pin will be use to indicate whether the byte is a command or data byte
.-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '--- -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- DOUT | D7| D6| D5| D4| D3| D2| D1| D0| D7| D6| D5| D4| D3| D2| D1| D0| -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- | Word 1 | Word n -. .- CS '---------------------------------------------------------------' -.-------------------------------.-------------------------------.- CD | D/C | D/C | -'-------------------------------'-------------------------------'-
-
MIPI_DBI_MODE_SPI_4WIRE_16BIT
SPI 4 wire (Type C4).
Uses 16 write clocks to send a byte of data. Generic data (GRAM) is passed through in 16 bit alignment with odd-length stuffing. an additional C/D pin will be use to indicate whether the byte is a command or data byte
.-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '--- -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- DOUT |D15|D14|D13|D12|D11|D10| D9| D8| D7| D6| D5| D4| D3| D2| D1| D0| -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- | Word 1 (stuffing) : (byte) | -. .- CS '---------------------------------------------------------------' -.---------------------------------------------------------------.- CD | D/C | -'---------------------------------------------------------------'-
-
MIPI_DBI_SPI_CONFIG_DT(node_id, operation_, delay_)
initialize a MIPI DBI SPI configuration struct from devicetree
This helper allows drivers to initialize a MIPI DBI SPI configuration structure using devicetree.
- Parameters:
node_id – Devicetree node identifier for the MIPI DBI device whose struct spi_config to create an initializer for
operation_ – the desired operation field in the struct spi_config
delay_ – the desired delay field in the struct spi_config’s spi_cs_control, if there is one
Functions
-
static inline int mipi_dbi_command_write(const struct device *dev, const struct mipi_dbi_config *config, uint8_t cmd, const uint8_t *data, size_t len)
Write a command to the display controller.
Writes a command, along with an optional data buffer to the display. If data buffer and buffer length are NULL and 0 respectively, then only a command will be sent.
- Parameters:
dev – mipi dbi controller
config – MIPI DBI configuration
cmd – command to write to display controller
data – optional data buffer to write after command
len – size of data buffer in bytes. Set to 0 to skip sending data.
- Return values:
0 – command write succeeded
-EIO – I/O error
-ETIMEDOUT – transfer timed out
-EBUSY – controller is busy
-ENOSYS – not implemented
-
static inline int mipi_dbi_command_read(const struct device *dev, const struct mipi_dbi_config *config, uint8_t *cmds, size_t num_cmd, uint8_t *response, size_t len)
Read a command response from the display controller.
Reads a command response from the display controller.
- Parameters:
dev – mipi dbi controller
config – MIPI DBI configuration
cmds – array of one byte commands to send to display controller
num_cmd – number of commands to write to display controller
response – response buffer, filled with display controller response
len – size of response buffer in bytes.
- Return values:
0 – command read succeeded
-EIO – I/O error
-ETIMEDOUT – transfer timed out
-EBUSY – controller is busy
-ENOSYS – not implemented
-
static inline int mipi_dbi_write_display(const struct device *dev, const struct mipi_dbi_config *config, const uint8_t *framebuf, struct display_buffer_descriptor *desc, enum display_pixel_format pixfmt)
Write a display buffer to the display controller.
Writes a display buffer to the controller. If the controller requires a “Write memory” command before writing display data, this should be sent with mipi_dbi_command_write
- Parameters:
dev – mipi dbi controller
config – MIPI DBI configuration
framebuf – framebuffer to write to display
desc – descriptor of framebuffer to write. Note that the pitch must be equal to width. “buf_size” field determines how many bytes will be written.
pixfmt – pixel format of framebuffer data
- Return values:
0 – buffer write succeeded.
-EIO – I/O error
-ETIMEDOUT – transfer timed out
-EBUSY – controller is busy
-ENOSYS – not implemented
-
static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay)
Resets attached display controller.
Resets the attached display controller.
- Parameters:
dev – mipi dbi controller
delay – duration to set reset signal for, in milliseconds
- Return values:
0 – reset succeeded
-EIO – I/O error
-ENOSYS – not implemented
-ENOTSUP – not supported
-
struct mipi_dbi_config
- #include <mipi_dbi.h>
MIPI DBI controller configuration.
Configuration for MIPI DBI controller write
Public Members
-
uint8_t mode
MIPI DBI mode (SPI 3 wire or 4 wire)
-
struct spi_config config
SPI configuration.
-
uint8_t mode
-
struct mipi_dbi_driver_api
- #include <mipi_dbi.h>
MIPI-DBI host driver API.
-
MIPI_DBI_MODE_SPI_3WIRE