Kernel: Initial commit of GT-P7510, Opensource Update 2

Reference:
 opensource.samsung.com
build/vfp: add some optimisation flags
build: add .gitignore
block: prepare I/O context code for BFQ-v4 for 3.1

BFQ uses struct cfq_io_context to store its per-process per-device data,
reusing the same code for cic handling of CFQ.  The code is not shared
ATM to minimize the impact of these patches.

This patch introduces a new hlist to each io_context to store all the
cic's allocated by BFQ to allow calling the right destructor on module
unload; the radix tree used for cic lookup needs to be duplicated
because it can contain dead keys inserted by a scheduler and later
retrieved by the other one.

Update the io_context exit and free paths to take care also of
the BFQ cic's.

Change the type of cfqq inside struct cfq_io_context to void *
to use it also for BFQ per-queue data.

A new bfq-specific ioprio_changed field is necessary, too, to avoid
clobbering cfq's one, so switch ioprio_changed to a bitmap, with one
element per scheduler.

Signed-off-by: Fabio Checconi <fabio@gandalf.sssup.it>
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-v4-3.1

Add a Kconfig option and do the related Makefile changes to compile
the BFQ I/O scheduler.  Also let the cgroups subsystem know about the
BFQ I/O controller.

Signed-off-by: Fabio Checconi <fabio@gandalf.sssup.it>
Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
block: introduce the BFQ-v4 I/O sched for 3.1

Add the BFQ-v4 I/O scheduler to 3.1.
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 taken a queue is selected and it is 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.

    - High throughput with flash-based devices, while still preserving
      latency guarantees.

    - Useful features borrowed from CFQ: cooperating-queues merging (with
      some additional optimizations with respect to the original CFQ version),
      static fallback queue for OOM.

    - BFQ supports full hierarchical scheduling, exporting a cgroups
      interface.  Each node has a full scheduler, so each group can
      be assigned its own ioprio 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 weights 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>
tegra: clocks/dvfs: Add TEGRA_OVERCLOCK

-1.4GHZ @ 1.225mv
-reference buzzbumblebee,coolbho3k,blades/clemsyn and netarchy's oc logic
-adjust voltages

Conflicts:

	arch/arm/mach-tegra/tegra2_clocks.c
tegra: dvfs: increase voltages; 900mv - 1250mv + cpu/core nominal
tegra: dvfs: reduce core nominal voltage
tegra: cpufreq: Add adjustable MIN/MAX for init/boot

Add adjustable MIN/MAX at init/boot for tegra cpu-tegra.

-referenced from vision-2635

Conflicts:

	arch/arm/mach-tegra/Kconfig

Conflicts:

	arch/arm/mach-tegra/Kconfig
cpufreq: do not forget min/max clock frequency on cpu hotplug

Properly implement the fix to not forget the cpu frequency range on cpu
hotplug.

Signed-off-by: Andrea Righi <andrea@betterlinux.com>
mm: Read Ahead tweak
board-p4*: fix warning regarding escape sequence
Voodoo sound: driver v9 early port to Galaxy Tab 10.1

- features miss testing
- needs a new anti-jitter strategy
- ..but hey, it does some nice job already :)

-modify Kconfig accordingly
-port wm8994_p3 to _p4 (reference galaxy-2636)
Voodoo sound: driver v10

Improvement:

- HW EQ support: smooth activation/deactivation and gain changes

Bugfixes:

- HP volume smoothing loop on low levels with negative digital offsets
- wm8994_write logging on Nexus S

New supported devices:

- Galaxy Tab 7" Gingerbread Kernels support (based on M180S)
- Galaxy Tab 10.1 - beta
sound: codecs: wm8994_voodoo: fix compile
forward port jRCU to 3.2

Forward port jRCU to linux-3.2.

jRCU is a tiny, ultra-simple RCU best suited for small
SMP systems.  It also helps those real time applications
that want to reserve, as much as possible, some set of
cpus for their exclusive use, by doing all RCU garbage
collection from a single cpu rather than from every
CPU.

Testing: Francisco Franco was gracious enough to spot
test the 3.0 version on the Galaxy Nexus Android phone.
I did the same for x86_64 PC, using stands around the
lab ranging from a uniprocessor to an 80-cpu production
machine.  This 3.2 version was spot tested on an 8-cpu
x86_64 test stand.

Signed-off-by: Joe Korty <joe.korty@ccur.com>
p4_battery: enable usb charging

 - export /sys/class/power_supply/battery/force_usb_charging

-ported from p3_battery (galaxy-2636)
sounds: soc: codecs: voodoo: prevent mangling of headphone volume

-alleviates the inability to properly change headphone vol. in some cases.
drivers: power: p4_battery: export batt_current to sysfs

-ported from p3_battery (galaxy-2636)