msm_cpu_freq_limit: initial coding for controlling MSM quadcore cpus

this module will allow proper max frequency control across all msm cores

Change-Id: I9043346b658b598dc83bfc27a0d4d97a95e220a3
Signed-off-by: Paul Reioux <faux123@localhost.localdomain>
msm_cpu_freq_limit: fixed coding copy and paste error :p

Signed-off-by: faux123 <reioux@gmail.com>
msm_cpufreq_limit: add GPL V2 licensing to access to GPL symbols

fix Makefile to force no memory relocation

Signed-off-by: faux123 <reioux@gmail.com>
cpufreq_limit: remove unused vars

Signed-off-by: faux123 <reioux@gmail.com>
Add Lionheart

Change-Id: I1a827bf84bbb7eb9d7a0939264fc21199b2aea09
Disable perflock

Change-Id: Id8577d2892112c81e01fb02301ab3f5754cad694
fix CIFS

Signed-off-by: flar2 <asegaert@gmail.com>
ARM CPU Topology and cpu_power driver

Signed-off-by: flar2 <asegaert@gmail.com>
cpufreq: intelliactive: initial coding and introduction!

intelliactive is based on Latest Google Interactive cpufreq governor from
Google.  The original Interactive provides smooth UI operations but suffers
slight battery drain due to its aggressive policies.  Intelliactive is an
improvement built on top of it.

It has the following enhancements added:
1. self-boost capability from input drivers (no need for PowerHAL assist)
2. two phase scheduling (idle/busy phases to prevent from jumping directly to
   max freq
3. Checks for offline cpus and short circuits some unnecessary checks to
   improve code execution paths
4. removed trace calls

Signed-off-by: Paul Reioux <reioux@gmail.com>

Conflicts:

	drivers/cpufreq/Makefile
	include/linux/cpufreq.h

Conflicts:

	arch/arm/configs/elite_m7_defconfig

Conflicts:
	drivers/cpufreq/Kconfig
	include/linux/cpufreq.h

Change-Id: Ibfd3c66c76d56dc377364e27f54a3fcac1515703
intelliactive: tune for APQ8064 devices

Signed-off-by: Paul Reioux <reioux@gmail.com>
intelliactive: fix race condition when unregistering input handlers

Signed-off-by: Paul Reioux <reioux@gmail.com>
intelliactive: HTC Only Hack

Include <linux/module.h> to fix the stupidness that is HTC :(

Signed-off-by: Paul Reioux <reioux@gmail.com>
intelliactive: tweak for Krait 600 SOCs

Signed-off-by: Paul Reioux <reioux@gmail.com>
Add VR

Change-Id: I3d2c61f4797488266ec8e1d0b14b33ef28579a31

Conflicts:
	arch/arm/configs/t6wl_defconfig
block: introduce the BFQ-v6 I/O sched for 3.4

Add the BFQ-v6 I/O scheduler to 3.4.
The general structure is borrowed from CFQ, as much code. A (bfq_)queue is
associated to each task doing I/O on a device, and each time a scheduling
decision has to be made a queue is selected and served until it expires.

    - Slices are given in the service domain: tasks are assigned budgets,
      measured in number of sectors. Once got the disk, a task must
      however consume its assigned budget within a configurable maximum time
      (by default, the maximum possible value of the budgets is automatically
      computed to comply with this timeout). This allows the desired latency
      vs "throughput boosting" tradeoff to be set.

    - Budgets are scheduled according to a variant of WF2Q+, implemented
      using an augmented rb-tree to take eligibility into account while
      preserving an O(log N) overall complexity.

    - A low-latency tunable is provided; if enabled, both interactive and soft
      real-time applications are guaranteed very low latency.

    - Latency guarantees are preserved also in presence of NCQ.

    - Also with flash-based devices, a high throughput is achieved while
      still preserving latency guarantees.

    - A useful feature borrowed from CFQ: static fallback queue for OOM.

    - Differently from CFQ, BFQ uses a unified mechanism (Early Queue Merge,
      EQM) to get a sequential read pattern, and hence a high throughput,
      with any set of processes performing interleaved I/O. EQM also
      preserves low latency. The code for detecting whether two queues have
      to be merged is a slightly modified version of the CFQ code for
      detecting whether two queues belong to cooperating processes and whether
      the service of a queue should be preempted to boost the throughput.

    - BFQ supports full hierarchical scheduling, exporting a cgroups
      interface.  Each node has a full scheduler, so each group can
      be assigned its own ioprio (mapped to a weight, see next point)
      and an ioprio_class.

    - If the cgroups interface is used, weights can be explictly assigned,
      otherwise ioprio values are mapped to weights using the relation
      weight = IOPRIO_BE_NR - ioprio.

    - ioprio classes are served in strict priority order, i.e., lower
      priority queues are not served as long as there are higher priority
      queues.  Among queues in the same class the bandwidth is distributed
      in proportion to the weight of each queue. A very thin extra bandwidth
      is however guaranteed to the Idle class, to prevent it from starving.

Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
block: cgroups, kconfig, build bits for BFQ-v6-3.4

Update Kconfig.iosched and do the related Makefile changes to include
kernel configuration options for BFQ. Also add the bfqio controller
to the cgroups subsystem.

Change-Id: Ibe50307f3830943a03a919e0160bdfc87fb6ccdf
Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>

Conflicts:
	arch/arm/configs/t6wl_defconfig
fastcharge: initial adaptation for HTC One

Signed-off-by: Paul Reioux <reioux@gmail.com>

Conflicts:

	arch/arm/mach-msm/Kconfig
htc battery 8960: force fastcharge mode added

Signed-off-by: Paul Reioux <reioux@gmail.com>
force fastcharge: htc battery 8960: unknown usb -> ac charger too

Signed-off-by: Paul Reioux <reioux@gmail.com>
enable intelliactive to build

Change-Id: I88f1abf2195eba3309212f9f74f080966b246696