ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_mipi_csi_ctrl.h
Go to the documentation of this file.
1
21
22#pragma once
23
24#include <stdint.h>
25
26#include "ra8_err.h"
27#include "ra8_mipi_csi_regs.h"
28#include "ra8_mipi_csi_types.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/* =============================================================================
35 * Lifecycle
36 * =============================================================================
37 */
38
81[[nodiscard]] ra8_err_t ra8_mipi_csi_init(const ra8_mipi_csi_config_t* cfg);
82
103[[nodiscard]] ra8_err_t ra8_mipi_csi_deinit(void);
104
125[[nodiscard]] ra8_err_t ra8_mipi_csi_reset(void);
126
127/* =============================================================================
128 * Reception control
129 * =============================================================================
130 */
131
148[[nodiscard]] ra8_err_t ra8_mipi_csi_start_receive(void);
149
170[[nodiscard]] ra8_err_t ra8_mipi_csi_stop_receive(void);
171
172/* =============================================================================
173 * Module-level status
174 * =============================================================================
175 */
176
195[[nodiscard]] ra8_err_t ra8_mipi_csi_get_status(uint32_t* out_mask);
196
217[[nodiscard]] ra8_err_t ra8_mipi_csi_clear_status(uint32_t mask);
218
231[[nodiscard]] ra8_err_t ra8_mipi_csi_set_rx_irq_enable(uint32_t mask);
232
246[[nodiscard]] ra8_err_t ra8_mipi_csi_get_module_irq_status(uint32_t* out_mask);
247
266
267/* =============================================================================
268 * Data-type filter
269 * =============================================================================
270 */
271
296[[nodiscard]] ra8_err_t ra8_mipi_csi_set_data_type_filter(uint32_t low_mask, uint32_t high_mask);
297
298/* =============================================================================
299 * ECC / scrambling / frame-error knobs
300 * =============================================================================
301 */
302
321[[nodiscard]] ra8_err_t ra8_mipi_csi_set_ecc_mode(bool eccv13, bool lfsren);
322
342[[nodiscard]] ra8_err_t ra8_mipi_csi_set_frame_error_mode(bool zlmd, bool edmd, bool rvmd);
343
344/* =============================================================================
345 * EPD / LRTE tuning
346 * =============================================================================
347 */
348
370[[nodiscard]] ra8_err_t
371ra8_mipi_csi_set_epd(bool enable, bool option_2, uint16_t long_spacer, uint16_t short_spacer);
372
392[[nodiscard]] ra8_err_t ra8_mipi_csi_set_lrte(ra8_mipi_csi_vlsien_t vlsien, bool eotp_enable);
393
394/* =============================================================================
395 * Per-data-lane status / IRQ
396 * =============================================================================
397 */
398
414[[nodiscard]] ra8_err_t ra8_mipi_csi_dl_get_status(uint8_t lane, uint32_t* out_mask);
415
430[[nodiscard]] ra8_err_t ra8_mipi_csi_dl_clear_status(uint8_t lane, uint32_t mask);
431
446[[nodiscard]] ra8_err_t ra8_mipi_csi_dl_set_irq_enable(uint8_t lane, uint32_t mask);
447
448/* =============================================================================
449 * Per-virtual-channel status / IRQ
450 * =============================================================================
451 */
452
468[[nodiscard]] ra8_err_t ra8_mipi_csi_vc_get_status(uint8_t vc, uint32_t* out_mask);
469
484[[nodiscard]] ra8_err_t ra8_mipi_csi_vc_clear_status(uint8_t vc, uint32_t mask);
485
500[[nodiscard]] ra8_err_t ra8_mipi_csi_vc_set_irq_enable(uint8_t vc, uint32_t mask);
501
502/* =============================================================================
503 * Power-management status / IRQ
504 * =============================================================================
505 */
506
520[[nodiscard]] ra8_err_t ra8_mipi_csi_pm_get_status(uint32_t* out_mask);
521
534[[nodiscard]] ra8_err_t ra8_mipi_csi_pm_clear_status(uint32_t mask);
535
548[[nodiscard]] ra8_err_t ra8_mipi_csi_pm_set_irq_enable(uint32_t mask);
549
550#ifdef __cplusplus
551}
552#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_csi_vc_clear_status(uint8_t vc, uint32_t mask)
W1C-clear bits in VCST(M) via VCSC(M).
ra8_err_t ra8_mipi_csi_set_rx_irq_enable(uint32_t mask)
Programme RXIE (receive interrupt enable mask).
ra8_err_t ra8_mipi_csi_set_lrte(ra8_mipi_csi_vlsien_t vlsien, bool eotp_enable)
Programme EMCT (LRTE / EOTP options).
ra8_err_t ra8_mipi_csi_set_data_type_filter(uint32_t low_mask, uint32_t high_mask)
Programme the receive data-type filter (DTEL + DTEH).
ra8_err_t ra8_mipi_csi_pm_get_status(uint32_t *out_mask)
Read PMST (Power Management Status) live value.
ra8_err_t ra8_mipi_csi_pm_set_irq_enable(uint32_t mask)
Programme PMIE (Power Management IRQ enable).
ra8_err_t ra8_mipi_csi_pm_clear_status(uint32_t mask)
W1C-clear bits in PMST via PMSC.
ra8_err_t ra8_mipi_csi_vc_set_irq_enable(uint8_t vc, uint32_t mask)
Programme VCIE(M) (Virtual Channel M IRQ enable).
ra8_err_t ra8_mipi_csi_start_receive(void)
Enable MIPI CSI reception (set MCT3.RXEN).
ra8_err_t ra8_mipi_csi_get_status(uint32_t *out_mask)
Read the RXST receive-status register.
ra8_err_t ra8_mipi_csi_get_module_irq_status(uint32_t *out_mask)
Read MIST (Module Interrupt Status, RO summary).
ra8_err_t ra8_mipi_csi_dl_set_irq_enable(uint8_t lane, uint32_t mask)
Programme DLIE(N) (Data Lane N IRQ enable).
ra8_err_t ra8_mipi_csi_vc_get_status(uint8_t vc, uint32_t *out_mask)
Read VCST(M) (Virtual Channel M Status).
ra8_err_t ra8_mipi_csi_set_frame_error_mode(bool zlmd, bool edmd, bool rvmd)
Update MCT0 frame-error notification bits atomically.
ra8_err_t ra8_mipi_csi_init(const ra8_mipi_csi_config_t *cfg)
Initialise the MIPI CSI receiver.
ra8_err_t ra8_mipi_csi_set_ecc_mode(bool eccv13, bool lfsren)
Update MCT0 ECC bits (ECCV13, LFSREN) atomically.
ra8_err_t ra8_mipi_csi_dl_get_status(uint8_t lane, uint32_t *out_mask)
Read DLST(N) (Data Lane N Status).
ra8_err_t ra8_mipi_csi_dl_clear_status(uint8_t lane, uint32_t mask)
W1C-clear bits in DLST(N) via DLSC(N).
ra8_err_t ra8_mipi_csi_stop_receive(void)
Disable MIPI CSI reception (clear MCT3.RXEN, pulse VSRST).
ra8_err_t ra8_mipi_csi_set_epd(bool enable, bool option_2, uint16_t long_spacer, uint16_t short_spacer)
Programme EPCT (long-packet spacer + Option-2 EPD).
ra8_err_t ra8_mipi_csi_clear_status(uint32_t mask)
Clear the sticky receive-status bits selected by mask.
ra8_err_t ra8_mipi_csi_reset(void)
Issue a software reset (RTCT.VSRST) and wait for completion.
ra8_err_t ra8_mipi_csi_deinit(void)
Tear down the MIPI CSI receiver.
ra8_err_t ra8_mipi_csi_get_module_info(ra8_mipi_csi_module_info_t *out)
Read MCG (Module Configuration, RO IP info) and decode.
MIPI CSI-2 Receiver register layout for the RA8D2 (HUM Ch 66).
ra8_mipi_csi_vlsien_t
Encodings for EMCT.VLSIEN[5:4] (HUM Ch 66.3.8 p 3941).
MIPI CSI-2 receiver HAL driver – public types.
Configuration descriptor for ra8_mipi_csi_init.
Decoded MCG (Module Configuration) RO snapshot.