Zephyr Project API 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ps2.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
13#ifndef ZEPHYR_INCLUDE_DRIVERS_PS2_H_
14#define ZEPHYR_INCLUDE_DRIVERS_PS2_H_
15
16#include <errno.h>
17#include <zephyr/types.h>
18#include <stddef.h>
19#include <zephyr/device.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
42typedef void (*ps2_callback_t)(const struct device *dev, uint8_t data);
43
51typedef int (*ps2_config_t)(const struct device *dev,
52 ps2_callback_t callback_isr);
53typedef int (*ps2_read_t)(const struct device *dev, uint8_t *value);
54typedef int (*ps2_write_t)(const struct device *dev, uint8_t value);
55typedef int (*ps2_disable_callback_t)(const struct device *dev);
56typedef int (*ps2_enable_callback_t)(const struct device *dev);
57
58__subsystem struct ps2_driver_api {
59 ps2_config_t config;
60 ps2_read_t read;
61 ps2_write_t write;
62 ps2_disable_callback_t disable_callback;
63 ps2_enable_callback_t enable_callback;
64};
79__syscall int ps2_config(const struct device *dev,
80 ps2_callback_t callback_isr);
81
82static inline int z_impl_ps2_config(const struct device *dev,
83 ps2_callback_t callback_isr)
84{
85 const struct ps2_driver_api *api =
86 (struct ps2_driver_api *)dev->api;
87
88 return api->config(dev, callback_isr);
89}
90
100__syscall int ps2_write(const struct device *dev, uint8_t value);
101
102static inline int z_impl_ps2_write(const struct device *dev, uint8_t value)
103{
104 const struct ps2_driver_api *api =
105 (const struct ps2_driver_api *)dev->api;
106
107 return api->write(dev, value);
108}
109
118__syscall int ps2_read(const struct device *dev, uint8_t *value);
119
120static inline int z_impl_ps2_read(const struct device *dev, uint8_t *value)
121{
122 const struct ps2_driver_api *api =
123 (const struct ps2_driver_api *)dev->api;
124
125 return api->read(dev, value);
126}
127
135__syscall int ps2_enable_callback(const struct device *dev);
136
137static inline int z_impl_ps2_enable_callback(const struct device *dev)
138{
139 const struct ps2_driver_api *api =
140 (const struct ps2_driver_api *)dev->api;
141
142 if (api->enable_callback == NULL) {
143 return -ENOSYS;
144 }
145
146 return api->enable_callback(dev);
147}
148
156__syscall int ps2_disable_callback(const struct device *dev);
157
158static inline int z_impl_ps2_disable_callback(const struct device *dev)
159{
160 const struct ps2_driver_api *api =
161 (const struct ps2_driver_api *)dev->api;
162
163 if (api->disable_callback == NULL) {
164 return -ENOSYS;
165 }
166
167 return api->disable_callback(dev);
168}
169
170#ifdef __cplusplus
171}
172#endif
173
178#include <zephyr/syscalls/ps2.h>
179
180#endif /* ZEPHYR_INCLUDE_DRIVERS_PS2_H_ */
System error numbers.
int ps2_config(const struct device *dev, ps2_callback_t callback_isr)
Configure a ps2 instance.
int ps2_enable_callback(const struct device *dev)
Enables callback.
int ps2_read(const struct device *dev, uint8_t *value)
Read slave-to-host values from PS/2 device.
void(* ps2_callback_t)(const struct device *dev, uint8_t data)
PS/2 callback called when user types or click a mouse.
Definition ps2.h:42
int ps2_disable_callback(const struct device *dev)
Disables callback.
int ps2_write(const struct device *dev, uint8_t value)
Write to PS/2 device.
#define ENOSYS
Function not implemented.
Definition errno.h:82
#define NULL
Definition iar_missing_defs.h:20
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition device.h:510
void * data
Address of the device instance private data.
Definition device.h:520
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:516