123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #ifndef __DRIVER_H__
- #define __DRIVER_H__
- #include "linux/types.h"
- #include "com_gpio.h"
- #include "stm32f429xx.h"
- #define MAJOR_PLATFORM 100
- #define MAJOR_I2C 101
- #define MAJOR_FMC 102
- #define MAJOR_GPIO 103
- #define MAJOR_SPI 104
- #define MAJOR_ADC 105
- #define MAJOR_GPIO_I2C 106
- #define IOCTL_MAGIC 'x'
- #define GENERATE_CMD(__MAGIC__, __MAJOR__, __CMD__) \
- ((0x3<<30) | (__MAJOR__<<16) | (__MAGIC__<<8) | __CMD__)
- /* I2C command */
- #define SET_I2C_SPEED GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 0)
- #define GET_I2C_SPEED GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 1)
- #define SET_I2C_ADDR GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 2)
- #define GET_I2C_ADDR GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 3)
- #define I2C_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 4)
- #define I2C_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 5)
- #define I2C_SLAVE_RECEIVE_IT GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 6)
- /* FMC command */
- #define WRITE_BYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 0)
- #define READ_BYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 1)
- #define WRITE_SHORT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 2)
- #define READ_SHORT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 3)
- #define WRITE_WORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 4)
- #define READ_WORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 5)
- #define BUS_8BIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 6)
- #define BUS_16BIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 7)
- /* SPI command */
- #define SPI_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_SPI, 0)
- #define SPI_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_SPI, 1)
- /* GPIO command */
- #define GPIO_INIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 0)
- #define GPIO_WRITE_PIN GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 1)
- #define GPIO_READ_PIN GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 2)
- /* ADC command */
- #define ADC_GET_RESULT GENERATE_CMD(IOCTL_MAGIC, MAJOR_ADC, 0)
- /* GPIO I2C command */
- #define GPIO_I2C_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO_I2C, 0)
- #define GPIO_I2C_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO_I2C, 1)
- typedef struct {
- uint32_t address;
- uint16_t length;
- uint8_t data[1024];
- } fmc_cpld_t;
- typedef struct {
- GPIO_TypeDef* GPIOx;
- uint16_t GPIO_pin;
- GPIO_PinState Data;
- GPIO_InitTypeDef GPIO_Init;
- } gpio_t;
- typedef struct {
- uint8_t DevAddress; /* 8 bit */
- uint8_t buf[100];
- uint8_t Size;
- } gpio_i2c_t;
- typedef struct {
- uint32_t ClockSpeed; /*!< Specifies the clock frequency.
- This parameter must be set to a value lower than 400kHz */
- uint32_t OwnAddress1; /*!< Specifies the first device own address.
- This parameter must be a 7-bit address. */
- uint8_t DevAddress; /* 8 bit */
- uint8_t buf[100];
- uint8_t Size;
- } i2c_arg_t;
- typedef struct {
- uint8_t buf[300];
- uint32_t Size;
- } spi_arg_t;
- typedef struct {
- uint8_t channel;
- uint16_t value[10];
- } adc_arg_t;
- #endif /* __DRIVER_H__ */
|