ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_ceu_api.h
Go to the documentation of this file.
1
23
24#pragma once
25
26#include <stdint.h>
27
28#include "ra8_ceu_types.h"
29#include "ra8_err.h"
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35/* =============================================================================
36 * Lifecycle
37 * =============================================================================
38 */
39
79[[nodiscard]] ra8_err_t ra8_ceu_init(const ra8_ceu_config_t* cfg);
80
101[[nodiscard]] ra8_err_t ra8_ceu_deinit(void);
102
123[[nodiscard]] ra8_err_t ra8_ceu_reset(void);
124
125/* =============================================================================
126 * Status / IRQ
127 * =============================================================================
128 */
129
149[[nodiscard]] ra8_err_t ra8_ceu_get_status(uint32_t* out_mask);
150
174[[nodiscard]] ra8_err_t ra8_ceu_clear_status(uint32_t mask);
175
194
216[[nodiscard]] ra8_err_t ra8_ceu_data_size_get(uint32_t* out_bytes);
217
235[[nodiscard]] ra8_err_t ra8_ceu_interrupts_set(uint32_t mask);
236
254[[nodiscard]] ra8_err_t ra8_ceu_attach_handler(ra8_ceu_event_fn_t fn, void* ctx);
255
275void ra8_ceu_dispatch(void);
276
277/* =============================================================================
278 * Power transition
279 * =============================================================================
280 */
281
297[[nodiscard]] ra8_err_t ra8_ceu_enter_stop(void);
298
314[[nodiscard]] ra8_err_t ra8_ceu_exit_stop(void);
315
316/* =============================================================================
317 * Capture operation
318 * =============================================================================
319 */
320
355[[nodiscard]] ra8_err_t ra8_ceu_capture_arm(uint8_t* buffer);
356
384[[nodiscard]] ra8_err_t ra8_ceu_capture_start_ex(const ra8_ceu_buffers_t* bufs);
385
405[[nodiscard]] ra8_err_t ra8_ceu_capture_disarm(void);
406
407/* =============================================================================
408 * Plane / firewall / byte-swap setters (live reconfig)
409 * =============================================================================
410 */
411
436[[nodiscard]] ra8_err_t ra8_ceu_plane_b_program(const ra8_ceu_buffers_t* bufs);
437
454[[nodiscard]] ra8_err_t ra8_ceu_plane_swap_force(void);
455
478[[nodiscard]] ra8_err_t ra8_ceu_firewall_set(bool enable, uint32_t upper_bound);
479
497[[nodiscard]] ra8_err_t ra8_ceu_byte_swap_set(const ra8_ceu_byte_swap_t* swap);
498
519[[nodiscard]] ra8_err_t ra8_ceu_bundle_size_set(uint32_t size_bytes);
520
535[[nodiscard]] ra8_err_t ra8_ceu_low_pass_set(bool enable);
536
552
567[[nodiscard]] ra8_err_t ra8_ceu_frame_drop_set(uint8_t count);
568
569/* =============================================================================
570 * DMA coupling helpers
571 * =============================================================================
572 */
573
604[[nodiscard]] ra8_err_t
605ra8_ceu_dma_pump(uint8_t channel, const uint8_t* src, uint8_t* dst, uint32_t bytes);
606
607/* =============================================================================
608 * Sweep 17: DMA-driven framebuffer + multi-frame capture
609 * =============================================================================
610 */
611
640[[nodiscard]] ra8_err_t ra8_ceu_set_dma_buffer(uint8_t* buf, uint32_t len);
641
670[[nodiscard]] ra8_err_t ra8_ceu_capture_start(uint32_t num_frames);
671
688[[nodiscard]] ra8_err_t ra8_ceu_capture_stop(void);
689
690#ifdef __cplusplus
691}
692#endif
ra8_err_t ra8_ceu_exit_stop(void)
Exit the MSTP-gated stop entered by ra8_ceu_enter_stop.
Definition ra8_ceu.c:454
ra8_err_t ra8_ceu_capture_mode_set(ra8_ceu_capture_mode_t mode)
Enable or disable continuous-capture mode (CAPCR.CTNCP).
Definition ra8_ceu.c:759
ra8_err_t ra8_ceu_status_snapshot(ra8_ceu_status_t *out)
Snapshot CSTSR + CDSSR + the active plane into one struct.
Definition ra8_ceu.c:383
ra8_err_t ra8_ceu_clear_status(uint32_t mask)
Clear the CETCR event flags identified by mask.
Definition ra8_ceu.c:370
ra8_err_t ra8_ceu_capture_stop(void)
Stop the in-flight capture started via ra8_ceu_capture_start.
Definition ra8_ceu.c:848
ra8_err_t ra8_ceu_capture_arm(uint8_t *buffer)
Arm a capture into the supplied buffer.
Definition ra8_ceu.c:521
ra8_err_t ra8_ceu_get_status(uint32_t *out_mask)
Snapshot the CEU event-status register (CETCR).
Definition ra8_ceu.c:362
ra8_err_t ra8_ceu_set_dma_buffer(uint8_t *buf, uint32_t len)
Cache a DMAC-target framebuffer for the next ra8_ceu_capture_start call.
Definition ra8_ceu.c:814
ra8_err_t ra8_ceu_dma_pump(uint8_t channel, const uint8_t *src, uint8_t *dst, uint32_t bytes)
Pump a finished CEU bundle into a downstream DMAC channel.
Definition ra8_ceu.c:783
ra8_err_t ra8_ceu_byte_swap_set(const ra8_ceu_byte_swap_t *swap)
Replace CDOCR byte-swap configuration in-place.
Definition ra8_ceu.c:721
ra8_err_t ra8_ceu_data_size_get(uint32_t *out_bytes)
Return the byte count written by the last data-enable capture.
Definition ra8_ceu.c:403
ra8_err_t ra8_ceu_low_pass_set(bool enable)
Enable or disable the input low-pass filter (CLFCR.LPF).
Definition ra8_ceu.c:748
ra8_err_t ra8_ceu_firewall_set(bool enable, uint32_t upper_bound)
Configure the CFWCR firewall window.
Definition ra8_ceu.c:709
ra8_err_t ra8_ceu_plane_swap_force(void)
Force an immediate plane swap (CRCMPR.RA).
Definition ra8_ceu.c:702
void ra8_ceu_dispatch(void)
Drain CEU interrupt events and fire the registered callback.
Definition ra8_ceu.c:427
ra8_err_t ra8_ceu_bundle_size_set(uint32_t size_bytes)
Configure the bundle-write size (CBDSR).
Definition ra8_ceu.c:741
ra8_err_t ra8_ceu_frame_drop_set(uint8_t count)
Update the frame-drop counter (CAPCR.FDRP).
Definition ra8_ceu.c:772
ra8_err_t ra8_ceu_capture_start(uint32_t num_frames)
Start a single or continuous capture into the cached DMA buffer.
Definition ra8_ceu.c:829
ra8_err_t ra8_ceu_init(const ra8_ceu_config_t *cfg)
Power on the CEU and write the full configuration.
Definition ra8_ceu.c:300
ra8_err_t ra8_ceu_plane_b_program(const ra8_ceu_buffers_t *bufs)
Mirror the active configuration into Plane B and arm a swap.
Definition ra8_ceu.c:681
ra8_err_t ra8_ceu_attach_handler(ra8_ceu_event_fn_t fn, void *ctx)
Register a callback invoked by ra8_ceu_dispatch.
Definition ra8_ceu.c:419
ra8_err_t ra8_ceu_interrupts_set(uint32_t mask)
Update the CEIER interrupt-enable bitmask.
Definition ra8_ceu.c:411
ra8_err_t ra8_ceu_capture_disarm(void)
Stop the running capture by clearing CAPSR.CE.
Definition ra8_ceu.c:564
ra8_err_t ra8_ceu_reset(void)
Issue a software reset of the capture state machine.
Definition ra8_ceu.c:355
ra8_err_t ra8_ceu_capture_start_ex(const ra8_ceu_buffers_t *bufs)
Arm a capture using a full address bundle.
Definition ra8_ceu.c:551
ra8_err_t ra8_ceu_enter_stop(void)
Stop active captures and drop the CEU module-stop bit.
Definition ra8_ceu.c:446
ra8_err_t ra8_ceu_deinit(void)
Stop the CEU and drop its module-stop bit.
Definition ra8_ceu.c:336
Capture Engine Unit (CEU) configuration descriptors and types.
ra8_ceu_capture_mode_t
CAPCR.CTNCP single-shot vs continuous capture.
void(* ra8_ceu_event_fn_t)(void *ctx, uint32_t event_mask)
Callback fired by ra8_ceu_dispatch for every CETCR event.
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
Address bundle programmed into the CDAYR / CDACR family.
CDOCR.COBS / COWS / COLS byte-swap control bundle.
Full configuration descriptor for ra8_ceu_init.
Snapshot of the CEU live-status registers.