mirror of https://github.com/ARMmbed/mbed-os.git
Cope with HALs not defining SPIName
parent
c368021e37
commit
df7e3367f7
|
@ -23,12 +23,6 @@
|
||||||
|
|
||||||
#if DEVICE_SPI
|
#if DEVICE_SPI
|
||||||
|
|
||||||
/* Backwards compatibility with HALs that don't provide this */
|
|
||||||
MBED_WEAK SPIName spi_get_peripheral_name(PinName /*mosi*/, PinName /*miso*/, PinName /*mclk*/)
|
|
||||||
{
|
|
||||||
return (SPIName)1;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace mbed {
|
namespace mbed {
|
||||||
|
|
||||||
SPI::spi_peripheral_s SPI::_peripherals[SPI_PERIPHERALS_USED];
|
SPI::spi_peripheral_s SPI::_peripherals[SPI_PERIPHERALS_USED];
|
||||||
|
@ -73,7 +67,12 @@ void SPI::_do_construct()
|
||||||
_hz = 1000000;
|
_hz = 1000000;
|
||||||
_write_fill = SPI_FILL_CHAR;
|
_write_fill = SPI_FILL_CHAR;
|
||||||
|
|
||||||
|
// Need backwards compatibility with HALs not providing API
|
||||||
|
#ifdef SPI_COUNT
|
||||||
SPIName name = spi_get_peripheral_name(_mosi, _miso, _sclk);
|
SPIName name = spi_get_peripheral_name(_mosi, _miso, _sclk);
|
||||||
|
#else
|
||||||
|
SPIName name = GlobalSPI;
|
||||||
|
#endif
|
||||||
|
|
||||||
core_util_critical_section_enter();
|
core_util_critical_section_enter();
|
||||||
// lookup in a critical section if we already have it else initialize it
|
// lookup in a critical section if we already have it else initialize it
|
||||||
|
@ -98,7 +97,7 @@ SPI::~SPI()
|
||||||
unlock();
|
unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPI::spi_peripheral_s *SPI::_lookup(SPIName name)
|
SPI::spi_peripheral_s *SPI::_lookup(SPI::SPIName name)
|
||||||
{
|
{
|
||||||
SPI::spi_peripheral_s *result = NULL;
|
SPI::spi_peripheral_s *result = NULL;
|
||||||
core_util_critical_section_enter();
|
core_util_critical_section_enter();
|
||||||
|
|
|
@ -27,15 +27,13 @@
|
||||||
#include "platform/SingletonPtr.h"
|
#include "platform/SingletonPtr.h"
|
||||||
#include "platform/NonCopyable.h"
|
#include "platform/NonCopyable.h"
|
||||||
|
|
||||||
/* Backwards compatibility with HALs not providing this */
|
|
||||||
#ifndef SPI_COUNT
|
|
||||||
#define SPI_COUNT 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined MBED_CONF_DRIVERS_SPI_COUNT_MAX && SPI_COUNT > MBED_CONF_DRIVERS_SPI_COUNT_MAX
|
#if defined MBED_CONF_DRIVERS_SPI_COUNT_MAX && SPI_COUNT > MBED_CONF_DRIVERS_SPI_COUNT_MAX
|
||||||
#define SPI_PERIPHERALS_USED MBED_CONF_DRIVERS_SPI_COUNT_MAX
|
#define SPI_PERIPHERALS_USED MBED_CONF_DRIVERS_SPI_COUNT_MAX
|
||||||
#else
|
#elif defined SPI_COUNT
|
||||||
#define SPI_PERIPHERALS_USED SPI_COUNT
|
#define SPI_PERIPHERALS_USED SPI_COUNT
|
||||||
|
#else
|
||||||
|
/* Backwards compatibility with HALs not providing SPI_COUNT */
|
||||||
|
#define SPI_PERIPHERALS_USED 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DEVICE_SPI_ASYNCH
|
#if DEVICE_SPI_ASYNCH
|
||||||
|
@ -259,6 +257,7 @@ public:
|
||||||
|
|
||||||
#if !defined(DOXYGEN_ONLY)
|
#if !defined(DOXYGEN_ONLY)
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/** SPI interrupt handler.
|
/** SPI interrupt handler.
|
||||||
*/
|
*/
|
||||||
void irq_handler_asynch(void);
|
void irq_handler_asynch(void);
|
||||||
|
@ -338,6 +337,14 @@ private:
|
||||||
|
|
||||||
#if !defined(DOXYGEN_ONLY)
|
#if !defined(DOXYGEN_ONLY)
|
||||||
protected:
|
protected:
|
||||||
|
#ifdef SPI_COUNT
|
||||||
|
// HAL must have defined this as a global enum
|
||||||
|
typedef ::SPIName SPIName;
|
||||||
|
#else
|
||||||
|
// HAL may or may not have defined it - use a local definition
|
||||||
|
enum SPIName { GlobalSPI };
|
||||||
|
#endif
|
||||||
|
|
||||||
struct spi_peripheral_s {
|
struct spi_peripheral_s {
|
||||||
/* Internal SPI name identifying the resources. */
|
/* Internal SPI name identifying the resources. */
|
||||||
SPIName name;
|
SPIName name;
|
||||||
|
|
|
@ -62,6 +62,7 @@ extern "C" {
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef SPI_COUNT
|
||||||
/**
|
/**
|
||||||
* Returns a variant of the SPIName enum uniquely identifying a SPI peripheral of the device.
|
* Returns a variant of the SPIName enum uniquely identifying a SPI peripheral of the device.
|
||||||
* @param[in] mosi The pin to use for MOSI
|
* @param[in] mosi The pin to use for MOSI
|
||||||
|
@ -70,6 +71,7 @@ extern "C" {
|
||||||
* @return An SPI peripheral identifier
|
* @return An SPI peripheral identifier
|
||||||
*/
|
*/
|
||||||
SPIName spi_get_peripheral_name(PinName mosi, PinName miso, PinName mclk);
|
SPIName spi_get_peripheral_name(PinName mosi, PinName miso, PinName mclk);
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Initialize the SPI peripheral
|
/** Initialize the SPI peripheral
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue