mirror of
https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_RTL8710BX_ALIOS_SDK.git
synced 2026-08-28 01:01:34 +00:00
rel_1.6.0 init
This commit is contained in:
commit
27b3e2883d
19359 changed files with 8093121 additions and 0 deletions
100
Living_SDK/board/mk3165/mico_spi.c
Normal file
100
Living_SDK/board/mk3165/mico_spi.c
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "mico_platform.h"
|
||||
|
||||
|
||||
extern platform_spi_driver_t platform_spi_drivers[];
|
||||
extern const platform_gpio_t platform_gpio_pins[];
|
||||
extern const platform_spi_t platform_spi_peripherals[];
|
||||
|
||||
|
||||
OSStatus MicoSpiInitialize( const platforom_spi_device_t* spi )
|
||||
{
|
||||
platform_spi_config_t config;
|
||||
OSStatus err = kNoErr;
|
||||
|
||||
if ( spi->port >= MICO_SPI_NONE )
|
||||
return kUnsupportedErr;
|
||||
|
||||
#ifdef MICO_WIFI_SHARE_SPI_BUS
|
||||
if( platform_spi_peripherals[spi->port].port == wifi_spi.port )
|
||||
{
|
||||
return platform_wlan_spi_init( &platform_gpio_pins[spi->chip_select] );
|
||||
}
|
||||
#endif
|
||||
|
||||
if( platform_spi_drivers[spi->port].spi_mutex == NULL)
|
||||
mico_rtos_init_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
config.chip_select = spi->chip_select == MICO_GPIO_NONE ? NULL : &platform_gpio_pins[spi->chip_select];
|
||||
config.speed = spi->speed;
|
||||
config.mode = spi->mode;
|
||||
config.bits = spi->bits;
|
||||
|
||||
mico_rtos_lock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
err = platform_spi_init( &platform_spi_drivers[spi->port], &platform_spi_peripherals[spi->port], &config );
|
||||
mico_rtos_unlock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
OSStatus MicoSpiFinalize( const platforom_spi_device_t* spi )
|
||||
{
|
||||
OSStatus err = kNoErr;
|
||||
|
||||
if ( spi->port >= MICO_SPI_NONE )
|
||||
return kUnsupportedErr;
|
||||
|
||||
#ifdef MICO_WIFI_SHARE_SPI_BUS
|
||||
if( platform_spi_peripherals[spi->port].port == wifi_spi.port )
|
||||
{
|
||||
return kUnsupportedErr;
|
||||
//return platform_wlan_spi_deinit( &platform_gpio_pins[spi->chip_select] );
|
||||
}
|
||||
#endif
|
||||
|
||||
if( platform_spi_drivers[spi->port].spi_mutex == NULL)
|
||||
mico_rtos_init_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
mico_rtos_lock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
err = platform_spi_deinit( &platform_spi_drivers[spi->port] );
|
||||
mico_rtos_unlock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
OSStatus MicoSpiTransfer( const platforom_spi_device_t* spi, const platform_spi_message_segment_t* segments, uint16_t number_of_segments )
|
||||
{
|
||||
platform_spi_config_t config;
|
||||
OSStatus err = kNoErr;
|
||||
|
||||
if ( spi->port >= MICO_SPI_NONE )
|
||||
return kUnsupportedErr;
|
||||
|
||||
#ifdef MICO_WIFI_SHARE_SPI_BUS
|
||||
if( platform_spi_peripherals[spi->port].port == wifi_spi.port )
|
||||
{
|
||||
return platform_wlan_spi_transfer( &platform_gpio_pins[spi->chip_select], segments, number_of_segments );
|
||||
}
|
||||
#endif
|
||||
|
||||
if( platform_spi_drivers[spi->port].spi_mutex == NULL)
|
||||
mico_rtos_init_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
config.chip_select = spi->chip_select == MICO_GPIO_NONE ? NULL : &platform_gpio_pins[spi->chip_select];
|
||||
config.speed = spi->speed;
|
||||
config.mode = spi->mode;
|
||||
config.bits = spi->bits;
|
||||
|
||||
mico_rtos_lock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
err = platform_spi_init( &platform_spi_drivers[spi->port], &platform_spi_peripherals[spi->port], &config );
|
||||
err = platform_spi_transfer( &platform_spi_drivers[spi->port], &config, segments, number_of_segments );
|
||||
mico_rtos_unlock_mutex( &platform_spi_drivers[spi->port].spi_mutex );
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue