The latest development version of this page may be more current than this released 3.6.0 version.

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:

    1. 9 write clocks per byte, final bit is command/data selection bit

    2. Same as above, but 16 write clocks per byte

    3. 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_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.

struct mipi_dbi_driver_api
#include <mipi_dbi.h>

MIPI-DBI host driver API.