Lines Matching refs:spi
96 int32_t hal_spi_init(spi_dev_t *spi) in hal_spi_init() argument
99 spi_config_t cfg_spi = spi->config; in hal_spi_init()
106 pinmux_spi[0].pin = spi_ctx[spi->port].spi_pin_DI0; in hal_spi_init()
107 pinmux_spi[1].pin = spi_ctx[spi->port].spi_pin_CLK; in hal_spi_init()
108 pinmux_spi[2].pin = spi_ctx[spi->port].spi_pin_CS0; in hal_spi_init()
109 pinmux_spi[3].pin = spi_ctx[spi->port].spi_pin_DIO; in hal_spi_init()
111 pinmux_spi[0].function = spi_ctx[spi->port].spi_fun_DI0; in hal_spi_init()
112 pinmux_spi[1].function = spi_ctx[spi->port].spi_fun_CLK; in hal_spi_init()
113 pinmux_spi[2].function = spi_ctx[spi->port].spi_fun_CS0; in hal_spi_init()
114 pinmux_spi[3].function = spi_ctx[spi->port].spi_fun_DIO; in hal_spi_init()
162 ret = spi_ctx[spi->port].spi_open(&spi_cfg); in hal_spi_init()
165 TRACE("spi %d open error", spi->port); in hal_spi_init()
171 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) { in hal_spi_init()
172 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 1); in hal_spi_init()
174 TRACE("spi %d open succ", spi->port); in hal_spi_init()
176 if (!spi_ctx[spi->port].spi_dma_semaphore) in hal_spi_init()
178 if (spi->port == 0) in hal_spi_init()
180 spi_ctx[spi->port].spi_dma_semaphore = osSemaphoreCreate(osSemaphore(spi0_dma_semaphore), 0); in hal_spi_init()
184 spi_ctx[spi->port].spi_dma_semaphore = osSemaphoreCreate(osSemaphore(spi1_dma_semaphore), 0); in hal_spi_init()
187 if (!spi_ctx[spi->port].spi_dma_semaphore) in hal_spi_init()
192 if (!spi_ctx[spi->port].spi_mutex_id) in hal_spi_init()
194 if (spi->port == 0) in hal_spi_init()
196 spi_ctx[spi->port].spi_mutex_id = osMutexCreate((osMutex(spi0_mutex))); in hal_spi_init()
200 spi_ctx[spi->port].spi_mutex_id = osMutexCreate((osMutex(spi1_mutex))); in hal_spi_init()
203 if (!spi_ctx[spi->port].spi_mutex_id) in hal_spi_init()
241 int32_t hal_spi_send(spi_dev_t *spi, const uint8_t *data, uint16_t size, uint32_t timeout) in hal_spi_send() argument
249 if (NULL == spi || NULL == data || 0 == size) in hal_spi_send()
255 status = osMutexWait(spi_ctx[spi->port].spi_mutex_id, osWaitForever); in hal_spi_send()
264 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) in hal_spi_send()
266 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 0); in hal_spi_send()
269 if (spi->config.t_mode == SPI_TRANSFER_DMA) in hal_spi_send()
271 ret = spi_ctx[spi->port].spi_dma_send(buf, len, spi_ctx[spi->port].spi_dma_irq); in hal_spi_send()
272 if (osSemaphoreWait(spi_ctx[spi->port].spi_dma_semaphore, timeout) <= 0) in hal_spi_send()
280 ret = spi_ctx[spi->port].spi_send(buf, len); in hal_spi_send()
290 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) in hal_spi_send()
292 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 1); in hal_spi_send()
294 osMutexRelease(spi_ctx[spi->port].spi_mutex_id); in hal_spi_send()
313 int32_t hal_spi_recv(spi_dev_t *spi, uint8_t *data, uint16_t size, uint32_t timeout) in hal_spi_recv() argument
321 if (NULL == spi || NULL == data || 0 == size) in hal_spi_recv()
335 status = osMutexWait(spi_ctx[spi->port].spi_mutex_id, osWaitForever); in hal_spi_recv()
345 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) in hal_spi_recv()
347 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 0); in hal_spi_recv()
353 if (spi->config.t_mode == SPI_TRANSFER_DMA) in hal_spi_recv()
355 ret = spi_ctx[spi->port].spi_dma_recv(cmd, data, remainder, spi_ctx[spi->port].spi_dma_irq); in hal_spi_recv()
356 if (osSemaphoreWait(spi_ctx[spi->port].spi_dma_semaphore, timeout) <= 0) in hal_spi_recv()
364 ret = spi_ctx[spi->port].spi_recv(cmd, data, remainder); in hal_spi_recv()
376 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) in hal_spi_recv()
378 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 1); in hal_spi_recv()
380 osMutexRelease(spi_ctx[spi->port].spi_mutex_id); in hal_spi_recv()
386 int32_t hal_spi_send_and_recv(spi_dev_t *spi, uint8_t *tx_data, uint16_t tx_size, uint8_t *rx_data, in hal_spi_send_and_recv() argument
397 if (NULL == spi || NULL == tx_data || 0 == tx_size || NULL == rx_data || 0 == rx_size) in hal_spi_send_and_recv()
412 status = osMutexWait(spi_ctx[spi->port].spi_mutex_id, osWaitForever); in hal_spi_send_and_recv()
421 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) { in hal_spi_send_and_recv()
422 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 0); in hal_spi_send_and_recv()
429 if (spi->config.t_mode == SPI_TRANSFER_DMA) in hal_spi_send_and_recv()
431 ret = spi_ctx[spi->port].spi_dma_recv(cmd, rx_data, remainder, spi_ctx[spi->port].spi_dma_irq); in hal_spi_send_and_recv()
432 if (osSemaphoreWait(spi_ctx[spi->port].spi_dma_semaphore, 1000) <= 0) in hal_spi_send_and_recv()
440 ret = spi_ctx[spi->port].spi_recv(cmd, rx_data, remainder); in hal_spi_send_and_recv()
452 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) { in hal_spi_send_and_recv()
453 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 1); in hal_spi_send_and_recv()
456 osMutexRelease(spi_ctx[spi->port].spi_mutex_id); in hal_spi_send_and_recv()
474 int32_t hal_spi_send_recv(spi_dev_t *spi, uint8_t *tx_data, in hal_spi_send_recv() argument
493 osStatus status = osMutexWait(spi_ctx[spi->port].spi_mutex_id, osWaitForever); in hal_spi_send_recv()
501 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) { in hal_spi_send_recv()
502 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 0); in hal_spi_send_recv()
505 if (spi->config.t_mode == SPI_TRANSFER_DMA) in hal_spi_send_recv()
507 ret = spi_ctx[spi->port].spi_dma_send(tx_data, 1, spi_ctx[spi->port].spi_dma_irq); in hal_spi_send_recv()
508 if (osSemaphoreWait(spi_ctx[spi->port].spi_dma_semaphore, timeout) <= 0) in hal_spi_send_recv()
516 spi_ctx[spi->port].spi_send(tx_data, 1); in hal_spi_send_recv()
522 if (spi->config.t_mode == SPI_TRANSFER_DMA) in hal_spi_send_recv()
524 ret = spi_ctx[spi->port].spi_dma_recv(cmd, rx_data, remainder, spi_ctx[spi->port].spi_dma_irq); in hal_spi_send_recv()
525 if (osSemaphoreWait(spi_ctx[spi->port].spi_dma_semaphore, timeout) <= 0) in hal_spi_send_recv()
533 ret = spi_ctx[spi->port].spi_recv(cmd, rx_data, remainder); in hal_spi_send_recv()
545 if (spi_ctx[spi->port].spi_fun_CS0 == HAL_IOMUX_FUNC_AS_GPIO) { in hal_spi_send_recv()
546 hal_gpio_pin_set_dir(spi_ctx[spi->port].spi_pin_CS0, HAL_GPIO_DIR_OUT, 1); in hal_spi_send_recv()
548 osMutexRelease(spi_ctx[spi->port].spi_mutex_id); in hal_spi_send_recv()
565 int32_t hal_spi_send_and_send(spi_dev_t *spi, uint8_t *tx1_data, uint16_t tx1_size, uint8_t *tx2_da… in hal_spi_send_and_send() argument
569 void *cmd = spi->priv; in hal_spi_send_and_send()
571 ret = hal_spi_send(spi, tx1_data, tx1_size, timeout); in hal_spi_send_and_send()
574 ret = hal_spi_send(spi, tx2_data, tx2_size, timeout); in hal_spi_send_and_send()
595 int32_t hal_spi_finalize(spi_dev_t *spi) in hal_spi_finalize() argument
598 spi_config_t cfg_spi = spi->config; in hal_spi_finalize()
599 ret = spi_ctx[spi->port].spi_close(cfg_spi.cs); in hal_spi_finalize()