ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_mipi_dsi_api.h
Go to the documentation of this file.
1
21
22#pragma once
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#include <stdint.h>
29
30#include "ra8_err.h"
31#include "ra8_mipi_dsi_regs.h"
32#include "ra8_mipi_dsi_types.h"
33
34/* =============================================================================
35 * Lifecycle
36 * =============================================================================
37 */
38
80[[nodiscard]] ra8_err_t ra8_mipi_dsi_init(const ra8_mipi_dsi_config_t* cfg);
81
103[[nodiscard]] ra8_err_t ra8_mipi_dsi_deinit(void);
104
119[[nodiscard]] ra8_err_t ra8_mipi_dsi_enter_stop(void);
120
135[[nodiscard]] ra8_err_t ra8_mipi_dsi_exit_stop(void);
136
150[[nodiscard]] ra8_err_t ra8_mipi_dsi_soft_reset(void);
151
152/* =============================================================================
153 * HS clock control
154 * =============================================================================
155 */
156
176[[nodiscard]] ra8_err_t ra8_mipi_dsi_hs_clock_start(void);
177
193[[nodiscard]] ra8_err_t ra8_mipi_dsi_hs_clock_stop(void);
194
195/* =============================================================================
196 * Sequence-channel commands
197 * =============================================================================
198 */
199
227 uint8_t param0,
228 uint8_t param1);
229
262 const uint8_t* data,
263 uint16_t tx_len,
264 bool low_power);
265
294
328 uint8_t param0,
329 uint8_t param1,
330 uint8_t* p_rx_buffer,
331 uint16_t rx_len);
332
333/* =============================================================================
334 * ULPS
335 * =============================================================================
336 */
337
355[[nodiscard]] ra8_err_t ra8_mipi_dsi_ulps_enter(uint8_t lanes);
356
373[[nodiscard]] ra8_err_t ra8_mipi_dsi_ulps_exit(uint8_t lanes);
374
375/* =============================================================================
376 * Video mode
377 * =============================================================================
378 */
379
402
420
438[[nodiscard]] ra8_err_t ra8_mipi_dsi_video_stop(void);
439
440/* =============================================================================
441 * Status / IRQ
442 * =============================================================================
443 */
444
459[[nodiscard]] ra8_err_t ra8_mipi_dsi_get_status(uint32_t* out_mask);
460
475
494[[nodiscard]] ra8_err_t ra8_mipi_dsi_clear_status(uint32_t mask);
495
510
526[[nodiscard]] ra8_err_t ra8_mipi_dsi_rx_result_get(uint8_t slot,
527 ra8_mipi_dsi_rx_result_t* out_result);
528
544[[nodiscard]] ra8_err_t
545ra8_mipi_dsi_rx_payload_read(uint8_t* dest, uint16_t max_len, uint16_t* out_len);
546
561[[nodiscard]] ra8_err_t ra8_mipi_dsi_te_event_pending(bool* out_pending);
562
575[[nodiscard]] ra8_err_t ra8_mipi_dsi_te_event_clear(void);
576
593[[nodiscard]] ra8_err_t
594ra8_mipi_dsi_irq_enable(ra8_mipi_dsi_event_t event, uint32_t mask, bool enable);
595
612
631void ra8_mipi_dsi_dispatch(void);
632
641
650
659
668
677
686
687/* =============================================================================
688 * Sweep 6 convenience surfaces
689 * =============================================================================
690 */
691
730
760
787 const uint8_t params[2]);
788
816[[nodiscard]] ra8_err_t
817ra8_mipi_dsi_send_command_long(ra8_mipi_dsi_dt_t dt, const uint8_t* payload, uint16_t len);
818
848 const uint8_t* payload,
849 uint16_t len);
850
870[[nodiscard]] ra8_err_t ra8_mipi_dsi_enter_ulps(void);
871
889[[nodiscard]] ra8_err_t ra8_mipi_dsi_exit_ulps(void);
890
913
914#ifdef __cplusplus
915}
916#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_mipi_dsi_exit_stop(void)
Re-enable the MIPI DSI block clock from MSTP.
ra8_err_t ra8_mipi_dsi_deinit(void)
Tear down the MIPI DSI host link layer.
ra8_err_t ra8_mipi_dsi_clear_status(uint32_t mask)
Clear bits in any of the sub-status registers.
ra8_err_t ra8_mipi_dsi_soft_reset(void)
Pulse RSTCR.SWRST to take the protocol-layer state back to a clean slate (registers retained).
void ra8_mipi_dsi_dispatch_fatal(void)
Fatal-error IRQ handler.
ra8_err_t ra8_mipi_dsi_hs_clock_start(void)
Start the high-speed differential clock to the panel.
ra8_err_t ra8_mipi_dsi_video_configure(const ra8_mipi_dsi_video_cfg_t *vcfg)
Programme every video-mode timing register from a single config.
ra8_err_t ra8_mipi_dsi_rx_payload_read(uint8_t *dest, uint16_t max_len, uint16_t *out_len)
Copy out the most-recent long-packet RX payload (RXPPD0..3R).
ra8_err_t ra8_mipi_dsi_send_command(const ra8_mipi_dsi_command_t *cmd)
Send any sequence-channel command (full-feature path).
void ra8_mipi_dsi_dispatch_seq1(void)
Sequence-channel-1 IRQ handler (HS path).
ra8_err_t ra8_mipi_dsi_te_event_pending(bool *out_pending)
Check if a tearing-effect (TE) trigger was received.
void ra8_mipi_dsi_dispatch_phy(void)
PHY-protocol-interface IRQ handler.
void ra8_mipi_dsi_dispatch_seq0(void)
Sequence-channel-0 IRQ handler (LP path).
ra8_err_t ra8_mipi_dsi_video_stop(void)
Request a video-mode stop and wait for it.
void ra8_mipi_dsi_dispatch(void)
Snapshot ISR, clear sub-status, fan out per-class callbacks.
ra8_err_t ra8_mipi_dsi_ulps_exit(uint8_t lanes)
Wake the selected lanes out of ULPS.
ra8_err_t ra8_mipi_dsi_send_command_long(ra8_mipi_dsi_dt_t dt, const uint8_t *payload, uint16_t len)
Send a DSI command-mode long packet on VC0 (HS path).
ra8_err_t ra8_mipi_dsi_get_status(uint32_t *out_mask)
Read the top-level Interrupt Status Register.
ra8_err_t ra8_mipi_dsi_irq_enable(ra8_mipi_dsi_event_t event, uint32_t mask, bool enable)
Toggle a sub-class IER bit.
ra8_err_t ra8_mipi_dsi_send_short_packet(ra8_mipi_dsi_dt_t cmd_id, ra8_mipi_dsi_vc_t vc, uint8_t param0, uint8_t param1)
Send a DSI short packet on sequence channel 0 (LP escape).
ra8_err_t ra8_mipi_dsi_init(const ra8_mipi_dsi_config_t *cfg)
Bring up the MIPI DSI host link layer.
ra8_err_t ra8_mipi_dsi_send_long_packet(ra8_mipi_dsi_dt_t cmd_id, ra8_mipi_dsi_vc_t vc, const uint8_t *data, uint16_t tx_len, bool low_power)
Send a DSI long-packet write (Generic Long / DCS Long).
ra8_err_t ra8_mipi_dsi_exit_ulps(void)
Wake the entire link out of ULPS.
void ra8_mipi_dsi_dispatch_video(void)
Video-mode IRQ handler.
ra8_err_t ra8_mipi_dsi_enter_ulps(void)
Drive the entire link (clock + data lanes) into ULPS.
ra8_err_t ra8_mipi_dsi_send_command_short(ra8_mipi_dsi_dt_t dt, const uint8_t params[2])
Send a DSI command-mode short packet on VC0 (LP escape).
ra8_err_t ra8_mipi_dsi_video_start(const ra8_mipi_dsi_video_cfg_t *vcfg)
Start video-mode operation.
ra8_err_t ra8_mipi_dsi_ack_error_get(ra8_mipi_dsi_ack_error_t *out_err)
Read the latest accumulated ack/error report and clear it.
ra8_err_t ra8_mipi_dsi_send_command_payload(ra8_mipi_dsi_dt_t packet_type, const uint8_t *payload, uint16_t len)
Send a DSI command-mode packet (short or long) on VC0 in LP escape.
ra8_err_t ra8_mipi_dsi_set_video_timing(const ra8_mipi_dsi_video_timing_t *timing)
Load only the HSA/HBP/HACT/HFP/VSA/VBP/VACT/VFP video-timing registers from a compact descriptor.
void ra8_mipi_dsi_dispatch_receive(void)
Receive IRQ handler.
ra8_err_t ra8_mipi_dsi_enter_stop(void)
Gate the MIPI DSI block at the MSTP register.
ra8_err_t ra8_mipi_dsi_ulps_enter(uint8_t lanes)
Drive the selected lanes into Ultra-Low-Power State.
ra8_err_t ra8_mipi_dsi_link_status_get(ra8_mipi_dsi_link_status_t *out_status)
Decode LINKSR into a struct.
ra8_err_t ra8_mipi_dsi_hs_clock_stop(void)
Stop the high-speed differential clock.
ra8_err_t ra8_mipi_dsi_attach_handler(ra8_mipi_dsi_event_fn_t fn, void *ctx)
Attach a callback for MIPI DSI interrupt events.
ra8_err_t ra8_mipi_dsi_get_link_status(ra8_mipi_dsi_link_status_t *out)
Snapshot the link state (running flags + busy flags + accumulated ack/error report) into a single str...
ra8_err_t ra8_mipi_dsi_read_packet(ra8_mipi_dsi_dt_t cmd_id, ra8_mipi_dsi_vc_t vc, uint8_t param0, uint8_t param1, uint8_t *p_rx_buffer, uint16_t rx_len)
Issue a BTA-then-read on sequence channel 0 and return the captured response payload.
ra8_err_t ra8_mipi_dsi_rx_result_get(uint8_t slot, ra8_mipi_dsi_rx_result_t *out_result)
Decode and consume an RXRSS slot.
ra8_err_t ra8_mipi_dsi_te_event_clear(void)
Clear the latched tearing-effect bits in RXSR.
MIPI DSI Host (DSI-2) register layout for the RA8D2.
MIPI DSI-2 host driver – public types (enums / structs / typedefs).
ra8_mipi_dsi_dt_t
Frequently used DSI Data Types (cmd id) for short and long packets.
ra8_mipi_dsi_vc_t
DSI virtual channel identifier (DT[7:6] in the packet header).
ra8_mipi_dsi_event_t
Event class delivered to the user callback.
void(* ra8_mipi_dsi_event_fn_t)(void *ctx, ra8_mipi_dsi_event_t event, uint32_t status_mask)
MIPI DSI ISR-context callback signature.
Decoded view of AKEPLATIR / AKEPACMSR.
Generic DSI packet descriptor for ra8_mipi_dsi_send_command.
Static configuration passed to ra8_mipi_dsi_init.
Decoded view of a single RXRSS slot register.
Video-mode timing + format + sync configuration.
Compact video-mode timing block (HSA/HBP/HACT/HFP + VSA/VBP/VACT/VFP).
uint16_t horizontal_front_porch
HFP pixel count -> VMHPSETR.HFP.
uint16_t vertical_back_porch
VBP line count -> VMVPSETR.VBP.
uint16_t horizontal_active
HACT pixel count -> VMHSSETR.HACT.
uint16_t horizontal_back_porch
HBP pixel count -> VMHPSETR.HBP.
uint16_t vertical_front_porch
VFP line count -> VMVPSETR.VFP.
uint16_t vertical_sync
VSA line count -> VMVSSETR.VSA.
uint16_t vertical_active
VACT line count -> VMVSSETR.VACT.
uint16_t horizontal_sync
HSA pixel count -> VMHSSETR.HSA.