Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
renesas_elc.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
12
13#ifndef ZEPHYR_INCLUDE_DRIVERS_MISC_RENESAS_ELC_H_
14#define ZEPHYR_INCLUDE_DRIVERS_MISC_RENESAS_ELC_H_
15
22
23#include <stdint.h>
24#include <zephyr/sys/slist.h>
25#include <zephyr/device.h>
26#include <zephyr/kernel.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
51
60#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_NAME(node_id, name) \
61 DEVICE_DT_GET(DT_PHANDLE_BY_NAME(node_id, renesas_elcs, name))
62
71#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_IDX(node_id, idx) \
72 DEVICE_DT_GET(DT_PHANDLE_BY_IDX(node_id, renesas_elcs, idx))
73
83#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_NAME_OR_NULL(node_id, name) \
84 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_NAME(node_id, renesas_elcs, name))
85
95#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_IDX_OR_NULL(node_id, idx) \
96 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_IDX(node_id, renesas_elcs, idx))
97
107#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_NAME(inst, name) \
108 DEVICE_DT_GET(DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), renesas_elcs, name))
109
119#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_IDX(inst, idx) \
120 DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), renesas_elcs, idx))
121
131#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_NAME_OR_NULL(inst, name) \
132 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), renesas_elcs, name))
133
143#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_IDX_OR_NULL(inst, idx) \
144 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), renesas_elcs, idx))
145
154#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(node_id, name) \
155 DT_PHA_BY_NAME(node_id, renesas_elcs, name, peripheral)
156
165#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(node_id, idx) \
166 DT_PHA_BY_IDX(node_id, renesas_elcs, idx, peripheral)
167
178#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME_OR(node_id, name, default_value) \
179 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
180 (RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(node_id, name)), \
181 (default_value))
182
193#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX_OR(node_id, idx, default_value) \
194 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
195 (RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(node_id, idx)), \
196 (default_value))
197
206#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_NAME(inst, name) \
207 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(DT_DRV_INST(inst), name)
208
217#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_IDX(inst, idx) \
218 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(DT_DRV_INST(inst), idx)
219
230#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_NAME_OR(inst, name, default_value) \
231 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME_OR(DT_DRV_INST(inst), name, default_value)
232
243#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_IDX_OR(inst, idx, default_value) \
244 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX_OR(DT_DRV_INST(inst), idx, default_value)
245
254#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(node_id, name) \
255 DT_PHA_BY_NAME(node_id, renesas_elcs, name, event)
256
265#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(node_id, idx) \
266 DT_PHA_BY_IDX(node_id, renesas_elcs, idx, event)
267
278#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME_OR(node_id, name, default_value) \
279 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
280 (RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(node_id, name)), \
281 (default_value))
282
293#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX_OR(node_id, idx, default_value) \
294 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
295 (RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(node_id, idx)), \
296 (default_value))
297
306#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_NAME(inst, name) \
307 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(DT_DRV_INST(inst), name)
308
317#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_IDX(inst, idx) \
318 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(DT_DRV_INST(inst), idx)
319
330#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_NAME_OR(inst, name, default_value) \
331 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME_OR(DT_DRV_INST(inst), name, default_value)
332
343#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_IDX_OR(inst, idx, default_value) \
344 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX_OR(DT_DRV_INST(inst), idx, default_value)
345
353__subsystem struct renesas_elc_driver_api {
354 int (*software_event_generate)(const struct device *dev, uint32_t event);
355 int (*link_set)(const struct device *dev, uint32_t peripheral, uint32_t signal);
356 int (*link_break)(const struct device *dev, uint32_t peripheral);
357 int (*enable)(const struct device *dev);
358 int (*disable)(const struct device *dev);
359};
360
364
377__syscall int renesas_elc_software_event_generate(const struct device *dev, uint32_t event);
378
379static inline int z_impl_renesas_elc_software_event_generate(const struct device *dev,
380 uint32_t event)
381{
382 return DEVICE_API_GET(renesas_elc, dev)->software_event_generate(dev, event);
383}
384
398__syscall int renesas_elc_link_set(const struct device *dev, uint32_t peripheral, uint32_t event);
399
400static inline int z_impl_renesas_elc_link_set(const struct device *dev, uint32_t peripheral,
401 uint32_t event)
402{
403 return DEVICE_API_GET(renesas_elc, dev)->link_set(dev, peripheral, event);
404}
405
417__syscall int renesas_elc_link_break(const struct device *dev, uint32_t peripheral);
418
419static inline int z_impl_renesas_elc_link_break(const struct device *dev, uint32_t peripheral)
420{
421 return DEVICE_API_GET(renesas_elc, dev)->link_break(dev, peripheral);
422}
423
434__syscall int renesas_elc_enable(const struct device *dev);
435
436static inline int z_impl_renesas_elc_enable(const struct device *dev)
437{
438 return DEVICE_API_GET(renesas_elc, dev)->enable(dev);
439}
440
451__syscall int renesas_elc_disable(const struct device *dev);
452
453static inline int z_impl_renesas_elc_disable(const struct device *dev)
454{
455 return DEVICE_API_GET(renesas_elc, dev)->disable(dev);
456}
457
461
462#ifdef __cplusplus
463}
464#endif
465
466#include <zephyr/syscalls/renesas_elc.h>
467
468#endif /* ZEPHYR_INCLUDE_DRIVERS_MISC_RENESAS_ELC_H_ */
#define DEVICE_API_GET(_class, _dev)
Expands to the pointer of a device's API for a given class.
Definition device.h:1350
int renesas_elc_link_set(const struct device *dev, uint32_t peripheral, uint32_t event)
Create a single event link.
int renesas_elc_link_break(const struct device *dev, uint32_t peripheral)
Break an event link.
int renesas_elc_disable(const struct device *dev)
Disable the operation of the Event Link Controller.
int renesas_elc_software_event_generate(const struct device *dev, uint32_t event)
Generate a software event in the Event Link Controller.
int renesas_elc_enable(const struct device *dev)
Enable the operation of the Event Link Controller.
Public kernel APIs.
sighandler_t signal(int sig, sighandler_t handler)
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
Runtime device structure (in ROM) per driver instance.
Definition device.h:510
Container for Renesas ELC information specified in devicetree.
Definition renesas_elc.h:43
uint32_t peripheral
Renesas ELC peripheral ID.
Definition renesas_elc.h:47
uint32_t event
Renesas ELC event ID.
Definition renesas_elc.h:49
const struct device * dev
Renesas ELC device instance.
Definition renesas_elc.h:45