Experiences with Power Management Enabling on the Intel(C) Medfield PhoneRajeev Muralidhar
Experiences with Power Management Enabling on the Intel© Medfield PhoneRajeev Muralidhar, Harinarayanan Seshadri, Vishwesh Rudramuni, Illyas Mansoor, Sujith Thomas, Bharath Kumar Veera, Youvedeep Singh, Sudarshan Ramachandra
This paper describes the architecture, implementation and key experiences from enabling power management on the Intel Medfield phone platform. The paper describes how the standard Linux and Android power management architectures integrate with the capabilities provided by the first Intel Atom-powered smartphone SOC platform to provide aggressive power management capabilities. We also present some of the key learning from our power management experiences that we believe will be useful to other Linux/Android-based SOC platforms. Power management is one of the most crucial benchmarks for phones and tablets, and hence it is absolutely critical that platforms are highly optimized from a power and performance point of view. Android OS supports only Suspend-to-RAM (a.k.a S3) state. It builds upon the traditional Linux power management infrastructure and uses concepts of wakelocks (application hints about platform resource usage) to achieve S3. The power management infrastructure in Android requires that applications and services request CPU resources with "wake locks" through the Android application framework and native Linux libraries. If there are no active wake locks, Android will suspend the system to Suspend-to-RAM (S3). It is to be noted that the Android Power management is potentially undergoing a change in Kernel 3.3 and beyond; we will describe the implementation on Medfield based on current Android Gingerbread/Ice Cream Sandwich architecture. The IntelÂ© Medfield platform implements Suspend-to-RAM (S3) and also implements aggressive low power idle standby states (also called S0ix) for the platform. The main idea behind S0ix is that during an idle window, the platform is in the lowest power state as much as possible. In this state, all platform components are transitioned to an appropriate lower power state - CPU is in Cx state, Memory is in Self Refresh, components are clock or power gated, etc. As soon a timer or wake event occurs, the platform moves into an "Active state" only the components that are needed are turned on, keeping everything else in low power state. The interesting thing about S0ix is that it is a platform power management capability that is completely transparent to user space applications. This paper will cover the following topics: (1) We will provide an overview of the Intel Medfield smartphone platform, and the different power management capabilities supported. (2) We will provide an overview of the Linux and Android Power Management Architecture, and key phases of Linux Suspend/Resume, interaction with Linux Runtime PM. (3) We will then describe the key Intel specific power management components on Medfield platform to achieve standard Linux Standby (S3) and S0ix states, the interactions therein between Linux Runtime PM and standard PM. (4) Subsequently, we will describe our experiences with enabling overall Power management, challenges/issues with handling wake interrupts, handling suspend/resume/runtime PM in different device drivers, some optimizations that we had to implement on the platform. We believe that some of these learning will be applicable to other Linux/Android-based SOC platforms as well.