Zephyr Project API 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
pio_rpi_pico.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Tokita, Hiroshi <tokita.hiroshi@fujitsu.com>
3 * Copyright (c) 2023 Yonatan Schachter
4 * Copyright (c) 2023 Ionut Pavel <iocapa@iocapa.com>
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8
15#ifndef ZEPHYR_DRIVERS_MISC_PIO_PICO_RPI_PIO_PICO_RPI_H_
16#define ZEPHYR_DRIVERS_MISC_PIO_PICO_RPI_PIO_PICO_RPI_H_
17
27
28#include <hardware/pio.h>
29
39#define RPI_PICO_PIO_DEFINE_PROGRAM(name, wrap_target, wrap, ...) \
40 static const uint32_t name ## _wrap_target = wrap_target; \
41 static const uint32_t name ## _wrap = wrap; \
42 static const uint16_t name ## _program_instructions[] = { \
43 __VA_ARGS__ \
44 }; \
45 static const struct pio_program name ## _program = { \
46 .instructions = name ## _program_instructions, \
47 .length = ARRAY_SIZE(name ## _program_instructions), \
48 .origin = -1, \
49 }
50
56#define RPI_PICO_PIO_GET_WRAP_TARGET(name) name ## _wrap_target
57
63#define RPI_PICO_PIO_GET_WRAP(name) name ## _wrap
64
70#define RPI_PICO_PIO_GET_PROGRAM(name) &name ## _program
71
117#define DT_RPI_PICO_PIO_PIN_BY_NAME(node_id, p_name, p_idx, g_name, g_idx) \
118 RP2_GET_PIN_NUM(DT_PROP_BY_IDX( \
119 DT_CHILD(DT_PINCTRL_BY_NAME(node_id, p_name, p_idx), g_name), pinmux, g_idx))
120
133#define DT_INST_RPI_PICO_PIO_PIN_BY_NAME(inst, p_name, p_idx, g_name, g_idx) \
134 DT_RPI_PICO_PIO_PIN_BY_NAME(DT_DRV_INST(inst), p_name, p_idx, g_name, g_idx)
135
142#define DT_INST_PIO_PIN_BY_NAME(inst, name) \
143 DT_PIO_PIN_BY_NAME(DT_DRV_INST(inst), name)
144
151PIO pio_rpi_pico_get_pio(const struct device *dev);
152
161int pio_rpi_pico_allocate_sm(const struct device *dev, size_t *sm);
162
167#endif /* ZEPHYR_DRIVERS_MISC_PIO_PICO_RPI_PIO_PICO_RPI_H_ */
GPIO Devicetree macro public API header file.
int pio_rpi_pico_allocate_sm(const struct device *dev, size_t *sm)
Allocate a state machine.
PIO pio_rpi_pico_get_pio(const struct device *dev)
Get PIO object.
Runtime device structure (in ROM) per driver instance.
Definition device.h:510