Commit Graph

26 Commits

Author SHA1 Message Date
Ramesh Thomas 8367056efa power_mgmt: Rename _sys_soc_resume notification disabling API
The API to disable _sys_soc_resume notification is currently
called _sys_soc_disable_wake_event_notification. This is
misleading because it is possible that the ISR from which
_sys_soc_resume is called could be from a different interrupt
with higher priority that happened before interrupts were
enabled. More accurately, it is a notification of exit from
kernel idling after pm operations.

Jira: ZEP-1271
Change-Id: I83747f2cacac1bc17f135d12f4aa4478970fc02d
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-11-11 20:40:54 +00:00
Julien Delayen f540cbc5c5 power: Add ARC power states and update sample
Add Low Power States support to the power shim layer
and show the usage in the quark_se sample.

States are defined as follow:
- SYS_POWER_STATE_CPU_LPS: SS2 with LPSS enabled
- SYS_POWER_STATE_CPU_LPS_1: SS2 with LPSS disabled
- SYS_POWER_STATE_CPU_LPS_2: SS1 with LPSS disabled

Jira: ZEP-994

Change-Id: Ie4b93f6e539cb53fc035be00280b66b2cb0d9fea
Signed-off-by: Julien Delayen <julien.delayen@intel.com>
2016-11-11 03:28:54 +00:00
Anas Nashif d622b09bc0 samples: tests: remove obsolete KERNEL_TYPE and kernel variables
Remove those from Makefiles and testcase.ini, we now support unified kernel
only and sanitycheck script now knows how to deal with this.

Change-Id: I853ebcadfa7b56a4de5737d95f2ba096babb2e13
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-04 15:47:25 -04:00
Ramesh Thomas 2375f05f2e samples: power_mgmt: Fix README inconsistent info
Update outdated content in the README file

Change-Id: I2f2576bd63915f4e471d4c9185b82aa2ab57bc24
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-11-03 14:48:38 -07:00
Ramesh Thomas b21f2fad3d samples: power_mgmt: Make samples unified kernel based
Port the sampe apps to use unified kernel and its apis.

Change-Id: Iee0a21df8008f27cfdbc9db50b66bd183d531f9c
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-11-03 14:43:50 -07:00
Julien Delayen fec01af64a power: Update Quark SE PM layer with QMSI 1.3
QMSI 1.3 natively supports restoring the SoC and peripherals
after sleep.

The Zephyr Power Management shim layer is updated
in order to support QMSI functions.

The following functions have been added:
void _sys_soc_set_power_state(enum power_state);
void _sys_soc_power_state_post_ops(void);

In order to fully support deep sleep, the function
_sys_soc_set_power_state now support saving and
restoring CPU context and returns to the application.

_sys_soc_set_power_state function also abstracts
QMSI cpu states and enable the application to choose
between C1/C2 or C2LP states.

The QMSI power states are mapped as follows:
SYS_SOC_POWER_STATE_CPU_LPS -> power_cpu_c2lp
SYS_SOC_POWER_STATE_CPU_LPS_1 -> power_cpu_c2
SYS_SOC_POWER_STATE_CPU_LPS_2 -> power_cpu_c1
SYS_SOC_POWER_STATE_DEEP_SLEEP -> power_soc_deep_sleep
SYS_SOC_POWER_STATE_DEEP_SLEEP_1 -> power_soc_sleep

The following functions have been removed:
void _sys_soc_set_power_policy(uint32_t pm_policy);
int _sys_soc_get_power_policy(void);
FUNC_NORETURN void _sys_soc_put_deep_sleep(void);
void _sys_soc_put_low_power_state(void);
void _sys_soc_deep_sleep_post_ops(void);

Those changes are propagated to the samples.
All calls to QMSI are removed.

Jira: ZEP-1045, ZEP-993, ZEP-1047

Change-Id: I26822727985b63be0a310cc3590a3e71b8e72c8c
Signed-off-by: Julien Delayen <julien.delayen@intel.com>
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-11-03 21:31:30 +00:00
Ramesh Thomas c7ce43a7b9 samples: power_mgmt: Create unified kernel version of power mgr app
Created unified kernel build setup for the power_mgr sample
app. Currently it shares the same source file between
micro and unified kernels. This is to help test and add new
features from unified kernel. In future, separate source will
be created for unified kernel. After transition is completed,
microkernel version will be removed.

Jira: ZEP-1140
Change-Id: Ic3a0b5cb3adc0749a7084ad785a041fee5875f56
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-10-27 21:18:44 +00:00
Ramesh Thomas c4c0ed414b power_mgmt: Reduce complexity in handling of power hooks
Simplified some documentation, removing inconsistencies and making
it easier to understand by separating PM infrastructure areas and
soc specific components that implement the hooks.

Removed the DEVICE_SUSPEND_ONLY policy as it is redundant and
causes high complexity in the flow. It is also not practical
to use it because it was meant to be used without doing CPU or SOC
low power state operations. This means it would do device PM
operations in the ISR of the system timer used by the scheduler.
This can disrupt the scheduler time.

Added a check of a flag around the notification sent from the ISR
of the wake event and created APIs to set/clear it. This will
allow disabling the notification when not needed from
_sys_soc_suspend().

Jira: ZEP-972
Change-Id: Id7aa7d2683384eabed518d4efac446ecc84c3498
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-10-05 10:05:42 +00:00
Ramesh Thomas cda7bf3b2a samples: power_mgmt: Fix compile bugs flagged by llvm
Change-Id: Id062f1d6f1eef6b98d040dcd16eb34fa4bd8bb30
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-10-04 12:27:56 +00:00
amirkapl c490219d1e power_mgmt: Update sample and drivers according to new pm device API
Update the power sample and drivers with the new device driver power
management API using the existing logic

Jira: ZEP-954
Change-Id: Idd94232e458767635973e94e9fc673c01612c1e2
Signed-off-by: Amir Kaplan <amir.kaplan@intel.com>
2016-09-22 00:23:43 +00:00
Anas Nashif 5363d14a9e boards: rename Quark SE Devboard to Quark SE C1000
This board now has an official name and will be available soon:

http://www.intel.com/content/www/us/en/embedded/products/quark/mcu/se-soc/overview.html

Jira: ZEP-758
Change-Id: Ia16d33722308cf81471321c3063bdc75055a4d50
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-09-16 03:10:31 +00:00
Anas Nashif 4589f2c468 samples: use printf/printk directly instead of macros
In many cases there is no need to define a macro for printing to
the console, just use the correct variant directly.

Jira: ZEP-240
Change-Id: I9952deda4bfc60424f01fca2443d037562d13d0d
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-09-14 16:56:02 +00:00
Andrew Boie 7bc48f69c2 Revert "misc: Remove generic PRINT macros from power samples"
This reverts commit 6f992e2119.

Change-Id: I14767699b02d147a245db1cb8ac5cef430782232
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-08-23 13:19:45 -07:00
Andrew Boie d00a7f800e samples: power: quark_se: build for sanitycheck runs
Change-Id: Ib5e6365cc9f612c453ed2944f8370c11557ce6a8
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-08-15 09:38:53 -07:00
Juan Manuel Cruz Alcaraz 6f992e2119 misc: Remove generic PRINT macros from power samples
Remove generic PRINT macros from power samples and replace
with SYS_LOG  module.

Jira: ZEP-240

Change-Id: I65a1caf2e3c2bd78f37d6443f180d674e9562af3
Signed-off-by: Juan Manuel Cruz Alcaraz <juan.m.cruz.alcaraz@intel.com>
2016-08-05 20:36:55 +00:00
Iván Briano c829fbebdc samples: Add suspend/resume of devices to Quark SE power sample
Change-Id: I6d0878b7e38114e2e5523a0970d193b42c507f8f
Signed-off-by: Iván Briano <ivan.briano@intel.com>
2016-07-28 15:36:11 +00:00
Andre Guedes ecf0844c4b samples: power/quark_se: Add support for Sleep states
This patch extends samples/power/quark_se application so it supports
'sleep' and 'deep sleep' power states.

According to spec, in these states, the core voltage rail is turned
off. In order to be able to continue the program execution from the
point it was before entering in Sleep states, we have to save the
execution context and restore it during system startup. The current
version of QMSI doesn't provide that feature so we implement it in
the sample application. In future, QMSI will provide this functionality
and we will remove it from application code.

Even though the _sys_soc_resume hook could be easily implemented in C,
it was implemented in assembly. During Zephyr initialization, _sys_soc_
resume hook is called before the C-runtime is initialized so implementing
this function in C doesn't look appropriate. It may pass the wrong idea
that we have the C-runtime properly initialized, which is not true.

Change-Id: Id60edeb3d33c490527b94ac0f435b7f91242dd81
Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Iván Briano <ivan.briano@intel.com>
2016-07-28 15:36:10 +00:00
Ramesh Thomas 1af3a40b9e power_mgmt: Add Deep Sleep support in sample PM app
Added changes to enhance device suspend/resume involving
core devices used by OS and app. Updated with Deep Sleep
power policy usage example. Moved the arch/soc dependent
code to soc/arch dependent areas in Zephyr in a separate
patch.  This app now uses api that abstracts the soc/arch
details in handling power states.

Jira: ZEP-511
Change-Id: I3b4eb0be973027dbf9bd046e16836f7863eee46e
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-07-21 11:25:31 -07:00
Andre Guedes 02dc270d5e samples: Add Quark SE power management application
This patch adds a reference Power Management Application (PMA) for
Quark SE based platforms.

This application demostrates how to interact with the PM subsystem
and how to put the SoC in different power states. The application
"modus operandi" is very simple. The application keeps transiting
between all power states supported by Quark SE SoC. For now, C1,
C2 and C2LP CPU states are implemented. Upcoming patches will
add support for the remaining states (LPS and Sleep states).

Change-Id: Id81aadb8bf170fbb2ecfd9483ae250c786619e43
Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Signed-off-by: Iván Briano <ivan.briano@intel.com>
2016-07-21 15:32:38 +00:00
Anas Nashif 1ee7175de9 rtc: unify kconfig variable names
Change-Id: I2adc0b21944fc0af85d40c09deac14bdbf134178
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-05-12 10:57:24 +00:00
Jithu Joseph 18fc64dcff power_mgmt: Sample usage of device_xxx__busy() APIs
To show possible usage of the device_busy_xxx() APIs.
Meant to show how drivers and power policy manager can use them.

Change-Id: I49d1dedd9a7b8d6bf09080c6c7243f0666330941
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-04-23 02:14:21 +00:00
Anas Nashif 01aa9a1d37 samples: power: use string for driver name
Change-Id: I2a5d02cf13ce4ed304c0ebb3d81310aec9325add
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-04-23 00:54:33 +00:00
Ramesh Thomas 4104bbfb08 power_mgmt: Add device power management support
Added device power management hook infrastructure. Added
DEVICE_INIT_PM and SYS_INIT_PM macros that creates device
structures with the supplied device_ops structure containing
the hooks.

Added example support in gpio_dw driver.  Updated the sample
app and tested using LPS and Device Suspend Only policies.

Change-Id: I2fe347f8d8fd1041d8318e02738990deb8c5d68e
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-03-26 14:35:11 -04:00
Ramesh Thomas bb19e6f82f power_mgmt: Make names consistent with new RFC
Changed names of Kconfig flags, variables, functions, files and
return codes consistent with names used in the RFC. Updated
relevant comments to match the changes.

Origin: Original
Change-Id: Ie7941032d7ad7af61fc02928f74538745e7966e8
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-03-26 14:35:11 -04:00
Ramesh Thomas 58d71d4efb power_mgmt:sample:Power Manager application
Sample implementation of a power manager app that uses the zephyr
power management infrastructure. This app demonstrates use of the
hooks to implement Low Power State and Tickless idle power saving
policies.

Tested on quark_se.

Origin: Original
Change-Id: I10207014f2a844374b4c7a1c0ed50f2fb5c3c440
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
Signed-off-by: Sergio Rodriguez <sergio.sf.rodriguez@intel.com>
2016-03-05 03:09:53 +00:00
Ramesh Thomas d230fc3653 adv_power:Power management hooks template app
A template app that defines the power management hooks and
enables the power management related CONFIG flags.  This
app will enable build testing of power management code inside
the CONFIG flags.

Change-Id: If26904f69333ff05a0711596218b51b828669de1
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-02-12 11:21:01 -08:00