Kinetis SPI and I2C are 0 based

The K whole family line has max 4 or each. But the supported
  parts have the maximums listed below:

    K46 and K66    3 SPI SPI0-SPI2
    K46 and K66    4 I2C I2C0-I2C3
This commit is contained in:
David Sidrane
2017-02-08 09:33:27 -10:00
parent ddd1f8c507
commit 3840c802d1
5 changed files with 118 additions and 79 deletions
+41 -6
View File
@@ -131,42 +131,56 @@ config ARCH_CHIP_MK64FN1M0VLL12
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FX512VLL12
bool "MK64FX512VLL12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FX512VDC12
bool "MK64FX512VDC12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FN1M0VDC12
bool "MK64FN1M0VDC12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FX512VLQ12
bool "MK64FX512VLQ12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FX512VMD12
bool "MK64FX512VMD12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK64FN1M0VMD12
bool "MK64FN1M0VMD12"
select ARCH_FAMILY_K64
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK66FX1M0VMD18
bool "MK66FX1M0VMD18"
@@ -174,7 +188,8 @@ config ARCH_CHIP_MK66FX1M0VMD18
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_I2C3
select KINETIS_HAVE_I2C4
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK66FN2M0VMD18
bool "MK66FN2M0VMD18"
@@ -182,7 +197,8 @@ config ARCH_CHIP_MK66FN2M0VMD18
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_I2C3
select KINETIS_HAVE_I2C4
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK66FX1M0VLQ18
bool "MK66FX1M0VLQ18"
@@ -190,7 +206,8 @@ config ARCH_CHIP_MK66FX1M0VLQ18
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_I2C3
select KINETIS_HAVE_I2C4
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
config ARCH_CHIP_MK66FN2M0VLQ18
bool "MK66FN2M0VLQ18"
@@ -198,7 +215,8 @@ config ARCH_CHIP_MK66FN2M0VLQ18
select KINETIS_HAVE_I2C1
select KINETIS_HAVE_I2C2
select KINETIS_HAVE_I2C3
select KINETIS_HAVE_I2C4
select KINETIS_HAVE_SPI1
select KINETIS_HAVE_SPI2
endchoice
@@ -238,7 +256,11 @@ config KINETIS_HAVE_I2C3
bool
default n
config KINETIS_HAVE_I2C4
config KINETIS_HAVE_SPI1
bool
default n
config KINETIS_HAVE_SPI2
bool
default n
@@ -330,18 +352,23 @@ config KINETIS_FLEXCAN1
config KINETIS_SPI0
bool "SPI0"
default n
select SPI
---help---
Support SPI0
config KINETIS_SPI1
bool "SPI1"
default n
select SPI
depends on KINETIS_HAVE_SPI1
---help---
Support SPI1
config KINETIS_SPI2
bool "SPI2"
default n
select SPI
depends on KINETIS_HAVE_SPI2
---help---
Support SPI2
@@ -366,7 +393,15 @@ config KINETIS_I2C2
select I2C
depends on KINETIS_HAVE_I2C2
---help---
Support I2C1
Support I2C2
config KINETIS_I2C3
bool "I2C3"
default n
select I2C
depends on KINETIS_HAVE_I2C3
---help---
Support I2C3
config KINETIS_I2S
bool "I2S"
+17 -16
View File
@@ -51,7 +51,8 @@
#include "kinetis.h"
#include "freedom-k64f.h"
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
defined(CONFIG_KINETIS_SPI2)
/************************************************************************************
* Public Functions
@@ -98,6 +99,20 @@ void weak_function k64_spidev_initialize(void)
*
************************************************************************************/
#ifdef CONFIG_KINETIS_SPI0
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#ifdef CONFIG_KINETIS_SPI1
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
@@ -126,18 +141,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
}
#endif
#ifdef CONFIG_KINETIS_SPI3
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
+20 -19
View File
@@ -51,7 +51,8 @@
#include "kinetis.h"
#include "kwikstik-k40.h"
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
defined(CONFIG_KINETIS_SPI2)
/************************************************************************************
* Public Functions
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
}
/****************************************************************************
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
*
* Description:
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
* provided by board-specific logic. They are implementations of the select
* and status methods of the SPI interface defined by struct spi_ops_s (see
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
*
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
* pins.
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
* board-specific logic. These functions will perform chip selection and
* status operations using GPIOs in the way your board is configured.
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
*
****************************************************************************/
#ifdef CONFIG_KINETIS_SPI0
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#ifdef CONFIG_KINETIS_SPI1
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
}
#endif
#ifdef CONFIG_KINETIS_SPI3
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
+20 -19
View File
@@ -51,7 +51,8 @@
#include "kinetis.h"
#include "teensy-3x.h"
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
defined(CONFIG_KINETIS_SPI2)
/************************************************************************************
* Public Functions
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
}
/************************************************************************************
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
*
* Description:
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
* provided by board-specific logic. They are implementations of the select
* and status methods of the SPI interface defined by struct spi_ops_s (see
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
*
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
* pins.
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
* board-specific logic. These functions will perform chip selection and
* status operations using GPIOs in the way your board is configured.
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
*
************************************************************************************/
#ifdef CONFIG_KINETIS_SPI0
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#ifdef CONFIG_KINETIS_SPI1
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
}
#endif
#ifdef CONFIG_KINETIS_SPI3
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
+20 -19
View File
@@ -51,7 +51,8 @@
#include "kinetis.h"
#include "twr-k60n512.h"
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
defined(CONFIG_KINETIS_SPI2)
/************************************************************************************
* Public Functions
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
}
/****************************************************************************
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
*
* Description:
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
* provided by board-specific logic. They are implementations of the select
* and status methods of the SPI interface defined by struct spi_ops_s (see
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
*
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
* pins.
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
* board-specific logic. These functions will perform chip selection and
* status operations using GPIOs in the way your board is configured.
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
*
****************************************************************************/
#ifdef CONFIG_KINETIS_SPI0
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#ifdef CONFIG_KINETIS_SPI1
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
}
#endif
#ifdef CONFIG_KINETIS_SPI3
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
# warning "Missing logic"
}
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
{
# warning "Missing logic"
return SPI_STATUS_PRESENT;
}
#endif
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */