Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
renesas_rx_dtc.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Renesas Electronics Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_DRIVERS_MISC_RENESAS_RX_DTC_H_
8#define ZEPHYR_DRIVERS_MISC_RENESAS_RX_DTC_H_
9
10#include <zephyr/drivers/gpio.h>
11#define DTC_PLACE_IN_SECTION(x) __attribute__((section(x))) __attribute__((__used__))
12#define DTC_ALIGN_VARIABLE(x) __aligned(x)
13#define DTC_SECTION_ATTRIBUTE DTC_PLACE_IN_SECTION(".dtc_vector_table")
14
15#define DTC_VECTOR_TABLE_ENTRIES (CONFIG_NUM_IRQS)
16#define DTC_PRV_ACT_BIT_MASK (1 << 15) /* DTC Active flag (DTCSTS.ACT) bit mask */
17#define DTC_PRV_VECT_NR_MASK (0x00FF) /* DTC-Activating Vector Number bits mask */
18/* Counter Register A Lower Byte Mask */
19#define DTC_PRV_MASK_CRAL (0xFFU)
20/* Counter Register A Upper Byte Offset */
21#define DTC_PRV_OFFSET_CRAH (8U)
22/* Max configurable number of transfers in NORMAL MODE */
23#define DTC_MAX_NORMAL_TRANSFER_LENGTH (0x10000)
24/* Max number of transfers per repeat for REPEAT MODE */
25#define DTC_MAX_REPEAT_TRANSFER_LENGTH (0x100)
26/* Max number of transfers per block in BLOCK MODE */
27#define DTC_MAX_BLOCK_TRANSFER_LENGTH (0x100)
28/* Max configurable number of blocks to transfer in BLOCK MODE */
29#define DTC_MAX_BLOCK_COUNT (0x10000)
30
37
42
47
53
59
66
72
73typedef struct st_transfer_info {
74 union {
75 struct {
76 unsigned int: 16;
77 unsigned int: 2;
78
80
82
84
86
87 unsigned int: 2;
88
90
92
95
97 };
98
99 void const *volatile p_src;
100 void *volatile p_dest;
101
103
104 volatile uint16_t length;
106
108 uint32_t block_count_max; /* Maximum number of blocks */
109 uint32_t block_count_remaining; /* Number of blocks remaining */
110 uint32_t transfer_length_max; /* Maximum number of transfers */
111 uint32_t transfer_length_remaining; /* Number of transfers remaining */
113
118
125int dtc_renesas_rx_off(const struct device *dev);
126
133int dtc_renesas_rx_on(const struct device *dev);
134
145int dtc_renesas_rx_configuration(const struct device *dev, uint8_t activation_irq,
146 transfer_info_t *p_info);
147
157
167
178int dtc_renesas_rx_start_transfer(const struct device *dev, uint8_t activation_irq);
179
190int dtc_renesas_rx_stop_transfer(const struct device *dev, uint8_t activation_irq);
191
204int dtc_renesas_rx_reset_transfer(const struct device *dev, uint8_t activation_irq,
205 void const *p_src, void *p_dest, uint16_t const num_transfers);
206
214 struct dtc_transfer_status *status);
215
226int dtc_renesas_rx_info_get(const struct device *dev, uint8_t activation_irq,
227 transfer_properties_t *const p_properties);
228
230{
231 if (activation_irq < 0 || activation_irq > DTC_VECTOR_TABLE_ENTRIES) {
232 return false;
233 }
234
235 return true;
236}
237
238#endif /* ZEPHYR_DRIVERS_MISC_RENESAS_RX_DTC_H_ */
Main header file for GPIO driver API.
#define ALWAYS_INLINE
Definition common.h:160
e_transfer_chain_mode
Definition renesas_rx_dtc.h:48
@ TRANSFER_CHAIN_MODE_END
Definition renesas_rx_dtc.h:51
@ TRANSFER_CHAIN_MODE_EACH
Definition renesas_rx_dtc.h:50
@ TRANSFER_CHAIN_MODE_DISABLED
Definition renesas_rx_dtc.h:49
e_transfer_addr_mode
Definition renesas_rx_dtc.h:31
@ TRANSFER_ADDR_MODE_DECREMENTED
Definition renesas_rx_dtc.h:35
@ TRANSFER_ADDR_MODE_INCREMENTED
Definition renesas_rx_dtc.h:34
@ TRANSFER_ADDR_MODE_OFFSET
Definition renesas_rx_dtc.h:33
@ TRANSFER_ADDR_MODE_FIXED
Definition renesas_rx_dtc.h:32
int dtc_renesas_rx_start_transfer(const struct device *dev, uint8_t activation_irq)
Start transfers on this activation source.
enum e_transfer_chain_mode transfer_chain_mode_t
int dtc_renesas_rx_configuration(const struct device *dev, uint8_t activation_irq, transfer_info_t *p_info)
Configure the p_info state and write p_info to DTC vector table.
e_transfer_irq
Definition renesas_rx_dtc.h:43
@ TRANSFER_IRQ_EACH
Definition renesas_rx_dtc.h:45
@ TRANSFER_IRQ_END
Definition renesas_rx_dtc.h:44
e_dtc_act_status
Definition renesas_rx_dtc.h:67
@ DTC_ACT_IN_PROGRESS
Definition renesas_rx_dtc.h:70
@ DTC_ACT_CONFIGURED
Definition renesas_rx_dtc.h:69
@ DTC_ACT_IDLE
Definition renesas_rx_dtc.h:68
int dtc_renesas_rx_off(const struct device *dev)
Turn off module DTC.
e_transfer_size
Definition renesas_rx_dtc.h:54
@ TRANSFER_SIZE_4_BYTE
Definition renesas_rx_dtc.h:57
@ TRANSFER_SIZE_2_BYTE
Definition renesas_rx_dtc.h:56
@ TRANSFER_SIZE_1_BYTE
Definition renesas_rx_dtc.h:55
enum e_dtc_act_status dtc_act_status_t
struct st_transfer_info transfer_info_t
#define DTC_VECTOR_TABLE_ENTRIES
Definition renesas_rx_dtc.h:15
struct st_transfer_properties transfer_properties_t
int dtc_renesas_rx_info_get(const struct device *dev, uint8_t activation_irq, transfer_properties_t *const p_properties)
Get information about this transfer and store it into p_properties.
int dtc_renesas_rx_stop_transfer(const struct device *dev, uint8_t activation_irq)
Stop transfers on this activation source.
int dtc_renesas_rx_disable_transfer(uint8_t activation_irq)
Disable transfer in ICU on this activation source.
e_transfer_repeat_area
Definition renesas_rx_dtc.h:38
@ TRANSFER_REPEAT_AREA_SOURCE
Definition renesas_rx_dtc.h:40
@ TRANSFER_REPEAT_AREA_DESTINATION
Definition renesas_rx_dtc.h:39
int dtc_renesas_rx_enable_transfer(uint8_t activation_irq)
Enable transfer in ICU on this activation source.
enum e_transfer_irq transfer_irq_t
enum e_transfer_size transfer_size_t
enum e_transfer_addr_mode transfer_addr_mode_t
int dtc_renesas_rx_reset_transfer(const struct device *dev, uint8_t activation_irq, void const *p_src, void *p_dest, uint16_t const num_transfers)
Reset transfer on this activation source.
enum e_transfer_mode transfer_mode_t
int dtc_renesas_rx_on(const struct device *dev)
Turn on module DTC.
static ALWAYS_INLINE bool is_valid_activation_irq(uint8_t activation_irq)
Definition renesas_rx_dtc.h:229
enum e_transfer_repeat_area transfer_repeat_area_t
e_transfer_mode
Definition renesas_rx_dtc.h:60
@ TRANSFER_MODE_REPEAT
Definition renesas_rx_dtc.h:62
@ TRANSFER_MODE_BLOCK
Definition renesas_rx_dtc.h:63
@ TRANSFER_MODE_NORMAL
Definition renesas_rx_dtc.h:61
@ TRANSFER_MODE_REPEAT_BLOCK
Definition renesas_rx_dtc.h:64
void dtc_renesas_rx_get_transfer_status(const struct device *dev, struct dtc_transfer_status *status)
Get status transfer of DTC module and store it into status pointer.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:510
Definition renesas_rx_dtc.h:114
uint8_t activation_irq
Definition renesas_rx_dtc.h:115
bool in_progress
Definition renesas_rx_dtc.h:116
Definition renesas_rx_dtc.h:73
unsigned int
Definition renesas_rx_dtc.h:76
transfer_addr_mode_t src_addr_mode
Definition renesas_rx_dtc.h:89
transfer_addr_mode_t dest_addr_mode
Definition renesas_rx_dtc.h:79
struct st_transfer_info::@147024215137123322300162031257154033001257074021::@041037305166012015177273140354344105173041057016 transfer_settings_word_b
transfer_repeat_area_t repeat_area
Definition renesas_rx_dtc.h:81
void const *volatile p_src
Definition renesas_rx_dtc.h:99
transfer_size_t size
Definition renesas_rx_dtc.h:91
void *volatile p_dest
Definition renesas_rx_dtc.h:100
volatile uint16_t num_blocks
Definition renesas_rx_dtc.h:102
transfer_irq_t irq
Definition renesas_rx_dtc.h:83
transfer_chain_mode_t chain_mode
Definition renesas_rx_dtc.h:85
transfer_mode_t mode
Definition renesas_rx_dtc.h:93
volatile uint16_t length
Definition renesas_rx_dtc.h:104
uint32_t transfer_settings_word
Definition renesas_rx_dtc.h:96
Definition renesas_rx_dtc.h:107
uint32_t transfer_length_remaining
Definition renesas_rx_dtc.h:111
uint32_t block_count_max
Definition renesas_rx_dtc.h:108
uint32_t block_count_remaining
Definition renesas_rx_dtc.h:109
uint32_t transfer_length_max
Definition renesas_rx_dtc.h:110