85bcf1bd4c
Alan Carvalho de Assis has submitted the ICL and we can migrate the licenses to Apache. Gregory Nutt has submitted the SGA and we can migrate the licenses to Apache. Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
96 lines
3.4 KiB
C
96 lines
3.4 KiB
C
/****************************************************************************
|
|
* arch/arm/src/stm32f0l0g0/stm32_idle.c
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership. The
|
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Included Files
|
|
****************************************************************************/
|
|
|
|
#include <arch/board/board.h>
|
|
#include <nuttx/config.h>
|
|
|
|
#include <nuttx/arch.h>
|
|
|
|
#include "arm_internal.h"
|
|
|
|
/****************************************************************************
|
|
* Pre-processor Definitions
|
|
****************************************************************************/
|
|
|
|
/* Does the board support an IDLE LED to indicate that the board is in the
|
|
* IDLE state?
|
|
*/
|
|
|
|
#if defined(CONFIG_ARCH_LEDS) && defined(LED_IDLE)
|
|
# define BEGIN_IDLE() board_autoled_on(LED_IDLE)
|
|
# define END_IDLE() board_autoled_off(LED_IDLE)
|
|
#else
|
|
# define BEGIN_IDLE()
|
|
# define END_IDLE()
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* Public Functions
|
|
****************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* Name: up_idle
|
|
*
|
|
* Description:
|
|
* up_idle() is the logic that will be executed when there is no other
|
|
* ready-to-run task. This is processor idle time and will continue until
|
|
* some interrupt occurs to cause a context switch from the idle task.
|
|
*
|
|
* Processing in this state may be processor-specific. e.g., this is where
|
|
* power management operations might be performed.
|
|
*
|
|
****************************************************************************/
|
|
|
|
void up_idle(void)
|
|
{
|
|
#if defined(CONFIG_SUPPRESS_INTERRUPTS) || defined(CONFIG_SUPPRESS_TIMER_INTS)
|
|
/* If the system is idle and there are no timer interrupts, then process
|
|
* "fake" timer interrupts. Hopefully, something will wake up.
|
|
*/
|
|
|
|
nxsched_process_timer();
|
|
#else
|
|
|
|
/* If the g_dma_inprogress is zero, then there is no DMA in progress. This
|
|
* value is needed in the IDLE loop to determine if the IDLE loop should
|
|
* go into lower power power consumption modes. According to the LPC17xx
|
|
* User Manual: "The DMA controller can continue to work in Sleep mode, and
|
|
* has access to the peripheral SRAMs and all peripheral registers. The
|
|
* flash memory and the Main SRAM are not available in Sleep mode, they are
|
|
* disabled in order to save power."
|
|
*/
|
|
|
|
#ifdef CONFIG_STM32F0L0G0_GPDMA
|
|
if (g_dma_inprogress == 0)
|
|
#endif
|
|
{
|
|
/* Sleep until an interrupt occurs in order to save power */
|
|
|
|
BEGIN_IDLE();
|
|
asm("WFI");
|
|
END_IDLE();
|
|
}
|
|
#endif
|
|
}
|