00001
00039 #ifndef CHIP_SPI_H_INCLUDED
00040 #define CHIP_SPI_H_INCLUDED
00041
00042 #include <regs/xmega_spi.h>
00043 #include <chip/memory-map.h>
00044 #include <clk/sys.h>
00045
00071 #define SPI_ID_UART_FIRST 4
00072 #define SPI_ID_LAST 11
00073
00074 #if defined(CONFIG_SPI0) || defined(CONFIG_SPI1) || \
00075 defined(CONFIG_SPI2) || defined(CONFIG_SPI3)
00076 # define SPI_ID_NATIVE_IS_ENABLED true
00077 #else
00078 # define SPI_ID_NATIVE_IS_ENABLED false
00079 #endif
00080
00081 #if defined(CONFIG_SPI4) || defined(CONFIG_SPI5) || \
00082 defined(CONFIG_SPI6) || defined(CONFIG_SPI7) || \
00083 defined(CONFIG_SPI8) || defined(CONFIG_SPI9) || \
00084 defined(CONFIG_SPI10) || defined(CONFIG_SPI11)
00085 # define SPI_ID_UART_IS_ENABLED true
00086 #else
00087 # define SPI_ID_UART_IS_ENABLED false
00088 #endif
00089
00090 static inline void *spi_get_base(uint8_t spi_id)
00091 {
00092 switch (spi_id) {
00093 #ifdef CONFIG_SPI0
00094 case 0:
00095 return (void *)SPI0_BASE;
00096 #endif
00097 #ifdef CONFIG_SPI1
00098 case 1:
00099 return (void *)SPI1_BASE;
00100 #endif
00101 #ifdef CONFIG_SPI2
00102 case 2:
00103 return (void *)SPI2_BASE;
00104 #endif
00105 #ifdef CONFIG_SPI3
00106 case 3:
00107 return (void *)SPI3_BASE;
00108 #endif
00109 default:
00110 unhandled_case(spi_id);
00111 return NULL;
00112 }
00113 }
00114
00115 static inline uint8_t spi_get_sysclk_port(uint8_t spi_id)
00116 {
00117 switch (spi_id) {
00118 case 0:
00119 return SYSCLK_PORT_C;
00120 case 1:
00121 return SYSCLK_PORT_D;
00122 case 2:
00123 return SYSCLK_PORT_E;
00124 case 3:
00125 return SYSCLK_PORT_F;
00126 default:
00127 unhandled_case(spi_id);
00128 return 0;
00129 }
00130 }
00131
00132 #include <spi/spi_xmega.h>
00133 #include <spi/spi_mega_xmega.h>
00134
00137 #define spi_master_type0 SPI_MASTER_NATIVE_TYPE
00138 #define spi_master_type1 SPI_MASTER_NATIVE_TYPE
00139 #define spi_master_type2 SPI_MASTER_NATIVE_TYPE
00140 #define spi_master_type3 SPI_MASTER_NATIVE_TYPE
00141
00142
00145 #define spi_device_type0 SPI_DEVICE_NATIVE_TYPE
00146 #define spi_device_type1 SPI_DEVICE_NATIVE_TYPE
00147 #define spi_device_type2 SPI_DEVICE_NATIVE_TYPE
00148 #define spi_device_type3 SPI_DEVICE_NATIVE_TYPE
00149
00150
00152 #endif