ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_mipi_csi.c File Reference

MIPI CSI-2 receiver HAL driver implementation. More...

#include "ra8_mipi_csi.h"
#include <stdint.h>
#include "ra8_attributes.h"
#include "ra8_check.h"
#include "ra8_err.h"
#include "ra8_hal_internal.h"
#include "ra8_log.h"
#include "ra8_mipi_csi_regs.h"
#include "ra8_mstp.h"
Include dependency graph for ra8_mipi_csi.c:

Go to the source code of this file.

Enumerations

enum  ra8_mipi_csi_intern_t : uint16_t {
  k_ra8_mipi_csi_reset_spin_max = 1024U ,
  k_ra8_mipi_csi_gfclr_spin_max = 1024U
}
 Internal limits used by this translation unit only. More...

Functions

static ra8_err_t internal_wait_reset_idle (void)
static uint32_t internal_encode_mct0 (const ra8_mipi_csi_config_t *cfg)
static ra8_err_t internal_reject_if_running (void)
static ra8_err_t internal_validate_cfg (const ra8_mipi_csi_config_t *cfg)
 Validate cfg field ranges before any register writes.
static void internal_program_receiver (const ra8_mipi_csi_config_t *cfg)
 Program the MCT/EPCT/EMCT/DTEL/DTEH/GSCT receiver block.
static void internal_program_irq_masks (const ra8_mipi_csi_config_t *cfg)
 Program the receiver interrupt-enable mask block.
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_deinit (void)
 Tear down the MIPI CSI receiver.
ra8_err_t ra8_mipi_csi_reset (void)
 Issue a software reset (RTCT.VSRST) and wait for completion.
ra8_err_t ra8_mipi_csi_start_receive (void)
 Enable MIPI CSI reception (set MCT3.RXEN).
ra8_err_t ra8_mipi_csi_stop_receive (void)
 Disable MIPI CSI reception (clear MCT3.RXEN, pulse VSRST).
ra8_err_t ra8_mipi_csi_get_status (uint32_t *out_mask)
 Read the RXST receive-status register.
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_set_rx_irq_enable (uint32_t mask)
 Programme RXIE (receive interrupt enable mask).
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_get_module_info (ra8_mipi_csi_module_info_t *out)
 Read MCG (Module Configuration, RO IP info) and decode.
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_set_ecc_mode (bool eccv13, bool lfsren)
 Update MCT0 ECC bits (ECCV13, LFSREN) atomically.
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_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_set_lrte (ra8_mipi_csi_vlsien_t vlsien, bool eotp_enable)
 Programme EMCT (LRTE / EOTP options).
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_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_vc_clear_status (uint8_t vc, uint32_t mask)
 W1C-clear bits in VCST(M) via VCSC(M).
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_pm_get_status (uint32_t *out_mask)
 Read PMST (Power Management Status) live value.
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_pm_set_irq_enable (uint32_t mask)
 Programme PMIE (Power Management IRQ enable).
ra8_err_t ra8_mipi_csi_short_packet_configure (uint8_t threshold, bool store_enable)
 Programme GSCT (short-packet FIFO threshold + store flag).
ra8_err_t ra8_mipi_csi_short_packet_set_irq_enable (uint32_t mask)
 Programme GSIE (short-packet IRQ enable).
ra8_err_t ra8_mipi_csi_short_packet_get_status (uint32_t *out_mask)
 Read GSST (short-packet status).
ra8_err_t ra8_mipi_csi_short_packet_clear_status (uint32_t mask)
 W1C-clear GSST.GOV (FIFO overflow) via GSSC.
ra8_err_t ra8_mipi_csi_read_short_packet (ra8_mipi_csi_short_packet_t *out)
 Drain one stored short-packet header from the FIFO.
ra8_err_t ra8_mipi_csi_short_packet_clear_fifo (void)
 Request a clear of the entire short-packet FIFO (GSIU.GFCLR).
ra8_err_t ra8_mipi_csi_short_packet_re_enable_store (void)
 Re-enable storing into the FIFO after a GOV overflow (GSIU.GFEN).
ra8_err_t ra8_mipi_csi_enter_stop (void)
 Gate the peripheral via MSTP (low-power entry helper).
ra8_err_t ra8_mipi_csi_exit_stop (void)
 Ungate the peripheral via MSTP (low-power exit helper).

Variables

static const char * s_tag = "MIPI_CSI"
 Log tag prefix used by every ra8_log_* call below.

Detailed Description

MIPI CSI-2 receiver HAL driver implementation.

Tag
[Ring 3 / HAL] {World: NS}

Full HUM Ch 66 ("MIPI CSI Interface" p 3935-3972) HAL driver for the RA8D2 MIPI CSI-2 receiver block. Hand-authored against the HUM (with FSP r_mipi_csi.c used purely as a register-sequence sanity check) – every single register documented in Ch 66 is exposed, and every IRQ source has a dispatcher + callback slot.

Pairs with the parallel ra8_mipi_phy driver (HUM Ch 64): the caller brings the PHY up first, then opens the CSI receiver.

Every register access carries a HUM Ch 66 citation immediately above the access, per project policy.

State Machine

Definition in file ra8_mipi_csi.c.

Enumeration Type Documentation

◆ ra8_mipi_csi_intern_t

enum ra8_mipi_csi_intern_t : uint16_t

Internal limits used by this translation unit only.

k_ra8_mipi_csi_reset_spin_max bounds the busy-loop that waits for RTST.VSRSTS to clear. k_ra8_mipi_csi_gfclr_spin_max bounds the wait for GSST.GCD after a GSIU.GFCLR request. With vclk at 125 MHz both complete in well under a microsecond; the ceilings here are defensive against a stuck peripheral.

Enumerator
k_ra8_mipi_csi_reset_spin_max 

Max VSRSTS poll iterations.

k_ra8_mipi_csi_gfclr_spin_max 

Max GCD poll iterations.

Definition at line 79 of file ra8_mipi_csi.c.

Function Documentation

◆ internal_encode_mct0()

◆ internal_program_irq_masks()

void internal_program_irq_masks ( const ra8_mipi_csi_config_t * cfg)
static

Program the receiver interrupt-enable mask block.

HUM Ch 66.3.14-66.3.27 pp 3946-3958. Writes RXIE, DLIE0/1, VCIE(M), PMIE, and GSIE in one pass.

Parameters
[in]cfgCaller-provided config snapshot.
Precondition
Receiver was disabled (RXEN = 0).
Postcondition
All interrupt-enable registers reflect cfg.
Note
Internal helper, not thread-safe.
Precondition
Module/state preconditions hold (see function body).
Postcondition
Documented side effects are visible on success.
Since
0.1.0

Definition at line 276 of file ra8_mipi_csi.c.

References ra8_mipi_csi_config_t::dl_irq_mask, k_ra8_mipi_csi_off_dlie0, k_ra8_mipi_csi_off_dlie1, k_ra8_mipi_csi_off_gsie, k_ra8_mipi_csi_off_pmie, k_ra8_mipi_csi_off_rxie, k_ra8_mipi_csi_off_vcie0, k_ra8_mipi_csi_vc_count, ra8_mipi_csi_config_t::pm_irq_mask, ra8_mipi_csi_reg32(), ra8_mipi_csi_vc_off(), ra8_mipi_csi_config_t::rx_irq_mask, ra8_mipi_csi_config_t::short_irq_mask, and ra8_mipi_csi_config_t::vc_irq_mask.

Referenced by ra8_mipi_csi_init().

◆ internal_program_receiver()

void internal_program_receiver ( const ra8_mipi_csi_config_t * cfg)
static

Program the MCT/EPCT/EMCT/DTEL/DTEH/GSCT receiver block.

HUM Ch 66.3.2-66.3.24 pp 3936-3957. Writes module-control registers, EPD options, data-type enables, and the generic short-packet control.

Parameters
[in]cfgCaller-provided config snapshot.
Precondition
Receiver was disabled (RXEN = 0) and any pending soft reset drained.
Postcondition
All listed registers reflect cfg.
Note
Internal helper, not thread-safe.
Precondition
Module/state preconditions hold (see function body).
Postcondition
Documented side effects are visible on success.
Since
0.1.0

Definition at line 208 of file ra8_mipi_csi.c.

References ra8_mipi_csi_config_t::dt_high_mask, ra8_mipi_csi_config_t::dt_low_mask, ra8_mipi_csi_config_t::eotp_enable, ra8_mipi_csi_config_t::epd_enable, ra8_mipi_csi_config_t::epd_long_spacer, ra8_mipi_csi_config_t::epd_option_2, ra8_mipi_csi_config_t::epd_short_spacer, ra8_mipi_csi_config_t::frrclk, ra8_mipi_csi_config_t::frrskw, internal_encode_mct0(), k_ra8_mipi_csi_emct_eotpen_mask, k_ra8_mipi_csi_emct_vlsien_mask, k_ra8_mipi_csi_emct_vlsien_shift, k_ra8_mipi_csi_epct_epden_mask, k_ra8_mipi_csi_epct_epdop_mask, k_ra8_mipi_csi_epct_slp_mask, k_ra8_mipi_csi_epct_ssp_mask, k_ra8_mipi_csi_epct_ssp_shift, k_ra8_mipi_csi_gsct_gfif_mask, k_ra8_mipi_csi_gsct_shth_mask, k_ra8_mipi_csi_mct2_frrclk_mask, k_ra8_mipi_csi_mct2_frrskw_mask, k_ra8_mipi_csi_mct2_frrskw_shift, k_ra8_mipi_csi_off_dteh, k_ra8_mipi_csi_off_dtel, k_ra8_mipi_csi_off_emct, k_ra8_mipi_csi_off_epct, k_ra8_mipi_csi_off_gsct, k_ra8_mipi_csi_off_mct0, k_ra8_mipi_csi_off_mct2, ra8_mipi_csi_reg32(), ra8_mipi_csi_config_t::short_store_enable, ra8_mipi_csi_config_t::short_threshold, and ra8_mipi_csi_config_t::vlsien.

Referenced by ra8_mipi_csi_init().

◆ internal_reject_if_running()

◆ internal_validate_cfg()

ra8_err_t internal_validate_cfg ( const ra8_mipi_csi_config_t * cfg)
static

Validate cfg field ranges before any register writes.

Catches lane count, VLSIEN, EPD spacer, and short-packet threshold out-of-range values described in HUM Ch 66 "MIPI Camera Serial Interface" pp 3935-3958.

Parameters
[in]cfgCaller-provided config snapshot.
Returns
k_ra8_ok on success, k_ra8_err_invalid_arg otherwise.
Return values
k_ra8_okAll fields in range.
k_ra8_err_invalid_argAt least one field is out of the documented range.
Precondition
cfg is non-NULL (caller has already done the NULL check).
Postcondition
No register writes occur on failure.
Note
Internal helper, not thread-safe.
Precondition
Module/state preconditions hold (see function body).
Postcondition
Documented side effects are visible on success.
Since
0.1.0

Definition at line 169 of file ra8_mipi_csi.c.

References ra8_mipi_csi_config_t::epd_long_spacer, ra8_mipi_csi_config_t::epd_short_spacer, k_ra8_err_invalid_arg, k_ra8_mipi_csi_epct_slp_mask, k_ra8_mipi_csi_epct_ssp_mask, k_ra8_mipi_csi_epct_ssp_shift, k_ra8_mipi_csi_gsct_shth_max, k_ra8_mipi_csi_lanes_1, k_ra8_mipi_csi_lanes_2, k_ra8_mipi_csi_vlsien_x4, k_ra8_ok, ra8_mipi_csi_config_t::lanes, ra8_mipi_csi_config_t::short_threshold, and ra8_mipi_csi_config_t::vlsien.

Referenced by ra8_mipi_csi_init().

◆ internal_wait_reset_idle()

◆ ra8_mipi_csi_clear_status()

ra8_err_t ra8_mipi_csi_clear_status ( uint32_t mask)
nodiscard

Clear the sticky receive-status bits selected by mask.

Only RACTDET (bit 17) is currently writable in RXSC; other bits in mask are silently dropped by hardware.

Parameters
[in]maskBit mask to write to RXSC.
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller knows which sticky bits are write-1-to-clear.
Postcondition
RXSC has been written.
Hardware will eventually deassert the targeted RXST bits.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 404 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_rxsc, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_deinit()

ra8_err_t ra8_mipi_csi_deinit ( void )
nodiscard

Tear down the MIPI CSI receiver.

Clears MCT3.RXEN, pulses VSRST to flush any in-flight state, clears every IRQ-enable register, drops cached callbacks, and gates the MSTP bit. Safe to call after a partial init.

Returns
ra8_err_t error code.
Return values
k_ra8_okReceiver gated cleanly.
k_ra8_err_invalid_statera8_mstp ref-count was already 0.
Precondition
IRQs masked or single-threaded teardown context.
Caller has stopped any upstream camera transmission.
Postcondition
MCT3.RXEN is 0.
MSTP bit for MIPI CSI is set (peripheral gated).
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 324 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_dlie0, k_ra8_mipi_csi_off_dlie1, k_ra8_mipi_csi_off_gsie, k_ra8_mipi_csi_off_mct3, k_ra8_mipi_csi_off_pmie, k_ra8_mipi_csi_off_rtct, k_ra8_mipi_csi_off_rxie, k_ra8_mipi_csi_off_vcie0, k_ra8_mipi_csi_rtct_vsrst_mask, k_ra8_mipi_csi_vc_count, k_ra8_mstp_mipi_csi, priv_ra8_mipi_csi_detach_all_handlers(), ra8_mipi_csi_reg32(), ra8_mipi_csi_vc_off(), and ra8_mstp_disable().

◆ ra8_mipi_csi_dl_clear_status()

ra8_err_t ra8_mipi_csi_dl_clear_status ( uint8_t lane,
uint32_t mask )
nodiscard

W1C-clear bits in DLST(N) via DLSC(N).

Parameters
[in]laneData lane index (0..1).
[in]maskBits to clear.
Returns
ra8_err_t error code.
Return values
k_ra8_okCleared.
k_ra8_err_invalid_arglane > 1.
Precondition
lane <= 1.
ra8_mipi_csi_init has succeeded.
Postcondition
DLSC(N) has been written.
Targeted DLST(N) bits will eventually deassert.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 569 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_dl_max, k_ra8_mipi_csi_dlsc_all_mask, k_ra8_mipi_csi_off_dlsc0, k_ra8_ok, ra8_mipi_csi_dl_off(), and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_dl_get_status()

ra8_err_t ra8_mipi_csi_dl_get_status ( uint8_t lane,
uint32_t * out_mask )
nodiscard

Read DLST(N) (Data Lane N Status).

Parameters
[in]laneData lane index (0..1).
[out]out_maskLive DLST(N) value.
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned.
k_ra8_err_invalid_arglane > 1.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
lane <= 1.
out_mask is non-NULL.
Postcondition
*out_mask holds the DLST(N) value.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 557 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_dl_max, k_ra8_mipi_csi_off_dlst0, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_dl_off(), ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_dl_set_irq_enable()

ra8_err_t ra8_mipi_csi_dl_set_irq_enable ( uint8_t lane,
uint32_t mask )
nodiscard

Programme DLIE(N) (Data Lane N IRQ enable).

Parameters
[in]laneData lane index (0..1).
[in]maskBits to set in DLIE(N).
Returns
ra8_err_t error code.
Return values
k_ra8_okUpdated.
k_ra8_err_invalid_arglane > 1.
Precondition
lane <= 1.
ra8_mipi_csi_init has succeeded.
Postcondition
DLIE(N) = mask.
Subsequent matching DL events trigger the DL IRQ vector.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 580 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_dl_max, k_ra8_mipi_csi_off_dlie0, k_ra8_ok, ra8_mipi_csi_dl_off(), and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_enter_stop()

ra8_err_t ra8_mipi_csi_enter_stop ( void )
nodiscard

Gate the peripheral via MSTP (low-power entry helper).

Returns
ra8_err_t error code.
Return values
k_ra8_okPeripheral gated.
k_ra8_err_invalid_statera8_mstp ref-count was already 0.
Precondition
ra8_mipi_csi_init has succeeded at least once.
Reception has been stopped via ra8_mipi_csi_stop_receive.
Postcondition
MSTP bit for MIPI CSI is set.
Register access is undefined until exit_stop.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 759 of file ra8_mipi_csi.c.

References k_ra8_mstp_mipi_csi, and ra8_mstp_disable().

◆ ra8_mipi_csi_exit_stop()

ra8_err_t ra8_mipi_csi_exit_stop ( void )
nodiscard

Ungate the peripheral via MSTP (low-power exit helper).

Returns
ra8_err_t error code.
Return values
k_ra8_okPeripheral clocked.
k_ra8_err_hw_init_failedMSTP enable failed.
Precondition
ra8_mipi_csi_enter_stop was called previously.
Caller is in single-threaded resume context.
Postcondition
MSTP bit for MIPI CSI is cleared.
Register access is valid again.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 765 of file ra8_mipi_csi.c.

References k_ra8_mstp_mipi_csi, and ra8_mstp_enable().

◆ ra8_mipi_csi_get_module_info()

ra8_err_t ra8_mipi_csi_get_module_info ( ra8_mipi_csi_module_info_t * out)
nodiscard

Read MCG (Module Configuration, RO IP info) and decode.

Parameters
[out]outOn success, the decoded MCG snapshot.
Returns
ra8_err_t error code.
Return values
k_ra8_okInfo returned in *out.
k_ra8_err_null_ptrout was nullptr.
Precondition
out is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
*out holds the decoded MCG snapshot.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 427 of file ra8_mipi_csi.c.

References ra8_mipi_csi_module_info_t::fifo_stages, k_ra8_mipi_csi_mcg_gsnm_mask, k_ra8_mipi_csi_mcg_gsnm_shift, k_ra8_mipi_csi_mcg_sdln_mask, k_ra8_mipi_csi_mcg_sdln_shift, k_ra8_mipi_csi_mcg_ver_mask, k_ra8_mipi_csi_off_mcg, k_ra8_ok, ra8_mipi_csi_module_info_t::lanes_max, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), ra8_mipi_csi_module_info_t::raw, s_tag, and ra8_mipi_csi_module_info_t::version.

◆ ra8_mipi_csi_get_module_irq_status()

ra8_err_t ra8_mipi_csi_get_module_irq_status ( uint32_t * out_mask)
nodiscard

Read MIST (Module Interrupt Status, RO summary).

Parameters
[out]out_maskOn success, the live MIST value.
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
out_mask is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
*out_mask holds MIST.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 419 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_mist, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_get_status()

ra8_err_t ra8_mipi_csi_get_status ( uint32_t * out_mask)
nodiscard

Read the RXST receive-status register.

Parameters
[out]out_maskOn success, the live RXST value (RACT, RACTDET, FRMn[15:0]).
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned in *out_mask.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
out_mask is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
*out_mask holds the RXST value.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 396 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_rxst, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_init()

ra8_err_t ra8_mipi_csi_init ( const ra8_mipi_csi_config_t * cfg)
nodiscard

Initialise the MIPI CSI receiver.

Sequence:

  1. Validate cfg and the lane count.
  2. Ungate the peripheral via ra8_mstp_enable(k_ra8_mstp_mipi_csi).
  3. Clear MCT3.RXEN (no reception during configuration).
  4. Spin until RTST.VSRSTS reads 0 (no reset in progress).
  5. Programme MCT0 (lane count + GRMD + ECCV13 + LFSREN + ZLMD + EDMD + RVMD).
  6. Programme MCT2 (FRRCLK + FRRSKW).
  7. Programme EPCT (EPD enable, option, spacers).
  8. Programme EMCT (VLSIEN + EOTPEN).
  9. Programme DTEL / DTEH (data-type filter).

Programme GSCT (short-packet threshold + store flag).

  1. Programme RXIE / DLIE0 / DLIE1 / VCIE0..15 / PMIE / GSIE.
  2. Leave RXEN clear – caller arms via start_receive.
Parameters
[in]cfgNon-NULL configuration descriptor.
Returns
ra8_err_t error code.
Return values
k_ra8_okReceiver configured, RXEN still 0.
k_ra8_err_null_ptrcfg was nullptr.
k_ra8_err_invalid_argLane count not in {1, 2} or VLSIEN out of range.
k_ra8_err_hw_init_failedMSTP enable failed.
k_ra8_err_hw_timeoutVSRSTS did not clear within budget.
Precondition
IRQs masked or single-threaded init context.
ra8_mstp_init has been called.
Postcondition
On success, the peripheral is clocked and configured.
MCT3.RXEN is 0 (no incoming data accepted).
Note
Thread safety: not thread-safe.
See also
ra8_mipi_csi_start_receive
ra8_mipi_csi_deinit
Since
0.1.0

Definition at line 298 of file ra8_mipi_csi.c.

References internal_program_irq_masks(), internal_program_receiver(), internal_validate_cfg(), internal_wait_reset_idle(), k_ra8_mipi_csi_off_mct3, k_ra8_mstp_mipi_csi, k_ra8_ok, ra8_mipi_csi_config_t::lanes, RA8_CHECK_NULL_PTR, ra8_log_info_val, ra8_mipi_csi_reg32(), ra8_mstp_enable(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_pm_clear_status()

ra8_err_t ra8_mipi_csi_pm_clear_status ( uint32_t mask)
nodiscard

W1C-clear bits in PMST via PMSC.

Parameters
[in]maskBits to clear (only [7:0] are clearable).
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller knows which PM bits are W1C.
Postcondition
PMSC has been written.
Targeted PMST bits will eventually deassert.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 643 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_pmsc, k_ra8_mipi_csi_pmsc_all_mask, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_pm_get_status()

ra8_err_t ra8_mipi_csi_pm_get_status ( uint32_t * out_mask)
nodiscard

Read PMST (Power Management Status) live value.

Parameters
[out]out_maskLive PMST value.
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
out_mask is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
*out_mask holds the PMST value.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 635 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_pmst, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_pm_set_irq_enable()

ra8_err_t ra8_mipi_csi_pm_set_irq_enable ( uint32_t mask)
nodiscard

Programme PMIE (Power Management IRQ enable).

Parameters
[in]maskBits to set in PMIE.
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller is in single-threaded init context.
Postcondition
PMIE = mask.
Subsequent matching PM events trigger the PM IRQ vector.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 651 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_pmie, k_ra8_mipi_csi_pmie_all_mask, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_read_short_packet()

ra8_err_t ra8_mipi_csi_read_short_packet ( ra8_mipi_csi_short_packet_t * out)
nodiscard

Drain one stored short-packet header from the FIFO.

Reads GSST.PNUM first; if non-zero, sets GSIU.FINC (advance read pointer) then reads GSHT to retrieve the next header. The returned raw field is the unprocessed GSHT snapshot and the other fields are decoded for caller convenience.

Parameters
[out]outOn success, the decoded short-packet header.
Returns
ra8_err_t error code.
Return values
k_ra8_okHeader drained into *out.
k_ra8_err_null_ptrout was nullptr.
k_ra8_err_emptyFIFO had no stored packets.
Precondition
out is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
On success, GSIU.FINC was pulsed and *out holds a valid header.
GSST.PNUM is decremented by 1 on success.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 700 of file ra8_mipi_csi.c.

References ra8_mipi_csi_short_packet_t::data_type, k_ra8_err_empty, k_ra8_mipi_csi_gsht_dtyp_mask, k_ra8_mipi_csi_gsht_dtyp_shift, k_ra8_mipi_csi_gsht_spdt_mask, k_ra8_mipi_csi_gsht_spdt_shift, k_ra8_mipi_csi_gsht_spvc_mask, k_ra8_mipi_csi_gsht_spvc_shift, k_ra8_mipi_csi_gsiu_finc_mask, k_ra8_mipi_csi_gsst_pnum_mask, k_ra8_mipi_csi_gsst_pnum_shift, k_ra8_mipi_csi_off_gsht, k_ra8_mipi_csi_off_gsiu, k_ra8_mipi_csi_off_gsst, k_ra8_ok, ra8_mipi_csi_short_packet_t::payload, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), ra8_mipi_csi_short_packet_t::raw, s_tag, and ra8_mipi_csi_short_packet_t::vc.

◆ ra8_mipi_csi_reset()

ra8_err_t ra8_mipi_csi_reset ( void )
nodiscard

Issue a software reset (RTCT.VSRST) and wait for completion.

Pulses RTCT.VSRST then spins on RTST.VSRSTS until it clears. Used after stop_receive to drain the video-pixel pipeline before the next start.

Returns
ra8_err_t error code.
Return values
k_ra8_okReset completed.
k_ra8_err_hw_timeoutVSRSTS did not clear in time.
Precondition
Peripheral is ungated.
Caller is in single-threaded context.
Postcondition
RTST.VSRSTS reads 0.
Video-pixel pipeline is empty.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 358 of file ra8_mipi_csi.c.

References internal_wait_reset_idle(), k_ra8_mipi_csi_off_rtct, k_ra8_mipi_csi_rtct_vsrst_mask, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_set_data_type_filter()

ra8_err_t ra8_mipi_csi_set_data_type_filter ( uint32_t low_mask,
uint32_t high_mask )
nodiscard

Programme the receive data-type filter (DTEL + DTEH).

A bit set in low_mask enables the corresponding data type in the 0x00-0x1F range; a bit set in high_mask enables one in 0x20-0x3F. Bits documented as reserved (DTEL[3:0] read 1, [7:5] read 0, [29:16] read 0; DTEH bits other than 4 and 10) are preserved by the hardware.

Parameters
[in]low_maskMask written to DTEL.
[in]high_maskMask written to DTEH.
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller is in single-threaded context.
Postcondition
DTEL = low_mask, DTEH = high_mask.
Receiver accepts only the selected data types.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 445 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_dteh, k_ra8_mipi_csi_off_dtel, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_set_ecc_mode()

ra8_err_t ra8_mipi_csi_set_ecc_mode ( bool eccv13,
bool lfsren )
nodiscard

Update MCT0 ECC bits (ECCV13, LFSREN) atomically.

Parameters
[in]eccv131 = ECC v1.3 (24-bit) mode, 0 = legacy ECC.
[in]lfsren1 = enable LFSR descrambling.
Returns
ra8_err_t error code.
Return values
k_ra8_okBits updated.
k_ra8_err_invalid_stateRXEN was set (can only update while gated).
Precondition
ra8_mipi_csi_init has succeeded.
Reception is stopped (MCT3.RXEN = 0).
Postcondition
MCT0.ECCV13 and MCT0.LFSREN reflect the requested state.
Other MCT0 bits are preserved.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 459 of file ra8_mipi_csi.c.

References internal_reject_if_running(), k_ra8_mipi_csi_mct0_eccv13_mask, k_ra8_mipi_csi_mct0_lfsren_mask, k_ra8_mipi_csi_off_mct0, k_ra8_ok, ra8_mipi_csi_reg32(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_set_epd()

ra8_err_t ra8_mipi_csi_set_epd ( bool enable,
bool option_2,
uint16_t long_spacer,
uint16_t short_spacer )
nodiscard

Programme EPCT (long-packet spacer + Option-2 EPD).

Parameters
[in]enable1 = EPCT.EPDEN – enable EPD operation.
[in]option_21 = EPCT.EPDOP – select Option-2 EPD.
[in]long_spacerEPCT.SLP[14:0] – long-packet spacer count.
[in]short_spacerEPCT.SSP[14:0] – short-packet spacer count.
Returns
ra8_err_t error code.
Return values
k_ra8_okUpdated.
k_ra8_err_invalid_argspacer values exceed 15 bits.
k_ra8_err_invalid_stateRXEN was set.
Precondition
ra8_mipi_csi_init has succeeded.
Reception is stopped (MCT3.RXEN = 0).
Postcondition
EPCT contains the requested fields.
Subsequent transmissions honour the new spacer values.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 505 of file ra8_mipi_csi.c.

References internal_reject_if_running(), k_ra8_err_invalid_arg, k_ra8_mipi_csi_epct_epden_mask, k_ra8_mipi_csi_epct_epdop_mask, k_ra8_mipi_csi_epct_slp_mask, k_ra8_mipi_csi_epct_ssp_mask, k_ra8_mipi_csi_epct_ssp_shift, k_ra8_mipi_csi_off_epct, k_ra8_ok, ra8_mipi_csi_reg32(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_set_frame_error_mode()

ra8_err_t ra8_mipi_csi_set_frame_error_mode ( bool zlmd,
bool edmd,
bool rvmd )
nodiscard

Update MCT0 frame-error notification bits atomically.

Parameters
[in]zlmd1 = treat zero-length LP as ErrFrameSync.
[in]edmd1 = forward ErrFrameData errors to ISR.
[in]rvmd1 = receive Reserved-DT packets normally.
Returns
ra8_err_t error code.
Return values
k_ra8_okBits updated.
k_ra8_err_invalid_stateRXEN was set.
Precondition
ra8_mipi_csi_init has succeeded.
Reception is stopped (MCT3.RXEN = 0).
Postcondition
MCT0.ZLMD / EDMD / RVMD reflect the requested state.
Other MCT0 bits are preserved.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 477 of file ra8_mipi_csi.c.

References internal_reject_if_running(), k_ra8_mipi_csi_mct0_edmd_mask, k_ra8_mipi_csi_mct0_rvmd_mask, k_ra8_mipi_csi_mct0_zlmd_mask, k_ra8_mipi_csi_off_mct0, k_ra8_ok, ra8_mipi_csi_reg32(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_set_lrte()

ra8_err_t ra8_mipi_csi_set_lrte ( ra8_mipi_csi_vlsien_t vlsien,
bool eotp_enable )
nodiscard

Programme EMCT (LRTE / EOTP options).

Parameters
[in]vlsienVariable-length spacer mode (EMCT.VLSIEN[5:4]).
[in]eotp_enable1 = EMCT.EOTPEN – expect EoT packet.
Returns
ra8_err_t error code.
Return values
k_ra8_okUpdated.
k_ra8_err_invalid_argvlsien out of enum range.
k_ra8_err_invalid_stateRXEN was set.
Precondition
ra8_mipi_csi_init has succeeded.
Reception is stopped (MCT3.RXEN = 0).
Postcondition
EMCT.VLSIEN and EMCT.EOTPEN reflect the requested state.
Other EMCT bits are preserved.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 533 of file ra8_mipi_csi.c.

References internal_reject_if_running(), k_ra8_err_invalid_arg, k_ra8_mipi_csi_emct_eotpen_mask, k_ra8_mipi_csi_emct_vlsien_mask, k_ra8_mipi_csi_emct_vlsien_shift, k_ra8_mipi_csi_off_emct, k_ra8_mipi_csi_vlsien_x4, k_ra8_ok, ra8_mipi_csi_reg32(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_set_rx_irq_enable()

ra8_err_t ra8_mipi_csi_set_rx_irq_enable ( uint32_t mask)
nodiscard

Programme RXIE (receive interrupt enable mask).

Parameters
[in]maskBit mask to programme into RXIE.
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller is in single-threaded init context.
Postcondition
RXIE = mask.
Subsequent matching events trigger the receive IRQ vector.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 412 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_rxie, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_short_packet_clear_fifo()

ra8_err_t ra8_mipi_csi_short_packet_clear_fifo ( void )
nodiscard

Request a clear of the entire short-packet FIFO (GSIU.GFCLR).

Writes 1 to GSIU.GFCLR, then waits for GSST.GCD to read 1 (clear complete) and writes 0 to GSIU.GFCLR to release the request line.

Returns
ra8_err_t error code.
Return values
k_ra8_okCleared.
k_ra8_err_hw_timeoutGCD did not assert within budget.
Precondition
ra8_mipi_csi_init has succeeded.
Caller is in single-threaded context.
Postcondition
FIFO is empty (GSST.PNUM = 0).
GSIU.GFCLR is back to 0.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 725 of file ra8_mipi_csi.c.

References k_ra8_err_hw_timeout, k_ra8_mipi_csi_gfclr_spin_max, k_ra8_mipi_csi_gsiu_gfclr_mask, k_ra8_mipi_csi_gsst_gcd_mask, k_ra8_mipi_csi_off_gsiu, k_ra8_mipi_csi_off_gsst, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_short_packet_clear_status()

ra8_err_t ra8_mipi_csi_short_packet_clear_status ( uint32_t mask)
nodiscard

W1C-clear GSST.GOV (FIFO overflow) via GSSC.

Parameters
[in]maskBits to clear (only GOV bit is W1C).
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller knows which GSST bits are W1C.
Postcondition
GSSC has been written.
GSST.GOV will eventually deassert.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 692 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_gssc_govc_mask, k_ra8_mipi_csi_off_gssc, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_short_packet_configure()

ra8_err_t ra8_mipi_csi_short_packet_configure ( uint8_t threshold,
bool store_enable )
nodiscard

Programme GSCT (short-packet FIFO threshold + store flag).

Parameters
[in]thresholdFIFO depth-1 reported in GSST.PNUM that asserts the GTH IRQ. Range 0..15.
[in]store_enable1 = store incoming short packets in FIFO.
Returns
ra8_err_t error code.
Return values
k_ra8_okUpdated.
k_ra8_err_invalid_argthreshold > 15.
Precondition
ra8_mipi_csi_init has succeeded.
threshold <= 15.
Postcondition
GSCT.SHTH = threshold.
GSCT.GFIF = store_enable.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 663 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_gsct_gfif_mask, k_ra8_mipi_csi_gsct_shth_mask, k_ra8_mipi_csi_gsct_shth_max, k_ra8_mipi_csi_off_gsct, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_short_packet_get_status()

ra8_err_t ra8_mipi_csi_short_packet_get_status ( uint32_t * out_mask)
nodiscard

Read GSST (short-packet status).

Parameters
[out]out_maskLive GSST value.
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
out_mask is non-NULL.
ra8_mipi_csi_init has succeeded.
Postcondition
*out_mask holds the GSST value.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 684 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_gsst, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_short_packet_re_enable_store()

ra8_err_t ra8_mipi_csi_short_packet_re_enable_store ( void )
nodiscard

Re-enable storing into the FIFO after a GOV overflow (GSIU.GFEN).

Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller has cleared the GOV flag via clear_status.
Postcondition
GSIU.GFEN was pulsed (W1).
Hardware will resume queuing packets.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 747 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_gsiu_gfen_mask, k_ra8_mipi_csi_off_gsiu, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_short_packet_set_irq_enable()

ra8_err_t ra8_mipi_csi_short_packet_set_irq_enable ( uint32_t mask)
nodiscard

Programme GSIE (short-packet IRQ enable).

Parameters
[in]maskBits to set in GSIE.
Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Caller is in single-threaded init context.
Postcondition
GSIE = mask.
Subsequent matching GST events trigger the GST IRQ vector.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 677 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_gsie_all_mask, k_ra8_mipi_csi_off_gsie, k_ra8_ok, and ra8_mipi_csi_reg32().

◆ ra8_mipi_csi_start_receive()

ra8_err_t ra8_mipi_csi_start_receive ( void )
nodiscard

Enable MIPI CSI reception (set MCT3.RXEN).

Returns
ra8_err_t error code.
Return values
k_ra8_okMCT3.RXEN set.
k_ra8_err_invalid_stateRXEN was already set.
Precondition
ra8_mipi_csi_init has succeeded.
Upstream MIPI PHY is up and clocking.
Postcondition
MCT3.RXEN reads 1.
Subsequent CSI-2 packets land in RXST / VCSTn / GSHT.
Note
Thread safety: not thread-safe.
See also
ra8_mipi_csi_stop_receive
Since
0.1.0

Definition at line 371 of file ra8_mipi_csi.c.

References internal_reject_if_running(), k_ra8_mipi_csi_mct3_rxen_mask, k_ra8_mipi_csi_off_mct3, k_ra8_ok, ra8_log_info, ra8_mipi_csi_reg32(), RA8_RETURN_ON_ERROR, and s_tag.

◆ ra8_mipi_csi_stop_receive()

ra8_err_t ra8_mipi_csi_stop_receive ( void )
nodiscard

Disable MIPI CSI reception (clear MCT3.RXEN, pulse VSRST).

The HUM (and FSP) require the application to wait for a full frame after stopping the upstream camera before calling this – we do not poll for that condition because the driver has no way to know the frame interval. Caller is responsible.

Returns
ra8_err_t error code.
Return values
k_ra8_okAlways.
Precondition
ra8_mipi_csi_init has succeeded.
Upstream camera has stopped sending data.
Postcondition
MCT3.RXEN reads 0.
RTCT.VSRST has been written 1 (reset pulse issued).
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 381 of file ra8_mipi_csi.c.

References k_ra8_mipi_csi_off_mct3, k_ra8_mipi_csi_off_rtct, k_ra8_mipi_csi_rtct_vsrst_mask, k_ra8_ok, ra8_log_info, ra8_mipi_csi_reg32(), and s_tag.

◆ ra8_mipi_csi_vc_clear_status()

ra8_err_t ra8_mipi_csi_vc_clear_status ( uint8_t vc,
uint32_t mask )
nodiscard

W1C-clear bits in VCST(M) via VCSC(M).

Parameters
[in]vcVirtual channel index (0..15).
[in]maskBits to clear.
Returns
ra8_err_t error code.
Return values
k_ra8_okCleared.
k_ra8_err_invalid_argvc > 15.
Precondition
vc <= 15.
ra8_mipi_csi_init has succeeded.
Postcondition
VCSC(M) has been written.
Targeted VCST(M) bits will eventually deassert.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 608 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_off_vcsc0, k_ra8_mipi_csi_vc_max, k_ra8_ok, ra8_mipi_csi_reg32(), and ra8_mipi_csi_vc_off().

◆ ra8_mipi_csi_vc_get_status()

ra8_err_t ra8_mipi_csi_vc_get_status ( uint8_t vc,
uint32_t * out_mask )
nodiscard

Read VCST(M) (Virtual Channel M Status).

Parameters
[in]vcVirtual channel index (0..15).
[out]out_maskLive VCST(M) value.
Returns
ra8_err_t error code.
Return values
k_ra8_okStatus returned.
k_ra8_err_invalid_argvc > 15.
k_ra8_err_null_ptrout_mask was nullptr.
Precondition
vc <= 15.
out_mask is non-NULL.
Postcondition
*out_mask holds the VCST(M) value.
No hardware state is modified.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 596 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_off_vcst0, k_ra8_mipi_csi_vc_max, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_mipi_csi_reg32(), ra8_mipi_csi_vc_off(), and s_tag.

◆ ra8_mipi_csi_vc_set_irq_enable()

ra8_err_t ra8_mipi_csi_vc_set_irq_enable ( uint8_t vc,
uint32_t mask )
nodiscard

Programme VCIE(M) (Virtual Channel M IRQ enable).

Parameters
[in]vcVirtual channel index (0..15).
[in]maskBits to set in VCIE(M).
Returns
ra8_err_t error code.
Return values
k_ra8_okUpdated.
k_ra8_err_invalid_argvc > 15.
Precondition
vc <= 15.
ra8_mipi_csi_init has succeeded.
Postcondition
VCIE(M) = mask.
Subsequent matching VC events trigger the VC IRQ vector.
Note
Thread safety: not thread-safe.
Since
0.1.0

Definition at line 619 of file ra8_mipi_csi.c.

References k_ra8_err_invalid_arg, k_ra8_mipi_csi_off_vcie0, k_ra8_mipi_csi_vc_max, k_ra8_ok, ra8_mipi_csi_reg32(), and ra8_mipi_csi_vc_off().

Variable Documentation

◆ s_tag

const char* s_tag = "MIPI_CSI"
static

Log tag prefix used by every ra8_log_* call below.

Note
Module-private; do not expose.

Definition at line 66 of file ra8_mipi_csi.c.