Zephyr Project API 4.1.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#ifndef ZEPHYR_INCLUDE_DRIVERS_MISC_RENESAS_ELC_H_
13#define ZEPHYR_INCLUDE_DRIVERS_MISC_RENESAS_ELC_H_
14
22#include <stdint.h>
23#include <zephyr/sys/slist.h>
24#include <zephyr/device.h>
25#include <zephyr/kernel.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
50
59#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_NAME(node_id, name) \
60 DEVICE_DT_GET(DT_PHANDLE_BY_NAME(node_id, renesas_elcs, name))
61
70#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_IDX(node_id, idx) \
71 DEVICE_DT_GET(DT_PHANDLE_BY_IDX(node_id, renesas_elcs, idx))
72
82#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_NAME_OR_NULL(node_id, name) \
83 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_NAME(node_id, renesas_elcs, name))
84
94#define RENESAS_ELC_DT_SPEC_DEVICE_GET_BY_IDX_OR_NULL(node_id, idx) \
95 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_IDX(node_id, renesas_elcs, idx))
96
106#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_NAME(inst, name) \
107 DEVICE_DT_GET(DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), renesas_elcs, name))
108
118#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_IDX(inst, idx) \
119 DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), renesas_elcs, idx))
120
130#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_NAME_OR_NULL(inst, name) \
131 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), renesas_elcs, name))
132
142#define RENESAS_ELC_DT_SPEC_DEVICE_INST_GET_BY_IDX_OR_NULL(inst, idx) \
143 DEVICE_DT_GET_OR_NULL(DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), renesas_elcs, idx))
144
153#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(node_id, name) \
154 DT_PHA_BY_NAME(node_id, renesas_elcs, name, peripheral)
155
164#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(node_id, idx) \
165 DT_PHA_BY_IDX(node_id, renesas_elcs, idx, peripheral)
166
177#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME_OR(node_id, name, default_value) \
178 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
179 (RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(node_id, name)), \
180 (default_value))
181
192#define RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX_OR(node_id, idx, default_value) \
193 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
194 (RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(node_id, idx)), \
195 (default_value))
196
205#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_NAME(inst, name) \
206 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME(DT_DRV_INST(inst), name)
207
216#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_IDX(inst, idx) \
217 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX(DT_DRV_INST(inst), idx)
218
229#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_NAME_OR(inst, name, default_value) \
230 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_NAME_OR(DT_DRV_INST(inst), name, default_value)
231
242#define RENESAS_ELC_DT_SPEC_PERIPHERAL_INST_GET_BY_IDX_OR(inst, idx, default_value) \
243 RENESAS_ELC_DT_SPEC_PERIPHERAL_GET_BY_IDX_OR(DT_DRV_INST(inst), idx, default_value)
244
253#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(node_id, name) \
254 DT_PHA_BY_NAME(node_id, renesas_elcs, name, event)
255
264#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(node_id, idx) \
265 DT_PHA_BY_IDX(node_id, renesas_elcs, idx, event)
266
277#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME_OR(node_id, name, default_value) \
278 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
279 (RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(node_id, name)), \
280 (default_value))
281
292#define RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX_OR(node_id, idx, default_value) \
293 COND_CODE_1(DT_NODE_HAS_PROP(node_id, renesas_elcs), \
294 (RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(node_id, idx)), \
295 (default_value))
296
305#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_NAME(inst, name) \
306 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME(DT_DRV_INST(inst), name)
307
316#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_IDX(inst, idx) \
317 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX(DT_DRV_INST(inst), idx)
318
329#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_NAME_OR(inst, name, default_value) \
330 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_NAME_OR(DT_DRV_INST(inst), name, default_value)
331
342#define RENESAS_ELC_DT_SPEC_EVENT_INST_GET_BY_IDX_OR(inst, idx, default_value) \
343 RENESAS_ELC_DT_SPEC_EVENT_GET_BY_IDX_OR(DT_DRV_INST(inst), idx, default_value)
344
352__subsystem struct renesas_elc_driver_api {
353 int (*software_event_generate)(const struct device *dev, uint32_t event);
354 int (*link_set)(const struct device *dev, uint32_t peripheral, uint32_t signal);
355 int (*link_break)(const struct device *dev, uint32_t peripheral);
356 int (*enable)(const struct device *dev);
357 int (*disable)(const struct device *dev);
358};
359
376__syscall int renesas_elc_software_event_generate(const struct device *dev, uint32_t event);
377
378static inline int z_impl_renesas_elc_software_event_generate(const struct device *dev,
379 uint32_t event)
380{
381 return DEVICE_API_GET(renesas_elc, dev)->software_event_generate(dev, event);
382}
383
397__syscall int renesas_elc_link_set(const struct device *dev, uint32_t peripheral, uint32_t event);
398
399static inline int z_impl_renesas_elc_link_set(const struct device *dev, uint32_t peripheral,
400 uint32_t event)
401{
402 return DEVICE_API_GET(renesas_elc, dev)->link_set(dev, peripheral, event);
403}
404
416__syscall int renesas_elc_link_break(const struct device *dev, uint32_t peripheral);
417
418static inline int z_impl_renesas_elc_link_break(const struct device *dev, uint32_t peripheral)
419{
420 return DEVICE_API_GET(renesas_elc, dev)->link_break(dev, peripheral);
421}
422
433__syscall int renesas_elc_enable(const struct device *dev);
434
435static inline int z_impl_renesas_elc_enable(const struct device *dev)
436{
437 return DEVICE_API_GET(renesas_elc, dev)->enable(dev);
438}
439
450__syscall int renesas_elc_disable(const struct device *dev);
451
452static inline int z_impl_renesas_elc_disable(const struct device *dev)
453{
454 return DEVICE_API_GET(renesas_elc, dev)->disable(dev);
455}
456
461#ifdef __cplusplus
462}
463#endif
464
465#include <zephyr/syscalls/renesas_elc.h>
466
467#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.
sighandler_t signal(int signo, sighandler_t handler)
Public kernel APIs.
__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:42
uint32_t peripheral
Renesas ELC peripheral ID.
Definition renesas_elc.h:46
uint32_t event
Renesas ELC event ID.
Definition renesas_elc.h:48
const struct device * dev
Renesas ELC device instance.
Definition renesas_elc.h:44