drv_spi.h 888 B

1234567891011121314151617181920212223242526272829303132
  1. #ifndef LS2K_DRV_SPI_H
  2. #define LS2K_DRV_SPI_H
  3. #include <rtthread.h>
  4. #include <rthw.h>
  5. // kseg1 byte operation
  6. #define KSEG1_STORE8(addr,val) *(volatile char *)(0xffffffffa0000000 | addr) = val
  7. #define KSEG1_LOAD8(addr) *(volatile char *)(0xffffffffa0000000 | addr)
  8. // clock configurations
  9. #define APB_MAX_SPEED 125000000U
  10. #define APB_FREQSCALE (((KSEG1_LOAD8(0xffffffffbfe104d2)>>4)&0x7)+1)
  11. // base addrs
  12. #define SPI_BASE 0x1fff0220
  13. #define PMON_ADDR 0xa1000000
  14. #define FLASH_ADDR 0x000000
  15. // bit bias
  16. #define SPCR 0x0
  17. #define SPSR 0x1
  18. #define FIFO 0x2
  19. #define TXFIFO 0x2
  20. #define RXFIFO 0x2
  21. #define SPER 0x3
  22. #define PARAM 0x4
  23. #define SOFTCS 0x5
  24. #define PARAM2 0x6
  25. #define RFEMPTY 1
  26. // SPI controller operaion macros
  27. #define SET_SPI(addr,val) KSEG1_STORE8(SPI_BASE+addr,val)
  28. #define GET_SPI(addr) KSEG1_LOAD8(SPI_BASE+addr)
  29. #endif