Zephyr Project API  3.3.0
A Scalable Open Source RTOS
bbram.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Google Inc
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_BBRAM_H
8#define ZEPHYR_INCLUDE_DRIVERS_BBRAM_H
9
10#include <errno.h>
11
12#include <zephyr/device.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
23typedef int (*bbram_api_check_invalid)(const struct device *dev);
24
30typedef int (*bbram_api_check_standby_power)(const struct device *dev);
31
37typedef int (*bbram_api_check_power)(const struct device *dev);
38
44typedef int (*bbram_api_get_size)(const struct device *dev, size_t *size);
45
51typedef int (*bbram_api_read)(const struct device *dev, size_t offset, size_t size,
52 uint8_t *data);
53
59typedef int (*bbram_api_write)(const struct device *dev, size_t offset, size_t size,
60 const uint8_t *data);
61
62__subsystem struct bbram_driver_api {
69};
70
80__syscall int bbram_check_invalid(const struct device *dev);
81
82static inline int z_impl_bbram_check_invalid(const struct device *dev)
83{
84 const struct bbram_driver_api *api =
85 (const struct bbram_driver_api *)dev->api;
86
87 if (!api->check_invalid) {
88 return -ENOTSUP;
89 }
90
91 return api->check_invalid(dev);
92}
93
103__syscall int bbram_check_standby_power(const struct device *dev);
104
105static inline int z_impl_bbram_check_standby_power(const struct device *dev)
106{
107 const struct bbram_driver_api *api =
108 (const struct bbram_driver_api *)dev->api;
109
110 if (!api->check_standby_power) {
111 return -ENOTSUP;
112 }
113
114 return api->check_standby_power(dev);
115}
116
127__syscall int bbram_check_power(const struct device *dev);
128
129static inline int z_impl_bbram_check_power(const struct device *dev)
130{
131 const struct bbram_driver_api *api =
132 (const struct bbram_driver_api *)dev->api;
133
134 if (!api->check_power) {
135 return -ENOTSUP;
136 }
137
138 return api->check_power(dev);
139}
140
148__syscall int bbram_get_size(const struct device *dev, size_t *size);
149
150static inline int z_impl_bbram_get_size(const struct device *dev, size_t *size)
151{
152 const struct bbram_driver_api *api =
153 (const struct bbram_driver_api *)dev->api;
154
155 if (!api->get_size) {
156 return -ENOTSUP;
157 }
158
159 return api->get_size(dev, size);
160}
161
171__syscall int bbram_read(const struct device *dev, size_t offset, size_t size,
172 uint8_t *data);
173
174static inline int z_impl_bbram_read(const struct device *dev, size_t offset,
175 size_t size, uint8_t *data)
176{
177 const struct bbram_driver_api *api =
178 (const struct bbram_driver_api *)dev->api;
179
180 if (!api->read) {
181 return -ENOTSUP;
182 }
183
184 return api->read(dev, offset, size, data);
185}
186
196__syscall int bbram_write(const struct device *dev, size_t offset, size_t size,
197 const uint8_t *data);
198
199static inline int z_impl_bbram_write(const struct device *dev, size_t offset,
200 size_t size, const uint8_t *data)
201{
202 const struct bbram_driver_api *api =
203 (const struct bbram_driver_api *)dev->api;
204
205 if (!api->write) {
206 return -ENOTSUP;
207 }
208
209 return api->write(dev, offset, size, data);
210}
211
218int bbram_emul_set_invalid(const struct device *dev, bool is_invalid);
219
220int bbram_emul_set_standby_power_state(const struct device *dev, bool failure);
221
222int bbram_emul_set_power_state(const struct device *dev, bool failure);
223
224#ifdef __cplusplus
225}
226#endif
227
228#include <syscalls/bbram.h>
229
230#endif /* ZEPHYR_INCLUDE_DRIVERS_BBRAM_H */
int(* bbram_api_get_size)(const struct device *dev, size_t *size)
Definition: bbram.h:44
int bbram_emul_set_standby_power_state(const struct device *dev, bool failure)
int(* bbram_api_check_power)(const struct device *dev)
Definition: bbram.h:37
int(* bbram_api_read)(const struct device *dev, size_t offset, size_t size, uint8_t *data)
Definition: bbram.h:51
int(* bbram_api_write)(const struct device *dev, size_t offset, size_t size, const uint8_t *data)
Definition: bbram.h:59
int bbram_write(const struct device *dev, size_t offset, size_t size, const uint8_t *data)
int bbram_check_invalid(const struct device *dev)
Check if BBRAM is invalid.
int bbram_check_power(const struct device *dev)
Check for V CC1 power failure.
int bbram_check_standby_power(const struct device *dev)
Check for standby (Volt SBY) power failure.
int bbram_read(const struct device *dev, size_t offset, size_t size, uint8_t *data)
int bbram_get_size(const struct device *dev, size_t *size)
int bbram_emul_set_power_state(const struct device *dev, bool failure)
int bbram_emul_set_invalid(const struct device *dev, bool is_invalid)
int(* bbram_api_check_invalid)(const struct device *dev)
Definition: bbram.h:23
int(* bbram_api_check_standby_power)(const struct device *dev)
Definition: bbram.h:30
System error numbers.
#define ENOTSUP
Definition: errno.h:115
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Definition: bbram.h:62
bbram_api_get_size get_size
Definition: bbram.h:66
bbram_api_write write
Definition: bbram.h:68
bbram_api_read read
Definition: bbram.h:67
bbram_api_check_standby_power check_standby_power
Definition: bbram.h:64
bbram_api_check_invalid check_invalid
Definition: bbram.h:63
bbram_api_check_power check_power
Definition: bbram.h:65
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
const void * api
Definition: device.h:384
static fdata_t data[2]
Definition: test_fifo_contexts.c:15