mirror of
https://github.com/apache/nuttx.git
synced 2026-06-02 01:21:26 +08:00
boards/boardctl.c: Expose power manager function through boardctl interface.
This commit is contained in:
@@ -234,6 +234,56 @@ static inline int boardctl_usbdevctrl(FAR struct boardioc_usbdev_ctrl_s *ctrl)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: boardctl_pmctrl
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Handle power state transition and query command.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* ctrl - Described the power state transition and query command.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* On success zero (OK) is returned; -1 (ERROR) is returned on failure
|
||||||
|
* with the errno variable to to indicate the nature of the failure.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
static inline int boardctl_pmctrl(FAR struct boardioc_pm_ctrl_s *ctrl)
|
||||||
|
{
|
||||||
|
int ret = OK;
|
||||||
|
|
||||||
|
switch (ctrl->action)
|
||||||
|
{
|
||||||
|
case BOARDIOC_PM_ACTIVITY:
|
||||||
|
pm_activity(ctrl->domain, ctrl->priority);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BOARDIOC_PM_STAY:
|
||||||
|
pm_stay(ctrl->domain, ctrl->state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BOARDIOC_PM_RELAX:
|
||||||
|
pm_relax(ctrl->domain, ctrl->state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BOARDIOC_PM_STAYCOUNT:
|
||||||
|
ctrl->count = pm_stay(ctrl->domain, ctrl->state);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BOARDIOC_PM_QUERYSTATE:
|
||||||
|
ctrl->state = pm_querystate(ctrl->domain);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ret = -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -341,6 +391,25 @@ int boardctl(unsigned int cmd, uintptr_t arg)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
/* CMD: BOARDIOC_PM_CONTROL
|
||||||
|
* DESCRIPTION: anage power state transition and query
|
||||||
|
* ARG: A pointer to an instance of struct boardioc_pm_ctrl_s
|
||||||
|
* CONFIGURATION: CONFIG_PM
|
||||||
|
* DEPENDENCIES: None
|
||||||
|
*/
|
||||||
|
|
||||||
|
case BOARDIOC_PM_CONTROL:
|
||||||
|
{
|
||||||
|
FAR struct boardioc_pm_ctrl_s *ctrl =
|
||||||
|
(FAR struct boardioc_pm_ctrl_s *)arg;
|
||||||
|
|
||||||
|
DEBUGASSERT(ctrl != NULL);
|
||||||
|
ret = boardctl_pmctrl(ctrl);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BOARDCTL_UNIQUEID
|
#ifdef CONFIG_BOARDCTL_UNIQUEID
|
||||||
/* CMD: BOARDIOC_UNIQUEID
|
/* CMD: BOARDIOC_UNIQUEID
|
||||||
* DESCRIPTION: Return a unique ID associated with the board (such
|
* DESCRIPTION: Return a unique ID associated with the board (such
|
||||||
|
|||||||
+46
-13
@@ -45,6 +45,10 @@
|
|||||||
|
|
||||||
#include <nuttx/fs/ioctl.h>
|
#include <nuttx/fs/ioctl.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
# include <nuttx/pm.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_VNCSERVER
|
#ifdef CONFIG_VNCSERVER
|
||||||
# include <nuttx/nx/nx.h>
|
# include <nuttx/nx/nx.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -89,6 +93,12 @@
|
|||||||
* CONFIGURATION: CONFIG_BOARDCTL_RESET
|
* CONFIGURATION: CONFIG_BOARDCTL_RESET
|
||||||
* DEPENDENCIES: Board logic must provide the board_reset() interface.
|
* DEPENDENCIES: Board logic must provide the board_reset() interface.
|
||||||
*
|
*
|
||||||
|
* CMD: BOARDIOC_PM_CONTROL
|
||||||
|
* DESCRIPTION: Manage power state transition and query
|
||||||
|
* ARG: A pointer to an instance of struct boardioc_pm_ctrl_s
|
||||||
|
* CONFIGURATION: CONFIG_PM
|
||||||
|
* DEPENDENCIES: None
|
||||||
|
*
|
||||||
* CMD: BOARDIOC_UNIQUEID
|
* CMD: BOARDIOC_UNIQUEID
|
||||||
* DESCRIPTION: Return a unique ID associated with the board (such as a
|
* DESCRIPTION: Return a unique ID associated with the board (such as a
|
||||||
* serial number or a MAC address).
|
* serial number or a MAC address).
|
||||||
@@ -192,18 +202,19 @@
|
|||||||
#define BOARDIOC_FINALINIT _BOARDIOC(0x0002)
|
#define BOARDIOC_FINALINIT _BOARDIOC(0x0002)
|
||||||
#define BOARDIOC_POWEROFF _BOARDIOC(0x0003)
|
#define BOARDIOC_POWEROFF _BOARDIOC(0x0003)
|
||||||
#define BOARDIOC_RESET _BOARDIOC(0x0004)
|
#define BOARDIOC_RESET _BOARDIOC(0x0004)
|
||||||
#define BOARDIOC_UNIQUEID _BOARDIOC(0x0005)
|
#define BOARDIOC_PM_CONTROL _BOARDIOC(0x0005)
|
||||||
#define BOARDIOC_MKRD _BOARDIOC(0x0006)
|
#define BOARDIOC_UNIQUEID _BOARDIOC(0x0006)
|
||||||
#define BOARDIOC_ROMDISK _BOARDIOC(0x0007)
|
#define BOARDIOC_MKRD _BOARDIOC(0x0007)
|
||||||
#define BOARDIOC_APP_SYMTAB _BOARDIOC(0x0008)
|
#define BOARDIOC_ROMDISK _BOARDIOC(0x0008)
|
||||||
#define BOARDIOC_OS_SYMTAB _BOARDIOC(0x0009)
|
#define BOARDIOC_APP_SYMTAB _BOARDIOC(0x0009)
|
||||||
#define BOARDIOC_BUILTINS _BOARDIOC(0x000a)
|
#define BOARDIOC_OS_SYMTAB _BOARDIOC(0x000a)
|
||||||
#define BOARDIOC_USBDEV_CONTROL _BOARDIOC(0x000b)
|
#define BOARDIOC_BUILTINS _BOARDIOC(0x000b)
|
||||||
#define BOARDIOC_NX_START _BOARDIOC(0x000c)
|
#define BOARDIOC_USBDEV_CONTROL _BOARDIOC(0x000c)
|
||||||
#define BOARDIOC_VNC_START _BOARDIOC(0x000d)
|
#define BOARDIOC_NX_START _BOARDIOC(0x000d)
|
||||||
#define BOARDIOC_NXTERM _BOARDIOC(0x000e)
|
#define BOARDIOC_VNC_START _BOARDIOC(0x000e)
|
||||||
#define BOARDIOC_NXTERM_IOCTL _BOARDIOC(0x000f)
|
#define BOARDIOC_NXTERM _BOARDIOC(0x000f)
|
||||||
#define BOARDIOC_TESTSET _BOARDIOC(0x0010)
|
#define BOARDIOC_NXTERM_IOCTL _BOARDIOC(0x0010)
|
||||||
|
#define BOARDIOC_TESTSET _BOARDIOC(0x0011)
|
||||||
|
|
||||||
/* If CONFIG_BOARDCTL_IOCTL=y, then board-specific commands will be support.
|
/* If CONFIG_BOARDCTL_IOCTL=y, then board-specific commands will be support.
|
||||||
* In this case, all commands not recognized by boardctl() will be forwarded
|
* In this case, all commands not recognized by boardctl() will be forwarded
|
||||||
@@ -212,7 +223,7 @@
|
|||||||
* User defined board commands may begin with this value:
|
* User defined board commands may begin with this value:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define BOARDIOC_USER _BOARDIOC(0x0011)
|
#define BOARDIOC_USER _BOARDIOC(0x0012)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Type Definitions
|
* Public Type Definitions
|
||||||
@@ -220,6 +231,28 @@
|
|||||||
|
|
||||||
/* Structures used with IOCTL commands */
|
/* Structures used with IOCTL commands */
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
/* Arguments passed with the BOARDIOC_PM_CONTROL command */
|
||||||
|
|
||||||
|
enum boardioc_action_e
|
||||||
|
{
|
||||||
|
BOARDIOC_PM_ACTIVITY = 0,
|
||||||
|
BOARDIOC_PM_STAY,
|
||||||
|
BOARDIOC_PM_RELAX,
|
||||||
|
BOARDIOC_PM_STAYCOUNT,
|
||||||
|
BOARDIOC_PM_QUERYSTATE
|
||||||
|
};
|
||||||
|
|
||||||
|
struct boardioc_pm_ctrl_s
|
||||||
|
{
|
||||||
|
uint32_t action;
|
||||||
|
uint32_t domain;
|
||||||
|
uint32_t state;
|
||||||
|
uint32_t count;
|
||||||
|
uint32_t priority;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BOARDCTL_MKRD
|
#ifdef CONFIG_BOARDCTL_MKRD
|
||||||
/* Describes the RAM disk to be created */
|
/* Describes the RAM disk to be created */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user