summaryrefslogtreecommitdiff
path: root/target/linux
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2014-03-11 14:21:31 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2014-03-11 14:21:31 +0100
commitd65d767c45ebce8001ec1e028fba9d7881b5f847 (patch)
tree93d6a8b9f94efaa754619cc54c4dd46d29ed5036 /target/linux
parentf9c7b800e7bf803b808cdbefd645a6878d0a101e (diff)
parent2e0e960c27afd0218d58157eefc89d5456406035 (diff)
Merge branch 'master' of git+ssh://openadk.org/git/openadk
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/config/Config.in.audio33
-rw-r--r--target/linux/config/Config.in.cpu22
-rw-r--r--target/linux/config/Config.in.debug29
-rw-r--r--target/linux/config/Config.in.netfilter.ip411
-rw-r--r--target/linux/config/Config.in.pm9
-rw-r--r--target/linux/config/Config.in.watchdog2
-rw-r--r--target/linux/kernel.config5
-rw-r--r--target/linux/patches/3.10.30/bsd-compatibility.patch (renamed from target/linux/patches/3.13.5/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.10.30/solidrun-cubox-i.patch584365
-rw-r--r--target/linux/patches/3.10.30/startup.patch12
-rw-r--r--target/linux/patches/3.13.6/bsd-compatibility.patch2538
-rw-r--r--target/linux/patches/3.13.6/defaults.patch (renamed from target/linux/patches/3.13.5/defaults.patch)0
-rw-r--r--target/linux/patches/3.13.6/disable-netfilter.patch (renamed from target/linux/patches/3.13.5/disable-netfilter.patch)0
-rw-r--r--target/linux/patches/3.13.6/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.13.5/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.13.6/gemalto.patch (renamed from target/linux/patches/3.13.5/gemalto.patch)0
-rw-r--r--target/linux/patches/3.13.6/lemote-rfkill.patch (renamed from target/linux/patches/3.13.5/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.13.6/microblaze-axi.patch (renamed from target/linux/patches/3.13.5/microblaze-axi.patch)0
-rw-r--r--target/linux/patches/3.13.6/microblaze-ethernet.patch (renamed from target/linux/patches/3.13.5/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.13.6/microblaze-setup.patch (renamed from target/linux/patches/3.13.5/microblaze-setup.patch)0
-rw-r--r--target/linux/patches/3.13.6/mtd-rootfs.patch (renamed from target/linux/patches/3.13.5/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.13.6/non-static.patch (renamed from target/linux/patches/3.13.5/non-static.patch)0
-rw-r--r--target/linux/patches/3.13.6/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.13.5/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.13.6/ppc64-missing_arch_random.patch (renamed from target/linux/patches/3.13.5/ppc64-missing_arch_random.patch)0
-rw-r--r--target/linux/patches/3.13.6/raspberry.patch (renamed from target/linux/patches/3.13.5/raspberry.patch)7216
-rw-r--r--target/linux/patches/3.13.6/startup.patch (renamed from target/linux/patches/3.13.5/startup.patch)0
-rw-r--r--target/linux/patches/3.13.6/uuid.patch (renamed from target/linux/patches/3.13.5/uuid.patch)0
-rw-r--r--target/linux/patches/3.13.6/vga-cons-default-off.patch (renamed from target/linux/patches/3.13.5/vga-cons-default-off.patch)0
-rw-r--r--target/linux/patches/3.13.6/wlan-cf.patch (renamed from target/linux/patches/3.13.5/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.13.6/xargs.patch (renamed from target/linux/patches/3.13.5/xargs.patch)0
-rw-r--r--target/linux/patches/3.13.6/zlib-inflate.patch (renamed from target/linux/patches/3.13.5/zlib-inflate.patch)0
30 files changed, 593447 insertions, 795 deletions
diff --git a/target/linux/config/Config.in.audio b/target/linux/config/Config.in.audio
index 76c353f0c..c466bed45 100644
--- a/target/linux/config/Config.in.audio
+++ b/target/linux/config/Config.in.audio
@@ -7,9 +7,6 @@ config ADK_KERNEL_SND_ARM
config ADK_KERNEL_SND_USB
boolean
-config ADK_KERNEL_SND_SOC
- boolean
-
config ADK_KERNEL_SND_PXA2XX_AC97
boolean
@@ -105,6 +102,10 @@ config ADK_KPACKAGE_KMOD_SND_CS5535AUDIO
help
ALSA AMD CS5535 driver
+config ADK_KPACKAGE_KMOD_SND_SOC
+ tristate
+ default n
+
config ADK_KERNEL_SND_PXA2XX_SOC
tristate
default n
@@ -113,10 +114,10 @@ config ADK_KPACKAGE_KMOD_SND_PXA2XX_SOC_SPITZ
prompt "kmod-snd-pxa2xx-soc-spitz..... ALSA SOC Sharp Zaurus"
tristate
select ADK_KERNEL_SND_ARM
- select ADK_KERNEL_SND_SOC
select ADK_KERNEL_SND_PXA2XX_AC97
- select ADK_KPACKAGE_KMOD_SND_AC97_CODEC
select ADK_KPACKAGE_KMOD_SND
+ select ADK_KPACKAGE_KMOD_SND_AC97_CODEC
+ select ADK_KPACKAGE_KMOD_SND_SOC
select ADK_KERNEL_SND_PXA2XX_SOC
depends on ADK_TARGET_SYSTEM_SHARP_ZAURUS
default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS
@@ -131,4 +132,26 @@ config ADK_KPACKAGE_KMOD_SND_BCM2835
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI
default n
+config ADK_KPACKAGE_KMOD_SND_BCM2708_SOC_I2S
+ prompt "kmod-snd-bcm2708-soc-i2s........ ALSA SOC I2S Raspberry PI"
+ select ADK_KPACKAGE_KMOD_SND
+ select ADK_KERNEL_SND_ARM
+ select ADK_KPACKAGE_KMOD_SND_SOC
+ boolean
+ default n
+
+config ADK_KPACKAGE_KMOD_SND_BCM2708_SOC_HIFIBERRY_DAC
+ prompt "kmod-snd-bcm2708-hifiberry-dac.... ALSA for Raspberry PI with hifiberry DAC"
+ tristate
+ select ADK_KPACKAGE_KMOD_SND_BCM2708_SOC_I2S
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI
+ default n
+
+config ADK_KPACKAGE_KMOD_SND_BCM2708_SOC_HIFIBERRY_DIGI
+ prompt "kmod-snd-bcm2708-hifiberry-digi... ALSA for Raspberry PI with hifiberry DIGI"
+ tristate
+ select ADK_KPACKAGE_KMOD_SND_BCM2708_SOC_I2S
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI
+ default n
+
endmenu
diff --git a/target/linux/config/Config.in.cpu b/target/linux/config/Config.in.cpu
index efaf3a658..a8dfd5188 100644
--- a/target/linux/config/Config.in.cpu
+++ b/target/linux/config/Config.in.cpu
@@ -39,6 +39,14 @@ config ADK_KERNEL_CPU_FREQ
boolean
default n
+config ADK_KERNEL_REGULATOR
+ boolean
+ default n
+
+config ADK_KERNEL_REGULATOR_ANATOP
+ boolean
+ default n
+
config ADK_KERNEL_CPU_FREQ_GOV_PERFORMANCE
boolean
default n
@@ -59,15 +67,25 @@ config ADK_KERNEL_CPU_FREQ_GOV_CONSERVATIVE
boolean
default n
+config ADK_KERNEL_ARM_IMX6_CPUFREQ
+ prompt "CPU frequency support for cubox-i"
+ boolean
+ select ADK_KERNEL_CPU_FREQ
+ select ADK_KERNEL_REGULATOR
+ select ADK_KERNEL_REGULATOR_ANATOP
+ default y if ADK_TARGET_SYSTEM_CUBOX_I
+ depends on ADK_TARGET_SYSTEM_CUBOX_I
+
config ADK_KERNEL_ARM_BCM2835_CPUFREQ
- prompt "CPU frequency support"
+ prompt "CPU frequency support for raspberry-pi"
boolean
select ADK_KERNEL_CPU_FREQ
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI
choice
prompt "Governor"
-depends on ADK_KERNEL_ARM_BCM2835_CPUFREQ
+depends on ADK_KERNEL_ARM_BCM2835_CPUFREQ || ADK_KERNEL_ARM_IMX6_CPUFREQ
config ADK_KERNEL_CPU_FREQ_DEFAULT_GOV_ONDEMAND
boolean "ondemand"
diff --git a/target/linux/config/Config.in.debug b/target/linux/config/Config.in.debug
index 6236b329b..80387c627 100644
--- a/target/linux/config/Config.in.debug
+++ b/target/linux/config/Config.in.debug
@@ -25,6 +25,35 @@ config ADK_QUIET_KERNEL
help
Make bootup quiet without messages from the kernel.
+config ADK_KERNEL_EARLY_PRINTK
+ boolean
+ default n
+
+config ADK_KERNEL_PRINTK
+ prompt "Enable printk to save space and quieten bootup"
+ boolean
+ select ADK_KERNEL_EARLY_PRINTK
+ default y
+ depends on !ADK_PKG_TEST
+ help
+ Disable printk to save space and quieten bootup.
+
+config ADK_KERNEL_PRINTK_TIME
+ prompt "Enable timing information for printk"
+ boolean
+ depends on ADK_KERNEL_PRINTK
+ default n
+ help
+ Enable timing information for printk, to analyze kernel
+ bootup performance.
+
+config ADK_KERNEL_BUG
+ prompt "Enable BUGS() in the kernel"
+ boolean
+ default n
+ help
+ Enable if you need BUGS() in the kernel.
+
config ADK_KERNEL_NETCONSOLE
prompt "Netconsole"
boolean
diff --git a/target/linux/config/Config.in.netfilter.ip4 b/target/linux/config/Config.in.netfilter.ip4
index cf33c02a2..b43a566b9 100644
--- a/target/linux/config/Config.in.netfilter.ip4
+++ b/target/linux/config/Config.in.netfilter.ip4
@@ -37,9 +37,10 @@ config ADK_KPACKAGE_KMOD_IP_NF_FILTER
config ADK_KPACKAGE_KMOD_FULL_NAT
tristate "Meta package for Full NAT"
select ADK_KPACKAGE_KMOD_NF_NAT if ADK_KERNEL_VERSION_3_4_82
+ select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_10_30
select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_11_10
- select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_12_11
- select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_13_5
+ select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_12_13
+ select ADK_KPACKAGE_KMOD_NF_NAT_IPV4 if ADK_KERNEL_VERSION_3_13_6
config ADK_KPACKAGE_KMOD_NF_NAT
tristate 'Full NAT'
@@ -53,8 +54,10 @@ config ADK_KPACKAGE_KMOD_NF_NAT
config ADK_KPACKAGE_KMOD_NF_NAT_IPV4
tristate 'Full NAT'
depends on ADK_KPACKAGE_KMOD_IP_NF_IPTABLES
- depends on ADK_KERNEL_VERSION_3_11_10 || ADK_KERNEL_VERSION_3_12_11 \
- || ADK_KERNEL_VERSION_3_13_5
+ depends on ADK_KERNEL_VERSION_3_10_30 \
+ || ADK_KERNEL_VERSION_3_11_10 \
+ || ADK_KERNEL_VERSION_3_12_13 \
+ || ADK_KERNEL_VERSION_3_13_6
help
The Full NAT option allows masquerading, port forwarding and other
forms of full Network Address Port Translation. It is controlled by
diff --git a/target/linux/config/Config.in.pm b/target/linux/config/Config.in.pm
index deff5b3f6..4bfe42c58 100644
--- a/target/linux/config/Config.in.pm
+++ b/target/linux/config/Config.in.pm
@@ -1,5 +1,6 @@
-config ADK_KERNEL_PM
+config ADK_KERNEL_PM_RUNTIME
boolean
+ default y if ADK_TARGET_SYSTEM_CUBOX_I
config ADK_KERNEL_ACPI
boolean
@@ -28,7 +29,7 @@ depends on ADK_TARGET_WITH_ACPI || ADK_TARGET_SYSTEM_LEMOTE_YEELONG
config ADK_HARDWARE_ACPI
prompt "Enable ACPI support"
boolean
- select ADK_KERNEL_PM
+ select ADK_KERNEL_PM_RUNTIME
select ADK_KERNEL_ACPI
select ADK_KERNEL_ACPI_SYSFS_POWER
select ADK_KERNEL_ACPI_AC
@@ -44,7 +45,7 @@ config ADK_HARDWARE_ACPI
config ADK_KERNEL_SUSPEND
prompt "Enable Suspend-to-RAM support"
boolean
- select ADK_KERNEL_PM
+ select ADK_KERNEL_PM_RUNTIME
default y if ADK_TARGET_SYSTEM_IBM_X40
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default n
@@ -54,7 +55,7 @@ config ADK_KERNEL_SUSPEND
config ADK_KERNEL_HIBERNATION
prompt "Enable Suspend-to-Disk support"
boolean
- select ADK_KERNEL_PM
+ select ADK_KERNEL_PM_RUNTIME
select ADK_KERNEL_SWAP
select BUSYBOX_SWAPONOFF
default y if ADK_TARGET_SYSTEM_IBM_X40
diff --git a/target/linux/config/Config.in.watchdog b/target/linux/config/Config.in.watchdog
index 08e884a01..4a727e7d6 100644
--- a/target/linux/config/Config.in.watchdog
+++ b/target/linux/config/Config.in.watchdog
@@ -73,7 +73,7 @@ config ADK_KERNEL_RC32434_WDT
Routerboard 532's SoC, the IDT RC32434.
config ADK_KPACKAGE_KMOD_SOFT_WATCHDOG
- prompt "kmod-softdog...................... Software watchdog"
+ prompt "kmod-soft-watchdog...................... Software watchdog"
tristate
default n
select ADK_KERNEL_WATCHDOG
diff --git a/target/linux/kernel.config b/target/linux/kernel.config
index 26205a842..a28c2088b 100644
--- a/target/linux/kernel.config
+++ b/target/linux/kernel.config
@@ -7,6 +7,7 @@ CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_SLOB=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
@@ -27,8 +28,6 @@ CONFIG_BINFMT_SCRIPT=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
-CONFIG_PRINTK=y
-CONFIG_BUG=n
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
@@ -39,5 +38,3 @@ CONFIG_AIO=y
CONFIG_PCI_QUIRKS=y
CONFIG_TTY=y
CONFIG_UNIX98_PTYS=y
-CONFIG_PRINTK_TIME=y
-CONFIG_EARLY_PRINTK=y
diff --git a/target/linux/patches/3.13.5/bsd-compatibility.patch b/target/linux/patches/3.10.30/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.13.5/bsd-compatibility.patch
+++ b/target/linux/patches/3.10.30/bsd-compatibility.patch
diff --git a/target/linux/patches/3.10.30/solidrun-cubox-i.patch b/target/linux/patches/3.10.30/solidrun-cubox-i.patch
new file mode 100644
index 000000000..beaa71b4e
--- /dev/null
+++ b/target/linux/patches/3.10.30/solidrun-cubox-i.patch
@@ -0,0 +1,584365 @@
+diff -Nur linux-3.10.30/Documentation/ABI/testing/sysfs-class-mtd linux-3.10.30-cubox-i/Documentation/ABI/testing/sysfs-class-mtd
+--- linux-3.10.30/Documentation/ABI/testing/sysfs-class-mtd 2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/ABI/testing/sysfs-class-mtd 2014-03-08 20:32:51.000000000 +0100
+@@ -104,7 +104,7 @@
+ One of the following ASCII strings, representing the device
+ type:
+
+- absent, ram, rom, nor, nand, dataflash, ubi, unknown
++ absent, ram, rom, nor, nand, mlc-nand, dataflash, ubi, unknown
+
+ What: /sys/class/mtd/mtdX/writesize
+ Date: April 2009
+@@ -128,9 +128,8 @@
+ Contact: linux-mtd@lists.infradead.org
+ Description:
+ Maximum number of bit errors that the device is capable of
+- correcting within each region covering an ecc step. This will
+- always be a non-negative integer. Note that some devices will
+- have multiple ecc steps within each writesize region.
++ correcting within each region covering an ECC step (see
++ ecc_step_size). This will always be a non-negative integer.
+
+ In the case of devices lacking any ECC capability, it is 0.
+
+@@ -173,3 +172,15 @@
+ This is generally applicable only to NAND flash devices with ECC
+ capability. It is ignored on devices lacking ECC capability;
+ i.e., devices for which ecc_strength is zero.
++
++What: /sys/class/mtd/mtdX/ecc_step_size
++Date: May 2013
++KernelVersion: 3.10
++Contact: linux-mtd@lists.infradead.org
++Description:
++ The size of a single region covered by ECC, known as the ECC
++ step. Devices may have several equally sized ECC steps within
++ each writesize region.
++
++ It will always be a non-negative integer. In the case of
++ devices lacking any ECC capability, it is 0.
+diff -Nur linux-3.10.30/Documentation/DocBook/mtdnand.tmpl linux-3.10.30-cubox-i/Documentation/DocBook/mtdnand.tmpl
+--- linux-3.10.30/Documentation/DocBook/mtdnand.tmpl 2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/DocBook/mtdnand.tmpl 2014-03-08 20:32:51.000000000 +0100
+@@ -1222,10 +1222,6 @@
+ #define NAND_BBT_VERSION 0x00000100
+ /* Create a bbt if none axists */
+ #define NAND_BBT_CREATE 0x00000200
+-/* Search good / bad pattern through all pages of a block */
+-#define NAND_BBT_SCANALLPAGES 0x00000400
+-/* Scan block empty during good / bad block scan */
+-#define NAND_BBT_SCANEMPTY 0x00000800
+ /* Write bbt if neccecary */
+ #define NAND_BBT_WRITE 0x00001000
+ /* Read and write back block contents when writing bbt */
+diff -Nur linux-3.10.30/Documentation/arm/small_task_packing.txt linux-3.10.30-cubox-i/Documentation/arm/small_task_packing.txt
+--- linux-3.10.30/Documentation/arm/small_task_packing.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/arm/small_task_packing.txt 2014-03-08 20:32:51.000000000 +0100
+@@ -0,0 +1,136 @@
++Small Task Packing in the big.LITTLE MP Reference Patch Set
++
++What is small task packing?
++----
++Simply that the scheduler will fit as many small tasks on a single CPU
++as possible before using other CPUs. A small task is defined as one
++whose tracked load is less than 90% of a NICE_0 task. This is a change
++from the usual behavior since the scheduler will normally use an idle
++CPU for a waking task unless that task is considered cache hot.
++
++
++How is it implemented?
++----
++Since all small tasks must wake up relatively frequently, the main
++requirement for packing small tasks is to select a partly-busy CPU when
++waking rather than looking for an idle CPU. We use the tracked load of
++the CPU runqueue to determine how heavily loaded each CPU is and the
++tracked load of the task to determine if it will fit on the CPU. We
++always start with the lowest-numbered CPU in a sched domain and stop
++looking when we find a CPU with enough space for the task.
++
++Some further tweaks are necessary to suppress load balancing when the
++CPU is not fully loaded, otherwise the scheduler attempts to spread
++tasks evenly across the domain.
++
++
++How does it interact with the HMP patches?
++----
++Firstly, we only enable packing on the little domain. The intent is that
++the big domain is intended to spread tasks amongst the available CPUs
++one-task-per-CPU. The little domain however is attempting to use as
++little power as possible while servicing its tasks.
++
++Secondly, since we offload big tasks onto little CPUs in order to try
++to devote one CPU to each task, we have a threshold above which we do
++not try to pack a task and instead will select an idle CPU if possible.
++This maintains maximum forward progress for busy tasks temporarily
++demoted from big CPUs.
++
++
++Can the behaviour be tuned?
++----
++Yes, the load level of a 'full' CPU can be easily modified in the source
++and is exposed through sysfs as /sys/kernel/hmp/packing_limit to be
++changed at runtime. The presence of the packing behaviour is controlled
++by CONFIG_SCHED_HMP_LITTLE_PACKING and can be disabled at run-time
++using /sys/kernel/hmp/packing_enable.
++The definition of a small task is hard coded as 90% of NICE_0_LOAD
++and cannot be modified at run time.
++
++
++Why do I need to tune it?
++----
++The optimal configuration is likely to be different depending upon the
++design and manufacturing of your SoC.
++
++In the main, there are two system effects from enabling small task
++packing.
++
++1. CPU operating point may increase
++2. wakeup latency of tasks may be increased
++
++There are also likely to be secondary effects from loading one CPU
++rather than spreading tasks.
++
++Note that all of these system effects are dependent upon the workload
++under consideration.
++
++
++CPU Operating Point
++----
++The primary impact of loading one CPU with a number of light tasks is to
++increase the compute requirement of that CPU since it is no longer idle
++as often. Increased compute requirement causes an increase in the
++frequency of the CPU through CPUfreq.
++
++Consider this example:
++We have a system with 3 CPUs which can operate at any frequency between
++350MHz and 1GHz. The system has 6 tasks which would each produce 10%
++load at 1GHz. The scheduler has frequency-invariant load scaling
++enabled. Our DVFS governor aims for 80% utilization at the chosen
++frequency.
++
++Without task packing, these tasks will be spread out amongst all CPUs
++such that each has 2. This will produce roughly 20% system load, and
++the frequency of the package will remain at 350MHz.
++
++With task packing set to the default packing_limit, all of these tasks
++will sit on one CPU and require a package frequency of ~750MHz to reach
++80% utilization. (0.75 = 0.6 * 0.8).
++
++When a package operates on a single frequency domain, all CPUs in that
++package share frequency and voltage.
++
++Depending upon the SoC implementation there can be a significant amount
++of energy lost to leakage from idle CPUs. The decision about how
++loaded a CPU must be to be considered 'full' is therefore controllable
++through sysfs (sys/kernel/hmp/packing_limit) and directly in the code.
++
++Continuing the example, lets set packing_limit to 450 which means we
++will pack tasks until the total load of all running tasks >= 450. In
++practise, this is very similar to a 55% idle 1Ghz CPU.
++
++Now we are only able to place 4 tasks on CPU0, and two will overflow
++onto CPU1. CPU0 will have a load of 40% and CPU1 will have a load of
++20%. In order to still hit 80% utilization, CPU0 now only needs to
++operate at (0.4*0.8=0.32) 320MHz, which means that the lowest operating
++point will be selected, the same as in the non-packing case, except that
++now CPU2 is no longer needed and can be power-gated.
++
++In order to use less energy, the saving from power-gating CPU2 must be
++more than the energy spent running CPU0 for the extra cycles. This
++depends upon the SoC implementation.
++
++This is obviously a contrived example requiring all the tasks to
++be runnable at the same time, but it illustrates the point.
++
++
++Wakeup Latency
++----
++This is an unavoidable consequence of trying to pack tasks together
++rather than giving them a CPU each. If you cannot find an acceptable
++level of wakeup latency, you should turn packing off.
++
++Cyclictest is a good test application for determining the added latency
++when configuring packing.
++
++
++Why is it turned off for the VersatileExpress V2P_CA15A7 CoreTile?
++----
++Simply, this core tile only has power gating for the whole A7 package.
++When small task packing is enabled, all our low-energy use cases
++normally fit onto one A7 CPU. We therefore end up with 2 mostly-idle
++CPUs and one mostly-busy CPU. This decreases the amount of time
++available where the whole package is idle and can be turned off.
++
+diff -Nur linux-3.10.30/Documentation/devicetree/bindings/arm/cci.txt linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/cci.txt
+--- linux-3.10.30/Documentation/devicetree/bindings/arm/cci.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/cci.txt 2014-03-08 20:32:51.000000000 +0100
+@@ -0,0 +1,172 @@
++=======================================================
++ARM CCI cache coherent interconnect binding description
++=======================================================
++
++ARM multi-cluster systems maintain intra-cluster coherency through a
++cache coherent interconnect (CCI) that is capable of monitoring bus
++transactions and manage coherency, TLB invalidations and memory barriers.
++
++It allows snooping and distributed virtual memory message broadcast across
++clusters, through memory mapped interface, with a global control register
++space and multiple sets of interface control registers, one per slave
++interface.
++
++Bindings for the CCI node follow the ePAPR standard, available from:
++
++www.power.org/documentation/epapr-version-1-1/
++
++with the addition of the bindings described in this document which are
++specific to ARM.
++
++* CCI interconnect node
++
++ Description: Describes a CCI cache coherent Interconnect component
++
++ Node name must be "cci".
++ Node's parent must be the root node /, and the address space visible
++ through the CCI interconnect is the same as the one seen from the
++ root node (ie from CPUs perspective as per DT standard).
++ Every CCI node has to define the following properties:
++
++ - compatible
++ Usage: required
++ Value type: <string>
++ Definition: must be set to
++ "arm,cci-400"
++
++ - reg
++ Usage: required
++ Value type: <prop-encoded-array>
++ Definition: A standard property. Specifies base physical
++ address of CCI control registers common to all
++ interfaces.
++
++ - ranges:
++ Usage: required
++ Value type: <prop-encoded-array>
++ Definition: A standard property. Follow rules in the ePAPR for
++ hierarchical bus addressing. CCI interfaces
++ addresses refer to the parent node addressing
++ scheme to declare their register bases.
++
++ CCI interconnect node can define the following child nodes:
++
++ - CCI control interface nodes
++
++ Node name must be "slave-if".
++ Parent node must be CCI interconnect node.
++
++ A CCI control interface node must contain the following
++ properties:
++
++ - compatible
++ Usage: required
++ Value type: <string>
++ Definition: must be set to
++ "arm,cci-400-ctrl-if"
++
++ - interface-type:
++ Usage: required
++ Value type: <string>
++ Definition: must be set to one of {"ace", "ace-lite"}
++ depending on the interface type the node
++ represents.
++
++ - reg:
++ Usage: required
++ Value type: <prop-encoded-array>
++ Definition: the base address and size of the
++ corresponding interface programming
++ registers.
++
++* CCI interconnect bus masters
++
++ Description: masters in the device tree connected to a CCI port
++ (inclusive of CPUs and their cpu nodes).
++
++ A CCI interconnect bus master node must contain the following
++ properties:
++
++ - cci-control-port:
++ Usage: required
++ Value type: <phandle>
++ Definition: a phandle containing the CCI control interface node
++ the master is connected to.
++
++Example:
++
++ cpus {
++ #size-cells = <0>;
++ #address-cells = <1>;
++
++ CPU0: cpu@0 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a15";
++ cci-control-port = <&cci_control1>;
++ reg = <0x0>;
++ };
++
++ CPU1: cpu@1 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a15";
++ cci-control-port = <&cci_control1>;
++ reg = <0x1>;
++ };
++
++ CPU2: cpu@100 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ cci-control-port = <&cci_control2>;
++ reg = <0x100>;
++ };
++
++ CPU3: cpu@101 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ cci-control-port = <&cci_control2>;
++ reg = <0x101>;
++ };
++
++ };
++
++ dma0: dma@3000000 {
++ compatible = "arm,pl330", "arm,primecell";
++ cci-control-port = <&cci_control0>;
++ reg = <0x0 0x3000000 0x0 0x1000>;
++ interrupts = <10>;
++ #dma-cells = <1>;
++ #dma-channels = <8>;
++ #dma-requests = <32>;
++ };
++
++ cci@2c090000 {
++ compatible = "arm,cci-400";
++ #address-cells = <1>;
++ #size-cells = <1>;
++ reg = <0x0 0x2c090000 0 0x1000>;
++ ranges = <0x0 0x0 0x2c090000 0x6000>;
++
++ cci_control0: slave-if@1000 {
++ compatible = "arm,cci-400-ctrl-if";
++ interface-type = "ace-lite";
++ reg = <0x1000 0x1000>;
++ };
++
++ cci_control1: slave-if@4000 {
++ compatible = "arm,cci-400-ctrl-if";
++ interface-type = "ace";
++ reg = <0x4000 0x1000>;
++ };
++
++ cci_control2: slave-if@5000 {
++ compatible = "arm,cci-400-ctrl-if";
++ interface-type = "ace";
++ reg = <0x5000 0x1000>;
++ };
++ };
++
++This CCI node corresponds to a CCI component whose control registers sits
++at address 0x000000002c090000.
++CCI slave interface @0x000000002c091000 is connected to dma controller dma0.
++CCI slave interface @0x000000002c094000 is connected to CPUs {CPU0, CPU1};
++CCI slave interface @0x000000002c095000 is connected to CPUs {CPU2, CPU3};
+diff -Nur linux-3.10.30/Documentation/devicetree/bindings/arm/imx/busfreq-imx6.txt linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/imx/busfreq-imx6.txt
+--- linux-3.10.30/Documentation/devicetree/bindings/arm/imx/busfreq-imx6.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/imx/busfreq-imx6.txt 2014-03-08 20:32:51.000000000 +0100
+@@ -0,0 +1,64 @@
++Freescale Busfreq driver
++
++It is a generic driver that manages the frequency of the DDR, AHB and AXI buses in the iMX6x architecture.
++It works for both SMP and UP systems and for both DDR3 and LPDDR2 memory types.
++
++Required properties are listed below:
++- compatible: should be "fsl,imx6_busfreq"
++- clocks: Lists the various clocks used by the busfreq driver
++- interrupts - Lists the interrupts used by the busfreq driver. This is needed only for SMP architecutre.
++- fsl,max_ddr_freq - The max ddr freq for this chip
++
++Examples:
++For SOC imx6q.dtsi:
++ busfreq { /* BUSFREQ */
++ compatible = "fsl,imx6_busfreq";
++ clocks = <&clks 171>, <&clks 6>, <&clks 11>, <&clks 104>, <&clks 172>, <&clks 58>,
++ <&clks 18>, <&clks 60>, <&clks 20>, <&clks 3>;
++ clock-names = "pll2_bus", "pll2_pfd2_396m", "pll2_198m", "arm", "pll3_usb_otg", "periph",
++ "periph_pre", "periph_clk2", "periph_clk2_sel", "osc";
++ interrupts = <0 107 0x04>, <0 112 0x4>, <0 113 0x4>, <0 114 0x4>;
++ interrupt-names = "irq_busfreq_0", "irq_busfreq_1", "irq_busfreq_2", "irq_busfreq_3";
++ fsl,max_ddr_freq = <528000000>;
++ };
++
++The Freescale Busfreq driver supports the following setpoints for the DDR freq:
++enum bus_freq_mode {
++ BUS_FREQ_HIGH, -> The max freq the SOC supports
++ BUS_FREQ_MED, -> Medium setpoint (ex 400MHz for DDR3 when the max is 528MHz)
++ BUS_FREQ_AUDIO, -> Audio playback freq (50MHz)
++ BUS_FREQ_LOW, -> Low power IDLE freq (24MHz)
++};
++
++Currently the Freescale Busfreq driver implementation requires drivers to call the following APIs:
++1. request_bus_freq(enum bus_freq_mode):
++ The driver is requesting the system and ddr freq to be set to the requested value. The driver should call this
++ API before it even enables its clocks.
++
++2. release_bus_freq(enum bus_freq_mode):
++ The driver no longer needs the system and ddr freq at the required value. The driver should call this API after
++ its work is done and it has disabled its clocks.
++
++Examples:
++In the IPU driver, the requesting and releasing of the required bus frequency is tied into the runtime PM implementation:
++
++int ipu_runtime_suspend(struct device *dev)
++{
++ release_bus_freq(BUS_FREQ_HIGH);
++ dev_dbg(dev, "ipu busfreq high release.\n");
++
++ return 0;
++}
++
++int ipu_runtime_resume(struct device *dev)
++{
++ request_bus_freq(BUS_FREQ_HIGH);
++ dev_dbg(dev, "ipu busfreq high requst.\n");
++
++ return 0;
++}
++
++static const struct dev_pm_ops ipu_pm_ops = {
++ SET_RUNTIME_PM_OPS(ipu_runtime_suspend, ipu_runtime_resume, NULL)
++ SET_SYSTEM_SLEEP_PM_OPS(ipu_suspend, ipu_resume)
++};
+diff -Nur linux-3.10.30/Documentation/devicetree/bindings/arm/imx/gpc.txt linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/imx/gpc.txt
+--- linux-3.10.30/Documentation/devicetree/bindings/arm/imx/gpc.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30-cubox-i/Documentation/devicetree/bindings/arm/imx/gpc.txt 2014-03-08 20:32:51.000000000 +0100
+@@ -0,0 +1,20 @@
++Freescale imx GPC bindings
++
++Optional properties:
++- fsl,cpu_pupscr_sw2iso: for powering up CPU, number of 32K clock cycle PGC will wait before negating isolation signal.
++- fsl,cpu_pupsc