aboutsummaryrefslogtreecommitdiff
path: root/nuttx/drivers/power/pm_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/drivers/power/pm_internal.h')
-rw-r--r--nuttx/drivers/power/pm_internal.h210
1 files changed, 0 insertions, 210 deletions
diff --git a/nuttx/drivers/power/pm_internal.h b/nuttx/drivers/power/pm_internal.h
deleted file mode 100644
index f98624f15..000000000
--- a/nuttx/drivers/power/pm_internal.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/****************************************************************************
- * drivers/power/pm_internal.h
- *
- * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-#ifndef __DRIVERS_POWER_PM_INTERNAL_H
-#define __DRIVERS_POWER_PM_INTERNAL_H
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <semaphore.h>
-#include <queue.h>
-
-#include <nuttx/power/pm.h>
-#include <nuttx/wqueue.h>
-
-#ifdef CONFIG_PM
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-/* Configuration ************************************************************/
-
-#ifndef CONFIG_SCHED_WORKQUEUE
-# warning "Worker thread support is required (CONFIG_SCHED_WORKQUEUE)"
-#endif
-
-/* Convert the time slice interval into system clock ticks.
- *
- * CONFIG_PM_SLICEMS provides the duration of one time slice in milliseconds.
- * CLOCKS_PER_SEC provides the number of timer ticks in one second.
- *
- * slice ticks = (CONFIG_PM_SLICEMS msec / 1000 msec/sec) /
- * (CLOCKS_PER_SEC ticks/sec)
- */
-
-#define TIME_SLICE_TICKS ((CONFIG_PM_SLICEMS * CLOCKS_PER_SEC) / 1000)
-
-/* Function-like macros *****************************************************/
-/****************************************************************************
- * Name: pm_lock
- *
- * Descripton:
- * Lock the power management registry. NOTE: This function may return
- * an error if a signal is received while what (errno == EINTR).
- *
- ****************************************************************************/
-
-#define pm_lock() sem_wait(&g_pmglobals.regsem);
-
-/****************************************************************************
- * Name: pm_unlock
- *
- * Descripton:
- * Unlock the power management registry.
- *
- ****************************************************************************/
-
-#define pm_unlock() sem_post(&g_pmglobals.regsem);
-
-/****************************************************************************
- * Public Types
- ****************************************************************************/
-/* This structure encapsulates all of the global data used by the PM module */
-
-struct pm_global_s
-{
- /* state - The current state (as determined by an explicit call to
- * pm_changestate()
- * recommended - The recommended state based on the PM algorithm in
- * function pm_update().
- * mndex - The index to the next slot in the memory[] array to use.
- * mcnt - A tiny counter used only at start up. The actual
- * algorithm cannot be applied until CONFIG_PM_MEMORY
- * samples have been collected.
- */
-
- uint8_t state;
- uint8_t recommended;
- uint8_t mndx;
- uint8_t mcnt;
-
- /* accum - The accumulated counts in this time interval
- * thrcnt - The number of below threshold counts seen.
- */
-
- int16_t accum;
- uint16_t thrcnt;
-
- /* This is the averaging "memory." The averaging algorithm is simply:
- * Y = (An*X + SUM(Ai*Yi))/SUM(Aj), where i = 1..n-1 and j= 1..n, n is the
- * length of the "memory", Ai is the weight applied to each value, and X is
- * the current activity.
- *
- * CONFIG_PM_MEMORY provides the memory for the algorithm. Default: 2
- * CONFIG_PM_COEFn provides weight for each sample. Default: 1
- */
-
-#if CONFIG_PM_MEMORY > 1
- int16_t memory[CONFIG_PM_MEMORY-1];
-#endif
-
- /* stime - The time (in ticks) at the start of the current time slice */
-
- uint32_t stime;
-
- /* This semaphore manages mutually exclusive access to the power management
- * registry. It must be initialized to the value 1.
- */
-
- sem_t regsem;
-
- /* For work that has been deferred to the worker thread */
-
- struct work_s work;
-
- /* registry is a singly-linked list of registered power management
- * callback structures. To ensure mutually exclusive access, this list
- * must be locked by calling pm_lock() before it is accessed.
- */
-
- sq_queue_t registry;
-};
-
-/****************************************************************************
- * Public Data
- ****************************************************************************/
-
-#undef EXTERN
-#if defined(__cplusplus)
-# define EXTERN extern "C"
-extern "C"
-{
-#else
-# define EXTERN extern
-#endif
-
-/* All PM global data: */
-
-EXTERN struct pm_global_s g_pmglobals;
-
-/************************************************************************************
- * Public Function Prototypes
- ************************************************************************************/
-
-/****************************************************************************
- * Name: pm_update
- *
- * Description:
- * This internal function is called at the end of a time slice in order to
- * update driver activity metrics and recommended states.
- *
- * Input Parameters:
- * accum - The value of the activity accumulator at the end of the time
- * slice.
- *
- * Returned Value:
- * None.
- *
- * Assumptions:
- * This function may be called from a driver, perhaps even at the interrupt
- * level. It may also be called from the IDLE loop at the lowest possible
- * priority level. To reconcile these various conditions, all work is
- * performed on the worker thread at a user-selectable priority.
- *
- ****************************************************************************/
-
-EXTERN void pm_update(int16_t accum);
-
-#undef EXTERN
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* CONFIG_PM */
-#endif /* #define __DRIVERS_POWER_PM_INTERNAL_H */