bcm63xx_dev_spi.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef BCM63XX_DEV_SPI_H
  2. #define BCM63XX_DEV_SPI_H
  3. #include <linux/types.h>
  4. #include <bcm63xx_io.h>
  5. #include <bcm63xx_regs.h>
  6. int __init bcm63xx_spi_register(void);
  7. struct bcm63xx_spi_pdata {
  8. unsigned int fifo_size;
  9. unsigned int msg_type_shift;
  10. unsigned int msg_ctl_width;
  11. int bus_num;
  12. int num_chipselect;
  13. };
  14. enum bcm63xx_regs_spi {
  15. SPI_CMD,
  16. SPI_INT_STATUS,
  17. SPI_INT_MASK_ST,
  18. SPI_INT_MASK,
  19. SPI_ST,
  20. SPI_CLK_CFG,
  21. SPI_FILL_BYTE,
  22. SPI_MSG_TAIL,
  23. SPI_RX_TAIL,
  24. SPI_MSG_CTL,
  25. SPI_MSG_DATA,
  26. SPI_RX_DATA,
  27. };
  28. #define __GEN_SPI_REGS_TABLE(__cpu) \
  29. [SPI_CMD] = SPI_## __cpu ##_CMD, \
  30. [SPI_INT_STATUS] = SPI_## __cpu ##_INT_STATUS, \
  31. [SPI_INT_MASK_ST] = SPI_## __cpu ##_INT_MASK_ST, \
  32. [SPI_INT_MASK] = SPI_## __cpu ##_INT_MASK, \
  33. [SPI_ST] = SPI_## __cpu ##_ST, \
  34. [SPI_CLK_CFG] = SPI_## __cpu ##_CLK_CFG, \
  35. [SPI_FILL_BYTE] = SPI_## __cpu ##_FILL_BYTE, \
  36. [SPI_MSG_TAIL] = SPI_## __cpu ##_MSG_TAIL, \
  37. [SPI_RX_TAIL] = SPI_## __cpu ##_RX_TAIL, \
  38. [SPI_MSG_CTL] = SPI_## __cpu ##_MSG_CTL, \
  39. [SPI_MSG_DATA] = SPI_## __cpu ##_MSG_DATA, \
  40. [SPI_RX_DATA] = SPI_## __cpu ##_RX_DATA,
  41. static inline unsigned long bcm63xx_spireg(enum bcm63xx_regs_spi reg)
  42. {
  43. extern const unsigned long *bcm63xx_regs_spi;
  44. return bcm63xx_regs_spi[reg];
  45. }
  46. #endif /* BCM63XX_DEV_SPI_H */