driver.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef __DRIVER_H__
  2. #define __DRIVER_H__
  3. #include "linux/types.h"
  4. #include "com_gpio.h"
  5. #include "stm32f429xx.h"
  6. #define MAJOR_PLATFORM 100
  7. #define MAJOR_I2C 101
  8. #define MAJOR_FMC 102
  9. #define MAJOR_GPIO 103
  10. #define MAJOR_SPI 104
  11. #define MAJOR_ADC 105
  12. #define MAJOR_GPIO_I2C 106
  13. #define IOCTL_MAGIC 'x'
  14. #define GENERATE_CMD(__MAGIC__, __MAJOR__, __CMD__) \
  15. ((0x3<<30) | (__MAJOR__<<16) | (__MAGIC__<<8) | __CMD__)
  16. /* I2C command */
  17. #define SET_I2C_SPEED GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 0)
  18. #define GET_I2C_SPEED GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 1)
  19. #define SET_I2C_ADDR GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 2)
  20. #define GET_I2C_ADDR GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 3)
  21. #define I2C_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 4)
  22. #define I2C_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 5)
  23. #define I2C_SLAVE_RECEIVE_IT GENERATE_CMD(IOCTL_MAGIC, MAJOR_I2C, 6)
  24. /* FMC command */
  25. #define WRITE_BYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 0)
  26. #define READ_BYTE GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 1)
  27. #define WRITE_SHORT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 2)
  28. #define READ_SHORT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 3)
  29. #define WRITE_WORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 4)
  30. #define READ_WORD GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 5)
  31. #define BUS_8BIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 6)
  32. #define BUS_16BIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_FMC, 7)
  33. /* SPI command */
  34. #define SPI_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_SPI, 0)
  35. #define SPI_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_SPI, 1)
  36. /* GPIO command */
  37. #define GPIO_INIT GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 0)
  38. #define GPIO_WRITE_PIN GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 1)
  39. #define GPIO_READ_PIN GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO, 2)
  40. /* ADC command */
  41. #define ADC_GET_RESULT GENERATE_CMD(IOCTL_MAGIC, MAJOR_ADC, 0)
  42. /* GPIO I2C command */
  43. #define GPIO_I2C_MASTER_TRANSFER GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO_I2C, 0)
  44. #define GPIO_I2C_MASTER_RECEIVE GENERATE_CMD(IOCTL_MAGIC, MAJOR_GPIO_I2C, 1)
  45. typedef struct {
  46. uint32_t address;
  47. uint16_t length;
  48. uint8_t data[1024];
  49. } fmc_cpld_t;
  50. typedef struct {
  51. GPIO_TypeDef* GPIOx;
  52. uint16_t GPIO_pin;
  53. GPIO_PinState Data;
  54. GPIO_InitTypeDef GPIO_Init;
  55. } gpio_t;
  56. typedef struct {
  57. uint8_t DevAddress; /* 8 bit */
  58. uint8_t buf[100];
  59. uint8_t Size;
  60. } gpio_i2c_t;
  61. typedef struct {
  62. uint32_t ClockSpeed; /*!< Specifies the clock frequency.
  63. This parameter must be set to a value lower than 400kHz */
  64. uint32_t OwnAddress1; /*!< Specifies the first device own address.
  65. This parameter must be a 7-bit address. */
  66. uint8_t DevAddress; /* 8 bit */
  67. uint8_t buf[100];
  68. uint8_t Size;
  69. } i2c_arg_t;
  70. typedef struct {
  71. uint8_t buf[300];
  72. uint32_t Size;
  73. } spi_arg_t;
  74. typedef struct {
  75. uint8_t channel;
  76. uint16_t value[10];
  77. } adc_arg_t;
  78. #endif /* __DRIVER_H__ */