Lines Matching refs:spi
11 static inline void spi_reset(spi_inst_t *spi) { in spi_reset() argument
12 invalid_params_if(HARDWARE_SPI, spi != spi0 && spi != spi1); in spi_reset()
13 reset_block_num(spi == spi0 ? RESET_SPI0 : RESET_SPI1); in spi_reset()
16 static inline void spi_unreset(spi_inst_t *spi) { in spi_unreset() argument
17 invalid_params_if(HARDWARE_SPI, spi != spi0 && spi != spi1); in spi_unreset()
18 unreset_block_num_wait_blocking(spi == spi0 ? RESET_SPI0 : RESET_SPI1); in spi_unreset()
21 uint spi_init(spi_inst_t *spi, uint baudrate) { in spi_init() argument
22 spi_reset(spi); in spi_init()
23 spi_unreset(spi); in spi_init()
25 uint baud = spi_set_baudrate(spi, baudrate); in spi_init()
26 spi_set_format(spi, 8, SPI_CPOL_0, SPI_CPHA_0, SPI_MSB_FIRST); in spi_init()
28 hw_set_bits(&spi_get_hw(spi)->dmacr, SPI_SSPDMACR_TXDMAE_BITS | SPI_SSPDMACR_RXDMAE_BITS); in spi_init()
31 hw_set_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_SSE_BITS); in spi_init()
36 void spi_deinit(spi_inst_t *spi) { in spi_deinit() argument
37 hw_clear_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_SSE_BITS); in spi_deinit()
38 hw_clear_bits(&spi_get_hw(spi)->dmacr, SPI_SSPDMACR_TXDMAE_BITS | SPI_SSPDMACR_RXDMAE_BITS); in spi_deinit()
39 spi_reset(spi); in spi_deinit()
42 uint spi_set_baudrate(spi_inst_t *spi, uint baudrate) { in spi_set_baudrate() argument
48 uint32_t enable_mask = spi_get_hw(spi)->cr1 & SPI_SSPCR1_SSE_BITS; in spi_set_baudrate()
49 hw_clear_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_SSE_BITS); in spi_set_baudrate()
66 spi_get_hw(spi)->cpsr = prescale; in spi_set_baudrate()
67 … hw_write_masked(&spi_get_hw(spi)->cr0, (postdiv - 1) << SPI_SSPCR0_SCR_LSB, SPI_SSPCR0_SCR_BITS); in spi_set_baudrate()
70 hw_set_bits(&spi_get_hw(spi)->cr1, enable_mask); in spi_set_baudrate()
76 uint spi_get_baudrate(const spi_inst_t *spi) { in spi_get_baudrate() argument
77 uint prescale = spi_get_const_hw(spi)->cpsr; in spi_get_baudrate()
78 uint postdiv = ((spi_get_const_hw(spi)->cr0 & SPI_SSPCR0_SCR_BITS) >> SPI_SSPCR0_SCR_LSB) + 1; in spi_get_baudrate()
84 int __not_in_flash_func(spi_write_read_blocking)(spi_inst_t *spi, const uint8_t *src, uint8_t *dst,… in __not_in_flash_func()
93 if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { in __not_in_flash_func()
94 spi_get_hw(spi)->dr = (uint32_t) *src++; in __not_in_flash_func()
97 if (rx_remaining && spi_is_readable(spi)) { in __not_in_flash_func()
98 *dst++ = (uint8_t) spi_get_hw(spi)->dr; in __not_in_flash_func()
107 int __not_in_flash_func(spi_write_blocking)(spi_inst_t *spi, const uint8_t *src, size_t len) { in __not_in_flash_func()
113 while (!spi_is_writable(spi)) in __not_in_flash_func()
115 spi_get_hw(spi)->dr = (uint32_t)src[i]; in __not_in_flash_func()
119 while (spi_is_readable(spi)) in __not_in_flash_func()
120 (void)spi_get_hw(spi)->dr; in __not_in_flash_func()
121 while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS) in __not_in_flash_func()
123 while (spi_is_readable(spi)) in __not_in_flash_func()
124 (void)spi_get_hw(spi)->dr; in __not_in_flash_func()
127 spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS; in __not_in_flash_func()
136 int __not_in_flash_func(spi_read_blocking)(spi_inst_t *spi, uint8_t repeated_tx_data, uint8_t *dst,… in __not_in_flash_func()
142 if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { in __not_in_flash_func()
143 spi_get_hw(spi)->dr = (uint32_t) repeated_tx_data; in __not_in_flash_func()
146 if (rx_remaining && spi_is_readable(spi)) { in __not_in_flash_func()
147 *dst++ = (uint8_t) spi_get_hw(spi)->dr; in __not_in_flash_func()
156 int __not_in_flash_func(spi_write16_read16_blocking)(spi_inst_t *spi, const uint16_t *src, uint16_t… in __not_in_flash_func()
164 if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { in __not_in_flash_func()
165 spi_get_hw(spi)->dr = (uint32_t) *src++; in __not_in_flash_func()
168 if (rx_remaining && spi_is_readable(spi)) { in __not_in_flash_func()
169 *dst++ = (uint16_t) spi_get_hw(spi)->dr; in __not_in_flash_func()
178 int __not_in_flash_func(spi_write16_blocking)(spi_inst_t *spi, const uint16_t *src, size_t len) { in __not_in_flash_func()
183 while (!spi_is_writable(spi)) in __not_in_flash_func()
185 spi_get_hw(spi)->dr = (uint32_t)src[i]; in __not_in_flash_func()
188 while (spi_is_readable(spi)) in __not_in_flash_func()
189 (void)spi_get_hw(spi)->dr; in __not_in_flash_func()
190 while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS) in __not_in_flash_func()
192 while (spi_is_readable(spi)) in __not_in_flash_func()
193 (void)spi_get_hw(spi)->dr; in __not_in_flash_func()
196 spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS; in __not_in_flash_func()
203 int __not_in_flash_func(spi_read16_blocking)(spi_inst_t *spi, uint16_t repeated_tx_data, uint16_t *… in __not_in_flash_func()
209 if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { in __not_in_flash_func()
210 spi_get_hw(spi)->dr = (uint32_t) repeated_tx_data; in __not_in_flash_func()
213 if (rx_remaining && spi_is_readable(spi)) { in __not_in_flash_func()
214 *dst++ = (uint16_t) spi_get_hw(spi)->dr; in __not_in_flash_func()