Push i.MX cpuidle driver to mainline and take a stab at consolidation of arm idle drivers

Registered by Amit Kucheria on 2011-09-21

* Develop and push a new common imx cpuidle driver along with a i.MX51 specific implementation of this driver.

Blueprint information

Status:
Complete
Approver:
Amit Kucheria
Priority:
High
Drafter:
Rob
Direction:
Approved
Assignee:
Rob
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 2011.10
Started by
Amit Kucheria on 2011-09-21
Completed by
Rob on 2011-10-24

Related branches

Sprints

Whiteboard

Headline:
Develop and push a new common ARM cpuidle driver and i.MX specific level cpuidle driver to kernel.org.

Acceptance:
Common ARM cpuidle and i.MX specific driver are accepted upstream, i.MX board boot correctly and the cpuidle function properly with the new drivers.

The following items have moved to:
https://blueprints.launchpad.net/linaro-power-kernel/+spec/cpuidle-imx-consolidation--2011.11
 https://blueprints.launchpad.net/linaro-power-kernel/+spec/cpuidle-imx-consolidation--2011.12

Investigate and understand the latest core Linux cpuidle patch changes: INPROGRESS
Make an initial common ARM cpuidle driver and provide it to the PMWG for trials, discussion, and feedback: TODO
Submit v3 to the commmunity and keep making necessary changes and new submissions until accepted: TODO

Background:
i.MX Cpuidle submissions have already been made and the last submission (v2, http://patchwork.ozlabs.org/patch/115012/ ) consisted of three separate portions:

1. A common imx driver responsible providing and initialization API and generic cpuidle handling framework. This included
SMP support.

2. Necessary mach-mx5 changes to handle the mach specific functionality for entry and exit into the cpuidle C-states.

3. The mach specific initialization data and init calls.

The community requested some minor organization changes requested for #2 and #3 that seem fairly trivial to implement. For the portion #1 one minor and one major change was requested. For the minor change, it was pointed out that it lacked a mechanism to handle additional cpus brought online after booting. The major change to make this portion of the driver a common ARM driver and not just a common i.MX driver.

Also, since this time, a major change to the core Linux cpuidle driver has been submitted:

http://us.generation-nt.com/help/cpuidle+global+registration/

This change will impact the common ARM portion of a v3 submission.

updates on 10/12/2011
item 1
Looked further into the the CPU SMP handling in Linux to better understand the possible scenarios that could lead to CPU being brought online later and handling this is handled in the kernel. A fairly simple solution can be made to bring up the online cpu's during system initialization and still provide a mach level driver an API to bring other CPUs online later.
It seemed the next step was to implement and initial common ARM driver and discuss further with the PMWG. This has been
delayed upon learning about the changes to the core Linux cpuidle changes that have been submitted which will have a major affect on the common ARM cpuidle driver.

item 2
Started reviewing the core Linux cpuidle changes.

(?)

Work Items

Work items:
Investigate and Understand the requested changes given on the v2 submission: DONE
Make suggested changes from v2 submission feedback relative to imx and the imx only version to the Linaro kernel: DONE

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.