123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #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 MAJOR_CRYPTO 107
- #define MAJOR_IWDG 108
- #define MAJOR_IFLASH 109
- #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)
- #define I2C_MASTER_TRANSFER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 7)
- /* 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)
- #define GPIO_SET_DIR GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 3)
- /* 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)
- #define GPIO_I2C_MASTER_TRANSFER_RECV GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO_I2C, 2)
- /* Platform command */
- #define SET_PRIORITY_GROUP GENERATE_CMD(IOCTL_MAGIC, MAJOR_PLATFORM, 0)
- #define GET_PRIORITY_GROUP GENERATE_CMD(IOCTL_MAGIC, MAJOR_PLATFORM, 1)
- #define RESET_MCU GENERATE_CMD(IOCTL_MAGIC, MAJOR_PLATFORM, 2)
- #define GET_32BIT_RANDOM GENERATE_CMD(IOCTL_MAGIC, MAJOR_PLATFORM, 3)
- /* Crypto AT88SC0104C */
- #define CRYPTO_WAIT_CLOCK GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 0)
- #define CRYPTO_SEND_COMMAND GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 1)
- #define CRYPTO_RECEIVE_DATA GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 2)
- #define CRYPTO_SEND_DATA GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 3)
- #define CRYPTO_POWER_ON GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 4)
- #define CRYPTO_POWER_OFF GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 5)
- #define CRYPTO_SEND_CMD_BYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_CRYPTO, 6)
- /* IWDG */
- #define FEED_WATCHDOG GENERATE_CMD(IOCTL_MAGIC, MAJOR_IWDG, 0)
- #define START_IWATCHDOG GENERATE_CMD(IOCTL_MAGIC, MAJOR_IWDG, 1)
- #define STOP_IWATCHDOG GENERATE_CMD(IOCTL_MAGIC, MAJOR_IWDG, 2)
- /* Internal flash */
- #define IFLASH_UNLOCK GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 0)
- #define IFLASH_LOCK GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 1)
- #define IFLASH_ERASESECTOR GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 2)
- #define IFLASH_WRITEWORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 3)
- #define IFLASH_WRITEHALFWORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 4)
- #define IFLASH_WRITEBYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 5)
- #define IFLASH_WRITE_BYTES GENERATE_CMD(IOCTL_MAGIC, MAJOR_IFLASH, 6)
- typedef struct {
- uint32_t address;
- uint16_t length;
- uint8_t data[1024];
- } fmc_cpld_t;
- typedef struct {
- GPIO_TypeDef* GPIOx;
- uint16_t GPIO_pin;
- uint8_t Direct;
- GPIO_PinState Data;
- GPIO_InitTypeDef GPIO_Init;
- } gpio_t;
- typedef struct {
- uint8_t DevAddress; /* 8 bit */
- uint8_t WriteLen;
- uint8_t ReadLen;
- uint8_t Buf[256];
-
- } 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 WriteLen;
- uint8_t ReadLen;
- uint8_t Buf[256];
-
- } 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;
- typedef struct {
- uint32_t priority_group;
- uint32_t random_32bit;
- } platform_arg_t;
- typedef struct {
- uint8_t size;
- uint8_t data[256];
- uint8_t loop;
- } crypto_t;
- typedef struct {
- uint8_t sector;
- uint32_t address;
- uint32_t len;
- uint8_t data[256];
- } iflash_t;
- #endif /* __DRIVER_H__ */
|