Skip to content
ChangeLog 808 KiB
Newer Older
Gregory Nutt's avatar
Gregory Nutt committed
	  are currently missing in ARMv7-R. This commit adds those missing
	  Kconfig entries. Actual implmenetation for those functions will be
	  added in the subsequent patches.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: add cache handling functions.  This commit
	  adds functions for enabling and disabling d/i-caches which were
	  missing for ARMv7-R.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix typo in mpu support.  s/ARMV7M/ARMV7R/g.
	  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix CPSR corruption after exception handling.
	  A sporadic hang with consequent crash was observed when booting. It
	  seemed to be caused by the corrupted or wrong CPSR restored on return
	  from exception. NuttX restores the context using code like this:

	      msr spsr, r1

	  GCC translates this to:

	      msr spsr_fc, r1

	  As a result, not all SPSR fields are updated on exception return.
	  This should be:

	      msr spsr_fsxc, r1

	  On some evaluation boards, spsr_svc may have totally invalid value at
	  power-on-reset. As it is not initialized at boot, the code above may
	  result in the corruption of cpsr and thus unexpected behavior.

	  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix to restore the Thumb flag in CPSR.  Thumb
	  flag in CPSR is not restored back when the context switch occurs while
	  executing thumb instruction.  From Heesub Shin (2016-11-06).
	* sched/wqueue:  When queuing new LP work, don't signal any threads
	  if they are all busy.  From Heesub Shin (2016-11-06).
	* sched/wqueue: Signal sent from work_signal() may interrupt the low
	  priority worker thread that is already running. For example, the worker
	  thread that is waiting for a semaphore could be woken up by the signal
	  and break any synchronization assumption as a result. It also does not
	  make any sense to send signal if it is already running and busy. This
	  commit fixes it.  From Heesub Shin (2016-11-06).
	* arch/arm/src/stm32f7: STM32F7 SD/MMC driver depends on
	  CONFIG_SDIO_DMA which is only defined in stm32/Kconfig.  Changed to
	  CONFIG_STM32F7_SDMMC_DMA and defined in stm32f7/Kconfig (2016-11-07).
	* arch/arm/src/stm32: Add PWM driver support for STMF37xx.  The
	  changes have been tested successfuly for TIM4 and TIM17 (different
	  IPs).  From  Marc Rechté (2016-11-07).
	* sched/semaphore:  sem_trywait() no longer modifies the errno value
	  UNLESS an error occurs.  This allows these functions to be used
	  internally without clobbering the errno value.  From Freddie Chopin
	  (2016-11-09).
	* arch/arm/src/stm32l4: Change the way to configure quadrature encoder
	  prescalers.  From Sebastien Lorquet (2016-11-09).
	* libc/unisted: Patch brings strtol() and related functions more
	  conformant with POSIX.  Corner cases like strtol(-2147483648, NULL, 10)
	  now pass clang -fsanitize=integer without warnings.  From Juha Niskanen
	  (2016-11-10).
	* drivers/sensors and configs/stm32f103-minimum: Add Vishay VEML6070
	  driver and support for STM32F103-Minimum board.  From   From Alan
	  Carvalho de Assis(2016-11-13).
	* Misoc LM32: Corrects a bug that never occured in qemu on simulation or
	  real fpga. The error was that the r1 register was being modified out of
	  context switching and not restoring it.  From Ramtin Amin (2016-11-14)
	* arch/arm/src/samv71: A problem occurred with the SAMV7 USBDEVHS driver
	  if the USB cable is unplugged while a large amount of data is send over
	  an IN endpoint using DMA. If the USB cable is plugged in again after a
	  few seconds it is not possible to send data over this IN endpoint again,
	  all other endpoints work as expected.

	  The problem occurs because if the USB cable is unplugged while an DMA
	  transfer is in flight the transfer is canceled but the register
	  SAM_USBHS_DEVDMACTRL is left in an undefined state.  The problem was
	  fixed the problem by resetting the register SAM_USBHS_DEVDMACTRL to a
	  known state. Additionally all pending interrupts are cleared.

	  From Stefan Kolb (2016-11-14).
	* configs/esp32-core: ESP32 Core v2: Add configuration to supporting
	  linking NuttX for execution out of IRAM (2016-11-14).
	* libc/unistd: sleep() was returning remaining nanoseconds (kind of),
	  instead the remaining seconds.  From Eunbong Song (2016-11-15).
	* sched/irq:  Fixes for the SMP case: (1) Change order for SMP case in
	  enter_critical_section:  (1) Disable local interrupts BEFORE taking
	  spinlock and (2) If SMP is enabled, if any interrupt handler calls
	  enter_critical_section(), it should take the spinlock. (2016-11-15).
	* arch/xtensa: Add EXPERIMENTAL hooks to support lazy Xtensa co-
	  processor state restore in the future (2016-11-16).
	* Add some experimental changes to enter/leave_critical_section to
	  deal with the case where interrupts are disabled only on the local
	  CPU (2016-11-16).
	* sched/irq:  Add logic to handled nested calls to
	  enter_critical_section() from interrupts handlers (with SMP)
	  (2016-11-16).
	* drivers/timer:  Remove the timer driver TIOC_SETHANDLER IOCTL call.
	  This calls directly from the timer driver into application code.  That
	  is non-standard, non-portable, and cannot be supported (2016-11-17).
	*drivers/timer:  Add timer driver hooks to support signal notification
	  of timer expiration.  Commented out because invasive interface changes
	  would also be required to complete the implementation (2016-11-17).
	* arch/arm/src/armv7-m: Fix double allocation of MPU region in mmu.h
	  (2016-11-17).
	* timer driver: Use signal to notify of timer expiration. Add generic
	  argument so that there can be additional usage.  From Sebastien Lorquet
	  (2016-11-17).
	* All timer lower half drivers.  Port Sebastien's changes to all all
	  other implementations of the timer lower half.  Many changes and
Gregory Nutt's avatar
Gregory Nutt committed
	  untested.  Expect some problems. (2016-11-17).
	* sched/irq: irq_csection() has a bad assumption in the SMP case.  It
	  assumed that the state of certain variables.  That was true on entry
	  into the interrupt handler, but might change to the execution of logic
	  within the interrupt handler (2016-11-18).
	* config/ nucleo-l476rg: Add support for timers to nucleo l476.  From
	  Sebastien Lorquet (2016-11-18).
	* drivers/net:  Add option to use low-priority work queue to all drivers
	  in drivers/net.  Not yet added to all architecture-specific network
	  drivers (2016-11-18).
	* sched/wdog: Most interrupt handling logic interacts with tasks via
	  standard mechanism such as sem_post, sigqueue, mq_send, etc.  These all
	  call enter_critical_section and are assumed to be safe in the SMP case.

	  But certain logic interacts with tasks in different ways.  The only one
	  that comes to mind are wdogs.  There is a tasking interface that to
	  manipulate wdogs, and a different interface in the timer interrupt
	  handling logic to manage wdog expirations.

	  In the normal case, this is fine.  Since the tasking level code calls
	  enter_critical_section, interrupts are disabled an no conflicts can
	  occur.  But that may not be the case in the SMP case.  Most
	  architectures do not permit disabling interrupts on other CPUs so
	  enter_critical_section must work differently:  Locks are required to
	  protect code.

	  So this change adds locking (via enter_critical section) to wdog
	  expiration logic for the the case if the SMP configuration
	  (2016-11-18).
Gregory Nutt's avatar
Gregory Nutt committed
	* SAM3/4: Add delay between setting and clearing the endpoint RESET bit
	  in sam_ep_resume().  We need to add a delay between setting and
	  clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay the
	  USB controller will (may?) not reset the endpoint.  If the endpoint is
	  not being reset, the Data Toggle (DTGLE) bit will not to be cleared
	  which will cause the next transaction to fail if DTGLE is 1. If that
	  happens the host will time-out and reset the bus.  Adding this delay
	  may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c, however this
	  has not been verified yet.  From Wolfgang Reißnegger (2016-11-18).
	* SAM3/4: Remove unused 'halted' flag in UDP driver.  From Wolfgang
	  Reißnegger (2016-11-18).
	* SAM3/4: Remove 'stalled' flag in UDP driver.  The flag is not necessary.
	  The state of the endpoint can be determined using 'epstate' instead.
	  From Wolfgang Reißnegger (2016-11-18).
	* USBMSC: Fix length of mode6 sense reply packet.  From Wolfgang
	  Reißnegger (2016-11-18).
	* configs/dk-tm4c129x: Typo fix.  From Wolfgang Reißnegger (2016-11-18).
	* Typo fix in sam_udp.c.  From Wolfgang Reißnegger (2016-11-18).
	* STM32: STM32F303xB and STM32F303xC chips have 4 ADCs.  From Paul A.
	  Patience (2016-11-19).
	* vfork(): Fix a race condition in the SMP case.  Existing logic
	  depended on the fact that the child would not run until waitpid was
	  called because the child had the same priority as the parent.  BUT
	  in the SMP case that is not true... the child may run immediately on
	  a different CPU (2016-11-19).
	* arch/:  Add option to use low-priority work queue to all Ethernet
	  drivers in arch that support CONFIG_NET_NOINTS (2016-11-19).
	* sched/clock:  Correct calculation for the case of Tickless mode with
	  a 32-bit timer.  In that case, the calculation was returning
	  millisecond accuracy.  That is not good when the timer accuracy is < 1
	  msec.  From Rajan Gill (2016-11-19).
	* sched/task: task_restart() test not supported on SMP systems.  This is
	  not fully implemented (2016-11-19).
	* This commit adds a new internal interfaces and fixes a problem with
	  three APIs in the SMP configuration.  The new internal interface is
	  sched_cpu_pause(tcb).  This function will pause a CPU if the task
	  associated with 'tcb' is running on that CPU.  This allows a different
	  CPU to modify that OS data stuctures associated with the CPU.  When the
	  other CPU is resumed, those modifications can safely take place.  The
	  three fixes are to handle cases in the SMP configuration where one CPU
	  does need to make modifications to TCB and data structures on a task
	  that could be running running on another CPU.  Those three cases are
	  task_delete(), task_restart(), and execution of signal handles.  In
	  all three cases the solutions is basically the same:  (1) Call
	  sched_cpu_pause(tcb) to pause the CPU on which the task is running,
	  (2) perform the necessary operations, then (3) call up_cpu_resume() to
	  restart the paused CPU (2016-11-20).
	* task_restart: Make sure new task starts with pre-emption disabled and
	  not in a critical section (2016-11-21).
	* Fix a typo in a spinlock macro (2016-11-21).
	* Spinlocks:  Added capability to provide architecture-specific memory
	  barriers.  This was for i.MX6 but does not help with the SMP problems.
	  It is still a good feature (2016-11-21).
	* Remove a assertion condition that appears to rarely cause false-alarm
	  assertions.  Teported by Petteri Aimonen (2016-11-21).
	* The examples/qencoder app was trying to init the encoder by a direct
	  call into the board, cheating in a local header to declare the normally
	  unavailable function prototype.  From Sebastien Lorquet (2016-11-22).
	* configs:  All QE encoder files.  Last change made timer hard-coded to 3.
	  Make configurable (2016-11-22).
	* configs: Remove all traces of the no-longer existent ARCHBUTTONS
	  example.  Remove all button configurations that depended on the
	  obsoleted ARCHBUTTON example (2016-11-22).
	* nucleo-l476rg: Add better selection of timer (2016-11-22).
	* implementation of dumpgpio for stm32l4, was required for pwm debug.
	  From Sebastien Lorquet (2016-11-22).
	* SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting
	  for g_cpu_irqlock and CPU0 is waitin for g_cpu_paused (2016-11-22).
	* Misoc:  Add timer driver.  From Ramtin Amin (2016-11-22).
	* Misoc:  Add commits and warnings about missing caculation of the timer
	  reload value (2016-11-22).
	* SAM3/4: Name of method is now setcallback, not sethandler (2016-11-22).
	* sam4s-xplained-pro/nsh: Configuration uses old, improper timer interface.
	  CONFIG_TIMER disabled in configuration. (2016-11-22).
	* sam4s-xplained-pro:  Remove obsolete timer initialization logic
	  (2016-11-22).
	* Misoc LM32: Make system timer configurable via CONFIG_USEC_PER_TICK.
	  From Ramtin Amin (2016-11-23).
	* LPC43xx: Add timer driver; configs/bambino-200e: Add support for timer
	  driver.  From Alan Carvalho de Assis (2016-11-23).
	* SMP: Fix backward condition in test (2016-11-23).
	* ARMv7-A SMP: Add a little logic to signal handling (2016-11-24).
	* Misoc LM32: Add signal handling logic.  From Ramtin Amin (2016-11-24).
	* SMP: Add spin_trylock().  Use this in conditions where other CPUs need
	  to stopped but we cannot call enter_critical_section (2016-11-24).
	* Fix for F1 RTC Clock, tested on F103.  From Maciej Wójcik (2016-11-25).
	* SMP:  Fix yet another potential deadlock (2016-11-25).
	* Enable CONFIG_RTC in the hymini-stm32v/nsh2 (kitchensink) config.
	  From Maciej Wójcik (2016-11-26).
	* This adds support for keeping i.MX6 inter-processor communication data
	  in a non-cached address region (2016-11-26).
	* i.MX6: Disable non-cached region support.  Add SCU register definitions
	  (2016-11-26).
	* i.MX6: Add some controls to enable SMP cache coherency in SMP mode
	  (2016-11-26).
	* ARMv7-A: Fix some SCU SMP logic (2016-11-26).
	* ARMv7-A/i.MX6:  Modify handling of the SMP cache coherency
	  configuration so that it is identical to the steps from the TRM.
	  Makes no differenct, however (2016-11-27).
	* The Smoothie project needs to compile C++ inside config/boardname/src/
	  to use with High Priority Interruption, then I modified the board
	  configs Makefile to support it.  It works fine for the first time
	  compilation, but if we execute "touch config/boardname/src/Pin.cxx"
	  and execute "make" it will not detect that Pin.cxx was modified. I
	  think there is some other place I should modify, but I didn't find
	  it.  From Alan Carvalho de Assis (2016-11-27).
	* ARMv7-A/i.MX6 SMP: Move SMP coherent cache setup to earlier in
Gregory Nutt's avatar
Gregory Nutt committed
	  initialization of CPUn, n>0 (2016-11-27).
	* ARMv7 GIC: SGIs are non-maskable but go through the same path as other,
	  maskable interrupts.  Added logic to serialize SGI processing when
	  necessary (2016-11-27).
	* sched_note: Extend OS instrumentation to include some SMP events
	  (2016-11-27).
	* sched_note: Add spinlock instrumentation; In SMP configurations,
	  select to log only notes from certain CPUs (2016-11-28).
	* Misoc LM3: Add Misoc Ethernet driver.  Integrate network support into
	  configs/misoc/hello.  Remove configs/misoc/include/generated directory.
	  I suppose the the intent now is that this is a symbolic link?  DANGER!
	  This means that you cannot compile this code with first generating
	  these files a providing a symbolic link to this location!  From Ramtin
	  Amin (2016-11-28).
	* Add tools/showsize.sh (2016-11-28).
	* configs/misoc:  Add a sample directory containing generated sources.
	  This is really only useful for performing test builds.  You really
	  must generate the Misoc architecture for a real-life build.  From
	  Ramtin Amin (2016-11-28).
	* sched_note: Permit spinlock and critical section notes in in-memory
	  buffer iff sched_not_get() interfaces is disabled (2016-11-28).
	* STM32 DAC:  Fix shift value whenever there are is a DAC2 and, hence,
	  up to three interfaces.  From Marc Rechté (2016-11-29).
	* Back out a debug change that was included in commit (2016-11-29).
	* i.MX6: Don't output the alphabet if CONFIG_DEBUG_FEATURES is not set
	  (2016-11-29).
	* Misoc LM32: Add logic to flush/invalidate caches.  From Ramtin Amin
	  (2016-11-29).
	* drivers/net/: Adapt all Ethernet drivers to work as though
	  CONFIG_NET_MULTIBUFFER were set.  Remove all references to
	  CONFIG_NET_MULTIBUFFER (2016-11-29).
	* stm32_otghshost: if STM32F446 increase number of channels to 16.  From
	  Janne Rosberg (2016-11-30).
	* usbhost_composite: fix end offset in usbhost_copyinterface().  From
	  Janne Rosberg (2016-11-30).
	* usbhost_cdcacm: add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to supported
	  class and proto.  From Janne Rosberg (2016-11-30).
	* LPC43 SD/MMC:  Correct some git definitions on SMMC control register
	  in lpc43_sdmmc.h.  From Alan Carvalho de Assis (2016-11-30).
	* STM32L4: Correct USART1/2 definitions.  Use default mbed UART4
	  settings.  From Sebastien Lorquet (2016-12-01).
	* boardctl:  Add new boardctl() command ,BOARDIOC_NX_START, to start the
	  NX server as a kernel thread (2016-12-01).
	* GPDMA driver for the LPC43xx.  The GPDMA block is basically the same
	  as the LPC17xx.  Only the clock configuration is different and LPC43xx
	  has four different DMA request sources, where LPC17xx has only two.
	  From Alan Carvalho de Assis (2016-12-01).
	* Remove RGMP and RGMP drivers (2016-12-02).
	* i.MX6:  Add an untested SPI driver taken directly from the i.MX1 port
	  (2016-12-02).
	* Eliminate CONFIG_NO_NOINTS.  There is no longer any support for
	  interrupt level processing of the network stack. Lots of files changed
	  -> lots of testing needed (2016-12-03).
	* Fix DEBUGASSERT() in group_signal.c.  From Masayuki Ishikawa
	  (2016-12-04).
	* Add support for the SAM5CMP-DB board.  From Masayuki Ishikawa
	  (2016-12-04).
	* SAM3/4:  Add SMP support for the dual-core SAM4CM.  From Masayuki
	  Ishikawa (2016-12-04).
	* C Library: Allow option to enable IP address conversions even when the
	  IP address family is not supported (2016-12-04).
	* SSD1306: Fix errors in SPI mode configuration.  From Gong Darcy
	  (2016-12-04).
	* SAMA5 does not build when executing from SDRAM before board
	  frequencies are not constant.  Rather, the bootloader configures the
	  clocking and we must derive the clocking from the MCK left by the
	  bootloader.  This means lots more computations.  This is untested on
	  initial commit because I don't have a good PWM test setup right now
	  (2016-12-04).
	* Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount
	  /proc on startup (2016-12-05).
	* SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup
	  in board bring-up logic (2016-12-05).
	* Remove all references to BOARDIOC_PWMSETUP and board_pwm_setup()
	  (2016-12-05).
	* Remove all references to BOARDIOC_ADCSETUP and board_adc_setup()
	  (2016-12-05).
	* Added Timers 2-5 and control of SAI and I2S PLLs.  From David Sidrane
	  (2016-12-05).
	* Added support for stmf469 SAI and I2S PLL configuration and STM446
	  fixes.  From David Sidrane (2016-12-05).
	* Expanded otgfs support to stm32F469 and stm32f446.  Added missing bits
	  definitions, Used stm32F469 and stm32f446 bit definitions,  Removed
	  unsed header file.  From David Sidrane (2016-12-05).
	* Remove BOARDIOC_CAN_INITIALIZE.  CAN initialization is now done in the
	  board initialization logic just like every other device driver
	  (2016-12-06).
	* STM32F7: Allow the config to override the clock edge setting.  From
	  David Sidrane (2016-12-06).
	* For Cortex-A9, should also set ACTLR.FW in SMP mode to enble TLB and
	  cache broadcasts.  Does not fix SMP cache problem (2016-12-07).
	* sched notes: Add additional note to see if/when CPU is started in SMP
	  mode (2016-12-07).
	* EFM32: Fix a compilation error.  From Pierre-noel Bouteville
	  (2016-12-07).
	* pthreads:  Add pthread_cleanup_push() and pthread_cleanup_pop()
	  (2016-12-08).
	* BUGFIX:STM32F427 was rebooting. Over reached family.  From David
	  Sidrane (2016-12-08).
	* Add pthread_setcanceltype() and pthread_testcancel() (2016-12-09).
	* Added STM32F469 RAM size and deliberated STM32F446 size.  From David
	  Sidrane (2016-12-09).
	* Typo in stm32f76xx77xx_pinmap.h edited online with Bitbucket.  From
	  David Sidrane (2016-12-09).
	* stm32_allocateheap.c edited online with Bitbucket.  From David Sidrane
	  (2016-12-09).
	* LPC43xx SD card: Correct pin configuration options needed for SD card
	  pins.  From Alan Carvalho de Assis (2016-12-09).
	* pthread_mutex_destroy(): Fix an error in destroying a mutex which can
	  occur after a pthread has been canceled while holding the mutex
	  (2016-12-09).
	* Add support for cancellation points (2016-12-09).
	* Forgot to add some files in the last commit (2016-12-10).
	* Correct some default font IDs.  From Pierre-Noel Bouteville
	  (2016-12-10).
	* task_delete() now obeys all cancellation point semantics (2016-12-10).
	* Add task_setcancelstate(), task_setcanceltype(), and task_testcancel().
	  These are non-standard interfaces analogous to the correponding pthread_
	  interfaces that provide cancellation controls for tasks (2016-12-10).
	* i.MX6 interrupt handling:  Additional logic needed to handle nested
	  interrupts when an interrupt stack is used (2016-12-13).
	* SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to
	  CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node
	  acknowledges the message sent. This will also occur if the device is
	  not connected to the can-bus. The CAN-Standard declares, that the Chip
	  has to retry a given message as long as it is not sent successfully (or
	  it is not cancelled by the application). Every time the chip tries to
	  resend the message an Acknowledge-Error-Interrupt is generated. At high
	  baud rates this can lead in extremely high CPU load just for handling
	  the interrupts (and possibly the error handling in the application). To
	  prevent this Interrupt-Flooding we disable the ACKE once it is seen as
	  long we didn't transfer at least one message successfully.  From Frank
	  Benkert (2016-12-13).
	* i.MX6: Remove non-cached, inter-cpu memory region.  Not a useful
	  concept (2016-12-13).
	* minnsh Configurations: Remove minnsh configurations and support logic:
	  up_getc() and lowinstream.  This was an interesting exercise to see
	  just how small you could get NuttX, but otherwise it was not useful:
	  (1) the NSH code violated the OS interface layer by callup up_getc and
	  up_putc directly, and (2) while waiting for character input, NSH would
	  call up_getc() which would hog all of the CPU.  Not a reasonable
	  solution other than as a proof of concept (2016-12-13).
	* Calypso Boards: Remove all Calypso board configurations (2016-12-13).
	* Calypso: Remove Calypso architecture support and support for Calypso
	  SERCOMM driver (2016-12-13).
	* ESP32 core v2: Two changes (1) flushes the UART TX buffer in the esp32
	  serial shutdown routine. The ROM bootloader does not flush the FIFO
	  before handing over to user code, so some of this output is not
	  currently seen when the UART is reconfigured in early stages of
	  startup.  And changes the openocd config file's default flash voltage
	  from 1.8V to 3.3V. This is not necessary right now, but may save some
	  hard-to-debug moments down the track (3.3V-only flash running at 1.8V
	  often half-works and does weird things...).  From Angus Gratton
	  (2016-12-14).
	* Xtensa ESP32: Add missing ENTRY() and RET() macros in C callable
	  assembly language.  At one time I though the that the ESP32 support the
	  CALL0 ABI.  I was mistaken so there may be a few more like this
	  (2016-12-14).
	* Xtensa ESP32: Fix a couple of bugs associated with handling of CPU
	  interrupts (2016-12-14).
	* Xtensa ESP32: Fix several build-related issues associated with vector
	  section (2016-12-15).
	* Xtensa ESP32: Fix missing CALL0 ABI condition (2016-12-15).
	* Xtensa EPS32: Make sure that all C callable assembly functions includes
	  ENTRY prologue and RET epilogue (2016-12-15).
	* Xtensa ESP32: Fix windowspill register handling + Use r6, not r2 when
	  passing paramters with call4 (2016-12-16).
	* Xtensa ESP32: Use r6, not r2 when passing paramters with call4
	  (2016-12-16).
	* Xtensa ESP32: Correct a logic problem the prevented dumping the IDLE
	  thread's stack on an assertion (2016-12-16).
	* Xtensa ESP32: Fix some missing SMP logic (2016-12-16).
	* Xtensa ESP32: Basically a redesign of the interrupt dispatch logic
	  (2016-12-16).
	* Xtensa ESP32: Level 1 interrupts should return via RFE (2016-12-17).
	* Xtensa ESP32: One register getting clobber on context save (2016-12-17).
	* STM32 F7: Fix some STM32F7 copy paste errors.  From David Sidrane
	  (2016-12-17).
	* CDC/ACM Device Class: uart_ops_s portion of cdcacm will not be
	  initalized with correct functions if CONFIG_SERIAL_DMA is lit
	  (2016-12-17).
	* Xtensa ESP32: Using wrong register to disable interrupts (2016-12-17).
	* Xtensa ESP32: Fix clobbered a9 in co-processor context save/restore
	  (2016-12-17).
	* Xtensa ESP32: Need to clone some logic for synchronous context switch.
	  Window spill logic in the conmon restores logic is inappropriate in
Gregory Nutt's avatar
Gregory Nutt committed
	  this context (2016-12-17).
	* sscanf(): Add scansets to the scanf function. Enabled
	  CONFIG_LIBC_SCANSET option.  From  Aleksandr Vyhovanec (2016-12-17).
	* Xtensa ESP32: Fix context save logic when called in window ABI
	  configuration. Add an IDLE stack.  Don't depend on the mystery stack
	  received from the bootloader (2016-12-18).
	* Xtensa ESP32: Need to spill registers to memory as the last dying
	  action before switching to a new thread (2016-12-18).
	* ESP32 Serial: Add logic to prevent infinite loops in interrupt handler
	  (2016-12-18).
	* Xtensa ESP32: Automatically mount /proc at start-up (2016-12-19).
	* Xtensa ESP32: Corrects timer initialization and timer input frequency
	  (2016-12-19).
	* Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva.  From Young.Mu
	  (2016-12-20).
	* Xtensa ESP32: Missing prologue/epilogue macros on C callable function
	  (2016-12-20).
	* Xtensa ESP32: Update APP CPU startup logic to match current Expressif
	  example code.  Fix errors APP CPU startup (2016-12-20).
	* fs/procfs: Fix procfs status for SMP case (2016-12-20).
	* Xtensa ESP32:  Clock frequency is different if running from IRAM or is
	  booting from FLASH.   This is a booltloader issue (2016-12-20).
	* Xtensa ESP32:  Basic port is function in both single CPU and dual CPU
	  SMP configurations.  There is an NSH configuration for each CPU
	  configuration (2016-12-21).
	* STM32 F4: Merge in support for the Olimex STM32 P407 board (2016-12-21).
	* Xtensa ESP32: Add an OS test to verify the port (2016-12-22).
	* Xtensa ESP32:  Corrects a problem with dispatching to signal handlers:
	  Cannot vector directly to the signal handling function as in other ABIs
	  under the Xtensa Window ABI.  In that case, we need to go through a
	  tiny hook when performs the correct window call (call4) otherwise
	  registers will be scrambled in the signal handler (2016-12-22).
	* SAMV7 CAN: Make delete_filter functions more robust.  From Frank
	  Benkert (2016-12-23).
	* Xtensa ESP32: Add stack checking logic (2016-12-23).
	* sched note: record ID enumeration now results on constant values; ID
	  values do not change with configuration.  This makes writing
	  post-processing software much easier (2016-12-24).
	* STM32 F3: Forgot to update chip.h for STM32F303x[BC]'s 4 ADCs
	  (2016-12-24).
	* STM32 F4: Allow dma in 1 bit mode in STM32F4xxx.  From David Sidrane
	  (2016-12-24).
	* termios.h:  Fix CRTSCTS define to include input and output flow.
	  From  Lorenz Meier (2016-12-26).
	* SMP: Enforce this rule: Tasks which are normally restored when
	  sched_unlock() is called must remain pending (1) if we are in a
	  critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs
	  still have pre-emption disabled, i.e., g_cpu_schedlock is locked.  In
	  those cases, the release of the pending tasks must be deferred until
	  those conditions are met (2016-12-26).
7.20 2017-03-08 Gregory Nutt <gnutt@nuttx.org>
Gregory Nutt's avatar
Gregory Nutt committed

	* i.MX6 SMP/NSH configuration: Enable examples/smp test (2016-12-27).
	* SMP: There were certain conditions that we must avoid by preventing the
	  release of the pending tasks while withn a critical section.  But this
	  logic was incomplete; there was no logic to prevent other CPUs from
	  adding new, running tasks while on CPU is in a critical section.  This
	  commit corrects this.  This is matching logic in sched_addreadytorun to
	  avoid starting new tasks within the critical section (unless the CPU is
	  the holder of the lock).  The holder of the IRQ lock must be permitted
	  to do whatever it needs to do (2016-12-27).
	* i.MX6: Fix clearing GPT status register.  From Masayuki Ishikawa
	  (2016-12-28).
	* SMP: Make checks for CPU lock set more robust.  There are certains
	  conditions early in initialization on during interrupt handling where
	  things need to be done a little differently (2016-12-28).
	* sched_cpulocked:  Avoid use of spinlock.  That has been reported to
	  cause a deadlock (2016-12-28).
	* SMP: Fix a gap where we may try to make modifications to the task lists
	  without being in a critical sections.  That permits concurrent access to
	  the tasks lists and many subtle problems.  This fix just remains in the
	  critical section throughout the operation (and possible until the task
	  is restore in the event of a context switch).  Makes a big difference in
	  stability (2016-12-28).
	* SMP: Move sharable function to common file as irq_cpu_locked().  Use
	  irq_cpu_locked() in sched_unlock().  Use irq_cpu_locked() in
	  sched_removereadytorun() and sched_setpriority().  Use irq_cpu_locked()
	  in sched_mergepending() (2016-12-29).
	* Add configuration support for builds with Ubuntu under Windows 10
	  (2017-01-01).
	* Add support for Tom Thumb small mono-space font. From Alan Carvalho de
	  Assis (2017-01-03).
	* Alternative way to encode font spacing for Tom Thumb font (2017-01-04).
	* Graphics: Initial separation of font cache from graphics/nxterm.  Now in
	  libnx/nxfronts where it can be shared with other grapics applications
	  (2017-01-05).
	* Font cache:  Fix a reference counting issue: count not be initialized
	  when font cache created.  Fix initialization of a semaphore. Enforce
	  mutually exclusive access to the font cache Replace fixed-size array
	  with variable size link list. Font cache in libnx needs to use
	  context-specific memory allocators (2017-01-06).
	* Add debug assertion in libdtoa to catch attempts to use floating point
	  output formats from within an interrupt handler.  That will cause
	  assertions or crashes downstream because __dtoa will attempt to allocate
	  memory.  From Pierre-noel Bouteville (2017-01-06).
	* procfs:  Correct to snprintf-related errors in fs_procfsproc.c.
	  Resolves issue #24 (2017-01-07).
	* STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco board.
	  From Alan Carvalho de Assis (2017-01-07).
	* STM32F429i-DISCO: Enable keyboard input in nxwm configuration
	  (2017-01-07).
	* STM32F429i-DISCO:  Change NxWM cursor character from 137 (graphics
Gregory Nutt's avatar
Gregory Nutt committed
	  block) to 95 (underscore).  NxWM is configured to use a 7-bit character
	  set so 137 is not a valid character code (2017-01-07).
	* NX server: Correct message queue names.  Should not be at /dev, but
	  rather relative to /var/mqueue (2017-01-08).
	* NxWM configurations.  If using a 7-bit character set, then the cursor
	  character cannot be 137 (graphic block).  Use 95 (underscore) instead
	  (2017-01-08).
	* packed_struct replaced by begin_packed_struct and end_packed_struct.
	  From Aleksandr Vyhovanec (2017-01-09).
	* sched_note: Fix spinlock instrumentation.  From Masayuki Ishikawa
	  (2017-01-12).
	* SMP: Fix an error in critical section logic when performing a context
	  switch from an interrupt handler.  The g_cpu_irqset bit was not being
	  set for the CPU so other CPUs did not know about the critical section
	  (2017-01-13).
	* Kinetis: Added support for CHIP_MK60FN1M0VLQ12 chip.  From Maciej
	  Skrzypek (2017-01-13).
	* Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60.  From Maciej
	  Skrzypek (2017-01-13).
	* Kinetis Serial: Fixed compile error when UART5 is selected.  From Maciej
	  Skrzypek (2017-01-13).
	* Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected.  From
	  Maciej Skrzypek (2017-01-13).
	* Kinetis MCG: Wrong FRDIV set in MCG_C1.  From Maciej Skrzypek
	  (2017-01-13).
	* Kinetis:  New K60 has no Flex memory.  From Maciej Skrzypek (2017-01-13).
	* In all implementations of _exit(), use enter_critical_section() vs.
	  disabling local interrupts (2017-01-13).
	* i.MX6:  Corrects behavior of last SMP patch with i.MX6 (2017-01-13).
	* SMP Signals: Fix some SMP signal delivery logic. Was not handling some
	  critical sections correctly and was missing logic to signal tasks
	  running on other CPUs (2017-01-14).
	* STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum board.
	  From Alan Carvalho de Assis (2017-01-15).
	* Kinetis:  Add support for K64/K66 RTC lower half driver. From Neil
	  Hancock (2017-01-17).
	* Networking: Fixed some issues that prevented ipv6 to work with ipv4
	  enabled.  From Pascal Speck (2017-01-18).
	* STM32 Oneshot: Fix logic so that it can support multiple oneshot timers
	  (2017-01-18).
	* STM32L4:  Port fix for multiple oneshot timers from STM32.  Also fixes a
	  few issues with original STM32 implementation (2017-01-18).
Gregory Nutt's avatar
Gregory Nutt committed
	* SAM3/4: Add support for ATSAM4S4C.  From Wolfgang Reißnegger (2017-01-18).
	* Math library: Leverage optimized ARM functions from BSD license ARM file
	  (2017-01-19).
	* Math library optimatizations for FPU only apply to ARMv8 which is not
	  yet supported (2017-01-20).
	* Move optimized ARM memcpy functions from arch/arm/src/ to
	  libc/machine/.  This is necessary for the PROTECTED and KERNEL build
	  modes.  Otherwise, memcpy() will be built in to kernel space and not
	  accessible to applications (2017-01-20).
	* libc: Fix ARMv7-A/R memcpy assembly (2017-01-20).
	* ARM memcpy():  Use DWord vs. HWord offset.  ARM 32-bit instructions must
	  be aligned to DWord boundaries and this gives us more range in the jump
	  tables (2017-01-20).
	* Fix a compile error: in sched_cpuload.c:Line136, the variables ts and
	  secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0. However,
	  these variables are used regardless of CONFIG_CPULOAD_ONESHOT_ENTROPY at
	  lines~180:onwards.  From rg (2017-01-22).
	* CPU load: Correct computation of the nominal period to use when the
	  source is a oneshot timer (2017-01-22).
	* Kernel Modules:  Module initializer may now return a symbol table
	  (2017-01-22).
	* Modules:  Extend the module interface so that we can access symbols
	  exported by the module (2017-01-22).
	* Shared Libraries:  In the FLAT build mode, kernel modules may be used to
	  provide minimal shared library functionality (2017-01-22).
	* Shared libraries:  Add a non-standard dllfnc.h function to set the
	  symbol table (2017-01-23).
	* Olimex-stm32-p407: Add a NSH protected build configuration; Enable
	  procfs/ in all configurations (2017-01-23).
	* SMP:  Fix timer related issues:  Round robin and sporadic scheduling
	  were only being performed for tasks running on the CPU that processes
	  the system timer interrupt.  Similary, CPU load measurements were only
	  be processed for running on the CPU that receives the sampling interrupt
	  (2017-01-23).
	* STM32 F7: Added missing ARCH_HAVE_RESET for F7.  From David Sidrane
	  (2017-01-23).
	* STM32: Add missing STM32_BKP_BASE.  From David Sidrane (2017-01-23).
	* Configurations that enable OSTEST must not disable signals (2017-01-24).
	* Add missing sched_note_*() calls to sam4cm SMP functions (2017-01-24).
	* Fix return value if x is NaN.  From Aleksandr Vyhovanec (2017-01-25).
Gregory Nutt's avatar
Gregory Nutt committed
	* MMCSD_SDIO: Only wait for card ejected if card detection is supported.
	  From Alan Carvalho de Assis (2017-01-26).
	* LPC43 pinset definitions:  Add more 1 bit to pinset to reach
	  SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL.  From Alan Carvalho de Assis
	  (2017-01-26).
	* sched/modules:  Add support for dependencies between modules (2017-01-27).
	* Back out use on inline functions to access 16-bit registers.  The inline
	  functions were a work-around for misbehaving compiler years and years
	  ago.  The mon standard macro-ized version should work just fine
	  (2017-01-27).
	* Olimex STM32 P407: Add support for on-board microSD slot.  Does not
	  work... Currently all commands to the SD card timeout (2017-01-28).
	* libc/modlib:  Add build a configuration logic for a shared module
	  library (2017-01-29).
	* Module names are not needed in libc/modlib when the module library is
	  used only for shared library support (2017-01-29).
	* Shared Libs: Implement module based shared libraries for the PROTECTED
	  mode build (2017-01-29).
	* Typos withim mtd/ with Macronix MX25L.  In NuttX/drivers/mtd/Make.defs
	  letters X between M and 25 are missing.  Noted by Oleg Evseev
	  (2017-01-x30x).
	* SAME70-Xplained: Clone some recent SAMV71-XULT changes (2017-01-30).
	* Add capabilities() method to SDIO interface.  Remove
	  CONFIG_SDIO_WIDTH_D1_ONLY.  That should not be a global propertie, but
	  rather a capability/limitation of single slot when there may be multiple
	  slots (2017-01-31).
	* Removed dmasupported() method from the SDIO interface.  That is now a
	  bit in the capability set (2017-01-31).
	* STM32F7 SDMMC:  Add support for single bit operation on SDMMC2
	  (2017-01-31).
	* STM32F103-Minimum:  Fix a compile error.
	  CONFIG_STM32_TICKLESS_ONESHOT_TIMER is only defined in TICKLESS mode.
	  Somebody has been hand editing .config files (2017-01-31).
	* Timer logic: Add private function prototypes to eliminate a warning;
	  Functions should not be inline because the may recurse (2017-01-31).
	* STM32F7 SDMMC: Make sure that all SDMMC configuration variables begin
	  with STM32F7_; Eliminate CONFIG_SDMMC1/2_DMA altogether.  Does not
	  appear to be used (2017-01-31).
	* STM32F429-DISCO:  Move some board initialization logic that is not
	  usable because it lacks the configuration options to make it so
Gregory Nutt's avatar
Gregory Nutt committed
	  (2017-01-31).
	* Cancellation points:  Fix some backward logic in conditional compilation
	  (2017-02-02).
	* Soft links:  Add an implementation of readlink() (2017-02-03).
	* inode_find:  Now takes struct inode_desc_s type as input.  That
	  structure includes some data storage.  It was used within inode_find(),
	  but that means that the life of the data was the life of inode_find().
	  That data must persist longer.  It is now provided by the caller so that
	  the life of the data persists for the entire life of the caller
	  (2017-02-05).
	* tools/noteinfo.c: A hack tool that I use to analyze some sched_note
	  output.  Needs a home and may be useful to others (2017-02-05).
	* Pseudo File System:  Add support for soft links in the top-level psuedo
	  file system (2017-02-05).
	* Updates to Kinetis SDHC driver.  From Marc Rechté (2017-02-06).
	* SDIO interface: Handle all possible DMA combinations in all SDIO drivers
	  (2017-02-07).
	* up_timer_initialize() is named incorrectly.  The prefix should be the
	  architecture name, not up_ since it is private to the architecture.
	  up_timerisr() is similarly misnamed and should also be private since it
	  is used only with the xyz_timerisr.c files (2017-02-07).
	* MCG defines are based on the MCG feature configuration.  We define the
	  bits as a common set of names. This means that an index may be added to
	  a name i.e. LOCK is LOCK0 as that is the superset name.  From David
	  Sidrane (2017-02-07).
	* Fixes illdefined BOARD_FR_DIV with BOARD_FRDIV from MCG.  Original
	  BOARD_FR_DIV was never used - that is a good thing because the value ws
	  defined shifted and the code also shifted it.  From David Sidrane
	  (2017-02-07).
	* Added MCG settings that are defiend on the K64 SoC.  Added
	  BOARD_MCG_C2_FCFTRIM and BOARD_MCG_C2_LOCRE0 to configure the MCG_C2
	  register cleanup of some comments.  From David Sidrane (2017-02-07).
	* Better granualarity and errno checking of the board's MCG settings.
Gregory Nutt's avatar
Gregory Nutt committed
	  Allow for complete MCG_C2 definition from the boart.h file.  Moved
	  #ifdef out of code by setting default values.  Allow for individule bit
	  setting in MCG_C2 for BOARD_EXTCLOCK_MCG_C2, BOARD_MCG_C2_FCFTRIM,
	  BOARD_MCG_C2_LOCRE0.  Added range and sanity checking.  From David
	  Sidrane (2017-02-07).
	* Cosmetic changes from review of last PR (2017-02-07).
	* C library: Remove comments blocks before empty sections (2017-02-08).
	* C Library: Add a very limited, first step implementation of setvbuf().
	  This is a collaborative effort.  Alan Carvalho de Assis did the initial
	  prototype (2017-02-08).
	* setvbuf: Add support for configuration of line buffering (2017-02-08).
	* Bamboo-200E: Add netnsh configuration.  From Alan Carvalho de Assis
	  (2017-02-08).
	* USBMSC: Always set LUN readonly flag.  From Wolfgang Reißnegger
	  (2017-02-08).
	* drivers/lcd:  ssd1306_configspi() must have global scope (2017-02-09).
	* SIM:  Add readlink and setvbuf to nuttx-names.dat (2017-02-09).
	* setvbuf:  Add support for disabling I/O bufferin (2017-02-09).
	* setvbuf: Fix some compile errors in first build of logic to
	  enable/disable buffering (2017-02-09).
	* C Library:  Clean-up buffer selections in Kconfig (2017-02-09).
	* sem_open():  Fix a compiler error introduced with the setvbuf() changes
Gregory Nutt's avatar
Gregory Nutt committed
	* MMC/SD SDIO:  Some drivers need to start DMA before sending CMD24 and
	  some AFTER.  From Alan Carvalho de Assis (2017-02-09).
	* Kinetis SDHC driver fixes.  From Marc Rechté (2017-02-09).
	* Bambino-200E: Use .elf extension on all executables.  From Alan Carvalho
	  de Assis (2017-02-09).
	* Kinetis:  Add support for K66 family.  From David Sidrane (2017-02-09).
	* Created a kinetis MCG versioning scheme pulled in by Kinetis chip.h

	  The motivations is to version the IP blocks of the Kinetis K series
	  family of parts.

	  This added versioning and configuration features for the Kinetis MCG IP
	  block.

	  It is envisioned that in the long term as a chip is added.  The author
	  of the new chip definitions will either find the exact configuration in
	  an existing  chip define and add the new chip to it Or add the MCG
	  feature configuration #defines to the chip ifdef list in
	  arch/arm/include/kinetis/kinetis_mcg.h  In either case the author should
	  mark it as "Verified to Document Number:" taken from the reference manual.

	  The version KINETIS_MCG_VERSION_UKN has been applied to most all the
	  SoCs in the kinetis arch prior to this commit.

	  The exceptions are the CONFIG_ARCH_CHIP_MK60FN1M0VLQ12, All K64 and K66
	  which not have Verified MCG configurations.

	  From David Sidrane (2017-02-09).
	* Kinetis chip Adding K66 and including MCG versioning.  This includes
Gregory Nutt's avatar
Gregory Nutt committed
	  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

	  From David Sidrane (2017-02-09).
	* STM32: Fixes the bkp reference counter issue.  From David Sidrane
	  (2017-02-09).
	* STM32F7: Fixes the bkp reference counter issue.  From David Sidrane
	  (2017-02-09).
	* C Library: Add setbuf() which is a trivial wrapper around setvbuf()
	  (2017-02-09).
	* tools/mkconfig.c: Add logic to keep all of the buffering options in sync
Gregory Nutt's avatar
Gregory Nutt committed
	* VFS rename: Fix issues with rename to subdirectories and some softlink
	  issues (2017-02-11).
	* Add logic to VFS rename:  If target of rename exists and is a directory,
	  then the source file should be moved 'under' the target directory.
	  POSIX also requires that if the target is a file, then that old file
	  must be deleted (2017-02-11).
	* rename: An inode with no operations should be treated like a directory
	  for the purposes of rename (2017-02-12).
	* rename(): Correct more issues.  (1) Move to the root directory in the
	  pseudo file system, (2) Fix path naming calculation when the path is the
	  root directory of a mounted file system, and (3) dont't do the rename if
	  the source and destination of the rename are the same (2017-02-12).
	* Add basic fstat() support (2017-02-12).
Gregory Nutt's avatar
Gregory Nutt committed
	* Add fstat support to binfs (2017-02-12).
	* fstat:  Add fstat() support to romfs (2017-02-12).
	* fstat:  Add fstat() support to unionfs (2017-02-12).
	* I found an issue inside the cp15_coherent_dcache function in file,
	  arch/arm/src/armv7-r/cp15_coherent_dcache.S.

	  The "mcr CP15_BPIALLIS(r0)" instruction is used for invalidating entire
	  branch predictor.  But the problem is, since this is the generic code
	  and can be called on any armv7-r architecture based CPU's.  It is a
	  problem, if this instruction is called in uni processor configuration.
	  Because, BPIALLIS (c7, 0, c1, 6) instruction is only added as part of
	  the "Multiprocessing Extensions" (As per ARM® Architecture Reference
	  Manual /ARMv7-A and ARMv7-R edition)

	  So in my opinion, this instruction should be under SMP configuration. In
	  non-SMP configuration this instruction could become undefined.

	  From Manohara HK (2017-02-13).
	* fstat:  Add fstat() support to tmpfs (2017-02-13).
	* fstat:  Add fstat() support to nxffs (2017-02-13).
	* fstat:  Add fstat() support to nfs (2017-02-13).
	* NFS: Use clock_gettime() instead of deprecated gettimeofday()
	  (2017-02-13).
	* fstat:  Add fstat() support to FAT.  From Alan Carvalho de Assis
	  (2017-02-13).
	* ROMFS: stat() and fstat() should always indicate that directories are
	  executable (2017-02-13).
	* Kinetis SDHC - Enable clock after selected.  From David Sidrane
	  (2017-02-14).
	* 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

	  From David Sidrane (2017-02-10).
	* Add support for NXP Freedom-k66f development board.  From David Sidrane
	  (2017-02-14).
	* Kinetis: Define Alternate addresses for IP blocks in both AIPS0 &
	  AIPS1.  Added ALT version of RNGA, FTM2, DAC0 as a facility to later
	  define secondary access via AIPS1 to these peripherals.  From David
	  Sidrane (2017-02-14).
	* Kinetis:  Add support for K66.  From David Sidrane (2017-02-14).
	* procfs:  stat() left several fields in uninitialized state (2017-02-14).
	* hostfs: Add support for fstat() (2017-02-14).
Gregory Nutt's avatar
Gregory Nutt committed
	* procfs: Add support for fstat() (2017-02-14).
	* smartfs: Add support for fstat() (2017-02-14).
	* Kinetis Freedom K66F:  Add Ethernet support.  From David Sidrane
	  (2017-02-14).
	* LPC43 serial:  Correct conditional logic that selects /dev/ttySN.
	  Problem noted by Alan Carvalho de Assis (2017-02-14).
	* Add usbnsh config to Bambino 200E board.  From Alan Carvalho de Assis
	  (2017-02-14).
	* procfs:  Most stat() implementations were not initializating the
	  st_atime, st_ctime, and st_mtime fields (2017-02-15).
	* Kinetis Support RMII clock source select.  This defined the RMII clock
	  source select bits and allows the selection to be made via Kconfig.
	  From David Sidrane (2017-02-15).
	* Kinetis PWM:  Add FTM3 to PWM.  From David Sidrane (2017-02-15).
	* Kinetis:Freedom-K66F uses ENET_1588_CLKIN as RMII clock.   From David
	  Sidrane (2017-02-15).
	* Fix for SAMv7 SPI: DLYBS value was calculated, but never written to any
Gregory Nutt's avatar
Gregory Nutt committed
	  registers. This led to incorrect timings on the bus.  From Michael
	  Spahlinger (2017-02-16).
	* C library:  Add swab() (2017-02-16).
	* C library: Add strtoimax and strtoumax (2017-02-16).
	* C library:  Add ffs(), rindex(), an index().  Add strings.h.  Move
	  strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they belong in
	  strings.h.h, not string.h.  bzero, bcmp, and bcopy are legacy functions;
	  the contemporary counterparts should be used instead (2017-02-16).
	* Allow board to configure HSE clock in bypass-mode. This is needed to
	  enable HSE with Nucleo-F746ZG board.  From Jussi Kivilinna (2017-02-17).
	* C library: Add fstatfs(); fix  a reference counting error in fstat()
	  (2017-02-17).
	* Update cwchar.  Add cwctype (2017-02-17).
	* Add setbuf and setvbuf to cstdio (2017-02-17).
	* Port STM32L4 SAI driver from MDK (2017-02-17).
	* STM32L4:  Bring power management logic from Motrola MDK into NuttX
	  (2017-02-18).
	* STM32L4:  Bring LPTIM driver in from the Motorola MDK (2017-02-18).
	* drivers/sensors: Add driver for the ST L3GD20 3 axis gyro.  From
	  raiden00 (2017-02-19).
	* config/stm32f429i-disco: add support for the L3GD20 driver.  From
	  raiden00 (2017-02-19).
	* STM32L4 COMP: Port from Motorola MDK (2017-02-19).
	* Add twr-k64f120m config and fix some ENET related problems.  From Marc
	  Rechté (2017-02-19).
Gregory Nutt's avatar
Gregory Nutt committed
	* STM32 F7: stm32_allocateheap: allow use DTCM memory for heap.  STM32F7
	  has up to 128KiB of DTCM memory that is currently left unused.  This
	  change adds DTCM to main heap if CONFIG_STM32F7_DTCMEXCLUDE is not
	  enabled.  From Jussi Kivilinna (2017-02-20).
	* This should resolve issue #30: Audio Tone Generator and PWM Multiple
	  Output Channel options.  I don't actually have a setup to verify it,
	  however (2017-02-20).
	* drivers/tone.c:  50% duty needs to be expressed a a fixed precision
	  number (2017-02-21).
	* Kinetis:  Created a kinetis SIM versioning scheme pulled in by Kinetis
	  chip.h.

	  The motvations is to version the IP blocks of the Kinetis K series
	  family of parts.

	  This added versioning and configuration features for the Kinetis SIM IP
	  block.

	  It is envisioned that in the long term as a chip is added.  The author
	  of the new chip definitions will either find the exact configuration in
	  an existing chip define and add the new chip to it Or add the SIM
	  feature configuration #defines to the chip ifdef list in
	  arch/arm/include/kinetis/kinetis_sim.h  In either case the author should
	  mark it as "Verified to Document Number:"  taken from the reference
	  manual.

	  The version KINETIS_SIM_VERSION_UKN has been applied to most all the
	  SoCs in the kinetis arch prior to this commit.

	  The exceptions are the CONFIG_ARCH_CHIP_MK60FN1M0VLQ12, All K64 and K66
	  which not have Verified SIM configurations.

	  From David Sidrane (2017-02-21).
	* Created a kinetis PMC versioning scheme pulled in by Kinetis chip.h.

	  The motivation is to version the IP blocks of the Kinetis K series
	  family of parts.  This added versioning and configuration features for
	  the Kinetis PMC IP block. It is envisioned that in the long term as a
	  chip is added. The author of the new chip definitions will either find
	  the exact configuration in an existing chip define and add the new chip
	  to it Or add the PMC fature configuration #defines to the chip ifdef
	  list in arch/arm/include/kinetis/kinetis_pmc.h  In either case the
	  author should mark it as "Verified to Document Number:"  taken from the
	  reference manual.

	  The version KINETIS_PMC_VERSION_UKN has been applied to most all the
	  SoCs in the kinetis arch prior to this commit.

	  The exceptions are the CONFIG_ARCH_CHIP_MK60FN1M0VLQ12,
	  CONFIG_ARCH_CHIP_MK20DXxxxVLH7 All K64 and K66 have been verified PMC
	  configurations.  From David Sidrane (2017-02-22).
Gregory Nutt's avatar
Gregory Nutt committed
	* Kinetis: kinetis_clockconfig uses the correct ACKISO. ACKISO is located
	  in the PMC_REGSC on the majority of the Kinetis SoCs. With the exception
	  of the MK40DXxxxZVLQ10 where ACKISO is located in LLWU_CS (2017-02-22).
	* Kinetis: Refactor you use SIM_SOPT2_PLLFLLSEL, added warning. The
	  warning has been added because: SIM_SOPT2_PLLFLLSEL is a clock selection
	  that may feed many clock subsystem:  USB, TPM, SDHCSRC, LPUARTSRC.
	  Therefore, there needs to be a global board level setting to select  the
	  source for SIM_SOPT2_PLLFLLSEL and then  derive all the  sub selections
	  and proper fractions/divisors for each modules clock.  From David
	  Sidrane (2017-02-22).
	* Add support to QEncoder on STM32F103Minimum board.   From Alan Carvalho
	  de Assis (2017-02-23).
	* Olimex STM32 p407:  Add external SRAM support.  Unfortunately not usable
	  or testable unless you also disable the serial console (2017-02-23).
	* drivers/spi/Kconfig:  There is too much SPI in the configuration menu;
	  SPI Driver Support menu is empty.  From Maciej Wójcik (2017-02-23).
	* Kinetis:  SIM add paramiterized SIM_CLKDIVx_xxFRAC|DIV macros. The makes
	  for cleaner board definitions.  From David Sidrane (2017-02-23).
Gregory Nutt's avatar
Gregory Nutt committed
	* kinetis_enet.c add #define for number of loops for auto negotiation to
	  complete.  From Marc Rechté (2017-02-23).
	* STM32F4 Discovery: Fix issues with QEncoder support.  From Alan Carvalho
	  de Assis (2017-02-23).
	* sigtimedwait:  When timer expires, up_unblock_task() is called.  This is
	  okay in the single CPU case because interrupts are disable in the timer
	  interrupt handler.  But it is insufficient in the SMP case.  enter_ and
	  leave_critical_section() must be called in order to manage spinlocks
	  correctly (2017-02-23).
	* Fix QEncoder driver, based on STM32L4 driver.  From Alan Carvalho de
	  Assis (2017-02-23).
Gregory Nutt's avatar
Gregory Nutt committed
	* STM32 QEncoder.  Enable clocking to the timer on QE setup; disable clock
	  on QE teardown (2017-02-23).
	* Kinetis:  Extend clockconfig to support SOPT2_PLLFLLSEL and
	  SIM_CLKDIV3.  A board.h file can now specify the: 1)
	  BOARD_SOPT2_PLLFLLSEL to select the output of the SIM_SOPT2 MUX from:
	  MCGFLLCLK, MCGPLLCLK, USB1PFD, and IRC48MHZ.  2) If it defines
	  BOARD_SIM_CLKDIV3_FREQ then it must define BOARD_SIM_CLKDIV3_PLLFLLFRAC
	  and BOARD_SIM_CLKDIV3_PLLFLLDIV which wil be used to cpnfigure
	  SIM_CLKDIV3 [PLLFLLFRAC, PLLFLLDIV].  From David Sidrane (2017-02-23).
	* Kinetis serial:  Added configurable 1|2 stop bits. HAVE_SERIAL_CONSOLE
	  -> HAVE_UART_CONSOLE to be consistent with HAVE_LPUART_CONSOLE naming.
	  From David Sidrane (2017-02-23).
	* Kinetis:  Add LPUART serial driver and Clock configuartaion to
	  freedom-k66f board.  Pin out LPUART0 for testing.  Define
	  BOARD_SOPT2_PLLFLLSEL ti select MCGPLLCLK.  Define
	  BOARD_SIM_CLKDIV3_FREQ etal to provide BOARD_LPUART0_FREQ.  From David
	  Sidrane (2017-02-25).
	* QEncoder: Add mechanism to assure that architecture-specific IOCTL
	  commands do not overlap (2017-02-25).
	* include/nuttx/analog:  Add an ioctl.h header file to coordinate analogic
	  driver IOCTL commands (2017-02-25).
	* CAN: Add infrastructure to assure that all CAN IOCTL commands are
	  uniquely numbered (2017-02-25).
	* Wireless and TSC: Add infrastructure to assure that all IOCTL commands
	  are uniquely numbered (2017-02-25).
	* Add basic support for the STM32F334 and Nucleo F334R8 board.  From
	  Mateusz Szafoni (2017-02-16).
	* SAM3/4: GPIO bit numbering typo fixes.  From Wolfgang Reißnegger
	  (2017-02-26).
	* Add SDCard support over SPI on STM32F103-Minimum board.  From Alan
	  Carvalho de Assis (2017-02-26).
	* option to enable Memory Card debug output was hidden with SD cards
	  connected through SPI.   From Maciej Wójcik (2017-02-27).
	* Kinetis serial:  Fixed up_rxint - did not disable the RX interuppts.
	  There was an OR where and AND NOT was needed.  From David Sidrane
	  (2017-02-27).
	* Kinetis:Add the configuring SIM_CLKDIV2[USBFRAC, USBDIV] in
	  kinetis_clockconfig.    If a board.h provides BOARD_SIM_CLKDIV2_FREQ it
	  will configure the SIM_CLKDIV2 based on the additional provided
	  BOARD_SIM_CLKDIV2_USBFRAC and BOARD_SIM_CLKDIV2_USBDIV.  The reason for
	  doing this globaly is that the output the SIM_CLKDIV2 divisor may be
	  also used for other IP blocks in future configurations (as is done for
	  SIM_CLKDIV3).   From David Sidrane (2017-02-27).
	* Kinetis:  Refactor clocking in kinetis_usbdev.  (1) Removed
	  SIM_CLKDIV2[USBFRAC, USBDIV] setting as it is now, done in
	  kinetis_clockconfig, (2) Use BOARD_USB_CLKSRC to select the clock source
	  to the USB block, (3) Removed CONFIG_TEENSY_3X_OVERCLOCK from the driver
	  as the board.h will now provide BOARD_SIM_CLKDIV2_USBDIV and
	  BOARD_SIM_CLKDIV2_USBFRAC to the kinetis_clockconfig.  From David
	  Sidrane (2017-02-27).
	* Kinetis:  Use BOARD_xxxx to drive system clocking: (1) Shifted the clock
	  speed of MK20DX128VLH5 to 48 Mhz to be able to uses USB. (2) Set
	  BOARD_OUTDIV3 to 0 - there is no BOARD_OUTDIV3 on a MK20DX128VLH5 or
	  K20DX256VLH7, (3) Added BOARD_SOPT2_PLLFLLSEL and BOARD_SOPT2_FREQ along
	  with settings for BOARD_SIM_CLKDIV2_USBFRAC and BOARD_SIM_CLKDIV2_USBDIV
	  base on the BOARD_SOPT2_FREQ.  From David Sidrane (2017-02-27).
	* Kinetis:  Define uart and lpuart versions of [early]serialinit.  Add
	  serial init to centralize UART/LPUART management.  Use kinetis_ not up_
	  where arch specific.  Defined kinetis_[lp]uart_[early]serialinit to
	  facilitate bring up both UARTs and LPUARTs as devices and a console.
	  Support ordering and merging of serial devices names.  From David
	  Sidrane (2017-02-27).
	* Adapt more drivers to utilize the IRQ argument feature (2107-02-28).