Zephyr API Documentation  3.6.0
A Scalable Open Source RTOS
3.6.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
MIPI-DBI driver APIs

MIPI-DBI driver APIs. More...

Data Structures

struct  mipi_dbi_config
 MIPI DBI controller configuration. More...
 
struct  mipi_dbi_driver_api
 MIPI-DBI host driver API. More...
 

Macros

#define MIPI_DBI_MODE_SPI_3WIRE   0x1
 SPI 3 wire (Type C1).
 
#define MIPI_DBI_MODE_SPI_4WIRE   0x2
 SPI 4 wire (Type C3).
 
#define MIPI_DBI_SPI_CONFIG_DT(node_id, operation_, delay_)
 initialize a MIPI DBI SPI configuration struct from devicetree
 

Functions

static 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.
 
static 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.
 
static 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.
 
static int mipi_dbi_reset (const struct device *dev, uint32_t delay)
 Resets attached display controller.
 

Detailed Description

MIPI-DBI driver APIs.

Macro Definition Documentation

◆ MIPI_DBI_MODE_SPI_3WIRE

#define MIPI_DBI_MODE_SPI_3WIRE   0x1

#include <zephyr/drivers/mipi_dbi.h>

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

#define MIPI_DBI_MODE_SPI_4WIRE   0x2

#include <zephyr/drivers/mipi_dbi.h>

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

#define MIPI_DBI_SPI_CONFIG_DT (   node_id,
  operation_,
  delay_ 
)

#include <zephyr/drivers/mipi_dbi.h>

Value:
{ \
.frequency = DT_PROP(node_id, mipi_max_frequency), \
.operation = (operation_) | \
DT_PROP(node_id, duplex), \
COND_CODE_1(DT_PROP(node_id, mipi_cpol), SPI_MODE_CPOL, (0)) | \
COND_CODE_1(DT_PROP(node_id, mipi_cpha), SPI_MODE_CPHA, (0)) | \
COND_CODE_1(DT_PROP(node_id, mipi_hold_cs), SPI_HOLD_ON_CS, (0)), \
.slave = DT_REG_ADDR(node_id), \
.cs = { \
spi_dev), cs_gpios, \
DT_REG_ADDR(node_id), \
{}), \
.delay = (delay_), \
}, \
}
#define DT_PARENT(node_id)
Get a node identifier for a parent node.
Definition: devicetree.h:359
#define DT_PHANDLE(node_id, prop)
Get a node identifier for a phandle property's value.
Definition: devicetree.h:1594
#define DT_PROP(node_id, prop)
Get a devicetree property value.
Definition: devicetree.h:615
#define DT_REG_ADDR(node_id)
Get a node's (only) register block address.
Definition: devicetree.h:2214
#define GPIO_DT_SPEC_GET_BY_IDX_OR(node_id, prop, idx, default_value)
Like GPIO_DT_SPEC_GET_BY_IDX(), with a fallback to a default value.
Definition: gpio.h:353
#define SPI_MODE_CPHA
Clock Phase: this dictates when is the data captured, and depends clock's polarity.
Definition: spi.h:68
#define SPI_MODE_CPOL
Clock Polarity: if set, clock idle state will be 1 and active state will be 0.
Definition: spi.h:59
#define SPI_HOLD_ON_CS
Requests - if possible - to keep CS asserted after the transaction.
Definition: spi.h:114

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_idDevicetree 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

Function Documentation

◆ mipi_dbi_command_read()

static 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 
)
inlinestatic

#include <zephyr/drivers/mipi_dbi.h>

Read a command response from the display controller.

Reads a command response from the display controller.

Parameters
devmipi dbi controller
configMIPI DBI configuration
cmdsarray of one byte commands to send to display controller
num_cmdnumber of commands to write to display controller
responseresponse buffer, filled with display controller response
lensize of response buffer in bytes.
Return values
0command read succeeded
-EIOI/O error
-ETIMEDOUTtransfer timed out
-EBUSYcontroller is busy
-ENOSYSnot implemented

◆ mipi_dbi_command_write()

static 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 
)
inlinestatic

#include <zephyr/drivers/mipi_dbi.h>

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
devmipi dbi controller
configMIPI DBI configuration
cmdcommand to write to display controller
dataoptional data buffer to write after command
lensize of data buffer in bytes. Set to 0 to skip sending data.
Return values
0command write succeeded
-EIOI/O error
-ETIMEDOUTtransfer timed out
-EBUSYcontroller is busy
-ENOSYSnot implemented

◆ mipi_dbi_reset()

static int mipi_dbi_reset ( const struct device dev,
uint32_t  delay 
)
inlinestatic

#include <zephyr/drivers/mipi_dbi.h>

Resets attached display controller.

Resets the attached display controller.

Parameters
devmipi dbi controller
delayduration to set reset signal for, in milliseconds
Return values
0reset succeeded
-EIOI/O error
-ENOSYSnot implemented
-ENOTSUPnot supported

◆ mipi_dbi_write_display()

static 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 
)
inlinestatic

#include <zephyr/drivers/mipi_dbi.h>

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
devmipi dbi controller
configMIPI DBI configuration
framebufframebuffer to write to display
descdescriptor of framebuffer to write. Note that the pitch must be equal to width. "buf_size" field determines how many bytes will be written.
pixfmtpixel format of framebuffer data
Return values
0buffer write succeeded.
-EIOI/O error
-ETIMEDOUTtransfer timed out
-EBUSYcontroller is busy
-ENOSYSnot implemented