From 2216ed52a93d746ffc261f35d428cff375325f53 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 1 Feb 2017 16:48:57 -1000 Subject: [PATCH] Kinetis chip Adding K66 and inlcuding MCG versioning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This includes arch/arm/include/kinetis/kinetis_mcg.h to bring in the MCG versioning and defines the KINETIS_K66 family for the added SoCs: --------------- ------- --- ------- ------- ------ ------ ------ ----- PART NUMBER CPU PIN PACKAGE TOTAL PROGRAM EEPROM SRAM GPIO FREQ CNT FLASH FLASH --------------- ------- --- ------- ------- ------ ------ ------ ----- MK66FN2M0VMD18 180 MHz 144 MAPBGA 2 MB — — KB 260 KB 100 MK66FX1M0VMD18 180 MHz 144 MAPBGA 1.25 MB 1 MB 4 KB 256 KB 100 MK66FN2M0VLQ18 180 MHz 144 LQFP 2 MB — — KB 260 KB 100 MK66FX1M0VLQ18 180 MHz 144 LQFP 1.25 MB 1 MB 4 KB 256 KB 100 --- arch/arm/include/kinetis/chip.h | 136 +++++++++++++++++++++++++++++--- 1 file changed, 127 insertions(+), 9 deletions(-) diff --git a/arch/arm/include/kinetis/chip.h b/arch/arm/include/kinetis/chip.h index 6ecaf9b88f..2da386c3da 100644 --- a/arch/arm/include/kinetis/chip.h +++ b/arch/arm/include/kinetis/chip.h @@ -2,7 +2,8 @@ * arch/arm/include/kinetis/chip.h * * Copyright (C) 2011, 2013, 2015-2017 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Authors: Gregory Nutt + * David Sidrane * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -41,6 +42,7 @@ ************************************************************************************/ #include +#include /************************************************************************************ * Pre-processor Definitions @@ -73,6 +75,7 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ #if defined(CONFIG_ARCH_CHIP_MK20DN32VLH5) # define KINETIS_FLASH_SIZE (64*1024) /* 32Kb */ @@ -155,6 +158,7 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ #if defined(CONFIG_ARCH_CHIP_MK20DX64VLH7) # define KINETIS_FLASH_SIZE (64*1024) /* 64Kb */ @@ -210,6 +214,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (64*1024) /* 64Kb */ # define KINETIS_FLEXMEM_SIZE (32*1024) /* 32Kb */ # define KINETIS_SRAM_SIZE (16*1024) /* 16Kb */ @@ -261,6 +267,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (128*1024) /* 128Kb */ # define KINETIS_FLEXMEM_SIZE (32*1024) /* 32Kb */ # define KINETIS_SRAM_SIZE (32*1024) /* 32Kb */ @@ -304,6 +312,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXMEM_SIZE (32*1024) /* 32Kb */ # define KINETIS_SRAM_SIZE (32*1024) /* 64Kb */ @@ -346,6 +356,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (128*1024) /* 128Kb */ # define KINETIS_FLEXMEM_SIZE (128*1024) /* 128Kb */ # define KINETIS_SRAM_SIZE (32*1024) /* 32Kb */ @@ -388,6 +400,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXMEM_SIZE (256*1024) /* 256Kb */ # define KINETIS_SRAM_SIZE (64*1024) /* 32Kb */ @@ -432,6 +446,8 @@ # define KINETIS_K40 1 /* Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (512*1024) /* 512Kb */ # undef KINETIS_FLEXMEM_SIZE /* No FlexMemory */ # define KINETIS_SRAM_SIZE (128*1024) /* 128Kb */ @@ -474,6 +490,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -519,6 +537,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXNVM_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 32Kb */ @@ -564,6 +584,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (512*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -610,6 +632,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -655,6 +679,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXNVM_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ @@ -700,6 +726,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (512*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -745,6 +773,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -790,6 +820,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXNVM_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ @@ -835,6 +867,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (512*1024) /* 512Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -880,6 +914,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -925,6 +961,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXNVM_SIZE (256*1024) /* 256Kb */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ @@ -970,6 +1008,8 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # define KINETIS_K60 1 /* Kinetis K60 family */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (512*1024) /* 512Kb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -1016,6 +1056,8 @@ # define KINETIS_K60 1 /* Kinetis K60 family */ # define KINETIS_NEW_MCG 1 /* Kinetis New MCG - different VDIV */ # undef KINETIS_K64 /* Not Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ # undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # undef KINETIS_FLEXRAM_SIZE /* No FlexRAM */ @@ -1056,8 +1098,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1090,8 +1134,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1124,8 +1170,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1158,8 +1206,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1192,8 +1242,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1226,8 +1278,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1260,8 +1314,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1294,8 +1350,10 @@ # undef KINETIS_K40 /* Not Kinetis K40 family */ # undef KINETIS_K60 /* Not Kinetis K60 family */ # define KINETIS_K64 1 /* Kinetis K64 family */ +# undef KINETIS_K66 /* Not Kinetis K66 family */ + # define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ -# define KINETIS_FLEXNVM_SIZE (0*1024) /* 0Kb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ # define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ # define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ # define KINETIS_MPU 1 /* Memory protection unit */ @@ -1323,6 +1381,66 @@ # define KINETIS_NMMCAU 1 /* Hardware encryption */ # define KINETIS_NCRC 1 /* CRC */ +/* MK66F N/X 1M0/2M0 V MD/LQ 18 + * + * --------------- ------- --- ------- ------- ------ ------ ------ ----- + * PART NUMBER CPU PIN PACKAGE TOTAL PROGRAM EEPROM SRAM GPIO + * FREQ CNT FLASH FLASH + * --------------- ------- --- ------- ------- ------ ------ ------ ----- + * MK66FN2M0VMD18 180 MHz 144 MAPBGA 2 MB — — KB 260 KB 100 + * MK66FX1M0VMD18 180 MHz 144 MAPBGA 1.25 MB 1 MB 4 KB 256 KB 100 + * MK66FN2M0VLQ18 180 MHz 144 LQFP 2 MB — — KB 260 KB 100 + * MK66FX1M0VLQ18 180 MHz 144 LQFP 1.25 MB 1 MB 4 KB 256 KB 100 + */ + +#elif defined(CONFIG_ARCH_CHIP_MK66FN2M0VMD18) || \ + defined(CONFIG_ARCH_CHIP_MK66FX1M0VMD18) || \ + defined(CONFIG_ARCH_CHIP_MK66FN2M0VLQ18) || \ + defined(CONFIG_ARCH_CHIP_MK66FX1M0VLQ18) +# undef KINETIS_K20 /* Not Kinetis K20 family */ +# undef KINETIS_K40 /* Not Kinetis K40 family */ +# undef KINETIS_K60 /* Not Kinetis K60 family */ +# undef KINETIS_K64 /* Not Kinetis K64 family */ +# define KINETIS_K66 1 /* Kinetis K66 family */ + +# if defined(CONFIG_ARCH_CHIP_MK66FX1M0VMD18) || \ + defined(CONFIG_ARCH_CHIP_MK66FX1M0VLQ18) +# define KINETIS_FLASH_SIZE (1024*1024) /* 1Mb */ +# define KINETIS_FLEXNVM_SIZE (256*1024) /* 256Kb */ +# define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ +# define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ +# endif +# if defined(CONFIG_ARCH_CHIP_MK66FN2M0VMD18) || \ + defined(CONFIG_ARCH_CHIP_MK66FN2M0VLQ18) +# define KINETIS_FLASH_SIZE (2048*1024) /* 2Mb */ +# undef KINETIS_FLEXNVM_SIZE /* No FlexNVM */ +# define KINETIS_FLEXRAM_SIZE (4*1024) /* 4Kb */ +# define KINETIS_SRAM_SIZE (256*1024) /* 256Kb */ +# endif +# define KINETIS_MPU 1 /* Memory protection unit */ +# define KINETIS_EXTBUS 1 /* External bus interface */ +# define KINETIS_NDMACH 32 /* Up to 32 DMA channels */ +# define KINETIS_NENET 1 /* One IEEE 1588 Ethernet controller */ +# define KINETIS_NUSBOTG 1 /* With USB OTG controller */ +# define KINETIS_NUSBDEV 1 /* One USB device controller */ +# define KINETIS_NSDHC 1 /* SD host controller */ +# define KINETIS_NI2C 4 /* Four I2C modules */ +# define KINETIS_NUART 5 /* Five UART modues */ +# define KINETIS_NSPI 3 /* Three SPI modules */ +# define KINETIS_NCAN 2 /* Two CAN controllers */ +# define KINETIS_NI2S 1 /* One I2S modules */ +# undef KINETIS_NSLCD /* No segment LCD interface */ +# define KINETIS_NADC16 2 /* Four 16-bit ADC */ +# define KINETIS_NCMP 4 /* Four analog comparators */ +# define KINETIS_NDAC6 4 /* Four 6-bit DAC */ +# define KINETIS_NDAC12 2 /* Two 12-bit DAC */ +# define KINETIS_NVREF 1 /* Voltage reference */ +# define KINETIS_NTIMERS8 2 /* ? Two 8 channel timers */ +# define KINETIS_NTIMERS2 2 /* ? Two 2 channel timers */ +# define KINETIS_NRTC 1 /* Real time clock */ +# define KINETIS_NRNG 1 /* Random number generator */ +# define KINETIS_NMMCAU 1 /* Hardware encryption */ +# define KINETIS_NCRC 1 /* CRC */ #else # error "Unsupported Kinetis chip" #endif