kosmos/source/firmware/kernel/interface/driver.h

40 lines
947 B
C
Raw Normal View History

2016-07-28 19:02:54 +00:00
/*
* driver.h
*
* Created on: Jul 27, 2016
* Author: tkl
*/
#ifndef SOURCE_FIRMWARE_KERNEL_DRIVER_INCLUDE_DRIVER_H_
#define SOURCE_FIRMWARE_KERNEL_DRIVER_INCLUDE_DRIVER_H_
#define IOCTL_PWM_SET_DUTY_CYCLE 0
#define IOCTL_PWM_GET_PERIOD_NS 1
#define IOCTL_PWM_GET_PULSE_WIDTH_NS 2
2016-08-09 10:52:38 +00:00
2016-07-28 19:02:54 +00:00
enum driver_type {
DRIVER_TYPE_ADC,
DRIVER_TYPE_GPIO,
DRIVER_TYPE_I2C,
2016-08-09 10:52:38 +00:00
DRIVER_TYPE_PWM,
2016-07-28 19:02:54 +00:00
DRIVER_TYPE_RTC,
DRIVER_TYPE_SPI,
DRIVER_TYPE_UART
};
2016-08-15 20:25:35 +00:00
#pragma pack(push)
#pragma pack(1)
2016-07-28 19:02:54 +00:00
struct driver {
enum driver_type driver_type;
const void *device_driver;
};
2016-08-15 20:25:35 +00:00
#pragma pack(pop)
2016-07-28 19:02:54 +00:00
2016-08-15 20:25:35 +00:00
int drv_open(const struct driver *driver);
int drv_close(const struct driver *driver);
int drv_read(const struct driver *driver, char *buffer, int len);
int drv_write(const struct driver *driver, const char *buffer, int len);
int drv_ioctl(const struct driver *driver, unsigned int cmd, const void *data);
2016-07-28 19:02:54 +00:00
#endif /* SOURCE_FIRMWARE_KERNEL_DRIVER_INCLUDE_DRIVER_H_ */