Zephyr API 3.6.99
Loading...
Searching...
No Matches
gpio_mmio32.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Linaro Ltd.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_MMIO32_H_
8#define ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_MMIO32_H_
9
10#include <zephyr/device.h>
11#include <zephyr/drivers/gpio.h>
12#include <zephyr/types.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18extern const struct gpio_driver_api gpio_mmio32_api;
19
21 /* gpio_driver_config needs to be first */
23 volatile uint32_t *reg;
25};
26
28 /* gpio_driver_data needs to be first */
31};
32
33int gpio_mmio32_init(const struct device *dev);
34
35#ifdef CONFIG_GPIO_MMIO32
36
48#define GPIO_MMIO32_INIT(node_id, _address, _mask) \
49static struct gpio_mmio32_context _CONCAT(Z_DEVICE_DT_DEV_ID(node_id), _ctx); \
50 \
51static const struct gpio_mmio32_config _CONCAT(Z_DEVICE_DT_DEV_ID(node_id), _cfg) = { \
52 .common = { \
53 .port_pin_mask = _mask, \
54 }, \
55 .reg = (volatile uint32_t *)_address, \
56 .mask = _mask, \
57}; \
58 \
59DEVICE_DT_DEFINE(node_id, \
60 &gpio_mmio32_init, \
61 NULL, \
62 &_CONCAT(Z_DEVICE_DT_DEV_ID(node_id), _ctx), \
63 &_CONCAT(Z_DEVICE_DT_DEV_ID(node_id), _cfg), \
64 PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
65 &gpio_mmio32_api)
66
67
68#else /* CONFIG_GPIO_MMIO32 */
69
70/* Null definition for when support not configured into kernel */
71#define GPIO_MMIO32_INIT(node_id, _address, _mask)
72
73#endif
74
75#ifdef __cplusplus
76}
77#endif
78
79#endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_MMIO32_H_ */
Public APIs for GPIO drivers.
int gpio_mmio32_init(const struct device *dev)
const struct gpio_driver_api gpio_mmio32_api
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
Runtime device structure (in ROM) per driver instance.
Definition device.h:403
This structure is common to all GPIO drivers and is expected to be the first element in the object po...
Definition gpio.h:690
This structure is common to all GPIO drivers and is expected to be the first element in the driver's ...
Definition gpio.h:703
Definition gpio_mmio32.h:20
volatile uint32_t * reg
Definition gpio_mmio32.h:23
uint32_t mask
Definition gpio_mmio32.h:24
struct gpio_driver_config common
Definition gpio_mmio32.h:22
Definition gpio_mmio32.h:27
struct gpio_driver_data common
Definition gpio_mmio32.h:29
const struct gpio_mmio32_config * config
Definition gpio_mmio32.h:30