summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap2-git
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-omap2-git
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/linux/linux-omap2-git')
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch55
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/0001-omap3-cpuidle.patch450
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch69
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/0002-omap3-cpuidle.patch88
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff178
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-fix-timing-print.diff23
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable58
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml319
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml513
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml392
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer1238
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml245
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml186
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-set-clkseld11.diff22
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/03-enable-overlay-opt.diff27
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml167
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml497
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/04-use-pcd.diff28
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/05-fix-display-panning.diff45
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml456
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/06-ensure-fclk.diff31
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml228
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml173
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/07-set-burst-size.diff21
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml96
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml102
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml35
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/16bpp.patch137
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/400khz-i2c.diff22
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/4bitmmc.diff38
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/ASoC-TWL4030-codec-driver.patch831
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for-OMAP3-EVM.patch278
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for_OMAP3-Beagle.patch279
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/cache-display-fix.patch238
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/defconfig2017
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/logo_linux_clut224.ppm73147
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/mru-clocks1.diff25
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/mru-clocks2.diff62
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/mru-clocks3.diff94
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch275
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/no-cortex-deadlock.patch75
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/no-empty-flash-warnings.patch15
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/no-harry-potter.diff11
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml894
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/oprofile-0.9.3.armv7.diff611
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/read_die_ids.patch23
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/soc.patch1154
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch43
-rw-r--r--packages/linux/linux-omap2-git/omap-2430-lcd.patch11
-rw-r--r--packages/linux/linux-omap2-git/omap2420h4/defconfig1119
-rw-r--r--packages/linux/linux-omap2-git/omap2430sdp/defconfig1303
-rw-r--r--packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi1303
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0001-ARM-OMAP-SmartReflex-driver.patch1002
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch55
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0001-omap3-cpuidle.patch450
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch69
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0002-ARM-OMAP-SmartReflex-driver.patch278
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0002-omap3-cpuidle.patch88
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/0003-ARM-OMAP-SmartReflex-driver.patch1001
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/defconfig1622
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/no-empty-flash-warnings.patch15
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/no-harry-potter.diff11
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/soc.patch1154
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/timer-suppression.patch43
-rw-r--r--packages/linux/linux-omap2-git/omap3evm/touchscreen.patch22
65 files changed, 0 insertions, 94357 deletions
diff --git a/packages/linux/linux-omap2-git/beagleboard/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch b/packages/linux/linux-omap2-git/beagleboard/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch
deleted file mode 100644
index 6e31ead2bd..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a1dbb6dd28e9815a307b87b8d96dcf371d6cfd58 Mon Sep 17 00:00:00 2001
-From: Jarkko Nikula <jarkko.nikula@nokia.com>
-Date: Mon, 19 May 2008 13:24:41 +0300
-Subject: [PATCH] ASoC: OMAP: Add basic support for OMAP34xx in McBSP DAI driver
-
-This adds support for OMAP34xx McBSP port 1 and 2.
-
-Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com>
----
- sound/soc/omap/omap-mcbsp.c | 20 +++++++++++++++++++-
- 1 files changed, 19 insertions(+), 1 deletions(-)
-
-diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
-index 40d87e6..8e6ec9d 100644
---- a/sound/soc/omap/omap-mcbsp.c
-+++ b/sound/soc/omap/omap-mcbsp.c
-@@ -99,6 +99,21 @@ static const unsigned long omap2420_mcbsp_port[][2] = {
- static const int omap2420_dma_reqs[][2] = {};
- static const unsigned long omap2420_mcbsp_port[][2] = {};
- #endif
-+#if defined(CONFIG_ARCH_OMAP34XX)
-+static const int omap34xx_dma_reqs[][2] = {
-+ { OMAP24XX_DMA_MCBSP1_TX, OMAP24XX_DMA_MCBSP1_RX },
-+ { OMAP24XX_DMA_MCBSP2_TX, OMAP24XX_DMA_MCBSP2_RX },
-+};
-+static const unsigned long omap34xx_mcbsp_port[][2] = {
-+ { OMAP34XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR2,
-+ OMAP34XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR2 },
-+ { OMAP34XX_MCBSP2_BASE + OMAP_MCBSP_REG_DXR2,
-+ OMAP34XX_MCBSP2_BASE + OMAP_MCBSP_REG_DRR2 },
-+};
-+#else
-+static const int omap34xx_dma_reqs[][2] = {};
-+static const unsigned long omap34xx_mcbsp_port[][2] = {};
-+#endif
-
- static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream)
- {
-@@ -169,9 +184,12 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
- } else if (cpu_is_omap2420()) {
- dma = omap2420_dma_reqs[bus_id][substream->stream];
- port = omap2420_mcbsp_port[bus_id][substream->stream];
-+ } else if (cpu_is_omap343x()) {
-+ dma = omap34xx_dma_reqs[bus_id][substream->stream];
-+ port = omap34xx_mcbsp_port[bus_id][substream->stream];
- } else {
- /*
-- * TODO: Add support for 2430 and 3430
-+ * TODO: Add support for 2430
- */
- return -ENODEV;
- }
---
-1.5.5.1
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/0001-omap3-cpuidle.patch b/packages/linux/linux-omap2-git/beagleboard/0001-omap3-cpuidle.patch
deleted file mode 100644
index cdc9447b4c..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/0001-omap3-cpuidle.patch
+++ /dev/null
@@ -1,450 +0,0 @@
-From: "Rajendra Nayak" <rnayak@ti.com>
-To: <linux-omap@vger.kernel.org>
-Subject: [PATCH 01/02] OMAP3 CPUidle driver
-Date: Tue, 10 Jun 2008 12:39:00 +0530
-
-This patch adds the OMAP3 cpuidle driver. Irq enable/disable is done in the core cpuidle driver
-before it queries the governor for the next state.
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
-
----
- arch/arm/mach-omap2/Makefile | 2
- arch/arm/mach-omap2/cpuidle34xx.c | 293 ++++++++++++++++++++++++++++++++++++++
- arch/arm/mach-omap2/cpuidle34xx.h | 51 ++++++
- arch/arm/mach-omap2/pm34xx.c | 5
- drivers/cpuidle/cpuidle.c | 10 +
- 5 files changed, 359 insertions(+), 2 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/Makefile
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/Makefile 2008-06-09 20:15:33.855303920 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/Makefile 2008-06-09 20:15:39.569121361 +0530
-@@ -20,7 +20,7 @@ obj-y += pm.o
- obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o
- obj-$(CONFIG_ARCH_OMAP2420) += sleep242x.o
- obj-$(CONFIG_ARCH_OMAP2430) += sleep243x.o
--obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o
-+obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o cpuidle34xx.o
- obj-$(CONFIG_PM_DEBUG) += pm-debug.o
- endif
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.c 2008-06-10 11:41:27.644820323 +0530
-@@ -0,0 +1,293 @@
-+/*
-+ * linux/arch/arm/mach-omap2/cpuidle34xx.c
-+ *
-+ * OMAP3 CPU IDLE Routines
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * Copyright (C) 2007 Texas Instruments, Inc.
-+ * Karthik Dasu <karthik-dp@ti.com>
-+ *
-+ * Copyright (C) 2006 Nokia Corporation
-+ * Tony Lindgren <tony@atomide.com>
-+ *
-+ * Copyright (C) 2005 Texas Instruments, Inc.
-+ * Richard Woodruff <r-woodruff2@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/cpuidle.h>
-+#include <asm/arch/pm.h>
-+#include <asm/arch/prcm.h>
-+#include <asm/arch/powerdomain.h>
-+#include <asm/arch/clockdomain.h>
-+#include <asm/arch/irqs.h>
-+#include "cpuidle34xx.h"
-+
-+#ifdef CONFIG_CPU_IDLE
-+
-+struct omap3_processor_cx omap3_power_states[OMAP3_MAX_STATES];
-+struct omap3_processor_cx current_cx_state;
-+
-+static int omap3_idle_bm_check(void)
-+{
-+ /* Check for omap3_fclks_active() here once available */
-+ return 0;
-+}
-+
-+/* omap3_enter_idle - Programs OMAP3 to enter the specified state.
-+ * returns the total time during which the system was idle.
-+ */
-+static int omap3_enter_idle(struct cpuidle_device *dev,
-+ struct cpuidle_state *state)
-+{
-+ struct omap3_processor_cx *cx = cpuidle_get_statedata(state);
-+ struct timespec ts_preidle, ts_postidle, ts_idle;
-+ struct powerdomain *mpu_pd, *core_pd, *per_pd, *neon_pd;
-+ int neon_pwrst;
-+
-+ current_cx_state = *cx;
-+
-+ if (cx->type == OMAP3_STATE_C0) {
-+ /* Do nothing for C0, not even a wfi */
-+ return 0;
-+ }
-+
-+ /* Used to keep track of the total time in idle */
-+ getnstimeofday(&ts_preidle);
-+
-+ mpu_pd = pwrdm_lookup("mpu_pwrdm");
-+ core_pd = pwrdm_lookup("core_pwrdm");
-+ per_pd = pwrdm_lookup("per_pwrdm");
-+ neon_pd = pwrdm_lookup("neon_pwrdm");
-+
-+ /* Reset previous power state registers */
-+ pwrdm_clear_all_prev_pwrst(mpu_pd);
-+ pwrdm_clear_all_prev_pwrst(neon_pd);
-+ pwrdm_clear_all_prev_pwrst(core_pd);
-+ pwrdm_clear_all_prev_pwrst(per_pd);
-+
-+ if (omap_irq_pending())
-+ return 0;
-+
-+ neon_pwrst = pwrdm_read_pwrst(neon_pd);
-+
-+ /* Program MPU/NEON to target state */
-+ if (cx->mpu_state < PWRDM_POWER_ON) {
-+ if (neon_pwrst == PWRDM_POWER_ON) {
-+ if (cx->mpu_state == PWRDM_POWER_RET)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_RET);
-+ else if (cx->mpu_state == PWRDM_POWER_OFF)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_OFF);
-+ }
-+ pwrdm_set_next_pwrst(mpu_pd, cx->mpu_state);
-+ }
-+
-+ /* Program CORE to target state */
-+ if (cx->core_state < PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(core_pd, cx->core_state);
-+
-+ /* Execute ARM wfi */
-+ omap_sram_idle();
-+
-+ /* Program MPU/NEON to ON */
-+ if (cx->mpu_state < PWRDM_POWER_ON) {
-+ if (neon_pwrst == PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_ON);
-+ pwrdm_set_next_pwrst(mpu_pd, PWRDM_POWER_ON);
-+ }
-+
-+ if (cx->core_state < PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(core_pd, PWRDM_POWER_ON);
-+
-+ getnstimeofday(&ts_postidle);
-+ ts_idle = timespec_sub(ts_postidle, ts_preidle);
-+ return timespec_to_ns(&ts_idle);
-+}
-+
-+/*
-+ * omap3_enter_idle_bm - enter function for states with CPUIDLE_FLAG_CHECK_BM
-+ *
-+ * This function checks for all the pre-requisites needed for OMAP3 to enter
-+ * CORE RET/OFF state. It then calls omap3_enter_idle to program the desired
-+ * C state.
-+ */
-+static int omap3_enter_idle_bm(struct cpuidle_device *dev,
-+ struct cpuidle_state *state)
-+{
-+ struct cpuidle_state *new_state = NULL;
-+ int i, j;
-+
-+ if ((state->flags & CPUIDLE_FLAG_CHECK_BM) && omap3_idle_bm_check()) {
-+
-+ /* Find current state in list */
-+ for (i = 0; i < OMAP3_MAX_STATES; i++)
-+ if (state == &dev->states[i])
-+ break;
-+ BUG_ON(i == OMAP3_MAX_STATES);
-+
-+ /* Back up to non 'CHECK_BM' state */
-+ for (j = i - 1; j > 0; j--) {
-+ struct cpuidle_state *s = &dev->states[j];
-+
-+ if (!(s->flags & CPUIDLE_FLAG_CHECK_BM)) {
-+ new_state = s;
-+ break;
-+ }
-+ }
-+
-+ pr_debug("%s: Bus activity: Entering %s (instead of %s)\n",
-+ __FUNCTION__, new_state->name, state->name);
-+ }
-+
-+ return omap3_enter_idle(dev, new_state ? : state);
-+}
-+
-+DEFINE_PER_CPU(struct cpuidle_device, omap3_idle_dev);
-+
-+/* omap3_init_power_states - Initialises the OMAP3 specific C states.
-+ * Below is the desciption of each C state.
-+ *
-+ C0 . System executing code
-+ C1 . MPU WFI + Core active
-+ C2 . MPU CSWR + Core active
-+ C3 . MPU OFF + Core active
-+ C4 . MPU CSWR + Core CSWR
-+ C5 . MPU OFF + Core CSWR
-+ C6 . MPU OFF + Core OFF
-+ */
-+void omap_init_power_states(void)
-+{
-+ /* C0 . System executing code */
-+ omap3_power_states[0].valid = 1;
-+ omap3_power_states[0].type = OMAP3_STATE_C0;
-+ omap3_power_states[0].sleep_latency = 0;
-+ omap3_power_states[0].wakeup_latency = 0;
-+ omap3_power_states[0].threshold = 0;
-+ omap3_power_states[0].mpu_state = PWRDM_POWER_ON;
-+ omap3_power_states[0].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[0].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_SHALLOW;
-+
-+ /* C1 . MPU WFI + Core active */
-+ omap3_power_states[1].valid = 1;
-+ omap3_power_states[1].type = OMAP3_STATE_C1;
-+ omap3_power_states[1].sleep_latency = 10;
-+ omap3_power_states[1].wakeup_latency = 10;
-+ omap3_power_states[1].threshold = 30;
-+ omap3_power_states[1].mpu_state = PWRDM_POWER_ON;
-+ omap3_power_states[1].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[1].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_SHALLOW;
-+
-+ /* C2 . MPU CSWR + Core active */
-+ omap3_power_states[2].valid = 1;
-+ omap3_power_states[2].type = OMAP3_STATE_C2;
-+ omap3_power_states[2].sleep_latency = 50;
-+ omap3_power_states[2].wakeup_latency = 50;
-+ omap3_power_states[2].threshold = 300;
-+ omap3_power_states[2].mpu_state = PWRDM_POWER_RET;
-+ omap3_power_states[2].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[2].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED;
-+
-+ /* C3 . MPU OFF + Core active */
-+ omap3_power_states[3].valid = 0;
-+ omap3_power_states[3].type = OMAP3_STATE_C3;
-+ omap3_power_states[3].sleep_latency = 1500;
-+ omap3_power_states[3].wakeup_latency = 1800;
-+ omap3_power_states[3].threshold = 4000;
-+ omap3_power_states[3].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[3].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[3].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED;
-+
-+ /* C4 . MPU CSWR + Core CSWR*/
-+ omap3_power_states[4].valid = 1;
-+ omap3_power_states[4].type = OMAP3_STATE_C4;
-+ omap3_power_states[4].sleep_latency = 2500;
-+ omap3_power_states[4].wakeup_latency = 7500;
-+ omap3_power_states[4].threshold = 12000;
-+ omap3_power_states[4].mpu_state = PWRDM_POWER_RET;
-+ omap3_power_states[4].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[4].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED | CPUIDLE_FLAG_CHECK_BM;
-+
-+ /* C5 . MPU OFF + Core CSWR */
-+ omap3_power_states[5].valid = 0;
-+ omap3_power_states[5].type = OMAP3_STATE_C5;
-+ omap3_power_states[5].sleep_latency = 3000;
-+ omap3_power_states[5].wakeup_latency = 8500;
-+ omap3_power_states[5].threshold = 15000;
-+ omap3_power_states[5].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[5].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[5].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED | CPUIDLE_FLAG_CHECK_BM;
-+
-+ /* C6 . MPU OFF + Core OFF */
-+ omap3_power_states[6].valid = 0;
-+ omap3_power_states[6].type = OMAP3_STATE_C6;
-+ omap3_power_states[6].sleep_latency = 10000;
-+ omap3_power_states[6].wakeup_latency = 30000;
-+ omap3_power_states[6].threshold = 300000;
-+ omap3_power_states[6].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[6].core_state = PWRDM_POWER_OFF;
-+ omap3_power_states[6].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_DEEP | CPUIDLE_FLAG_CHECK_BM;
-+}
-+
-+struct cpuidle_driver omap3_idle_driver = {
-+ .name = "omap3_idle",
-+ .owner = THIS_MODULE,
-+};
-+/*
-+ * omap3_idle_init - Init routine for OMAP3 idle.
-+ * Registers the OMAP3 specific cpuidle driver with the cpuidle f/w
-+ * with the valid set of states.
-+ */
-+int omap3_idle_init(void)
-+{
-+ int i, count = 0;
-+ struct omap3_processor_cx *cx;
-+ struct cpuidle_state *state;
-+ struct cpuidle_device *dev;
-+
-+ omap_init_power_states();
-+ cpuidle_register_driver(&omap3_idle_driver);
-+
-+ dev = &per_cpu(omap3_idle_dev, smp_processor_id());
-+
-+ for (i = 0; i < OMAP3_MAX_STATES; i++) {
-+ cx = &omap3_power_states[i];
-+ state = &dev->states[count];
-+
-+ if (!cx->valid)
-+ continue;
-+ cpuidle_set_statedata(state, cx);
-+ state->exit_latency = cx->sleep_latency + cx->wakeup_latency;
-+ state->target_residency = cx->threshold;
-+ state->flags = cx->flags;
-+ state->enter = (state->flags & CPUIDLE_FLAG_CHECK_BM) ?
-+ omap3_enter_idle_bm : omap3_enter_idle;
-+ sprintf(state->name, "C%d", count+1);
-+ count++;
-+ }
-+
-+ if (!count)
-+ return -EINVAL;
-+ dev->state_count = count;
-+
-+ if (cpuidle_register_device(dev)) {
-+ printk(KERN_ERR "%s: CPUidle register device failed\n",
-+ __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+__initcall(omap3_idle_init);
-+#endif /* CONFIG_CPU_IDLE */
-Index: linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.h 2008-06-09 20:15:39.569121361 +0530
-@@ -0,0 +1,51 @@
-+/*
-+ * linux/arch/arm/mach-omap2/cpuidle34xx.h
-+ *
-+ * OMAP3 cpuidle structure definitions
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ *
-+ * History:
-+ *
-+ */
-+
-+#ifndef ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX
-+#define ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX
-+
-+#define OMAP3_MAX_STATES 7
-+#define OMAP3_STATE_C0 0 /* C0 - System executing code */
-+#define OMAP3_STATE_C1 1 /* C1 - MPU WFI + Core active */
-+#define OMAP3_STATE_C2 2 /* C2 - MPU CSWR + Core active */
-+#define OMAP3_STATE_C3 3 /* C3 - MPU OFF + Core active */
-+#define OMAP3_STATE_C4 4 /* C4 - MPU RET + Core RET */
-+#define OMAP3_STATE_C5 5 /* C5 - MPU OFF + Core RET */
-+#define OMAP3_STATE_C6 6 /* C6 - MPU OFF + Core OFF */
-+
-+extern void omap_sram_idle(void);
-+extern int omap3_irq_pending(void);
-+
-+struct omap3_processor_cx {
-+ u8 valid;
-+ u8 type;
-+ u32 sleep_latency;
-+ u32 wakeup_latency;
-+ u32 mpu_state;
-+ u32 core_state;
-+ u32 threshold;
-+ u32 flags;
-+};
-+
-+void omap_init_power_states(void);
-+int omap3_idle_init(void);
-+
-+#endif /* ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX */
-+
-Index: linux-omap-2.6/arch/arm/mach-omap2/pm34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/pm34xx.c 2008-06-09 20:15:33.855303920 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/pm34xx.c 2008-06-09 20:16:20.976798343 +0530
-@@ -141,7 +141,7 @@ static irqreturn_t prcm_interrupt_handle
- return IRQ_HANDLED;
- }
-
--static void omap_sram_idle(void)
-+void omap_sram_idle(void)
- {
- /* Variable to tell what needs to be saved and restored
- * in omap_sram_idle*/
-@@ -156,6 +156,7 @@ static void omap_sram_idle(void)
-
- mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
- switch (mpu_next_state) {
-+ case PWRDM_POWER_ON:
- case PWRDM_POWER_RET:
- /* No need to save context */
- save_state = 0;
-@@ -386,7 +387,9 @@ int __init omap3_pm_init(void)
-
- prcm_setup_regs();
-
-+#ifndef CONFIG_CPU_IDLE
- pm_idle = omap3_pm_idle;
-+#endif
-
- err1:
- return ret;
-Index: linux-omap-2.6/drivers/cpuidle/cpuidle.c
-===================================================================
---- linux-omap-2.6.orig/drivers/cpuidle/cpuidle.c 2008-06-09 20:15:33.856303888 +0530
-+++ linux-omap-2.6/drivers/cpuidle/cpuidle.c 2008-06-09 20:15:39.570121329 +0530
-@@ -58,6 +58,11 @@ static void cpuidle_idle_call(void)
- return;
- }
-
-+#ifdef CONFIG_ARCH_OMAP3
-+ local_irq_disable();
-+ local_fiq_disable();
-+#endif
-+
- /* ask the governor for the next state */
- next_state = cpuidle_curr_governor->select(dev);
- if (need_resched())
-@@ -70,6 +75,11 @@ static void cpuidle_idle_call(void)
- target_state->time += (unsigned long long)dev->last_residency;
- target_state->usage++;
-
-+#ifdef CONFIG_ARCH_OMAP3
-+ local_irq_enable();
-+ local_fiq_enable();
-+#endif
-+
- /* give the governor an opportunity to reflect on the outcome */
- if (cpuidle_curr_governor->reflect)
- cpuidle_curr_governor->reflect(dev);
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch b/packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch
deleted file mode 100644
index 17329be29b..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 7a444ee080c5f1a62ac5042f1e7926622b3e1ce7 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@openembedded.org>
-Date: Fri, 30 May 2008 13:43:36 +0200
-Subject: [PATCH] ARM: OMAP: omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
-
-omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
- * on revision A5 and earlier board the two leds can't be controlled seperately, should be fixed in rev. B and C boards.
-
-Signed-off-by: Koen Kooi <koen@openembedded.org>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 28 ++++++++++++++++++++++++++++
- 1 files changed, 28 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index c992cc7..83891fc 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -19,6 +19,7 @@
- #include <linux/err.h>
- #include <linux/clk.h>
- #include <linux/io.h>
-+#include <linux/leds.h>
-
- #include <asm/hardware.h>
- #include <asm/mach-types.h>
-@@ -72,6 +73,32 @@ static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
- .ctrl_name = "internal",
- };
-
-+struct gpio_led gpio_leds[] = {
-+ {
-+ .name = "beagleboard::led0",
-+ .default_trigger = "none",
-+ .gpio = 149,
-+ },
-+ {
-+ .name = "beagleboard::led1",
-+ .default_trigger = "none",
-+ .gpio = 150,
-+ },
-+};
-+
-+static struct gpio_led_platform_data gpio_led_info = {
-+ .leds = gpio_leds,
-+ .num_leds = ARRAY_SIZE(gpio_leds),
-+};
-+
-+static struct platform_device leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &gpio_led_info,
-+ },
-+};
-+
- static struct omap_board_config_kernel omap3_beagle_config[] __initdata = {
- { OMAP_TAG_UART, &omap3_beagle_uart_config },
- { OMAP_TAG_MMC, &omap3beagle_mmc_config },
-@@ -83,6 +110,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
- #ifdef CONFIG_RTC_DRV_TWL4030
- &omap3_beagle_twl4030rtc_device,
- #endif
-+ &leds_gpio,
- };
-
- static void __init omap3_beagle_init(void)
---
-1.5.4.3
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/0002-omap3-cpuidle.patch b/packages/linux/linux-omap2-git/beagleboard/0002-omap3-cpuidle.patch
deleted file mode 100644
index d35fd47567..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/0002-omap3-cpuidle.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From: "Rajendra Nayak" <rnayak@ti.com>
-To: <linux-omap@vger.kernel.org>
-Subject: [PATCH 02/02] Kconfig changes
-Date: Tue, 10 Jun 2008 12:39:02 +0530
-
-Updates the CPUidle Kconfig
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
-
----
- arch/arm/Kconfig | 10 ++++++++++
- drivers/cpuidle/Kconfig | 28 ++++++++++++++++++++++------
- 2 files changed, 32 insertions(+), 6 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/Kconfig
-===================================================================
---- linux-omap-2.6.orig/arch/arm/Kconfig 2008-06-10 11:43:10.790502713 +0530
-+++ linux-omap-2.6/arch/arm/Kconfig 2008-06-10 11:43:38.701604549 +0530
-@@ -954,6 +954,16 @@ config ATAGS_PROC
-
- endmenu
-
-+if (ARCH_OMAP)
-+
-+menu "CPUIdle"
-+
-+source "drivers/cpuidle/Kconfig"
-+
-+endmenu
-+
-+endif
-+
- if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA)
-
- menu "CPU Frequency scaling"
-Index: linux-omap-2.6/drivers/cpuidle/Kconfig
-===================================================================
---- linux-omap-2.6.orig/drivers/cpuidle/Kconfig 2008-06-10 11:43:10.790502713 +0530
-+++ linux-omap-2.6/drivers/cpuidle/Kconfig 2008-06-10 12:06:36.139332151 +0530
-@@ -1,20 +1,36 @@
-+menu "CPU idle PM support"
-
- config CPU_IDLE
- bool "CPU idle PM support"
-- default ACPI
-+ default n
- help
- CPU idle is a generic framework for supporting software-controlled
- idle processor power management. It includes modular cross-platform
- governors that can be swapped during runtime.
-
-- If you're using an ACPI-enabled platform, you should say Y here.
-+ If you're using a mobile platform that supports CPU idle PM (e.g.
-+ an ACPI-capable notebook), you should say Y here.
-+
-+if CPU_IDLE
-+
-+comment "Governors"
-
- config CPU_IDLE_GOV_LADDER
-- bool
-+ bool "ladder"
- depends on CPU_IDLE
-- default y
-+ default n
-
- config CPU_IDLE_GOV_MENU
-- bool
-+ bool "menu"
- depends on CPU_IDLE && NO_HZ
-- default y
-+ default n
-+ help
-+ This cpuidle governor evaluates all available states and chooses the
-+ deepest state that meets all of the following constraints: BM activity,
-+ expected time until next timer interrupt, and last break event time
-+ delta. It is designed to minimize power consumption. Currently
-+ dynticks is required.
-+
-+endif # CPU_IDLE
-+
-+endmenu
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff b/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff
deleted file mode 100644
index 5343f3276b..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff
+++ /dev/null
@@ -1,178 +0,0 @@
---- /tmp/board-omap3beagle.h 2008-08-11 15:40:17.000000000 +0200
-+++ git/include/asm-arm/arch-omap/board-omap3beagle.h 2008-08-11 15:41:32.433198000 +0200
-@@ -29,5 +29,41 @@
- #ifndef __ASM_ARCH_OMAP3_BEAGLE_H
- #define __ASM_ARCH_OMAP3_BEAGLE_H
-
-+/* MPU speeds */
-+#define S600M 600000000
-+#define S550M 550000000
-+#define S500M 500000000
-+#define S250M 250000000
-+#define S125M 125000000
-+
-+/* IVA speeds */
-+#define S430M 430000000
-+#define S400M 400000000
-+#define S360M 360000000
-+#define S180M 180000000
-+#define S90M 90000000
-+
-+/* L3 speeds */
-+#define S83M 83000000
-+#define S166M 166000000
-+
-+/* VDD1 OPPS */
-+#define VDD1_OPP1 0x1
-+#define VDD1_OPP2 0x2
-+#define VDD1_OPP3 0x3
-+#define VDD1_OPP4 0x4
-+#define VDD1_OPP5 0x5
-+
-+/* VDD2 OPPS */
-+#define VDD2_OPP1 0x1
-+#define VDD2_OPP2 0x2
-+#define VDD2_OPP3 0x3
-+
-+#define MIN_VDD1_OPP VDD1_OPP1
-+#define MAX_VDD1_OPP VDD1_OPP5
-+#define MIN_VDD2_OPP VDD2_OPP1
-+#define MAX_VDD2_OPP VDD2_OPP3
-+
-+
- #endif /* __ASM_ARCH_OMAP3_BEAGLE_H */
-
---- /tmp/resource34xx.c 2008-08-11 16:11:28.000000000 +0200
-+++ git/arch/arm/mach-omap2/resource34xx.c 2008-08-11 16:20:18.803198000 +0200
-@@ -173,7 +173,7 @@
-
- int set_opp(struct shared_resource *resp, u32 target_level)
- {
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- unsigned long mpu_freq, l3_freq, tput;
- int ind;
- struct bus_throughput_db *tput_db;
-@@ -248,7 +248,7 @@
- */
- void init_freq(struct shared_resource *resp)
- {
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- char *linked_res_name;
- resp->no_of_users = 0;
-
-@@ -269,7 +269,7 @@
-
- int set_freq(struct shared_resource *resp, u32 target_level)
- {
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- unsigned int vdd1_opp;
-
- if (strcmp(resp->name, "mpu_freq") == 0)
---- /tmp/clock34xx.c 2008-08-11 15:57:48.000000000 +0200
-+++ git/arch/arm/mach-omap2/clock34xx.c 2008-08-11 16:22:43.093198000 +0200
-@@ -773,7 +773,7 @@
- dpll2_clk = clk_get(NULL, "dpll2_ck");
- dpll3_clk = clk_get(NULL, "dpll3_ck");
-
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- mpu_speed = dpll1_clk->rate;
- prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
- for (; prcm_vdd->speed; prcm_vdd--) {
-@@ -836,7 +836,7 @@
- return (prcm_config+1)->opp;
- }
-
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- static void omap3_table_recalc(struct clk *clk)
- {
- if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
---- /tmp/board-omap3beagle.c 2008-08-11 15:54:04.000000000 +0200
-+++ git/arch/arm/mach-omap2/board-omap3beagle.c 2008-08-11 16:25:11.333198000 +0200
-@@ -39,9 +39,62 @@
- #include <asm/arch/gpmc.h>
- #include <asm/arch/nand.h>
-
-+#include <asm/arch/clock.h>
-+
- #define GPMC_CS0_BASE 0x60
- #define GPMC_CS_SIZE 0x30
-
-+struct vdd_prcm_config vdd1_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {S125M, VDD1_OPP1, 0},
-+ /*OPP2*/
-+ {S250M, VDD1_OPP2, 0},
-+ /*OPP3*/
-+ {S500M, VDD1_OPP3, 0},
-+ /*OPP4*/
-+ {S550M, VDD1_OPP4, 0},
-+ /*OPP5*/
-+ {S600M, VDD1_OPP5, 0},
-+};
-+
-+struct vdd_prcm_config vdd2_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {0, VDD2_OPP1, 0},
-+ /*OPP2*/
-+ {S83M, VDD2_OPP2, 0},
-+ /*OPP3*/
-+ {S166M, VDD2_OPP3, 0},
-+};
-+
-+struct vdd_prcm_config iva2_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {S90M, VDD1_OPP1, 0},
-+ /*OPP2*/
-+ {S180M, VDD1_OPP2, 0},
-+ /*OPP3*/
-+ {S360M, VDD1_OPP3, 0},
-+ /*OPP4*/
-+ {S400M, VDD1_OPP4, 0},
-+ /*OPP5*/
-+ {S430M, VDD1_OPP5, 0},
-+};
-+
-+u8 vdd1_volts[MAX_VDD1_OPP] = {
-+ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2),
-+ * 1.20V (OPP3), 1.27V (OPP4), 1.35 (OPP5)
-+ */
-+ 0x18, 0x20, 0x30, 0x36, 0x3C
-+};
-+
-+u8 vdd2_volts[MAX_VDD2_OPP] = {
-+ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2), 1.15 (OPP3) */
-+ 0x18, 0x20, 0x2C
-+};
-+
-+
- static struct mtd_partition omap3beagle_nand_partitions[] = {
- /* All the partition sizes are listed in terms of NAND block size */
- {
---- /tmp/cpu-omap.c 2008-08-11 15:43:01.000000000 +0200
-+++ git/arch/arm/plat-omap/cpu-omap.c 2008-08-11 16:31:24.943198000 +0200
-@@ -47,7 +47,7 @@
-
- static struct clk *mpu_clk;
-
--#ifdef CONFIG_MACH_OMAP_3430SDP
-+#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
- extern struct vdd_prcm_config vdd1_rate_table[];
- extern struct vdd_prcm_config vdd2_rate_table[];
- extern struct vdd_prcm_config iva2_rate_table[];
-@@ -127,7 +127,7 @@
- ret = clk_set_rate(mpu_clk, freqs.new * 1000);
- cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
- #elif defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)\
-- && defined(CONFIG_MACH_OMAP_3430SDP)
-+ && (defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE))
- {
- int ind;
- for (ind = 1; ind <= MAX_VDD1_OPP; ind++) {
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-fix-timing-print.diff b/packages/linux/linux-omap2-git/beagleboard/01-fix-timing-print.diff
deleted file mode 100644
index 89fbe3a836..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-fix-timing-print.diff
+++ /dev/null
@@ -1,23 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sat, 5 Jul 2008 20:31:56 +0000 (+0100)
-Subject: omapfb: fix video timings message
-X-Git-Tag: beagle-5~3
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2929b75035ebe8702ba2ff2c81b654c487701f64
-
-omapfb: fix video timings message
----
-
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 418ed9f..1166a01 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -1789,7 +1789,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
- vram, fbdev->mem_desc.region_cnt);
- pr_info("omapfb: Pixclock %lu kHz hfreq %lu.%lu kHz "
- "vfreq %lu.%lu Hz\n",
-- phz / 1000, hhz / 10000, hhz % 10, vhz / 10, vhz % 10);
-+ phz / 1000, hhz / 10000, hhz % 10000,
-+ vhz / 10, vhz % 10);
-
- return 0;
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable b/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable
deleted file mode 100644
index bcf0fa79f8..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable
+++ /dev/null
@@ -1,58 +0,0 @@
-OMAP2/3 GPTIMER: allow system tick GPTIMER to be configurable at build
-
-From: Paul Walmsley <paul@pwsan.com>
-
-Add Kbuild code to allow the builder to select which GPTIMER block to use
-for the Linux clockevents timer. Practical choices at this point are
-GPTIMER1 or GPTIMER12. Both of these timers are in the WKUP powerdomain,
-and so are unaffected by chip power management. GPTIMER1 can use sys_clk
-as a source, for applications where a high-resolution timer is more important
-than power management. GPTIMER12 has the special property that it has
-the secure 32kHz oscillator as its source clock, which may be less prone
-to glitches than the off-chip 32kHz oscillator.
-
-At this point, it appears that most boards are fine with GPTIMER1,
-but Beagle should use GPTIMER12.
----
-
- arch/arm/mach-omap2/Kconfig | 16 ++++++++++++++++
- arch/arm/mach-omap2/timer-gp.c | 2 +-
- 2 files changed, 17 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
-index bb6d695..0002cb6 100644
---- a/arch/arm/mach-omap2/Kconfig
-+++ b/arch/arm/mach-omap2/Kconfig
-@@ -122,3 +122,19 @@ config MACH_OMAP3EVM
- config MACH_OMAP3_BEAGLE
- bool "OMAP3 BEAGLE board"
- depends on ARCH_OMAP3 && ARCH_OMAP34XX
-+
-+config OMAP_TICK_GPTIMER
-+ int "GPTIMER used for system tick timer"
-+ depends on ARCH_OMAP2 || ARCH_OMAP3
-+ range 1 12
-+ default 1
-+ help
-+ Linux uses one of the twelve on-board OMAP GPTIMER blocks to generate
-+ system tick interrupts. The twelve GPTIMERs have slightly
-+ different powerdomain, source clock, and security properties
-+ (mostly documented in the OMAP3 TRMs) that can affect the selection
-+ of which GPTIMER to use. The historical default is GPTIMER1.
-+ If CONFIG_OMAP_32K_TIMER is selected, Beagle may require GPTIMER12
-+ due to hardware sensitivity to glitches on the OMAP 32kHz clock
-+ input.
-+
-diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
-index 557603f..ec80af5 100644
---- a/arch/arm/mach-omap2/timer-gp.c
-+++ b/arch/arm/mach-omap2/timer-gp.c
-@@ -99,7 +99,7 @@ static void __init omap2_gp_clockevent_init(void)
- {
- u32 tick_rate;
-
-- gptimer = omap_dm_timer_request_specific(1);
-+ gptimer = omap_dm_timer_request_specific(CONFIG_OMAP_TICK_GPTIMER);
- BUG_ON(gptimer == NULL);
-
- #if defined(CONFIG_OMAP_32K_TIMER)
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml b/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml
deleted file mode 100644
index b45a81edce..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml
+++ /dev/null
@@ -1,319 +0,0 @@
-CPUFreq driver for OMAP3
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/configs/omap_3430sdp_defconfig | 19 +++++++
- arch/arm/mach-omap2/clock34xx.c | 42 ++++++++++++++++-
- arch/arm/mach-omap2/resource34xx.c | 6 --
- arch/arm/plat-omap/cpu-omap.c | 78 ++++++++++++++++++++++++++++++--
- drivers/cpufreq/cpufreq.c | 2
- 5 files changed, 136 insertions(+), 11 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.c 2008-08-11
-17:21:57.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c 2008-08-11
-17:36:53.000000000 +0530
-@@ -31,6 +31,7 @@
- #include <asm/arch/sram.h>
- #include <asm/div64.h>
- #include <asm/bitops.h>
-+#include <linux/cpufreq.h>
-
- #include <asm/arch/sdrc.h>
- #include "clock.h"
-@@ -637,6 +638,35 @@ static void omap3_clkoutx2_recalc(struct
- */
- #if defined(CONFIG_ARCH_OMAP3)
-
-+#ifdef CONFIG_CPU_FREQ
-+static struct cpufreq_frequency_table freq_table[MAX_VDD1_OPP+1];
-+
-+void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
-+{
-+ struct vdd_prcm_config *prcm;
-+ int i = 0;
-+
-+ prcm = vdd1_rate_table + MAX_VDD1_OPP;
-+ for (; prcm->speed; prcm--) {
-+ freq_table[i].index = i;
-+ freq_table[i].frequency = prcm->speed / 1000;
-+ i++;
-+ }
-+
-+ if (i == 0) {
-+ printk(KERN_WARNING "%s: failed to initialize frequency \
-+ table\n",
-+ __func__);
-+ return;
-+ }
-+
-+ freq_table[i].index = i;
-+ freq_table[i].frequency = CPUFREQ_TABLE_END;
-+
-+ *table = &freq_table[0];
-+}
-+#endif
-+
- static struct clk_functions omap2_clk_functions = {
- .clk_enable = omap2_clk_enable,
- .clk_disable = omap2_clk_disable,
-@@ -644,6 +674,9 @@ static struct clk_functions omap2_clk_fu
- .clk_set_rate = omap2_clk_set_rate,
- .clk_set_parent = omap2_clk_set_parent,
- .clk_disable_unused = omap2_clk_disable_unused,
-+#ifdef CONFIG_CPU_FREQ
-+ .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
-+#endif
- };
-
- /*
-@@ -793,12 +826,11 @@ inline unsigned int get_opp(struct vdd_p
-
- if (prcm_config->speed <= freq)
- return prcm_config->opp; /* Return the Highest OPP */
-- for (; prcm_config->speed; prcm_config--) {
-+ for (; prcm_config->speed; prcm_config--)
- if (prcm_config->speed < freq)
- return (prcm_config+1)->opp;
- else if (prcm_config->speed == freq)
- return prcm_config->opp;
-- }
- /* Return the least OPP */
- return (prcm_config+1)->opp;
- }
-@@ -878,6 +910,10 @@ static int omap3_select_table_rate(struc
- clk_set_rate(dpll1_clk, prcm_vdd->speed);
- clk_set_rate(dpll2_clk, iva2_rate_table[index].speed);
- curr_vdd1_prcm_set = prcm_vdd;
-+ omap2_clksel_recalc(&mpu_ck);
-+ propagate_rate(&mpu_ck);
-+ omap2_clksel_recalc(&iva2_ck);
-+ propagate_rate(&iva2_ck);
- #ifndef CONFIG_CPU_FREQ
- /*Update loops_per_jiffy if processor speed is being changed*/
- loops_per_jiffy = compute_lpj(loops_per_jiffy,
-@@ -886,6 +922,8 @@ static int omap3_select_table_rate(struc
- } else {
- clk_set_rate(dpll3_clk, prcm_vdd->speed);
- curr_vdd2_prcm_set = prcm_vdd;
-+ omap2_clksel_recalc(&core_ck);
-+ propagate_rate(&core_ck);
- }
- return 0;
- }
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:36:52.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:36:53.000000000 +0530
-@@ -278,11 +278,7 @@ int set_freq(struct shared_resource *res
- else if (strcmp(resp->name, "dsp_freq") == 0)
- vdd1_opp = get_opp(iva2_rate_table + MAX_VDD1_OPP,
- target_level);
--
-- if (vdd1_opp == MIN_VDD1_OPP)
-- resource_release("vdd1_opp", &dummy_srf_dev);
-- else
-- resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
-+ resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
-
- resp->curr_level = target_level;
- #endif
-Index: linux-omap-2.6/arch/arm/plat-omap/cpu-omap.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/plat-omap/cpu-omap.c 2008-08-11
-17:21:57.000000000 +0530
-+++ linux-omap-2.6/arch/arm/plat-omap/cpu-omap.c 2008-08-11 17:36:53.000000000
-+0530
-@@ -8,6 +8,10 @@
- *
- * Based on cpu-sa1110.c, Copyright (C) 2001 Russell King
- *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Updated to support OMAP3
-+ * Rajendra Nayak <rnayak@ti.com>
-+ *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-@@ -25,6 +29,9 @@
- #include <asm/io.h>
- #include <asm/system.h>
- #include <asm/arch/clock.h>
-+#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
-+#include <asm/arch/omap-pm.h>
-+#endif
-
- #define VERY_HI_RATE 900000000
-
-@@ -32,12 +39,34 @@ static struct cpufreq_frequency_table *f
-
- #ifdef CONFIG_ARCH_OMAP1
- #define MPU_CLK "mpu"
-+#elif CONFIG_ARCH_OMAP3
-+#define MPU_CLK "virt_vdd1_prcm_set"
- #else
- #define MPU_CLK "virt_prcm_set"
- #endif
-
- static struct clk *mpu_clk;
-
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+extern struct vdd_prcm_config vdd1_rate_table[];
-+extern struct vdd_prcm_config vdd2_rate_table[];
-+extern struct vdd_prcm_config iva2_rate_table[];
-+#endif
-+
-+#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
-+int cpufreq_pre_func(struct notifier_block *n, unsigned long event, void *ptr);
-+int cpufreq_post_func(struct notifier_block *n, unsigned long event, void *ptr);
-+static struct notifier_block cpufreq_pre = {
-+ cpufreq_pre_func,
-+ NULL,
-+};
-+
-+static struct notifier_block cpufreq_post = {
-+ cpufreq_post_func,
-+ NULL,
-+};
-+#endif
-+
- /* TODO: Add support for SDRAM timing changes */
-
- int omap_verify_speed(struct cpufreq_policy *policy)
-@@ -89,7 +118,7 @@ static int omap_target(struct cpufreq_po
-
- if (freqs.old == freqs.new)
- return ret;
--
-+#ifdef CONFIG_ARCH_OMAP1
- cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
- #ifdef CONFIG_CPU_FREQ_DEBUG
- printk(KERN_DEBUG "cpufreq-omap: transition: %u --> %u\n",
-@@ -97,10 +126,50 @@ static int omap_target(struct cpufreq_po
- #endif
- ret = clk_set_rate(mpu_clk, freqs.new * 1000);
- cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
--
-+#elif defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)\
-+ && defined(CONFIG_MACH_OMAP_3430SDP)
-+ {
-+ int ind;
-+ for (ind = 1; ind <= MAX_VDD1_OPP; ind++) {
-+ if (vdd1_rate_table[ind].speed/1000 >= freqs.new) {
-+ omap_pm_cpu_set_freq
-+ (vdd1_rate_table[ind].speed);
-+ break;
-+ }
-+ }
-+ }
-+#endif
- return ret;
- }
-
-+#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
-+static struct cpufreq_freqs freqs_notify;
-+int cpufreq_pre_func(struct notifier_block *n, unsigned long event, void *ptr)
-+{
-+ struct clk_notifier_data *cnd;
-+
-+ cnd = (struct clk_notifier_data *)ptr;
-+ freqs_notify.old = cnd->old_rate/1000;
-+ freqs_notify.new = cnd->new_rate/1000;
-+ /* HACK: The clk_notify_post_rate_chg currently
-+ * returns a zero for old_rate at bootup
-+ */
-+ if (freqs_notify.old == 0)
-+ freqs_notify.old = 500000;
-+ cpufreq_notify_transition(&freqs_notify, CPUFREQ_PRECHANGE);
-+ return 0;
-+}
-+
-+int cpufreq_post_func(struct notifier_block *n, unsigned long event, void *ptr)
-+{
-+ struct clk_notifier_data *cnd;
-+
-+ cnd = (struct clk_notifier_data *)ptr;
-+ cpufreq_notify_transition(&freqs_notify, CPUFREQ_POSTCHANGE);
-+ return 0;
-+}
-+#endif
-+
- static int __init omap_cpu_init(struct cpufreq_policy *policy)
- {
- int result = 0;
-@@ -128,7 +197,10 @@ static int __init omap_cpu_init(struct c
-
- /* FIXME: what's the actual transition time? */
- policy->cpuinfo.transition_latency = 10 * 1000 * 1000;
--
-+#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
-+ clk_notifier_register(mpu_clk, &cpufreq_pre);
-+ clk_notifier_register(mpu_clk, &cpufreq_post);
-+#endif
- return 0;
- }
-
-Index: linux-omap-2.6/drivers/cpufreq/cpufreq.c
-===================================================================
---- linux-omap-2.6.orig/drivers/cpufreq/cpufreq.c 2008-08-11 17:21:57.000000000
-+0530
-+++ linux-omap-2.6/drivers/cpufreq/cpufreq.c 2008-08-11 17:36:53.000000000 +0530
-@@ -321,7 +321,9 @@ void cpufreq_notify_transition(struct cp
- {
- struct cpufreq_policy *policy;
-
-+#if 0 /*This causes an issue if clk_notify_post_rate_chg is used*/
- BUG_ON(irqs_disabled());
-+#endif
-
- freqs->flags = cpufreq_driver->flags;
- dprintk("notification %u of frequency transition to %u kHz\n",
-Index: linux-omap-2.6/arch/arm/configs/omap_3430sdp_defconfig
-===================================================================
---- linux-omap-2.6.orig/arch/arm/configs/omap_3430sdp_defconfig 2008-08-11
-17:36:43.000000000 +0530
-+++ linux-omap-2.6/arch/arm/configs/omap_3430sdp_defconfig 2008-08-11
-17:37:33.000000000 +0530
-@@ -193,6 +193,9 @@ CONFIG_OMAP_LL_DEBUG_UART1=y
- # CONFIG_OMAP_LL_DEBUG_UART2 is not set
- # CONFIG_OMAP_LL_DEBUG_UART3 is not set
- CONFIG_OMAP_SERIAL_WAKE=y
-+# CONFIG_OMAP_PM_NONE is not set
-+# CONFIG_OMAP_PM_NOOP is not set
-+CONFIG_OMAP_PM_SRF=y
- CONFIG_ARCH_OMAP34XX=y
- CONFIG_ARCH_OMAP3430=y
-
-@@ -288,7 +291,21 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=19
- #
- # CPU Frequency scaling
- #
--# CONFIG_CPU_FREQ is not set
-+CONFIG_CPU_FREQ=y
-+CONFIG_CPU_FREQ_TABLE=y
-+# CONFIG_CPU_FREQ_DEBUG is not set
-+CONFIG_CPU_FREQ_STAT=y
-+CONFIG_CPU_FREQ_STAT_DETAILS=y
-+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
-+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-
- #
- # Floating point emulation
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml b/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml
deleted file mode 100644
index 8b8b183808..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml
+++ /dev/null
@@ -1,513 +0,0 @@
-Adds Generic Shared Resource Framework structures and API's
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/plat-omap/resource.c | 389 +++++++++++++++++++++++++++++++++++
- include/asm-arm/arch-omap/resource.h | 97 ++++++++
- 2 files changed, 486 insertions(+)
-
-Index: linux-omap-2.6/arch/arm/plat-omap/resource.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/plat-omap/resource.c 2008-08-07 15:06:58.000000000
-+0530
-@@ -0,0 +1,389 @@
-+/*
-+ * linux/arch/arm/plat-omap/resource.c
-+ * Shared Resource Framework API implementation
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ * History:
-+ *
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/err.h>
-+#include <asm/arch/resource.h>
-+#include <linux/slab.h>
-+
-+/* res_list contains all registered struct shared_resource */
-+static LIST_HEAD(res_list);
-+
-+/* res_mutex protects res_list add and del ops */
-+static DEFINE_MUTEX(res_mutex);
-+
-+/* Static Pool of users for a resource */
-+/* used till kmalloc becomes availabel */
-+struct users_list usr_list[MAX_USERS];
-+
-+/* Private/Internal functions */
-+
-+/**
-+ * resource_lookup - loop up a resource by its name, return a pointer
-+ * @name: The name of the resource to lookup
-+ *
-+ * Looks for a registered resource by its name. Returns a pointer to
-+ * the struct shared_resource if found, else returns NULL.
-+ */
-+static struct shared_resource *resource_lookup(const char *name)
-+{
-+ struct shared_resource *res, *tmp_res;
-+
-+ if (!name)
-+ return NULL;
-+
-+ res = NULL;
-+
-+ srf_mutex_lock(&res_mutex);
-+ list_for_each_entry(tmp_res, &res_list, node) {
-+ if (!strcmp(name, tmp_res->name)) {
-+ res = tmp_res;
-+ break;
-+ }
-+ }
-+ srf_mutex_unlock(&res_mutex);
-+ return res;
-+}
-+
-+/**
-+ * update_resource_level - Regenerates and updates the curr_level of the res
-+ * @resp: Pointer to the resource
-+ *
-+ * This function looks at all the users of the given resource and the levels
-+ * requested by each of them, and recomputes a target level for the resource
-+ * acceptable to all its current usres. It then calls platform specific
-+ * change_level to change the level of the resource.
-+ * Returns 0 on success, else a non-zero value returned by the platform
-+ * specific change_level function.
-+ **/
-+static int update_resource_level(struct shared_resource *resp)
-+{
-+ struct users_list *user;
-+ unsigned long target_level;
-+ int ret;
-+
-+ /* Regenerate the target_value for the resource */
-+ target_level = RES_DEFAULTLEVEL;
-+ list_for_each_entry(user, &resp->users_list, node)
-+ if (user->level > target_level)
-+ target_level = user->level;
-+
-+ pr_debug("SRF: Changing Level for resource %s to %ld\n",
-+ resp->name, target_level);
-+ ret = resp->ops->change_level(resp, target_level);
-+ if (ret) {
-+ printk(KERN_ERR "Unable to Change"
-+ "level for resource %s to %ld\n",
-+ resp->name, target_level);
-+ return ret;
-+ }
-+ return ret;
-+}
-+
-+/**
-+ * get_user - gets a new users_list struct from static pool or dynamically
-+ *
-+ * This function initally looks for availability in the static pool and
-+ * tries to dynamcially allocate only once the static pool is empty.
-+ * We hope that during bootup by the time we hit a case of dynamic allocation
-+ * slab initialization would have happened.
-+ * Returns a pointer users_list struct on success. On dynamic allocation failure
-+ * returns a ERR_PTR(-ENOMEM).
-+ */
-+static struct users_list *get_user(void)
-+{
-+ int ind = 0;
-+ struct users_list *user;
-+
-+ /* See if something available in the static pool */
-+ while (ind < MAX_USERS) {
-+ if (usr_list[ind].usage == UNUSED)
-+ break;
-+ else
-+ ind++;
-+ }
-+ if (ind < MAX_USERS) {
-+ /* Pick from the static pool */
-+ user = &usr_list[ind];
-+ user->usage = STATIC_ALLOC;
-+ } else {
-+ /* By this time we hope slab is initialized */
-+ if (slab_is_available()) {
-+ user = kmalloc(sizeof(struct users_list), GFP_KERNEL);
-+ if (!user) {
-+ printk(KERN_ERR "SRF:FATAL ERROR: kmalloc"
-+ "failed\n");
-+ return ERR_PTR(-ENOMEM);
-+ }
-+ user->usage = DYNAMIC_ALLOC;
-+ } else {
-+ /* Dynamic alloc not available yet */
-+ printk(KERN_ERR "SRF: FATAL ERROR: users_list"
-+ "initial POOL EMPTY before slab init\n");
-+ return ERR_PTR(-ENOMEM);
-+ }
-+ }
-+ return user;
-+}
-+
-+/**
-+ * free_user - frees the dynamic users_list and marks the static one unused
-+ * @user: The struct users_list to be freed
-+ *
-+ * Looks at the usage flag and either frees the users_list if it was
-+ * dynamically allocated, and if its from the static pool, marks it unused.
-+ * No return value.
-+ */
-+void free_user(struct users_list *user)
-+{
-+ if (user->usage == DYNAMIC_ALLOC)
-+ kfree(user);
-+ else {
-+ user->usage = UNUSED;
-+ user->level = RES_DEFAULTLEVEL;
-+ user->dev = NULL;
-+ }
-+}
-+
-+/**
-+ * resource_init - Initializes the Shared resource framework.
-+ * @resources: List of all the resources modelled
-+ *
-+ * Loops through the list of resources and registers all that
-+ * are available for the current CPU.
-+ * No return value
-+ */
-+void resource_init(struct shared_resource **resources)
-+{
-+ struct shared_resource **resp;
-+ int ind;
-+
-+ pr_debug("Initializing Shared Resource Framework\n");
-+
-+ if (!cpu_is_omap343x()) {
-+ /* This CPU is not supported */
-+ printk(KERN_WARNING "Shared Resource Framework does not"
-+ "support this CPU type.\n");
-+ WARN_ON(1);
-+ }
-+
-+ /* Init the users_list POOL */
-+ for (ind = 0; ind < MAX_USERS; ind++) {
-+ usr_list[ind].usage = UNUSED;
-+ usr_list[ind].dev = NULL;
-+ usr_list[ind].level = RES_DEFAULTLEVEL;
-+ }
-+
-+ if (resources)
-+ for (resp = resources; *resp; resp++)
-+ resource_register(*resp);
-+}
-+
-+/**
-+ * resource_register - registers and initializes a resource
-+ * @res: struct shared_resource * to register
-+ *
-+ * Initializes the given resource and adds it to the resource list
-+ * for the current CPU.
-+ * Returns 0 on success, -EINVAL if given a NULL pointer, -EEXIST if the
-+ * resource is already registered.
-+ */
-+int resource_register(struct shared_resource *resp)
-+{
-+ if (!resp)
-+ return -EINVAL;
-+
-+ if (!omap_chip_is(resp->omap_chip))
-+ return -EINVAL;
-+
-+ /* Verify that the resource is not already registered */
-+ if (resource_lookup(resp->name))
-+ return -EEXIST;
-+
-+ INIT_LIST_HEAD(&resp->users_list);
-+ mutex_init(&resp->res_mutex);
-+
-+ srf_mutex_lock(&res_mutex);
-+ /* Add the resource to the resource list */
-+ list_add(&resp->node, &res_list);
-+ srf_mutex_unlock(&res_mutex);
-+
-+ /* Call the resource specific init*/
-+ if (resp->ops->init)
-+ resp->ops->init(resp);
-+
-+ pr_debug("resource: registered %s\n", resp->name);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(resource_register);
-+
-+/**
-+ * resource_unregister - unregister a resource
-+ * @res: struct shared_resource * to unregister
-+ *
-+ * Removes a resource from the resource list.
-+ * Returns 0 on success, -EINVAL if passed a NULL pointer.
-+ */
-+int resource_unregister(struct shared_resource *resp)
-+{
-+ if (!resp)
-+ return -EINVAL;
-+
-+ srf_mutex_lock(&res_mutex);
-+ /* delete the resource from the resource list */
-+ list_del(&resp->node);
-+ srf_mutex_unlock(&res_mutex);
-+
-+ pr_debug("resource: unregistered %s\n", resp->name);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(resource_unregister);
-+
-+/**
-+ * resource_request - Request for a required level of a resource
-+ * @name: The name of the resource requested
-+ * @dev: Uniquely identifes the caller
-+ * @level: The requested level for the resource
-+ *
-+ * This function recomputes the target level of the resource based on
-+ * the level requested by the user. The level of the resource is
-+ * changed to the target level, if it is not the same as the existing level
-+ * of the resource. Multiple calls to this function by the same device will
-+ * replace the previous level requested
-+ * Returns 0 on success, -EINVAL if the resource name passed in invalid.
-+ * -ENOMEM if no static pool available or dynamic allocations fails.
-+ * Else returns a non-zero error value returned by one of the failing
-+ * shared_resource_ops.
-+ */
-+int resource_request(const char *name, struct device *dev,
-+ unsigned long level)
-+{
-+ struct shared_resource *resp;
-+ struct users_list *user;
-+ int found = 0, ret = 0;
-+
-+ resp = resource_lookup(name);
-+ if (!resp) {
-+ printk(KERN_ERR "resource_request: Invalid resource name\n");
-+ return -EINVAL;
-+ }
-+
-+ /* Call the resource specific validate function */
-+ if (resp->ops->validate_level)
-+ ret = resp->ops->validate_level(resp, level);
-+ if (ret)
-+ return ret;
-+
-+ srf_mutex_lock(&resp->res_mutex);
-+ list_for_each_entry(user, &(resp->users_list), node)
-+ if (user->dev == dev) {
-+ found = 1;
-+ break;
-+ }
-+ if (!found) {
-+ /* First time user */
-+ user = get_user();
-+ if (IS_ERR(user)) {
-+ srf_mutex_unlock(&resp->res_mutex);
-+ return -ENOMEM;
-+ }
-+ user->dev = dev;
-+ list_add(&user->node, &resp->users_list);
-+ resp->no_of_users++;
-+ }
-+ user->level = level;
-+ srf_mutex_unlock(&resp->res_mutex);
-+
-+ /* Recompute and set the current level for the resource */
-+ return update_resource_level(resp);
-+}
-+EXPORT_SYMBOL(resource_request);
-+
-+/**
-+ * resource_release - Release a previously requested level of a resource
-+ * @name: The name of the resource to be released
-+ * @dev: Uniquely identifes the caller
-+ *
-+ * This function recomputes the target level of the resource after removing
-+ * the level requested by the user. The level of the resource is
-+ * changed to the target level, if it is not the same as the existing level
-+ * of the resource.
-+ * Returns 0 on success, -EINVAL if the resource name or dev structure
-+ * is invalid.
-+ */
-+int resource_release(const char *name, struct device *dev)
-+{
-+ struct shared_resource *resp;
-+ struct users_list *user;
-+ int found = 0;
-+
-+ resp = resource_lookup(name);
-+ if (!resp) {
-+ printk(KERN_ERR "resource_release: Invalid resource name\n");
-+ return -EINVAL;
-+ }
-+
-+ srf_mutex_lock(&resp->res_mutex);
-+ list_for_each_entry(user, &(resp->users_list), node)
-+ if (user->dev == dev) {
-+ found = 1;
-+ break;
-+ }
-+
-+ if (!found) {
-+ srf_mutex_unlock(&resp->res_mutex);
-+ /* No such user exists */
-+ return -EINVAL;
-+ }
-+
-+ resp->no_of_users--;
-+ list_del(&user->node);
-+ free_user(user);
-+ srf_mutex_unlock(&resp->res_mutex);
-+
-+ /* Recompute and set the current level for the resource */
-+ return update_resource_level(resp);
-+}
-+EXPORT_SYMBOL(resource_release);
-+
-+/**
-+ * resource_get_level - Returns the current level of the resource
-+ * @name: Name of the resource
-+ *
-+ * Returns the current level of the resource if found, else returns
-+ * -EINVAL if the resource name is invalid.
-+ */
-+int resource_get_level(const char *name)
-+{
-+ struct shared_resource *resp;
-+ u32 ret;
-+
-+ resp = resource_lookup(name);
-+ if (!resp) {
-+ printk(KERN_ERR "resource_release: Invalid resource name\n");
-+ return -EINVAL;
-+ }
-+
-+ srf_mutex_lock(&resp->res_mutex);
-+ ret = resp->curr_level;
-+ srf_mutex_unlock(&resp->res_mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL(resource_get_level);
-Index: linux-omap-2.6/include/asm-arm/arch-omap/resource.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/include/asm-arm/arch-omap/resource.h 2008-08-07
-15:06:58.000000000 +0530
-@@ -0,0 +1,97 @@
-+/*
-+ * linux/include/asm-arm/arch-omap/resource.h
-+ * Structure definitions for Shared resource Framework
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ *
-+ * History:
-+ *
-+ */
-+
-+#ifndef __ARCH_ARM_OMAP_RESOURCE_H
-+#define __ARCH_ARM_OMAP_RESOURCE_H
-+
-+#include <linux/list.h>
-+#include <linux/mutex.h>
-+#include <linux/device.h>
-+#include <asm/arch/cpu.h>
-+
-+#define srf_mutex_lock(x) { \
-+ if (!(in_atomic() || irqs_disabled())) \
-+ mutex_lock(x); \
-+ }
-+#define srf_mutex_unlock(x) { \
-+ if (!(in_atomic() || irqs_disabled())) \
-+ mutex_unlock(x); \
-+ }
-+
-+#define RES_DEFAULTLEVEL 0x0
-+
-+struct shared_resource_ops; /* forward declaration */
-+
-+/* Used to model a Shared Multilevel Resource */
-+struct shared_resource {
-+ /* Resource name */
-+ const char *name;
-+ /* Used to represent the OMAP chip types containing this res */
-+ const struct omap_chip_id omap_chip;
-+ /* Total no of users at any point of this resource */
-+ u8 no_of_users;
-+ /* Current level of this resource */
-+ u32 curr_level;
-+ /* Used to store any resource specific data */
-+ void *resource_data;
-+ /* List of all the current users for this resource */
-+ struct list_head users_list;
-+ /* Used to guard the resource */
-+ struct mutex res_mutex;
-+ /* Shared resource operations */
-+ struct shared_resource_ops *ops;
-+ struct list_head node;
-+};
-+
-+struct shared_resource_ops {
-+ /* Init function for the resource */
-+ void (*init)(struct shared_resource *res);
-+ /* Function to change the level of the resource */
-+ int (*change_level)(struct shared_resource *res, u32 target_level);
-+ /* Function to validate the requested level of the resource */
-+ int (*validate_level)(struct shared_resource *res, u32 target_level);
-+};
-+
-+/* This is to statically defining the users pool */
-+/* This static pool is used till kmalloc becomes available */
-+#define MAX_USERS 10
-+#define UNUSED 0x0
-+#define DYNAMIC_ALLOC 0x1
-+#define STATIC_ALLOC 0x2
-+
-+/* Used to represent a user of a shared resource */
-+struct users_list {
-+ /* Device pointer used to uniquely identify the user */
-+ struct device *dev;
-+ /* Current level as requested for the resource by the user */
-+ u32 level;
-+ struct list_head node;
-+ u8 usage;
-+};
-+
-+/* Shared resource Framework API's */
-+void resource_init(struct shared_resource **resources);
-+int resource_register(struct shared_resource *res);
-+int resource_unregister(struct shared_resource *res);
-+int resource_request(const char *name, struct device *dev,
-+ unsigned long level);
-+int resource_release(const char *name, struct device *dev);
-+int resource_get_level(const char *name);
-+
-+#endif /* __ARCH_ARM_OMAP_RESOURCE_H */
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml b/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml
deleted file mode 100644
index 8e72afeb3f..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml
+++ /dev/null
@@ -1,392 +0,0 @@
-Add the infrastructure necessary to support clock post-rate-change notifiers
-in the OMAP clock framework. This includes:
-
-- adding the clk_notify_post_rate_chg() function, which will trigger a
- notifier call chain when a clock rate is changed (but which currently
- does nothing); and
-
-- adding calls to clk_notify_post_rate_chg() everywhere clk->rate is
- assigned (mostly *_recalc() functions).
-
-This patch has no functional effect by itself; the actual notifier
-implementation follows in a separate patch.
-
-One item to note is that the post-rate-change notifier is called even
-if the new clock rate is identical to the old rate. This is because
-the process of changing the rate may have temporarily disabled or
-glitched the clock or one of its parents, and some devices may be
-sensitive to such changes.
-
-Signed-off-by: Paul Walmsley <paul@pwsan.com>
----
-
- arch/arm/mach-omap2/clock.c | 37 +++++++++++++++++++++++++++------
- arch/arm/mach-omap2/clock24xx.c | 42 +++++++++++++++++++++++++++++++++++--
- arch/arm/mach-omap2/clock34xx.c | 10 +++++++++
- arch/arm/plat-omap/clock.c | 32 ++++++++++++++++++++++++++++
- include/asm-arm/arch-omap/clock.h | 21 +++++++++++++++++++
- 5 files changed, 134 insertions(+), 8 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
-index ed15868..bd3c1f8 100644
---- a/arch/arm/mach-omap2/clock.c
-+++ b/arch/arm/mach-omap2/clock.c
-@@ -165,10 +165,15 @@ u32 omap2_get_dpll_rate(struct clk *clk)
- */
- void omap2_fixed_divisor_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
- WARN_ON(!clk->fixed_div);
-
-+ orig_rate = clk->rate;
- clk->rate = clk->parent->rate / clk->fixed_div;
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- if (clk->flags & RATE_PROPAGATES)
- propagate_rate(clk);
- }
-@@ -376,6 +381,7 @@ int omap2_clk_enable(struct clk *clk)
- void omap2_clksel_recalc(struct clk *clk)
- {
- u32 div = 0;
-+ unsigned long orig_rate;
-
- pr_debug("clock: recalc'ing clksel clk %s\n", clk->name);
-
-@@ -385,10 +391,13 @@ void omap2_clksel_recalc(struct clk *clk)
-
- if (clk->rate == (clk->parent->rate / div))
- return;
-+ orig_rate = clk->rate;
- clk->rate = clk->parent->rate / div;
-
- pr_debug("clock: new clock rate is %ld (div %d)\n", clk->rate, div);
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- if (clk->flags & RATE_PROPAGATES)
- propagate_rate(clk);
- }
-@@ -662,6 +671,8 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
- wmb();
- }
-
-+ /* post-rate-change notifier will be called by omap2_clk_set_rate() */
-+
- return 0;
- }
-
-@@ -670,20 +681,30 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
- int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
- {
- int ret = -EINVAL;
--
-- pr_debug("clock: set_rate for clock %s to rate %ld\n", clk->name, rate);
-+ unsigned long orig_rate;
-
- /* CONFIG_PARTICIPANT clocks are changed only in sets via the
- rate table mechanism, driven by mpu_speed */
- if (clk->flags & CONFIG_PARTICIPANT)
- return -EINVAL;
-
-+ if (!clk->set_rate)
-+ return -EINVAL;
-+
-+ orig_rate = clk->rate;
-+
-+ pr_debug("clock: set_rate for clock %s from %ld Hz to %ld Hz\n",
-+ clk->name, orig_rate, rate);
-+
- /* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */
-- if (clk->set_rate)
-- ret = clk->set_rate(clk, rate);
-+ ret = clk->set_rate(clk, rate);
-
-- if (ret == 0 && (clk->flags & RATE_PROPAGATES))
-- propagate_rate(clk);
-+ if (ret == 0) {
-+ clk_notify_post_rate_chg(clk, orig_rate, rate);
-+
-+ if (clk->flags & RATE_PROPAGATES)
-+ propagate_rate(clk);
-+ }
-
- return ret;
- }
-@@ -732,6 +753,7 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
- {
- void __iomem *src_addr;
- u32 field_val, field_mask, reg_val, parent_div;
-+ unsigned long orig_rate;
-
- if (clk->flags & CONFIG_PARTICIPANT)
- return -EINVAL;
-@@ -765,11 +787,14 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
- clk->parent = new_parent;
-
- /* CLKSEL clocks follow their parents' rates, divided by a divisor */
-+ orig_rate = clk->rate;
- clk->rate = new_parent->rate;
-
- if (parent_div > 0)
- clk->rate /= parent_div;
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- pr_debug("clock: set parent of %s to %s (new rate %ld)\n",
- clk->name, clk->parent->name, clk->rate);
-
-diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
-index 54cc6e1..e001549 100644
---- a/arch/arm/mach-omap2/clock24xx.c
-+++ b/arch/arm/mach-omap2/clock24xx.c
-@@ -172,11 +172,22 @@ static long omap2_dpllcore_round_rate(unsigned long target_rate)
-
- static void omap2_dpllcore_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
-+ orig_rate = clk->rate;
- clk->rate = omap2_get_dpll_rate_24xx(clk);
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- propagate_rate(clk);
- }
-
-+/*
-+ * XXX REVISIT: This code needs to keep track of the underlying struct
-+ * clocks that it is changing, so it can call post-rate-change notifiers
-+ * on them. This function probably should be rewritten to use the clock
-+ * fw.
-+ */
- static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
- {
- u32 cur_rate, low, mult, div, valid_rate, done_rate;
-@@ -259,7 +270,14 @@ dpll_exit:
- */
- static void omap2_table_mpu_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
-+ orig_rate = clk->rate;
- clk->rate = curr_prcm_set->mpu_speed;
-+
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
-+ /* No rate propagation since table clocks have no children */
- }
-
- /*
-@@ -294,7 +312,14 @@ static long omap2_round_to_table_rate(struct clk *clk, unsigned long rate)
- return highest_rate;
- }
-
--/* Sets basic clocks based on the specified rate */
-+/*
-+ * Sets basic clocks based on the specified rate
-+ *
-+ * XXX REVISIT: This code needs to keep track of the underlying struct
-+ * clocks that it is changing, so it can call post-rate-change notifiers
-+ * on them. This function probably should be rewritten to use the clock
-+ * fw.
-+ */
- static int omap2_select_table_rate(struct clk *clk, unsigned long rate)
- {
- u32 cur_rate, done_rate, bypass = 0, tmp;
-@@ -353,7 +378,8 @@ static int omap2_select_table_rate(struct clk *clk, unsigned long rate)
- cm_write_mod_reg(prcm->cm_clksel_gfx, GFX_MOD, CM_CLKSEL);
-
- /* Major subsystem dividers */
-- tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) & OMAP24XX_CLKSEL_DSS2_MASK;
-+ tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) &
-+ OMAP24XX_CLKSEL_DSS2_MASK;
- cm_write_mod_reg(prcm->cm_clksel1_core | tmp, CORE_MOD,
- CM_CLKSEL1);
-
-@@ -460,13 +486,25 @@ static u32 omap2_get_sysclkdiv(void)
-
- static void omap2_osc_clk_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
-+ orig_rate = clk->rate;
- clk->rate = omap2_get_apll_clkin() * omap2_get_sysclkdiv();
-+
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- propagate_rate(clk);
- }
-
- static void omap2_sys_clk_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
-+ orig_rate = clk->rate;
- clk->rate = clk->parent->rate / omap2_get_sysclkdiv();
-+
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- propagate_rate(clk);
- }
-
-diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
-index 408b51a..7b89b61 100644
---- a/arch/arm/mach-omap2/clock34xx.c
-+++ b/arch/arm/mach-omap2/clock34xx.c
-@@ -53,8 +53,13 @@
- */
- static void omap3_dpll_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
-+ orig_rate = clk->rate;
- clk->rate = omap2_get_dpll_rate(clk);
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- propagate_rate(clk);
- }
-
-@@ -500,6 +505,7 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
- const struct dpll_data *dd;
- u32 v;
- struct clk *pclk;
-+ unsigned long orig_rate;
-
- /* Walk up the parents of clk, looking for a DPLL */
- pclk = clk->parent;
-@@ -513,6 +519,8 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
-
- WARN_ON(!dd->control_reg || !dd->enable_mask);
-
-+ orig_rate = clk->rate;
-+
- v = __raw_readl(dd->control_reg) & dd->enable_mask;
- v >>= __ffs(dd->enable_mask);
- if (v != DPLL_LOCKED)
-@@ -520,6 +528,8 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
- else
- clk->rate = clk->parent->rate * 2;
-
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- if (clk->flags & RATE_PROPAGATES)
- propagate_rate(clk);
- }
-diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
-index c2e741d..421d076 100644
---- a/arch/arm/plat-omap/clock.c
-+++ b/arch/arm/plat-omap/clock.c
-@@ -254,10 +254,16 @@ __setup("mpurate=", omap_clk_setup);
- /* Used for clocks that always have same value as the parent clock */
- void followparent_recalc(struct clk *clk)
- {
-+ unsigned long orig_rate;
-+
- if (clk == NULL || IS_ERR(clk))
- return;
-
-+ orig_rate = clk->rate;
- clk->rate = clk->parent->rate;
-+
-+ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
-+
- if (unlikely(clk->flags & RATE_PROPAGATES))
- propagate_rate(clk);
- }
-@@ -373,6 +379,32 @@ void clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
- EXPORT_SYMBOL(clk_init_cpufreq_table);
- #endif
-
-+/**
-+ * clk_notify_post_rate_chg - call post-clk-rate-change notifier chain
-+ * @clk: struct clk * that is changing rate
-+ * @old_rate: old rate
-+ * @new_rate: new rate
-+ *
-+ * Triggers a notifier call chain on the post-clk-rate-change notifier
-+ * for clock 'clk'. Passes a pointer to the struct clk and the
-+ * previous and current rates to the notifier callback. Intended to be
-+ * called by internal clock code only. No return value.
-+ */
-+void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
-+ unsigned long new_rate)
-+{
-+ struct clk_notifier *cn;
-+ struct clk_notifier_data cnd;
-+
-+ cnd.clk = clk;
-+ cnd.old_rate = old_rate;
-+ cnd.new_rate = new_rate;
-+
-+ /* XXX Call notifier here */
-+
-+}
-+
-+
- /*-------------------------------------------------------------------------*/
-
- #ifdef CONFIG_OMAP_RESET_CLOCKS
-diff --git a/include/asm-arm/arch-omap/clock.h b/include/asm-arm/arch-omap/clock.h
-index bfaf7b6..e3c9aeb 100644
---- a/include/asm-arm/arch-omap/clock.h
-+++ b/include/asm-arm/arch-omap/clock.h
-@@ -10,6 +10,8 @@
- * published by the Free Software Foundation.
- */
-
-+#include <linux/notifier.h>
-+
- #ifndef __ARCH_ARM_OMAP_CLOCK_H
- #define __ARCH_ARM_OMAP_CLOCK_H
-
-@@ -58,6 +60,19 @@ struct dpll_data {
-
- #endif
-
-+struct clk_notifier {
-+ struct clk *clk;
-+ struct atomic_notifier_head notifier_head;
-+ struct list_head node;
-+};
-+
-+struct clk_notifier_data {
-+ struct clk *clk;
-+ unsigned long old_rate;
-+ unsigned long new_rate;
-+};
-+
-+
- struct clk {
- struct list_head node;
- struct module *owner;
-@@ -121,6 +136,10 @@ extern void clk_allow_idle(struct clk *clk);
- extern void clk_deny_idle(struct clk *clk);
- extern int clk_get_usecount(struct clk *clk);
- extern void clk_enable_init_clocks(void);
-+extern int clk_notifier_register(struct clk *clk, struct notifier_block *nb);
-+extern int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);
-+extern void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
-+ unsigned long new_rate);
- #ifdef CONFIG_CPU_FREQ
- extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
- #endif
-@@ -161,6 +180,8 @@ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
-
- #define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X)
-
-+/* Clk rate change notifier callback type */
-+#define CLK_POST_RATE_CHANGE 1
-
- /* CM_CLKSEL2_PLL.CORE_CLK_SRC options (24XX) */
- #define CORE_CLK_SRC_32K 0
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12 b/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12
deleted file mode 100644
index 51d2c8cff0..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12
+++ /dev/null
@@ -1,38 +0,0 @@
-BeagleBoard: make Beagle use GPTIMER12 for system ticks
-
-From: Paul Walmsley <paul@pwsan.com>
-
-There is suspicion that the 32kHz input clock to the OMAP may be noisy
-on BeagleBoards. On OMAP2/3 GPTIMER1, this can cause the timer
-counter register to warp to unknown values or miss interrupt
-conditions. So, use GPTIMER12 instead, which apparently has its own
-secure 32kHz oscillator and will hopefully not be prone to the 32kHz
-glitches.
----
-
- arch/arm/configs/omap3_beagle_defconfig | 5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig
-index e1b16d0..7805995 100644
---- a/arch/arm/configs/omap3_beagle_defconfig
-+++ defconfig
-@@ -182,8 +182,8 @@ CONFIG_OMAP_BOOT_REASON=y
- # CONFIG_OMAP_MCBSP is not set
- # CONFIG_OMAP_MMU_FWK is not set
- # CONFIG_OMAP_MBOX_FWK is not set
--CONFIG_OMAP_MPU_TIMER=y
--# CONFIG_OMAP_32K_TIMER is not set
-+# CONFIG_OMAP_MPU_TIMER is not set
-+CONFIG_OMAP_32K_TIMER=y
- CONFIG_OMAP_DM_TIMER=y
- # CONFIG_OMAP_LL_DEBUG_UART1 is not set
- # CONFIG_OMAP_LL_DEBUG_UART2 is not set
-@@ -198,6 +198,7 @@ CONFIG_ARCH_OMAP3430=y
- # CONFIG_MACH_OMAP_3430SDP is not set
- # CONFIG_MACH_OMAP3EVM is not set
- CONFIG_MACH_OMAP3_BEAGLE=y
-+CONFIG_OMAP_TICK_GPTIMER=12
-
- #
- # Boot options
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml b/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml
deleted file mode 100644
index 35ef87bdf0..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml
+++ /dev/null
@@ -1,245 +0,0 @@
-Adds resource def's for mpu/core/powerdomain latencies for OMAP3
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/resource34xx.h | 226 +++++++++++++++++++++++++++++++++++++
- 1 files changed, 226 insertions(+)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-07
-15:07:02.000000000 +0530
-@@ -0,0 +1,226 @@
-+/*
-+ * linux/arch/arm/mach-omap2/resource34xx.h
-+ *
-+ * OMAP3 resource definitions
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ *
-+ * History:
-+ *
-+ */
-+
-+#ifndef __ARCH_ARM_MACH_OMAP2_RESOURCE_H
-+#define __ARCH_ARM_MACH_OMAP2_RESOURCE_H
-+
-+#include <asm/arch/resource.h>
-+#include <asm/arch/powerdomain.h>
-+
-+/**
-+ * mpu_latency/core_latency are used to control the cpuidle C state.
-+ */
-+void init_latency(struct shared_resource *resp);
-+int set_latency(struct shared_resource *resp, u32 target_level);
-+
-+static u8 mpu_qos_req_added;
-+static u8 core_qos_req_added;
-+
-+static struct shared_resource_ops lat_res_ops = {
-+ .init = init_latency,
-+ .change_level = set_latency,
-+};
-+
-+static struct shared_resource mpu_latency = {
-+ .name = "mpu_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &mpu_qos_req_added,
-+ .ops = &lat_res_ops,
-+};
-+
-+static struct shared_resource core_latency = {
-+ .name = "core_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &core_qos_req_added,
-+ .ops = &lat_res_ops,
-+};
-+
-+/**
-+ * Power domain Latencies are used to control the target Power
-+ * domain state once all clocks for the power domain
-+ * are released.
-+ */
-+void init_pd_latency(struct shared_resource *resp);
-+int set_pd_latency(struct shared_resource *resp, u32 target_level);
-+
-+/* Power Domain Latency levels */
-+#define PD_LATENCY_OFF 0x0
-+#define PD_LATENCY_RET 0x1
-+#define PD_LATENCY_INACT 0x2
-+#define PD_LATENCY_ON 0x3
-+
-+#define PD_LATENCY_MAXLEVEL 0x4
-+
-+struct pd_latency_db {
-+ char *pwrdm_name;
-+ struct powerdomain *pd;
-+ /* Latencies for each state transition, stored in us */
-+ unsigned long latency[PD_LATENCY_MAXLEVEL];
-+};
-+
-+static struct shared_resource_ops pd_lat_res_ops = {
-+ .init = init_pd_latency,
-+ .change_level = set_pd_latency,
-+};
-+
-+static struct pd_latency_db iva2_pwrdm_lat_db = {
-+ .pwrdm_name = "iva2_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 1000,
-+ .latency[PD_LATENCY_RET] = 100,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource iva2_pwrdm_latency = {
-+ .name = "iva2_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &iva2_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db gfx_pwrdm_lat_db = {
-+ .pwrdm_name = "gfx_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 1000,
-+ .latency[PD_LATENCY_RET] = 100,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource gfx_pwrdm_latency = {
-+ .name = "gfx_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
-+ .resource_data = &gfx_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct shared_resource sgx_pwrdm_latency = {
-+ .name = "sgx_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2),
-+ .resource_data = &gfx_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db dss_pwrdm_lat_db = {
-+ .pwrdm_name = "dss_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 70,
-+ .latency[PD_LATENCY_RET] = 20,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource dss_pwrdm_latency = {
-+ .name = "dss_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &dss_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db cam_pwrdm_lat_db = {
-+ .pwrdm_name = "cam_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 850,
-+ .latency[PD_LATENCY_RET] = 35,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource cam_pwrdm_latency = {
-+ .name = "cam_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &cam_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db per_pwrdm_lat_db = {
-+ .pwrdm_name = "per_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 200,
-+ .latency[PD_LATENCY_RET] = 110,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource per_pwrdm_latency = {
-+ .name = "per_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &per_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db neon_pwrdm_lat_db = {
-+ .pwrdm_name = "neon_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 1000,
-+ .latency[PD_LATENCY_RET] = 100,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource neon_pwrdm_latency = {
-+ .name = "neon_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &neon_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db usbhost_pwrdm_lat_db = {
-+ .pwrdm_name = "usbhost_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 1000,
-+ .latency[PD_LATENCY_RET] = 100,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource usbhost_pwrdm_latency = {
-+ .name = "usbhost_pwrdm_latency",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2),
-+ .resource_data = &usbhost_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+static struct pd_latency_db emu_pwrdm_lat_db = {
-+ .pwrdm_name = "emu_pwrdm",
-+ .latency[PD_LATENCY_OFF] = 1000,
-+ .latency[PD_LATENCY_RET] = 100,
-+ .latency[PD_LATENCY_INACT] = 0,
-+ .latency[PD_LATENCY_ON] = 0
-+};
-+
-+static struct shared_resource emu_pwrdm_latency = {
-+ .name = "emu_pwrdm",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &emu_pwrdm_lat_db,
-+ .ops = &pd_lat_res_ops,
-+};
-+
-+struct shared_resource *resources_omap[] __initdata = {
-+ &mpu_latency,
-+ &core_latency,
-+ /* Power Domain Latency resources */
-+ &iva2_pwrdm_latency,
-+ &gfx_pwrdm_latency,
-+ &sgx_pwrdm_latency,
-+ &dss_pwrdm_latency,
-+ &cam_pwrdm_latency,
-+ &per_pwrdm_latency,
-+ &neon_pwrdm_latency,
-+ &usbhost_pwrdm_latency,
-+ &emu_pwrdm_latency,
-+ NULL
-+};
-+
-+#endif /* __ARCH_ARM_MACH_OMAP2_RESOURCE_H */
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml b/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml
deleted file mode 100644
index 97058f99e1..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml
+++ /dev/null
@@ -1,186 +0,0 @@
-This patch implements the remaining code for notification of clock
-rate changes via the clock framework:
-
-- a notifier registration function, clk_notifier_register()
-
-- a notifier unregistration function, clk_notifier_unregister()
-
-- the clk_notify_post_rate_chg() call-chain function, has been fleshed out
-
-The implementation is via an atomic notifier, called with the clockfw
-spinlock held. Callback functions must not sleep and must not re-enter
-the clock framework, and should execute quickly.
-
-In the medium-term future, there are likely to be few users of these
-notifiers. So, rather than storing one notifier per struct clk,
-notifiers are stored in a separate, dynamically allocated list,
-effectively trading execution speed (in terms of a sequential scan of
-the notifier list) for memory savings. The implementation is
-completely hidden from the callbacks and is easily changed if
-necessary.
-
-Signed-off-by: Paul Walmsley <paul@pwsan.com>
----
-
- arch/arm/plat-omap/clock.c | 118 +++++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 115 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
-index 421d076..354f45f 100644
---- a/arch/arm/plat-omap/clock.c
-+++ b/arch/arm/plat-omap/clock.c
-@@ -22,6 +22,7 @@
- #include <linux/mutex.h>
- #include <linux/platform_device.h>
- #include <linux/cpufreq.h>
-+#include <linux/notifier.h>
- #include <linux/debugfs.h>
-
- #include <asm/io.h>
-@@ -34,6 +35,8 @@ static DEFINE_SPINLOCK(clockfw_lock);
-
- static struct clk_functions *arch_clock;
-
-+static LIST_HEAD(clk_notifier_list);
-+
- /*-------------------------------------------------------------------------
- * Standard clock functions defined in include/linux/clk.h
- *-------------------------------------------------------------------------*/
-@@ -380,6 +383,110 @@ EXPORT_SYMBOL(clk_init_cpufreq_table);
- #endif
-
- /**
-+<<<<<<< current:arch/arm/plat-omap/clock.c
-+=======
-+ * clk_notifier_register - add a clock rate change notifier
-+ * @clk: struct clk * to watch for rate echanges
-+ * @nb: struct notifier_block * with callback info
-+ *
-+ * Request notification after a frequency change on clock 'clk'. This
-+ * uses an atomic notifier. The callback will be called with
-+ * interrupts disabled; therefore callback code should be very
-+ * lightweight. Callback code must not call back into the clock
-+ * framework. Callback code will be passed the previous and new rate
-+ * of the clock.
-+ *
-+ * clk_notifier_register() must be called from process
-+ * context. Returns -EINVAL if called with null arguments, -ENOMEM
-+ * upon allocation failure; otherwise, passes along the return value
-+ * of atomic_notifier_chain_register().
-+ */
-+int clk_notifier_register(struct clk *clk, struct notifier_block *nb)
-+{
-+ struct clk_notifier *cn = NULL, *cn_new = NULL;
-+ int r;
-+ unsigned long flags;
-+
-+ if (!clk || !nb)
-+ return -EINVAL;
-+
-+ /* Allocate this here speculatively so we can avoid GFP_ATOMIC */
-+ cn_new = kzalloc(sizeof(struct clk_notifier), GFP_KERNEL);
-+ if (!cn_new)
-+ return -ENOMEM;
-+
-+ spin_lock_irqsave(&clockfw_lock, flags);
-+
-+ list_for_each_entry(cn, &clk_notifier_list, node) {
-+ if (cn->clk == clk)
-+ break;
-+ }
-+
-+ if (cn->clk != clk) {
-+ cn_new->clk = clk;
-+ ATOMIC_INIT_NOTIFIER_HEAD(&cn_new->notifier_head);
-+
-+ list_add(&cn_new->node, &clk_notifier_list);
-+ cn = cn_new;
-+ } else {
-+ kfree(cn_new); /* didn't need it after all */
-+ }
-+
-+ r = atomic_notifier_chain_register(&cn->notifier_head, nb);
-+
-+ spin_unlock_irqrestore(&clockfw_lock, flags);
-+
-+ return r;
-+}
-+
-+/**
-+ * clk_notifier_unregister - remove a clock rate change notifier
-+ * @clk: struct clk *
-+ * @nb: struct notifier_block * with callback info
-+ *
-+ * Request no further notification for frequency changes on clock
-+ * 'clk'. This function presently does not release memory allocated
-+ * by its corresponding _register function; see inline comments for
-+ * more informations. Returns -EINVAL if called with null arguments;
-+ * otherwise, passes along the return value of
-+ * atomic_notifier_chain_unregister().
-+ */
-+int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb)
-+{
-+ struct clk_notifier *cn = NULL;
-+ int r = -EINVAL;
-+ unsigned long flags;
-+
-+ if (!clk || !nb)
-+ return -EINVAL;
-+
-+ spin_lock_irqsave(&clockfw_lock, flags);
-+
-+ list_for_each_entry(cn, &clk_notifier_list, node) {
-+ if (cn->clk == clk)
-+ break;
-+ }
-+
-+ if (cn->clk == clk) {
-+ r = atomic_notifier_chain_unregister(&cn->notifier_head, nb);
-+
-+ /*
-+ * XXX unfortunately it seems that there is no polite
-+ * way to test if a notifier has zero users. So once
-+ * a post-notifier has been registered on a clock,
-+ * that struct clk_notifier will not be freed, even if
-+ * all of its users unregister.
-+ */
-+ } else {
-+ r = -ENOENT;
-+ }
-+
-+ spin_unlock_irqrestore(&clockfw_lock, flags);
-+
-+ return r;
-+}
-+
-+/**
- * clk_notify_post_rate_chg - call post-clk-rate-change notifier chain
- * @clk: struct clk * that is changing rate
- * @old_rate: old rate
-@@ -400,11 +507,16 @@ void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
- cnd.old_rate = old_rate;
- cnd.new_rate = new_rate;
-
-- /* XXX Call notifier here */
--
-+ list_for_each_entry(cn, &clk_notifier_list, node) {
-+ if (cn->clk == clk) {
-+ atomic_notifier_call_chain(&cn->notifier_head,
-+ CLK_POST_RATE_CHANGE,
-+ &cnd);
-+ break;
-+ }
-+ }
- }
-
--
- /*-------------------------------------------------------------------------*/
-
- #ifdef CONFIG_OMAP_RESET_CLOCKS
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-set-clkseld11.diff b/packages/linux/linux-omap2-git/beagleboard/02-set-clkseld11.diff
deleted file mode 100644
index c437f145d3..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/02-set-clkseld11.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sat, 5 Jul 2008 20:32:38 +0000 (+0100)
-Subject: omap: set CLKSEL_DSS1 to 2
-X-Git-Tag: beagle-5~2
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=d23f9c3c5c6243b626f7ec4c255469de2536e488
-
-omap: set CLKSEL_DSS1 to 2
----
-
-diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
-index 8fdf8f3..04dedec 100644
---- a/arch/arm/mach-omap2/clock34xx.c
-+++ b/arch/arm/mach-omap2/clock34xx.c
-@@ -596,6 +596,8 @@ int __init omap2_clk_init(void)
- /* u32 clkrate; */
- u32 cpu_clkflg;
-
-+ __raw_writel(0x1002, io_p2v(0x48004e40));
-+
- /* REVISIT: Ultimately this will be used for multiboot */
- #if 0
- if (cpu_is_omap242x()) {
diff --git a/packages/linux/linux-omap2-git/beagleboard/03-enable-overlay-opt.diff b/packages/linux/linux-omap2-git/beagleboard/03-enable-overlay-opt.diff
deleted file mode 100644
index 9fa749f5fc..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/03-enable-overlay-opt.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sun, 6 Jul 2008 13:15:36 +0000 (+0100)
-Subject: omapfb: enable overlay optimisation when possible
-X-Git-Tag: beagle-5~1
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=a63ac3abdf6781f863112321260fe7a5da757802
-
-omapfb: enable overlay optimisation when possible
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 6aff476..3b36227 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -582,11 +582,13 @@ static int omap_dispc_enable_plane(int plane, int enable)
- const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
- DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
- DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
-+ unsigned overlay_opt = plane & !!enable & !dispc.color_key.key_type;
- if ((unsigned int)plane > dispc.mem_desc.region_cnt)
- return -EINVAL;
-
- enable_lcd_clocks(1);
- MOD_REG_FLD(at_reg[plane], 1, enable ? 1 : 0);
-+ MOD_REG_FLD(DISPC_CONTROL, 1<<12 | 1<<5, overlay_opt<<12 | 1<<5);
- enable_lcd_clocks(0);
-
- return 0;
diff --git a/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml b/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml
deleted file mode 100644
index d052023f12..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml
+++ /dev/null
@@ -1,167 +0,0 @@
-Adds init/change_level/validate_level calls for OMAP3 resources
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/resource34xx.c | 148 +++++++++++++++++++++++++++++++++++++
- 1 files changed, 148 insertions(+)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-07
-15:07:04.000000000 +0530
-@@ -0,0 +1,148 @@
-+/*
-+ * linux/arch/arm/mach-omap2/resource34xx.c
-+ * OMAP3 resource init/change_level/validate_level functions
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ * History:
-+ *
-+ */
-+
-+#include <linux/pm_qos_params.h>
-+#include <asm/arch/powerdomain.h>
-+#include <asm/arch/clockdomain.h>
-+#include "resource34xx.h"
-+
-+/**
-+ * init_latency - Initializes the mpu/core latency resource.
-+ * @resp: Latency resource to be initalized
-+ *
-+ * No return value.
-+ */
-+void init_latency(struct shared_resource *resp)
-+{
-+ resp->no_of_users = 0;
-+ resp->curr_level = RES_DEFAULTLEVEL;
-+ *((u8 *)resp->resource_data) = 0;
-+ return;
-+}
-+
-+/**
-+ * set_latency - Adds/Updates and removes the CPU_DMA_LATENCY in *pm_qos_params.
-+ * @resp: resource pointer
-+ * @latency: target latency to be set
-+ *
-+ * Returns 0 on success, or error values as returned by
-+ * pm_qos_update_requirement/pm_qos_add_requirement.
-+ */
-+int set_latency(struct shared_resource *resp, u32 latency)
-+{
-+ u8 *pm_qos_req_added;
-+
-+ if (resp->curr_level == latency)
-+ return 0;
-+ else
-+ /* Update the resources current level */
-+ resp->curr_level = latency;
-+
-+ pm_qos_req_added = resp->resource_data;
-+ if (latency == RES_DEFAULTLEVEL)
-+ /* No more users left, remove the pm_qos_req if present */
-+ if (*pm_qos_req_added) {
-+ pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY,
-+ resp->name);
-+ *pm_qos_req_added = 0;
-+ return 0;
-+ }
-+
-+ if (*pm_qos_req_added) {
-+ return pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY,
-+ resp->name, latency);
-+ } else {
-+ *pm_qos_req_added = 1;
-+ return pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY,
-+ resp->name, latency);
-+ }
-+}
-+
-+/**
-+ * init_pd_latency - Initializes the power domain latency resource.
-+ * @resp: Power Domain Latency resource to be initialized.
-+ *
-+ * No return value.
-+ */
-+void init_pd_latency(struct shared_resource *resp)
-+{
-+ struct pd_latency_db *pd_lat_db;
-+
-+ resp->no_of_users = 0;
-+ resp->curr_level = PD_LATENCY_OFF;
-+ pd_lat_db = resp->resource_data;
-+ /* Populate the power domain associated with the latency resource */
-+ pd_lat_db->pd = pwrdm_lookup(pd_lat_db->pwrdm_name);
-+ return;
-+}
-+
-+/**
-+ * set_pd_latency - Updates the curr_level of the power domain resource.
-+ * @resp: Power domain latency resource.
-+ * @latency: New latency value acceptable.
-+ *
-+ * This function maps the latency in microsecs to the acceptable
-+ * Power domain state using the latency DB.
-+ * It then programs the power domain to enter the target state.
-+ * Always returns 0.
-+ */
-+int set_pd_latency(struct shared_resource *resp, u32 latency)
-+{
-+ u32 pd_lat_level, ind, i;
-+ struct pd_latency_db *pd_lat_db;
-+ struct powerdomain *pwrdm;
-+
-+ pd_lat_db = resp->resource_data;
-+ pwrdm = pd_lat_db->pd;
-+ pd_lat_level = PD_LATENCY_OFF;
-+ /* using the latency db map to the appropriate PD state */
-+ for (ind = 0; ind < PD_LATENCY_MAXLEVEL; ind++)
-+ if (pd_lat_db->latency[ind] < latency)
-+ pd_lat_level = ind;
-+
-+ resp->curr_level = pd_lat_level;
-+ switch (pd_lat_level) {
-+ case PWRDM_POWER_OFF:
-+ case PWRDM_POWER_RET:
-+ /* Errata 1.29: No transitions from INACTIVE to RET/OFF
-+ * possible.
-+ * Need to be taken care of here.
-+ */
-+ if (pwrdm_read_pwrst(pwrdm) != PWRDM_POWER_ON) {
-+ /* Force the clock domains to ON */
-+ for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
-+ omap2_clkdm_deny_idle(pwrdm->pwrdm_clkdms[i]);
-+ omap2_clkdm_wakeup(pwrdm->pwrdm_clkdms[i]);
-+ }
-+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
-+ pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
-+ for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
-+ omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[i]);
-+ omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[i]);
-+ }
-+ } else
-+ pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
-+ break;
-+ case PWRDM_POWER_ON:
-+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
-+ break;
-+ default:
-+ break;
-+ }
-+ return 0;
-+}
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml b/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml
deleted file mode 100644
index 32d767a342..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml
+++ /dev/null
@@ -1,497 +0,0 @@
-Adds SRF calls into OMAP PM skeleton layer developed by Paul W.
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/Makefile | 1
- arch/arm/mach-omap2/clockdomain.c | 7
- arch/arm/plat-omap/Kconfig | 3
- arch/arm/plat-omap/Makefile | 4
- arch/arm/plat-omap/omap-pm-srf.c | 367 ++++++++++++++++++++++++++++++++
- include/asm-arm/arch-omap/powerdomain.h | 1
- include/asm-arm/arch-omap/resource.h | 1
- 7 files changed, 383 insertions(+), 1 deletion(-)
-
-Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-08-11
-17:38:37.000000000 +0530
-@@ -0,0 +1,367 @@
-+/*
-+ * omap-pm-srf.c - OMAP power management interface implemented
-+ * using Shared resource framework
-+ *
-+ * This code implements the OMAP power management interface to
-+ * drivers, CPUIdle, CPUFreq, and DSP Bridge. It is strictly for
-+ * debug/demonstration use, as it does nothing but printk() whenever a
-+ * function is called (when DEBUG is defined, below)
-+ *
-+ * Copyright (C) 2008 Texas Instruments, Inc.
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Paul Walmsley
-+ *
-+ * Interface developed by (in alphabetical order):
-+ * Karthik Dasu, Amish Lakhani, Tony Lindgren, Rajendra Nayak, Sakari
-+ * Poussa, Veeramanikandan Raju, Igor Stoppa, Paul Walmsley, Richard
-+ * Woodruff
-+ *
-+ * Interfaces defined by Paul Walmsley
-+ * Updated with SRF calls by Rajendra Nayak
-+ */
-+
-+#undef DEBUG
-+
-+#include <linux/init.h>
-+#include <linux/cpufreq.h>
-+#include <linux/device.h>
-+
-+/* Interface documentation is in asm/arch/omap-pm.h */
-+#include <asm/arch/omap-pm.h>
-+
-+#include <asm/arch/powerdomain.h>
-+#include <asm/arch/resource.h>
-+/*
-+#include <asm/arch/tiocp.h>
-+*/
-+
-+#define LAT_RES_POSTAMBLE "_latency"
-+char latency_res_name[30];
-+/* lat_name_mutex protects latency_res_name*/
-+static DEFINE_MUTEX(lat_name_mutex);
-+
-+
-+/**
-+ * get_lat_res_name - gets the latency resource name given a power domain name
-+ * @pwrdm_name: Name of the power domain.
-+ *
-+ * Returns a pointer to the latency resource name.
-+ */
-+static char *get_lat_res_name(const char *pwrdm_name)
-+{
-+ strcpy(latency_res_name, "");
-+ if (!(in_atomic() || irqs_disabled()))
-+ mutex_lock(&lat_name_mutex);
-+ WARN_ON(strlen(pwrdm_name) + strlen(LAT_RES_POSTAMBLE) >
-+ sizeof(latency_res_name));
-+ strcpy(latency_res_name, pwrdm_name);
-+ strcat(latency_res_name, LAT_RES_POSTAMBLE);
-+ if (!(in_atomic() || irqs_disabled()))
-+ mutex_unlock(&lat_name_mutex);
-+ return latency_res_name;
-+}
-+
-+static struct omap_opp *dsp_opps;
-+static struct omap_opp *mpu_opps;
-+
-+/*
-+ * Device-driver-originated constraints (via board-*.c files)
-+ */
-+
-+void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
-+{
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (t == -1) {
-+ pr_debug("OMAP PM: remove max MPU wakeup latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ resource_release("mpu_latency", dev);
-+ } else {
-+ pr_debug("OMAP PM: add max MPU wakeup latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+ resource_request("mpu_latency", dev, t);
-+ }
-+}
-+
-+void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
-+{
-+ if (!dev || agent_id != OCP_INITIATOR_AGENT ||
-+ agent_id != OCP_TARGET_AGENT) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (r == 0)
-+ pr_debug("OMAP PM: remove min bus tput constraint: "
-+ "dev %s for agent_id %d\n", dev_name(dev), agent_id);
-+ else
-+ pr_debug("OMAP PM: add min bus tput constraint: "
-+ "dev %s for agent_id %d: rate %ld KiB\n",
-+ dev_name(dev), agent_id, r);
-+
-+ /*
-+ * This code should model the interconnect and compute the
-+ * required clock frequency, convert that to a VDD2 OPP ID, then
-+ * set the VDD2 OPP appropriately.
-+ *
-+ * TI CDP code can call constraint_set here on the VDD2 OPP.
-+ */
-+}
-+
-+void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
-+{
-+ /* struct tiocp *tiocp_dev; */
-+ struct powerdomain *pwrdm_dev;
-+ char *res_name;
-+
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+ /* Look for the devices Power Domain */
-+ /* TODO: Put this back in once tiocp layer is available
-+ tiocp_dev = container_of(dev, struct tiocp, dev);
-+ pwrdm_dev = tiocp_dev->pwrdm;
-+ */
-+
-+ if (t == -1) {
-+ pr_debug("OMAP PM: remove max device latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ res_name = get_lat_res_name(pwrdm_dev->name);
-+ resource_release(res_name, dev);
-+ } else {
-+ pr_debug("OMAP PM: add max device latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+ res_name = get_lat_res_name(pwrdm_dev->name);
-+ resource_request(res_name, dev, t);
-+ }
-+
-+ /*
-+ * For current Linux, this needs to map the device to a
-+ * powerdomain, then go through the list of current max lat
-+ * constraints on that powerdomain and find the smallest. If
-+ * the latency constraint has changed, the code should
-+ * recompute the state to enter for the next powerdomain
-+ * state. Conceivably, this code should also determine
-+ * whether to actually disable the device clocks or not,
-+ * depending on how long it takes to re-enable the clocks.
-+ *
-+ * TI CDP code can call constraint_set here.
-+ */
-+}
-+
-+void omap_pm_set_max_sdma_lat(struct device *dev, long t)
-+{
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (t == -1) {
-+ pr_debug("OMAP PM: remove max DMA latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ resource_release("core_latency", dev);
-+ } else {
-+ pr_debug("OMAP PM: add max DMA latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+ resource_request("core_latency", dev, t);
-+ }
-+
-+ /*
-+ * For current Linux PM QOS params, this code should scan the
-+ * list of maximum CPU and DMA latencies and select the
-+ * smallest, then set cpu_dma_latency pm_qos_param
-+ * accordingly.
-+ *
-+ * For future Linux PM QOS params, with separate CPU and DMA
-+ * latency params, this code should just set the dma_latency param.
-+ *
-+ * TI CDP code can call constraint_set here.
-+ */
-+
-+}
-+
-+
-+/*
-+ * DSP Bridge-specific constraints
-+ */
-+
-+const struct omap_opp *omap_pm_dsp_get_opp_table(void)
-+{
-+ pr_debug("OMAP PM: DSP request for OPP table\n");
-+
-+ /*
-+ * Return DSP frequency table here: The final item in the
-+ * array should have .rate = .opp_id = 0.
-+ */
-+
-+ return NULL;
-+}
-+
-+void omap_pm_dsp_set_min_opp(u8 opp_id)
-+{
-+ if (opp_id == 0) {
-+ WARN_ON(1);
-+ return;
-+ }
-+
-+ pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
-+
-+ /*
-+ *
-+ * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
-+ * can just test to see which is higher, the CPU's desired OPP
-+ * ID or the DSP's desired OPP ID, and use whichever is
-+ * highest.
-+ *
-+ * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
-+ * rate is keyed on MPU speed, not the OPP ID. So we need to
-+ * map the OPP ID to the MPU speed for use with clk_set_rate()
-+ * if it is higher than the current OPP clock rate.
-+ *
-+ */
-+}
-+
-+
-+u8 omap_pm_dsp_get_opp(void)
-+{
-+ pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
-+
-+ /*
-+ * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
-+ *
-+ * CDP12.14+:
-+ * Call clk_get_rate() on the OPP custom clock, map that to an
-+ * OPP ID using the tables defined in board-*.c/chip-*.c files.
-+ */
-+
-+ return 0;
-+}
-+
-+/*
-+ * CPUFreq-originated constraint
-+ *
-+ * In the future, this should be handled by custom OPP clocktype
-+ * functions.
-+ */
-+
-+struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void)
-+{
-+ pr_debug("OMAP PM: CPUFreq request for frequency table\n");
-+
-+ /*
-+ * Return CPUFreq frequency table here: loop over
-+ * all VDD1 clkrates, pull out the mpu_ck frequencies, build
-+ * table
-+ */
-+
-+ return NULL;
-+}
-+
-+void omap_pm_cpu_set_freq(unsigned long f)
-+{
-+ if (f == 0) {
-+ WARN_ON(1);
-+ return;
-+ }
-+
-+ pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
-+ f);
-+
-+ /*
-+ * For l-o dev tree, determine whether MPU freq or DSP OPP id
-+ * freq is higher. Find the OPP ID corresponding to the
-+ * higher frequency. Call clk_round_rate() and clk_set_rate()
-+ * on the OPP custom clock.
-+ *
-+ * CDP should just be able to set the VDD1 OPP clock rate here.
-+ */
-+}
-+
-+unsigned long omap_pm_cpu_get_freq(void)
-+{
-+ pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
-+
-+ /*
-+ * Call clk_get_rate() on the mpu_ck.
-+ */
-+
-+ return 0;
-+}
-+
-+struct device omap_pm_dev;
-+
-+/*
-+ * Powerdomain usecounting hooks
-+ */
-+
-+void omap_pm_pwrdm_active(struct powerdomain *pwrdm)
-+{
-+ char *res_name;
-+
-+ if (!pwrdm) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (!strcmp(pwrdm->name, "wkup_pwrdm") ||
-+ !strcmp(pwrdm->name, "core_pwrdm"))
-+ return;
-+
-+ pr_debug("OMAP PM: powerdomain %s is becoming active\n", pwrdm->name);
-+
-+ res_name = get_lat_res_name(pwrdm->name);
-+ /* Request for a zero latency which puts the Power Domain in ON state*/
-+ resource_request(res_name, &omap_pm_dev, 0);
-+ return;
-+}
-+
-+void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm)
-+{
-+ char *res_name;
-+
-+ if (!pwrdm) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (!strcmp(pwrdm->name, "wkup_pwrdm") ||
-+ !strcmp(pwrdm->name, "core_pwrdm"))
-+ return;
-+
-+ pr_debug("OMAP PM: powerdomain %s is becoming inactive\n",
-+ pwrdm->name);
-+
-+ res_name = get_lat_res_name(pwrdm->name);
-+ /* Release the latency requested */
-+ resource_release(res_name, &omap_pm_dev);
-+ return;
-+}
-+
-+/*
-+ * Should be called before clk framework since clk fw will call
-+ * omap_pm_pwrdm_{in,}active()
-+ */
-+int __init omap_pm_if_early_init(void)
-+{
-+ return 0;
-+}
-+
-+/* Must be called after clock framework is initialized */
-+int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
-+ struct omap_opp *dsp_opp_table)
-+{
-+ mpu_opps = mpu_opp_table;
-+ dsp_opps = dsp_opp_table;
-+ resource_init(resources_omap);
-+ return 0;
-+}
-+
-+void omap_pm_if_exit(void)
-+{
-+ /* Deallocate CPUFreq frequency table here */
-+}
-+
-Index: linux-omap-2.6/arch/arm/mach-omap2/clockdomain.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/clockdomain.c 2008-08-11
-17:12:19.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/clockdomain.c 2008-08-11
-17:14:31.000000000 +0530
-@@ -35,6 +35,7 @@
-
- #include <asm/arch/powerdomain.h>
- #include <asm/arch/clockdomain.h>
-+#include <asm/arch/omap-pm.h>
-
- /* clkdm_list contains all registered struct clockdomains */
- static LIST_HEAD(clkdm_list);
-@@ -561,6 +562,9 @@ int omap2_clkdm_clk_enable(struct clockd
- else
- omap2_clkdm_wakeup(clkdm);
-
-+ /*Hook to inform the OMAP PM layer that the pwrdm has become active */
-+ omap_pm_pwrdm_active(clkdm->pwrdm.ptr);
-+
- return 0;
- }
-
-@@ -612,6 +616,9 @@ int omap2_clkdm_clk_disable(struct clock
- else
- omap2_clkdm_sleep(clkdm);
-
-+ /*Hook to inform the OMAP PM layer that the pwrdm has become inactive */
-+ omap_pm_pwrdm_inactive(clkdm->pwrdm.ptr);
-+
- return 0;
- }
-
-Index: linux-omap-2.6/include/asm-arm/arch-omap/powerdomain.h
-===================================================================
---- linux-omap-2.6.orig/include/asm-arm/arch-omap/powerdomain.h 2008-08-11
-17:12:19.000000000 +0530
-+++ linux-omap-2.6/include/asm-arm/arch-omap/powerdomain.h 2008-08-11
-17:14:31.000000000 +0530
-@@ -148,6 +148,7 @@ int pwrdm_read_next_pwrst(struct powerdo
- int pwrdm_read_pwrst(struct powerdomain *pwrdm);
- int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm);
- int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm);
-+int pwrdm_read_pwrst(struct powerdomain *pwrdm);
-
- int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst);
- int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
-Index: linux-omap-2.6/arch/arm/mach-omap2/Makefile
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/Makefile 2008-08-11
-17:12:19.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/Makefile 2008-08-11 17:14:31.000000000
-+0530
-@@ -34,6 +34,7 @@ obj-$(CONFIG_OMAP_SMARTREFLEX) += smart
- # Clock framework
- obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o
- obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o
-+obj-$(CONFIG_OMAP_PM_SRF) += resource34xx.o
-
- # DSP
- obj-$(CONFIG_OMAP_MMU_FWK) += mmu_mach.o
-Index: linux-omap-2.6/arch/arm/plat-omap/Kconfig
-===================================================================
---- linux-omap-2.6.orig/arch/arm/plat-omap/Kconfig 2008-08-11
-17:12:25.000000000 +0530
-+++ linux-omap-2.6/arch/arm/plat-omap/Kconfig 2008-08-11 17:14:31.000000000 +0530
-@@ -258,6 +258,9 @@ config OMAP_PM_NONE
- config OMAP_PM_NOOP
- bool "No-op/debug PM layer"
-
-+config OMAP_PM_SRF
-+ bool "PM layer implemented using SRF"
-+
- endchoice
-
- endif
-Index: linux-omap-2.6/arch/arm/plat-omap/Makefile
-===================================================================
---- linux-omap-2.6.orig/arch/arm/plat-omap/Makefile 2008-08-11
-17:12:25.000000000 +0530
-+++ linux-omap-2.6/arch/arm/plat-omap/Makefile 2008-08-11 17:14:31.000000000 +0530
-@@ -29,4 +29,6 @@ obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o
- # OMAP mailbox framework
- obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
-
--obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
-\ No newline at end of file
-+obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
-+obj-$(CONFIG_OMAP_PM_SRF) += omap-pm-srf.o \
-+ resource.o
-Index: linux-omap-2.6/include/asm-arm/arch-omap/resource.h
-===================================================================
---- linux-omap-2.6.orig/include/asm-arm/arch-omap/resource.h 2008-08-11
-17:12:30.000000000 +0530
-+++ linux-omap-2.6/include/asm-arm/arch-omap/resource.h 2008-08-11
-17:14:31.000000000 +0530
-@@ -85,6 +85,7 @@ struct users_list {
- u8 usage;
- };
-
-+extern struct shared_resource *resources_omap[];
- /* Shared resource Framework API's */
- void resource_init(struct shared_resource **resources);
- int resource_register(struct shared_resource *res);
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/04-use-pcd.diff b/packages/linux/linux-omap2-git/beagleboard/04-use-pcd.diff
deleted file mode 100644
index bdf8ab5f0b..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/04-use-pcd.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sun, 6 Jul 2008 13:22:54 +0000 (+0100)
-Subject: omapfb: use PCD if set in panel config
-X-Git-Tag: beagle-5
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=c8060d36ae156771f00a7a27cabf1b4435c378bd
-
-omapfb: use PCD if set in panel config
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 3b36227..4e1a8e3 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -798,7 +798,13 @@ static void set_lcd_timings(void)
- l |= panel->acb & 0xff;
- dispc_write_reg(DISPC_POL_FREQ, l);
-
-- calc_ck_div(is_tft, panel->pixel_clock * 1000, &lck_div, &pck_div);
-+ if (panel->pcd) {
-+ pck_div = panel->pcd;
-+ lck_div = 1;
-+ } else {
-+ calc_ck_div(is_tft, panel->pixel_clock * 1000,
-+ &lck_div, &pck_div);
-+ }
-
- l = dispc_read_reg(DISPC_DIVISOR);
- l &= ~(FLD_MASK(16, 8) | FLD_MASK(0, 8));
diff --git a/packages/linux/linux-omap2-git/beagleboard/05-fix-display-panning.diff b/packages/linux/linux-omap2-git/beagleboard/05-fix-display-panning.diff
deleted file mode 100644
index d3c9fffcda..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/05-fix-display-panning.diff
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Mon, 7 Jul 2008 00:13:00 +0000 (+0100)
-Subject: omapfb: fix display panning
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=9fec252c96b0e69bcef0afd9cb9dd72b7179c239
-
-omapfb: fix display panning
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 4e1a8e3..c17371c 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -435,6 +435,8 @@ static inline int _setup_plane(int plane, int channel_out,
-
- dispc_write_reg(ri_reg[plane], (screen_width - width) * bpp / 8 + 1);
-
-+ MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
-+
- return height * screen_width * bpp / 8;
- }
-
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 1166a01..3e4959e 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -206,8 +206,8 @@ static int ctrl_change_mode(struct fb_info *fbi)
- struct omapfb_device *fbdev = plane->fbdev;
- struct fb_var_screeninfo *var = &fbi->var;
-
-- offset = var->yoffset * fbi->fix.line_length +
-- var->xoffset * var->bits_per_pixel / 8;
-+ offset = (var->yoffset * var->xres_virtual + var->xoffset) *
-+ var->bits_per_pixel / 8;
-
- if (fbdev->ctrl->sync)
- fbdev->ctrl->sync();
-@@ -423,6 +423,8 @@ static void set_fb_fix(struct fb_info *fbi)
- }
- fix->accel = FB_ACCEL_OMAP1610;
- fix->line_length = var->xres_virtual * bpp / 8;
-+ fix->xpanstep = 1;
-+ fix->ypanstep = 1;
- }
-
- static int set_color_mode(struct omapfb_plane_struct *plane,
diff --git a/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml b/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml
deleted file mode 100644
index 0aaed7b91c..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml
+++ /dev/null
@@ -1,456 +0,0 @@
-The patch defines virtual nodes for VDD1 and VDD2
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/board-3430sdp.c | 38 +++++
- arch/arm/mach-omap2/clock34xx.c | 206 +++++++++++++++++++++++++-----
- arch/arm/mach-omap2/clock34xx.h | 29 ++++
- include/asm-arm/arch-omap/board-3430sdp.h | 35 +++++
- include/asm-arm/arch-omap/clock.h | 8 +
- 5 files changed, 287 insertions(+), 29 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.h
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.h 2008-08-06
-14:55:12.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.h 2008-08-07
-15:07:19.000000000 +0530
-@@ -36,6 +36,14 @@ static int omap3_noncore_dpll_enable(str
- static void omap3_noncore_dpll_disable(struct clk *clk);
- static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate);
- static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
-+static void omap3_table_recalc(struct clk *clk);
-+static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate);
-+static int omap3_select_table_rate(struct clk *clk, unsigned long rate);
-+
-+extern struct vdd_prcm_config vdd1_rate_table[];
-+extern struct vdd_prcm_config vdd2_rate_table[];
-+extern struct vdd_prcm_config iva2_rate_table[];
-+
-
- /* Maximum DPLL multiplier, divider values for OMAP3 */
- #define OMAP3_MAX_DPLL_MULT 2048
-@@ -3064,6 +3072,24 @@ static struct clk wdt1_fck = {
- .recalc = &followparent_recalc,
- };
-
-+static struct clk virt_vdd1_prcm_set = {
-+ .name = "virt_vdd1_prcm_set",
-+ .flags = CLOCK_IN_OMAP343X | VIRTUAL_CLOCK | ALWAYS_ENABLED,
-+ .parent = &mpu_ck, /* Indexed by mpu speed, no parent */
-+ .recalc = &omap3_table_recalc, /*sets are keyed on mpu rate */
-+ .set_rate = &omap3_select_table_rate,
-+ .round_rate = &omap3_round_to_table_rate,
-+};
-+
-+static struct clk virt_vdd2_prcm_set = {
-+ .name = "virt_vdd2_prcm_set",
-+ .flags = CLOCK_IN_OMAP343X | VIRTUAL_CLOCK | ALWAYS_ENABLED,
-+ .parent = &core_ck,
-+ .recalc = &omap3_table_recalc,
-+ .set_rate = &omap3_select_table_rate,
-+ .round_rate = &omap3_round_to_table_rate,
-+};
-+
- static struct clk *onchip_34xx_clks[] __initdata = {
- &omap_32k_fck,
- &virt_12m_ck,
-@@ -3276,6 +3302,9 @@ static struct clk *onchip_34xx_clks[] __
- &secure_32k_fck,
- &gpt12_fck,
- &wdt1_fck,
-+ /* virtual group clock */
-+ &virt_vdd1_prcm_set,
-+ &virt_vdd2_prcm_set,
- };
-
- #endif
-Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.c 2008-08-07
-14:34:23.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c 2008-08-07
-15:07:19.000000000 +0530
-@@ -25,6 +25,7 @@
- #include <linux/clk.h>
- #include <linux/io.h>
- #include <linux/limits.h>
-+#include <linux/err.h>
-
- #include <asm/arch/clock.h>
- #include <asm/arch/sram.h>
-@@ -45,6 +46,32 @@
-
- #define MAX_DPLL_WAIT_TRIES 1000000
-
-+struct vdd_prcm_config *curr_vdd1_prcm_set;
-+struct vdd_prcm_config *curr_vdd2_prcm_set;
-+static struct clk *dpll1_clk, *dpll2_clk, *dpll3_clk;
-+
-+#ifndef CONFIG_CPU_FREQ
-+static unsigned long compute_lpj(unsigned long ref, u_int div, u_int mult)
-+{
-+ unsigned long new_jiffy_l, new_jiffy_h;
-+
-+ /*
-+ * Recalculate loops_per_jiffy. We do it this way to
-+ * avoid math overflow on 32-bit machines. Maybe we
-+ * should make this architecture dependent? If you have
-+ * a better way of doing this, please replace!
-+ *
-+ * new = old * mult / div
-+ */
-+ new_jiffy_h = ref / div;
-+ new_jiffy_l = (ref % div) / 100;
-+ new_jiffy_h *= mult;
-+ new_jiffy_l = new_jiffy_l * mult / div;
-+
-+ return new_jiffy_h + new_jiffy_l * 100;
-+}
-+#endif
-+
- /**
- * omap3_dpll_recalc - recalculate DPLL rate
- * @clk: DPLL struct clk
-@@ -644,15 +671,6 @@ void omap2_clk_prepare_for_reboot(void)
- */
- static int __init omap2_clk_arch_init(void)
- {
-- if (!mpurate)
-- return -EINVAL;
--
-- /* REVISIT: not yet ready for 343x */
--#if 0
-- if (omap2_select_table_rate(&virt_prcm_set, mpurate))
-- printk(KERN_ERR "Could not find matching MPU rate\n");
--#endif
--
- recalculate_root_clocks();
-
- printk(KERN_INFO "Switched to new clocking rate (Crystal/DPLL3/MPU): "
-@@ -670,6 +688,9 @@ int __init omap2_clk_init(void)
- struct clk **clkp;
- /* u32 clkrate; */
- u32 cpu_clkflg;
-+ unsigned long mpu_speed, core_speed;
-+ struct vdd_prcm_config *prcm_vdd;
-+
-
- /* REVISIT: Ultimately this will be used for multiboot */
- #if 0
-@@ -712,22 +733,31 @@ int __init omap2_clk_init(void)
- }
- }
-
-- /* REVISIT: Not yet ready for OMAP3 */
--#if 0
-- /* Check the MPU rate set by bootloader */
-- clkrate = omap2_get_dpll_rate_24xx(&dpll_ck);
-- for (prcm = rate_table; prcm->mpu_speed; prcm++) {
-- if (!(prcm->flags & cpu_mask))
-- continue;
-- if (prcm->xtal_speed != sys_ck.rate)
-- continue;
-- if (prcm->dpll_speed <= clkrate)
-- break;
-+ recalculate_root_clocks();
-+
-+ dpll1_clk = clk_get(NULL, "dpll1_ck");
-+ dpll2_clk = clk_get(NULL, "dpll2_ck");
-+ dpll3_clk = clk_get(NULL, "dpll3_ck");
-+
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+ mpu_speed = dpll1_clk->rate;
-+ prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
-+ for (; prcm_vdd->speed; prcm_vdd--) {
-+ if (prcm_vdd->speed <= mpu_speed) {
-+ curr_vdd1_prcm_set = prcm_vdd;
-+ break;
-+ }
- }
-- curr_prcm_set = prcm;
--#endif
-
-- recalculate_root_clocks();
-+ core_speed = dpll3_clk->rate;
-+ prcm_vdd = vdd2_rate_table + MAX_VDD2_OPP;
-+ for (; prcm_vdd->speed; prcm_vdd--) {
-+ if (prcm_vdd->speed <= core_speed) {
-+ curr_vdd2_prcm_set = prcm_vdd;
-+ break;
-+ }
-+ }
-+#endif
-
- printk(KERN_INFO "Clocking rate (Crystal/DPLL/ARM core): "
- "%ld.%01ld/%ld/%ld MHz\n",
-@@ -740,13 +770,131 @@ int __init omap2_clk_init(void)
- */
- clk_enable_init_clocks();
-
-- /* Avoid sleeping during omap2_clk_prepare_for_reboot() */
-- /* REVISIT: not yet ready for 343x */
--#if 0
-- vclk = clk_get(NULL, "virt_prcm_set");
-- sclk = clk_get(NULL, "sys_ck");
--#endif
- return 0;
- }
-
-+inline unsigned int get_freq(struct vdd_prcm_config *opp_freq_table,
-+ unsigned long opp)
-+{
-+ struct vdd_prcm_config *prcm_config;
-+ prcm_config = opp_freq_table;
-+
-+ for (; prcm_config->opp; prcm_config--)
-+ if (prcm_config->opp == opp)
-+ return prcm_config->speed;
-+ return 0;
-+}
-+
-+inline unsigned int get_opp(struct vdd_prcm_config *opp_freq_table,
-+ unsigned long freq)
-+{
-+ struct vdd_prcm_config *prcm_config;
-+ prcm_config = opp_freq_table;
-+
-+ if (prcm_config->speed <= freq)
-+ return prcm_config->opp; /* Return the Highest OPP */
-+ for (; prcm_config->speed; prcm_config--) {
-+ if (prcm_config->speed < freq)
-+ return (prcm_config+1)->opp;
-+ else if (prcm_config->speed == freq)
-+ return prcm_config->opp;
-+ }
-+ /* Return the least OPP */
-+ return (prcm_config+1)->opp;
-+}
-+
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+static void omap3_table_recalc(struct clk *clk)
-+{
-+ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
-+ return;
-+
-+ if ((curr_vdd1_prcm_set) && (clk == &virt_vdd1_prcm_set))
-+ clk->rate = curr_vdd1_prcm_set->speed;
-+ else if ((curr_vdd2_prcm_set) && (clk == &virt_vdd2_prcm_set))
-+ clk->rate = curr_vdd2_prcm_set->speed;
-+ pr_debug("CLK RATE:%lu\n", clk->rate);
-+}
-+
-+static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct vdd_prcm_config *ptr;
-+ long highest_rate;
-+
-+ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
-+ return -EINVAL;
-+
-+ highest_rate = -EINVAL;
-+
-+ if (clk == &virt_vdd1_prcm_set)
-+ ptr = vdd1_rate_table + MAX_VDD1_OPP;
-+ else
-+ ptr = vdd2_rate_table + MAX_VDD2_OPP;
-+
-+ for (; ptr->speed; ptr--) {
-+ highest_rate = ptr->speed;
-+ pr_debug("Highest speed : %lu, rate: %lu\n", highest_rate,
-+ rate);
-+ if (ptr->speed <= rate)
-+ break;
-+ }
-+ return highest_rate;
-+}
-+
-+static int omap3_select_table_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct vdd_prcm_config *prcm_vdd;
-+ unsigned long found_speed = 0, curr_mpu_speed;
-+ int index;
-+
-+ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
-+ return -EINVAL;
-+
-+ if (clk == &virt_vdd1_prcm_set) {
-+ prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
-+ index = MAX_VDD1_OPP;
-+ } else if (clk == &virt_vdd2_prcm_set) {
-+ prcm_vdd = vdd2_rate_table + MAX_VDD2_OPP;
-+ index = MAX_VDD2_OPP;
-+ }
-+
-+ for (; prcm_vdd->speed; prcm_vdd--, index--) {
-+ if (prcm_vdd->speed <= rate) {
-+ found_speed = prcm_vdd->speed;
-+ pr_debug("Found speed = %lu\n", found_speed);
-+ break;
-+ }
-+ }
-+
-+ if (!found_speed) {
-+ printk(KERN_INFO "Could not set table rate to %luMHz\n",
-+ rate / 1000000);
-+ return -EINVAL;
-+ }
-+
-+
-+ if (clk == &virt_vdd1_prcm_set) {
-+ curr_mpu_speed = curr_vdd1_prcm_set->speed;
-+ clk_set_rate(dpll1_clk, prcm_vdd->speed);
-+ clk_set_rate(dpll2_clk, iva2_rate_table[index].speed);
-+ curr_vdd1_prcm_set = prcm_vdd;
-+#ifndef CONFIG_CPU_FREQ
-+ /*Update loops_per_jiffy if processor speed is being changed*/
-+ loops_per_jiffy = compute_lpj(loops_per_jiffy,
-+ curr_mpu_speed/1000, found_speed/1000);
- #endif
-+ } else {
-+ clk_set_rate(dpll3_clk, prcm_vdd->speed);
-+ curr_vdd2_prcm_set = prcm_vdd;
-+ }
-+ return 0;
-+}
-+#else /* CONFIG_MACH_OMAP_3430SDP */
-+static void omap3_table_recalc(struct clk *clk) {}
-+static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate)
-+{ return 0; }
-+static int omap3_select_table_rate(struct clk *clk, unsigned long rate)
-+{ return 0; }
-+#endif /* CONFIG_MACH_OMAP_3430SDP */
-+
-+#endif /* CONFIG_ARCH_OMAP3 */
-Index: linux-omap-2.6/include/asm-arm/arch-omap/clock.h
-===================================================================
---- linux-omap-2.6.orig/include/asm-arm/arch-omap/clock.h 2008-08-07
-14:34:23.000000000 +0530
-+++ linux-omap-2.6/include/asm-arm/arch-omap/clock.h 2008-08-07
-15:07:19.000000000 +0530
-@@ -126,6 +126,14 @@ struct clk_functions {
- #endif
- };
-
-+#ifdef CONFIG_ARCH_OMAP3
-+struct vdd_prcm_config {
-+ unsigned long speed;
-+ unsigned long opp;
-+ unsigned long flags;
-+};
-+#endif
-+
- extern unsigned int mpurate;
-
- extern int clk_init(struct clk_functions *custom_clocks);
-Index: linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/board-3430sdp.c 2008-08-06
-14:55:12.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c 2008-08-07
-15:07:50.000000000 +0530
-@@ -40,6 +40,7 @@
- #include <asm/arch/keypad.h>
- #include <asm/arch/dma.h>
- #include <asm/arch/gpmc.h>
-+#include <asm/arch/clock.h>
- #include <linux/i2c/twl4030-rtc.h>
-
- #include <asm/io.h>
-@@ -53,6 +54,43 @@
- #define ENABLE_VAUX3_DEDICATED 0x03
- #define ENABLE_VAUX3_DEV_GRP 0x20
-
-+struct vdd_prcm_config vdd1_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {S125M, VDD1_OPP1, 0},
-+ /*OPP2*/
-+ {S250M, VDD1_OPP2, 0},
-+ /*OPP3*/
-+ {S500M, VDD1_OPP3, 0},
-+ /*OPP4*/
-+ {S550M, VDD1_OPP4, 0},
-+ /*OPP5*/
-+ {S600M, VDD1_OPP5, 0},
-+};
-+
-+struct vdd_prcm_config vdd2_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {0, VDD2_OPP1, 0},
-+ /*OPP2*/
-+ {S83M, VDD2_OPP2, 0},
-+ /*OPP3*/
-+ {S166M, VDD2_OPP3, 0},
-+};
-+
-+struct vdd_prcm_config iva2_rate_table[] = {
-+ {0, 0, 0},
-+ /*OPP1*/
-+ {S90M, VDD1_OPP1, 0},
-+ /*OPP2*/
-+ {S180M, VDD1_OPP2, 0},
-+ /*OPP3*/
-+ {S360M, VDD1_OPP3, 0},
-+ /*OPP4*/
-+ {S400M, VDD1_OPP4, 0},
-+ /*OPP5*/
-+ {S430M, VDD1_OPP5, 0},
-+};
-
- #define TWL4030_MSECURE_GPIO 22
-
-Index: linux-omap-2.6/include/asm-arm/arch-omap/board-3430sdp.h
-===================================================================
---- linux-omap-2.6.orig/include/asm-arm/arch-omap/board-3430sdp.h 2008-08-06
-14:55:22.000000000 +0530
-+++ linux-omap-2.6/include/asm-arm/arch-omap/board-3430sdp.h 2008-08-07
-15:07:19.000000000 +0530
-@@ -68,5 +68,40 @@ extern void twl4030_bci_battery_init(voi
- #define FLASH_SIZE_SDPV1 SZ_64M
- #define FLASH_SIZE_SDPV2 SZ_128M
-
-+/* MPU speeds */
-+#define S600M 600000000
-+#define S550M 550000000
-+#define S500M 500000000
-+#define S250M 250000000
-+#define S125M 125000000
-+
-+/* IVA speeds */
-+#define S430M 430000000
-+#define S400M 400000000
-+#define S360M 360000000
-+#define S180M 180000000
-+#define S90M 90000000
-+
-+/* L3 speeds */
-+#define S83M 83000000
-+#define S166M 166000000
-+
-+/* VDD1 OPPS */
-+#define VDD1_OPP1 0x1
-+#define VDD1_OPP2 0x2
-+#define VDD1_OPP3 0x3
-+#define VDD1_OPP4 0x4
-+#define VDD1_OPP5 0x5
-+
-+/* VDD2 OPPS */
-+#define VDD2_OPP1 0x1
-+#define VDD2_OPP2 0x2
-+#define VDD2_OPP3 0x3
-+
-+#define MIN_VDD1_OPP VDD1_OPP1
-+#define MAX_VDD1_OPP VDD1_OPP5
-+#define MIN_VDD2_OPP VDD2_OPP1
-+#define MAX_VDD2_OPP VDD2_OPP3
-+
- #endif /* __ASM_ARCH_OMAP_3430SDP_H */
-
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/06-ensure-fclk.diff b/packages/linux/linux-omap2-git/beagleboard/06-ensure-fclk.diff
deleted file mode 100644
index 79871a7208..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/06-ensure-fclk.diff
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Mon, 7 Jul 2008 23:59:08 +0000 (+0100)
-Subject: omapfb: ensure fck/lcd < 173MHz
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=0523ece1bad659c48c66aea364d83f7490e7e5ae
-
-omapfb: ensure fck/lcd < 173MHz
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index c17371c..85d6cad 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -738,14 +738,16 @@ static void setup_color_conv_coef(void)
- MOD_REG_FLD(at2_reg, (1 << 11), ct->full_range);
- }
-
-+#define MAX_FCK_LCD 173000000
-+
- static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
- {
- unsigned long fck, lck;
-
-- *lck_div = 1;
- pck = max(1, pck);
- fck = clk_get_rate(dispc.dss1_fck);
-- lck = fck;
-+ *lck_div = (fck + MAX_FCK_LCD - 1) / MAX_FCK_LCD;
-+ lck = fck / *lck_div;
- *pck_div = (lck + pck - 1) / pck;
- if (is_tft)
- *pck_div = max(2, *pck_div);
diff --git a/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml b/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml
deleted file mode 100644
index 69ed0f748c..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml
+++ /dev/null
@@ -1,228 +0,0 @@
-Adds OPP/Frequency resources to SRF
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/resource34xx.c | 101 +++++++++++++++++++++++++++++++++++++
- arch/arm/mach-omap2/resource34xx.h | 74 +++++++++++++++++++++++++++
- 2 files changed, 175 insertions(+)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-07
-15:07:08.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-07
-15:09:01.000000000 +0530
-@@ -146,3 +146,104 @@ int set_pd_latency(struct shared_resourc
- }
- return 0;
- }
-+
-+static struct clk *vdd1_clk;
-+static struct clk *vdd2_clk;
-+static struct device dummy_srf_dev;
-+
-+/**
-+ * init_opp - Initialize the OPP resource
-+ */
-+void init_opp(struct shared_resource *resp)
-+{
-+ resp->no_of_users = 0;
-+ /* Initialize the current level of the OPP resource
-+ * to the opp set by u-boot.
-+ */
-+ if (strcmp(resp->name, "vdd1_opp") == 0) {
-+ resp->curr_level = curr_vdd1_prcm_set->opp;
-+ vdd1_clk = clk_get(NULL, "virt_vdd1_prcm_set");
-+ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
-+ resp->curr_level = curr_vdd2_prcm_set->opp;
-+ vdd2_clk = clk_get(NULL, "virt_vdd2_prcm_set");
-+ }
-+ return;
-+}
-+
-+int set_opp(struct shared_resource *resp, u32 target_level)
-+{
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+ unsigned long mpu_freq;
-+ if (strcmp(resp->name, "vdd1_opp") == 0) {
-+ mpu_freq = get_freq(vdd1_rate_table + MAX_VDD1_OPP,
-+ target_level);
-+ clk_set_rate(vdd1_clk, mpu_freq);
-+ resp->curr_level = curr_vdd1_prcm_set->opp;
-+ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
-+ /* Not supported yet */
-+ }
-+#endif
-+ return 0;
-+}
-+
-+/**
-+ * validate_opp - Validates if valid VDD1 OPP's are passed as the
-+ * target_level.
-+ * VDD2 OPP levels are passed as L3 throughput, which are then mapped
-+ * to an appropriate OPP.
-+ */
-+int validate_opp(struct shared_resource *resp, u32 target_level)
-+{
-+ return 0;
-+}
-+
-+/**
-+ * init_freq - Initialize the frequency resource.
-+ */
-+void init_freq(struct shared_resource *resp)
-+{
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+ char *linked_res_name;
-+ resp->no_of_users = 0;
-+
-+ linked_res_name = (char *)resp->resource_data;
-+ /* Initialize the current level of the Freq resource
-+ * to the frequency set by u-boot.
-+ */
-+ if (strcmp(resp->name, "mpu_freq") == 0)
-+ /* MPU freq in Mhz */
-+ resp->curr_level = curr_vdd1_prcm_set->speed;
-+ else if (strcmp(resp->name, "dsp_freq") == 0)
-+ /* DSP freq in Mhz */
-+ resp->curr_level = get_freq(iva2_rate_table + MAX_VDD2_OPP,
-+ curr_vdd1_prcm_set->opp);
-+#endif
-+ return;
-+}
-+
-+int set_freq(struct shared_resource *resp, u32 target_level)
-+{
-+#ifdef CONFIG_MACH_OMAP_3430SDP
-+ unsigned int vdd1_opp;
-+
-+ if (strcmp(resp->name, "mpu_freq") == 0)
-+ vdd1_opp = get_opp(vdd1_rate_table + MAX_VDD1_OPP,
-+ target_level);
-+ else if (strcmp(resp->name, "dsp_freq") == 0)
-+ vdd1_opp = get_opp(iva2_rate_table + MAX_VDD1_OPP,
-+ target_level);
-+
-+ if (vdd1_opp == MIN_VDD1_OPP)
-+ resource_release("vdd1_opp", &dummy_srf_dev);
-+ else
-+ resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
-+
-+ resp->curr_level = target_level;
-+#endif
-+ return 0;
-+}
-+
-+int validate_freq(struct shared_resource *resp, u32 target_level)
-+{
-+ return 0;
-+}
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.h 2008-08-07
-15:07:02.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-07
-15:31:42.000000000 +0530
-@@ -22,8 +22,17 @@
- #define __ARCH_ARM_MACH_OMAP2_RESOURCE_H
-
- #include <asm/arch/resource.h>
-+#include <linux/clk.h>
-+#include <asm/arch/clock.h>
- #include <asm/arch/powerdomain.h>
-
-+extern struct vdd_prcm_config *curr_vdd1_prcm_set;
-+extern struct vdd_prcm_config *curr_vdd2_prcm_set;
-+extern unsigned int get_freq(struct vdd_prcm_config *, unsigned long);
-+extern unsigned int get_opp(struct vdd_prcm_config *, unsigned long);
-+extern struct vdd_prcm_config vdd1_rate_table[];
-+extern struct vdd_prcm_config vdd2_rate_table[];
-+extern struct vdd_prcm_config iva2_rate_table[];
- /**
- * mpu_latency/core_latency are used to control the cpuidle C state.
- */
-@@ -207,6 +216,66 @@ static struct shared_resource emu_pwrdm_
- .ops = &pd_lat_res_ops,
- };
-
-+void init_opp(struct shared_resource *resp);
-+int set_opp(struct shared_resource *resp, u32 target_level);
-+int validate_opp(struct shared_resource *resp, u32 target_level);
-+void init_freq(struct shared_resource *resp);
-+int set_freq(struct shared_resource *resp, u32 target_level);
-+int validate_freq(struct shared_resource *resp, u32 target_level);
-+
-+struct bus_throughput_db {
-+ /* Throughput for each OPP/Freq of the bus */
-+ unsigned long throughput[3];
-+};
-+
-+static struct shared_resource_ops opp_res_ops = {
-+ .init = init_opp,
-+ .change_level = set_opp,
-+ .validate_level = validate_opp,
-+};
-+
-+static struct shared_resource vdd1_opp = {
-+ .name = "vdd1_opp",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .ops = &opp_res_ops,
-+};
-+
-+/* Throughput in KiB/s */
-+static struct bus_throughput_db l3_throughput_db = {
-+ .throughput[0] = 0,
-+ .throughput[1] = 100,
-+ .throughput[2] = 250,
-+};
-+
-+static struct shared_resource vdd2_opp = {
-+ .name = "vdd2_opp",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &l3_throughput_db,
-+ .ops = &opp_res_ops,
-+};
-+
-+static char linked_res[] = "vdd1_opp";
-+
-+static struct shared_resource_ops freq_res_ops = {
-+ .init = init_freq,
-+ .change_level = set_freq,
-+ .validate_level = validate_freq,
-+};
-+
-+static struct shared_resource mpu_freq = {
-+ .name = "mpu_freq",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &linked_res,
-+ .ops = &freq_res_ops,
-+};
-+
-+static struct shared_resource dsp_freq = {
-+ .name = "dsp_freq",
-+ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
-+ .resource_data = &linked_res,
-+ .ops = &freq_res_ops,
-+};
-+
- struct shared_resource *resources_omap[] __initdata = {
- &mpu_latency,
- &core_latency,
-@@ -220,6 +289,11 @@ struct shared_resource *resources_omap[]
- &neon_pwrdm_latency,
- &usbhost_pwrdm_latency,
- &emu_pwrdm_latency,
-+ /* OPP/frequency resources */
-+ &vdd1_opp,
-+ &vdd2_opp,
-+ &mpu_freq,
-+ &dsp_freq,
- NULL
- };
-
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml b/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml
deleted file mode 100644
index 735e991298..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml
+++ /dev/null
@@ -1,173 +0,0 @@
-Updates the omap-pm apis with calls to SRF implementation
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/plat-omap/omap-pm-srf.c | 84 +++++++++------------------------------
- 1 files changed, 20 insertions(+), 64 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
-12:10:19.824596984 +0530
-+++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
-12:10:21.626540178 +0530
-@@ -25,6 +25,7 @@
- #include <linux/init.h>
- #include <linux/cpufreq.h>
- #include <linux/device.h>
-+#include <linux/module.h>
-
- /* Interface documentation is in asm/arch/omap-pm.h */
- #include <asm/arch/omap-pm.h>
-@@ -121,6 +122,7 @@ void omap_pm_set_max_dev_wakeup_lat(stru
- WARN_ON(1);
- return;
- };
-+
- /* Look for the devices Power Domain */
- /* TODO: Put this back in once tiocp layer is available
- tiocp_dev = container_of(dev, struct tiocp, dev);
-@@ -138,19 +140,6 @@ void omap_pm_set_max_dev_wakeup_lat(stru
- res_name = get_lat_res_name(pwrdm_dev->name);
- resource_request(res_name, dev, t);
- }
--
-- /*
-- * For current Linux, this needs to map the device to a
-- * powerdomain, then go through the list of current max lat
-- * constraints on that powerdomain and find the smallest. If
-- * the latency constraint has changed, the code should
-- * recompute the state to enter for the next powerdomain
-- * state. Conceivably, this code should also determine
-- * whether to actually disable the device clocks or not,
-- * depending on how long it takes to re-enable the clocks.
-- *
-- * TI CDP code can call constraint_set here.
-- */
- }
-
- void omap_pm_set_max_sdma_lat(struct device *dev, long t)
-@@ -169,21 +158,9 @@ void omap_pm_set_max_sdma_lat(struct dev
- "dev %s, t = %ld usec\n", dev_name(dev), t);
- resource_request("core_latency", dev, t);
- }
--
-- /*
-- * For current Linux PM QOS params, this code should scan the
-- * list of maximum CPU and DMA latencies and select the
-- * smallest, then set cpu_dma_latency pm_qos_param
-- * accordingly.
-- *
-- * For future Linux PM QOS params, with separate CPU and DMA
-- * latency params, this code should just set the dma_latency param.
-- *
-- * TI CDP code can call constraint_set here.
-- */
--
- }
-
-+static struct device dummy_dsp_dev;
-
- /*
- * DSP Bridge-specific constraints
-@@ -200,6 +177,7 @@ const struct omap_opp *omap_pm_dsp_get_o
-
- return NULL;
- }
-+EXPORT_SYMBOL(omap_pm_dsp_get_opp_table);
-
- void omap_pm_dsp_set_min_opp(u8 opp_id)
- {
-@@ -210,36 +188,21 @@ void omap_pm_dsp_set_min_opp(u8 opp_id)
-
- pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
-
-- /*
-- *
-- * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
-- * can just test to see which is higher, the CPU's desired OPP
-- * ID or the DSP's desired OPP ID, and use whichever is
-- * highest.
-- *
-- * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
-- * rate is keyed on MPU speed, not the OPP ID. So we need to
-- * map the OPP ID to the MPU speed for use with clk_set_rate()
-- * if it is higher than the current OPP clock rate.
-- *
-- */
--}
-+ /* For now pass a dummy_dev struct for SRF to identify the caller.
-+ * Maybe its good to have DSP pass this as an argument
-+ */
-+ resource_request("vdd1_opp", &dummy_dsp_dev, opp_id);
-+ return;
-
-+}
-+EXPORT_SYMBOL(omap_pm_dsp_set_min_opp);
-
- u8 omap_pm_dsp_get_opp(void)
- {
- pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
--
-- /*
-- * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
-- *
-- * CDP12.14+:
-- * Call clk_get_rate() on the OPP custom clock, map that to an
-- * OPP ID using the tables defined in board-*.c/chip-*.c files.
-- */
--
-- return 0;
-+ return resource_get_level("vdd1_opp");
- }
-+EXPORT_SYMBOL(omap_pm_dsp_get_opp);
-
- /*
- * CPUFreq-originated constraint
-@@ -261,6 +224,8 @@ struct cpufreq_frequency_table **omap_pm
- return NULL;
- }
-
-+static struct device dummy_cpufreq_dev;
-+
- void omap_pm_cpu_set_freq(unsigned long f)
- {
- if (f == 0) {
-@@ -271,26 +236,17 @@ void omap_pm_cpu_set_freq(unsigned long
- pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
- f);
-
-- /*
-- * For l-o dev tree, determine whether MPU freq or DSP OPP id
-- * freq is higher. Find the OPP ID corresponding to the
-- * higher frequency. Call clk_round_rate() and clk_set_rate()
-- * on the OPP custom clock.
-- *
-- * CDP should just be able to set the VDD1 OPP clock rate here.
-- */
-+ resource_request("mpu_freq", &dummy_cpufreq_dev, f);
-+ return;
- }
-+EXPORT_SYMBOL(omap_pm_cpu_set_freq);
-
- unsigned long omap_pm_cpu_get_freq(void)
- {
- pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
--
-- /*
-- * Call clk_get_rate() on the mpu_ck.
-- */
--
-- return 0;
-+ return resource_get_level("mpu_freq");
- }
-+EXPORT_SYMBOL(omap_pm_cpu_get_freq);
-
- struct device omap_pm_dev;
-
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/07-set-burst-size.diff b/packages/linux/linux-omap2-git/beagleboard/07-set-burst-size.diff
deleted file mode 100644
index 99bd80eae0..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/07-set-burst-size.diff
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 8 Jul 2008 18:26:43 +0000 (+0100)
-Subject: omapfb: set graphics burst size to 16x32
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=4f9e415dfcd5613a8de973f6c9878cab959c5869
-
-omapfb: set graphics burst size to 16x32
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 85d6cad..fd06ca2 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -409,7 +409,7 @@ static inline int _setup_plane(int plane, int channel_out,
- l |= cconv_en << 9;
-
- l &= ~(0x03 << burst_shift);
-- l |= DISPC_BURST_8x32 << burst_shift;
-+ l |= DISPC_BURST_16x32 << burst_shift;
-
- l &= ~(1 << chout_shift);
- l |= chout_val << chout_shift;
diff --git a/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml b/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml
deleted file mode 100644
index a7885774f4..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml
+++ /dev/null
@@ -1,96 +0,0 @@
-Adds Voltage scaling support
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/board-3430sdp.c | 12 ++++++++++++
- arch/arm/mach-omap2/resource34xx.c | 17 ++++++++++++++++-
- arch/arm/mach-omap2/resource34xx.h | 3 +++
- 3 files changed, 31 insertions(+), 1 deletion(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/board-3430sdp.c 2008-08-11
-17:16:07.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c 2008-08-11
-17:17:58.000000000 +0530
-@@ -94,6 +94,18 @@ struct vdd_prcm_config iva2_rate_table[]
-
- #define TWL4030_MSECURE_GPIO 22
-
-+u8 vdd1_volts[MAX_VDD1_OPP] = {
-+ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2),
-+ * 1.20V (OPP3), 1.27V (OPP4), 1.35 (OPP5)
-+ */
-+ 0x18, 0x20, 0x30, 0x36, 0x3C
-+};
-+
-+u8 vdd2_volts[MAX_VDD2_OPP] = {
-+ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2), 1.15 (OPP3) */
-+ 0x18, 0x20, 0x2C
-+};
-+
- static struct resource sdp3430_smc91x_resources[] = {
- [0] = {
- .start = OMAP34XX_ETHR_START,
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:17:23.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:22:02.000000000 +0530
-@@ -19,6 +19,7 @@
- #include <linux/pm_qos_params.h>
- #include <asm/arch/powerdomain.h>
- #include <asm/arch/clockdomain.h>
-+#include "smartreflex.h"
- #include "resource34xx.h"
-
- /**
-@@ -174,10 +175,24 @@ int set_opp(struct shared_resource *resp
- {
- #ifdef CONFIG_MACH_OMAP_3430SDP
- unsigned long mpu_freq;
-+
-+ if (resp->curr_level == target_level)
-+ return 0;
-+
- if (strcmp(resp->name, "vdd1_opp") == 0) {
- mpu_freq = get_freq(vdd1_rate_table + MAX_VDD1_OPP,
- target_level);
-- clk_set_rate(vdd1_clk, mpu_freq);
-+ if (resp->curr_level > target_level) {
-+ /* Scale Frequency and then voltage */
-+ clk_set_rate(vdd1_clk, mpu_freq);
-+ sr_voltagescale_vcbypass(PRCM_VDD1,
-+ vdd1_volts[target_level-1]);
-+ } else {
-+ /* Scale Voltage and then frequency */
-+ sr_voltagescale_vcbypass(PRCM_VDD1,
-+ vdd1_volts[target_level-1]);
-+ clk_set_rate(vdd1_clk, mpu_freq);
-+ }
- resp->curr_level = curr_vdd1_prcm_set->opp;
- } else if (strcmp(resp->name, "vdd2_opp") == 0) {
- /* Not supported yet */
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.h 2008-08-11
-17:17:23.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-11
-17:17:58.000000000 +0530
-@@ -33,6 +33,9 @@ extern unsigned int get_opp(struct vdd_p
- extern struct vdd_prcm_config vdd1_rate_table[];
- extern struct vdd_prcm_config vdd2_rate_table[];
- extern struct vdd_prcm_config iva2_rate_table[];
-+extern u8 vdd1_volts[];
-+extern u8 vdd2_volts[];
-+extern int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel);
- /**
- * mpu_latency/core_latency are used to control the cpuidle C state.
- */
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml b/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml
deleted file mode 100644
index 532a9f7975..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml
+++ /dev/null
@@ -1,102 +0,0 @@
-Adds VDD2 scaling support
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/resource34xx.c | 35 +++++++++++++++++++++++++++++++++--
- arch/arm/plat-omap/omap-pm-srf.c | 15 +++++----------
- 2 files changed, 38 insertions(+), 12 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-07-21
-12:10:22.032527379 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-07-21
-12:10:22.479513287 +0530
-@@ -174,7 +174,9 @@ void init_opp(struct shared_resource *re
- int set_opp(struct shared_resource *resp, u32 target_level)
- {
- #ifdef CONFIG_MACH_OMAP_3430SDP
-- unsigned long mpu_freq;
-+ unsigned long mpu_freq, l3_freq, tput;
-+ int ind;
-+ struct bus_throughput_db *tput_db;
-
- if (resp->curr_level == target_level)
- return 0;
-@@ -195,7 +197,36 @@ int set_opp(struct shared_resource *resp
- }
- resp->curr_level = curr_vdd1_prcm_set->opp;
- } else if (strcmp(resp->name, "vdd2_opp") == 0) {
-- /* Not supported yet */
-+ tput_db = resp->resource_data;
-+ tput = target_level;
-+ /* using the throughput db map to the appropriate L3 Freq */
-+ for (ind = 1; ind < MAX_VDD2_OPP; ind++)
-+ if (tput_db->throughput[ind] > tput)
-+ target_level = ind;
-+
-+ /* Set the highest OPP possible */
-+ if (ind == MAX_VDD2_OPP)
-+ target_level = ind-1;
-+
-+ if (resp->curr_level == target_level)
-+ return 0;
-+
-+ resp->curr_level = target_level;
-+
-+ l3_freq = get_freq(vdd2_rate_table + MAX_VDD2_OPP,
-+ target_level);
-+ if (resp->curr_level > target_level) {
-+ /* Scale Frequency and then voltage */
-+ clk_set_rate(vdd2_clk, l3_freq);
-+ sr_voltagescale_vcbypass(PRCM_VDD2,
-+ vdd2_volts[target_level-1]);
-+ } else {
-+ /* Scale Voltage and then frequency */
-+ sr_voltagescale_vcbypass(PRCM_VDD2,
-+ vdd2_volts[target_level-1]);
-+ clk_set_rate(vdd1_clk, l3_freq);
-+ }
-+ resp->curr_level = curr_vdd2_prcm_set->opp;
- }
- #endif
- return 0;
-Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
-12:10:21.626540178 +0530
-+++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
-12:10:22.479513287 +0530
-@@ -95,21 +95,16 @@ void omap_pm_set_min_bus_tput(struct dev
- return;
- };
-
-- if (r == 0)
-+ if (r == 0) {
- pr_debug("OMAP PM: remove min bus tput constraint: "
- "dev %s for agent_id %d\n", dev_name(dev), agent_id);
-- else
-+ resource_release("vdd2_opp", r);
-+ } else {
- pr_debug("OMAP PM: add min bus tput constraint: "
- "dev %s for agent_id %d: rate %ld KiB\n",
- dev_name(dev), agent_id, r);
--
-- /*
-- * This code should model the interconnect and compute the
-- * required clock frequency, convert that to a VDD2 OPP ID, then
-- * set the VDD2 OPP appropriately.
-- *
-- * TI CDP code can call constraint_set here on the VDD2 OPP.
-- */
-+ resource_request("vdd2_opp", dev, r);
-+ }
- }
-
- void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml b/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml
deleted file mode 100644
index 3728440159..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml
+++ /dev/null
@@ -1,35 +0,0 @@
-A Temp patch needed only till OFF mode is implemented.
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
----
- arch/arm/mach-omap2/resource34xx.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:39:00.000000000 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
-17:39:00.000000000 +0530
-@@ -131,13 +131,13 @@ int set_pd_latency(struct shared_resourc
- omap2_clkdm_wakeup(pwrdm->pwrdm_clkdms[i]);
- }
- pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
-- pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
-+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_RET);
- for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
- omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[i]);
- omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[i]);
- }
- } else
-- pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
-+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_RET);
- break;
- case PWRDM_POWER_ON:
- pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/16bpp.patch b/packages/linux/linux-omap2-git/beagleboard/16bpp.patch
deleted file mode 100644
index d2bff4b018..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/16bpp.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
-index bdeb8fb..bf256f3 100644
---- a/drivers/video/omap/Kconfig
-+++ b/drivers/video/omap/Kconfig
-@@ -7,6 +7,27 @@ config FB_OMAP
- help
- Frame buffer driver for OMAP based boards.
-
-+choice
-+ depends on FB_OMAP && MACH_OMAP3_BEAGLE
-+ prompt "Screen resolution"
-+ default FB_OMAP_079M3R
-+ help
-+ Selected desired screen resolution
-+
-+config FB_OMAP_031M3R
-+ boolean "640 x 480 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_048M3R
-+ boolean "800 x 600 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_079M3R
-+ boolean "1024 x 768 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_092M9R
-+ boolean "1280 x 720 @ 60 Hz Reduced blanking"
-+
-+endchoice
-+
- config FB_OMAP_LCDC_EXTERNAL
- bool "External LCD controller support"
- depends on FB_OMAP
-diff --git a/drivers/video/omap/lcd_omap3beagle.c b/drivers/video/omap/lcd_omap3beagle.c
-index 69d4e06..5e098c2 100644
---- a/drivers/video/omap/lcd_omap3beagle.c
-+++ b/drivers/video/omap/lcd_omap3beagle.c
-@@ -31,10 +31,6 @@
-
- #define LCD_PANEL_ENABLE_GPIO 170
-
--#define LCD_XRES 1024
--#define LCD_YRES 768
--#define LCD_PIXCLOCK 64000 /* in kHz */
--
- static int omap3beagle_panel_init(struct lcd_panel *panel,
- struct omapfb_device *fbdev)
- {
-@@ -65,19 +61,76 @@ static unsigned long omap3beagle_panel_get_caps(struct lcd_panel *panel)
- struct lcd_panel omap3beagle_panel = {
- .name = "omap3beagle",
- .config = OMAP_LCDC_PANEL_TFT,
--
-- .bpp = 24,
-+ .bpp = 16,
- .data_lines = 24,
-- .x_res = LCD_XRES,
-- .y_res = LCD_YRES,
-- .hsw = 3, /* hsync_len (4) - 1 */
-- .hfp = 3, /* right_margin (4) - 1 */
-- .hbp = 39, /* left_margin (40) - 1 */
-- .vsw = 1, /* vsync_len (2) - 1 */
-- .vfp = 2, /* lower_margin */
-- .vbp = 7, /* upper_margin (8) - 1 */
--
-- .pixel_clock = LCD_PIXCLOCK,
-+
-+#if defined CONFIG_FB_OMAP_031M3R
-+
-+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
-+ .x_res = 640,
-+ .y_res = 480,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 7,
-+ .pixel_clock = 23500,
-+
-+#elif defined CONFIG_FB_OMAP_048M3R
-+
-+ /* 800 x 600 @ 60 Hz Reduced blanking VESA CVT 0.48M3-R */
-+ .x_res = 800,
-+ .y_res = 600,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 11,
-+ .pixel_clock = 35500,
-+
-+#elif defined CONFIG_FB_OMAP_079M3R
-+
-+ /* 1024 x 768 @ 60 Hz Reduced blanking VESA CVT 0.79M3-R */
-+ .x_res = 1024,
-+ .y_res = 768,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 15,
-+ .pixel_clock = 56000,
-+
-+#elif defined CONFIG_FB_OMAP_092M9R
-+
-+ /* 1280 x 720 @ 60 Hz Reduced blanking VESA CVT 0.92M9-R */
-+ .x_res = 1280,
-+ .y_res = 720,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 5,
-+ .vbp = 13,
-+ .pixel_clock = 64000,
-+
-+#else
-+
-+ /* use 640 x 480 if no config option */
-+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
-+ .x_res = 640,
-+ .y_res = 480,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 7,
-+ .pixel_clock = 23500,
-+
-+#endif
-
- .init = omap3beagle_panel_init,
- .cleanup = omap3beagle_panel_cleanup,
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/400khz-i2c.diff b/packages/linux/linux-omap2-git/beagleboard/400khz-i2c.diff
deleted file mode 100644
index f749dbcf5b..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/400khz-i2c.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Steve Sakoman <steve@sakoman.com>
-Date: Wed, 16 Jul 2008 19:38:43 +0000 (-0700)
-Subject: omap3beagle: set data rate on i2c-1 to 400, since 2600 seems to be
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=12d6504334a830774ff1d42cee4b7296ac9fb7d2
-
-omap3beagle: set data rate on i2c-1 to 400, since 2600 seems to be
-flakey
----
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index fdce787..938ad73 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -39,7 +39,7 @@ static struct omap_uart_config omap3_beagle_uart_config __initdata = {
-
- static int __init omap3_beagle_i2c_init(void)
- {
-- omap_register_i2c_bus(1, 2600, NULL, 0);
-+ omap_register_i2c_bus(1, 400, NULL, 0);
- omap_register_i2c_bus(2, 400, NULL, 0);
- omap_register_i2c_bus(3, 400, NULL, 0);
- return 0;
diff --git a/packages/linux/linux-omap2-git/beagleboard/4bitmmc.diff b/packages/linux/linux-omap2-git/beagleboard/4bitmmc.diff
deleted file mode 100644
index 5cd120c544..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/4bitmmc.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-From: Purushotam Kumar <purushotam@ti.com>
-Date: Fri, 18 Jul 2008 23:28:57 +0000 (-0700)
-Subject: OMAP3:devices.c:Enabling 4-bit for SD card
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=6c4d34031c80ca4b50ffe73a4ef7fe197a760a60
-
-OMAP3:devices.c:Enabling 4-bit for SD card
-
-SD card was working in 1-bit mode.This patch will configure SD card in
-4-bit mode and hence performance will increase.
-
-Signed-off-by: Purushotam Kumar <purushotam@ti.com>
-Acked-by: Madhusudhan Chikkature Rajashekar <madhu.cr@ti.com>
----
-
-diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
-index b83f9a6..d0cfceb 100644
---- a/arch/arm/plat-omap/devices.c
-+++ b/arch/arm/plat-omap/devices.c
-@@ -296,13 +296,17 @@ static void __init omap_init_mmc(void)
- mmc = &mmc_conf->mmc[0];
-
- if (cpu_is_omap2430() || cpu_is_omap34xx()) {
-- if (mmc->enabled)
-+ if (mmc->enabled) {
-+ mmc1_data.conf = *mmc;
- (void) platform_device_register(&mmc_omap_device1);
-+ }
-
- #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP34XX)
- mmc = &mmc_conf->mmc[1];
-- if (mmc->enabled)
-+ if (mmc->enabled) {
-+ mmc2_data.conf = *mmc;
- (void) platform_device_register(&mmc_omap_device2);
-+ }
- #endif
-
- return;
diff --git a/packages/linux/linux-omap2-git/beagleboard/ASoC-TWL4030-codec-driver.patch b/packages/linux/linux-omap2-git/beagleboard/ASoC-TWL4030-codec-driver.patch
deleted file mode 100644
index ef9a0ed0fe..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/ASoC-TWL4030-codec-driver.patch
+++ /dev/null
@@ -1,831 +0,0 @@
-From: Steve Sakoman <steve@sakoman.com>
-Date: Fri, 18 Jul 2008 16:41:27 +0000 (-0700)
-Subject: ASoC TWL4030 codec driver
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=67b73de03016cc31b1f91af93c57b8e749c13520;hp=d3b3ae0fe6c71641da19c8de466ec366d39847e3
-
-ASoC TWL4030 codec driver
-
-Basic audio support for the TWL4030
-
-Signed-off-by: Steve Sakoman <steve@sakoman.com>
----
-
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 3903ab7..468536d 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -44,3 +44,7 @@ config SND_SOC_CS4270_VD33_ERRATA
- config SND_SOC_TLV320AIC3X
- tristate
- depends on SND_SOC && I2C
-+
-+config SND_SOC_TWL4030
-+ tristate
-+ depends on SND_SOC && I2C
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index 4e1314c..d2c0b12 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -6,6 +6,7 @@ snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
- snd-soc-cs4270-objs := cs4270.o
- snd-soc-tlv320aic3x-objs := tlv320aic3x.o
-+snd-soc-twl4030-objs := twl4030.o
-
- obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
- obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
-@@ -15,3 +16,4 @@ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
- obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
- obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-cs4270.o
- obj-$(CONFIG_SND_SOC_TLV320AIC3X) += snd-soc-tlv320aic3x.o
-+obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o
-diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
-new file mode 100644
-index 0000000..25a154c
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.c
-@@ -0,0 +1,626 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c/twl4030.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "twl4030.h"
-+
-+/*
-+ * twl4030 register cache & default register settings
-+ */
-+static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
-+ 0x00, /* this register not used */
-+ 0x93, /* REG_CODEC_MODE (0x1) */
-+ 0xc3, /* REG_OPTION (0x2) */
-+ 0x00, /* REG_UNKNOWN (0x3) */
-+ 0x00, /* REG_MICBIAS_CTL (0x4) */
-+ 0x34, /* REG_ANAMICL (0x5) */
-+ 0x14, /* REG_ANAMICR (0x6) */
-+ 0x0a, /* REG_AVADC_CTL (0x7) */
-+ 0x00, /* REG_ADCMICSEL (0x8) */
-+ 0x00, /* REG_DIGMIXING (0x9) */
-+ 0x0c, /* REG_ATXL1PGA (0xA) */
-+ 0x0c, /* REG_ATXR1PGA (0xB) */
-+ 0x00, /* REG_AVTXL2PGA (0xC) */
-+ 0x00, /* REG_AVTXR2PGA (0xD) */
-+ 0x01, /* REG_AUDIO_IF (0xE) */
-+ 0x00, /* REG_VOICE_IF (0xF) */
-+ 0x00, /* REG_ARXR1PGA (0x10) */
-+ 0x00, /* REG_ARXL1PGA (0x11) */
-+ 0x6c, /* REG_ARXR2PGA (0x12) */
-+ 0x6c, /* REG_ARXL2PGA (0x13) */
-+ 0x00, /* REG_VRXPGA (0x14) */
-+ 0x00, /* REG_VSTPGA (0x15) */
-+ 0x00, /* REG_VRX2ARXPGA (0x16) */
-+ 0x0c, /* REG_AVDAC_CTL (0x17) */
-+ 0x00, /* REG_ARX2VTXPGA (0x18) */
-+ 0x00, /* REG_ARXL1_APGA_CTL (0x19) */
-+ 0x00, /* REG_ARXR1_APGA_CTL (0x1A) */
-+ 0x4b, /* REG_ARXL2_APGA_CTL (0x1B) */
-+ 0x4b, /* REG_ARXR2_APGA_CTL (0x1C) */
-+ 0x00, /* REG_ATX2ARXPGA (0x1D) */
-+ 0x00, /* REG_BT_IF (0x1E) */
-+ 0x00, /* REG_BTPGA (0x1F) */
-+ 0x00, /* REG_BTSTPGA (0x20) */
-+ 0x00, /* REG_EAR_CTL (0x21) */
-+ 0x24, /* REG_HS_SEL (0x22) */
-+ 0x0a, /* REG_HS_GAIN_SET (0x23) */
-+ 0x00, /* REG_HS_POPN_SET (0x24) */
-+ 0x00, /* REG_PREDL_CTL (0x25) */
-+ 0x00, /* REG_PREDR_CTL (0x26) */
-+ 0x00, /* REG_PRECKL_CTL (0x27) */
-+ 0x00, /* REG_PRECKR_CTL (0x28) */
-+ 0x00, /* REG_HFL_CTL (0x29) */
-+ 0x00, /* REG_HFR_CTL (0x2A) */
-+ 0x00, /* REG_ALC_CTL (0x2B) */
-+ 0x00, /* REG_ALC_SET1 (0x2C) */
-+ 0x00, /* REG_ALC_SET2 (0x2D) */
-+ 0x00, /* REG_BOOST_CTL (0x2E) */
-+ 0x01, /* REG_SOFTVOL_CTL (0x2F) */
-+ 0x00, /* REG_DTMF_FREQSEL (0x30) */
-+ 0x00, /* REG_DTMF_TONEXT1H (0x31) */
-+ 0x00, /* REG_DTMF_TONEXT1L (0x32) */
-+ 0x00, /* REG_DTMF_TONEXT2H (0x33) */
-+ 0x00, /* REG_DTMF_TONEXT2L (0x34) */
-+ 0x00, /* REG_DTMF_TONOFF (0x35) */
-+ 0x00, /* REG_DTMF_WANONOFF (0x36) */
-+ 0x00, /* REG_I2S_RX_SCRAMBLE_H (0x37) */
-+ 0x00, /* REG_I2S_RX_SCRAMBLE_M (0x38) */
-+ 0x00, /* REG_I2S_RX_SCRAMBLE_L (0x39) */
-+ 0x16, /* REG_APLL_CTL (0x3A) */
-+ 0x00, /* REG_DTMF_CTL (0x3B) */
-+ 0x00, /* REG_DTMF_PGA_CTL2 (0x3C) */
-+ 0x00, /* REG_DTMF_PGA_CTL1 (0x3D) */
-+ 0x00, /* REG_MISC_SET_1 (0x3E) */
-+ 0x00, /* REG_PCMBTMUX (0x3F) */
-+ 0x00, /* not used (0x40) */
-+ 0x00, /* not used (0x41) */
-+ 0x00, /* not used (0x42) */
-+ 0x00, /* REG_RX_PATH_SEL (0x43) */
-+ 0x00, /* REG_VDL_APGA_CTL (0x44) */
-+ 0x00, /* REG_VIBRA_CTL (0x45) */
-+ 0x00, /* REG_VIBRA_SET (0x46) */
-+ 0x00, /* REG_VIBRA_PWM_SET (0x47) */
-+ 0x00, /* REG_ANAMIC_GAIN (0x48) */
-+ 0x00, /* REG_MISC_SET_2 (0x49) */
-+};
-+
-+static void twl4030_dump_registers(void)
-+{
-+ int i = 0;
-+ u8 data;
-+
-+ printk(KERN_INFO "TWL 4030 Register dump for Audio Module\n");
-+
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &data, i);
-+ printk(KERN_INFO "Register[0x%02x]=0x%02x\n", i, data);
-+ }
-+}
-+
-+struct twl4030_priv {
-+ unsigned int dummy;
-+};
-+
-+/*
-+ * read twl4030 register cache
-+ */
-+static inline unsigned int twl4030_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ return cache[reg];
-+}
-+
-+/*
-+ * write twl4030 register cache
-+ */
-+static inline void twl4030_write_reg_cache(struct snd_soc_codec *codec,
-+ u8 reg, u8 value)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ if (reg >= TWL4030_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the twl4030 register space
-+ */
-+static int twl4030_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ twl4030_write_reg_cache(codec, reg, value);
-+ return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg);
-+}
-+
-+static void twl4030_init_chip(void)
-+{
-+ unsigned char byte;
-+ int i;
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE] & 0xfd, REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ for (i = REG_OPTION; i <= REG_MISC_SET_2; i++)
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[i], i);
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE], REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ /* initiate offset cancellation */
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_ANAMICL] | 0x80, REG_ANAMICL);
-+
-+ /* wait for offset cancellation to complete */
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte, REG_ANAMICL);
-+ while ((byte & 0x80) == 0x80)
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ &byte, REG_ANAMICL);
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_MISC_SET_1] | 0x02, REG_MISC_SET_1);
-+
-+}
-+
-+static const struct snd_kcontrol_new twl4030_snd_controls[] = {
-+ SOC_DOUBLE_R("Master Playback Volume",
-+ REG_ARXL2PGA, REG_ARXR2PGA,
-+ 0, 127, 0),
-+ SOC_DOUBLE_R("Capture Volume",
-+ REG_ATXL1PGA, REG_ATXR1PGA,
-+ 0, 127, 0),
-+};
-+
-+/* add non dapm controls */
-+static int twl4030_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&twl4030_snd_controls[i],
-+ codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
-+ SND_SOC_DAPM_INPUT("INL"),
-+ SND_SOC_DAPM_INPUT("INR"),
-+
-+ SND_SOC_DAPM_OUTPUT("OUTL"),
-+ SND_SOC_DAPM_OUTPUT("OUTR"),
-+
-+ SND_SOC_DAPM_DAC("DACL", "Left Playback", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_DAC("DACR", "Right Playback", SND_SOC_NOPM, 0, 0),
-+
-+ SND_SOC_DAPM_ADC("ADCL", "Left Capture", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_ADC("ADCR", "Right Capture", SND_SOC_NOPM, 0, 0),
-+};
-+
-+static const char *intercon[][3] = {
-+ /* outputs */
-+ {"OUTL", NULL, "DACL"},
-+ {"OUTR", NULL, "DACR"},
-+
-+ /* inputs */
-+ {"ADCL", NULL, "INL"},
-+ {"ADCR", NULL, "INR"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int twl4030_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_dapm_widgets); i++)
-+ snd_soc_dapm_new_control(codec, &twl4030_dapm_widgets[i]);
-+
-+ /* set up audio path interconnects */
-+ for (i = 0; intercon[i][0] != NULL; i++)
-+ snd_soc_dapm_connect_input(codec, intercon[i][0],
-+ intercon[i][1], intercon[i][2]);
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static int twl4030_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec dapm event\n");
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* off, with power */
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* off, without power */
-+ break;
-+ }
-+ codec->dapm_state = event;
-+
-+ return 0;
-+}
-+
-+static void twl4030_power_up(struct snd_soc_codec *codec, u8 mode)
-+{
-+ u8 popn, hsgain;
-+
-+ twl4030_write(codec, REG_CODEC_MODE, mode & ~CODECPDZ);
-+ twl4030_write(codec, REG_CODEC_MODE, mode | CODECPDZ);
-+ udelay(10);
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= RAMP_DELAY;
-+ popn |= VMID_EN | RAMP_DELAY_161MS;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_0DB | HSL_GAIN_0DB;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn |= RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+}
-+
-+static void twl4030_power_down(struct snd_soc_codec *codec)
-+{
-+ u8 popn, hsgain, mode;
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= ~RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_PWR_DOWN | HSL_GAIN_PWR_DOWN;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn &= ~VMID_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ udelay(10);
-+}
-+
-+
-+static int twl4030_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_mode, format, old_format;
-+
-+
-+ /* bit rate */
-+ old_mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE) & ~CODECPDZ;
-+ mode = old_mode;
-+ mode &= ~APLL_RATE;
-+ switch (params_rate(params)) {
-+ case 44100:
-+ mode |= APLL_RATE_44100;
-+ break;
-+ case 48000:
-+ mode |= APLL_RATE_48000;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown rate %d\n",
-+ params_rate(params));
-+ return -EINVAL;
-+ }
-+
-+ if (mode != old_mode) {
-+ /* change rate and turn codec back on */
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ /* sample size */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+ format &= ~DATA_WIDTH;
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ format |= DATA_WIDTH_16S_16W;
-+ break;
-+ case SNDRV_PCM_FORMAT_S24_LE:
-+ format |= DATA_WIDTH_32S_24W;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown format %d\n",
-+ params_format(params));
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ /* turn on codec */
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+ return 0;
-+}
-+
-+static int twl4030_mute(struct snd_soc_codec_dai *dai, int mute)
-+{
-+ struct snd_soc_codec *codec = dai->codec;
-+
-+ u8 ldac_reg = twl4030_read_reg_cache(codec, REG_ARXL2PGA);
-+ u8 rdac_reg = twl4030_read_reg_cache(codec, REG_ARXR2PGA);
-+
-+ if (mute) {
-+ twl4030_write(codec, REG_ARXL2PGA, 0x00);
-+ twl4030_write(codec, REG_ARXR2PGA, 0x00);
-+ twl4030_write_reg_cache(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write_reg_cache(codec, REG_ARXR2PGA, rdac_reg);
-+ } else {
-+ twl4030_write(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write(codec, REG_ARXR2PGA, rdac_reg);
-+ }
-+
-+ return 0;
-+}
-+
-+static int twl4030_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
-+ unsigned int fmt)
-+{
-+ struct snd_soc_codec *codec = codec_dai->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_format, format;
-+
-+ /* get format */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+
-+ /* set master/slave audio interface */
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ format &= ~(AIF_SLAVE_EN);
-+ format |= CLK256FS_EN;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ format &= ~(CLK256FS_EN);
-+ format |= AIF_SLAVE_EN;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ /* interface format */
-+ format &= ~AIF_FORMAT;
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: i2s\n"); */
-+ format |= AIF_FORMAT_CODEC;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ return 0;
-+}
-+
-+#define TWL4030_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
-+#define TWL4030_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE)
-+
-+struct snd_soc_codec_dai twl4030_dai = {
-+ .name = "twl4030",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .ops = {
-+ .hw_params = twl4030_hw_params,
-+ },
-+ .dai_ops = {
-+ .digital_mute = twl4030_mute,
-+ .set_fmt = twl4030_set_dai_fmt,
-+ }
-+};
-+EXPORT_SYMBOL_GPL(twl4030_dai);
-+
-+static int twl4030_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec suspend\n");
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ return 0;
-+}
-+
-+static int twl4030_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u16 *cache = codec->reg_cache;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec resume\n");
-+ /* Sync reg_cache with the hardware */
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++)
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, cache[i], i);
-+
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ twl4030_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialize the driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+
-+static int twl4030_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec init \n");
-+
-+ codec->name = "twl4030";
-+ codec->owner = THIS_MODULE;
-+ codec->read = twl4030_read_reg_cache;
-+ codec->write = twl4030_write;
-+ codec->dapm_event = twl4030_dapm_event;
-+ codec->dai = &twl4030_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = sizeof(twl4030_reg);
-+ codec->reg_cache = kmemdup(twl4030_reg, sizeof(twl4030_reg),
-+ GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to create pcms\n");
-+ goto pcm_err;
-+ }
-+
-+ twl4030_add_controls(codec);
-+ twl4030_add_widgets(codec);
-+
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to register card\n");
-+ goto card_err;
-+ }
-+
-+ twl4030_init_chip();
-+ twl4030_power_up(codec, APLL_RATE_44100 | OPT_MODE);
-+
-+ return ret;
-+
-+card_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init card error\n");
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+pcm_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init pcm error\n");
-+ kfree(codec->reg_cache);
-+ return ret;
-+}
-+
-+static struct snd_soc_device *twl4030_socdev;
-+
-+static int twl4030_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ struct twl4030_priv *twl4030;
-+
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ twl4030 = kzalloc(sizeof(struct twl4030_priv), GFP_KERNEL);
-+ if (twl4030 == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+
-+ codec->private_data = twl4030;
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ twl4030_socdev = socdev;
-+ twl4030_init(socdev);
-+
-+ return 0;
-+}
-+
-+static int twl4030_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec remove\n");
-+ kfree(codec->private_data);
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_twl4030 = {
-+ .probe = twl4030_probe,
-+ .remove = twl4030_remove,
-+ .suspend = twl4030_suspend,
-+ .resume = twl4030_resume,
-+};
-+EXPORT_SYMBOL_GPL(soc_codec_dev_twl4030);
-+
-+MODULE_DESCRIPTION("ASoC TWL4030 codec driver");
-+MODULE_AUTHOR("Steve Sakoman");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/codecs/twl4030.h b/sound/soc/codecs/twl4030.h
-new file mode 100644
-index 0000000..6eecde1
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.h
-@@ -0,0 +1,152 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __TWL4030_AUDIO_H__
-+#define __TWL4030_AUDIO_H__
-+
-+#define REG_CODEC_MODE 0x1
-+#define REG_OPTION 0x2
-+#define REG_UNKNOWN 0x3
-+#define REG_MICBIAS_CTL 0x4
-+#define REG_ANAMICL 0x5
-+#define REG_ANAMICR 0x6
-+#define REG_AVADC_CTL 0x7
-+#define REG_ADCMICSEL 0x8
-+#define REG_DIGMIXING 0x9
-+#define REG_ATXL1PGA 0xA
-+#define REG_ATXR1PGA 0xB
-+#define REG_AVTXL2PGA 0xC
-+#define REG_AVTXR2PGA 0xD
-+#define REG_AUDIO_IF 0xE
-+#define REG_VOICE_IF 0xF
-+#define REG_ARXR1PGA 0x10
-+#define REG_ARXL1PGA 0x11
-+#define REG_ARXR2PGA 0x12
-+#define REG_ARXL2PGA 0x13
-+#define REG_VRXPGA 0x14
-+#define REG_VSTPGA 0x15
-+#define REG_VRX2ARXPGA 0x16
-+#define REG_AVDAC_CTL 0x17
-+#define REG_ARX2VTXPGA 0x18
-+#define REG_ARXL1_APGA_CTL 0x19
-+#define REG_ARXR1_APGA_CTL 0x1A
-+#define REG_ARXL2_APGA_CTL 0x1B
-+#define REG_ARXR2_APGA_CTL 0x1C
-+#define REG_ATX2ARXPGA 0x1D
-+#define REG_BT_IF 0x1E
-+#define REG_BTPGA 0x1F
-+#define REG_BTSTPGA 0x20
-+#define REG_EAR_CTL 0x21
-+#define REG_HS_SEL 0x22
-+#define REG_HS_GAIN_SET 0x23
-+#define REG_HS_POPN_SET 0x24
-+#define REG_PREDL_CTL 0x25
-+#define REG_PREDR_CTL 0x26
-+#define REG_PRECKL_CTL 0x27
-+#define REG_PRECKR_CTL 0x28
-+#define REG_HFL_CTL 0x29
-+#define REG_HFR_CTL 0x2A
-+#define REG_ALC_CTL 0x2B
-+#define REG_ALC_SET1 0x2C
-+#define REG_ALC_SET2 0x2D
-+#define REG_BOOST_CTL 0x2E
-+#define REG_SOFTVOL_CTL 0x2F
-+#define REG_DTMF_FREQSEL 0x30
-+#define REG_DTMF_TONEXT1H 0x31
-+#define REG_DTMF_TONEXT1L 0x32
-+#define REG_DTMF_TONEXT2H 0x33
-+#define REG_DTMF_TONEXT2L 0x34
-+#define REG_DTMF_TONOFF 0x35
-+#define REG_DTMF_WANONOFF 0x36
-+#define REG_I2S_RX_SCRAMBLE_H 0x37
-+#define REG_I2S_RX_SCRAMBLE_M 0x38
-+#define REG_I2S_RX_SCRAMBLE_L 0x39
-+#define REG_APLL_CTL 0x3A
-+#define REG_DTMF_CTL 0x3B
-+#define REG_DTMF_PGA_CTL2 0x3C
-+#define REG_DTMF_PGA_CTL1 0x3D
-+#define REG_MISC_SET_1 0x3E
-+#define REG_PCMBTMUX 0x3F
-+#define REG_RX_PATH_SEL 0x43
-+#define REG_VDL_APGA_CTL 0x44
-+#define REG_VIBRA_CTL 0x45
-+#define REG_VIBRA_SET 0x46
-+#define REG_VIBRA_PWM_SET 0x47
-+#define REG_ANAMIC_GAIN 0x48
-+#define REG_MISC_SET_2 0x49
-+
-+#define TWL4030_CACHEREGNUM (REG_MISC_SET_2 + 1)
-+
-+/* Bitfield Definitions */
-+
-+/* CODEC_MODE (0x01) Fields */
-+
-+#define APLL_RATE 0xF0
-+#define APLL_RATE_8000 0x00
-+#define APLL_RATE_11025 0x10
-+#define APLL_RATE_12000 0x20
-+#define APLL_RATE_16000 0x40
-+#define APLL_RATE_22050 0x50
-+#define APLL_RATE_24000 0x60
-+#define APLL_RATE_32000 0x80
-+#define APLL_RATE_44100 0x90
-+#define APLL_RATE_48000 0xa0
-+#define SEL_16K 0x04
-+#define CODECPDZ 0x02
-+#define OPT_MODE 0x01
-+
-+/* AUDIO_IF (0x0E) Fields */
-+
-+#define AIF_SLAVE_EN 0x80
-+#define DATA_WIDTH 0x60
-+#define DATA_WIDTH_16S_16W 0x00
-+#define DATA_WIDTH_32S_16W 0x40
-+#define DATA_WIDTH_32S_24W 0x60
-+#define AIF_FORMAT 0x18
-+#define AIF_FORMAT_CODEC 0x00
-+#define AIF_FORMAT_LEFT 0x08
-+#define AIF_FORMAT_RIGHT 0x10
-+#define AIF_FORMAT_TDM 0x18
-+#define AIF_TRI_EN 0x04
-+#define CLK256FS_EN 0x02
-+#define AIF_EN 0x01
-+
-+/* HS_GAIN_SET (0x23) Fields */
-+
-+#define HSR_GAIN 0x0c
-+#define HSR_GAIN_PWR_DOWN 0x00
-+#define HSR_GAIN_PLUS_6DB 0x04
-+#define HSR_GAIN_0DB 0x08
-+#define HSR_GAIN_MINUS_6DB 0x0c
-+#define HSL_GAIN 0x0c
-+#define HSL_GAIN_PWR_DOWN 0x00
-+#define HSL_GAIN_PLUS_6DB 0x01
-+#define HSL_GAIN_0DB 0x02
-+#define HSL_GAIN_MINUS_6DB 0x03
-+
-+/* HS_POPN_SET (0x24) Fields */
-+
-+#define VMID_EN 0x40
-+#define EXTMUTE 0x20
-+#define RAMP_DELAY 0x1C
-+#define RAMP_DELAY_20MS 0x00
-+#define RAMP_DELAY_40MS 0x04
-+#define RAMP_DELAY_81MS 0x08
-+#define RAMP_DELAY_161MS 0x0c
-+#define RAMP_DELAY_323MS 0x10
-+#define RAMP_DELAY_645MS 0x14
-+#define RAMP_DELAY_1291MS 0x18
-+#define RAMP_DELAY_2581MS 0x1c
-+#define RAMP_EN 0x02
-+
-+extern struct snd_soc_codec_dai twl4030_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_twl4030;
-+
-+#endif /* End of __TWL4030_AUDIO_H__ */
diff --git a/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for-OMAP3-EVM.patch b/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for-OMAP3-EVM.patch
deleted file mode 100644
index ea8108e090..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for-OMAP3-EVM.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-From: Steve Sakoman <steve@sakoman.com>
-Date: Fri, 18 Jul 2008 16:41:37 +0000 (-0700)
-Subject: ASoC machine driver for OMAP3 EVM
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=2e6af042b4af677e62e32d048e770f6755e67a7f
-
-ASoC machine driver for OMAP3 EVM
-
-Add basic audio support for OMAP3 EVM
-
-Signed-off-by: Steve Sakoman <steve@sakoman.com>
----
-
-diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig
-index cce83e5..a48780a 100644
---- a/arch/arm/configs/omap3_beagle_defconfig
-+++ b/arch/arm/configs/omap3_beagle_defconfig
-@@ -735,7 +735,82 @@ CONFIG_FONT_8x16=y
- #
- # Sound
- #
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+
-+#
-+# Advanced Linux Sound Architecture
-+#
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=y
-+CONFIG_SND_RAWMIDI=y
-+# CONFIG_SND_SEQUENCER is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+CONFIG_SND_SUPPORT_OLD_API=y
-+CONFIG_SND_VERBOSE_PROCFS=y
-+CONFIG_SND_VERBOSE_PRINTK=y
-+CONFIG_SND_DEBUG=y
-+CONFIG_SND_DEBUG_DETECT=y
-+CONFIG_SND_PCM_XRUN_DEBUG=y
-+
-+#
-+# Generic devices
-+#
-+# CONFIG_SND_DUMMY is not set
-+# CONFIG_SND_MTPAV is not set
-+# CONFIG_SND_SERIAL_U16550 is not set
-+# CONFIG_SND_MPU401 is not set
-+
-+#
-+# ALSA ARM devices
-+#
-+# CONFIG_SND_OMAP_AIC23 is not set
-+# CONFIG_SND_OMAP_TSC2101 is not set
-+# CONFIG_SND_SX1 is not set
-+# CONFIG_SND_OMAP_TSC2102 is not set
-+# CONFIG_SND_OMAP24XX_EAC is not set
-+
-+#
-+# SPI devices
-+#
-+
-+#
-+# USB devices
-+#
-+CONFIG_SND_USB_AUDIO=y
-+# CONFIG_SND_USB_CAIAQ is not set
-+
-+#
-+# System on Chip audio support
-+#
-+CONFIG_SND_SOC=y
-+
-+#
-+# ALSA SoC audio for Freescale SOCs
-+#
-+
-+#
-+# SoC Audio for the Texas Instruments OMAP
-+#
-+CONFIG_SND_OMAP_SOC=y
-+CONFIG_SND_OMAP_SOC_MCBSP=y
-+CONFIG_SND_OMAP_SOC_OMAP3BEAGLE=y
-+CONFIG_SND_SOC_TWL4030=y
-+
-+#
-+# Open Sound System
-+#
-+CONFIG_SOUND_PRIME=y
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
- # CONFIG_HID_SUPPORT is not set
- CONFIG_USB_SUPPORT=y
- CONFIG_USB_ARCH_HAS_HCD=y
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 0230d83..0def5ba 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -16,4 +16,12 @@ config SND_OMAP_SOC_N810
- help
- Say Y if you want to add support for SoC audio on Nokia N810.
-
-+config SND_OMAP_SOC_OMAP3EVM
-+ tristate "SoC Audio support for OMAP3 EVM"
-+ depends on SND_OMAP_SOC && MACH_OMAP3EVM
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 EVM.
-+
- endmenu
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index d8d8d58..985eddc 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -7,5 +7,8 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
-
- # OMAP Machine Support
- snd-soc-n810-objs := n810.o
-+snd-soc-omap3evm-objs := omap3evm.o
-
- obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o
-+
-diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
-new file mode 100644
-index 0000000..d436bb4
---- /dev/null
-+++ b/sound/soc/omap/omap3evm.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3evm.c -- SoC audio for OMAP3 EVM
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3evm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3evm_ops = {
-+ .hw_params = omap3evm_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3evm_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3evm_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3evm = {
-+ .name = "omap3evm",
-+ .dai_link = &omap3evm_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3evm_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3evm,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3evm_snd_device;
-+
-+static int __init omap3evm_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 EVM SoC init\n");
-+ if (!machine_is_omap3evm()) {
-+ printk(KERN_INFO "Not OMAP3 EVM!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3evm_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3evm_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3evm_snd_device, &omap3evm_snd_devdata);
-+ omap3evm_snd_devdata.dev = &omap3evm_snd_device->dev;
-+ *(unsigned int *)omap3evm_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3evm_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3evm_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3evm_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 EVM SoC exit\n");
-+ platform_device_unregister(omap3evm_snd_device);
-+}
-+
-+module_init(omap3evm_soc_init);
-+module_exit(omap3evm_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for_OMAP3-Beagle.patch b/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for_OMAP3-Beagle.patch
deleted file mode 100644
index 9343a9c59a..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/ASoC-machine-driver-for_OMAP3-Beagle.patch
+++ /dev/null
@@ -1,279 +0,0 @@
-From: Steve Sakoman <steve@sakoman.com>
-Date: Fri, 18 Jul 2008 16:41:49 +0000 (-0700)
-Subject: ASoC machine driver for OMAP3 Beagle
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=543a3a0cd4c6f68be6f084ccfe63ec5a514eba59
-
-ASoC machine driver for OMAP3 Beagle
-
-Add basic audio support for OMAP3 Beagle
-
-Signed-off-by: Steve Sakoman <steve@sakoman.com>
----
-
-diff --git a/arch/arm/configs/omap3_evm_defconfig b/arch/arm/configs/omap3_evm_defconfig
-index 718c914..4ac730c 100644
---- a/arch/arm/configs/omap3_evm_defconfig
-+++ b/arch/arm/configs/omap3_evm_defconfig
-@@ -835,7 +835,82 @@ CONFIG_DUMMY_CONSOLE=y
- #
- # Sound
- #
--# CONFIG_SOUND is not set
-+CONFIG_SOUND=y
-+
-+#
-+# Advanced Linux Sound Architecture
-+#
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_HWDEP=y
-+CONFIG_SND_RAWMIDI=y
-+# CONFIG_SND_SEQUENCER is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+CONFIG_SND_SUPPORT_OLD_API=y
-+CONFIG_SND_VERBOSE_PROCFS=y
-+CONFIG_SND_VERBOSE_PRINTK=y
-+CONFIG_SND_DEBUG=y
-+CONFIG_SND_DEBUG_DETECT=y
-+CONFIG_SND_PCM_XRUN_DEBUG=y
-+
-+#
-+# Generic devices
-+#
-+# CONFIG_SND_DUMMY is not set
-+# CONFIG_SND_MTPAV is not set
-+# CONFIG_SND_SERIAL_U16550 is not set
-+# CONFIG_SND_MPU401 is not set
-+
-+#
-+# ALSA ARM devices
-+#
-+# CONFIG_SND_OMAP_AIC23 is not set
-+# CONFIG_SND_OMAP_TSC2101 is not set
-+# CONFIG_SND_SX1 is not set
-+# CONFIG_SND_OMAP_TSC2102 is not set
-+# CONFIG_SND_OMAP24XX_EAC is not set
-+
-+#
-+# SPI devices
-+#
-+
-+#
-+# USB devices
-+#
-+CONFIG_SND_USB_AUDIO=y
-+# CONFIG_SND_USB_CAIAQ is not set
-+
-+#
-+# System on Chip audio support
-+#
-+CONFIG_SND_SOC=y
-+
-+#
-+# ALSA SoC audio for Freescale SOCs
-+#
-+
-+#
-+# SoC Audio for the Texas Instruments OMAP
-+#
-+CONFIG_SND_OMAP_SOC=y
-+CONFIG_SND_OMAP_SOC_MCBSP=y
-+CONFIG_SND_OMAP_SOC_OMAP3EVM=y
-+CONFIG_SND_SOC_TWL4030=y
-+
-+#
-+# Open Sound System
-+#
-+CONFIG_SOUND_PRIME=y
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HID_DEBUG is not set
-+# CONFIG_HIDRAW is not set
-+
- # CONFIG_HID_SUPPORT is not set
- # CONFIG_USB_SUPPORT is not set
- # CONFIG_MMC is not set
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 0def5ba..8703cea 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -24,4 +24,12 @@ config SND_OMAP_SOC_OMAP3EVM
- help
- Say Y if you want to add support for SoC audio on the OMAP3 EVM.
-
-+config SND_OMAP_SOC_OMAP3BEAGLE
-+ tristate "SoC Audio support for OMAP3 Beagle"
-+ depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 Beagle.
-+
- endmenu
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index 985eddc..638a240 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -8,7 +8,9 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
- # OMAP Machine Support
- snd-soc-n810-objs := n810.o
- snd-soc-omap3evm-objs := omap3evm.o
-+snd-soc-omap3beagle-objs := omap3beagle.o
-
- obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
- obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3BEAGLE) += snd-soc-omap3beagle.o
-
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-new file mode 100644
-index 0000000..336d50a
---- /dev/null
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3beagle.c -- SoC audio for OMAP3 Beagle
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3beagle_ops = {
-+ .hw_params = omap3beagle_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3beagle_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3beagle_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3beagle = {
-+ .name = "omap3beagle",
-+ .dai_link = &omap3beagle_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3beagle_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3beagle,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3beagle_snd_device;
-+
-+static int __init omap3beagle_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 Beagle SoC init\n");
-+ if (!machine_is_omap3_beagle()) {
-+ printk(KERN_INFO "Not OMAP3 Beagle!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3beagle_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3beagle_snd_device, &omap3beagle_snd_devdata);
-+ omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
-+ *(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3beagle_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3beagle_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3beagle_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 Beagle SoC exit\n");
-+ platform_device_unregister(omap3beagle_snd_device);
-+}
-+
-+module_init(omap3beagle_soc_init);
-+module_exit(omap3beagle_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-omap2-git/beagleboard/cache-display-fix.patch b/packages/linux/linux-omap2-git/beagleboard/cache-display-fix.patch
deleted file mode 100644
index c96b95f2f4..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/cache-display-fix.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-On Tue, 2008-07-01 at 06:23 +0100, Dirk Behme wrote:
-> Catalin Marinas wrote:
-> > But, anyway, if you want a patch, Harry is updating it to a recent
-> > kernel.
->
-> Any news on this? I think there are some people wanting a patch ;)
-
-See below for a preliminary patch updated to 2.6.26-rc8. Note that I
-don't plan to submit it in its current form but clean it up a bit first.
-
-
-Show the cache type of ARMv7 CPUs
-
-From: Catalin Marinas <catalin.marinas@arm.com>
-
-Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
----
-
- arch/arm/kernel/setup.c | 137 +++++++++++++++++++++++++++++++++++++++++++++-
- include/asm-arm/system.h | 18 ++++++
- 2 files changed, 153 insertions(+), 2 deletions(-)
-
-
-diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
-index 5ae0eb2..0cd238d 100644
---- a/arch/arm/kernel/setup.c
-+++ b/arch/arm/kernel/setup.c
-@@ -256,6 +256,24 @@ static const char *proc_arch[] = {
- "?(17)",
- };
-
-+static const char *v7_cache_policy[4] = {
-+ "reserved",
-+ "AVIVT",
-+ "VIPT",
-+ "PIPT",
-+};
-+
-+static const char *v7_cache_type[8] = {
-+ "none",
-+ "instruction only",
-+ "data only",
-+ "separate instruction and data",
-+ "unified",
-+ "unknown type",
-+ "unknown type",
-+ "unknown type",
-+};
-+
- #define CACHE_TYPE(x) (((x) >> 25) & 15)
- #define CACHE_S(x) ((x) & (1 << 24))
- #define CACHE_DSIZE(x) (((x) >> 12) & 4095) /* only if S=1 */
-@@ -266,6 +284,22 @@ static const char *proc_arch[] = {
- #define CACHE_M(y) ((y) & (1 << 2))
- #define CACHE_LINE(y) ((y) & 3)
-
-+#define CACHE_TYPE_V7(x) (((x) >> 14) & 3)
-+#define CACHE_UNIFIED(x) ((((x) >> 27) & 7)+1)
-+#define CACHE_COHERENT(x) ((((x) >> 24) & 7)+1)
-+
-+#define CACHE_ID_LEVEL_MASK 7
-+#define CACHE_ID_LEVEL_BITS 3
-+
-+#define CACHE_LINE_V7(v) ((1 << (((v) & 7)+4)))
-+#define CACHE_ASSOC_V7(v) ((((v) >> 3) & ((1<<10)-1))+1)
-+#define CACHE_SETS_V7(v) ((((v) >> 13) & ((1<<15)-1))+1)
-+#define CACHE_SIZE_V7(v) (CACHE_LINE_V7(v)*CACHE_ASSOC_V7(v)*CACHE_SETS_V7(v))
-+#define CACHE_WA_V7(v) (((v) & (1<<28)) != 0)
-+#define CACHE_RA_V7(v) (((v) & (1<<29)) != 0)
-+#define CACHE_WB_V7(v) (((v) & (1<<30)) != 0)
-+#define CACHE_WT_V7(v) (((v) & (1<<31)) != 0)
-+
- static inline void dump_cache(const char *prefix, int cpu, unsigned int cache)
- {
- unsigned int mult = 2 + (CACHE_M(cache) ? 1 : 0);
-@@ -279,11 +313,57 @@ static inline void dump_cache(const char *prefix, int cpu, unsigned int cache)
- CACHE_LINE(cache)));
- }
-
-+static void dump_v7_cache(const char *type, int cpu, unsigned int level)
-+{
-+ unsigned int cachesize;
-+
-+ write_extended_cpuid(2,0,0,0,level); /* Set the cache size selection register */
-+ write_extended_cpuid(0,7,5,4,0); /* Prefetch flush to wait for above */
-+ cachesize = read_extended_cpuid(1,0,0,0);
-+
-+ printk("CPU%u: %s cache: %d bytes, associativity %d, %d byte lines, %d sets,\n supports%s%s%s%s\n",
-+ cpu, type,
-+ CACHE_SIZE_V7(cachesize),CACHE_ASSOC_V7(cachesize),
-+ CACHE_LINE_V7(cachesize),CACHE_SETS_V7(cachesize),
-+ CACHE_WA_V7(cachesize) ? " WA" : "",
-+ CACHE_RA_V7(cachesize) ? " RA" : "",
-+ CACHE_WB_V7(cachesize) ? " WB" : "",
-+ CACHE_WT_V7(cachesize) ? " WT" : "");
-+}
-+
- static void __init dump_cpu_info(int cpu)
- {
- unsigned int info = read_cpuid(CPUID_CACHETYPE);
-
-- if (info != processor_id) {
-+ if (info != processor_id && (info & (1 << 31))) {
-+ /* ARMv7 style of cache info register */
-+ unsigned int id = read_extended_cpuid(1,0,0,1);
-+ unsigned int level = 0;
-+ printk("CPU%u: L1 I %s cache. Caches unified at level %u, coherent at level %u\n",
-+ cpu,
-+ v7_cache_policy[CACHE_TYPE_V7(info)],
-+ CACHE_UNIFIED(id),
-+ CACHE_COHERENT(id));
-+
-+ while (id & CACHE_ID_LEVEL_MASK) {
-+ printk("CPU%u: Level %u cache is %s\n",
-+ cpu, (level >> 1)+1, v7_cache_type[id & CACHE_ID_LEVEL_MASK]);
-+
-+ if (id & 1) {
-+ /* Dump I at this level */
-+ dump_v7_cache("I", cpu, level | 1);
-+ }
-+
-+ if (id & (4 | 2)) {
-+ /* Dump D or unified at this level */
-+ dump_v7_cache((id & 4) ? "unified" : "D", cpu, level);
-+ }
-+
-+ /* Next level out */
-+ level += 2;
-+ id >>= CACHE_ID_LEVEL_BITS;
-+ }
-+ } else if (info != processor_id) {
- printk("CPU%u: D %s %s cache\n", cpu, cache_is_vivt() ? "VIVT" : "VIPT",
- cache_types[CACHE_TYPE(info)]);
- if (CACHE_S(info)) {
-@@ -916,6 +996,30 @@ c_show_cache(struct seq_file *m, const char *type, unsigned int cache)
- CACHE_LINE(cache)));
- }
-
-+static void c_show_v7_cache(struct seq_file *m, const char *type, unsigned int levelselect)
-+{
-+ unsigned int cachesize;
-+ unsigned int level = (levelselect >> 1) + 1;
-+
-+ write_extended_cpuid(2,0,0,0,levelselect); /* Set the cache size selection register */
-+ write_extended_cpuid(0,7,5,4,0); /* Prefetch flush to wait for above */
-+ cachesize = read_extended_cpuid(1,0,0,0);
-+
-+ seq_printf(m, "L%u %s size\t\t: %d bytes\n"
-+ "L%u %s assoc\t\t: %d\n"
-+ "L%u %s line length\t: %d\n"
-+ "L%u %s sets\t\t: %d\n"
-+ "L%u %s supports\t\t:%s%s%s%s\n",
-+ level, type, CACHE_SIZE_V7(cachesize),
-+ level, type, CACHE_ASSOC_V7(cachesize),
-+ level, type, CACHE_LINE_V7(cachesize),
-+ level, type, CACHE_SETS_V7(cachesize),
-+ level, type, CACHE_WA_V7(cachesize) ? " WA" : "",
-+ CACHE_RA_V7(cachesize) ? " RA" : "",
-+ CACHE_WB_V7(cachesize) ? " WB" : "",
-+ CACHE_WT_V7(cachesize) ? " WT" : "");
-+}
-+
- static int c_show(struct seq_file *m, void *v)
- {
- int i;
-@@ -971,7 +1075,36 @@ static int c_show(struct seq_file *m, void *v)
-
- {
- unsigned int cache_info = read_cpuid(CPUID_CACHETYPE);
-- if (cache_info != processor_id) {
-+ if (cache_info != processor_id && (cache_info & (1<<31))) {
-+ /* V7 style of cache info register */
-+ unsigned int id = read_extended_cpuid(1,0,0,1);
-+ unsigned int levelselect = 0;
-+ seq_printf(m, "L1 I cache\t:%s\n"
-+ "Cache unification level\t: %u\n"
-+ "Cache coherency level\t: %u\n",
-+ v7_cache_policy[CACHE_TYPE_V7(cache_info)],
-+ CACHE_UNIFIED(id),
-+ CACHE_COHERENT(id));
-+
-+ while (id & CACHE_ID_LEVEL_MASK) {
-+ seq_printf(m, "Level %u cache\t\t: %s\n",
-+ (levelselect >> 1)+1, v7_cache_type[id & CACHE_ID_LEVEL_MASK]);
-+
-+ if (id & 1) {
-+ /* Dump I at this level */
-+ c_show_v7_cache(m, "I", levelselect | 1);
-+ }
-+
-+ if (id & (4 | 2)) {
-+ /* Dump D or unified at this level */
-+ c_show_v7_cache(m, (id & 4) ? "cache" : "D", levelselect);
-+ }
-+
-+ /* Next level out */
-+ levelselect += 2;
-+ id >>= CACHE_ID_LEVEL_BITS;
-+ }
-+ } else if (cache_info != processor_id) {
- seq_printf(m, "Cache type\t: %s\n"
- "Cache clean\t: %s\n"
- "Cache lockdown\t: %s\n"
-diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h
-index 514af79..704738e 100644
---- a/include/asm-arm/system.h
-+++ b/include/asm-arm/system.h
-@@ -74,6 +74,24 @@
- : "cc"); \
- __val; \
- })
-+#define read_extended_cpuid(op1,op2,op3,op4) \
-+ ({ \
-+ unsigned int __val; \
-+ asm("mrc p15," __stringify(op1) ",%0,c" __stringify(op2)",c" __stringify(op3)"," __stringify(op4) \
-+ : "=r" (__val) \
-+ : \
-+ : "cc"); \
-+ __val; \
-+ })
-+
-+#define write_extended_cpuid(op1,op2,op3,op4,v) \
-+ ({ \
-+ unsigned int __val = v; \
-+ asm("mcr p15," __stringify(op1) ",%0,c" __stringify(op2)",c" __stringify(op3)"," __stringify(op4) \
-+ : \
-+ : "r" (__val) \
-+ : "cc"); \
-+ })
- #else
- extern unsigned int processor_id;
- #define read_cpuid(reg) (processor_id)
-
-
---
-Catalin
-
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/defconfig b/packages/linux/linux-omap2-git/beagleboard/defconfig
deleted file mode 100644
index 413167de7e..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/defconfig
+++ /dev/null
@@ -1,2017 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.26-omap1
-# Wed Oct 22 12:01:26 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-CONFIG_ZONE_DMA=y
-CONFIG_OPROFILE_ARMV7=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_ELF_CORE is not set
-# CONFIG_COMPAT_BRK is not set
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_PROFILING=y
-# CONFIG_MARKERS is not set
-CONFIG_OPROFILE=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-# CONFIG_HAVE_DMA_ATTRS is not set
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_LSF=y
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_CLASSIC_RCU=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_MSM7X00A is not set
-
-#
-# TI OMAP Implementations
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
-# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-CONFIG_OMAP_SMARTREFLEX=y
-# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_BOOT_TAG=y
-CONFIG_OMAP_BOOT_REASON=y
-# CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
-# CONFIG_OMAP_MUX is not set
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-# CONFIG_OMAP_MPU_TIMER is not set
-CONFIG_OMAP_32K_TIMER=y
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_DM_TIMER=y
-# CONFIG_OMAP_LL_DEBUG_UART1 is not set
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-CONFIG_OMAP_LL_DEBUG_UART3=y
-# CONFIG_OMAP_PM_NONE is not set
-# CONFIG_OMAP_PM_NOOP is not set
-CONFIG_OMAP_PM_SRF=y
-CONFIG_ARCH_OMAP34XX=y
-CONFIG_ARCH_OMAP3430=y
-
-#
-# OMAP Board Type
-#
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_OMAP3EVM is not set
-CONFIG_MACH_OMAP3_BEAGLE=y
-CONFIG_OMAP_TICK_GPTIMER=12
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_IFAR=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_THUMBEE=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_HAS_TLS_REG=y
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=128
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_LEDS=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" debug "
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-CONFIG_ATAGS_PROC=y
-
-#
-# CPUIdle
-#
-
-#
-# CPU idle PM support
-#
-CONFIG_CPU_IDLE=y
-
-#
-# Governors
-#
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-CONFIG_NEON_CACHE_BUG=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=y
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIBTSDIO=y
-# CONFIG_BT_HCIUART is not set
-CONFIG_BT_HCIBCM203X=y
-CONFIG_BT_HCIBPA10X=y
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIBRF6150 is not set
-# CONFIG_BT_HCIH4P is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-CONFIG_CFG80211=y
-CONFIG_NL80211=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_MAC80211=y
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_DEFAULT_PID=y
-# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
-
-#
-# Selecting 'y' for an algorithm will
-#
-
-#
-# build the algorithm into mac80211.
-#
-CONFIG_MAC80211_RC_DEFAULT="pid"
-CONFIG_MAC80211_RC_PID=y
-# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
-# CONFIG_MAC80211_DEBUG is not set
-CONFIG_IEEE80211=y
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=y
-CONFIG_IEEE80211_CRYPT_CCMP=y
-CONFIG_IEEE80211_CRYPT_TKIP=y
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_OMAP2=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=y
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_EEPROM_93CX6=m
-# CONFIG_OMAP_STI is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-CONFIG_MD_RAID5_RESHAPE=y
-CONFIG_MD_MULTIPATH=m
-CONFIG_MD_FAULTY=m
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-CONFIG_DM_DELAY=m
-# CONFIG_DM_UEVENT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_NET_ETHERNET is not set
-CONFIG_MII=y
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8187=m
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-# CONFIG_IWLWIFI_LEDS is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_B43=m
-CONFIG_B43_LEDS=y
-# CONFIG_B43_DEBUG is not set
-# CONFIG_B43LEGACY is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_RT2X00=m
-CONFIG_RT2X00_LIB=m
-CONFIG_RT2X00_LIB_USB=m
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_LEDS=y
-CONFIG_RT2500USB=m
-CONFIG_RT2500USB_LEDS=y
-CONFIG_RT73USB=m
-CONFIG_RT73USB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=y
-CONFIG_USB_NET_CDCETHER=y
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_DEVKMEM=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C2_OMAP_BEAGLE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_DS1682 is not set
-CONFIG_SENSORS_EEPROM=y
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_PCF8575 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_SENSORS_TLV320AIC23 is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_GPIO=y
-CONFIG_TWL4030_MADC=m
-CONFIG_TWL4030_USB=y
-CONFIG_TWL4030_USB_HS_ULPI=y
-CONFIG_TWL4030_PWRBUTTON=y
-CONFIG_TWL4030_POWEROFF=y
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_TSL2563 is not set
-# CONFIG_LP5521 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_OMAP24XX is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-CONFIG_SPI_TSC2101=y
-CONFIG_SPI_TSC2102=y
-# CONFIG_SPI_TSC210X is not set
-# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-CONFIG_HAVE_GPIO_LIB=y
-
-#
-# GPIO Support
-#
-# CONFIG_DEBUG_GPIO is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=m
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7473 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_TSC210X is not set
-CONFIG_SENSORS_OMAP34XX=y
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SSB=m
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_ALLOW_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_QT1010=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_V4L1=m
-CONFIG_VIDEO_TVEEPROM=m
-CONFIG_VIDEO_TUNER=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-CONFIG_VIDEO_MSP3400=m
-CONFIG_VIDEO_CS53L32A=m
-CONFIG_VIDEO_WM8775=m
-CONFIG_VIDEO_SAA711X=m
-CONFIG_VIDEO_CX25840=m
-CONFIG_VIDEO_CX2341X=m
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_AU0828 is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_SYSFS=y
-CONFIG_VIDEO_PVRUSB2_DVB=y
-# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_QUICKCAM_MESSENGER=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_VIDEO_OVCAMCHIP=m
-CONFIG_USB_W9968CF=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_PWC_DEBUG is not set
-CONFIG_USB_ZR364XX=m
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_TEA5761 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_SI470X is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_TTUSB_BUDGET=m
-CONFIG_DVB_TTUSB_DEC=m
-CONFIG_DVB_CINERGYT2=m
-# CONFIG_DVB_CINERGYT2_TUNING is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_FLEXCOP is not set
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
-CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
-CONFIG_DVB_TDA10048=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-# CONFIG_DVB_OR51211 is not set
-# CONFIG_DVB_OR51132 is not set
-CONFIG_DVB_BCM3510=m
-CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
-CONFIG_DVB_S5H1411=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-# CONFIG_DVB_ISL6405 is not set
-CONFIG_DVB_ISL6421=m
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_OMAP=y
-# CONFIG_FB_OMAP_031M3R is not set
-# CONFIG_FB_OMAP_048M3R is not set
-CONFIG_FB_OMAP_079M3R=y
-# CONFIG_FB_OMAP_092M9R is not set
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=8
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_OMAP_AIC23 is not set
-# CONFIG_SND_OMAP_TSC2101 is not set
-# CONFIG_SND_SX1 is not set
-# CONFIG_SND_OMAP_TSC2102 is not set
-# CONFIG_SND_OMAP24XX_EAC is not set
-
-#
-# SPI devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=y
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# ALSA SoC audio for Freescale SOCs
-#
-
-#
-# SoC Audio for the Texas Instruments OMAP
-#
-CONFIG_SND_OMAP_SOC=y
-CONFIG_SND_OMAP_SOC_MCBSP=y
-CONFIG_SND_OMAP_SOC_OMAP3BEAGLE=y
-CONFIG_SND_SOC_TWL4030=y
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-CONFIG_HID_DEBUG=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_OMAP_EHCI_PHY_MODE=y
-# CONFIG_OMAP_EHCI_TLL_MODE is not set
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-CONFIG_USB_MUSB_HDRC=y
-CONFIG_USB_MUSB_SOC=y
-
-#
-# OMAP 343x high speed USB support
-#
-# CONFIG_USB_MUSB_HOST is not set
-# CONFIG_USB_MUSB_PERIPHERAL is not set
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
-CONFIG_USB_MUSB_HDRC_HCD=y
-# CONFIG_MUSB_PIO_ONLY is not set
-CONFIG_USB_INVENTRA_DMA=y
-CONFIG_MUSB_USE_SYSTEM_DMA_RX=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-CONFIG_USB_MUSB_LOGLEVEL=0
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_DEBUG=m
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=y
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_OMAP_HS=y
-CONFIG_MMC_SPI=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_OMAP_DEBUG is not set
-# CONFIG_LEDS_OMAP is not set
-# CONFIG_LEDS_OMAP_PWM is not set
-CONFIG_LEDS_GPIO=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-CONFIG_RTC_DRV_TWL4030=y
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_UIO is not set
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_FS_XATTR=y
-CONFIG_JFFS2_FS_POSIX_ACL=y
-CONFIG_JFFS2_FS_SECURITY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-# CONFIG_DLM is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHEDSTATS=y
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_CRYPTD=m
-# CONFIG_CRYPTO_AUTHENC is not set
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-# CONFIG_GENERIC_FIND_FIRST_BIT is not set
-# CONFIG_GENERIC_FIND_NEXT_BIT is not set
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=y
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap2-git/beagleboard/logo_linux_clut224.ppm b/packages/linux/linux-omap2-git/beagleboard/logo_linux_clut224.ppm
deleted file mode 100644
index d29fc1c544..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/logo_linux_clut224.ppm
+++ /dev/null
@@ -1,73147 +0,0 @@
-P3
-# CREATOR: GIMP PNM Filter Version 1.1
-387 63
-255
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-247
-143
-74
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-248
-138
-64
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-247
-150
-84
-246
-156
-93
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-123
-41
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-247
-150
-84
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-252
-185
-144
-240
-181
-138
-219
-170
-138
-219
-170
-138
-230
-173
-136
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-214
-151
-109
-121
-100
-85
-65
-67
-64
-74
-68
-68
-129
-102
-78
-214
-151
-109
-246
-156
-93
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-204
-141
-99
-102
-91
-75
-65
-67
-64
-81
-77
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-248
-138
-64
-247
-150
-84
-245
-162
-103
-162
-125
-96
-81
-77
-76
-55
-66
-67
-99
-90
-79
-187
-140
-108
-249
-159
-103
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-187
-140
-108
-102
-91
-75
-58
-69
-70
-76
-78
-76
-146
-111
-88
-238
-159
-107
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-159
-103
-251
-168
-115
-248
-180
-134
-239
-182
-144
-186
-157
-134
-124
-111
-99
-82
-69
-65
-65
-58
-56
-55
-48
-48
-65
-58
-56
-65
-58
-56
-65
-58
-56
-99
-90
-79
-158
-130
-108
-230
-173
-136
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-214
-151
-109
-74
-68
-68
-56
-64
-60
-95
-87
-59
-88
-82
-59
-56
-64
-60
-81
-77
-76
-238
-159
-107
-249
-152
-92
-248
-138
-64
-247
-130
-53
-246
-116
-28
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-51
-62
-63
-69
-69
-61
-95
-87
-59
-83
-78
-61
-48
-58
-59
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-139
-115
-96
-48
-58
-59
-95
-78
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-162
-125
-96
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-187
-140
-108
-48
-58
-59
-76
-70
-64
-118
-86
-65
-95
-78
-64
-51
-62
-63
-121
-100
-85
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-247
-165
-111
-250
-176
-132
-251
-192
-154
-167
-142
-123
-65
-58
-56
-35
-31
-30
-71
-60
-43
-108
-87
-46
-129
-106
-52
-137
-110
-49
-156
-125
-62
-187
-166
-150
-129
-106
-52
-101
-83
-47
-59
-50
-39
-55
-48
-48
-139
-115
-96
-240
-181
-138
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-247
-165
-111
-124
-111
-99
-56
-64
-60
-137
-110
-49
-171
-129
-45
-171
-129
-45
-129
-106
-52
-51
-62
-63
-162
-125
-96
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-69
-69
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-105
-93
-60
-48
-58
-59
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-250
-139
-73
-249
-159
-103
-210
-156
-119
-51
-62
-63
-112
-85
-63
-234
-126
-45
-234
-126
-45
-225
-124
-48
-95
-78
-64
-63
-74
-74
-234
-168
-124
-246
-156
-93
-250
-139
-73
-247
-123
-41
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-245
-169
-119
-81
-77
-76
-81
-73
-62
-212
-120
-56
-234
-126
-45
-234
-126
-45
-135
-94
-64
-41
-58
-57
-187
-140
-108
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-249
-189
-146
-236
-186
-153
-99
-90
-79
-47
-40
-38
-85
-71
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-160
-120
-43
-195
-167
-113
-216
-194
-154
-168
-127
-42
-168
-127
-42
-123
-102
-54
-59
-50
-39
-82
-69
-65
-230
-173
-136
-249
-174
-124
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-246
-156
-93
-245
-169
-119
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-101
-100
-92
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-210
-156
-119
-48
-58
-59
-105
-93
-60
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-158
-130
-108
-51
-62
-63
-188
-112
-56
-234
-125
-52
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-210
-156
-119
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-247
-165
-111
-210
-156
-119
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-199
-115
-54
-62
-63
-61
-139
-115
-96
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-150
-125
-114
-65
-58
-56
-24
-22
-23
-59
-50
-39
-152
-119
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-158
-125
-46
-227
-196
-175
-192
-155
-91
-160
-120
-43
-171
-129
-45
-158
-125
-46
-85
-71
-43
-65
-58
-56
-219
-170
-138
-249
-174
-124
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-230
-173
-136
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-252
-185
-144
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-203
-161
-131
-43
-57
-62
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-250
-176
-132
-246
-156
-93
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-154
-133
-118
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-186
-157
-134
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-209
-171
-139
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-249
-174
-124
-246
-156
-93
-248
-138
-64
-247
-123
-41
-247
-111
-26
-246
-109
-10
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-158
-130
-108
-47
-40
-38
-59
-50
-39
-85
-71
-43
-85
-71
-43
-59
-50
-39
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-192
-155
-91
-224
-207
-180
-158
-125
-46
-160
-120
-43
-168
-127
-42
-171
-129
-45
-71
-60
-43
-82
-69
-65
-239
-182
-144
-249
-174
-124
-249
-152
-92
-248
-138
-64
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-247
-165
-111
-239
-182
-144
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-250
-197
-158
-250
-176
-132
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-248
-180
-134
-212
-173
-150
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-248
-180
-134
-249
-159
-103
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-249
-189
-146
-251
-168
-115
-249
-152
-92
-250
-139
-73
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-150
-84
-247
-165
-111
-252
-185
-144
-212
-173
-150
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-133
-120
-107
-248
-180
-134
-249
-159
-103
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-103
-7
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-249
-159
-103
-250
-176
-132
-167
-142
-123
-24
-22
-23
-85
-71
-43
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-85
-71
-43
-35
-31
-30
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-216
-194
-154
-195
-167
-113
-152
-119
-47
-158
-125
-46
-168
-127
-42
-158
-125
-46
-59
-50
-39
-139
-115
-96
-252
-185
-144
-247
-165
-111
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-251
-209
-178
-249
-189
-146
-249
-174
-124
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-247
-143
-74
-246
-156
-93
-249
-174
-124
-251
-192
-154
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-159
-103
-252
-185
-144
-167
-142
-123
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-51
-62
-63
-187
-166
-150
-250
-200
-166
-248
-180
-134
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-197
-158
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-247
-150
-84
-251
-168
-115
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-59
-50
-39
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-239
-227
-208
-170
-137
-67
-160
-120
-43
-158
-125
-46
-171
-129
-45
-123
-102
-54
-47
-40
-38
-209
-171
-139
-248
-180
-134
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-253
-204
-176
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-246
-116
-28
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-250
-200
-166
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-249
-146
-83
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-150
-84
-251
-168
-115
-249
-189
-146
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-253
-212
-188
-250
-197
-158
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-109
-10
-246
-109
-10
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-253
-212
-188
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-111
-26
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-130
-60
-250
-139
-73
-247
-143
-74
-249
-146
-83
-247
-150
-84
-247
-150
-84
-249
-146
-83
-247
-143
-74
-250
-139
-73
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-118
-39
-247
-118
-39
-247
-118
-39
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-248
-138
-64
-250
-139
-73
-250
-139
-73
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-143
-74
-247
-143
-74
-250
-139
-73
-250
-139
-73
-248
-138
-64
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-139
-115
-96
-35
-31
-30
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-35
-31
-30
-152
-119
-47
-168
-127
-42
-168
-127
-42
-160
-120
-43
-168
-127
-42
-171
-129
-45
-152
-119
-47
-216
-194
-154
-224
-207
-180
-160
-120
-43
-160
-120
-43
-137
-110
-49
-102
-91
-75
-35
-31
-30
-115
-102
-92
-250
-200
-166
-250
-176
-132
-249
-159
-103
-249
-146
-83
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-253
-204
-176
-250
-197
-158
-252
-185
-144
-249
-174
-124
-251
-168
-115
-249
-159
-103
-246
-156
-93
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-246
-116
-28
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-60
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-143
-74
-248
-138
-64
-247
-130
-60
-247
-130
-60
-247
-130
-60
-248
-138
-64
-250
-139
-73
-249
-146
-83
-249
-152
-92
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-250
-176
-132
-252
-185
-144
-250
-200
-166
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-250
-200
-166
-250
-176
-132
-247
-165
-111
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-250
-139
-73
-247
-143
-74
-249
-146
-83
-249
-159
-103
-249
-174
-124
-251
-192
-154
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-212
-188
-250
-200
-166
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-246
-116
-28
-247
-111
-26
-246
-116
-28
-247
-118
-39
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-152
-92
-249
-152
-92
-247
-150
-84
-249
-146
-83
-249
-146
-83
-249
-146
-83
-247
-150
-84
-249
-152
-92
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-250
-176
-132
-249
-189
-146
-250
-200
-166
-253
-212
-188
-255
-215
-190
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-249
-159
-103
-249
-152
-92
-249
-146
-83
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-60
-248
-138
-64
-247
-143
-74
-249
-146
-83
-249
-152
-92
-246
-156
-93
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-152
-92
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-247
-143
-74
-249
-146
-83
-247
-150
-84
-246
-156
-93
-249
-159
-103
-247
-165
-111
-247
-165
-111
-251
-168
-115
-251
-168
-115
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-249
-159
-103
-249
-159
-103
-246
-156
-93
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-103
-7
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-236
-186
-153
-47
-40
-38
-59
-50
-39
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-168
-127
-42
-111
-94
-57
-76
-70
-64
-59
-50
-39
-101
-83
-47
-160
-120
-43
-170
-137
-67
-253
-255
-252
-195
-167
-113
-145
-114
-49
-69
-69
-61
-120
-114
-108
-35
-31
-30
-47
-40
-38
-217
-187
-166
-250
-197
-158
-250
-176
-132
-249
-159
-103
-249
-146
-83
-248
-138
-64
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-250
-139
-73
-246
-156
-93
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-245
-212
-186
-227
-196
-175
-212
-173
-150
-209
-171
-139
-219
-170
-138
-240
-181
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-250
-176
-132
-249
-174
-124
-249
-159
-103
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-53
-248
-138
-64
-249
-146
-83
-246
-156
-93
-247
-165
-111
-249
-174
-124
-245
-179
-138
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-245
-169
-119
-234
-168
-124
-247
-165
-111
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-247
-150
-84
-249
-152
-92
-249
-159
-103
-247
-165
-111
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-239
-182
-144
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-249
-189
-146
-236
-186
-153
-250
-200
-166
-255
-215
-190
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-253
-204
-176
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-248
-180
-134
-230
-173
-136
-219
-170
-138
-203
-161
-131
-209
-171
-139
-230
-173
-136
-245
-179
-138
-250
-176
-132
-251
-168
-115
-249
-159
-103
-249
-159
-103
-246
-156
-93
-249
-159
-103
-251
-168
-115
-248
-180
-134
-250
-197
-158
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-207
-178
-158
-209
-171
-139
-209
-171
-139
-230
-173
-136
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-247
-143
-74
-249
-152
-92
-247
-165
-111
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-152
-92
-247
-143
-74
-248
-138
-64
-247
-130
-53
-247
-123
-41
-247
-123
-41
-247
-123
-41
-247
-130
-53
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-176
-132
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-230
-173
-136
-251
-192
-154
-249
-189
-146
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-250
-176
-132
-248
-180
-134
-250
-176
-132
-250
-176
-132
-250
-176
-132
-248
-180
-134
-248
-180
-134
-230
-173
-136
-240
-181
-138
-252
-185
-144
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-219
-170
-138
-209
-171
-139
-207
-178
-158
-227
-196
-175
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-246
-116
-28
-247
-111
-26
-246
-109
-10
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-247
-143
-74
-249
-152
-92
-249
-159
-103
-249
-174
-124
-248
-180
-134
-240
-181
-138
-219
-170
-138
-203
-161
-131
-203
-161
-131
-219
-170
-138
-240
-181
-138
-248
-180
-134
-249
-174
-124
-247
-165
-111
-249
-159
-103
-247
-150
-84
-249
-146
-83
-247
-143
-74
-247
-143
-74
-249
-146
-83
-249
-152
-92
-249
-159
-103
-247
-165
-111
-234
-168
-124
-234
-168
-124
-248
-180
-134
-252
-185
-144
-252
-185
-144
-252
-185
-144
-248
-180
-134
-250
-176
-132
-234
-168
-124
-249
-174
-124
-251
-168
-115
-247
-165
-111
-247
-165
-111
-249
-159
-103
-247
-165
-111
-251
-168
-115
-249
-174
-124
-250
-176
-132
-248
-180
-134
-230
-173
-136
-203
-161
-131
-203
-161
-131
-219
-170
-138
-239
-182
-144
-251
-192
-154
-249
-189
-146
-252
-185
-144
-252
-185
-144
-248
-180
-134
-234
-168
-124
-238
-159
-107
-247
-165
-111
-249
-152
-92
-247
-143
-74
-247
-130
-60
-247
-123
-41
-246
-116
-28
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-247
-165
-111
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-101
-83
-47
-89
-84
-82
-152
-147
-147
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-224
-207
-180
-253
-255
-252
-209
-171
-139
-101
-83
-47
-24
-22
-23
-35
-31
-30
-35
-31
-30
-167
-142
-123
-253
-212
-188
-250
-197
-158
-248
-180
-134
-247
-165
-111
-247
-150
-84
-250
-139
-73
-247
-130
-60
-247
-130
-60
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-217
-187
-166
-137
-127
-115
-91
-92
-89
-55
-66
-67
-48
-58
-59
-48
-58
-59
-55
-66
-67
-84
-85
-82
-133
-120
-107
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-247
-150
-84
-247
-143
-74
-250
-139
-73
-250
-139
-73
-249
-146
-83
-249
-152
-92
-247
-165
-111
-249
-174
-124
-245
-179
-138
-178
-146
-122
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-144
-125
-110
-203
-161
-131
-248
-180
-134
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-250
-139
-73
-249
-146
-83
-246
-156
-93
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-101
-100
-92
-58
-69
-70
-48
-58
-59
-48
-58
-59
-51
-62
-63
-84
-85
-82
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-89
-84
-82
-81
-77
-76
-115
-102
-92
-210
-156
-119
-249
-174
-124
-251
-168
-115
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-252
-185
-144
-195
-157
-134
-124
-111
-99
-76
-78
-76
-51
-62
-63
-48
-58
-59
-48
-58
-59
-70
-79
-77
-120
-114
-108
-187
-166
-150
-253
-212
-188
-253
-212
-188
-172
-150
-134
-101
-100
-92
-77
-85
-81
-101
-100
-92
-176
-156
-141
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-253
-212
-188
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-239
-182
-144
-167
-142
-123
-109
-106
-99
-70
-79
-77
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-91
-92
-89
-150
-125
-114
-219
-170
-138
-248
-180
-134
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-249
-189
-146
-253
-204
-176
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-187
-166
-150
-109
-106
-99
-63
-74
-74
-43
-57
-62
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-178
-146
-122
-245
-179
-138
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-248
-138
-64
-248
-138
-64
-247
-143
-74
-247
-150
-84
-249
-159
-103
-249
-174
-124
-252
-185
-144
-195
-157
-134
-124
-111
-99
-77
-85
-81
-51
-62
-63
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-124
-111
-99
-195
-157
-134
-252
-185
-144
-249
-174
-124
-249
-159
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-247
-130
-60
-248
-138
-64
-250
-139
-73
-247
-150
-84
-249
-159
-103
-251
-168
-115
-248
-180
-134
-203
-161
-131
-124
-111
-99
-77
-85
-81
-48
-58
-59
-43
-57
-62
-43
-57
-62
-63
-74
-74
-109
-106
-99
-187
-166
-150
-253
-212
-188
-253
-212
-188
-187
-166
-150
-109
-106
-99
-77
-85
-81
-84
-85
-82
-150
-125
-114
-232
-190
-161
-253
-204
-176
-253
-204
-176
-172
-150
-134
-101
-100
-92
-77
-85
-81
-91
-92
-89
-137
-127
-115
-227
-196
-175
-253
-212
-188
-186
-157
-134
-109
-106
-99
-77
-85
-81
-84
-85
-82
-124
-111
-99
-219
-170
-138
-249
-189
-146
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-186
-157
-134
-109
-106
-99
-70
-79
-77
-43
-57
-62
-43
-57
-62
-41
-58
-57
-63
-74
-74
-101
-100
-92
-176
-156
-141
-194
-173
-157
-55
-66
-67
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-249
-189
-146
-247
-165
-111
-247
-143
-74
-247
-130
-53
-247
-118
-39
-247
-111
-26
-246
-109
-10
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-249
-159
-103
-249
-174
-124
-252
-185
-144
-203
-161
-131
-133
-120
-107
-84
-85
-82
-55
-66
-67
-43
-57
-62
-41
-58
-57
-51
-62
-63
-77
-85
-81
-124
-111
-99
-178
-146
-122
-239
-182
-144
-250
-176
-132
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-210
-156
-119
-124
-111
-99
-77
-85
-81
-77
-85
-81
-109
-106
-99
-194
-173
-157
-253
-212
-188
-217
-187
-166
-133
-120
-107
-89
-84
-82
-76
-78
-76
-101
-100
-92
-178
-146
-122
-249
-189
-146
-252
-185
-144
-252
-185
-144
-252
-185
-144
-251
-192
-154
-236
-186
-153
-167
-142
-123
-101
-100
-92
-63
-74
-74
-41
-58
-57
-43
-57
-62
-51
-62
-63
-77
-85
-81
-137
-127
-115
-217
-187
-166
-253
-212
-188
-227
-196
-175
-144
-125
-110
-84
-85
-82
-76
-78
-76
-115
-102
-92
-204
-141
-99
-249
-159
-103
-247
-143
-74
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-250
-197
-158
-82
-69
-65
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-101
-83
-47
-59
-50
-39
-101
-83
-47
-24
-22
-23
-35
-31
-30
-24
-22
-23
-24
-22
-23
-108
-87
-46
-168
-127
-42
-195
-167
-113
-253
-255
-252
-253
-255
-252
-239
-227
-208
-186
-157
-134
-162
-125
-96
-105
-93
-60
-47
-40
-38
-150
-125
-114
-217
-187
-166
-250
-200
-166
-252
-185
-144
-251
-168
-115
-246
-156
-93
-249
-146
-83
-247
-143
-74
-249
-146
-83
-249
-152
-92
-247
-165
-111
-252
-185
-144
-232
-190
-161
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-58
-69
-70
-56
-64
-60
-83
-78
-61
-105
-93
-60
-117
-98
-55
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-55
-66
-67
-144
-125
-110
-239
-182
-144
-250
-176
-132
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-89
-84
-82
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-105
-93
-60
-83
-78
-61
-56
-64
-60
-51
-62
-63
-124
-111
-99
-219
-170
-138
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-249
-152
-92
-246
-156
-93
-247
-165
-111
-249
-174
-124
-252
-185
-144
-167
-142
-123
-70
-79
-77
-51
-62
-63
-75
-74
-61
-100
-89
-56
-117
-98
-55
-123
-102
-54
-105
-93
-60
-83
-78
-61
-51
-62
-63
-63
-74
-74
-172
-150
-134
-109
-106
-99
-51
-62
-63
-83
-78
-61
-95
-87
-59
-65
-67
-64
-65
-67
-64
-209
-171
-139
-249
-189
-146
-249
-189
-146
-249
-189
-146
-250
-197
-158
-212
-173
-150
-109
-106
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-95
-87
-59
-62
-63
-61
-48
-58
-59
-137
-127
-115
-146
-135
-124
-48
-58
-59
-75
-74
-61
-95
-87
-59
-75
-74
-61
-48
-58
-59
-161
-144
-134
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-172
-150
-134
-77
-85
-81
-48
-58
-59
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-117
-98
-55
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-133
-120
-107
-236
-186
-153
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-253
-212
-188
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-51
-62
-63
-63
-74
-74
-48
-58
-59
-76
-70
-64
-118
-86
-65
-146
-97
-64
-155
-100
-63
-146
-97
-64
-118
-86
-65
-76
-70
-64
-43
-57
-62
-91
-92
-89
-203
-161
-131
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-249
-152
-92
-249
-159
-103
-251
-168
-115
-248
-180
-134
-209
-171
-139
-101
-100
-92
-43
-57
-62
-69
-69
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-135
-94
-64
-106
-82
-65
-65
-67
-64
-43
-57
-62
-101
-100
-92
-209
-171
-139
-248
-180
-134
-251
-168
-115
-249
-159
-103
-249
-152
-92
-247
-150
-84
-247
-150
-84
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-124
-111
-99
-48
-58
-59
-62
-63
-61
-106
-82
-65
-139
-96
-61
-155
-100
-63
-146
-97
-64
-125
-90
-64
-76
-70
-64
-41
-58
-57
-120
-114
-108
-172
-150
-134
-51
-62
-63
-69
-69
-61
-112
-85
-63
-95
-78
-64
-51
-62
-63
-120
-114
-108
-245
-212
-186
-146
-135
-124
-43
-57
-62
-81
-73
-62
-118
-86
-65
-95
-78
-64
-56
-64
-60
-101
-100
-92
-133
-120
-107
-43
-57
-62
-76
-70
-64
-112
-85
-63
-106
-82
-65
-62
-63
-61
-77
-85
-81
-227
-196
-175
-253
-212
-188
-253
-212
-188
-217
-187
-166
-109
-106
-99
-41
-58
-57
-69
-69
-61
-112
-85
-63
-139
-96
-61
-155
-100
-63
-146
-97
-64
-118
-86
-65
-81
-73
-62
-48
-58
-59
-58
-69
-70
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-111
-26
-246
-116
-28
-247
-123
-41
-248
-138
-64
-249
-146
-83
-249
-159
-103
-250
-176
-132
-219
-170
-138
-124
-111
-99
-43
-57
-62
-62
-63
-61
-106
-82
-65
-135
-94
-64
-155
-100
-63
-155
-100
-63
-139
-96
-61
-106
-82
-65
-69
-69
-61
-43
-57
-62
-91
-92
-89
-195
-157
-134
-251
-192
-154
-252
-185
-144
-248
-180
-134
-248
-180
-134
-252
-185
-144
-203
-161
-131
-63
-74
-74
-62
-63
-61
-106
-82
-65
-112
-85
-63
-69
-69
-61
-55
-66
-67
-146
-135
-124
-63
-74
-74
-56
-64
-60
-95
-78
-64
-112
-85
-63
-76
-70
-64
-48
-58
-59
-172
-150
-134
-253
-204
-176
-251
-209
-178
-251
-209
-178
-187
-166
-150
-77
-85
-81
-48
-58
-59
-81
-73
-62
-125
-90
-64
-146
-97
-64
-155
-100
-63
-139
-96
-61
-95
-78
-64
-56
-64
-60
-58
-69
-70
-161
-144
-134
-109
-106
-99
-51
-62
-63
-95
-78
-64
-112
-85
-63
-65
-67
-64
-65
-67
-64
-204
-141
-99
-246
-156
-93
-250
-139
-73
-247
-130
-53
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-209
-171
-139
-24
-22
-23
-85
-71
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-47
-40
-38
-137
-110
-49
-101
-83
-47
-59
-50
-39
-59
-50
-39
-101
-83
-47
-158
-125
-46
-160
-120
-43
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-152
-147
-147
-81
-77
-76
-55
-48
-48
-115
-102
-92
-212
-173
-150
-251
-192
-154
-249
-174
-124
-247
-165
-111
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-249
-189
-146
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-43
-57
-62
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-48
-58
-59
-109
-106
-99
-236
-186
-153
-252
-185
-144
-248
-180
-134
-250
-176
-132
-250
-176
-132
-252
-185
-144
-251
-192
-154
-150
-125
-114
-48
-58
-59
-69
-69
-61
-117
-98
-55
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-100
-89
-56
-56
-64
-60
-63
-74
-74
-186
-157
-134
-249
-189
-146
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-251
-192
-154
-133
-120
-107
-48
-58
-59
-75
-74
-61
-137
-110
-49
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-145
-114
-49
-75
-74
-61
-43
-57
-62
-51
-62
-63
-123
-102
-54
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-133
-120
-107
-253
-212
-188
-251
-209
-178
-253
-212
-188
-194
-173
-157
-63
-74
-74
-56
-64
-60
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-105
-93
-60
-51
-62
-63
-43
-57
-62
-88
-82
-59
-168
-127
-42
-171
-129
-45
-168
-127
-42
-88
-82
-59
-63
-74
-74
-187
-166
-150
-55
-66
-67
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-133
-120
-107
-48
-58
-59
-75
-74
-61
-129
-106
-52
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-171
-129
-45
-168
-127
-42
-145
-114
-49
-95
-87
-59
-51
-62
-63
-77
-85
-81
-212
-173
-150
-253
-204
-176
-253
-204
-176
-251
-209
-178
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-41
-58
-57
-69
-69
-61
-155
-100
-63
-214
-121
-50
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-234
-126
-45
-224
-123
-55
-155
-100
-63
-69
-69
-61
-51
-62
-63
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-251
-168
-115
-249
-174
-124
-250
-176
-132
-249
-189
-146
-167
-142
-123
-55
-66
-67
-65
-67
-64
-146
-97
-64
-212
-120
-56
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-125
-52
-209
-117
-53
-146
-97
-64
-65
-67
-64
-55
-66
-67
-178
-146
-122
-249
-189
-146
-250
-176
-132
-251
-168
-115
-247
-165
-111
-251
-168
-115
-249
-174
-124
-252
-185
-144
-203
-161
-131
-63
-74
-74
-56
-64
-60
-125
-90
-64
-209
-117
-53
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-214
-121
-50
-146
-97
-64
-56
-64
-60
-41
-58
-57
-81
-73
-62
-209
-117
-53
-234
-126
-45
-234
-126
-45
-125
-90
-64
-51
-62
-63
-176
-156
-141
-55
-66
-67
-106
-82
-65
-225
-124
-48
-234
-126
-45
-234
-126
-45
-146
-97
-64
-41
-58
-57
-43
-57
-62
-125
-90
-64
-214
-121
-50
-234
-126
-45
-234
-126
-45
-183
-110
-59
-56
-64
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-63
-74
-74
-62
-63
-61
-146
-97
-64
-214
-121
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-225
-124
-48
-173
-106
-60
-81
-73
-62
-35
-56
-60
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-116
-28
-246
-116
-28
-247
-123
-41
-247
-130
-60
-249
-146
-83
-247
-165
-111
-248
-180
-134
-186
-157
-134
-58
-69
-70
-56
-64
-60
-135
-94
-64
-199
-115
-54
-234
-125
-52
-234
-126
-45
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-125
-52
-212
-120
-56
-155
-100
-63
-76
-70
-64
-51
-62
-63
-146
-135
-124
-251
-209
-178
-253
-204
-176
-250
-200
-166
-253
-204
-176
-101
-100
-92
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-199
-115
-54
-65
-67
-64
-35
-56
-60
-81
-73
-62
-194
-112
-58
-234
-125
-52
-234
-126
-45
-214
-121
-50
-95
-78
-64
-63
-74
-74
-238
-205
-179
-255
-215
-190
-161
-144
-134
-43
-57
-62
-81
-73
-62
-173
-106
-60
-225
-124
-48
-234
-126
-45
-234
-126
-45
-234
-125
-52
-234
-126
-45
-234
-126
-45
-194
-112
-58
-95
-78
-64
-41
-58
-57
-48
-58
-59
-155
-100
-63
-234
-126
-45
-234
-126
-45
-199
-115
-54
-69
-69
-61
-99
-90
-79
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-249
-174
-124
-251
-192
-154
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-47
-40
-38
-108
-87
-46
-175
-132
-40
-161
-127
-40
-168
-127
-42
-171
-129
-45
-158
-125
-46
-152
-119
-47
-203
-161
-131
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-89
-84
-82
-47
-40
-38
-139
-115
-96
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-250
-176
-132
-252
-185
-144
-250
-197
-158
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-111
-94
-57
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-111
-94
-57
-48
-58
-59
-109
-106
-99
-253
-204
-176
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-204
-176
-137
-127
-115
-43
-57
-62
-88
-82
-59
-158
-125
-46
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-253
-204
-176
-133
-120
-107
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-158
-125
-46
-75
-74
-61
-62
-63
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-83
-78
-61
-91
-92
-89
-255
-215
-190
-255
-215
-190
-207
-178
-158
-58
-69
-70
-63
-69
-60
-145
-114
-49
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-105
-93
-60
-43
-57
-62
-137
-110
-49
-171
-129
-45
-158
-125
-46
-171
-129
-45
-137
-110
-49
-51
-62
-63
-146
-135
-124
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-245
-212
-186
-120
-114
-108
-48
-58
-59
-100
-89
-56
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-129
-106
-52
-61
-67
-58
-63
-74
-74
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-95
-78
-64
-209
-117
-53
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-209
-117
-53
-89
-75
-66
-51
-62
-63
-187
-166
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-161
-144
-134
-41
-58
-57
-95
-78
-64
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-89
-75
-66
-41
-58
-57
-167
-142
-123
-250
-200
-166
-251
-192
-154
-252
-185
-144
-249
-189
-146
-250
-197
-158
-212
-173
-150
-63
-74
-74
-69
-69
-61
-183
-110
-59
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-163
-104
-61
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-188
-112
-56
-234
-126
-45
-224
-123
-55
-234
-125
-52
-188
-112
-56
-43
-57
-62
-112
-85
-63
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-95
-78
-64
-109
-106
-99
-217
-187
-166
-58
-69
-70
-69
-69
-61
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-214
-121
-50
-95
-78
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-53
-247
-123
-41
-247
-118
-39
-247
-123
-41
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-186
-157
-134
-51
-62
-63
-81
-73
-62
-188
-112
-56
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-212
-120
-56
-106
-82
-65
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-125
-90
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-234
-125
-52
-89
-75
-66
-62
-63
-61
-199
-115
-54
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-217
-187
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-69
-69
-61
-227
-126
-50
-227
-126
-50
-224
-123
-55
-238
-123
-45
-125
-90
-64
-55
-66
-67
-250
-176
-132
-246
-156
-93
-250
-139
-73
-247
-123
-41
-247
-111
-26
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-232
-190
-161
-47
-40
-38
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-71
-60
-43
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-74
-68
-68
-89
-75
-66
-212
-173
-150
-250
-197
-158
-251
-192
-154
-249
-189
-146
-251
-192
-154
-253
-204
-176
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-95
-87
-59
-168
-127
-42
-168
-127
-42
-158
-125
-46
-161
-127
-40
-171
-129
-45
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-58
-69
-70
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-43
-57
-62
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-158
-125
-46
-168
-127
-42
-137
-110
-49
-83
-78
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-238
-205
-179
-84
-85
-82
-62
-63
-61
-145
-114
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-161
-127
-40
-158
-125
-46
-88
-82
-59
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-63
-69
-60
-137
-127
-115
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-105
-93
-60
-171
-129
-45
-161
-127
-40
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-145
-114
-49
-62
-63
-61
-70
-79
-77
-227
-196
-175
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-70
-79
-77
-234
-204
-183
-253
-212
-188
-251
-209
-178
-253
-212
-188
-187
-166
-150
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-95
-78
-64
-48
-58
-59
-194
-173
-157
-253
-212
-188
-251
-209
-178
-251
-209
-178
-245
-212
-186
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-126
-45
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-212
-120
-56
-183
-110
-59
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-95
-78
-64
-84
-85
-82
-91
-92
-89
-62
-63
-61
-188
-112
-56
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-123
-41
-247
-123
-41
-247
-130
-53
-248
-138
-64
-249
-152
-92
-249
-174
-124
-209
-171
-139
-58
-69
-70
-81
-73
-62
-209
-117
-53
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-112
-85
-63
-41
-58
-57
-172
-150
-134
-255
-215
-190
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-194
-112
-58
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-238
-128
-40
-163
-104
-61
-55
-66
-67
-161
-144
-134
-58
-69
-70
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-234
-125
-52
-227
-126
-50
-234
-125
-52
-173
-106
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-252
-185
-144
-249
-159
-103
-247
-143
-74
-247
-130
-53
-246
-116
-28
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-251
-192
-154
-154
-133
-118
-24
-22
-23
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-158
-125
-46
-158
-125
-46
-158
-125
-46
-160
-120
-43
-156
-125
-62
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-55
-48
-48
-154
-133
-118
-217
-187
-166
-253
-204
-176
-253
-204
-176
-253
-212
-188
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-168
-127
-42
-158
-125
-46
-123
-102
-54
-105
-93
-60
-111
-94
-57
-129
-106
-52
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-58
-69
-70
-227
-196
-175
-255
-215
-190
-217
-187
-166
-58
-69
-70
-75
-74
-61
-168
-127
-42
-161
-127
-40
-158
-125
-46
-168
-127
-42
-152
-119
-47
-105
-93
-60
-69
-69
-61
-62
-63
-61
-62
-63
-61
-75
-74
-61
-117
-98
-55
-161
-127
-40
-161
-127
-40
-158
-125
-46
-171
-129
-45
-145
-114
-49
-56
-64
-60
-97
-98
-96
-245
-212
-186
-255
-215
-190
-227
-196
-175
-63
-74
-74
-75
-74
-61
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-129
-106
-52
-111
-94
-57
-105
-93
-60
-129
-106
-52
-158
-125
-46
-168
-127
-42
-161
-127
-40
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-161
-144
-134
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-117
-98
-55
-105
-93
-60
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-152
-119
-47
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-194
-173
-157
-48
-58
-59
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-95
-87
-59
-69
-69
-61
-62
-63
-61
-62
-63
-61
-83
-78
-61
-123
-102
-54
-168
-127
-42
-161
-127
-40
-158
-125
-46
-171
-129
-45
-129
-106
-52
-51
-62
-63
-120
-114
-108
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-188
-112
-56
-146
-97
-64
-135
-94
-64
-146
-97
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-163
-104
-61
-135
-94
-64
-135
-94
-64
-163
-104
-61
-224
-123
-55
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-76
-70
-64
-77
-85
-81
-238
-205
-179
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-199
-115
-54
-155
-100
-63
-135
-94
-64
-146
-97
-64
-188
-112
-56
-227
-126
-50
-227
-126
-50
-214
-121
-50
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-199
-115
-54
-125
-90
-64
-51
-62
-63
-55
-66
-67
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-209
-117
-53
-155
-100
-63
-135
-94
-64
-139
-96
-61
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-247
-130
-60
-247
-130
-53
-247
-130
-53
-247
-130
-60
-249
-146
-83
-247
-165
-111
-252
-185
-144
-101
-100
-92
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-135
-94
-64
-135
-94
-64
-163
-104
-61
-214
-121
-50
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-58
-69
-70
-227
-196
-175
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-125
-52
-212
-120
-56
-155
-100
-63
-69
-69
-61
-76
-78
-76
-84
-85
-82
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-183
-110
-59
-139
-96
-61
-135
-94
-64
-155
-100
-63
-209
-117
-53
-234
-125
-52
-224
-123
-55
-212
-120
-56
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-251
-192
-154
-251
-168
-115
-249
-146
-83
-247
-130
-53
-247
-118
-39
-246
-109
-10
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-250
-176
-132
-232
-190
-161
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-47
-40
-38
-129
-106
-52
-168
-127
-42
-160
-120
-43
-158
-125
-46
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-62
-63
-61
-35
-31
-30
-91
-92
-89
-164
-158
-157
-186
-181
-179
-82
-69
-65
-176
-156
-141
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-65
-67
-64
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-83
-78
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-120
-114
-108
-56
-64
-60
-145
-114
-49
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-69
-69
-61
-43
-57
-62
-109
-106
-99
-146
-135
-124
-137
-127
-115
-91
-92
-89
-43
-57
-62
-88
-82
-59
-158
-125
-46
-161
-127
-40
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-172
-150
-134
-255
-215
-190
-146
-135
-124
-51
-62
-63
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-75
-74
-61
-48
-58
-59
-55
-66
-67
-55
-66
-67
-48
-58
-59
-69
-69
-61
-137
-110
-49
-168
-127
-42
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-234
-204
-183
-70
-79
-77
-83
-78
-61
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-56
-64
-60
-43
-57
-62
-58
-69
-70
-48
-58
-59
-56
-64
-60
-100
-89
-56
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-137
-127
-115
-255
-215
-190
-97
-98
-96
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-62
-63
-61
-51
-62
-63
-120
-114
-108
-146
-135
-124
-137
-127
-115
-84
-85
-82
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-43
-57
-62
-194
-173
-157
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-118
-86
-65
-51
-62
-63
-43
-57
-62
-58
-69
-70
-41
-58
-57
-56
-64
-60
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-161
-144
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-76
-70
-64
-43
-57
-62
-55
-66
-67
-55
-66
-67
-48
-58
-59
-81
-73
-62
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-48
-58
-59
-161
-144
-134
-255
-215
-190
-234
-204
-183
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-62
-63
-61
-43
-57
-62
-58
-69
-70
-43
-57
-62
-51
-62
-63
-125
-90
-64
-225
-124
-48
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-227
-126
-50
-173
-106
-60
-95
-78
-64
-56
-64
-60
-51
-62
-63
-120
-114
-108
-70
-79
-77
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-163
-104
-61
-65
-67
-64
-41
-58
-57
-55
-66
-67
-51
-62
-63
-48
-58
-59
-106
-82
-65
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-249
-146
-83
-248
-138
-64
-247
-130
-53
-247
-130
-60
-250
-139
-73
-246
-156
-93
-250
-176
-132
-186
-157
-134
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-89
-75
-66
-48
-58
-59
-51
-62
-63
-55
-66
-67
-43
-57
-62
-76
-70
-64
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-137
-127
-115
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-199
-115
-54
-125
-90
-64
-69
-69
-61
-41
-58
-57
-97
-98
-96
-146
-135
-124
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-106
-82
-65
-48
-58
-59
-51
-62
-63
-55
-66
-67
-41
-58
-57
-65
-67
-64
-163
-104
-61
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-197
-158
-251
-168
-115
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-252
-185
-144
-154
-133
-118
-24
-22
-23
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-71
-60
-43
-85
-71
-43
-171
-129
-45
-160
-120
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-65
-58
-56
-62
-63
-61
-219
-212
-208
-253
-255
-252
-237
-233
-225
-120
-114
-108
-35
-31
-30
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-84
-85
-82
-187
-166
-150
-227
-196
-175
-227
-196
-175
-161
-144
-134
-51
-62
-63
-69
-69
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-91
-92
-89
-217
-187
-166
-55
-66
-67
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-58
-69
-70
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-84
-85
-82
-234
-204
-183
-76
-78
-76
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-62
-63
-61
-63
-74
-74
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-70
-79
-77
-62
-63
-61
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-172
-150
-134
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-43
-57
-62
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-120
-114
-108
-41
-58
-57
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-207
-178
-158
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-70
-79
-77
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-238
-205
-179
-137
-127
-115
-43
-57
-62
-117
-98
-55
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-62
-63
-61
-109
-106
-99
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-137
-127
-115
-217
-187
-166
-227
-196
-175
-207
-178
-158
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-245
-212
-186
-70
-79
-77
-95
-78
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-56
-64
-60
-70
-79
-77
-176
-156
-141
-227
-196
-175
-227
-196
-175
-176
-156
-141
-63
-74
-74
-62
-63
-61
-194
-112
-58
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-135
-94
-64
-35
-56
-60
-120
-114
-108
-207
-178
-158
-227
-196
-175
-217
-187
-166
-133
-120
-107
-35
-56
-60
-118
-86
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-95
-78
-64
-48
-58
-59
-70
-79
-77
-146
-135
-124
-217
-187
-166
-207
-178
-158
-51
-62
-63
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-91
-92
-89
-194
-173
-157
-227
-196
-175
-217
-187
-166
-146
-135
-124
-43
-57
-62
-89
-75
-66
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-247
-165
-111
-247
-150
-84
-248
-138
-64
-247
-130
-60
-248
-138
-64
-249
-146
-83
-247
-165
-111
-239
-182
-144
-91
-92
-89
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-76
-70
-64
-55
-66
-67
-172
-150
-134
-227
-196
-175
-227
-196
-175
-187
-166
-150
-77
-85
-81
-51
-62
-63
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-58
-69
-70
-217
-187
-166
-70
-79
-77
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-125
-90
-64
-56
-64
-60
-55
-66
-67
-120
-114
-108
-187
-166
-150
-245
-212
-186
-120
-114
-108
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-146
-135
-124
-217
-187
-166
-227
-196
-175
-194
-173
-157
-91
-92
-89
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-249
-146
-83
-251
-168
-115
-239
-182
-144
-65
-58
-56
-59
-50
-39
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-108
-87
-46
-47
-40
-38
-152
-119
-47
-170
-137
-67
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-174
-168
-167
-24
-22
-23
-109
-106
-99
-152
-147
-147
-97
-98
-96
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-176
-156
-141
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-76
-78
-76
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-51
-62
-63
-95
-87
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-109
-106
-99
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-117
-98
-55
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-171
-129
-45
-117
-98
-55
-55
-66
-67
-137
-127
-115
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-109
-106
-99
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-120
-114
-108
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-146
-135
-124
-146
-135
-124
-62
-63
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-100
-89
-56
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-100
-89
-56
-51
-62
-63
-227
-196
-175
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-76
-70
-64
-109
-106
-99
-194
-173
-157
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-225
-124
-48
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-58
-69
-70
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-120
-114
-108
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-62
-63
-61
-58
-69
-70
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-77
-85
-81
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-176
-156
-141
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-248
-138
-64
-250
-139
-73
-249
-152
-92
-249
-174
-124
-209
-171
-139
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-51
-62
-63
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-70
-79
-77
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-146
-135
-124
-77
-85
-81
-135
-94
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-95
-78
-64
-35
-56
-60
-120
-114
-108
-217
-187
-166
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-41
-58
-57
-172
-150
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-178
-146
-122
-24
-22
-23
-101
-83
-47
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-47
-40
-38
-123
-102
-54
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-47
-40
-38
-194
-173
-157
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-56
-64
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-48
-58
-59
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-63
-74
-74
-194
-173
-157
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-172
-150
-134
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-63
-74
-74
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-97
-98
-96
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-207
-178
-158
-217
-187
-166
-146
-135
-124
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-70
-79
-77
-245
-212
-186
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-77
-85
-81
-133
-120
-107
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-48
-58
-59
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-55
-66
-67
-227
-196
-175
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-234
-204
-183
-63
-74
-74
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-224
-123
-55
-89
-75
-66
-63
-74
-74
-217
-187
-166
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-187
-166
-150
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-101
-100
-92
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-247
-150
-84
-250
-139
-73
-250
-139
-73
-247
-143
-74
-249
-159
-103
-250
-176
-132
-154
-133
-118
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-176
-156
-141
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-91
-92
-89
-70
-79
-77
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-146
-97
-64
-35
-56
-60
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-97
-98
-96
-255
-215
-190
-255
-215
-190
-255
-215
-190
-253
-212
-188
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-159
-103
-248
-180
-134
-124
-111
-99
-35
-31
-30
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-59
-50
-39
-85
-71
-43
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-47
-40
-38
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-65
-58
-56
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-100
-89
-56
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-194
-173
-157
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-43
-57
-62
-95
-87
-59
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-63
-69
-60
-43
-57
-62
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-43
-57
-62
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-51
-62
-63
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-120
-114
-108
-70
-79
-77
-105
-93
-60
-171
-129
-45
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-51
-62
-63
-43
-57
-62
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-62
-63
-61
-146
-135
-124
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-212
-188
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-253
-212
-188
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-135
-94
-64
-55
-66
-67
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-217
-187
-166
-51
-62
-63
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-58
-69
-70
-51
-62
-63
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-224
-123
-55
-81
-73
-62
-109
-106
-99
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-70
-79
-77
-118
-86
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-77
-85
-81
-245
-212
-186
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-251
-168
-115
-249
-152
-92
-247
-143
-74
-247
-143
-74
-247
-150
-84
-249
-159
-103
-248
-180
-134
-120
-114
-108
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-194
-173
-157
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-234
-204
-183
-63
-74
-74
-112
-85
-63
-234
-125
-52
-227
-126
-50
-224
-123
-55
-234
-125
-52
-106
-82
-65
-58
-69
-70
-55
-66
-67
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-77
-85
-81
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-172
-150
-134
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-245
-212
-186
-63
-74
-74
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-82
-69
-65
-47
-40
-38
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-85
-71
-43
-59
-50
-39
-216
-194
-154
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-164
-158
-157
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-65
-67
-64
-65
-58
-56
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-227
-196
-175
-58
-69
-70
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-137
-110
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-41
-58
-57
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-253
-212
-188
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-238
-205
-179
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-152
-119
-47
-56
-64
-60
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-172
-150
-134
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-97
-98
-96
-55
-66
-67
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-123
-102
-54
-117
-98
-55
-145
-114
-49
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-187
-166
-150
-255
-215
-190
-253
-204
-176
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-137
-127
-115
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-41
-58
-57
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-251
-192
-154
-250
-197
-158
-251
-209
-178
-238
-205
-179
-77
-85
-81
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-253
-204
-176
-255
-215
-190
-176
-156
-141
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-234
-125
-52
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-227
-196
-175
-58
-69
-70
-139
-96
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-255
-215
-190
-207
-178
-158
-48
-58
-59
-163
-104
-61
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-192
-154
-249
-174
-124
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-251
-168
-115
-249
-189
-146
-97
-98
-96
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-227
-196
-175
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-251
-209
-178
-255
-215
-190
-97
-98
-96
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-43
-57
-62
-43
-57
-62
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-69
-69
-61
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-126
-45
-155
-100
-63
-43
-57
-62
-207
-178
-158
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-255
-215
-190
-109
-106
-99
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-143
-74
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-101
-83
-47
-59
-50
-39
-209
-171
-139
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-137
-127
-115
-101
-100
-92
-120
-114
-108
-186
-181
-179
-152
-147
-147
-55
-48
-48
-227
-196
-175
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-234
-204
-183
-70
-79
-77
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-75
-74
-61
-41
-58
-57
-88
-82
-59
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-245
-212
-186
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-245
-212
-186
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-65
-67
-64
-91
-92
-89
-55
-66
-67
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-63
-69
-60
-137
-127
-115
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-41
-58
-57
-118
-86
-65
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-95
-78
-64
-91
-92
-89
-255
-215
-190
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-253
-204
-176
-245
-212
-186
-91
-92
-89
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-41
-58
-57
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-227
-126
-50
-199
-115
-54
-56
-64
-60
-161
-144
-134
-255
-215
-190
-250
-200
-166
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-187
-166
-150
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-69
-69
-61
-137
-127
-115
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-249
-189
-146
-250
-200
-166
-253
-212
-188
-217
-187
-166
-51
-62
-63
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-197
-158
-249
-174
-124
-249
-159
-103
-249
-152
-92
-249
-152
-92
-249
-159
-103
-249
-174
-124
-250
-197
-158
-91
-92
-89
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-70
-79
-77
-234
-204
-183
-251
-209
-178
-250
-197
-158
-249
-189
-146
-252
-185
-144
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-41
-58
-57
-41
-58
-57
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-212
-188
-251
-209
-178
-251
-209
-178
-255
-215
-190
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-146
-97
-64
-51
-62
-63
-227
-196
-175
-253
-212
-188
-250
-197
-158
-249
-189
-146
-249
-189
-146
-251
-192
-154
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-252
-185
-144
-55
-48
-48
-59
-50
-39
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-154
-125
-71
-170
-137
-67
-108
-87
-46
-59
-50
-39
-192
-155
-91
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-186
-181
-179
-47
-40
-38
-65
-58
-56
-245
-212
-186
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-253
-212
-188
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-234
-204
-183
-63
-74
-74
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-75
-74
-61
-41
-58
-57
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-111
-94
-57
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-95
-87
-59
-70
-79
-77
-245
-212
-186
-251
-209
-178
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-251
-209
-178
-245
-212
-186
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-161
-144
-134
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-91
-92
-89
-55
-66
-67
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-145
-114
-49
-100
-89
-56
-48
-58
-59
-187
-166
-150
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-255
-215
-190
-250
-200
-166
-251
-192
-154
-251
-192
-154
-250
-197
-158
-253
-204
-176
-255
-215
-190
-146
-135
-124
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-41
-58
-57
-112
-85
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-84
-85
-82
-255
-215
-190
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-251
-209
-178
-238
-205
-179
-84
-85
-82
-106
-82
-65
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-106
-82
-65
-41
-58
-57
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-146
-135
-124
-255
-215
-190
-253
-204
-176
-251
-192
-154
-249
-189
-146
-251
-192
-154
-250
-200
-166
-255
-215
-190
-176
-156
-141
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-212
-188
-253
-204
-176
-250
-200
-166
-253
-204
-176
-217
-187
-166
-55
-66
-67
-146
-97
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-253
-204
-176
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-200
-166
-253
-212
-188
-207
-178
-158
-48
-58
-59
-163
-104
-61
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-250
-200
-166
-248
-180
-134
-251
-168
-115
-247
-165
-111
-247
-165
-111
-251
-168
-115
-248
-180
-134
-250
-200
-166
-91
-92
-89
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-126
-45
-125
-90
-64
-63
-74
-74
-227
-196
-175
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-109
-106
-99
-89
-75
-66
-225
-124
-48
-227
-126
-50
-224
-123
-55
-234
-125
-52
-125
-90
-64
-43
-57
-62
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-251
-209
-178
-137
-127
-115
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-43
-57
-62
-217
-187
-166
-253
-212
-188
-250
-200
-166
-251
-192
-154
-249
-189
-146
-250
-197
-158
-253
-204
-176
-255
-215
-190
-120
-114
-108
-81
-73
-62
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-250
-139
-73
-249
-159
-103
-248
-180
-134
-76
-70
-64
-47
-40
-38
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-170
-137
-67
-101
-83
-47
-59
-50
-39
-170
-137
-67
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-152
-147
-147
-35
-31
-30
-24
-22
-23
-115
-102
-92
-255
-215
-190
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-207
-178
-158
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-48
-58
-59
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-48
-58
-59
-101
-100
-92
-91
-92
-89
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-111
-94
-57
-55
-66
-67
-227
-196
-175
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-255
-215
-190
-227
-196
-175
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-48
-58
-59
-48
-58
-59
-123
-102
-54
-168
-127
-42
-158
-125
-46
-161
-127
-40
-158
-125
-46
-69
-69
-61
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-146
-135
-124
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-109
-106
-99
-63
-74
-74
-111
-94
-57
-171
-129
-45
-158
-125
-46
-161
-127
-40
-152
-119
-47
-69
-69
-61
-51
-62
-63
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-56
-64
-60
-51
-62
-63
-48
-58
-59
-120
-114
-108
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-137
-127
-115
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-200
-166
-250
-200
-166
-253
-212
-188
-255
-215
-190
-109
-106
-99
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-155
-100
-63
-48
-58
-59
-43
-57
-62
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-227
-196
-175
-253
-212
-188
-250
-200
-166
-250
-197
-158
-250
-197
-158
-253
-204
-176
-255
-215
-190
-227
-196
-175
-55
-66
-67
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-48
-58
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-120
-114
-108
-255
-215
-190
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-251
-209
-178
-255
-215
-190
-137
-127
-115
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-48
-58
-59
-176
-156
-141
-251
-209
-178
-250
-200
-166
-250
-197
-158
-250
-200
-166
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-91
-92
-89
-253
-212
-188
-253
-212
-188
-250
-200
-166
-250
-200
-166
-250
-200
-166
-251
-209
-178
-255
-215
-190
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-251
-209
-178
-251
-192
-154
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-251
-209
-178
-109
-106
-99
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-146
-97
-64
-43
-57
-62
-217
-187
-166
-255
-215
-190
-253
-204
-176
-250
-197
-158
-250
-197
-158
-250
-200
-166
-253
-212
-188
-245
-212
-186
-70
-79
-77
-106
-82
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-51
-62
-63
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-212
-186
-250
-200
-166
-251
-192
-154
-250
-197
-158
-253
-204
-176
-146
-135
-124
-65
-67
-64
-209
-117
-53
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-187
-166
-150
-255
-215
-190
-253
-204
-176
-250
-200
-166
-250
-197
-158
-250
-200
-166
-253
-212
-188
-255
-215
-190
-84
-85
-82
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-109
-10
-247
-111
-26
-247
-123
-41
-248
-138
-64
-249
-152
-92
-249
-174
-124
-121
-100
-85
-35
-31
-30
-108
-87
-46
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-171
-129
-45
-85
-71
-43
-71
-60
-43
-171
-129
-45
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-237
-233
-225
-174
-168
-167
-81
-77
-76
-24
-22
-23
-35
-31
-30
-35
-31
-30
-187
-166
-150
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-146
-135
-124
-51
-62
-63
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-152
-119
-47
-56
-64
-60
-43
-57
-62
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-48
-58
-59
-146
-135
-124
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-146
-135
-124
-146
-135
-124
-194
-173
-157
-245
-212
-186
-137
-127
-115
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-161
-144
-134
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-161
-144
-134
-48
-58
-59
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-55
-66
-67
-51
-62
-63
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-70
-79
-77
-245
-212
-186
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-255
-215
-190
-91
-92
-89
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-133
-120
-107
-84
-85
-82
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-55
-66
-67
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-161
-144
-134
-172
-150
-134
-172
-150
-134
-137
-127
-115
-146
-135
-124
-207
-178
-158
-245
-212
-186
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-76
-78
-76
-245
-212
-186
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-227
-196
-175
-58
-69
-70
-118
-86
-65
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-125
-90
-64
-63
-74
-74
-97
-98
-96
-76
-70
-64
-214
-121
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-163
-104
-61
-48
-58
-59
-187
-166
-150
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-255
-215
-190
-255
-215
-190
-176
-156
-141
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-227
-126
-50
-212
-120
-56
-69
-69
-61
-101
-100
-92
-63
-74
-74
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-106
-82
-65
-63
-74
-74
-234
-204
-183
-255
-215
-190
-253
-212
-188
-253
-212
-188
-253
-212
-188
-255
-215
-190
-245
-212
-186
-70
-79
-77
-89
-75
-66
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-176
-156
-141
-253
-204
-176
-251
-192
-154
-251
-192
-154
-251
-192
-154
-250
-200
-166
-77
-85
-81
-106
-82
-65
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-135
-94
-64
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-253
-212
-188
-253
-212
-188
-255
-215
-190
-255
-215
-190
-109
-106
-99
-76
-70
-64
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-250
-200
-166
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-250
-200
-166
-255
-215
-190
-146
-135
-124
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-51
-62
-63
-146
-135
-124
-255
-215
-190
-255
-215
-190
-251
-209
-178
-251
-209
-178
-253
-212
-188
-255
-215
-190
-194
-173
-157
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-77
-85
-81
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-209
-178
-250
-197
-158
-249
-189
-146
-249
-189
-146
-250
-200
-166
-172
-150
-134
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-120
-114
-108
-255
-215
-190
-255
-215
-190
-253
-212
-188
-251
-209
-178
-253
-212
-188
-255
-215
-190
-217
-187
-166
-51
-62
-63
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-60
-247
-150
-84
-251
-168
-115
-187
-140
-108
-24
-22
-23
-59
-50
-39
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-158
-125
-46
-47
-40
-38
-108
-87
-46
-158
-125
-46
-195
-167
-113
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-164
-158
-157
-109
-106
-99
-65
-58
-56
-24
-22
-23
-24
-22
-23
-94
-60
-47
-178
-86
-46
-59
-50
-39
-150
-125
-114
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-69
-69
-61
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-55
-66
-67
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-51
-62
-63
-76
-78
-76
-56
-64
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-77
-85
-81
-77
-85
-81
-146
-135
-124
-245
-212
-186
-176
-156
-141
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-75
-74
-61
-63
-74
-74
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-77
-85
-81
-77
-85
-81
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-172
-150
-134
-48
-58
-59
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-120
-114
-108
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-111
-94
-57
-51
-62
-63
-176
-156
-141
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-120
-114
-108
-70
-79
-77
-84
-85
-82
-161
-144
-134
-255
-215
-190
-255
-215
-190
-161
-144
-134
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-155
-100
-63
-41
-58
-57
-161
-144
-134
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-137
-127
-115
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-89
-75
-66
-97
-98
-96
-172
-150
-134
-48
-58
-59
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-214
-121
-50
-76
-70
-64
-84
-85
-82
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-77
-85
-81
-81
-73
-62
-224
-123
-55
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-176
-156
-141
-97
-98
-96
-95
-78
-64
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-161
-144
-134
-41
-58
-57
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-200
-166
-249
-189
-146
-252
-185
-144
-249
-189
-146
-250
-200
-166
-120
-114
-108
-69
-69
-61
-214
-121
-50
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-101
-100
-92
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-187
-166
-150
-43
-57
-62
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-253
-212
-188
-253
-204
-176
-250
-200
-166
-250
-200
-166
-253
-204
-176
-253
-212
-188
-255
-215
-190
-187
-166
-150
-41
-58
-57
-155
-100
-63
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-95
-78
-64
-58
-69
-70
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-91
-92
-89
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-62
-63
-61
-133
-120
-107
-77
-85
-81
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-253
-204
-176
-251
-192
-154
-252
-185
-144
-252
-185
-144
-251
-192
-154
-212
-173
-150
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-118
-86
-65
-51
-62
-63
-207
-178
-158
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-109
-106
-99
-56
-64
-60
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-247
-111
-26
-246
-116
-28
-247
-130
-53
-247
-143
-74
-249
-159
-103
-248
-180
-134
-89
-75
-66
-24
-22
-23
-85
-71
-43
-171
-129
-45
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-154
-125
-71
-156
-125
-62
-175
-132
-40
-85
-71
-43
-47
-40
-38
-158
-125
-46
-158
-125
-46
-170
-137
-67
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-207
-202
-200
-164
-158
-157
-146
-135
-124
-120
-114
-108
-89
-84
-82
-65
-58
-56
-47
-40
-38
-24
-22
-23
-24
-22
-23
-35
-31
-30
-94
-60
-47
-178
-86
-46
-226
-110
-35
-241
-100
-24
-144
-77
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-101
-100
-92
-217
-187
-166
-245
-212
-186
-245
-212
-186
-194
-173
-157
-76
-78
-76
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-77
-85
-81
-176
-156
-141
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-95
-87
-59
-41
-58
-57
-137
-127
-115
-227
-196
-175
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-120
-114
-108
-48
-58
-59
-62
-63
-61
-100
-89
-56
-95
-87
-59
-51
-62
-63
-120
-114
-108
-227
-196
-175
-55
-66
-67
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-84
-85
-82
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-97
-98
-96
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-91
-92
-89
-120
-114
-108
-63
-69
-60
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-43
-57
-62
-161
-144
-134
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-51
-62
-63
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-176
-156
-141
-48
-58
-59
-137
-110
-49
-171
-129
-45
-158
-125
-46
-161
-127
-40
-158
-125
-46
-75
-74
-61
-43
-57
-62
-161
-144
-134
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-194
-173
-157
-109
-106
-99
-43
-57
-62
-69
-69
-61
-105
-93
-60
-88
-82
-59
-48
-58
-59
-146
-135
-124
-255
-215
-190
-161
-144
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-225
-124
-48
-95
-78
-64
-43
-57
-62
-161
-144
-134
-234
-204
-183
-245
-212
-186
-227
-196
-175
-146
-135
-124
-35
-56
-60
-125
-90
-64
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-188
-112
-56
-51
-62
-63
-161
-144
-134
-234
-204
-183
-51
-62
-63
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-125
-52
-163
-104
-61
-43
-57
-62
-97
-98
-96
-207
-178
-158
-245
-212
-186
-245
-212
-186
-207
-178
-158
-91
-92
-89
-48
-58
-59
-173
-106
-60
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-118
-86
-65
-55
-66
-67
-234
-204
-183
-146
-135
-124
-56
-64
-60
-194
-112
-58
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-35
-56
-60
-146
-135
-124
-227
-196
-175
-253
-212
-188
-234
-204
-183
-161
-144
-134
-43
-57
-62
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-176
-156
-141
-250
-197
-158
-252
-185
-144
-248
-180
-134
-248
-180
-134
-251
-192
-154
-172
-150
-134
-48
-58
-59
-173
-106
-60
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-41
-58
-57
-120
-114
-108
-217
-187
-166
-245
-212
-186
-234
-204
-183
-176
-156
-141
-58
-69
-70
-81
-73
-62
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-255
-215
-190
-217
-187
-166
-133
-120
-107
-84
-85
-82
-91
-92
-89
-146
-135
-124
-234
-204
-183
-238
-205
-179
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-84
-85
-82
-194
-173
-157
-245
-212
-186
-245
-212
-186
-217
-187
-166
-109
-106
-99
-41
-58
-57
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-146
-97
-64
-51
-62
-63
-187
-166
-150
-76
-78
-76
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-97
-98
-96
-250
-200
-166
-249
-189
-146
-248
-180
-134
-248
-180
-134
-252
-185
-144
-232
-190
-161
-70
-79
-77
-112
-85
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-199
-115
-54
-65
-67
-64
-70
-79
-77
-187
-166
-150
-238
-205
-179
-245
-212
-186
-217
-187
-166
-133
-120
-107
-35
-56
-60
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-123
-41
-247
-130
-60
-247
-150
-84
-251
-168
-115
-203
-161
-131
-55
-48
-48
-24
-22
-23
-71
-60
-43
-145
-114
-49
-171
-129
-45
-171
-129
-45
-158
-125
-46
-156
-125
-62
-154
-125
-71
-154
-125
-71
-156
-125
-62
-156
-125
-62
-171
-129
-45
-171
-129
-45
-101
-83
-47
-35
-31
-30
-123
-102
-54
-171
-129
-45
-158
-125
-46
-160
-120
-43
-224
-207
-180
-253
-255
-252
-253
-255
-252
-219
-212
-208
-47
-40
-38
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-24
-22
-23
-47
-40
-38
-226
-110
-35
-241
-100
-24
-226
-110
-35
-226
-110
-35
-144
-77
-47
-55
-48
-48
-238
-205
-179
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-123
-102
-54
-56
-64
-60
-51
-62
-63
-84
-85
-82
-84
-85
-82
-48
-58
-59
-63
-69
-60
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-245
-212
-186
-84
-85
-82
-69
-69
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-95
-87
-59
-48
-58
-59
-63
-74
-74
-109
-106
-99
-133
-120
-107
-133
-120
-107
-91
-92
-89
-51
-62
-63
-56
-64
-60
-100
-89
-56
-152
-119
-47
-171
-129
-45
-175
-132
-40
-100
-89
-56
-48
-58
-59
-217
-187
-166
-120
-114
-108
-63
-69
-60
-152
-119
-47
-161
-127
-40
-158
-125
-46
-158
-125
-46
-168
-127
-42
-129
-106
-52
-61
-67
-58
-51
-62
-63
-84
-85
-82
-84
-85
-82
-51
-62
-63
-56
-64
-60
-123
-102
-54
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-97
-98
-96
-187
-166
-150
-48
-58
-59
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-83
-78
-61
-48
-58
-59
-63
-74
-74
-91
-92
-89
-70
-79
-77
-48
-58
-59
-75
-74
-61
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-146
-135
-124
-234
-204
-183
-63
-74
-74
-83
-78
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-83
-78
-61
-48
-58
-59
-70
-79
-77
-109
-106
-99
-133
-120
-107
-120
-114
-108
-84
-85
-82
-48
-58
-59
-61
-67
-58
-111
-94
-57
-158
-125
-46
-171
-129
-45
-171
-129
-45
-88
-82
-59
-58
-69
-70
-238
-205
-179
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-212
-120
-56
-95
-78
-64
-43
-57
-62
-70
-79
-77
-84
-85
-82
-63
-74
-74
-48
-58
-59
-118
-86
-65
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-112
-85
-63
-55
-66
-67
-227
-196
-175
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-155
-100
-63
-62
-63
-61
-51
-62
-63
-77
-85
-81
-77
-85
-81
-51
-62
-63
-62
-63
-61
-155
-100
-63
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-199
-115
-54
-56
-64
-60
-120
-114
-108
-255
-215
-190
-217
-187
-166
-43
-57
-62
-125
-90
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-106
-82
-65
-48
-58
-59
-63
-74
-74
-84
-85
-82
-70
-79
-77
-43
-57
-62
-95
-78
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-172
-150
-134
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-248
-180
-134
-236
-186
-153
-63
-74
-74
-95
-78
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-51
-62
-63
-55
-66
-67
-84
-85
-82
-70
-79
-77
-41
-58
-57
-81
-73
-62
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-255
-215
-190
-194
-173
-157
-58
-69
-70
-62
-63
-61
-106
-82
-65
-95
-78
-64
-51
-62
-63
-91
-92
-89
-238
-205
-179
-161
-144
-134
-48
-58
-59
-183
-110
-59
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-125
-52
-173
-106
-60
-65
-67
-64
-48
-58
-59
-77
-85
-81
-84
-85
-82
-55
-66
-67
-56
-64
-60
-146
-97
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-69
-69
-61
-101
-100
-92
-227
-196
-175
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-250
-197
-158
-252
-185
-144
-249
-174
-124
-249
-174
-124
-250
-176
-132
-251
-192
-154
-120
-114
-108
-62
-63
-61
-209
-117
-53
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-188
-112
-56
-76
-70
-64
-41
-58
-57
-77
-85
-81
-84
-85
-82
-58
-69
-70
-48
-58
-59
-125
-90
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-247
-103
-7
-247
-103
-7
-247
-111
-26
-247
-118
-39
-247
-130
-53
-250
-139
-73
-246
-156
-93
-249
-174
-124
-203
-161
-131
-55
-48
-48
-24
-22
-23
-35
-31
-30
-85
-71
-43
-137
-110
-49
-152
-119
-47
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-59
-50
-39
-35
-31
-30
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-224
-207
-180
-253
-255
-252
-253
-255
-252
-253
-255
-252
-146
-135
-124
-65
-58
-56
-35
-31
-30
-24
-22
-23
-24
-22
-23
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-83
-53
-42
-236
-108
-29
-236
-108
-29
-226
-110
-35
-94
-60
-47
-65
-58
-56
-253
-212
-188
-255
-215
-190
-238
-205
-179
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-145
-114
-49
-105
-93
-60
-83
-78
-61
-83
-78
-61
-111
-94
-57
-158
-125
-46
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-88
-82
-59
-51
-62
-63
-217
-187
-166
-255
-215
-190
-176
-156
-141
-43
-57
-62
-105
-93
-60
-171
-129
-45
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-137
-110
-49
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-105
-93
-60
-152
-119
-47
-171
-129
-45
-168
-127
-42
-158
-125
-46
-171
-129
-45
-129
-106
-52
-48
-58
-59
-194
-173
-157
-207
-178
-158
-43
-57
-62
-100
-89
-56
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-152
-119
-47
-111
-94
-57
-83
-78
-61
-83
-78
-61
-105
-93
-60
-145
-114
-49
-168
-127
-42
-161
-127
-40
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-245
-212
-186
-77
-85
-81
-75
-74
-61
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-95
-87
-59
-81
-73
-62
-95
-87
-59
-123
-102
-54
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-56
-64
-60
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-161
-144
-134
-48
-58
-59
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-129
-106
-52
-88
-82
-59
-69
-69
-61
-62
-63
-61
-63
-69
-60
-75
-74
-61
-117
-98
-55
-152
-119
-47
-171
-129
-45
-161
-127
-40
-158
-125
-46
-171
-129
-45
-111
-94
-57
-48
-58
-59
-227
-196
-175
-176
-156
-141
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-163
-104
-61
-112
-85
-63
-95
-78
-64
-118
-86
-65
-173
-106
-60
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-183
-110
-59
-51
-62
-63
-133
-120
-107
-255
-215
-190
-255
-215
-190
-217
-187
-166
-51
-62
-63
-106
-82
-65
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-199
-115
-54
-135
-94
-64
-95
-78
-64
-95
-78
-64
-135
-94
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-106
-82
-65
-51
-62
-63
-217
-187
-166
-255
-215
-190
-255
-215
-190
-120
-114
-108
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-173
-106
-60
-118
-86
-65
-95
-78
-64
-112
-85
-63
-163
-104
-61
-227
-126
-50
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-101
-100
-92
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-172
-150
-134
-252
-185
-144
-249
-174
-124
-247
-165
-111
-247
-165
-111
-249
-174
-124
-252
-185
-144
-154
-133
-118
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-188
-112
-56
-125
-90
-64
-95
-78
-64
-106
-82
-65
-155
-100
-63
-224
-123
-55
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-137
-127
-115
-253
-212
-188
-91
-92
-89
-69
-69
-61
-194
-112
-58
-234
-126
-45
-234
-126
-45
-163
-104
-61
-51
-62
-63
-137
-127
-115
-238
-205
-179
-63
-74
-74
-89
-75
-66
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-209
-117
-53
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-125
-90
-64
-41
-58
-57
-194
-173
-157
-238
-205
-179
-63
-74
-74
-135
-94
-64
-234
-125
-52
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-251
-192
-154
-250
-176
-132
-251
-168
-115
-247
-165
-111
-249
-174
-124
-245
-179
-138
-195
-157
-134
-41
-58
-57
-135
-94
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-146
-97
-64
-106
-82
-65
-95
-78
-64
-125
-90
-64
-183
-110
-59
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-125
-52
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-249
-152
-92
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-247
-103
-7
-246
-109
-10
-247
-111
-26
-247
-118
-39
-247
-130
-53
-247
-143
-74
-249
-159
-103
-250
-176
-132
-219
-170
-138
-115
-102
-92
-47
-40
-38
-24
-22
-23
-35
-31
-30
-47
-40
-38
-59
-50
-39
-59
-50
-39
-59
-50
-39
-59
-50
-39
-47
-40
-38
-47
-40
-38
-71
-60
-43
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-152
-119
-47
-170
-137
-67
-219
-212
-208
-237
-233
-225
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-219
-212
-208
-152
-147
-147
-109
-106
-99
-65
-67
-64
-35
-31
-30
-35
-31
-30
-35
-31
-30
-35
-31
-30
-24
-22
-23
-94
-60
-47
-178
-86
-46
-109
-63
-45
-35
-31
-30
-124
-111
-99
-251
-209
-178
-251
-209
-178
-234
-204
-183
-76
-78
-76
-95
-87
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-117
-98
-55
-129
-106
-52
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-117
-98
-55
-48
-58
-59
-146
-135
-124
-255
-215
-190
-255
-215
-190
-255
-215
-190
-120
-114
-108
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-152
-119
-47
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-158
-125
-46
-81
-73
-62
-58
-69
-70
-227
-196
-175
-255
-215
-190
-120
-114
-108
-48
-58
-59
-129
-106
-52
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-152
-119
-47
-117
-98
-55
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-88
-82
-59
-84
-85
-82
-255
-215
-190
-176
-156
-141
-48
-58
-59
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-145
-114
-49
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-117
-98
-55
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-63
-69
-60
-137
-127
-115
-255
-215
-190
-238
-205
-179
-91
-92
-89
-56
-64
-60
-137
-110
-49
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-152
-119
-47
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-152
-119
-47
-69
-69
-61
-84
-85
-82
-245
-212
-186
-172
-150
-134
-62
-63
-61
-199
-115
-54
-227
-126
-50
-224
-123
-55
-227
-126
-50
-199
-115
-54
-125
-90
-64
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-234
-125
-52
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-214
-121
-50
-81
-73
-62
-63
-74
-74
-227
-196
-175
-255
-215
-190
-253
-212
-188
-255
-215
-190
-146
-135
-124
-48
-58
-59
-146
-97
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-139
-96
-61
-48
-58
-59
-146
-135
-124
-255
-215
-190
-253
-212
-188
-255
-215
-190
-217
-187
-166
-55
-66
-67
-95
-78
-64
-225
-124
-48
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-163
-104
-61
-183
-110
-59
-227
-126
-50
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-97
-98
-96
-56
-64
-60
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-183
-110
-59
-51
-62
-63
-167
-142
-123
-248
-180
-134
-247
-165
-111
-249
-159
-103
-246
-156
-93
-249
-159
-103
-249
-174
-124
-239
-182
-144
-77
-85
-81
-65
-67
-64
-199
-115
-54
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-135
-94
-64
-188
-112
-56
-227
-126
-50
-224
-123
-55
-227
-126
-50
-209
-117
-53
-65
-67
-64
-146
-135
-124
-227
-196
-175
-43
-57
-62
-146
-97
-64
-234
-126
-45
-224
-123
-55
-224
-123
-55
-234
-126
-45
-106
-82
-65
-70
-79
-77
-253
-212
-188
-176
-156
-141
-41
-58
-57
-125
-90
-64
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-155
-100
-63
-48
-58
-59
-120
-114
-108
-253
-212
-188
-234
-204
-183
-63
-74
-74
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-252
-185
-144
-245
-169
-119
-249
-159
-103
-249
-159
-103
-247
-165
-111
-249
-174
-124
-251
-192
-154
-109
-106
-99
-62
-63
-61
-188
-112
-56
-234
-125
-52
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-234
-125
-52
-227
-126
-50
-234
-125
-52
-227
-126
-50
-227
-126
-50
-212
-120
-56
-199
-115
-54
-224
-123
-55
-224
-123
-55
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-200
-166
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-243
-101
-2
-243
-101
-2
-247
-103
-7
-247
-111
-26
-247
-111
-26
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-250
-176
-132
-251
-192
-154
-207
-178
-158
-154
-133
-118
-82
-69
-65
-24
-22
-23
-71
-60
-43
-101
-83
-47
-101
-83
-47
-101
-83
-47
-117
-98
-55
-145
-114
-49
-171
-129
-45
-168
-127
-42
-160
-120
-43
-160
-120
-43
-158
-125
-46
-192
-155
-91
-237
-233
-225
-81
-77
-76
-55
-48
-48
-74
-68
-68
-81
-77
-76
-89
-84
-82
-91
-92
-89
-89
-84
-82
-81
-77
-76
-65
-58
-56
-47
-40
-38
-35
-31
-30
-55
-48
-48
-115
-102
-92
-172
-150
-134
-55
-48
-48
-24
-22
-23
-24
-22
-23
-24
-22
-23
-65
-58
-56
-230
-173
-136
-251
-192
-154
-250
-197
-158
-250
-200
-166
-84
-85
-82
-88
-82
-59
-171
-129
-45
-158
-125
-46
-158
-125
-46
-171
-129
-45
-83
-78
-61
-69
-69
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-117
-98
-55
-48
-58
-59
-101
-100
-92
-238
-205
-179
-253
-204
-176
-250
-200
-166
-253
-204
-176
-238
-205
-179
-91
-92
-89
-51
-62
-63
-117
-98
-55
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-145
-114
-49
-75
-74
-61
-48
-58
-59
-172
-150
-134
-253
-212
-188
-255
-215
-190
-234
-204
-183
-84
-85
-82
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-81
-73
-62
-63
-69
-60
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-83
-78
-61
-84
-85
-82
-255
-215
-190
-245
-212
-186
-109
-106
-99
-51
-62
-63
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-171
-129
-45
-105
-93
-60
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-137
-127
-115
-58
-69
-70
-111
-94
-57
-171
-129
-45
-158
-125
-46
-158
-125
-46
-158
-125
-46
-62
-63
-61
-137
-127
-115
-255
-215
-190
-255
-215
-190
-227
-196
-175
-77
-85
-81
-56
-64
-60
-129
-106
-52
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-161
-127
-40
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-168
-127
-42
-137
-110
-49
-69
-69
-61
-51
-62
-63
-187
-166
-150
-255
-215
-190
-172
-150
-134
-51
-62
-63
-194
-112
-58
-227
-126
-50
-224
-123
-55
-234
-125
-52
-183
-110
-59
-48
-58
-59
-155
-100
-63
-234
-126
-45
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-125
-52
-209
-117
-53
-89
-75
-66
-48
-58
-59
-187
-166
-150
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-109
-106
-99
-48
-58
-59
-135
-94
-64
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-135
-94
-64
-43
-57
-62
-120
-114
-108
-250
-200
-166
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-41
-58
-57
-106
-82
-65
-214
-121
-50
-234
-125
-52
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-234
-126
-45
-183
-110
-59
-48
-58
-59
-135
-94
-64
-234
-126
-45
-224
-123
-55
-227
-126
-50
-188
-112
-56
-51
-62
-63
-109
-106
-99
-51
-62
-63
-183
-110
-59
-227
-126
-50
-224
-123
-55
-234
-125
-52
-173
-106
-60
-48
-58
-59
-178
-146
-122
-245
-169
-119
-246
-156
-93
-247
-150
-84
-249
-146
-83
-247
-150
-84
-249
-159
-103
-249
-174
-124
-203
-161
-131
-58
-69
-70
-76
-70
-64
-194
-112
-58
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-183
-110
-59
-48
-58
-59
-163
-104
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-209
-117
-53
-62
-63
-61
-146
-135
-124
-217
-187
-166
-43
-57
-62
-163
-104
-61
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-58
-69
-70
-234
-204
-183
-255
-215
-190
-137
-127
-115
-41
-58
-57
-118
-86
-65
-225
-124
-48
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-146
-97
-64
-51
-62
-63
-97
-98
-96
-238
-205
-179
-255
-215
-190
-234
-204
-183
-63
-74
-74
-118
-86
-65
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-81
-73
-62
-101
-100
-92
-250
-176
-132
-247
-165
-111
-246
-156
-93
-249
-152
-92
-249
-159
-103
-251
-168
-115
-252
-185
-144
-217
-187
-166
-58
-69
-70
-69
-69
-61
-199
-115
-54
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-224
-123
-55
-227
-126
-50
-225
-124
-48
-81
-73
-62
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-55
-66
-67
-250
-197
-158
-249
-174
-124
-247
-150
-84
-247
-130
-60
-247
-118
-39
-247
-111
-26
-247
-103
-7
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-247
-123
-41
-247
-130
-60
-243
-141
-78
-249
-159
-103
-249
-174
-124
-249
-189
-146
-253
-204
-176
-124
-111
-99
-35
-31
-30
-145
-114
-49
-175
-132
-40
-171
-129
-45
-168
-127
-42
-192
-155
-91
-216
-194
-154
-224
-207
-180
-224
-207
-180
-216
-194
-154
-216
-194
-154
-239
-227
-208
-253
-255
-252
-253
-255
-252
-186
-181
-179
-146
-135
-124
-120
-114
-108
-109
-106
-99
-95
-78
-64
-71
-60
-43
-85
-71
-43
-101
-83
-47
-108
-87
-46
-35
-31
-30
-150
-125
-114
-227
-196
-175
-255
-215
-190
-253
-212
-188
-212
-173
-150
-121
-100
-85
-95
-78
-64
-129
-102
-78
-234
-168
-124
-250
-176
-132
-250
-176
-132
-248
-180
-134
-249
-189
-146
-124
-111
-99
-62
-63
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-145
-114
-49
-56
-64
-60
-43
-57
-62
-83
-78
-61
-152
-119
-47
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-152
-119
-47
-95
-87
-59
-48
-58
-59
-101
-100
-92
-236
-186
-153
-251
-192
-154
-252
-185
-144
-248
-180
-134
-245
-179
-138
-249
-189
-146
-236
-186
-153
-101
-100
-92
-48
-58
-59
-88
-82
-59
-137
-110
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-168
-127
-42
-145
-114
-49
-100
-89
-56
-56
-64
-60
-58
-69
-70
-172
-150
-134
-250
-200
-166
-251
-192
-154
-250
-197
-158
-250
-200
-166
-217
-187
-166
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-152
-119
-47
-83
-78
-61
-43
-57
-62
-48
-58
-59
-129
-106
-52
-175
-132
-40
-171
-129
-45
-158
-125
-46
-63
-69
-60
-120
-114
-108
-255
-215
-190
-255
-215
-190
-227
-196
-175
-84
-85
-82
-51
-62
-63
-105
-93
-60
-158
-125
-46
-171
-129
-45
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-158
-125
-46
-105
-93
-60
-48
-58
-59
-48
-58
-59
-129
-106
-52
-168
-127
-42
-158
-125
-46
-168
-127
-42
-145
-114
-49
-51
-62
-63
-172
-150
-134
-91
-92
-89
-75
-74
-61
-168
-127
-42
-171
-129
-45
-175
-132
-40
-117
-98
-55
-48
-58
-59
-176
-156
-141
-253
-204
-176
-253
-204
-176
-253
-204
-176
-217
-187
-166
-84
-85
-82
-48
-58
-59
-95
-87
-59
-145
-114
-49
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-171
-129
-45
-158
-125
-46
-137
-110
-49
-95
-87
-59
-51
-62
-63
-70
-79
-77
-187
-166
-150
-251
-209
-178
-251
-209
-178
-207
-178
-158
-43
-57
-62
-135
-94
-64
-238
-123
-45
-234
-126
-45
-234
-126
-45
-118
-86
-65
-35
-56
-60
-56
-64
-60
-155
-100
-63
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-227
-126
-50
-163
-104
-61
-76
-70
-64
-51
-62
-63
-167
-142
-123
-251
-192
-154
-248
-180
-134
-249
-174
-124
-249
-174
-124
-250
-176
-132
-245
-179
-138
-236
-186
-153
-109
-106
-99
-41
-58
-57
-95
-78
-64
-183
-110
-59
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-227
-126
-50
-183
-110
-59
-95
-78
-64
-43
-57
-62
-124
-111
-99
-236
-186
-153
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-248
-180
-134
-251
-192
-154
-154
-133
-118
-43
-57
-62
-81
-73
-62
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-125
-52
-155
-100
-63
-56
-64
-60
-35
-56
-60
-89
-75
-66
-227
-126
-50
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-176
-156
-141
-58
-69
-70
-118
-86
-65
-234
-126
-45
-234
-126
-45
-234
-126
-45
-112
-85
-63
-43
-57
-62
-210
-156
-119
-245
-162
-103
-247
-150
-84
-247
-143
-74
-248
-138
-64
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-195
-157
-134
-58
-69
-70
-65
-67
-64
-155
-100
-63
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-126
-45
-173
-106
-60
-65
-67
-64
-35
-56
-60
-106
-82
-65
-234
-126
-45
-234
-126
-45
-238
-128
-40
-146
-97
-64
-43
-57
-62
-187
-166
-150
-234
-204
-183
-55
-66
-67
-106
-82
-65
-234
-126
-45
-234
-125
-52
-234
-125
-52
-224
-123
-55
-81
-73
-62
-91
-92
-89
-245
-212
-186
-253
-212
-188
-253
-212
-188
-137
-127
-115
-41
-58
-57
-89
-75
-66
-173
-106
-60
-227
-126
-50
-234
-126
-45
-227
-126
-50
-227
-126
-50
-227
-126
-50
-234
-125
-52
-234
-126
-45
-234
-125
-52
-194
-112
-58
-106
-82
-65
-43
-57
-62
-101
-100
-92
-227
-196
-175
-251
-209
-178
-251
-209
-178
-253
-212
-188
-97
-98
-96
-69
-69
-61
-209
-117
-53
-234
-126
-45
-238
-128
-40
-173
-106
-60
-51
-62
-63
-139
-115
-96
-251
-168
-115
-246
-156
-93
-247
-150
-84
-249
-146
-83
-249
-152
-92
-247
-165
-111
-248
-180
-134
-250
-200
-166
-187
-166
-150
-55
-66
-67
-69
-69
-61
-163
-104
-61
-234
-125
-52
-234
-126
-45
-234
-125
-52
-227
-126
-50
-227
-126
-50
-234
-126
-45
-234
-126
-45
-199
-115
-54
-95
-78
-64
-35
-56
-60
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-139
-96
-61
-51
-62
-63
-250
-197
-158
-245
-169
-119
-247
-150
-84
-247
-130
-60
-247
-118
-39
-235
-107
-16
-243
-101
-2
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-237
-95
-0
-243
-101
-2
-247
-103
-7
-236
-102
-14
-247
-111
-26
-246
-116
-28
-238
-123
-45
-241
-132
-59
-247
-143
-74
-246
-156
-93
-245
-169
-119
-230
-173
-136
-47
-40
-38
-59
-50
-39
-168
-127
-42
-161
-127
-40
-160
-120
-43
-192
-155
-91
-255
-238
-227
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-253
-255
-252
-239
-227
-208
-170
-137
-67
-171
-129
-45
-171
-129
-45
-171
-129
-45
-59
-50
-39
-154
-133
-118
-250
-200
-166
-250
-197
-158
-249
-189
-146
-248
-180
-134
-249
-174
-124
-247
-165
-111
-247
-165
-111
-245
-162
-103
-249
-159
-103
-245
-162
-103
-247
-165
-111
-249
-174
-124
-203
-161
-131
-55
-66
-67
-69
-69
-61
-111
-94
-57
-105
-93
-60
-69
-69
-61
-63
-74
-74
-137
-127
-115
-51
-62
-63
-62
-63
-61
-95
-87
-59
-129
-106
-52
-137
-110
-49
-137
-110
-49
-123
-102
-54
-95
-87
-59
-62
-63
-61
-51
-62
-63
-133
-120
-107
-239
-182
-144
-248
-180
-134
-245
-169
-119
-247
-165
-111
-249
-159
-103
-245
-162
-103
-251
-168
-115
-250
-176
-132
-239
-182
-144
-154
-133
-118
-63
-74
-74
-51
-62
-63
-75
-74
-61
-105
-93
-60
-123
-102
-54
-137
-110
-49
-137
-110
-49
-137
-110
-49
-123
-102
-54
-100
-89
-56
-75
-74
-61
-56
-64
-60
-55
-66
-67
-124
-111
-99
-219
-170
-138
-252
-185
-144
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-236
-186
-153
-124
-111
-99
-48
-58
-59
-63
-69
-60
-95
-87
-59
-123
-102
-54
-137
-110
-49
-137
-110
-49
-129
-106
-52
-95
-87
-59
-62
-63
-61
-55
-66
-67
-146
-135
-124
-77
-85
-81
-61
-67
-58
-105
-93
-60
-111
-94
-57
-75
-74
-61
-48
-58
-59
-194
-173
-157
-255
-215
-190
-255
-215
-190
-255
-215
-190
-234
-204
-183
-120
-114
-108
-43
-57
-62
-69
-69
-61
-100
-89
-56
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-105
-93
-60
-69
-69
-61
-48
-58
-59
-77
-85
-81
-51
-62
-63
-137
-110
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-137
-110
-49
-51
-62
-63
-187
-166
-150
-187
-166
-150
-48
-58
-59
-75
-74
-61
-111
-94
-57
-95
-87
-59
-56
-64
-60
-99
-90
-79
-239
-182
-144
-252
-185
-144
-245
-179
-138
-252
-185
-144
-249
-189
-146
-236
-186
-153
-137
-127
-115
-55
-66
-67
-56
-64
-60
-83
-78
-61
-111
-94
-57
-129
-106
-52
-137
-110
-49
-137
-110
-49
-129
-106
-52
-117
-98
-55
-95
-87
-59
-69
-69
-61
-51
-62
-63
-63
-74
-74
-133
-120
-107
-236
-186
-153
-250
-197
-158
-251
-192
-154
-251
-192
-154
-250
-197
-158
-124
-111
-99
-51
-62
-63
-112
-85
-63
-146
-97
-64
-106
-82
-65
-48
-58
-59
-120
-114
-108
-101
-100
-92
-48
-58
-59
-95
-78
-64
-146
-97
-64
-183
-110
-59
-188
-112
-56
-173
-106
-60
-139
-96
-61
-89
-75
-66
-48
-58
-59
-77
-85
-81
-186
-157
-134
-245
-179
-138
-245
-169
-119
-245
-162
-103
-246
-156
-93
-246
-156
-93
-246
-156
-93
-247
-165
-111
-249
-174
-124
-249
-189
-146
-154
-133
-118
-58
-69
-70
-51
-62
-63
-95
-78
-64
-139
-96
-61
-173
-106
-60
-183
-110
-59
-183
-110
-59
-173
-106
-60
-139
-96
-61
-95
-78
-64
-51
-62
-63
-63
-74
-74
-167
-142
-123
-249
-189
-146
-249
-174
-124
-247
-165
-111
-246
-156
-93
-246
-156
-93
-246
-156
-93
-245
-162
-103
-245
-169
-119
-245
-179
-138
-178
-146
-122
-70
-79
-77
-48
-58
-59
-89
-75
-66
-139
-96
-61
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-95
-78
-64
-48
-58
-59
-101
-100
-92
-146
-135
-124
-48
-58
-59
-95
-78
-64
-146
-97
-64
-125
-90
-64
-62
-63
-61
-101
-100
-92
-245
-212
-186
-137
-127
-115
-48
-58
-59
-106
-82
-65
-146
-97
-64
-106
-82
-65
-48
-58
-59
-124
-111
-99
-247
-165
-111
-247
-150
-84
-241
-138
-68
-241
-132
-59
-247
-130
-53
-247
-130
-53
-242
-133
-67
-241
-145
-79
-245
-162
-103
-250
-176
-132
-203
-161
-131
-91
-92
-89
-43
-57
-62
-81
-73
-62
-135
-94
-64
-173
-106
-60
-188
-112
-56
-183
-110
-59
-155
-100
-63
-106
-82
-65
-51
-62
-63
-91
-92
-89
-133
-120
-107
-48
-58
-59
-95
-78
-64
-146
-97
-64
-118
-86
-65
-56
-64
-60
-101
-100
-92
-245
-212
-186
-253
-212
-188
-146
-135
-124
-48
-58
-59
-118
-86
-65
-183
-110
-59
-173
-106
-60
-95
-78
-64
-43
-57
-62
-186
-157
-134
-250
-197
-158
-251
-192
-154
-250
-197
-158
-250
-200
-166
-172
-150
-134
-70
-79
-77
-48
-58
-59
-89
-75
-66
-135
-94
-64
-163
-104
-61
-183
-110
-59
-183
-110
-59
-173
-106
-60
-146
-97
-64
-95
-78
-64
-56
-64
-60
-55
-66
-67
-150
-125
-114
-236
-186
-153
-251
-192
-154
-249
-189
-146
-249
-189
-146
-251
-192
-154
-195
-157
-134
-51
-62
-63
-76
-70
-64
-139
-96
-61
-125
-90
-64
-65
-67
-64
-76
-78
-76
-234
-168
-124
-249
-159
-103
-247
-150
-84
-243
-141
-78
-247
-143
-74
-247
-150
-84
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-207
-178
-158
-84
-85
-82
-48
-58
-59
-89
-75
-66
-146
-97
-64
-173
-106
-60
-183
-110
-59
-183
-110
-59
-163
-104
-61
-118
-86
-65
-62
-63
-61
-58
-69
-70
-63
-74
-74
-81
-73
-62
-227
-126
-50
-227
-126
-50
-224
-123
-55
-234
-126
-45
-135
-94
-64
-58
-69
-70
-251
-192
-154
-245
-169
-119
-249
-146
-83
-247
-130
-53
-238
-116
-34
-235
-107
-16
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-246
-97
-3
-246
-97
-3
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-243
-101
-2
-236
-102
-14
-236
-102
-14
-235
-107
-16
-246
-116
-28
-239
-117
-44
-241
-132
-59
-247
-143
-74
-249
-152
-92
-214
-151
-109
-118
-86
-65
-146
-111
-88
-192
-155
-91
-192
-155
-91
-195
-167
-113
-239
-227
-208
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-255
-238
-227
-216
-194
-154
-192
-155
-91
-192
-155
-91
-192
-155
-91
-146
-111
-88
-162
-125
-96
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-246
-156
-93
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-145
-79
-247
-150
-84
-249
-159
-103
-245
-169
-119
-187
-140
-108
-89
-84
-82
-48
-58
-59
-48
-58
-59
-91
-92
-89
-194
-173
-157
-255
-215
-190
-207
-178
-158
-109
-106
-99
-51
-62
-63
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-124
-111
-99
-203
-161
-131
-248
-180
-134
-245
-169
-119
-249
-159
-103
-247
-150
-84
-243
-141
-78
-243
-141
-78
-243
-141
-78
-247
-150
-84
-249
-159
-103
-245
-169
-119
-248
-180
-134
-219
-170
-138
-154
-133
-118
-84
-85
-82
-51
-62
-63
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-55
-66
-67
-91
-92
-89
-154
-133
-118
-209
-171
-139
-245
-179
-138
-249
-174
-124
-247
-165
-111
-249
-159
-103
-246
-156
-93
-246
-156
-93
-249
-159
-103
-247
-165
-111
-249
-174
-124
-252
-185
-144
-195
-157
-134
-109
-106
-99
-55
-66
-67
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-51
-62
-63
-109
-106
-99
-207
-178
-158
-255
-215
-190
-217
-187
-166
-91
-92
-89
-51
-62
-63
-48
-58
-59
-76
-78
-76
-172
-150
-134
-253
-212
-188
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-255
-215
-190
-194
-173
-157
-101
-100
-92
-51
-62
-63
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-48
-58
-59
-97
-98
-96
-194
-173
-157
-146
-135
-124
-56
-64
-60
-145
-114
-49
-168
-127
-42
-158
-125
-46
-168
-127
-42
-129
-106
-52
-48
-58
-59
-194
-173
-157
-255
-215
-190
-176
-156
-141
-76
-78
-76
-48
-58
-59
-55
-66
-67
-115
-102
-92
-234
-168
-124
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-209
-171
-139
-144
-125
-110
-76
-78
-76
-48
-58
-59
-48
-58
-59
-51
-62
-63
-51
-62
-63
-48
-58
-59
-48
-58
-59
-58
-69
-70
-101
-100
-92
-154
-133
-118
-219
-170
-138
-252
-185
-144
-248
-180
-134
-249
-174
-124
-245
-169
-119
-249
-174
-124
-250
-176
-132
-230
-173
-136
-124
-111
-99
-55
-66
-67
-43
-57
-62
-58
-69
-70
-137
-127
-115
-245
-212
-186
-245
-212
-186
-161
-144
-134
-70
-79
-77
-43
-57
-62
-51
-62
-63
-51
-62
-63
-48
-58
-59
-43
-57
-62
-84
-85
-82
-154
-133
-118
-240
-181
-138
-249
-174
-124
-247
-165
-111
-249
-152
-92
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-138
-68
-241
-145
-79
-246
-156
-93
-247
-165
-111
-250
-176
-132
-219
-170
-138
-144
-125
-110
-77
-85
-81
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-77
-85
-81
-150
-125
-114
-219
-170
-138
-250
-176
-132
-247
-165
-111
-246
-156
-93
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-249
-152
-92
-247
-165
-111
-250
-176
-132
-230
-173
-136
-154
-133
-118
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-161
-144
-134
-245
-212
-186
-255
-215
-190
-161
-144
-134
-63
-74
-74
-43
-57
-62
-51
-62
-63
-109
-106
-99
-217
-187
-166
-251
-209
-178
-238
-205
-179
-137
-127
-115
-58
-69
-70
-43
-57
-62
-58
-69
-70
-139
-115
-96
-238
-159
-107
-249
-152
-92
-241
-138
-68
-247
-130
-53
-238
-123
-45
-239
-117
-44
-247
-118
-39
-238
-123
-45
-241
-132
-59
-241
-145
-79
-249
-159
-103
-249
-174
-124
-240
-181
-138
-167
-142
-123
-91
-92
-89
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-63
-74
-74
-137
-127
-115
-234
-204
-183
-255
-215
-190
-146
-135
-124
-63
-74
-74
-43
-57
-62
-51
-62
-63
-115
-102
-92
-236
-186
-153
-251
-192
-154
-251
-192
-154
-236
-186
-153
-133
-120
-107
-43
-57
-62
-48
-58
-59
-48
-58
-59
-55
-66
-67
-158
-130
-108
-248
-180
-134
-250
-176
-132
-249
-174
-124
-249
-174
-124
-250
-176
-132
-252
-185
-144
-239
-182
-144
-154
-133
-118
-84
-85
-82
-43
-57
-62
-48
-58
-59
-48
-58
-59
-51
-62
-63
-48
-58
-59
-43
-57
-62
-70
-79
-77
-133
-120
-107
-219
-170
-138
-245
-179
-138
-250
-176
-132
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-187
-140
-108
-81
-77
-76
-43
-57
-62
-43
-57
-62
-99
-90
-79
-214
-151
-109
-249
-159
-103
-247
-150
-84
-247
-143
-74
-241
-138
-68
-241
-138
-68
-249
-146
-83
-249
-159
-103
-250
-176
-132
-250
-197
-158
-255
-215
-190
-255
-215
-190
-245
-212
-186
-161
-144
-134
-77
-85
-81
-43
-57
-62
-48
-58
-59
-51
-62
-63
-48
-58
-59
-41
-58
-57
-55
-66
-67
-120
-114
-108
-217
-187
-166
-97
-98
-96
-95
-78
-64
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-112
-85
-63
-70
-79
-77
-249
-189
-146
-247
-165
-111
-243
-141
-78
-247
-130
-53
-238
-116
-34
-236
-102
-14
-243
-101
-2
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-250
-176
-132
-245
-179
-138
-252
-185
-144
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-249
-189
-146
-252
-185
-144
-245
-179
-138
-250
-176
-132
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-86
-249
-159
-103
-238
-159
-107
-210
-156
-119
-210
-156
-119
-240
-181
-138
-249
-189
-146
-251
-192
-154
-251
-192
-154
-250
-197
-158
-212
-173
-150
-186
-157
-134
-167
-142
-123
-167
-142
-123
-195
-157
-134
-219
-170
-138
-248
-180
-134
-245
-169
-119
-245
-162
-103
-247
-150
-84
-243
-141
-78
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-247
-150
-84
-245
-162
-103
-245
-169
-119
-250
-176
-132
-239
-182
-144
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-172
-150
-134
-195
-157
-134
-219
-170
-138
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-145
-79
-241
-153
-96
-247
-165
-111
-249
-174
-124
-245
-179
-138
-219
-170
-138
-186
-157
-134
-167
-142
-123
-167
-142
-123
-186
-157
-134
-212
-173
-150
-250
-197
-158
-251
-192
-154
-251
-192
-154
-249
-189
-146
-239
-182
-144
-219
-170
-138
-219
-170
-138
-239
-182
-144
-250
-197
-158
-250
-200
-166
-251
-209
-178
-238
-205
-179
-172
-150
-134
-137
-127
-115
-161
-144
-134
-217
-187
-166
-253
-212
-188
-227
-196
-175
-194
-173
-157
-176
-156
-141
-172
-150
-134
-187
-166
-150
-217
-187
-166
-255
-215
-190
-245
-212
-186
-76
-78
-76
-75
-74
-61
-158
-125
-46
-158
-125
-46
-158
-125
-46
-171
-129
-45
-105
-93
-60
-58
-69
-70
-217
-187
-166
-255
-215
-190
-253
-204
-176
-236
-186
-153
-210
-156
-119
-210
-156
-119
-247
-165
-111
-249
-159
-103
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-145
-79
-247
-150
-84
-241
-153
-96
-245
-162
-103
-245
-169
-119
-248
-180
-134
-239
-182
-144
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-195
-157
-134
-230
-173
-136
-239
-182
-144
-250
-176
-132
-245
-169
-119
-247
-165
-111
-249
-159
-103
-241
-153
-96
-249
-152
-92
-249
-152
-92
-241
-153
-96
-245
-162
-103
-247
-165
-111
-210
-156
-119
-210
-156
-119
-230
-173
-136
-249
-189
-146
-249
-189
-146
-251
-192
-154
-250
-197
-158
-236
-186
-153
-203
-161
-131
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-240
-181
-138
-249
-174
-124
-247
-165
-111
-241
-153
-96
-243
-141
-78
-242
-133
-67
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-249
-159
-103
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-186
-157
-134
-209
-171
-139
-240
-181
-138
-250
-176
-132
-245
-169
-119
-249
-159
-103
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-247
-130
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-247
-165
-111
-250
-176
-132
-240
-181
-138
-203
-161
-131
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-251
-192
-154
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-203
-161
-131
-219
-170
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-245
-179
-138
-248
-180
-134
-234
-168
-124
-214
-151
-109
-214
-151
-109
-245
-162
-103
-241
-145
-86
-241
-138
-68
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-243
-141
-78
-241
-153
-96
-247
-165
-111
-249
-174
-124
-240
-181
-138
-209
-171
-139
-178
-146
-122
-167
-142
-123
-167
-142
-123
-195
-157
-134
-236
-186
-153
-250
-197
-158
-251
-192
-154
-249
-189
-146
-249
-189
-146
-230
-173
-136
-210
-156
-119
-210
-156
-119
-250
-176
-132
-249
-174
-124
-249
-174
-124
-249
-174
-124
-249
-174
-124
-250
-176
-132
-210
-156
-119
-162
-125
-96
-162
-125
-96
-214
-151
-109
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-159
-103
-247
-165
-111
-245
-169
-119
-250
-176
-132
-240
-181
-138
-209
-171
-139
-186
-157
-134
-167
-142
-123
-167
-142
-123
-178
-146
-122
-203
-161
-131
-239
-182
-144
-248
-180
-134
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-86
-241
-145
-86
-247
-150
-84
-241
-153
-96
-245
-162
-103
-238
-159
-107
-204
-141
-99
-214
-151
-109
-241
-153
-96
-249
-152
-92
-243
-141
-78
-242
-133
-67
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-145
-79
-245
-162
-103
-248
-180
-134
-212
-173
-150
-146
-135
-124
-137
-127
-115
-176
-156
-141
-234
-204
-183
-253
-212
-188
-217
-187
-166
-187
-166
-150
-172
-150
-134
-176
-156
-141
-194
-173
-157
-234
-204
-183
-255
-215
-190
-194
-173
-157
-43
-57
-62
-139
-96
-61
-234
-126
-45
-224
-123
-55
-227
-126
-50
-227
-126
-50
-89
-75
-66
-101
-100
-92
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-79
-249
-152
-92
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-250
-176
-132
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-249
-152
-92
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-169
-119
-249
-174
-124
-245
-179
-138
-251
-192
-154
-232
-190
-161
-101
-100
-92
-51
-62
-63
-63
-69
-60
-51
-62
-63
-55
-66
-67
-109
-106
-99
-176
-156
-141
-234
-204
-183
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-207
-178
-158
-91
-92
-89
-51
-62
-63
-129
-106
-52
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-75
-74
-61
-91
-92
-89
-245
-212
-186
-250
-200
-166
-252
-185
-144
-249
-174
-124
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-247
-165
-111
-245
-169
-119
-249
-174
-124
-250
-176
-132
-250
-176
-132
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-145
-79
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-241
-153
-96
-245
-162
-103
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-245
-162
-103
-241
-153
-96
-241
-145
-79
-241
-138
-68
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-162
-103
-241
-153
-96
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-138
-68
-241
-145
-86
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-132
-59
-238
-123
-53
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-79
-241
-153
-96
-245
-162
-103
-247
-165
-111
-245
-169
-119
-245
-169
-119
-249
-174
-124
-245
-169
-119
-245
-169
-119
-245
-169
-119
-245
-169
-119
-247
-165
-111
-247
-165
-111
-245
-162
-103
-245
-162
-103
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-169
-119
-249
-174
-124
-249
-174
-124
-249
-174
-124
-245
-169
-119
-247
-165
-111
-241
-153
-96
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-242
-133
-67
-241
-145
-86
-247
-165
-111
-210
-156
-119
-63
-74
-74
-62
-63
-61
-69
-69
-61
-48
-58
-59
-63
-74
-74
-133
-120
-107
-194
-173
-157
-245
-212
-186
-255
-215
-190
-255
-215
-190
-255
-215
-190
-245
-212
-186
-176
-156
-141
-55
-66
-67
-76
-70
-64
-212
-120
-56
-227
-126
-50
-224
-123
-55
-234
-125
-52
-194
-112
-58
-56
-64
-60
-154
-133
-118
-250
-176
-132
-241
-153
-96
-242
-133
-67
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-242
-133
-67
-241
-138
-68
-243
-141
-78
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-249
-152
-92
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-153
-96
-245
-162
-103
-245
-169
-119
-245
-179
-138
-144
-125
-110
-51
-62
-63
-117
-98
-55
-158
-125
-46
-145
-114
-49
-105
-93
-60
-69
-69
-61
-48
-58
-59
-58
-69
-70
-91
-92
-89
-120
-114
-108
-120
-114
-108
-91
-92
-89
-48
-58
-59
-56
-64
-60
-123
-102
-54
-171
-129
-45
-158
-125
-46
-158
-125
-46
-168
-127
-42
-137
-110
-49
-48
-58
-59
-161
-144
-134
-250
-197
-158
-248
-180
-134
-247
-165
-111
-241
-153
-96
-241
-145
-79
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-249
-152
-92
-241
-153
-96
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-138
-68
-241
-138
-68
-243
-141
-78
-241
-145
-79
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-242
-133
-67
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-45
-239
-117
-44
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-238
-123
-45
-241
-132
-59
-242
-133
-67
-243
-141
-78
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-241
-145
-79
-243
-141
-78
-243
-141
-78
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-238
-123
-45
-238
-123
-53
-242
-133
-67
-241
-138
-68
-241
-145
-79
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-86
-241
-145
-79
-243
-141
-78
-243
-141
-78
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-242
-133
-67
-242
-133
-67
-241
-138
-68
-241
-138
-68
-241
-138
-68
-241
-138
-68
-242
-133
-67
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-138
-68
-243
-141
-78
-241
-145
-86
-241
-145
-86
-241
-153
-96
-241
-153
-96
-241
-145
-86
-241
-145
-86
-243
-141
-78
-241
-138
-68
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-53
-242
-133
-67
-241
-145
-86
-238
-159
-107
-84
-85
-82
-69
-69
-61
-188
-112
-56
-214
-121
-50
-173
-106
-60
-112
-85
-63
-62
-63
-61
-41
-58
-57
-63
-74
-74
-97
-98
-96
-120
-114
-108
-109
-106
-99
-77
-85
-81
-41
-58
-57
-81
-73
-62
-194
-112
-58
-234
-125
-52
-224
-123
-55
-224
-123
-55
-234
-126
-45
-125
-90
-64
-51
-62
-63
-209
-171
-139
-245
-169
-119
-241
-145
-86
-241
-132
-59
-238
-116
-34
-235
-107
-16
-236
-102
-14
-235
-94
-9
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-237
-95
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-138
-68
-241
-145
-86
-238
-159
-107
-234
-168
-124
-84
-85
-82
-83
-78
-61
-171
-129
-45
-158
-125
-46
-168
-127
-42
-168
-127
-42
-158
-125
-46
-129
-106
-52
-100
-89
-56
-83
-78
-61
-75
-74
-61
-69
-69
-61
-83
-78
-61
-105
-93
-60
-152
-119
-47
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-75
-74
-61
-63
-74
-74
-236
-186
-153
-245
-179
-138
-238
-159
-107
-241
-145
-86
-241
-138
-68
-241
-132
-59
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-53
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-53
-238
-123
-53
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-238
-123
-45
-239
-117
-44
-239
-117
-44
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-239
-117
-44
-238
-123
-45
-238
-123
-53
-238
-123
-53
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-241
-132
-59
-238
-123
-53
-238
-123
-45
-239
-117
-44
-238
-116
-34
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-123
-45
-241
-132
-59
-241
-145
-86
-204
-141
-99
-41
-58
-57
-155
-100
-63
-234
-126
-45
-227
-126
-50
-227
-126
-50
-234
-125
-52
-209
-117
-53
-155
-100
-63
-118
-86
-65
-89
-75
-66
-81
-73
-62
-81
-73
-62
-106
-82
-65
-155
-100
-63
-214
-121
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-194
-112
-58
-56
-64
-60
-109
-106
-99
-245
-179
-138
-245
-162
-103
-241
-138
-68
-238
-123
-45
-235
-113
-30
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-123
-45
-238
-123
-53
-241
-138
-68
-241
-145
-86
-238
-159
-107
-89
-84
-82
-75
-74
-61
-168
-127
-42
-168
-127
-42
-158
-125
-46
-158
-125
-46
-161
-127
-40
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-95
-87
-59
-48
-58
-59
-167
-142
-123
-245
-179
-138
-238
-159
-107
-241
-145
-86
-242
-133
-67
-238
-123
-45
-238
-116
-34
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-239
-117
-44
-239
-117
-44
-239
-117
-44
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-113
-30
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-235
-113
-30
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-113
-30
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-238
-116
-34
-235
-113
-30
-236
-108
-29
-236
-108
-29
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-236
-108
-29
-236
-108
-29
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-108
-29
-235
-113
-30
-239
-117
-44
-241
-132
-59
-241
-145
-79
-204
-141
-99
-48
-58
-59
-139
-96
-61
-234
-126
-45
-224
-123
-55
-224
-123
-55
-224
-123
-55
-227
-126
-50
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-126
-45
-234
-126
-45
-227
-126
-50
-224
-123
-55
-224
-123
-55
-234
-125
-52
-214
-121
-50
-81
-73
-62
-58
-69
-70
-219
-170
-138
-245
-169
-119
-241
-145
-86
-241
-132
-59
-239
-117
-44
-236
-108
-29
-236
-102
-14
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-229
-102
-7
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-229
-102
-7
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-236
-108
-29
-239
-117
-44
-234
-125
-52
-231
-136
-72
-241
-153
-96
-162
-125
-96
-48
-58
-59
-95
-87
-59
-158
-125
-46
-171
-129
-45
-168
-127
-42
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-158
-125
-46
-168
-127
-42
-171
-129
-45
-158
-125
-46
-95
-87
-59
-48
-58
-59
-124
-111
-99
-245
-179
-138
-247
-165
-111
-241
-145
-86
-241
-132
-59
-238
-123
-45
-238
-116
-34
-236
-108
-29
-224
-98
-18
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-230
-97
-5
-230
-97
-5
-235
-94
-9
-230
-97
-5
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-224
-98
-18
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-235
-94
-9
-235
-94
-9
-229
-102
-7
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-235
-107
-16
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-224
-98
-18
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-236
-102
-14
-235
-94
-9
-230
-97
-5
-235
-94
-9
-235
-94
-9
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-235
-94
-9
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-224
-98
-18
-236
-102
-14
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-236
-102
-14
-224
-98
-18
-236
-102
-14
-236
-102
-14
-236
-102
-14
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-236
-102
-14
-236
-102
-14
-224
-98
-18
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-235
-107
-16
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-235
-94
-9
-230
-97
-5
-235
-94
-9
-236
-102
-14
-236
-102
-14
-236
-102
-14
-229
-102
-7
-230
-97
-5
-229
-102
-7
-224
-98
-18
-236
-108
-29
-238
-116
-34
-238
-123
-53
-243
-141
-78
-241
-153
-96
-99
-90
-79
-56
-64
-60
-155
-100
-63
-234
-126
-45
-234
-126
-45
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-227
-126
-50
-224
-123
-55
-224
-123
-55
-227
-126
-50
-227
-126
-50
-234
-126
-45
-194
-112
-58
-81
-73
-62
-48
-58
-59
-178
-146
-122
-249
-174
-124
-241
-153
-96
-231
-136
-72
-234
-125
-52
-238
-116
-34
-235
-107
-16
-229
-102
-7
-235
-94
-9
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-236
-102
-14
-235
-113
-30
-239
-117
-44
-230
-128
-60
-236
-147
-85
-238
-159
-107
-139
-115
-96
-48
-58
-59
-69
-69
-61
-111
-94
-57
-145
-114
-49
-158
-125
-46
-168
-127
-42
-171
-129
-45
-168
-127
-42
-168
-127
-42
-168
-127
-42
-168
-127
-42
-171
-129
-45
-168
-127
-42
-152
-119
-47
-117
-98
-55
-69
-69
-61
-48
-58
-59
-144
-125
-110
-240
-181
-138
-247
-165
-111
-236
-147
-85
-242
-133
-67
-238
-123
-45
-235
-113
-30
-235
-107
-16
-236
-102
-14
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-230
-97
-5
-229
-102
-7
-235
-107
-16
-235
-113
-30
-238
-123
-45
-242
-133
-67
-241
-153
-96
-214
-151
-109
-99
-90
-79
-48
-58
-59
-95
-78
-64
-155
-100
-63
-209
-117
-53
-227
-126
-50
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-125
-52
-234
-126
-45
-234
-126
-45
-227
-126
-50
-194
-112
-58
-125
-90
-64
-56
-64
-60
-58
-69
-70
-178
-146
-122
-250
-176
-132
-238
-159
-107
-241
-145
-79
-234
-125
-52
-239
-117
-44
-236
-108
-29
-224
-98
-18
-230
-97
-5
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-230
-97
-5
-229
-102
-7
-223
-103
-18
-226
-110
-35
-234
-125
-52
-231
-136
-72
-241
-153
-96
-245
-169
-119
-178
-146
-122
-101
-100
-92
-48
-58
-59
-56
-64
-60
-69
-69
-61
-95
-87
-59
-111
-94
-57
-123
-102
-54
-129
-106
-52
-129
-106
-52
-123
-102
-54
-105
-93
-60
-88
-82
-59
-62
-63
-61
-48
-58
-59
-91
-92
-89
-186
-157
-134
-245
-179
-138
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-230
-97
-5
-224
-98
-18
-236
-108
-29
-239
-117
-44
-230
-123
-57
-243
-141
-78
-238
-159
-107
-234
-168
-124
-158
-130
-108
-76
-78
-76
-41
-58
-57
-62
-63
-61
-95
-78
-64
-125
-90
-64
-146
-97
-64
-163
-104
-61
-173
-106
-60
-163
-104
-61
-155
-100
-63
-125
-90
-64
-95
-78
-64
-56
-64
-60
-43
-57
-62
-124
-111
-99
-209
-171
-139
-234
-168
-124
-238
-159
-107
-241
-145
-79
-230
-128
-60
-239
-117
-44
-236
-108
-29
-236
-102
-14
-229
-102
-7
-230
-97
-5
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-231
-91
-2
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-226
-93
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-230
-97
-5
-224
-98
-18
-236
-108
-29
-226
-110
-35
-230
-123
-57
-231
-136
-72
-241
-153
-96
-238
-159
-107
-240
-181
-138
-203
-161
-131
-150
-125
-114
-101
-100
-92
-76
-78
-76
-55
-66
-67
-48
-58
-59
-48
-58
-59
-48
-58
-59
-48
-58
-59
-58
-69
-70
-84
-85
-82
-124
-111
-99
-178
-146
-122
-240
-181
-138
-234
-168
-124
-238
-159
-107
-236
-147
-85
-230
-128
-60
-234
-125
-52
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-236
-147
-85
-241
-153
-96
-234
-168
-124
-230
-173
-136
-186
-157
-134
-133
-120
-107
-91
-92
-89
-63
-74
-74
-51
-62
-63
-48
-58
-59
-48
-58
-59
-48
-58
-59
-51
-62
-63
-63
-74
-74
-91
-92
-89
-144
-125
-110
-203
-161
-131
-240
-181
-138
-245
-169
-119
-241
-153
-96
-241
-145
-79
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-239
-117
-44
-230
-123
-57
-231
-136
-72
-236
-147
-85
-238
-159
-107
-245
-169
-119
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-250
-197
-158
-250
-197
-158
-250
-197
-158
-251
-192
-154
-236
-186
-153
-239
-182
-144
-245
-179
-138
-234
-168
-124
-238
-159
-107
-241
-153
-96
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-230
-97
-5
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-241
-153
-96
-238
-159
-107
-234
-168
-124
-240
-181
-138
-239
-182
-144
-236
-186
-153
-251
-192
-154
-250
-197
-158
-250
-197
-158
-250
-197
-158
-236
-186
-153
-239
-182
-144
-240
-181
-138
-234
-168
-124
-245
-169
-119
-238
-159
-107
-236
-147
-85
-231
-136
-72
-230
-123
-57
-239
-117
-44
-226
-110
-35
-223
-103
-18
-224
-98
-18
-230
-97
-5
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-225
-92
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-230
-123
-57
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-236
-147
-85
-241
-153
-96
-238
-159
-107
-238
-159
-107
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-234
-168
-124
-238
-159
-107
-238
-159
-107
-241
-153
-96
-236
-147
-85
-231
-136
-72
-230
-128
-60
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-128
-60
-230
-128
-60
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-231
-136
-72
-230
-128
-60
-227
-126
-50
-225
-124
-48
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-230
-123
-57
-230
-128
-60
-231
-136
-72
-231
-136
-72
-231
-136
-72
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-236
-147
-85
-231
-136
-72
-231
-136
-72
-230
-128
-60
-230
-123
-57
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-225
-124
-48
-224
-123
-55
-224
-123
-55
-224
-123
-55
-230
-123
-57
-224
-123
-55
-224
-123
-55
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-225
-124
-48
-225
-124
-48
-224
-123
-55
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-230
-123
-57
-225
-124
-48
-225
-124
-48
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-221
-89
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-223
-103
-18
-223
-103
-18
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-226
-110
-35
-223
-103
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-224
-98
-18
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-220
-93
-11
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-218
-87
-5
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-217
-86
-3
-217
-86
-3
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
-214
-84
-0
diff --git a/packages/linux/linux-omap2-git/beagleboard/mru-clocks1.diff b/packages/linux/linux-omap2-git/beagleboard/mru-clocks1.diff
deleted file mode 100644
index d7dadbc85e..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/mru-clocks1.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 22 Jul 2008 00:31:11 +0000 (+0100)
-Subject: ARM: OMAP: make dpll4_m4_ck programmable with clk_set_rate()
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2b7b958dc79e51127d7a4ecf88ce12dbc6c31426
-
-ARM: OMAP: make dpll4_m4_ck programmable with clk_set_rate()
-
-Filling the set_rate and round_rate fields of dpll4_m4_ck makes
-this clock programmable through clk_set_rate(). This is needed
-to give omapfb control over the dss1_alwon_fck rate.
----
-
-diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
-index 161da12..876eb13 100644
---- a/arch/arm/mach-omap2/clock34xx.h
-+++ b/arch/arm/mach-omap2/clock34xx.h
-@@ -815,6 +815,8 @@ static struct clk dpll4_m4_ck = {
- .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
- PARENT_CONTROLS_CLOCK,
- .recalc = &omap2_clksel_recalc,
-+ .set_rate = &omap2_clksel_set_rate,
-+ .round_rate = &omap2_clksel_round_rate,
- };
-
- /* The PWRDN bit is apparently only available on 3430ES2 and above */
diff --git a/packages/linux/linux-omap2-git/beagleboard/mru-clocks2.diff b/packages/linux/linux-omap2-git/beagleboard/mru-clocks2.diff
deleted file mode 100644
index c8b370da03..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/mru-clocks2.diff
+++ /dev/null
@@ -1,62 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 22 Jul 2008 00:58:18 +0000 (+0100)
-Subject: ARM: OMAP: add clk_get_parent() for OMAP2/3
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=e2de5e5578fbaa9b4b75074796da0608fc93e6ae
-
-ARM: OMAP: add clk_get_parent() for OMAP2/3
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
-index 577be44..28aec36 100644
---- a/arch/arm/mach-omap2/clock.c
-+++ b/arch/arm/mach-omap2/clock.c
-@@ -824,6 +824,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
- return 0;
- }
-
-+struct clk *omap2_clk_get_parent(struct clk *clk)
-+{
-+ return clk->parent;
-+}
-+
- /* DPLL rate rounding code */
-
- /**
-diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
-index 49245f7..4aa69d5 100644
---- a/arch/arm/mach-omap2/clock.h
-+++ b/arch/arm/mach-omap2/clock.h
-@@ -29,6 +29,7 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate);
- int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent);
- int omap2_dpll_set_rate_tolerance(struct clk *clk, unsigned int tolerance);
- long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate);
-+struct clk *omap2_clk_get_parent(struct clk *clk);
-
- #ifdef CONFIG_OMAP_RESET_CLOCKS
- void omap2_clk_disable_unused(struct clk *clk);
-diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
-index 54cc6e1..ed7af21 100644
---- a/arch/arm/mach-omap2/clock24xx.c
-+++ b/arch/arm/mach-omap2/clock24xx.c
-@@ -422,6 +422,7 @@ static struct clk_functions omap2_clk_functions = {
- .clk_round_rate = omap2_clk_round_rate,
- .clk_set_rate = omap2_clk_set_rate,
- .clk_set_parent = omap2_clk_set_parent,
-+ .clk_get_parent = omap2_clk_get_parent,
- .clk_disable_unused = omap2_clk_disable_unused,
- #ifdef CONFIG_CPU_FREQ
- .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
-diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
-index 04dedec..08c8c46 100644
---- a/arch/arm/mach-omap2/clock34xx.c
-+++ b/arch/arm/mach-omap2/clock34xx.c
-@@ -541,6 +541,7 @@ static struct clk_functions omap2_clk_functions = {
- .clk_round_rate = omap2_clk_round_rate,
- .clk_set_rate = omap2_clk_set_rate,
- .clk_set_parent = omap2_clk_set_parent,
-+ .clk_get_parent = omap2_clk_get_parent,
- .clk_disable_unused = omap2_clk_disable_unused,
- };
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/mru-clocks3.diff b/packages/linux/linux-omap2-git/beagleboard/mru-clocks3.diff
deleted file mode 100644
index f8407fc2d5..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/mru-clocks3.diff
+++ /dev/null
@@ -1,94 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 23 Jul 2008 08:40:07 +0000 (+0100)
-Subject: ARM: OMAP: Set DSS1_ALWON_FCLK to a multiple of the pixel clock
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=01ee28c50701caa94739e764c3dae9298edd8216
-
-ARM: OMAP: Set DSS1_ALWON_FCLK to a multiple of the pixel clock
-
-This sets the DSS1_ALWON_FCLK clock as close as possible to a
-multiple of the requested pixel clock, while keeping it below
-the 173MHz limit.
-
-Due to of the structure of the clock tree, dss1_alwon_fck cannot
-be set directly, and we must use dpll4_m4_ck instead.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index fd06ca2..e0e8528 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -176,6 +176,7 @@ static struct {
-
- struct clk *dss_ick, *dss1_fck;
- struct clk *dss_54m_fck;
-+ struct clk *dpll4_m4_ck;
-
- enum omapfb_update_mode update_mode;
- struct omapfb_device *fbdev;
-@@ -738,21 +739,34 @@ static void setup_color_conv_coef(void)
- MOD_REG_FLD(at2_reg, (1 << 11), ct->full_range);
- }
-
--#define MAX_FCK_LCD 173000000
-+#define MAX_FCK 173000000
-
- static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
- {
-+ unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck));
-+ unsigned long pcd_min = is_tft? 2: 3;
-+ unsigned long fck_div;
- unsigned long fck, lck;
-
- pck = max(1, pck);
-+
-+ if (pck * pcd_min > MAX_FCK) {
-+ dev_warn(dispc.fbdev->dev, "pixclock %d kHz too high.\n",
-+ pck / 1000);
-+ pck = MAX_FCK / pcd_min;
-+ }
-+
-+ fck = pck * 2;
-+ fck_div = (prate + pck) / fck;
-+ if (fck_div > 16)
-+ fck_div /= (fck_div + 15) / 16;
-+ if (fck_div < 1)
-+ fck_div = 1;
-+ clk_set_rate(dispc.dpll4_m4_ck, prate / fck_div);
- fck = clk_get_rate(dispc.dss1_fck);
-- *lck_div = (fck + MAX_FCK_LCD - 1) / MAX_FCK_LCD;
-- lck = fck / *lck_div;
-- *pck_div = (lck + pck - 1) / pck;
-- if (is_tft)
-- *pck_div = max(2, *pck_div);
-- else
-- *pck_div = max(3, *pck_div);
-+
-+ *lck_div = 1;
-+ *pck_div = (fck + pck - 1) / pck;
- if (*pck_div > 255) {
- *pck_div = 255;
- lck = pck * *pck_div;
-@@ -914,11 +928,21 @@ static int get_dss_clocks(void)
- return PTR_ERR(dispc.dss_54m_fck);
- }
-
-+ if (IS_ERR((dispc.dpll4_m4_ck =
-+ clk_get(dispc.fbdev->dev, "dpll4_m4_ck")))) {
-+ dev_err(dispc.fbdev->dev, "can't get dpll4_m4_ck");
-+ clk_put(dispc.dss_ick);
-+ clk_put(dispc.dss1_fck);
-+ clk_put(dispc.dss_54m_fck);
-+ return PTR_ERR(dispc.dss_54m_fck);
-+ }
-+
- return 0;
- }
-
- static void put_dss_clocks(void)
- {
-+ clk_put(dispc.dpll4_m4_ck);
- clk_put(dispc.dss_54m_fck);
- clk_put(dispc.dss1_fck);
- clk_put(dispc.dss_ick);
diff --git a/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch b/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch
deleted file mode 100644
index 968cc6cf73..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-From: Gadiyar, Anand <gadiyar@ti.com>
-Date: Wed, 13 Aug 2008 07:05:29 +0000 (+0530)
-Subject: MUSB: Workaround for simultaneous TX and RX usage
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2e6aa4efb0e14c51ff0427927b1b38136911fa93
-
-MUSB: Workaround for simultaneous TX and RX usage
-
-MUSB: Workaround for simultaneous TX and RX usage
-
-MUSB RTL V1.4 has a hardware issue which results in a DMA controller
-hang when TX and RX DMA channels are simultaneously enabled. This
-affects at least OMAP2430 and OMAP34XX.
-
-Since RX transfers are in Mode 0 and anyway result in one DMA interrupt
-per packet, we can use System DMA to unload the RX fifos. MUSB DMA can
-be used for all TX channels as before.
-
-Tested with full-duplex TX and RX transfers using g_ether. Runs for 24
-hours without a hang. Without this patch, the hang occurs within minutes.
-
-This issue was first reported by Jon Hunter on [1]
-
-[1] http://marc.info/?l=linux-omap&m=119634480534453&w=2
-
-Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
----
-
-diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
-index a485a86..8583e54 100644
---- a/drivers/usb/musb/Kconfig
-+++ b/drivers/usb/musb/Kconfig
-@@ -150,6 +150,14 @@ config USB_INVENTRA_DMA
- help
- Enable DMA transfers using Mentor's engine.
-
-+config MUSB_USE_SYSTEM_DMA_RX
-+ bool 'Use System DMA for RX endpoints'
-+ depends on USB_MUSB_HDRC && USB_INVENTRA_DMA
-+ help
-+ MUSB RTL version 1.4 has a hardware issue when TX and RX DMA
-+ channels are simultaneously enabled. To work around this issue,
-+ you can choose to use System DMA for RX channels.
-+
- config USB_TI_CPPI_DMA
- bool
- depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
-diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
-index 32bb1e2..d1c1ea0 100644
---- a/drivers/usb/musb/musbhsdma.c
-+++ b/drivers/usb/musb/musbhsdma.c
-@@ -34,6 +34,7 @@
- #include <linux/interrupt.h>
- #include <linux/platform_device.h>
- #include "musb_core.h"
-+#include <asm/arch/dma.h>
-
- #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
- #include "omap2430.h"
-@@ -64,6 +65,9 @@
-
- #define MUSB_HSDMA_CHANNELS 8
-
-+#define MUSB_FIFO_ADDRESS(epnum) \
-+ ((unsigned long) (OMAP_HSOTG_BASE + MUSB_FIFO_OFFSET(epnum)))
-+
- struct musb_dma_controller;
-
- struct musb_dma_channel {
-@@ -75,6 +79,8 @@ struct musb_dma_channel {
- u8 bIndex;
- u8 epnum;
- u8 transmit;
-+
-+ int sysdma_channel;
- };
-
- struct musb_dma_controller {
-@@ -93,6 +99,42 @@ static int dma_controller_start(struct dma_controller *c)
- return 0;
- }
-
-+#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
-+static void musb_sysdma_completion(int lch, u16 ch_status, void *data)
-+{
-+ u32 dwAddress;
-+ unsigned long flags;
-+
-+ struct dma_channel *pChannel;
-+
-+ struct musb_dma_channel *pImplChannel =
-+ (struct musb_dma_channel *) data;
-+ struct musb_dma_controller *controller = pImplChannel->controller;
-+ struct musb *musb = controller->pDmaPrivate;
-+ pChannel = &pImplChannel->Channel;
-+
-+ DBG(2, "lch = 0x%d, ch_status = 0x%x\n", lch, ch_status);
-+ spin_lock_irqsave(&musb->lock, flags);
-+
-+ dwAddress = (u32) omap_get_dma_dst_pos(pImplChannel->sysdma_channel);
-+ pChannel->actual_len = dwAddress - pImplChannel->dwStartAddress;
-+
-+ DBG(2, "ch %p, 0x%x -> 0x%x (%d / %d) %s\n",
-+ pChannel, pImplChannel->dwStartAddress, dwAddress,
-+ pChannel->actual_len, pImplChannel->len,
-+ (pChannel->actual_len < pImplChannel->len) ?
-+ "=> reconfig 0": "=> complete");
-+
-+ pChannel->status = MUSB_DMA_STATUS_FREE;
-+ musb_dma_completion(musb, pImplChannel->epnum, pImplChannel->transmit);
-+
-+ spin_unlock_irqrestore(&musb->lock, flags);
-+ return;
-+}
-+#else
-+#define musb_sysdma_completion NULL
-+#endif
-+
- static void dma_channel_release(struct dma_channel *pChannel);
-
- static int dma_controller_stop(struct dma_controller *c)
-@@ -144,6 +186,29 @@ static struct dma_channel *dma_channel_allocate(struct dma_controller *c,
- /* Tx => mode 1; Rx => mode 0 */
- pChannel->desired_mode = transmit;
- pChannel->actual_len = 0;
-+ pImplChannel->sysdma_channel = -1;
-+
-+#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
-+ if (!transmit) {
-+ int ret;
-+ ret = omap_request_dma(OMAP24XX_DMA_NO_DEVICE,
-+ "MUSB SysDMA", musb_sysdma_completion,
-+ (void *) pImplChannel,
-+ &(pImplChannel->sysdma_channel));
-+
-+ if (ret) {
-+ printk(KERN_ERR "request_dma failed:"
-+ " %d\n", ret);
-+ controller->bmUsedChannels &=
-+ ~(1 << bBit);
-+ pChannel->status =
-+ MUSB_DMA_STATUS_UNKNOWN;
-+ pImplChannel->sysdma_channel = -1;
-+ pChannel = NULL;
-+ }
-+ }
-+#endif
-+
- break;
- }
- }
-@@ -163,6 +228,12 @@ static void dma_channel_release(struct dma_channel *pChannel)
- ~(1 << pImplChannel->bIndex);
-
- pChannel->status = MUSB_DMA_STATUS_UNKNOWN;
-+
-+ if (pImplChannel->sysdma_channel != -1) {
-+ omap_stop_dma(pImplChannel->sysdma_channel);
-+ omap_free_dma(pImplChannel->sysdma_channel);
-+ pImplChannel->sysdma_channel = -1;
-+ }
- }
-
- static void configure_channel(struct dma_channel *pChannel,
-@@ -179,41 +250,69 @@ static void configure_channel(struct dma_channel *pChannel,
- DBG(4, "%p, pkt_sz %d, addr 0x%x, len %d, mode %d\n",
- pChannel, packet_sz, dma_addr, len, mode);
-
-- if (mode) {
-- csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
-- BUG_ON(len < packet_sz);
-+ if (pImplChannel->sysdma_channel != -1) {
-+ /* System DMA */
-+ /* RX: set src = FIFO */
-+
-+ omap_set_dma_transfer_params(pImplChannel->sysdma_channel,
-+ OMAP_DMA_DATA_TYPE_S8,
-+ len, 1, /* One frame */
-+ OMAP_DMA_SYNC_ELEMENT,
-+ OMAP24XX_DMA_NO_DEVICE,
-+ 0); /* Src Sync */
-+
-+ omap_set_dma_src_params(pImplChannel->sysdma_channel, 0,
-+ OMAP_DMA_AMODE_CONSTANT,
-+ MUSB_FIFO_ADDRESS(pImplChannel->epnum),
-+ 0, 0);
-
-- if (packet_sz >= 64) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR16
-+ omap_set_dma_dest_params(pImplChannel->sysdma_channel, 0,
-+ OMAP_DMA_AMODE_POST_INC, dma_addr,
-+ 0, 0);
-+
-+ omap_set_dma_dest_data_pack(pImplChannel->sysdma_channel, 1);
-+ omap_set_dma_dest_burst_mode(pImplChannel->sysdma_channel,
-+ OMAP_DMA_DATA_BURST_16);
-+
-+ omap_start_dma(pImplChannel->sysdma_channel);
-+
-+ } else { /* Mentor DMA */
-+ if (mode) {
-+ csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
-+ BUG_ON(len < packet_sz);
-+
-+ if (packet_sz >= 64) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR16
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 32) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR8
-+ } else if (packet_sz >= 32) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR8
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 16) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR4
-+ } else if (packet_sz >= 16) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR4
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-+ }
- }
-- }
-
-- csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
-- | (1 << MUSB_HSDMA_ENABLE_SHIFT)
-- | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
-- | (pImplChannel->transmit
-- ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
-- : 0);
--
-- /* address/count */
-- musb_writel(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
-- dma_addr);
-- musb_writel(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
-- len);
--
-- /* control (this should start things) */
-- musb_writew(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
-- csr);
-+ csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
-+ | (1 << MUSB_HSDMA_ENABLE_SHIFT)
-+ | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
-+ | (pImplChannel->transmit
-+ ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
-+ : 0);
-+
-+ /* address/count */
-+ musb_writel(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
-+ dma_addr);
-+ musb_writel(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
-+ len);
-+
-+ /* control (this should start things) */
-+ musb_writew(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
-+ csr);
-+ } /* Mentor DMA */
- }
-
- static int dma_channel_program(struct dma_channel *pChannel,
-@@ -265,6 +364,12 @@ static int dma_channel_abort(struct dma_channel *pChannel)
- MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_TXCSR),
- csr);
- } else {
-+ if (pImplChannel->sysdma_channel != -1) {
-+ omap_stop_dma(pImplChannel->sysdma_channel);
-+ omap_free_dma(pImplChannel->sysdma_channel);
-+ pImplChannel->sysdma_channel = -1;
-+ }
-+
- csr = musb_readw(mbase,
- MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_RXCSR));
- csr &= ~(MUSB_RXCSR_AUTOCLEAR |
diff --git a/packages/linux/linux-omap2-git/beagleboard/no-cortex-deadlock.patch b/packages/linux/linux-omap2-git/beagleboard/no-cortex-deadlock.patch
deleted file mode 100644
index 32ec4c2d33..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/no-cortex-deadlock.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 30 Jul 2008 08:25:51 +0000 (+0100)
-Subject: ARM: NEON L1 cache bug workaround (erratum 451034)
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=26023493baf13e0a67fd6cf08d87be5ff6f7c56d
-
-ARM: NEON L1 cache bug workaround (erratum 451034)
-
-On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
-store in the store buffer, can cause a processor deadlock under
-certain conditions.
-
-Executing a DMB instruction before saving NEON/VFP registers and before
-return to userspace makes it safe to run code which includes similar
-counter-measures. Userspace code can still trigger the deadlock, so
-a different workaround is required to safely run untrusted code.
-
-See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
----
-
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 8c75840..1172e14 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -1071,6 +1071,22 @@ config NEON
- Say Y to include support code for NEON, the ARMv7 Advanced SIMD
- Extension.
-
-+config NEON_CACHE_BUG
-+ bool "NEON L1 cache bug workaround (erratum 451034)"
-+ depends on VFPv3
-+ help
-+ On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
-+ store in the store buffer, can cause a processor deadlock under
-+ certain conditions.
-+
-+ See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
-+
-+ Say Y to include a workaround.
-+
-+ WARNING: Even with this option enabled, userspace code can trigger
-+ the deadlock. To safely run untrusted code, a different fix is
-+ required.
-+
- endmenu
-
- menu "Userspace binary formats"
-diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
-index 597ed00..e50094e 100644
---- a/arch/arm/kernel/entry-common.S
-+++ b/arch/arm/kernel/entry-common.S
-@@ -68,6 +68,10 @@ no_work_pending:
- /* perform architecture specific actions before user return */
- arch_ret_to_user r1, lr
-
-+#ifdef CONFIG_NEON_CACHE_BUG
-+ dmb
-+#endif
-+
- @ slow_restore_user_regs
- ldr r1, [sp, #S_PSR] @ get calling cpsr
- ldr lr, [sp, #S_PC]! @ get pc
-diff --git a/include/asm-arm/vfpmacros.h b/include/asm-arm/vfpmacros.h
-index cccb389..c9d2976 100644
---- a/include/asm-arm/vfpmacros.h
-+++ b/include/asm-arm/vfpmacros.h
-@@ -32,6 +32,9 @@
-
- @ write all the working registers out of the VFP
- .macro VFPFSTMIA, base, tmp
-+#ifdef CONFIG_NEON_CACHE_BUG
-+ dmb
-+#endif
- #if __LINUX_ARM_ARCH__ < 6
- STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15}
- #else
diff --git a/packages/linux/linux-omap2-git/beagleboard/no-empty-flash-warnings.patch b/packages/linux/linux-omap2-git/beagleboard/no-empty-flash-warnings.patch
deleted file mode 100644
index ab344b0449..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/no-empty-flash-warnings.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
-index 1d437de..33b3feb 100644
---- a/fs/jffs2/scan.c
-+++ b/fs/jffs2/scan.c
-@@ -647,8 +647,8 @@ scan_more:
- inbuf_ofs = ofs - buf_ofs;
- while (inbuf_ofs < scan_end) {
- if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
-- printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
-- empty_start, ofs);
-+// printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
-+// empty_start, ofs);
- if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
- return err;
- goto scan_more;
diff --git a/packages/linux/linux-omap2-git/beagleboard/no-harry-potter.diff b/packages/linux/linux-omap2-git/beagleboard/no-harry-potter.diff
deleted file mode 100644
index 2bb20ab9c0..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/no-harry-potter.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/Makefile 2008-04-24 14:36:20.509598016 +0200
-+++ git/arch/arm/Makefile 2008-04-24 14:36:31.949546584 +0200
-@@ -47,7 +47,7 @@
- # Note that GCC does not numerically define an architecture version
- # macro, but instead defines a whole series of macros which makes
- # testing for a specific architecture or later rather impossible.
--arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7a,-march=armv5t -Wa$(comma)-march=armv7a)
-+arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
- arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
- # Only override the compiler option if ARMv6. The ARMv6K extensions are
- # always available in ARMv7
diff --git a/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml b/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml
deleted file mode 100644
index 48ff5da822..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml
+++ /dev/null
@@ -1,894 +0,0 @@
-The interface provides device drivers, CPUFreq, and DSP Bridge with a
-means of controlling OMAP power management parameters that are not yet
-supported by the Linux PM PMQOS interface. Copious documentation and
-rationale is in the patch in Documentation/arm/OMAP/omap_pm and the
-interface header file, include/asm-arm/arch-omap/omap-pm.h.
-
-Signed-off-by: Paul Walmsley <paul@pwsan.com>
----
-
- Documentation/arm/OMAP/omap_pm | 185 +++++++++++++++++++++
- arch/arm/mach-omap2/io.c | 4
- arch/arm/plat-omap/Kconfig | 13 +
- arch/arm/plat-omap/Makefile | 1
- arch/arm/plat-omap/omap-pm-noop.c | 309 +++++++++++++++++++++++++++++++++++
- include/asm-arm/arch-omap/omap-pm.h | 300 ++++++++++++++++++++++++++++++++++
- 6 files changed, 812 insertions(+), 0 deletions(-)
- create mode 100644 Documentation/arm/OMAP/omap_pm
- create mode 100644 arch/arm/plat-omap/omap-pm-noop.c
- create mode 100644 include/asm-arm/arch-omap/omap-pm.h
-
-diff --git a/Documentation/arm/OMAP/omap_pm b/Documentation/arm/OMAP/omap_pm
-new file mode 100644
-index 0000000..2ec2034
---- /dev/null
-+++ b/Documentation/arm/OMAP/omap_pm
-@@ -0,0 +1,185 @@
-+
-+Rationale: the OMAP PM interface
-+================================
-+
-+
-+Existing PM interfaces are currently not ideal for OMAP
-+-------------------------------------------------------
-+
-+There are two PM interfaces in use with publicly-distributed OMAP
-+Linux code: the TI Shared Resource Framework (SRF) and the Linux PM
-+QoS parameters code. Neither interface is ideal for Linux OMAP code.
-+
-+TI Shared Resource Framework:
-+
-+The TI CDP 12.14 tree drivers currently use the TI Shared Resource
-+Framework (SRF) to control chip power management. Use of the SRF
-+allowed TI to get the drivers up and running quickly with considerable
-+power savings; and the SRF provided debugging support. However, many
-+of the SRF parameters are specified in OMAP-specific terms, such as
-+target OPPs, rather than in terms of actual latency or throughput
-+requirements. OPPs change depending on OMAP silicon revisions or OMAP
-+types, and are meaningless for other architectures, so drivers shared
-+between OMAP and other architectures would also have to #ifdef out the
-+SRF constraints.
-+
-+Linux PM QoS parameters:
-+
-+In February 2008, the mainline Linux kernel added code that is
-+somewhat similar to the SRF: the Linux PM QoS parameters code, located
-+in kernel/pm_qos_params.c. (This code replaced the latency management
-+code that was present in earlier kernels.) Ideally, OMAP drivers
-+would be able to use this Linux PM QoS code directly, but the PM QoS
-+code has some drawbacks:
-+
-+- It combines some power management parameters that should be kept
-+ separate for maximum power savings on OMAP3. For example, in the PM
-+ QoS code, CPU and system DMA wakeup latency are combined into one
-+ parameter; but on OMAP3, these are distinct parameters. The Linux
-+ PM QoS code also combines all network power management knobs into
-+ two non-device-specific parameters. OMAP2/3 systems can have
-+ different network devices with different power management
-+ requirements - for example, a wired Ethernet interface may have
-+ different latency and throughput constraints than a WiFi interface.
-+
-+- It does not yet cover all of the power management capabilities of
-+ the OMAP3 architecture. It does not express latency constraints on
-+ a per-device or per-powerdomain basis; it only covers
-+ cpu_dma_latency and network throughput and latency, which would not
-+ cover most of the OMAP3 devices.
-+
-+The result is that drivers using the current Linux PM QoS layer
-+directly are unlikely to reach the same level of power efficiency as
-+driver code using the Shared Resource Framework.
-+
-+To summarize, the SRF provides significant power savings, but
-+expresses power constraints in an OMAP- and silicon-revision-specific
-+way; and the PM QoS layer expresses PM constraints in a cross-platform
-+manner (in terms of fundamental physical units), but does not support
-+per-powerdomain constraints and does not cover many of the OMAP power
-+management features.
-+
-+
-+A medium-term alternative: the OMAP PM interface
-+------------------------------------------------
-+
-+We need a way for driver code to express PM parameters which:
-+
-+- supports the range of power management parameters present in the TI SRF;
-+
-+- separates the drivers from the underlying PM parameter
-+ implementation, whether it is the TI SRF or Linux PM QoS or Linux
-+ latency framework or something else;
-+
-+- specifies PM parameters in terms of fundamental units, such as
-+ latency and throughput, rather than units which are specific to OMAP
-+ or to particular OMAP variants;
-+
-+- allows drivers which are shared with other architectures (e.g.,
-+ DaVinci) to add these constraints in a way which won't affect non-OMAP
-+ systems,
-+
-+- can be implemented immediately with minimal disruption of other
-+ architectures.
-+
-+
-+We therefore propose the OMAP PM interface, including the following
-+four power management functions for driver code:
-+
-+1. Set the maximum MPU wakeup latency:
-+ (*pdata->set_max_mpu_wakeup_lat)(struct device *dev, unsigned long t)
-+
-+2. Set the maximum device wakeup latency:
-+ (*pdata->set_max_dev_wakeup_lat)(struct device *dev, unsigned long t)
-+
-+3. Set the maximum system DMA transfer start latency (CORE pwrdm):
-+ (*pdata->set_max_sdma_lat)(struct device *dev, long t)
-+
-+4. Set the minimum bus throughput needed by a device:
-+ (*pdata->set_min_bus_tput)(struct device *dev, u8 agent_id, unsigned long r)
-+
-+
-+These functions are extensively documented in the OMAP PM interface header
-+file, included in the patch.
-+
-+
-+The OMAP PM layer is intended to be temporary
-+---------------------------------------------
-+
-+The intention is that, in time, the Linux PM QoS layer should support
-+the range of power management features present in OMAP3. As this
-+happens, existing drivers using the OMAP PM interface can be modified
-+to use the Linux PM QoS code; and the OMAP PM interface can disappear.
-+
-+
-+Driver usage of the OMAP PM functions
-+-------------------------------------
-+
-+As the 'pdata' in the above examples indicates, these functions are
-+exposed to drivers through function pointers in driver .platform_data
-+structures. The function pointers are initialized by the board-*.c
-+files to point to the corresponding OMAP PM functions:
-+.set_max_dev_wakeup_lat will point to
-+omap_pm_set_max_dev_wakeup_lat(), etc. Other architectures which do
-+not support these functions should leave these function pointers set
-+to NULL. Drivers should use the following idiom:
-+
-+ if (pdata->set_max_dev_wakeup_lat)
-+ (*pdata->set_max_dev_wakeup_lat)(dev, t);
-+
-+The most common usage of these functions will probably be to specify
-+the maximum time from when an interrupt occurs, to when the device
-+becomes accessible. To accomplish this, driver writers should use the
-+set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup
-+latency, and the set_max_dev_wakeup_lat() function to constrain the
-+device wakeup latency (from clk_enable() to accessibility). For
-+example,
-+
-+ /* Limit MPU wakeup latency */
-+ if (pdata->set_max_mpu_wakeup_lat)
-+ (*pdata->set_max_mpu_wakeup_lat)(dev, tc);
-+
-+ /* Limit device powerdomain wakeup latency */
-+ if (pdata->set_max_dev_wakeup_lat)
-+ (*pdata->set_max_dev_wakeup_lat)(dev, td);
-+
-+ /* total wakeup latency in this example: (tc + td) */
-+
-+
-+The PM parameters can be overwritten by calling the function again
-+with the new value. The settings can be removed by calling the
-+function with a t argument of -1 (except in the case of
-+set_max_bus_tput(), which should be called with an r argument of 0).
-+
-+
-+Other specialized interface functions
-+-------------------------------------
-+
-+The four functions listed above are intended to be usable by any
-+device driver. However, DSPBridge and CPUFreq have special
-+requirements. DSPBridge expresses target DSP performance levels in
-+terms of OPP IDs. CPUFreq expresses target MPU performance levels in
-+terms of MPU frequency. The OMAP PM interface contains functions for
-+these specialized cases to convert that input information (OPPs/MPU
-+frequency) into the form that the underlying power management
-+implementation needs:
-+
-+5. (*pdata->omap_pm_dsp_get_opp_table)(void)
-+
-+6. (*pdata->omap_pm_dsp_set_min_opp)(u8 opp_id)
-+
-+7. (*pdata->omap_pm_dsp_get_opp)(void)
-+
-+8. (*pdata->omap_pm_cpu_get_freq_table)(void)
-+
-+9. (*pdata->omap_pm_cpu_set_freq)(unsigned long f)
-+
-+10. (*pdata->omap_pm_cpu_get_freq)(void)
-+
-+
-+There are also functions for use by the clockdomain layer to indicate
-+that a powerdomain should wake up or be put to sleep:
-+
-+11. (*pdata->omap_pm_pwrdm_active)(struct powerdomain *pwrdm)
-+
-+12. (*pdata->omap_pm_pwrdm_inactive)(struct powerdomain *pwrdm)
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index 960c13f..ca790ac 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -247,4 +247,17 @@ config OMAP_SERIAL_WAKE
-
- endmenu
-
-+choice
-+ prompt "OMAP PM layer selection"
-+ depends on ARCH_OMAP
-+ default OMAP_PM_NOOP
-+
-+config OMAP_PM_NONE
-+ bool "No PM layer"
-+
-+config OMAP_PM_NOOP
-+ bool "No-op/debug PM layer"
-+
-+endchoice
-+
- endif
-diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
-index 93bbb64..d5453d5 100644
---- a/arch/arm/plat-omap/Makefile
-+++ b/arch/arm/plat-omap/Makefile
-@@ -29,3 +29,4 @@ obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o
- # OMAP mailbox framework
- obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
-
-+obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
-\ No newline at end of file
-diff --git a/arch/arm/plat-omap/omap-pm-noop.c b/arch/arm/plat-omap/omap-pm-noop.c
-new file mode 100644
-index 0000000..5ff7962
---- /dev/null
-+++ b/arch/arm/plat-omap/omap-pm-noop.c
-@@ -0,0 +1,309 @@
-+/*
-+ * omap-pm-noop.c - OMAP power management interface - dummy version
-+ *
-+ * This code implements the OMAP power management interface to
-+ * drivers, CPUIdle, CPUFreq, and DSP Bridge. It is strictly for
-+ * debug/demonstration use, as it does nothing but printk() whenever a
-+ * function is called (when DEBUG is defined, below)
-+ *
-+ * Copyright (C) 2008 Texas Instruments, Inc.
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Paul Walmsley
-+ *
-+ * Interface developed by (in alphabetical order):
-+ * Karthik Dasu, Amish Lakhani, Tony Lindgren, Rajendra Nayak, Sakari
-+ * Poussa, Veeramanikandan Raju, Igor Stoppa, Paul Walmsley, Richard
-+ * Woodruff
-+ */
-+
-+#undef DEBUG
-+
-+#include <linux/init.h>
-+#include <linux/cpufreq.h>
-+#include <linux/device.h>
-+
-+/* Interface documentation is in asm/arch/omap-pm.h */
-+#include <asm/arch/omap-pm.h>
-+
-+#include <asm/arch/powerdomain.h>
-+
-+static struct omap_opp *dsp_opps;
-+static struct omap_opp *mpu_opps;
-+
-+/*
-+ * Device-driver-originated constraints (via board-*.c files)
-+ */
-+
-+void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
-+{
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (t == -1)
-+ pr_debug("OMAP PM: remove max MPU wakeup latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ else
-+ pr_debug("OMAP PM: add max MPU wakeup latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+
-+ /*
-+ * For current Linux, this needs to map the MPU to a
-+ * powerdomain, then go through the list of current max lat
-+ * constraints on the MPU and find the smallest. If
-+ * the latency constraint has changed, the code should
-+ * recompute the state to enter for the next powerdomain
-+ * state.
-+ *
-+ * TI CDP code can call constraint_set here.
-+ */
-+}
-+
-+void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
-+{
-+ if (!dev || agent_id != OCP_INITIATOR_AGENT ||
-+ agent_id != OCP_TARGET_AGENT) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (r == 0)
-+ pr_debug("OMAP PM: remove min bus tput constraint: "
-+ "dev %s for agent_id %d\n", dev_name(dev), agent_id);
-+ else
-+ pr_debug("OMAP PM: add min bus tput constraint: "
-+ "dev %s for agent_id %d: rate %ld KiB\n",
-+ dev_name(dev), agent_id, r);
-+
-+ /*
-+ * This code should model the interconnect and compute the
-+ * required clock frequency, convert that to a VDD2 OPP ID, then
-+ * set the VDD2 OPP appropriately.
-+ *
-+ * TI CDP code can call constraint_set here on the VDD2 OPP.
-+ */
-+}
-+
-+void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
-+{
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (t == -1)
-+ pr_debug("OMAP PM: remove max device latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ else
-+ pr_debug("OMAP PM: add max device latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+
-+ /*
-+ * For current Linux, this needs to map the device to a
-+ * powerdomain, then go through the list of current max lat
-+ * constraints on that powerdomain and find the smallest. If
-+ * the latency constraint has changed, the code should
-+ * recompute the state to enter for the next powerdomain
-+ * state. Conceivably, this code should also determine
-+ * whether to actually disable the device clocks or not,
-+ * depending on how long it takes to re-enable the clocks.
-+ *
-+ * TI CDP code can call constraint_set here.
-+ */
-+}
-+
-+void omap_pm_set_max_sdma_lat(struct device *dev, long t)
-+{
-+ if (!dev || t < -1) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ if (t == -1)
-+ pr_debug("OMAP PM: remove max DMA latency constraint: "
-+ "dev %s\n", dev_name(dev));
-+ else
-+ pr_debug("OMAP PM: add max DMA latency constraint: "
-+ "dev %s, t = %ld usec\n", dev_name(dev), t);
-+
-+ /*
-+ * For current Linux PM QOS params, this code should scan the
-+ * list of maximum CPU and DMA latencies and select the
-+ * smallest, then set cpu_dma_latency pm_qos_param
-+ * accordingly.
-+ *
-+ * For future Linux PM QOS params, with separate CPU and DMA
-+ * latency params, this code should just set the dma_latency param.
-+ *
-+ * TI CDP code can call constraint_set here.
-+ */
-+
-+}
-+
-+
-+/*
-+ * DSP Bridge-specific constraints
-+ */
-+
-+const struct omap_opp *omap_pm_dsp_get_opp_table(void)
-+{
-+ pr_debug("OMAP PM: DSP request for OPP table\n");
-+
-+ /*
-+ * Return DSP frequency table here: The final item in the
-+ * array should have .rate = .opp_id = 0.
-+ */
-+
-+ return NULL;
-+}
-+
-+void omap_pm_dsp_set_min_opp(u8 opp_id)
-+{
-+ if (opp_id == 0) {
-+ WARN_ON(1);
-+ return;
-+ }
-+
-+ pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
-+
-+ /*
-+ *
-+ * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
-+ * can just test to see which is higher, the CPU's desired OPP
-+ * ID or the DSP's desired OPP ID, and use whichever is
-+ * highest.
-+ *
-+ * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
-+ * rate is keyed on MPU speed, not the OPP ID. So we need to
-+ * map the OPP ID to the MPU speed for use with clk_set_rate()
-+ * if it is higher than the current OPP clock rate.
-+ *
-+ */
-+}
-+
-+
-+u8 omap_pm_dsp_get_opp(void)
-+{
-+ pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
-+
-+ /*
-+ * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
-+ *
-+ * CDP12.14+:
-+ * Call clk_get_rate() on the OPP custom clock, map that to an
-+ * OPP ID using the tables defined in board-*.c/chip-*.c files.
-+ */
-+
-+ return 0;
-+}
-+
-+/*
-+ * CPUFreq-originated constraint
-+ *
-+ * In the future, this should be handled by custom OPP clocktype
-+ * functions.
-+ */
-+
-+struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void)
-+{
-+ pr_debug("OMAP PM: CPUFreq request for frequency table\n");
-+
-+ /*
-+ * Return CPUFreq frequency table here: loop over
-+ * all VDD1 clkrates, pull out the mpu_ck frequencies, build
-+ * table
-+ */
-+
-+ return NULL;
-+}
-+
-+void omap_pm_cpu_set_freq(unsigned long f)
-+{
-+ if (f == 0) {
-+ WARN_ON(1);
-+ return;
-+ }
-+
-+ pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
-+ f);
-+
-+ /*
-+ * For l-o dev tree, determine whether MPU freq or DSP OPP id
-+ * freq is higher. Find the OPP ID corresponding to the
-+ * higher frequency. Call clk_round_rate() and clk_set_rate()
-+ * on the OPP custom clock.
-+ *
-+ * CDP should just be able to set the VDD1 OPP clock rate here.
-+ */
-+}
-+
-+unsigned long omap_pm_cpu_get_freq(void)
-+{
-+ pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
-+
-+ /*
-+ * Call clk_get_rate() on the mpu_ck.
-+ */
-+
-+ return 0;
-+}
-+
-+/*
-+ * Powerdomain usecounting hooks
-+ */
-+
-+void omap_pm_pwrdm_active(struct powerdomain *pwrdm)
-+{
-+ if (!pwrdm) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ pr_debug("OMAP PM: powerdomain %s is becoming active\n", pwrdm->name);
-+
-+ /*
-+ * CDP code apparently will need these for the enable_power_domain()
-+ * and disable_power_domain() functions.
-+ */
-+}
-+
-+void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm)
-+{
-+ if (!pwrdm) {
-+ WARN_ON(1);
-+ return;
-+ };
-+
-+ pr_debug("OMAP PM: powerdomain %s is becoming inactive\n",
-+ pwrdm->name);
-+
-+ /*
-+ * CDP code apparently will need these for the enable_power_domain()
-+ * and disable_power_domain() functions.
-+ */
-+}
-+
-+/*
-+ * Should be called before clk framework since clk fw will call
-+ * omap_pm_pwrdm_{in,}active()
-+ */
-+int __init omap_pm_if_early_init(void)
-+{
-+ return 0;
-+}
-+
-+/* Must be called after clock framework is initialized */
-+int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
-+ struct omap_opp *dsp_opp_table)
-+{
-+ mpu_opps = mpu_opp_table;
-+ dsp_opps = dsp_opp_table;
-+ return 0;
-+}
-+
-+void omap_pm_if_exit(void)
-+{
-+ /* Deallocate CPUFreq frequency table here */
-+}
-+
-diff --git a/include/asm-arm/arch-omap/omap-pm.h b/include/asm-arm/arch-omap/omap-pm.h
-new file mode 100644
-index 0000000..d272dba
---- /dev/null
-+++ b/include/asm-arm/arch-omap/omap-pm.h
-@@ -0,0 +1,300 @@
-+/*
-+ * omap-pm.h - OMAP power management interface
-+ *
-+ * Copyright (C) 2008 Texas Instruments, Inc.
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Paul Walmsley
-+ *
-+ * Interface developed by (in alphabetical order): Karthik Dasu, Jouni
-+ * Högander, Tony Lindgren, Rajendra Nayak, Sakari Poussa,
-+ * Veeramanikandan Raju, Anand Sawant, Igor Stoppa, Paul Walmsley,
-+ * Richard Woodruff
-+ */
-+
-+#ifndef ASM_ARM_ARCH_OMAP_OMAP_PM_H
-+#define ASM_ARM_ARCH_OMAP_OMAP_PM_H
-+
-+#include <linux/device.h>
-+#include <linux/cpufreq.h>
-+
-+#include "powerdomain.h"
-+
-+/**
-+ * struct omap_opp - clock frequency-to-OPP ID table for DSP, MPU
-+ * @rate: target clock rate
-+ * @opp_id: OPP ID
-+ * @min_vdd: minimum VDD1 voltage (in millivolts) for this OPP
-+ *
-+ * Operating performance point data. Can vary by OMAP chip and board.
-+ */
-+struct omap_opp {
-+ unsigned long rate;
-+ u8 opp_id;
-+ u16 min_vdd;
-+};
-+
-+/*
-+ * agent_id values for use with omap_pm_set_min_bus_tput():
-+ *
-+ * OCP_INITIATOR_AGENT is only valid for devices that can act as
-+ * initiators -- it represents the device's L3 interconnect
-+ * connection. OCP_TARGET_AGENT represents the device's L4
-+ * interconnect connection.
-+ */
-+#define OCP_TARGET_AGENT 1
-+#define OCP_INITIATOR_AGENT 2
-+
-+/**
-+ * omap_pm_if_early_init - OMAP PM init code called before clock fw init
-+ *
-+ * Initialize anything that must be configured before the clock
-+ * framework starts. The "_if_" is to avoid name collisions with the
-+ * PM idle-loop code.
-+ */
-+int __init omap_pm_if_early_init(void);
-+
-+/**
-+ * omap_pm_if_init - OMAP PM init code called after clock fw init
-+ * @mpu_opp_table: array ptr to struct omap_opp for MPU
-+ * @dsp_opp_table: array ptr to struct omap_opp for DSP
-+ *
-+ * The main initialization code. OPP tables are passed in here. The
-+ * "_if_" is to avoid name collisions with the PM idle-loop code.
-+ */
-+int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
-+ struct omap_opp *dsp_opp_table);
-+
-+/**
-+ * omap_pm_if_exit - OMAP PM exit code
-+ *
-+ * Exit code; currently unused. The "_if_" is to avoid name
-+ * collisions with the PM idle-loop code.
-+ */
-+void omap_pm_if_exit(void);
-+
-+/*
-+ * Device-driver-originated constraints (via board-*.c files, platform_data)
-+ */
-+
-+
-+/**
-+ * omap_pm_set_max_mpu_wakeup_lat - set the maximum MPU wakeup latency
-+ * @dev: struct device * requesting the constraint
-+ * @t: maximum MPU wakeup latency in microseconds
-+ *
-+ * Request that the maximum interrupt latency for the MPU to be no
-+ * greater than 't' microseconds. "Interrupt latency" in this case is
-+ * defined as the elapsed time from the occurrence of a hardware or
-+ * timer interrupt to the time when the device driver's interrupt
-+ * service routine has been entered by the MPU.
-+ *
-+ * It is intended that underlying PM code will use this information to
-+ * determine what power state to put the MPU powerdomain into, and
-+ * possibly the CORE powerdomain as well, since interrupt handling
-+ * code currently runs from SDRAM. Advanced PM or board*.c code may
-+ * also configure interrupt controller priorities, OCP bus priorities,
-+ * CPU speed(s), etc.
-+ *
-+ * This function will not affect device wakeup latency, e.g., time
-+ * elapsed from when a device driver enables a hardware device with
-+ * clk_enable(), to when the device is ready for register access or
-+ * other use. To control this device wakeup latency, use
-+ * set_max_dev_wakeup_lat()
-+ *
-+ * Multiple calls to set_max_mpu_wakeup_lat() will replace the
-+ * previous t value. To remove the latency target for the MPU, call
-+ * with t = -1.
-+ *
-+ * No return value.
-+ */
-+void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t);
-+
-+
-+/**
-+ * omap_pm_set_min_bus_tput - set minimum bus throughput needed by device
-+ * @dev: struct device * requesting the constraint
-+ * @tbus_id: interconnect to operate on (OCP_{INITIATOR,TARGET}_AGENT)
-+ * @r: minimum throughput (in KiB/s)
-+ *
-+ * Request that the minimum data throughput on the OCP interconnect
-+ * attached to device 'dev' interconnect agent 'tbus_id' be no less
-+ * than 'r' KiB/s.
-+ *
-+ * It is expected that the OMAP PM or bus code will use this
-+ * information to set the interconnect clock to run at the lowest
-+ * possible speed that satisfies all current system users. The PM or
-+ * bus code will adjust the estimate based on its model of the bus, so
-+ * device driver authors should attempt to specify an accurate
-+ * quantity for their device use case, and let the PM or bus code
-+ * overestimate the numbers as necessary to handle request/response
-+ * latency, other competing users on the system, etc. On OMAP2/3, if
-+ * a driver requests a minimum L4 interconnect speed constraint, the
-+ * code will also need to add an minimum L3 interconnect speed
-+ * constraint,
-+ *
-+ * Multiple calls to set_min_bus_tput() will replace the previous rate
-+ * value for this device. To remove the interconnect throughput
-+ * restriction for this device, call with r = 0.
-+ *
-+ * No return value.
-+ */
-+void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r);
-+
-+
-+/**
-+ * omap_pm_set_max_dev_wakeup_lat - set the maximum device enable latency
-+ * @dev: struct device *
-+ * @t: maximum device wakeup latency in microseconds
-+ *
-+ * Request that the maximum amount of time necessary for a device to
-+ * become accessible after its clocks are enabled should be no greater
-+ * than 't' microseconds. Specifically, this represents the time from
-+ * when a device driver enables device clocks with clk_enable(), to
-+ * when the register reads and writes on the device will succeed.
-+ * This function should be called before clk_disable() is called,
-+ * since the power state transition decision may be made during
-+ * clk_disable().
-+ *
-+ * It is intended that underlying PM code will use this information to
-+ * determine what power state to put the powerdomain enclosing this
-+ * device into.
-+ *
-+ * Multiple calls to set_max_dev_wakeup_lat() will replace the
-+ * previous wakeup latency values for this device. To remove the wakeup
-+ * latency restriction for this device, call with t = -1.
-+ *
-+ * No return value.
-+ */
-+void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t);
-+
-+
-+/**
-+ * omap_pm_set_max_sdma_lat - set the maximum system DMA transfer start latency
-+ * @dev: struct device *
-+ * @t: maximum DMA transfer start latency in microseconds
-+ *
-+ * Request that the maximum system DMA transfer start latency for this
-+ * device 'dev' should be no greater than 't' microseconds. "DMA
-+ * transfer start latency" here is defined as the elapsed time from
-+ * when a device (e.g., McBSP) requests that a system DMA transfer
-+ * start or continue, to the time at which data starts to flow into
-+ * that device from the system DMA controller.
-+ *
-+ * It is intended that underlying PM code will use this information to
-+ * determine what power state to put the CORE powerdomain into.
-+ *
-+ * Since system DMA transfers may not involve the MPU, this function
-+ * will not affect MPU wakeup latency. Use set_max_cpu_lat() to do
-+ * so. Similarly, this function will not affect device wakeup latency
-+ * -- use set_max_dev_wakeup_lat() to affect that.
-+ *
-+ * Multiple calls to set_max_sdma_lat() will replace the previous t
-+ * value for this device. To remove the maximum DMA latency for this
-+ * device, call with t = -1.
-+ *
-+ * No return value.
-+ */
-+void omap_pm_set_max_sdma_lat(struct device *dev, long t);
-+
-+
-+/*
-+ * DSP Bridge-specific constraints
-+ */
-+
-+/**
-+ * omap_pm_dsp_get_opp_table - get OPP->DSP clock frequency table
-+ *
-+ * Intended for use by DSPBridge. Returns an array of OPP->DSP clock
-+ * frequency entries. The final item in the array should have .rate =
-+ * .opp_id = 0.
-+ */
-+const struct omap_opp *omap_pm_dsp_get_opp_table(void);
-+
-+/**
-+ * omap_pm_dsp_set_min_opp - receive desired OPP target ID from DSP Bridge
-+ * @opp_id: target DSP OPP ID
-+ *
-+ * Set a minimum OPP ID for the DSP. This is intended to be called
-+ * only from the DSP Bridge MPU-side driver. Unfortunately, the only
-+ * information that code receives from the DSP/BIOS load estimator is the
-+ * target OPP ID; hence, this interface. No return value.
-+ */
-+void omap_pm_dsp_set_min_opp(u8 opp_id);
-+
-+/**
-+ * omap_pm_dsp_get_opp - report the current DSP OPP ID
-+ *
-+ * Report the current OPP for the DSP. Since on OMAP3, the DSP and
-+ * MPU share a single voltage domain, the OPP ID returned back may
-+ * represent a higher DSP speed than the OPP requested via
-+ * omap_pm_dsp_set_min_opp().
-+ *
-+ * Returns the current VDD1 OPP ID, or 0 upon error.
-+ */
-+u8 omap_pm_dsp_get_opp(void);
-+
-+
-+/*
-+ * CPUFreq-originated constraint
-+ *
-+ * In the future, this should be handled by custom OPP clocktype
-+ * functions.
-+ */
-+
-+/**
-+ * omap_pm_cpu_get_freq_table - return a cpufreq_frequency_table array ptr
-+ *
-+ * Provide a frequency table usable by CPUFreq for the current chip/board.
-+ * Returns a pointer to a struct cpufreq_frequency_table array or NULL
-+ * upon error.
-+ */
-+struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void);
-+
-+/**
-+ * omap_pm_cpu_set_freq - set the current minimum MPU frequency
-+ * @f: MPU frequency in Hz
-+ *
-+ * Set the current minimum CPU frequency. The actual CPU frequency
-+ * used could end up higher if the DSP requested a higher OPP.
-+ * Intended to be called by plat-omap/cpu_omap.c:omap_target(). No
-+ * return value.
-+ */
-+void omap_pm_cpu_set_freq(unsigned long f);
-+
-+/**
-+ * omap_pm_cpu_get_freq - report the current CPU frequency
-+ *
-+ * Returns the current MPU frequency, or 0 upon error.
-+ */
-+unsigned long omap_pm_cpu_get_freq(void);
-+
-+
-+/*
-+ * Powerdomain usecounting hooks
-+ */
-+
-+/**
-+ * omap_pm_pwrdm_active - indicate that a power domain has become active
-+ * @pwrdm: struct powerdomain *
-+ *
-+ * Notify the OMAP PM layer that the power domain 'pwrdm' has become active,
-+ * presumably due to a device driver enabling an underlying clock. This
-+ * function is intended to be called by a clockdomain node in the clock
-+ * framework. No return value.
-+ */
-+void omap_pm_pwrdm_active(struct powerdomain *pwrdm);
-+
-+
-+/**
-+ * omap_pm_pwrdm_inactive - indicate that a power domain has become inactive
-+ * @pwrdm: struct powerdomain *
-+ *
-+ * Notify the OMAP PM layer that the power domain 'pwrdm' has become
-+ * inactive, presumably due to a device driver disabling an underlying
-+ * clock. This function is intended to be called by a clockdomain
-+ * node in the clock framework. No return value.
-+ */
-+void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm);
-+
-+
-+#endif
-
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
---- /tmp/io.c 2008-08-11 15:29:32.000000000 +0200
-+++ git/arch/arm/mach-omap2/io.c 2008-08-11 15:30:20.083198000 +0200
-@@ -38,6 +38,8 @@
- #include <asm/arch/clockdomain.h>
- #include "clockdomains.h"
-
-+#include <asm/arch/omap-pm.h>
-+
- /*
- * The machine specific code may provide the extra mapping besides the
- * default mapping provided here.
-@@ -197,9 +199,11 @@
- void __init omap2_init_common_hw(struct omap_sdrc_params *sp)
- {
- omap2_mux_init();
-+ omap_pm_if_early_init();
- pwrdm_init(powerdomains_omap);
- clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
- omap2_clk_init();
-+ omap_pm_if_init(NULL, NULL);
- omap2_sdrc_init(sp);
- gpmc_init();
- }
diff --git a/packages/linux/linux-omap2-git/beagleboard/oprofile-0.9.3.armv7.diff b/packages/linux/linux-omap2-git/beagleboard/oprofile-0.9.3.armv7.diff
deleted file mode 100644
index dbc11fbe7d..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/oprofile-0.9.3.armv7.diff
+++ /dev/null
@@ -1,611 +0,0 @@
-Hi,
-
-This patch adds Oprofile support on ARMv7, using the PMNC unit.
-Tested on OMAP3430 SDP.
-
-Feedback and comments are welcome.
-
-The patch to user space components is attached for reference. It i applies
-against version 0.9.3 of oprofile source
-(http://prdownloads.sourceforge.net/oprofile/oprofile-0.9.3.tar.gz).
-
-Regards,
-Jean.
-
----
-
-From: Jean Pihet <jpihet@mvista.com>
-Date: Tue, 6 May 2008 17:21:44 +0200
-Subject: [PATCH] ARM: Add ARMv7 oprofile support
-
-Add ARMv7 Oprofile support to kernel
-
-Signed-off-by: Jean Pihet <jpihet@mvista.com>
----
-
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index c60a27d..60b50a0 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -161,6 +161,11 @@ config OPROFILE_MPCORE
- config OPROFILE_ARM11_CORE
- bool
-
-+config OPROFILE_ARMV7
-+ def_bool y
-+ depends on CPU_V7 && !SMP
-+ bool
-+
- endif
-
- config VECTORS_BASE
-diff --git a/arch/arm/oprofile/Makefile b/arch/arm/oprofile/Makefile
-index e61d0cc..88e31f5 100644
---- a/arch/arm/oprofile/Makefile
-+++ b/arch/arm/oprofile/Makefile
-@@ -11,3 +11,4 @@ oprofile-$(CONFIG_CPU_XSCALE) += op_model_xscale.o
- oprofile-$(CONFIG_OPROFILE_ARM11_CORE) += op_model_arm11_core.o
- oprofile-$(CONFIG_OPROFILE_ARMV6) += op_model_v6.o
- oprofile-$(CONFIG_OPROFILE_MPCORE) += op_model_mpcore.o
-+oprofile-$(CONFIG_OPROFILE_ARMV7) += op_model_v7.o
-diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
-index 0a5cf3a..3fcd752 100644
---- a/arch/arm/oprofile/common.c
-+++ b/arch/arm/oprofile/common.c
-@@ -145,6 +145,10 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
- spec = &op_mpcore_spec;
- #endif
-
-+#ifdef CONFIG_OPROFILE_ARMV7
-+ spec = &op_armv7_spec;
-+#endif
-+
- if (spec) {
- ret = spec->init();
- if (ret < 0)
-diff --git a/arch/arm/oprofile/op_arm_model.h
-b/arch/arm/oprofile/op_arm_model.h
-index 4899c62..8c4e4f6 100644
---- a/arch/arm/oprofile/op_arm_model.h
-+++ b/arch/arm/oprofile/op_arm_model.h
-@@ -26,6 +26,7 @@ extern struct op_arm_model_spec op_xscale_spec;
-
- extern struct op_arm_model_spec op_armv6_spec;
- extern struct op_arm_model_spec op_mpcore_spec;
-+extern struct op_arm_model_spec op_armv7_spec;
-
- extern void arm_backtrace(struct pt_regs * const regs, unsigned int depth);
-
-diff --git a/arch/arm/oprofile/op_model_v7.c b/arch/arm/oprofile/op_model_v7.c
-new file mode 100644
-index 0000000..a159bc1
---- /dev/null
-+++ b/arch/arm/oprofile/op_model_v7.c
-@@ -0,0 +1,407 @@
-+/**
-+ * @file op_model_v7.c
-+ * ARM V7 (Cortex A8) Event Monitor Driver
-+ *
-+ * @remark Copyright 2008 Jean Pihet <jpihet@mvista.com>
-+ * @remark Copyright 2004 ARM SMP Development Team
-+ */
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/oprofile.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/smp.h>
-+
-+#include "op_counter.h"
-+#include "op_arm_model.h"
-+#include "op_model_v7.h"
-+
-+/* #define DEBUG */
-+
-+
-+/*
-+ * ARM V7 PMNC support
-+ */
-+
-+static u32 cnt_en[CNTMAX];
-+
-+static inline void armv7_pmnc_write(u32 val)
-+{
-+ val &= PMNC_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c12, 0" : : "r" (val));
-+}
-+
-+static inline u32 armv7_pmnc_read(void)
-+{
-+ u32 val;
-+
-+ asm volatile("mrc p15, 0, %0, c9, c12, 0" : "=r" (val));
-+ return val;
-+}
-+
-+static inline u32 armv7_pmnc_enable_counter(unsigned int cnt)
-+{
-+ u32 val;
-+
-+ if (cnt >= CNTMAX) {
-+ printk(KERN_ERR "oprofile: CPU%u enabling wrong PMNC counter"
-+ " %d\n", smp_processor_id(), cnt);
-+ return -1;
-+ }
-+
-+ if (cnt == CCNT)
-+ val = CNTENS_C;
-+ else
-+ val = (1 << (cnt - CNT0));
-+
-+ val &= CNTENS_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c12, 1" : : "r" (val));
-+
-+ return cnt;
-+}
-+
-+static inline u32 armv7_pmnc_disable_counter(unsigned int cnt)
-+{
-+ u32 val;
-+
-+ if (cnt >= CNTMAX) {
-+ printk(KERN_ERR "oprofile: CPU%u disabling wrong PMNC counter"
-+ " %d\n", smp_processor_id(), cnt);
-+ return -1;
-+ }
-+
-+ if (cnt == CCNT)
-+ val = CNTENC_C;
-+ else
-+ val = (1 << (cnt - CNT0));
-+
-+ val &= CNTENC_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c12, 2" : : "r" (val));
-+
-+ return cnt;
-+}
-+
-+static inline u32 armv7_pmnc_enable_intens(unsigned int cnt)
-+{
-+ u32 val;
-+
-+ if (cnt >= CNTMAX) {
-+ printk(KERN_ERR "oprofile: CPU%u enabling wrong PMNC counter"
-+ " interrupt enable %d\n", smp_processor_id(), cnt);
-+ return -1;
-+ }
-+
-+ if (cnt == CCNT)
-+ val = INTENS_C;
-+ else
-+ val = (1 << (cnt - CNT0));
-+
-+ val &= INTENS_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c14, 1" : : "r" (val));
-+
-+ return cnt;
-+}
-+
-+static inline u32 armv7_pmnc_getreset_flags(void)
-+{
-+ u32 val;
-+
-+ /* Read */
-+ asm volatile("mrc p15, 0, %0, c9, c12, 3" : "=r" (val));
-+
-+ /* Write to clear flags */
-+ val &= FLAG_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c12, 3" : : "r" (val));
-+
-+ return val;
-+}
-+
-+static inline int armv7_pmnc_select_counter(unsigned int cnt)
-+{
-+ u32 val;
-+
-+ if ((cnt == CCNT) || (cnt >= CNTMAX)) {
-+ printk(KERN_ERR "oprofile: CPU%u selecting wrong PMNC counteri"
-+ " %d\n", smp_processor_id(), cnt);
-+ return -1;
-+ }
-+
-+ val = (cnt - CNT0) & SELECT_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c12, 5" : : "r" (val));
-+
-+ return cnt;
-+}
-+
-+static inline void armv7_pmnc_write_evtsel(unsigned int cnt, u32 val)
-+{
-+ if (armv7_pmnc_select_counter(cnt) == cnt) {
-+ val &= EVTSEL_MASK;
-+ asm volatile("mcr p15, 0, %0, c9, c13, 1" : : "r" (val));
-+ }
-+}
-+
-+static void armv7_pmnc_reset_counter(unsigned int cnt)
-+{
-+ u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
-+ u32 val = -(u32)counter_config[cpu_cnt].count;
-+
-+ switch (cnt) {
-+ case CCNT:
-+ armv7_pmnc_disable_counter(cnt);
-+
-+ asm volatile("mcr p15, 0, %0, c9, c13, 0" : : "r" (val));
-+
-+ if (cnt_en[cnt] != 0)
-+ armv7_pmnc_enable_counter(cnt);
-+
-+ break;
-+
-+ case CNT0:
-+ case CNT1:
-+ case CNT2:
-+ case CNT3:
-+ armv7_pmnc_disable_counter(cnt);
-+
-+ if (armv7_pmnc_select_counter(cnt) == cnt)
-+ asm volatile("mcr p15, 0, %0, c9, c13, 2" : : "r" (val));
-+
-+ if (cnt_en[cnt] != 0)
-+ armv7_pmnc_enable_counter(cnt);
-+
-+ break;
-+
-+ default:
-+ printk(KERN_ERR "oprofile: CPU%u resetting wrong PMNC counter"
-+ " %d\n", smp_processor_id(), cnt);
-+ break;
-+ }
-+}
-+
-+int armv7_setup_pmnc(void)
-+{
-+ unsigned int cnt;
-+
-+ if (armv7_pmnc_read() & PMNC_E) {
-+ printk(KERN_ERR "oprofile: CPU%u PMNC still enabled when setup"
-+ " new event counter.\n", smp_processor_id());
-+ return -EBUSY;
-+ }
-+
-+ /*
-+ * Initialize & Reset PMNC: C bit, D bit and P bit.
-+ * Note: Using a slower count for CCNT (D bit: divide by 64) results
-+ * in a more stable system
-+ */
-+ armv7_pmnc_write(PMNC_P | PMNC_C | PMNC_D);
-+
-+
-+ for (cnt = CCNT; cnt < CNTMAX; cnt++) {
-+ unsigned long event;
-+ u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
-+
-+ /*
-+ * Disable counter
-+ */
-+ armv7_pmnc_disable_counter(cnt);
-+ cnt_en[cnt] = 0;
-+
-+ if (!counter_config[cpu_cnt].enabled)
-+ continue;
-+
-+ event = counter_config[cpu_cnt].event & 255;
-+
-+ /*
-+ * Set event (if destined for PMNx counters)
-+ * We don't need to set the event if it's a cycle count
-+ */
-+ if (cnt != CCNT)
-+ armv7_pmnc_write_evtsel(cnt, event);
-+
-+ /*
-+ * Enable interrupt for this counter
-+ */
-+ armv7_pmnc_enable_intens(cnt);
-+
-+ /*
-+ * Reset counter
-+ */
-+ armv7_pmnc_reset_counter(cnt);
-+
-+ /*
-+ * Enable counter
-+ */
-+ armv7_pmnc_enable_counter(cnt);
-+ cnt_en[cnt] = 1;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline void armv7_start_pmnc(void)
-+{
-+ armv7_pmnc_write(armv7_pmnc_read() | PMNC_E);
-+}
-+
-+static inline void armv7_stop_pmnc(void)
-+{
-+ armv7_pmnc_write(armv7_pmnc_read() & ~PMNC_E);
-+}
-+
-+/*
-+ * CPU counters' IRQ handler (one IRQ per CPU)
-+ */
-+static irqreturn_t armv7_pmnc_interrupt(int irq, void *arg)
-+{
-+ struct pt_regs *regs = get_irq_regs();
-+ unsigned int cnt;
-+ u32 flags;
-+
-+
-+ /*
-+ * Stop IRQ generation
-+ */
-+ armv7_stop_pmnc();
-+
-+ /*
-+ * Get and reset overflow status flags
-+ */
-+ flags = armv7_pmnc_getreset_flags();
-+
-+ /*
-+ * Cycle counter
-+ */
-+ if (flags & FLAG_C) {
-+ u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), CCNT);
-+ armv7_pmnc_reset_counter(CCNT);
-+ oprofile_add_sample(regs, cpu_cnt);
-+ }
-+
-+ /*
-+ * PMNC counters 0:3
-+ */
-+ for (cnt = CNT0; cnt < CNTMAX; cnt++) {
-+ if (flags & (1 << (cnt - CNT0))) {
-+ u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
-+ armv7_pmnc_reset_counter(cnt);
-+ oprofile_add_sample(regs, cpu_cnt);
-+ }
-+ }
-+
-+ /*
-+ * Allow IRQ generation
-+ */
-+ armv7_start_pmnc();
-+
-+ return IRQ_HANDLED;
-+}
-+
-+int armv7_request_interrupts(int *irqs, int nr)
-+{
-+ unsigned int i;
-+ int ret = 0;
-+
-+ for (i = 0; i < nr; i++) {
-+ ret = request_irq(irqs[i], armv7_pmnc_interrupt,
-+ IRQF_DISABLED, "CP15 PMNC", NULL);
-+ if (ret != 0) {
-+ printk(KERN_ERR "oprofile: unable to request IRQ%u"
-+ " for ARMv7\n",
-+ irqs[i]);
-+ break;
-+ }
-+ }
-+
-+ if (i != nr)
-+ while (i-- != 0)
-+ free_irq(irqs[i], NULL);
-+
-+ return ret;
-+}
-+
-+void armv7_release_interrupts(int *irqs, int nr)
-+{
-+ unsigned int i;
-+
-+ for (i = 0; i < nr; i++)
-+ free_irq(irqs[i], NULL);
-+}
-+
-+#ifdef DEBUG
-+static void armv7_pmnc_dump_regs(void)
-+{
-+ u32 val;
-+ unsigned int cnt;
-+
-+ printk(KERN_INFO "PMNC registers dump:\n");
-+
-+ asm volatile("mrc p15, 0, %0, c9, c12, 0" : "=r" (val));
-+ printk(KERN_INFO "PMNC =0x%08x\n", val);
-+
-+ asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r" (val));
-+ printk(KERN_INFO "CNTENS=0x%08x\n", val);
-+
-+ asm volatile("mrc p15, 0, %0, c9, c14, 1" : "=r" (val));
-+ printk(KERN_INFO "INTENS=0x%08x\n", val);
-+
-+ asm volatile("mrc p15, 0, %0, c9, c12, 3" : "=r" (val));
-+ printk(KERN_INFO "FLAGS =0x%08x\n", val);
-+
-+ asm volatile("mrc p15, 0, %0, c9, c12, 5" : "=r" (val));
-+ printk(KERN_INFO "SELECT=0x%08x\n", val);
-+
-+ asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (val));
-+ printk(KERN_INFO "CCNT =0x%08x\n", val);
-+
-+ for (cnt = CNT0; cnt < CNTMAX; cnt++) {
-+ armv7_pmnc_select_counter(cnt);
-+ asm volatile("mrc p15, 0, %0, c9, c13, 2" : "=r" (val));
-+ printk(KERN_INFO "CNT[%d] count =0x%08x\n", cnt-CNT0, val);
-+ asm volatile("mrc p15, 0, %0, c9, c13, 1" : "=r" (val));
-+ printk(KERN_INFO "CNT[%d] evtsel=0x%08x\n", cnt-CNT0, val);
-+ }
-+}
-+#endif
-+
-+
-+static int irqs[] = {
-+#ifdef CONFIG_ARCH_OMAP3
-+ INT_34XX_BENCH_MPU_EMUL,
-+#endif
-+};
-+
-+static void armv7_pmnc_stop(void)
-+{
-+#ifdef DEBUG
-+ armv7_pmnc_dump_regs();
-+#endif
-+ armv7_stop_pmnc();
-+ armv7_release_interrupts(irqs, ARRAY_SIZE(irqs));
-+}
-+
-+static int armv7_pmnc_start(void)
-+{
-+ int ret;
-+
-+#ifdef DEBUG
-+ armv7_pmnc_dump_regs();
-+#endif
-+ ret = armv7_request_interrupts(irqs, ARRAY_SIZE(irqs));
-+ if (ret >= 0)
-+ armv7_start_pmnc();
-+
-+ return ret;
-+}
-+
-+static int armv7_detect_pmnc(void)
-+{
-+ return 0;
-+}
-+
-+struct op_arm_model_spec op_armv7_spec = {
-+ .init = armv7_detect_pmnc,
-+ .num_counters = 5,
-+ .setup_ctrs = armv7_setup_pmnc,
-+ .start = armv7_pmnc_start,
-+ .stop = armv7_pmnc_stop,
-+ .name = "arm/armv7",
-+};
-diff --git a/arch/arm/oprofile/op_model_v7.h b/arch/arm/oprofile/op_model_v7.h
-new file mode 100644
-index 0000000..08f40ea
---- /dev/null
-+++ b/arch/arm/oprofile/op_model_v7.h
-@@ -0,0 +1,101 @@
-+/**
-+ * @file op_model_v7.h
-+ * ARM v7 (Cortex A8) Event Monitor Driver
-+ *
-+ * @remark Copyright 2008 Jean Pihet <jpihet@mvista.com>
-+ * @remark Copyright 2004 ARM SMP Development Team
-+ * @remark Copyright 2000-2004 Deepak Saxena <dsaxena@mvista.com>
-+ * @remark Copyright 2000-2004 MontaVista Software Inc
-+ * @remark Copyright 2004 Dave Jiang <dave.jiang@intel.com>
-+ * @remark Copyright 2004 Intel Corporation
-+ * @remark Copyright 2004 Zwane Mwaikambo <zwane@arm.linux.org.uk>
-+ * @remark Copyright 2004 Oprofile Authors
-+ *
-+ * @remark Read the file COPYING
-+ *
-+ * @author Zwane Mwaikambo
-+ */
-+#ifndef OP_MODEL_V7_H
-+#define OP_MODEL_V7_H
-+
-+/*
-+ * Per-CPU PMNC: config reg
-+ */
-+#define PMNC_E (1 << 0) /* Enable all counters */
-+#define PMNC_P (1 << 1) /* Reset all counters */
-+#define PMNC_C (1 << 2) /* Cycle counter reset */
-+#define PMNC_D (1 << 3) /* CCNT counts every 64th cpu cycle */
-+#define PMNC_X (1 << 4) /* Export to ETM */
-+#define PMNC_DP (1 << 5) /* Disable CCNT if non-invasive debug*/
-+#define PMNC_MASK 0x3f /* Mask for writable bits */
-+
-+/*
-+ * Available counters
-+ */
-+#define CCNT 0
-+#define CNT0 1
-+#define CNT1 2
-+#define CNT2 3
-+#define CNT3 4
-+#define CNTMAX 5
-+
-+#define CPU_COUNTER(cpu, counter) ((cpu) * CNTMAX + (counter))
-+
-+/*
-+ * CNTENS: counters enable reg
-+ */
-+#define CNTENS_P0 (1 << 0)
-+#define CNTENS_P1 (1 << 1)
-+#define CNTENS_P2 (1 << 2)
-+#define CNTENS_P3 (1 << 3)
-+#define CNTENS_C (1 << 31)
-+#define CNTENS_MASK 0x8000000f /* Mask for writable bits */
-+
-+/*
-+ * CNTENC: counters disable reg
-+ */
-+#define CNTENC_P0 (1 << 0)
-+#define CNTENC_P1 (1 << 1)
-+#define CNTENC_P2 (1 << 2)
-+#define CNTENC_P3 (1 << 3)
-+#define CNTENC_C (1 << 31)
-+#define CNTENC_MASK 0x8000000f /* Mask for writable bits */
-+
-+/*
-+ * INTENS: counters overflow interrupt enable reg
-+ */
-+#define INTENS_P0 (1 << 0)
-+#define INTENS_P1 (1 << 1)
-+#define INTENS_P2 (1 << 2)
-+#define INTENS_P3 (1 << 3)
-+#define INTENS_C (1 << 31)
-+#define INTENS_MASK 0x8000000f /* Mask for writable bits */
-+
-+/*
-+ * EVTSEL: Event selection reg
-+ */
-+#define EVTSEL_MASK 0x7f /* Mask for writable bits */
-+
-+/*
-+ * SELECT: Counter selection reg
-+ */
-+#define SELECT_MASK 0x1f /* Mask for writable bits */
-+
-+/*
-+ * FLAG: counters overflow flag status reg
-+ */
-+#define FLAG_P0 (1 << 0)
-+#define FLAG_P1 (1 << 1)
-+#define FLAG_P2 (1 << 2)
-+#define FLAG_P3 (1 << 3)
-+#define FLAG_C (1 << 31)
-+#define FLAG_MASK 0x8000000f /* Mask for writable bits */
-+
-+
-+int armv7_setup_pmu(void);
-+int armv7_start_pmu(void);
-+int armv7_stop_pmu(void);
-+int armv7_request_interrupts(int *, int);
-+void armv7_release_interrupts(int *, int);
-+
-+#endif
-diff --git a/include/asm-arm/arch-omap/irqs.h
-b/include/asm-arm/arch-omap/irqs.h
-index c80e160..89ca90e 100644
---- a/include/asm-arm/arch-omap/irqs.h
-+++ b/include/asm-arm/arch-omap/irqs.h
-@@ -297,6 +297,7 @@
- #define INT_243X_HS_USB_DMA 93
- #define INT_243X_CARKIT_IRQ 94
-
-+#define INT_34XX_BENCH_MPU_EMUL 3
- #define INT_34XX_ST_MCBSP2_IRQ 4
- #define INT_34XX_ST_MCBSP3_IRQ 5
- #define INT_34XX_SYS_NIRQ 7
diff --git a/packages/linux/linux-omap2-git/beagleboard/read_die_ids.patch b/packages/linux/linux-omap2-git/beagleboard/read_die_ids.patch
deleted file mode 100644
index 3f6c930cc1..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/read_die_ids.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-OMAP2/3 TAP: enable debug messages
-
-From: Paul Walmsley <paul@pwsan.com>
-
-This patch causes the OMAP2/3 chip ID code to display the full DIE_ID registers at boot.
-
----
-
- arch/arm/mach-omap2/id.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
-index c7f9ab7..a154b5e 100644
---- a/arch/arm/mach-omap2/id.c
-+++ b/arch/arm/mach-omap2/id.c
-@@ -10,6 +10,7 @@
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-+#define DEBUG
-
- #include <linux/module.h>
- #include <linux/kernel.h>
diff --git a/packages/linux/linux-omap2-git/beagleboard/soc.patch b/packages/linux/linux-omap2-git/beagleboard/soc.patch
deleted file mode 100644
index f4cce21ca7..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/soc.patch
+++ /dev/null
@@ -1,1154 +0,0 @@
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 3903ab7..468536d 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -44,3 +44,7 @@ config SND_SOC_CS4270_VD33_ERRATA
- config SND_SOC_TLV320AIC3X
- tristate
- depends on SND_SOC && I2C
-+
-+config SND_SOC_TWL4030
-+ tristate
-+ depends on SND_SOC && I2C
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index 4e1314c..d2c0b12 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -6,6 +6,7 @@ snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
- snd-soc-cs4270-objs := cs4270.o
- snd-soc-tlv320aic3x-objs := tlv320aic3x.o
-+snd-soc-twl4030-objs := twl4030.o
-
- obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
- obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
-@@ -15,3 +16,4 @@ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
- obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
- obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-cs4270.o
- obj-$(CONFIG_SND_SOC_TLV320AIC3X) += snd-soc-tlv320aic3x.o
-+obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o
-diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
-new file mode 100644
-index 0000000..eb8370c
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.c
-@@ -0,0 +1,625 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c/twl4030.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "twl4030.h"
-+
-+/*
-+ * twl4030 register cache & default register settings
-+ */
-+static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
-+ 0x00, // this register not used
-+ 0x93, // REG_CODEC_MODE (0x1)
-+ 0xc3, // REG_OPTION (0x2)
-+ 0x00, // REG_UNKNOWN (0x3)
-+ 0x00, // REG_MICBIAS_CTL (0x4)
-+ 0x34, // REG_ANAMICL (0x5)
-+ 0x14, // REG_ANAMICR (0x6)
-+ 0x0a, // REG_AVADC_CTL (0x7)
-+ 0x00, // REG_ADCMICSEL (0x8)
-+ 0x00, // REG_DIGMIXING (0x9)
-+ 0x0c, // REG_ATXL1PGA (0xA)
-+ 0x0c, // REG_ATXR1PGA (0xB)
-+ 0x00, // REG_AVTXL2PGA (0xC)
-+ 0x00, // REG_AVTXR2PGA (0xD)
-+ 0x01, // REG_AUDIO_IF (0xE)
-+ 0x00, // REG_VOICE_IF (0xF)
-+ 0x00, // REG_ARXR1PGA (0x10)
-+ 0x00, // REG_ARXL1PGA (0x11)
-+ 0x6c, // REG_ARXR2PGA (0x12)
-+ 0x6c, // REG_ARXL2PGA (0x13)
-+ 0x00, // REG_VRXPGA (0x14)
-+ 0x00, // REG_VSTPGA (0x15)
-+ 0x00, // REG_VRX2ARXPGA (0x16)
-+ 0x0c, // REG_AVDAC_CTL (0x17)
-+ 0x00, // REG_ARX2VTXPGA (0x18)
-+ 0x00, // REG_ARXL1_APGA_CTL (0x19)
-+ 0x00, // REG_ARXR1_APGA_CTL (0x1A)
-+ 0x4b, // REG_ARXL2_APGA_CTL (0x1B)
-+ 0x4b, // REG_ARXR2_APGA_CTL (0x1C)
-+ 0x00, // REG_ATX2ARXPGA (0x1D)
-+ 0x00, // REG_BT_IF (0x1E)
-+ 0x00, // REG_BTPGA (0x1F)
-+ 0x00, // REG_BTSTPGA (0x20)
-+ 0x00, // REG_EAR_CTL (0x21)
-+ 0x24, // REG_HS_SEL (0x22)
-+ 0x0a, // REG_HS_GAIN_SET (0x23)
-+ 0x00, // REG_HS_POPN_SET (0x24)
-+ 0x00, // REG_PREDL_CTL (0x25)
-+ 0x00, // REG_PREDR_CTL (0x26)
-+ 0x00, // REG_PRECKL_CTL (0x27)
-+ 0x00, // REG_PRECKR_CTL (0x28)
-+ 0x00, // REG_HFL_CTL (0x29)
-+ 0x00, // REG_HFR_CTL (0x2A)
-+ 0x00, // REG_ALC_CTL (0x2B)
-+ 0x00, // REG_ALC_SET1 (0x2C)
-+ 0x00, // REG_ALC_SET2 (0x2D)
-+ 0x00, // REG_BOOST_CTL (0x2E)
-+ 0x01, // REG_SOFTVOL_CTL (0x2F)
-+ 0x00, // REG_DTMF_FREQSEL (0x30)
-+ 0x00, // REG_DTMF_TONEXT1H (0x31)
-+ 0x00, // REG_DTMF_TONEXT1L (0x32)
-+ 0x00, // REG_DTMF_TONEXT2H (0x33)
-+ 0x00, // REG_DTMF_TONEXT2L (0x34)
-+ 0x00, // REG_DTMF_TONOFF (0x35)
-+ 0x00, // REG_DTMF_WANONOFF (0x36)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_H (0x37)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_M (0x38)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_L (0x39)
-+ 0x16, // REG_APLL_CTL (0x3A)
-+ 0x00, // REG_DTMF_CTL (0x3B)
-+ 0x00, // REG_DTMF_PGA_CTL2 (0x3C)
-+ 0x00, // REG_DTMF_PGA_CTL1 (0x3D)
-+ 0x00, // REG_MISC_SET_1 (0x3E)
-+ 0x00, // REG_PCMBTMUX (0x3F)
-+ 0x00, // REG_RX_PATH_SEL (0x43)
-+ 0x00, // REG_VDL_APGA_CTL (0x44)
-+ 0x00, // REG_VIBRA_CTL (0x45)
-+ 0x00, // REG_VIBRA_SET (0x46)
-+ 0x00, // REG_VIBRA_PWM_SET (0x47)
-+ 0x00, // REG_ANAMIC_GAIN (0x48)
-+ 0x00, // REG_MISC_SET_2 (0x49)
-+};
-+
-+static void twl4030_dump_registers(void)
-+{
-+ int i = 0;
-+ u8 data;
-+
-+ printk(KERN_INFO "TWL 4030 Register dump for Audio Module\n");
-+
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &data, i);
-+ printk(KERN_INFO "Register[0x%02x]=0x%02x\n", i, data);
-+ }
-+}
-+
-+struct twl4030_priv {
-+ unsigned int dummy;
-+};
-+
-+/*
-+ * read twl4030 register cache
-+ */
-+static inline unsigned int twl4030_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ return cache[reg];
-+}
-+
-+/*
-+ * write twl4030 register cache
-+ */
-+static inline void twl4030_write_reg_cache(struct snd_soc_codec *codec,
-+ u8 reg, u8 value)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ if (reg >= TWL4030_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the twl4030 register space
-+ */
-+static int twl4030_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ twl4030_write_reg_cache(codec, reg, value);
-+ return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg);
-+}
-+
-+static void twl4030_init_chip(void)
-+{
-+ unsigned char byte;
-+ int i;
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE] & 0xfd, REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ for (i = REG_OPTION; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, twl4030_reg[i], i);
-+ }
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE], REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ /* initiate offset cancellation */
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_ANAMICL] | 0x80, REG_ANAMICL);
-+
-+ /* wait for offset cancellation to complete */
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte, REG_ANAMICL);
-+ while ((byte & 0x80) == 0x80)
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte, REG_ANAMICL);
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_MISC_SET_1] | 0x02, REG_MISC_SET_1);
-+
-+}
-+
-+static const struct snd_kcontrol_new twl4030_snd_controls[] = {
-+ SOC_DOUBLE_R("Master Playback Volume",
-+ REG_ARXL2PGA, REG_ARXR2PGA,
-+ 0, 127, 0),
-+ SOC_DOUBLE_R("Capture Volume",
-+ REG_ATXL1PGA, REG_ATXR1PGA,
-+ 0, 127, 0),
-+};
-+
-+/* add non dapm controls */
-+static int twl4030_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&twl4030_snd_controls[i],
-+ codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
-+ SND_SOC_DAPM_INPUT("INL"),
-+ SND_SOC_DAPM_INPUT("INR"),
-+
-+ SND_SOC_DAPM_OUTPUT("OUTL"),
-+ SND_SOC_DAPM_OUTPUT("OUTR"),
-+
-+ SND_SOC_DAPM_DAC("DACL", "Left Playback", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_DAC("DACR", "Right Playback", SND_SOC_NOPM, 0, 0),
-+
-+ SND_SOC_DAPM_ADC("ADCL", "Left Capture", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_ADC("ADCR", "Right Capture", SND_SOC_NOPM, 0, 0),
-+};
-+
-+static const char *intercon[][3] = {
-+ /* outputs */
-+ {"OUTL", NULL, "DACL"},
-+ {"OUTR", NULL, "DACR"},
-+
-+ /* inputs */
-+ {"ADCL", NULL, "INL"},
-+ {"ADCR", NULL, "INR"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int twl4030_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_dapm_widgets); i++)
-+ snd_soc_dapm_new_control(codec, &twl4030_dapm_widgets[i]);
-+
-+ /* set up audio path interconnects */
-+ for (i = 0; intercon[i][0] != NULL; i++)
-+ snd_soc_dapm_connect_input(codec, intercon[i][0],
-+ intercon[i][1], intercon[i][2]);
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static int twl4030_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec dapm event\n");
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* off, with power */
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* off, without power */
-+ break;
-+ }
-+ codec->dapm_state = event;
-+
-+ return 0;
-+}
-+
-+static void twl4030_power_up (struct snd_soc_codec *codec, u8 mode)
-+{
-+ u8 popn, hsgain;
-+
-+ twl4030_write(codec, REG_CODEC_MODE, mode & ~CODECPDZ);
-+ twl4030_write(codec, REG_CODEC_MODE, mode | CODECPDZ);
-+ udelay(10);
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= RAMP_DELAY;
-+ popn |= VMID_EN | RAMP_DELAY_161MS;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_0DB| HSL_GAIN_0DB;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn |= RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+}
-+
-+static void twl4030_power_down (struct snd_soc_codec *codec)
-+{
-+ u8 popn, hsgain, mode;
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= ~RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_PWR_DOWN | HSL_GAIN_PWR_DOWN;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn &= ~VMID_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ udelay(10);
-+}
-+
-+
-+static int twl4030_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_mode, format, old_format;
-+
-+
-+ /* bit rate */
-+ old_mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE) & ~CODECPDZ;
-+ mode = old_mode;
-+ mode &= ~APLL_RATE;
-+ switch (params_rate(params)) {
-+ case 44100:
-+ mode |= APLL_RATE_44100;
-+ break;
-+ case 48000:
-+ mode |= APLL_RATE_48000;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown rate %d\n", params_rate(params));
-+ return -EINVAL;
-+ }
-+
-+ if (mode != old_mode) {
-+ /* change rate and turn codec back on */
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ /* sample size */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+ format &= ~DATA_WIDTH;
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ format |= DATA_WIDTH_16S_16W;
-+ break;
-+ case SNDRV_PCM_FORMAT_S24_LE:
-+ format |= DATA_WIDTH_32S_24W;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown format %d\n", params_format(params));
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ /* turn on codec */
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+ return 0;
-+}
-+
-+static int twl4030_mute(struct snd_soc_codec_dai *dai, int mute)
-+{
-+ struct snd_soc_codec *codec = dai->codec;
-+
-+ u8 ldac_reg = twl4030_read_reg_cache(codec, REG_ARXL2PGA);
-+ u8 rdac_reg = twl4030_read_reg_cache(codec, REG_ARXR2PGA);
-+
-+ if (mute) {
-+ /* printk(KERN_INFO "TWL4030 Audio Codec mute\n"); */
-+ twl4030_write(codec, REG_ARXL2PGA, 0x00);
-+ twl4030_write(codec, REG_ARXR2PGA, 0x00);
-+ twl4030_write_reg_cache(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write_reg_cache(codec, REG_ARXR2PGA, rdac_reg);
-+ }
-+ else {
-+ /* printk(KERN_INFO "TWL4030 Audio Codec unmute: %02x/%02x\n", ldac_reg, rdac_reg); */
-+ twl4030_write(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write(codec, REG_ARXR2PGA, rdac_reg);
-+ }
-+
-+ return 0;
-+}
-+
-+static int twl4030_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
-+ unsigned int fmt)
-+{
-+ struct snd_soc_codec *codec = codec_dai->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_format, format;
-+
-+ /* get format */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+
-+ /* set master/slave audio interface */
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: master\n"); */
-+ format &= ~(AIF_SLAVE_EN);
-+ format |= CLK256FS_EN;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: slave\n"); */
-+ format &= ~(CLK256FS_EN);
-+ format |= AIF_SLAVE_EN;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ /* interface format */
-+ format &= ~AIF_FORMAT;
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: i2s\n"); */
-+ format |= AIF_FORMAT_CODEC;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ return 0;
-+}
-+
-+#define TWL4030_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000
-+#define TWL4030_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE
-+
-+struct snd_soc_codec_dai twl4030_dai = {
-+ .name = "twl4030",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .ops = {
-+ .hw_params = twl4030_hw_params,
-+ },
-+ .dai_ops = {
-+ .digital_mute = twl4030_mute,
-+ .set_fmt = twl4030_set_dai_fmt,
-+ }
-+};
-+
-+EXPORT_SYMBOL_GPL(twl4030_dai);
-+
-+static int twl4030_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec suspend\n");
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ return 0;
-+}
-+
-+static int twl4030_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u16 *cache = codec->reg_cache;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec resume\n");
-+ /* Sync reg_cache with the hardware */
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, cache[i], i);
-+ }
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ twl4030_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialize the driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+
-+static int twl4030_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec init \n");
-+
-+ codec->name = "twl4030";
-+ codec->owner = THIS_MODULE;
-+ codec->read = twl4030_read_reg_cache;
-+ codec->write = twl4030_write;
-+ codec->dapm_event = twl4030_dapm_event;
-+ codec->dai = &twl4030_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = sizeof(twl4030_reg);
-+ codec->reg_cache = kmemdup(twl4030_reg, sizeof(twl4030_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to create pcms\n");
-+ goto pcm_err;
-+ }
-+
-+ twl4030_add_controls(codec);
-+ twl4030_add_widgets(codec);
-+
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to register card\n");
-+ goto card_err;
-+ }
-+
-+ twl4030_init_chip();
-+ twl4030_power_up(codec, APLL_RATE_44100 | OPT_MODE);
-+
-+ return ret;
-+
-+card_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init card error\n");
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+pcm_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init pcm error\n");
-+ kfree(codec->reg_cache);
-+ return ret;
-+}
-+
-+static struct snd_soc_device *twl4030_socdev;
-+
-+static int twl4030_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ struct twl4030_priv *twl4030;
-+
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ twl4030 = kzalloc(sizeof(struct twl4030_priv), GFP_KERNEL);
-+ if (twl4030 == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+
-+ codec->private_data = twl4030;
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ twl4030_socdev = socdev;
-+ twl4030_init(socdev);
-+
-+ return 0;
-+}
-+
-+static int twl4030_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec remove\n");
-+ kfree(codec->private_data);
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_twl4030 = {
-+ .probe = twl4030_probe,
-+ .remove = twl4030_remove,
-+ .suspend = twl4030_suspend,
-+ .resume = twl4030_resume,
-+};
-+EXPORT_SYMBOL_GPL(soc_codec_dev_twl4030);
-+
-+MODULE_DESCRIPTION("ASoC TWL4030 codec driver");
-+MODULE_AUTHOR("Steve Sakoman");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/codecs/twl4030.h b/sound/soc/codecs/twl4030.h
-new file mode 100644
-index 0000000..e126f96
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.h
-@@ -0,0 +1,152 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __TWL4030_AUDIO_H__
-+#define __TWL4030_AUDIO_H__
-+
-+#define REG_CODEC_MODE 0x1
-+#define REG_OPTION 0x2
-+#define REG_UNKNOWN 0x3
-+#define REG_MICBIAS_CTL 0x4
-+#define REG_ANAMICL 0x5
-+#define REG_ANAMICR 0x6
-+#define REG_AVADC_CTL 0x7
-+#define REG_ADCMICSEL 0x8
-+#define REG_DIGMIXING 0x9
-+#define REG_ATXL1PGA 0xA
-+#define REG_ATXR1PGA 0xB
-+#define REG_AVTXL2PGA 0xC
-+#define REG_AVTXR2PGA 0xD
-+#define REG_AUDIO_IF 0xE
-+#define REG_VOICE_IF 0xF
-+#define REG_ARXR1PGA 0x10
-+#define REG_ARXL1PGA 0x11
-+#define REG_ARXR2PGA 0x12
-+#define REG_ARXL2PGA 0x13
-+#define REG_VRXPGA 0x14
-+#define REG_VSTPGA 0x15
-+#define REG_VRX2ARXPGA 0x16
-+#define REG_AVDAC_CTL 0x17
-+#define REG_ARX2VTXPGA 0x18
-+#define REG_ARXL1_APGA_CTL 0x19
-+#define REG_ARXR1_APGA_CTL 0x1A
-+#define REG_ARXL2_APGA_CTL 0x1B
-+#define REG_ARXR2_APGA_CTL 0x1C
-+#define REG_ATX2ARXPGA 0x1D
-+#define REG_BT_IF 0x1E
-+#define REG_BTPGA 0x1F
-+#define REG_BTSTPGA 0x20
-+#define REG_EAR_CTL 0x21
-+#define REG_HS_SEL 0x22
-+#define REG_HS_GAIN_SET 0x23
-+#define REG_HS_POPN_SET 0x24
-+#define REG_PREDL_CTL 0x25
-+#define REG_PREDR_CTL 0x26
-+#define REG_PRECKL_CTL 0x27
-+#define REG_PRECKR_CTL 0x28
-+#define REG_HFL_CTL 0x29
-+#define REG_HFR_CTL 0x2A
-+#define REG_ALC_CTL 0x2B
-+#define REG_ALC_SET1 0x2C
-+#define REG_ALC_SET2 0x2D
-+#define REG_BOOST_CTL 0x2E
-+#define REG_SOFTVOL_CTL 0x2F
-+#define REG_DTMF_FREQSEL 0x30
-+#define REG_DTMF_TONEXT1H 0x31
-+#define REG_DTMF_TONEXT1L 0x32
-+#define REG_DTMF_TONEXT2H 0x33
-+#define REG_DTMF_TONEXT2L 0x34
-+#define REG_DTMF_TONOFF 0x35
-+#define REG_DTMF_WANONOFF 0x36
-+#define REG_I2S_RX_SCRAMBLE_H 0x37
-+#define REG_I2S_RX_SCRAMBLE_M 0x38
-+#define REG_I2S_RX_SCRAMBLE_L 0x39
-+#define REG_APLL_CTL 0x3A
-+#define REG_DTMF_CTL 0x3B
-+#define REG_DTMF_PGA_CTL2 0x3C
-+#define REG_DTMF_PGA_CTL1 0x3D
-+#define REG_MISC_SET_1 0x3E
-+#define REG_PCMBTMUX 0x3F
-+#define REG_RX_PATH_SEL 0x43
-+#define REG_VDL_APGA_CTL 0x44
-+#define REG_VIBRA_CTL 0x45
-+#define REG_VIBRA_SET 0x46
-+#define REG_VIBRA_PWM_SET 0x47
-+#define REG_ANAMIC_GAIN 0x48
-+#define REG_MISC_SET_2 0x49
-+
-+#define TWL4030_CACHEREGNUM REG_MISC_SET_2 + 1
-+
-+/* Bitfield Definitions */
-+
-+/* CODEC_MODE (0x01) Fields */
-+
-+#define APLL_RATE 0xF0
-+#define APLL_RATE_8000 0x00
-+#define APLL_RATE_11025 0x10
-+#define APLL_RATE_12000 0x20
-+#define APLL_RATE_16000 0x40
-+#define APLL_RATE_22050 0x50
-+#define APLL_RATE_24000 0x60
-+#define APLL_RATE_32000 0x80
-+#define APLL_RATE_44100 0x90
-+#define APLL_RATE_48000 0xa0
-+#define SEL_16K 0x04
-+#define CODECPDZ 0x02
-+#define OPT_MODE 0x01
-+
-+/* AUDIO_IF (0x0E) Fields */
-+
-+#define AIF_SLAVE_EN 0x80
-+#define DATA_WIDTH 0x60
-+#define DATA_WIDTH_16S_16W 0x00
-+#define DATA_WIDTH_32S_16W 0x40
-+#define DATA_WIDTH_32S_24W 0x60
-+#define AIF_FORMAT 0x18
-+#define AIF_FORMAT_CODEC 0x00
-+#define AIF_FORMAT_LEFT 0x08
-+#define AIF_FORMAT_RIGHT 0x10
-+#define AIF_FORMAT_TDM 0x18
-+#define AIF_TRI_EN 0x04
-+#define CLK256FS_EN 0x02
-+#define AIF_EN 0x01
-+
-+/* HS_GAIN_SET (0x23) Fields */
-+
-+#define HSR_GAIN 0x0c
-+#define HSR_GAIN_PWR_DOWN 0x00
-+#define HSR_GAIN_PLUS_6DB 0x04
-+#define HSR_GAIN_0DB 0x08
-+#define HSR_GAIN_MINUS_6DB 0x0c
-+#define HSL_GAIN 0x0c
-+#define HSL_GAIN_PWR_DOWN 0x00
-+#define HSL_GAIN_PLUS_6DB 0x01
-+#define HSL_GAIN_0DB 0x02
-+#define HSL_GAIN_MINUS_6DB 0x03
-+
-+/* HS_POPN_SET (0x24) Fields */
-+
-+#define VMID_EN 0x40
-+#define EXTMUTE 0x20
-+#define RAMP_DELAY 0x1C
-+#define RAMP_DELAY_20MS 0x00
-+#define RAMP_DELAY_40MS 0x04
-+#define RAMP_DELAY_81MS 0x08
-+#define RAMP_DELAY_161MS 0x0c
-+#define RAMP_DELAY_323MS 0x10
-+#define RAMP_DELAY_645MS 0x14
-+#define RAMP_DELAY_1291MS 0x18
-+#define RAMP_DELAY_2581MS 0x1c
-+#define RAMP_EN 0x02
-+
-+extern struct snd_soc_codec_dai twl4030_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_twl4030;
-+
-+#endif /* End of __TWL4030_AUDIO_H__ */
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 0230d83..8703cea 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -16,4 +16,20 @@ config SND_OMAP_SOC_N810
- help
- Say Y if you want to add support for SoC audio on Nokia N810.
-
-+config SND_OMAP_SOC_OMAP3EVM
-+ tristate "SoC Audio support for OMAP3 EVM"
-+ depends on SND_OMAP_SOC && MACH_OMAP3EVM
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 EVM.
-+
-+config SND_OMAP_SOC_OMAP3BEAGLE
-+ tristate "SoC Audio support for OMAP3 Beagle"
-+ depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 Beagle.
-+
- endmenu
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index d8d8d58..638a240 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -7,5 +7,10 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
-
- # OMAP Machine Support
- snd-soc-n810-objs := n810.o
-+snd-soc-omap3evm-objs := omap3evm.o
-+snd-soc-omap3beagle-objs := omap3beagle.o
-
- obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3BEAGLE) += snd-soc-omap3beagle.o
-+
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-new file mode 100644
-index 0000000..878f894
---- /dev/null
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3beagle.c -- SoC audio for OMAP3 Beagle
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3beagle_ops = {
-+ .hw_params = omap3beagle_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3beagle_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3beagle_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3beagle = {
-+ .name = "omap3beagle",
-+ .dai_link = &omap3beagle_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3beagle_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3beagle,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3beagle_snd_device;
-+
-+static int __init omap3beagle_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 Beagle SoC init\n");
-+ if (!machine_is_omap3_beagle()) {
-+ printk(KERN_INFO "Not OMAP3 Beagle!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3beagle_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3beagle_snd_device, &omap3beagle_snd_devdata);
-+ omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
-+ *(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3beagle_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3beagle_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3beagle_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 Beagle SoC exit\n");
-+ platform_device_unregister(omap3beagle_snd_device);
-+}
-+
-+module_init(omap3beagle_soc_init);
-+module_exit(omap3beagle_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
-new file mode 100644
-index 0000000..a64c788
---- /dev/null
-+++ b/sound/soc/omap/omap3evm.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3evm.c -- SoC audio for OMAP3 EVM
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3evm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3evm_ops = {
-+ .hw_params = omap3evm_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3evm_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3evm_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3evm = {
-+ .name = "omap3evm",
-+ .dai_link = &omap3evm_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3evm_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3evm,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3evm_snd_device;
-+
-+static int __init omap3evm_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 EVM SoC init\n");
-+ if (!machine_is_omap3evm()) {
-+ printk(KERN_INFO "Not OMAP3 EVM!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3evm_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3evm_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3evm_snd_device, &omap3evm_snd_devdata);
-+ omap3evm_snd_devdata.dev = &omap3evm_snd_device->dev;
-+ *(unsigned int *)omap3evm_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3evm_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3evm_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3evm_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 EVM SoC exit\n");
-+ platform_device_unregister(omap3evm_snd_device);
-+}
-+
-+module_init(omap3evm_soc_init);
-+module_exit(omap3evm_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch b/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch
deleted file mode 100644
index 04362c96e3..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/timer-suppression.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index b854a89..26f5569 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -253,6 +253,16 @@ void tick_nohz_stop_sched_tick(void)
-
- /* Schedule the tick, if we are at least one jiffie off */
- if ((long)delta_jiffies >= 1) {
-+ /*
-+ * calculate the expiry time for the next timer wheel
-+ * timer
-+ */
-+ expires = ktime_add_ns(last_update, tick_period.tv64 *
-+ delta_jiffies);
-+
-+ /* Skip reprogram of event if its not changed */
-+ if(ts->tick_stopped && ktime_equal(expires, dev->next_event))
-+ goto out2;
-
- if (delta_jiffies > 1)
- cpu_set(cpu, nohz_cpu_mask);
-@@ -304,12 +314,7 @@ void tick_nohz_stop_sched_tick(void)
- goto out;
- }
-
-- /*
-- * calculate the expiry time for the next timer wheel
-- * timer
-- */
-- expires = ktime_add_ns(last_update, tick_period.tv64 *
-- delta_jiffies);
-+ /* Mark expiries */
- ts->idle_expires = expires;
-
- if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
-@@ -328,6 +333,7 @@ void tick_nohz_stop_sched_tick(void)
- tick_do_update_jiffies64(ktime_get());
- cpu_clear(cpu, nohz_cpu_mask);
- }
-+out2:
- raise_softirq_irqoff(TIMER_SOFTIRQ);
- out:
- ts->next_jiffies = next_jiffies;
diff --git a/packages/linux/linux-omap2-git/omap-2430-lcd.patch b/packages/linux/linux-omap2-git/omap-2430-lcd.patch
deleted file mode 100644
index 8f8a687c06..0000000000
--- a/packages/linux/linux-omap2-git/omap-2430-lcd.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- git/drivers/video/omap/lcd_2430sdp.c.orig 2007-08-13 14:35:17.000000000 -0700
-+++ git/drivers/video/omap/lcd_2430sdp.c 2007-08-13 14:35:55.000000000 -0700
-@@ -32,7 +32,7 @@
- #define LCD_PANEL_BACKLIGHT_GPIO 91
- #define LCD_PANEL_ENABLE_GPIO 154
- #define LCD_PIXCLOCK_MAX 5400 /* freq 5.4 MHz */
--#define PM_RECEIVER TWL4030_MODULE_PM_RECIEVER
-+#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER
- #define ENABLE_VAUX2_DEDICATED 0x09
- #define ENABLE_VAUX2_DEV_GRP 0x20
-
diff --git a/packages/linux/linux-omap2-git/omap2420h4/defconfig b/packages/linux/linux-omap2-git/omap2420h4/defconfig
deleted file mode 100644
index c1133eef9a..0000000000
--- a/packages/linux/linux-omap2-git/omap2420h4/defconfig
+++ /dev/null
@@ -1,1119 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc2-omap1
-# Tue Aug 21 22:58:34 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-
-#
-# TI OMAP Implementations
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2=y
-# CONFIG_ARCH_OMAP3 is not set
-
-#
-# OMAP Feature Selections
-#
-CONFIG_OMAP_DEBUG_DEVICES=y
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_BOOT_TAG=y
-# CONFIG_OMAP_BOOT_REASON is not set
-# CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-# CONFIG_OMAP_STI is not set
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_MPU_TIMER=y
-# CONFIG_OMAP_32K_TIMER is not set
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
-CONFIG_OMAP_SERIAL_WAKE=y
-# CONFIG_OMAP_DSP is not set
-# CONFIG_MACH_OMAP_GENERIC is not set
-
-#
-# OMAP Core Type
-#
-CONFIG_ARCH_OMAP24XX=y
-CONFIG_ARCH_OMAP2420=y
-# CONFIG_ARCH_OMAP2430 is not set
-
-#
-# OMAP Board Type
-#
-# CONFIG_MACH_NOKIA_N800 is not set
-CONFIG_MACH_OMAP_H4=y
-# CONFIG_MACH_OMAP_H4_TUSB is not set
-# CONFIG_MACH_OMAP_H4_OTG is not set
-# CONFIG_MACH_OMAP2_H4_USB1 is not set
-# CONFIG_MACH_OMAP_APOLLON is not set
-# CONFIG_MACH_OMAP_APOLLON_PLUS is not set
-# CONFIG_MACH_OMAP_2430SDP is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_V6=y
-# CONFIG_CPU_32v6K is not set
-CONFIG_CPU_32v6=y
-CONFIG_CPU_ABRT_EV6=y
-CONFIG_CPU_PABRT_NOIFAR=y
-CONFIG_CPU_CACHE_V6=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V6=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/ram0 rw console=ttyS0,115200n8 initrd=0x80600000,8M ramdisk_size=8192"
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=y
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_OMAP_IR=y
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_OMAP_NOR=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_OMAP=y
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-CONFIG_HW_RANDOM=m
-CONFIG_HW_RANDOM_OMAP=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_SENSORS_TLV320AIC23 is not set
-CONFIG_GPIOEXPANDER_OMAP=y
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-CONFIG_MENELAUS=y
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_HWMON is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_NEW_LEDS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_OMAP=y
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
-
-#
-# Enable Host or Gadget support to see Inventra options
-#
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_OMAP=y
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap2-git/omap2430sdp/defconfig b/packages/linux/linux-omap2-git/omap2430sdp/defconfig
deleted file mode 100644
index f3897e48a3..0000000000
--- a/packages/linux/linux-omap2-git/omap2430sdp/defconfig
+++ /dev/null
@@ -1,1303 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc2-omap1
-# Sun Aug 12 17:38:46 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-
-#
-# TI OMAP Implementations
-#
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2=y
-# CONFIG_ARCH_OMAP3 is not set
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_BOOT_TAG=y
-# CONFIG_OMAP_BOOT_REASON is not set
-# CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-# CONFIG_OMAP_MUX_WARNINGS is not set
-# CONFIG_OMAP_STI is not set
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_MPU_TIMER=y
-# CONFIG_OMAP_32K_TIMER is not set
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
-CONFIG_OMAP_SERIAL_WAKE=y
-# CONFIG_OMAP_DSP is not set
-# CONFIG_MACH_OMAP_GENERIC is not set
-
-#
-# OMAP Core Type
-#
-CONFIG_ARCH_OMAP24XX=y
-# CONFIG_ARCH_OMAP2420 is not set
-CONFIG_ARCH_OMAP2430=y
-
-#
-# OMAP Board Type
-#
-# CONFIG_MACH_NOKIA_N800 is not set
-# CONFIG_MACH_OMAP_H4 is not set
-# CONFIG_MACH_OMAP_APOLLON is not set
-# CONFIG_MACH_OMAP_APOLLON_PLUS is not set
-CONFIG_MACH_OMAP_2430SDP=y
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_V6=y
-# CONFIG_CPU_32v6K is not set
-CONFIG_CPU_32v6=y
-CONFIG_CPU_ABRT_EV6=y
-CONFIG_CPU_PABRT_NOIFAR=y
-CONFIG_CPU_CACHE_V6=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V6=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/ram0 rw console=ttyS0,115200n8 initrd=0x80600000,8M ramdisk_size=8192"
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-# CONFIG_APM_EMULATION is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_OMAP_NOR=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_OMAP is not set
-CONFIG_KEYBOARD_TWL4030=y
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_TSC2102 is not set
-# CONFIG_TOUCHSCREEN_TSC210X is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_OMAP=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_SENSORS_TLV320AIC23 is not set
-# CONFIG_GPIOEXPANDER_OMAP is not set
-# CONFIG_MENELAUS is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_GPIO=y
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_OMAP24XX is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_TSC2101 is not set
-# CONFIG_SPI_TSC2102 is not set
-# CONFIG_SPI_TSC210X is not set
-# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_W1 is not set
-# CONFIG_HWMON is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_NEW_LEDS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_OMAP=y
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-CONFIG_USB_OTG=y
-CONFIG_USB_OTG_WHITELIST=y
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-CONFIG_USB_MUSB_HDRC=m
-CONFIG_USB_MUSB_SOC=y
-
-#
-# OMAP 243x high speed USB support
-#
-# CONFIG_USB_MUSB_HOST is not set
-# CONFIG_USB_MUSB_PERIPHERAL is not set
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
-CONFIG_USB_MUSB_HDRC_HCD=y
-# CONFIG_USB_INVENTRA_FIFO is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-CONFIG_USB_INVENTRA_HCD_LOGGING=1
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG is not set
-CONFIG_USB_GADGET_DEBUG_FILES=y
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-# CONFIG_USB_ZERO_HNPTEST is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_OMAP=y
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi b/packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi
deleted file mode 100644
index f3897e48a3..0000000000
--- a/packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi
+++ /dev/null
@@ -1,1303 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc2-omap1
-# Sun Aug 12 17:38:46 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-
-#
-# TI OMAP Implementations
-#
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2=y
-# CONFIG_ARCH_OMAP3 is not set
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_BOOT_TAG=y
-# CONFIG_OMAP_BOOT_REASON is not set
-# CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-# CONFIG_OMAP_MUX_WARNINGS is not set
-# CONFIG_OMAP_STI is not set
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_MPU_TIMER=y
-# CONFIG_OMAP_32K_TIMER is not set
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
-CONFIG_OMAP_SERIAL_WAKE=y
-# CONFIG_OMAP_DSP is not set
-# CONFIG_MACH_OMAP_GENERIC is not set
-
-#
-# OMAP Core Type
-#
-CONFIG_ARCH_OMAP24XX=y
-# CONFIG_ARCH_OMAP2420 is not set
-CONFIG_ARCH_OMAP2430=y
-
-#
-# OMAP Board Type
-#
-# CONFIG_MACH_NOKIA_N800 is not set
-# CONFIG_MACH_OMAP_H4 is not set
-# CONFIG_MACH_OMAP_APOLLON is not set
-# CONFIG_MACH_OMAP_APOLLON_PLUS is not set
-CONFIG_MACH_OMAP_2430SDP=y
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_V6=y
-# CONFIG_CPU_32v6K is not set
-CONFIG_CPU_32v6=y
-CONFIG_CPU_ABRT_EV6=y
-CONFIG_CPU_PABRT_NOIFAR=y
-CONFIG_CPU_CACHE_V6=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V6=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_PREEMPT=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/ram0 rw console=ttyS0,115200n8 initrd=0x80600000,8M ramdisk_size=8192"
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-# CONFIG_APM_EMULATION is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-CONFIG_NET_KEY=y
-# CONFIG_NET_KEY_MIGRATE is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_OMAP_NOR=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_OMAP is not set
-CONFIG_KEYBOARD_TWL4030=y
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_TSC2102 is not set
-# CONFIG_TOUCHSCREEN_TSC210X is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_OMAP=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_SENSORS_TLV320AIC23 is not set
-# CONFIG_GPIOEXPANDER_OMAP is not set
-# CONFIG_MENELAUS is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_GPIO=y
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_OMAP24XX is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_TSC2101 is not set
-# CONFIG_SPI_TSC2102 is not set
-# CONFIG_SPI_TSC210X is not set
-# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_W1 is not set
-# CONFIG_HWMON is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_NEW_LEDS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_OMAP=y
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-CONFIG_USB_OTG=y
-CONFIG_USB_OTG_WHITELIST=y
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-CONFIG_USB_MUSB_HDRC=m
-CONFIG_USB_MUSB_SOC=y
-
-#
-# OMAP 243x high speed USB support
-#
-# CONFIG_USB_MUSB_HOST is not set
-# CONFIG_USB_MUSB_PERIPHERAL is not set
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
-CONFIG_USB_MUSB_HDRC_HCD=y
-# CONFIG_USB_INVENTRA_FIFO is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-CONFIG_USB_INVENTRA_HCD_LOGGING=1
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG is not set
-CONFIG_USB_GADGET_DEBUG_FILES=y
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-CONFIG_USB_ZERO=m
-# CONFIG_USB_ZERO_HNPTEST is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_OMAP=y
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap2-git/omap3evm/0001-ARM-OMAP-SmartReflex-driver.patch b/packages/linux/linux-omap2-git/omap3evm/0001-ARM-OMAP-SmartReflex-driver.patch
deleted file mode 100644
index 550a4f58be..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0001-ARM-OMAP-SmartReflex-driver.patch
+++ /dev/null
@@ -1,1002 +0,0 @@
-From: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-To: linux-omap@vger.kernel.org
-Cc: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-Subject: [PATCH 1/3] ARM: OMAP: SmartReflex driver, reference source and header files
-Date: Mon, 2 Jun 2008 14:30:12 +0300
-
-The following patch set integrates TI's SmartReflex driver. SmartReflex is a
-module that adjusts OMAP3 VDD1 and VDD2 operating voltages around the nominal
-values of current operating point depending on silicon characteristics and
-operating conditions.
-
-The driver creates two sysfs entries into /sys/power/ named "sr_vdd1_autocomp"
-and "sr_vdd2_autocomp" which can be used to activate SmartReflex modules 1 and
-2.
-
-Use the following commands to enable SmartReflex:
-
-echo -n 1 > /sys/power/sr_vdd1_autocomp
-echo -n 1 > /sys/power/sr_vdd2_autocomp
-
-To disable:
-
-echo -n 0 > /sys/power/sr_vdd1_autocomp
-echo -n 0 > /sys/power/sr_vdd2_autocomp
-
-This particular patch adds the TI reference source and header files for
-SmartReflex. Only modifications include minor styling to pass checkpatch.pl
-test.
-
-Signed-off-by: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
----
- arch/arm/mach-omap2/smartreflex.c | 815 +++++++++++++++++++++++++++++++++++++
- arch/arm/mach-omap2/smartreflex.h | 136 ++++++
- 2 files changed, 951 insertions(+), 0 deletions(-)
- create mode 100644 arch/arm/mach-omap2/smartreflex.c
- create mode 100644 arch/arm/mach-omap2/smartreflex.h
-
-diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
-new file mode 100644
-index 0000000..dae7460
---- /dev/null
-+++ b/arch/arm/mach-omap2/smartreflex.c
-@@ -0,0 +1,815 @@
-+/*
-+ * linux/arch/arm/mach-omap3/smartreflex.c
-+ *
-+ * OMAP34XX SmartReflex Voltage Control
-+ *
-+ * Copyright (C) 2007 Texas Instruments, Inc.
-+ * Lesly A M <x0080970@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/delay.h>
-+#include <linux/err.h>
-+#include <linux/clk.h>
-+#include <linux/sysfs.h>
-+
-+#include <asm/arch/prcm.h>
-+#include <asm/arch/power_companion.h>
-+#include <linux/io.h>
-+
-+#include "prcm-regs.h"
-+#include "smartreflex.h"
-+
-+
-+/* #define DEBUG_SR 1 */
-+#ifdef DEBUG_SR
-+# define DPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__ ,\
-+ ## args)
-+#else
-+# define DPRINTK(fmt, args...)
-+#endif
-+
-+struct omap_sr{
-+ int srid;
-+ int is_sr_reset;
-+ int is_autocomp_active;
-+ struct clk *fck;
-+ u32 req_opp_no;
-+ u32 opp1_nvalue, opp2_nvalue, opp3_nvalue, opp4_nvalue, opp5_nvalue;
-+ u32 senp_mod, senn_mod;
-+ u32 srbase_addr;
-+ u32 vpbase_addr;
-+};
-+
-+static struct omap_sr sr1 = {
-+ .srid = SR1,
-+ .is_sr_reset = 1,
-+ .is_autocomp_active = 0,
-+ .srbase_addr = OMAP34XX_SR1_BASE,
-+};
-+
-+static struct omap_sr sr2 = {
-+ .srid = SR2,
-+ .is_sr_reset = 1,
-+ .is_autocomp_active = 0,
-+ .srbase_addr = OMAP34XX_SR2_BASE,
-+};
-+
-+static inline void sr_write_reg(struct omap_sr *sr, int offset, u32 value)
-+{
-+ omap_writel(value, sr->srbase_addr + offset);
-+}
-+
-+static inline void sr_modify_reg(struct omap_sr *sr, int offset, u32 mask,
-+ u32 value)
-+{
-+ u32 reg_val;
-+
-+ reg_val = omap_readl(sr->srbase_addr + offset);
-+ reg_val &= ~mask;
-+ reg_val |= value;
-+
-+ omap_writel(reg_val, sr->srbase_addr + offset);
-+}
-+
-+static inline u32 sr_read_reg(struct omap_sr *sr, int offset)
-+{
-+ return omap_readl(sr->srbase_addr + offset);
-+}
-+
-+
-+#ifndef USE_EFUSE_VALUES
-+static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen)
-+{
-+ u32 gn, rn, mul;
-+
-+ for (gn = 0; gn < GAIN_MAXLIMIT; gn++) {
-+ mul = 1 << (gn + 8);
-+ rn = mul / sensor;
-+ if (rn < R_MAXLIMIT) {
-+ *sengain = gn;
-+ *rnsen = rn;
-+ }
-+ }
-+}
-+#endif
-+
-+static int sr_clk_enable(struct omap_sr *sr)
-+{
-+ if (clk_enable(sr->fck) != 0) {
-+ printk(KERN_ERR "Could not enable sr%d_fck\n", sr->srid);
-+ goto clk_enable_err;
-+ }
-+
-+ /* set fclk- active , iclk- idle */
-+ sr_modify_reg(sr, ERRCONFIG, SR_CLKACTIVITY_MASK,
-+ SR_CLKACTIVITY_IOFF_FON);
-+
-+ return 0;
-+
-+clk_enable_err:
-+ return -1;
-+}
-+
-+static int sr_clk_disable(struct omap_sr *sr)
-+{
-+ /* set fclk, iclk- idle */
-+ sr_modify_reg(sr, ERRCONFIG, SR_CLKACTIVITY_MASK,
-+ SR_CLKACTIVITY_IOFF_FOFF);
-+
-+ clk_disable(sr->fck);
-+ sr->is_sr_reset = 1;
-+
-+ return 0;
-+}
-+
-+static void sr_set_nvalues(struct omap_sr *sr)
-+{
-+#ifdef USE_EFUSE_VALUES
-+ u32 n1, n2;
-+#else
-+ u32 senpval, sennval;
-+ u32 senpgain, senngain;
-+ u32 rnsenp, rnsenn;
-+#endif
-+
-+ if (sr->srid == SR1) {
-+#ifdef USE_EFUSE_VALUES
-+ /* Read values for VDD1 from EFUSE */
-+#else
-+ /* since E-Fuse Values are not available, calculating the
-+ * reciprocal of the SenN and SenP values for SR1
-+ */
-+ sr->senp_mod = 0x03; /* SenN-M5 enabled */
-+ sr->senn_mod = 0x03;
-+
-+ /* for OPP5 */
-+ senpval = 0x848 + 0x330;
-+ sennval = 0xacd + 0x330;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp5_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP4 */
-+ senpval = 0x727 + 0x2a0;
-+ sennval = 0x964 + 0x2a0;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp4_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP3 */
-+ senpval = 0x655 + 0x200;
-+ sennval = 0x85b + 0x200;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp3_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP2 */
-+ senpval = 0x3be + 0x1a0;
-+ sennval = 0x506 + 0x1a0;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp2_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP1 */
-+ senpval = 0x28c + 0x100;
-+ sennval = 0x373 + 0x100;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp1_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ sr_clk_enable(sr);
-+ sr_write_reg(sr, NVALUERECIPROCAL, sr->opp3_nvalue);
-+ sr_clk_disable(sr);
-+
-+#endif
-+ } else if (sr->srid == SR2) {
-+#ifdef USE_EFUSE_VALUES
-+ /* Read values for VDD2 from EFUSE */
-+#else
-+ /* since E-Fuse Values are not available, calculating the
-+ * reciprocal of the SenN and SenP values for SR2
-+ */
-+ sr->senp_mod = 0x03;
-+ sr->senn_mod = 0x03;
-+
-+ /* for OPP3 */
-+ senpval = 0x579 + 0x200;
-+ sennval = 0x76f + 0x200;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp3_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP2 */
-+ senpval = 0x390 + 0x1c0;
-+ sennval = 0x4f5 + 0x1c0;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp2_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+ /* for OPP1 */
-+ senpval = 0x25d;
-+ sennval = 0x359;
-+
-+ cal_reciprocal(senpval, &senpgain, &rnsenp);
-+ cal_reciprocal(sennval, &senngain, &rnsenn);
-+
-+ sr->opp1_nvalue =
-+ ((senpgain << NVALUERECIPROCAL_SENPGAIN_SHIFT) |
-+ (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
-+ (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
-+ (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-+
-+#endif
-+ }
-+
-+}
-+
-+static void sr_configure_vp(int srid)
-+{
-+ u32 vpconfig;
-+
-+ if (srid == SR1) {
-+ vpconfig = PRM_VP1_CONFIG_ERROROFFSET | PRM_VP1_CONFIG_ERRORGAIN
-+ | PRM_VP1_CONFIG_INITVOLTAGE | PRM_VP1_CONFIG_TIMEOUTEN;
-+
-+ PRM_VP1_CONFIG = vpconfig;
-+ PRM_VP1_VSTEPMIN = PRM_VP1_VSTEPMIN_SMPSWAITTIMEMIN |
-+ PRM_VP1_VSTEPMIN_VSTEPMIN;
-+
-+ PRM_VP1_VSTEPMAX = PRM_VP1_VSTEPMAX_SMPSWAITTIMEMAX |
-+ PRM_VP1_VSTEPMAX_VSTEPMAX;
-+
-+ PRM_VP1_VLIMITTO = PRM_VP1_VLIMITTO_VDDMAX |
-+ PRM_VP1_VLIMITTO_VDDMIN | PRM_VP1_VLIMITTO_TIMEOUT;
-+
-+ PRM_VP1_CONFIG |= PRM_VP1_CONFIG_INITVDD;
-+ PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_INITVDD;
-+
-+ } else if (srid == SR2) {
-+ vpconfig = PRM_VP2_CONFIG_ERROROFFSET | PRM_VP2_CONFIG_ERRORGAIN
-+ | PRM_VP2_CONFIG_INITVOLTAGE | PRM_VP2_CONFIG_TIMEOUTEN;
-+
-+ PRM_VP2_CONFIG = vpconfig;
-+ PRM_VP2_VSTEPMIN = PRM_VP2_VSTEPMIN_SMPSWAITTIMEMIN |
-+ PRM_VP2_VSTEPMIN_VSTEPMIN;
-+
-+ PRM_VP2_VSTEPMAX = PRM_VP2_VSTEPMAX_SMPSWAITTIMEMAX |
-+ PRM_VP2_VSTEPMAX_VSTEPMAX;
-+
-+ PRM_VP2_VLIMITTO = PRM_VP2_VLIMITTO_VDDMAX |
-+ PRM_VP2_VLIMITTO_VDDMIN | PRM_VP2_VLIMITTO_TIMEOUT;
-+
-+ PRM_VP2_CONFIG |= PRM_VP2_CONFIG_INITVDD;
-+ PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_INITVDD;
-+
-+ }
-+}
-+
-+static void sr_configure_vc(void)
-+{
-+ PRM_VC_SMPS_SA =
-+ (R_SRI2C_SLAVE_ADDR << PRM_VC_SMPS_SA1_SHIFT) |
-+ (R_SRI2C_SLAVE_ADDR << PRM_VC_SMPS_SA0_SHIFT);
-+
-+ PRM_VC_SMPS_VOL_RA = (R_VDD2_SR_CONTROL << PRM_VC_SMPS_VOLRA1_SHIFT) |
-+ (R_VDD1_SR_CONTROL << PRM_VC_SMPS_VOLRA0_SHIFT);
-+
-+ PRM_VC_CMD_VAL_0 = (PRM_VC_CMD_VAL0_ON << PRM_VC_CMD_ON_SHIFT) |
-+ (PRM_VC_CMD_VAL0_ONLP << PRM_VC_CMD_ONLP_SHIFT) |
-+ (PRM_VC_CMD_VAL0_RET << PRM_VC_CMD_RET_SHIFT) |
-+ (PRM_VC_CMD_VAL0_OFF << PRM_VC_CMD_OFF_SHIFT);
-+
-+ PRM_VC_CMD_VAL_1 = (PRM_VC_CMD_VAL1_ON << PRM_VC_CMD_ON_SHIFT) |
-+ (PRM_VC_CMD_VAL1_ONLP << PRM_VC_CMD_ONLP_SHIFT) |
-+ (PRM_VC_CMD_VAL1_RET << PRM_VC_CMD_RET_SHIFT) |
-+ (PRM_VC_CMD_VAL1_OFF << PRM_VC_CMD_OFF_SHIFT);
-+
-+ PRM_VC_CH_CONF = PRM_VC_CH_CONF_CMD1 | PRM_VC_CH_CONF_RAV1;
-+
-+ PRM_VC_I2C_CFG = PRM_VC_I2C_CFG_MCODE | PRM_VC_I2C_CFG_HSEN
-+ | PRM_VC_I2C_CFG_SREN;
-+
-+ /* Setup voltctrl and other setup times */
-+#ifdef CONFIG_SYSOFFMODE
-+ PRM_VOLTCTRL = PRM_VOLTCTRL_AUTO_OFF | PRM_VOLTCTRL_AUTO_RET;
-+ PRM_CLKSETUP = PRM_CLKSETUP_DURATION;
-+ PRM_VOLTSETUP1 = (PRM_VOLTSETUP_TIME2 << PRM_VOLTSETUP_TIME2_OFFSET) |
-+ (PRM_VOLTSETUP_TIME1 << PRM_VOLTSETUP_TIME1_OFFSET);
-+ PRM_VOLTOFFSET = PRM_VOLTOFFSET_DURATION;
-+ PRM_VOLTSETUP2 = PRM_VOLTSETUP2_DURATION;
-+#else
-+ PRM_VOLTCTRL |= PRM_VOLTCTRL_AUTO_RET;
-+#endif
-+
-+}
-+
-+
-+static void sr_configure(struct omap_sr *sr)
-+{
-+ u32 sys_clk, sr_clk_length = 0;
-+ u32 sr_config;
-+ u32 senp_en , senn_en;
-+
-+ senp_en = sr->senp_mod;
-+ senn_en = sr->senn_mod;
-+
-+ sys_clk = prcm_get_system_clock_speed();
-+
-+ switch (sys_clk) {
-+ case 12000:
-+ sr_clk_length = SRCLKLENGTH_12MHZ_SYSCLK;
-+ break;
-+ case 13000:
-+ sr_clk_length = SRCLKLENGTH_13MHZ_SYSCLK;
-+ break;
-+ case 19200:
-+ sr_clk_length = SRCLKLENGTH_19MHZ_SYSCLK;
-+ break;
-+ case 26000:
-+ sr_clk_length = SRCLKLENGTH_26MHZ_SYSCLK;
-+ break;
-+ case 38400:
-+ sr_clk_length = SRCLKLENGTH_38MHZ_SYSCLK;
-+ break;
-+ default :
-+ printk(KERN_ERR "Invalid sysclk value\n");
-+ break;
-+ }
-+
-+ DPRINTK(KERN_DEBUG "SR : sys clk %lu\n", sys_clk);
-+ if (sr->srid == SR1) {
-+ sr_config = SR1_SRCONFIG_ACCUMDATA |
-+ (sr_clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
-+ SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN |
-+ SRCONFIG_MINMAXAVG_EN |
-+ (senn_en << SRCONFIG_SENNENABLE_SHIFT) |
-+ (senp_en << SRCONFIG_SENPENABLE_SHIFT) |
-+ SRCONFIG_DELAYCTRL;
-+
-+ sr_write_reg(sr, SRCONFIG, sr_config);
-+
-+ sr_write_reg(sr, AVGWEIGHT, SR1_AVGWEIGHT_SENPAVGWEIGHT |
-+ SR1_AVGWEIGHT_SENNAVGWEIGHT);
-+
-+ sr_modify_reg(sr, ERRCONFIG, (SR_ERRWEIGHT_MASK |
-+ SR_ERRMAXLIMIT_MASK | SR_ERRMINLIMIT_MASK),
-+ (SR1_ERRWEIGHT | SR1_ERRMAXLIMIT | SR1_ERRMINLIMIT));
-+
-+ } else if (sr->srid == SR2) {
-+ sr_config = SR2_SRCONFIG_ACCUMDATA |
-+ (sr_clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
-+ SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN |
-+ SRCONFIG_MINMAXAVG_EN |
-+ (senn_en << SRCONFIG_SENNENABLE_SHIFT) |
-+ (senp_en << SRCONFIG_SENPENABLE_SHIFT) |
-+ SRCONFIG_DELAYCTRL;
-+
-+ sr_write_reg(sr, SRCONFIG, sr_config);
-+
-+ sr_write_reg(sr, AVGWEIGHT, SR2_AVGWEIGHT_SENPAVGWEIGHT |
-+ SR2_AVGWEIGHT_SENNAVGWEIGHT);
-+
-+ sr_modify_reg(sr, ERRCONFIG, (SR_ERRWEIGHT_MASK |
-+ SR_ERRMAXLIMIT_MASK | SR_ERRMINLIMIT_MASK),
-+ (SR2_ERRWEIGHT | SR2_ERRMAXLIMIT | SR2_ERRMINLIMIT));
-+
-+ }
-+ sr->is_sr_reset = 0;
-+}
-+
-+static void sr_enable(struct omap_sr *sr, u32 target_opp_no)
-+{
-+ u32 nvalue_reciprocal, current_nvalue;
-+
-+ sr->req_opp_no = target_opp_no;
-+
-+ if (sr->srid == SR1) {
-+ switch (target_opp_no) {
-+ case 5:
-+ nvalue_reciprocal = sr->opp5_nvalue;
-+ break;
-+ case 4:
-+ nvalue_reciprocal = sr->opp4_nvalue;
-+ break;
-+ case 3:
-+ nvalue_reciprocal = sr->opp3_nvalue;
-+ break;
-+ case 2:
-+ nvalue_reciprocal = sr->opp2_nvalue;
-+ break;
-+ case 1:
-+ nvalue_reciprocal = sr->opp1_nvalue;
-+ break;
-+ default:
-+ nvalue_reciprocal = sr->opp3_nvalue;
-+ break;
-+ }
-+ } else {
-+ switch (target_opp_no) {
-+ case 3:
-+ nvalue_reciprocal = sr->opp3_nvalue;
-+ break;
-+ case 2:
-+ nvalue_reciprocal = sr->opp2_nvalue;
-+ break;
-+ case 1:
-+ nvalue_reciprocal = sr->opp1_nvalue;
-+ break;
-+ default:
-+ nvalue_reciprocal = sr->opp3_nvalue;
-+ break;
-+ }
-+ }
-+
-+ current_nvalue = sr_read_reg(sr, NVALUERECIPROCAL);
-+
-+ if (current_nvalue == nvalue_reciprocal) {
-+ DPRINTK("System is already at the desired voltage level\n");
-+ return;
-+ }
-+
-+ sr_write_reg(sr, NVALUERECIPROCAL, nvalue_reciprocal);
-+
-+ /* Enable the interrupt */
-+ sr_modify_reg(sr, ERRCONFIG,
-+ (ERRCONFIG_VPBOUNDINTEN | ERRCONFIG_VPBOUNDINTST),
-+ (ERRCONFIG_VPBOUNDINTEN | ERRCONFIG_VPBOUNDINTST));
-+
-+ if (sr->srid == SR1) {
-+ /* Enable VP1 */
-+ PRM_VP1_CONFIG |= PRM_VP1_CONFIG_VPENABLE;
-+ } else if (sr->srid == SR2) {
-+ /* Enable VP2 */
-+ PRM_VP2_CONFIG |= PRM_VP2_CONFIG_VPENABLE;
-+ }
-+
-+ /* SRCONFIG - enable SR */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE, SRCONFIG_SRENABLE);
-+
-+}
-+
-+static void sr_disable(struct omap_sr *sr)
-+{
-+ sr->is_sr_reset = 1;
-+
-+ /* SRCONFIG - disable SR */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE, ~SRCONFIG_SRENABLE);
-+
-+ if (sr->srid == SR1) {
-+ /* Enable VP1 */
-+ PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_VPENABLE;
-+ } else if (sr->srid == SR2) {
-+ /* Enable VP2 */
-+ PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_VPENABLE;
-+ }
-+}
-+
-+
-+void sr_start_vddautocomap(int srid, u32 target_opp_no)
-+{
-+ struct omap_sr *sr = NULL;
-+
-+ if (srid == SR1)
-+ sr = &sr1;
-+ else if (srid == SR2)
-+ sr = &sr2;
-+
-+ if (sr->is_sr_reset == 1) {
-+ sr_clk_enable(sr);
-+ sr_configure(sr);
-+ }
-+
-+ if (sr->is_autocomp_active == 1)
-+ DPRINTK(KERN_WARNING "SR%d: VDD autocomp is already active\n",
-+ srid);
-+
-+ sr->is_autocomp_active = 1;
-+ sr_enable(sr, target_opp_no);
-+}
-+EXPORT_SYMBOL(sr_start_vddautocomap);
-+
-+int sr_stop_vddautocomap(int srid)
-+{
-+ struct omap_sr *sr = NULL;
-+
-+ if (srid == SR1)
-+ sr = &sr1;
-+ else if (srid == SR2)
-+ sr = &sr2;
-+
-+ if (sr->is_autocomp_active == 1) {
-+ sr_disable(sr);
-+ sr_clk_disable(sr);
-+ sr->is_autocomp_active = 0;
-+ return SR_TRUE;
-+ } else {
-+ DPRINTK(KERN_WARNING "SR%d: VDD autocomp is not active\n",
-+ srid);
-+ return SR_FALSE;
-+ }
-+
-+}
-+EXPORT_SYMBOL(sr_stop_vddautocomap);
-+
-+void enable_smartreflex(int srid)
-+{
-+ u32 target_opp_no = 0;
-+ struct omap_sr *sr = NULL;
-+
-+ if (srid == SR1)
-+ sr = &sr1;
-+ else if (srid == SR2)
-+ sr = &sr2;
-+
-+ if (sr->is_autocomp_active == 1) {
-+ if (sr->is_sr_reset == 1) {
-+ if (srid == SR1) {
-+ /* Enable SR clks */
-+ CM_FCLKEN_WKUP |= SR1_CLK_ENABLE;
-+ target_opp_no = get_opp_no(current_vdd1_opp);
-+
-+ } else if (srid == SR2) {
-+ /* Enable SR clks */
-+ CM_FCLKEN_WKUP |= SR2_CLK_ENABLE;
-+ target_opp_no = get_opp_no(current_vdd2_opp);
-+ }
-+
-+ sr_configure(sr);
-+
-+ sr_enable(sr, target_opp_no);
-+ }
-+ }
-+}
-+
-+void disable_smartreflex(int srid)
-+{
-+ struct omap_sr *sr = NULL;
-+
-+ if (srid == SR1)
-+ sr = &sr1;
-+ else if (srid == SR2)
-+ sr = &sr2;
-+
-+ if (sr->is_autocomp_active == 1) {
-+ if (srid == SR1) {
-+ /* Enable SR clk */
-+ CM_FCLKEN_WKUP |= SR1_CLK_ENABLE;
-+
-+ } else if (srid == SR2) {
-+ /* Enable SR clk */
-+ CM_FCLKEN_WKUP |= SR2_CLK_ENABLE;
-+ }
-+
-+ if (sr->is_sr_reset == 0) {
-+
-+ sr->is_sr_reset = 1;
-+ /* SRCONFIG - disable SR */
-+ sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
-+ ~SRCONFIG_SRENABLE);
-+
-+ if (sr->srid == SR1) {
-+ /* Disable SR clk */
-+ CM_FCLKEN_WKUP &= ~SR1_CLK_ENABLE;
-+ /* Enable VP1 */
-+ PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_VPENABLE;
-+
-+ } else if (sr->srid == SR2) {
-+ /* Disable SR clk */
-+ CM_FCLKEN_WKUP &= ~SR2_CLK_ENABLE;
-+ /* Enable VP2 */
-+ PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_VPENABLE;
-+ }
-+ }
-+ }
-+}
-+
-+
-+/* Voltage Scaling using SR VCBYPASS */
-+int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel)
-+{
-+ int ret;
-+ int sr_status = 0;
-+ u32 vdd, target_opp_no;
-+ u32 vc_bypass_value;
-+ u32 reg_addr = 0;
-+ u32 loop_cnt = 0, retries_cnt = 0;
-+
-+ vdd = get_vdd(target_opp);
-+ target_opp_no = get_opp_no(target_opp);
-+
-+ if (vdd == PRCM_VDD1) {
-+ sr_status = sr_stop_vddautocomap(SR1);
-+
-+ PRM_VC_CMD_VAL_0 = (PRM_VC_CMD_VAL_0 & ~PRM_VC_CMD_ON_MASK) |
-+ (vsel << PRM_VC_CMD_ON_SHIFT);
-+ reg_addr = R_VDD1_SR_CONTROL;
-+
-+ } else if (vdd == PRCM_VDD2) {
-+ sr_status = sr_stop_vddautocomap(SR2);
-+
-+ PRM_VC_CMD_VAL_1 = (PRM_VC_CMD_VAL_1 & ~PRM_VC_CMD_ON_MASK) |
-+ (vsel << PRM_VC_CMD_ON_SHIFT);
-+ reg_addr = R_VDD2_SR_CONTROL;
-+ }
-+
-+ vc_bypass_value = (vsel << PRM_VC_BYPASS_DATA_SHIFT) |
-+ (reg_addr << PRM_VC_BYPASS_REGADDR_SHIFT) |
-+ (R_SRI2C_SLAVE_ADDR << PRM_VC_BYPASS_SLAVEADDR_SHIFT);
-+
-+ PRM_VC_BYPASS_VAL = vc_bypass_value;
-+
-+ PRM_VC_BYPASS_VAL |= PRM_VC_BYPASS_VALID;
-+
-+ DPRINTK("%s : PRM_VC_BYPASS_VAL %X\n", __func__, PRM_VC_BYPASS_VAL);
-+ DPRINTK("PRM_IRQST_MPU %X\n", PRM_IRQSTATUS_MPU);
-+
-+ while ((PRM_VC_BYPASS_VAL & PRM_VC_BYPASS_VALID) != 0x0) {
-+ ret = loop_wait(&loop_cnt, &retries_cnt, 10);
-+ if (ret != PRCM_PASS) {
-+ printk(KERN_INFO "Loop count exceeded in check SR I2C"
-+ "write\n");
-+ return ret;
-+ }
-+ }
-+
-+ omap_udelay(T2_SMPS_UPDATE_DELAY);
-+
-+ if (sr_status) {
-+ if (vdd == PRCM_VDD1)
-+ sr_start_vddautocomap(SR1, target_opp_no);
-+ else if (vdd == PRCM_VDD2)
-+ sr_start_vddautocomap(SR2, target_opp_no);
-+ }
-+
-+ return SR_PASS;
-+}
-+
-+/* Sysfs interface to select SR VDD1 auto compensation */
-+static ssize_t omap_sr_vdd1_autocomp_show(struct kset *subsys, char *buf)
-+{
-+ return sprintf(buf, "%d\n", sr1.is_autocomp_active);
-+}
-+
-+static ssize_t omap_sr_vdd1_autocomp_store(struct kset *subsys,
-+ const char *buf, size_t n)
-+{
-+ u32 current_vdd1opp_no;
-+ unsigned short value;
-+
-+ if (sscanf(buf, "%hu", &value) != 1 || (value > 1)) {
-+ printk(KERN_ERR "sr_vdd1_autocomp: Invalid value\n");
-+ return -EINVAL;
-+ }
-+
-+ current_vdd1opp_no = get_opp_no(current_vdd1_opp);
-+
-+ if (value == 0)
-+ sr_stop_vddautocomap(SR1);
-+ else
-+ sr_start_vddautocomap(SR1, current_vdd1opp_no);
-+
-+ return n;
-+}
-+
-+static struct subsys_attribute sr_vdd1_autocomp = {
-+ .attr = {
-+ .name = __stringify(sr_vdd1_autocomp),
-+ .mode = 0644,
-+ },
-+ .show = omap_sr_vdd1_autocomp_show,
-+ .store = omap_sr_vdd1_autocomp_store,
-+};
-+
-+/* Sysfs interface to select SR VDD2 auto compensation */
-+static ssize_t omap_sr_vdd2_autocomp_show(struct kset *subsys, char *buf)
-+{
-+ return sprintf(buf, "%d\n", sr2.is_autocomp_active);
-+}
-+
-+static ssize_t omap_sr_vdd2_autocomp_store(struct kset *subsys,
-+ const char *buf, size_t n)
-+{
-+ u32 current_vdd2opp_no;
-+ unsigned short value;
-+
-+ if (sscanf(buf, "%hu", &value) != 1 || (value > 1)) {
-+ printk(KERN_ERR "sr_vdd2_autocomp: Invalid value\n");
-+ return -EINVAL;
-+ }
-+
-+ current_vdd2opp_no = get_opp_no(current_vdd2_opp);
-+
-+ if (value == 0)
-+ sr_stop_vddautocomap(SR2);
-+ else
-+ sr_start_vddautocomap(SR2, current_vdd2opp_no);
-+
-+ return n;
-+}
-+
-+static struct subsys_attribute sr_vdd2_autocomp = {
-+ .attr = {
-+ .name = __stringify(sr_vdd2_autocomp),
-+ .mode = 0644,
-+ },
-+ .show = omap_sr_vdd2_autocomp_show,
-+ .store = omap_sr_vdd2_autocomp_store,
-+};
-+
-+
-+
-+static int __init omap3_sr_init(void)
-+{
-+ int ret = 0;
-+ u8 RdReg;
-+
-+#ifdef CONFIG_ARCH_OMAP34XX
-+ sr1.fck = clk_get(NULL, "sr1_fck");
-+ if (IS_ERR(sr1.fck))
-+ printk(KERN_ERR "Could not get sr1_fck\n");
-+
-+ sr2.fck = clk_get(NULL, "sr2_fck");
-+ if (IS_ERR(sr2.fck))
-+ printk(KERN_ERR "Could not get sr2_fck\n");
-+#endif /* #ifdef CONFIG_ARCH_OMAP34XX */
-+
-+ /* Call the VPConfig, VCConfig, set N Values. */
-+ sr_set_nvalues(&sr1);
-+ sr_configure_vp(SR1);
-+
-+ sr_set_nvalues(&sr2);
-+ sr_configure_vp(SR2);
-+
-+ sr_configure_vc();
-+
-+ /* Enable SR on T2 */
-+ ret = t2_in(PM_RECEIVER, &RdReg, R_DCDC_GLOBAL_CFG);
-+ RdReg |= DCDC_GLOBAL_CFG_ENABLE_SRFLX;
-+ ret |= t2_out(PM_RECEIVER, RdReg, R_DCDC_GLOBAL_CFG);
-+
-+
-+ printk(KERN_INFO "SmartReflex driver initialized\n");
-+
-+ ret = subsys_create_file(&power_subsys, &sr_vdd1_autocomp);
-+ if (ret)
-+ printk(KERN_ERR "subsys_create_file failed: %d\n", ret);
-+
-+ ret = subsys_create_file(&power_subsys, &sr_vdd2_autocomp);
-+ if (ret)
-+ printk(KERN_ERR "subsys_create_file failed: %d\n", ret);
-+
-+ return 0;
-+}
-+
-+arch_initcall(omap3_sr_init);
-diff --git a/arch/arm/mach-omap2/smartreflex.h b/arch/arm/mach-omap2/smartreflex.h
-new file mode 100644
-index 0000000..62907ef
---- /dev/null
-+++ b/arch/arm/mach-omap2/smartreflex.h
-@@ -0,0 +1,136 @@
-+/*
-+ * linux/arch/arm/mach-omap3/smartreflex.h
-+ *
-+ * Copyright (C) 2007 Texas Instruments, Inc.
-+ * Lesly A M <x0080970@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+
-+/* SR Modules */
-+#define SR1 1
-+#define SR2 2
-+
-+#define SR_FAIL 1
-+#define SR_PASS 0
-+
-+#define SR_TRUE 1
-+#define SR_FALSE 0
-+
-+#define GAIN_MAXLIMIT 16
-+#define R_MAXLIMIT 256
-+
-+#define SR1_CLK_ENABLE (0x1 << 6)
-+#define SR2_CLK_ENABLE (0x1 << 7)
-+
-+/* PRM_VP1_CONFIG */
-+#define PRM_VP1_CONFIG_ERROROFFSET (0x00 << 24)
-+#define PRM_VP1_CONFIG_ERRORGAIN (0x20 << 16)
-+
-+#define PRM_VP1_CONFIG_INITVOLTAGE (0x30 << 8) /* 1.2 volt */
-+#define PRM_VP1_CONFIG_TIMEOUTEN (0x1 << 3)
-+#define PRM_VP1_CONFIG_INITVDD (0x1 << 2)
-+#define PRM_VP1_CONFIG_FORCEUPDATE (0x1 << 1)
-+#define PRM_VP1_CONFIG_VPENABLE (0x1 << 0)
-+
-+/* PRM_VP1_VSTEPMIN */
-+#define PRM_VP1_VSTEPMIN_SMPSWAITTIMEMIN (0x01F4 << 8)
-+#define PRM_VP1_VSTEPMIN_VSTEPMIN (0x01 << 0)
-+
-+/* PRM_VP1_VSTEPMAX */
-+#define PRM_VP1_VSTEPMAX_SMPSWAITTIMEMAX (0x01F4 << 8)
-+#define PRM_VP1_VSTEPMAX_VSTEPMAX (0x04 << 0)
-+
-+/* PRM_VP1_VLIMITTO */
-+#define PRM_VP1_VLIMITTO_VDDMAX (0x3C << 24)
-+#define PRM_VP1_VLIMITTO_VDDMIN (0x0 << 16)
-+#define PRM_VP1_VLIMITTO_TIMEOUT (0xFFFF << 0)
-+
-+/* PRM_VP2_CONFIG */
-+#define PRM_VP2_CONFIG_ERROROFFSET (0x00 << 24)
-+#define PRM_VP2_CONFIG_ERRORGAIN (0x20 << 16)
-+
-+#define PRM_VP2_CONFIG_INITVOLTAGE (0x30 << 8) /* 1.2 volt */
-+#define PRM_VP2_CONFIG_TIMEOUTEN (0x1 << 3)
-+#define PRM_VP2_CONFIG_INITVDD (0x1 << 2)
-+#define PRM_VP2_CONFIG_FORCEUPDATE (0x1 << 1)
-+#define PRM_VP2_CONFIG_VPENABLE (0x1 << 0)
-+
-+/* PRM_VP2_VSTEPMIN */
-+#define PRM_VP2_VSTEPMIN_SMPSWAITTIMEMIN (0x01F4 << 8)
-+#define PRM_VP2_VSTEPMIN_VSTEPMIN (0x01 << 0)
-+
-+/* PRM_VP2_VSTEPMAX */
-+#define PRM_VP2_VSTEPMAX_SMPSWAITTIMEMAX (0x01F4 << 8)
-+#define PRM_VP2_VSTEPMAX_VSTEPMAX (0x04 << 0)
-+
-+/* PRM_VP2_VLIMITTO */
-+#define PRM_VP2_VLIMITTO_VDDMAX (0x2C << 24)
-+#define PRM_VP2_VLIMITTO_VDDMIN (0x0 << 16)
-+#define PRM_VP2_VLIMITTO_TIMEOUT (0xFFFF << 0)
-+
-+/* SRCONFIG */
-+#define SR1_SRCONFIG_ACCUMDATA (0x1F4 << 22)
-+#define SR2_SRCONFIG_ACCUMDATA (0x1F4 << 22)
-+
-+#define SRCLKLENGTH_12MHZ_SYSCLK 0x3C
-+#define SRCLKLENGTH_13MHZ_SYSCLK 0x41
-+#define SRCLKLENGTH_19MHZ_SYSCLK 0x60
-+#define SRCLKLENGTH_26MHZ_SYSCLK 0x82
-+#define SRCLKLENGTH_38MHZ_SYSCLK 0xC0
-+
-+#define SRCONFIG_SRCLKLENGTH_SHIFT 12
-+#define SRCONFIG_SENNENABLE_SHIFT 5
-+#define SRCONFIG_SENPENABLE_SHIFT 3
-+
-+#define SRCONFIG_SRENABLE (0x01 << 11)
-+#define SRCONFIG_SENENABLE (0x01 << 10)
-+#define SRCONFIG_ERRGEN_EN (0x01 << 9)
-+#define SRCONFIG_MINMAXAVG_EN (0x01 << 8)
-+
-+#define SRCONFIG_DELAYCTRL (0x01 << 2)
-+#define SRCONFIG_CLKCTRL (0x00 << 0)
-+
-+/* AVGWEIGHT */
-+#define SR1_AVGWEIGHT_SENPAVGWEIGHT (0x03 << 2)
-+#define SR1_AVGWEIGHT_SENNAVGWEIGHT (0x03 << 0)
-+
-+#define SR2_AVGWEIGHT_SENPAVGWEIGHT (0x01 << 2)
-+#define SR2_AVGWEIGHT_SENNAVGWEIGHT (0x01 << 0)
-+
-+/* NVALUERECIPROCAL */
-+#define NVALUERECIPROCAL_SENPGAIN_SHIFT 20
-+#define NVALUERECIPROCAL_SENNGAIN_SHIFT 16
-+#define NVALUERECIPROCAL_RNSENP_SHIFT 8
-+#define NVALUERECIPROCAL_RNSENN_SHIFT 0
-+
-+/* ERRCONFIG */
-+#define SR_CLKACTIVITY_MASK (0x03 << 20)
-+#define SR_ERRWEIGHT_MASK (0x07 << 16)
-+#define SR_ERRMAXLIMIT_MASK (0xFF << 8)
-+#define SR_ERRMINLIMIT_MASK (0xFF << 0)
-+
-+#define SR_CLKACTIVITY_IOFF_FOFF (0x00 << 20)
-+#define SR_CLKACTIVITY_IOFF_FON (0x02 << 20)
-+
-+#define ERRCONFIG_VPBOUNDINTEN (0x1 << 31)
-+#define ERRCONFIG_VPBOUNDINTST (0x1 << 30)
-+
-+#define SR1_ERRWEIGHT (0x07 << 16)
-+#define SR1_ERRMAXLIMIT (0x02 << 8)
-+#define SR1_ERRMINLIMIT (0xFA << 0)
-+
-+#define SR2_ERRWEIGHT (0x07 << 16)
-+#define SR2_ERRMAXLIMIT (0x02 << 8)
-+#define SR2_ERRMINLIMIT (0xF9 << 0)
-+
-+extern u32 current_vdd1_opp;
-+extern u32 current_vdd2_opp;
-+extern struct kset power_subsys;
-+
-+extern inline int loop_wait(u32 *lcnt, u32 *rcnt, u32 delay);
-+extern void omap_udelay(u32 udelay);
-+
---
-1.5.4.3
diff --git a/packages/linux/linux-omap2-git/omap3evm/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch b/packages/linux/linux-omap2-git/omap3evm/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch
deleted file mode 100644
index 6e31ead2bd..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0001-ASoC-OMAP-Add-basic-support-for-OMAP34xx-in-McBSP.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a1dbb6dd28e9815a307b87b8d96dcf371d6cfd58 Mon Sep 17 00:00:00 2001
-From: Jarkko Nikula <jarkko.nikula@nokia.com>
-Date: Mon, 19 May 2008 13:24:41 +0300
-Subject: [PATCH] ASoC: OMAP: Add basic support for OMAP34xx in McBSP DAI driver
-
-This adds support for OMAP34xx McBSP port 1 and 2.
-
-Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com>
----
- sound/soc/omap/omap-mcbsp.c | 20 +++++++++++++++++++-
- 1 files changed, 19 insertions(+), 1 deletions(-)
-
-diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
-index 40d87e6..8e6ec9d 100644
---- a/sound/soc/omap/omap-mcbsp.c
-+++ b/sound/soc/omap/omap-mcbsp.c
-@@ -99,6 +99,21 @@ static const unsigned long omap2420_mcbsp_port[][2] = {
- static const int omap2420_dma_reqs[][2] = {};
- static const unsigned long omap2420_mcbsp_port[][2] = {};
- #endif
-+#if defined(CONFIG_ARCH_OMAP34XX)
-+static const int omap34xx_dma_reqs[][2] = {
-+ { OMAP24XX_DMA_MCBSP1_TX, OMAP24XX_DMA_MCBSP1_RX },
-+ { OMAP24XX_DMA_MCBSP2_TX, OMAP24XX_DMA_MCBSP2_RX },
-+};
-+static const unsigned long omap34xx_mcbsp_port[][2] = {
-+ { OMAP34XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR2,
-+ OMAP34XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR2 },
-+ { OMAP34XX_MCBSP2_BASE + OMAP_MCBSP_REG_DXR2,
-+ OMAP34XX_MCBSP2_BASE + OMAP_MCBSP_REG_DRR2 },
-+};
-+#else
-+static const int omap34xx_dma_reqs[][2] = {};
-+static const unsigned long omap34xx_mcbsp_port[][2] = {};
-+#endif
-
- static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream)
- {
-@@ -169,9 +184,12 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
- } else if (cpu_is_omap2420()) {
- dma = omap2420_dma_reqs[bus_id][substream->stream];
- port = omap2420_mcbsp_port[bus_id][substream->stream];
-+ } else if (cpu_is_omap343x()) {
-+ dma = omap34xx_dma_reqs[bus_id][substream->stream];
-+ port = omap34xx_mcbsp_port[bus_id][substream->stream];
- } else {
- /*
-- * TODO: Add support for 2430 and 3430
-+ * TODO: Add support for 2430
- */
- return -ENODEV;
- }
---
-1.5.5.1
-
diff --git a/packages/linux/linux-omap2-git/omap3evm/0001-omap3-cpuidle.patch b/packages/linux/linux-omap2-git/omap3evm/0001-omap3-cpuidle.patch
deleted file mode 100644
index cdc9447b4c..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0001-omap3-cpuidle.patch
+++ /dev/null
@@ -1,450 +0,0 @@
-From: "Rajendra Nayak" <rnayak@ti.com>
-To: <linux-omap@vger.kernel.org>
-Subject: [PATCH 01/02] OMAP3 CPUidle driver
-Date: Tue, 10 Jun 2008 12:39:00 +0530
-
-This patch adds the OMAP3 cpuidle driver. Irq enable/disable is done in the core cpuidle driver
-before it queries the governor for the next state.
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
-
----
- arch/arm/mach-omap2/Makefile | 2
- arch/arm/mach-omap2/cpuidle34xx.c | 293 ++++++++++++++++++++++++++++++++++++++
- arch/arm/mach-omap2/cpuidle34xx.h | 51 ++++++
- arch/arm/mach-omap2/pm34xx.c | 5
- drivers/cpuidle/cpuidle.c | 10 +
- 5 files changed, 359 insertions(+), 2 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/Makefile
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/Makefile 2008-06-09 20:15:33.855303920 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/Makefile 2008-06-09 20:15:39.569121361 +0530
-@@ -20,7 +20,7 @@ obj-y += pm.o
- obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o
- obj-$(CONFIG_ARCH_OMAP2420) += sleep242x.o
- obj-$(CONFIG_ARCH_OMAP2430) += sleep243x.o
--obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o
-+obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o cpuidle34xx.o
- obj-$(CONFIG_PM_DEBUG) += pm-debug.o
- endif
-
-Index: linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.c 2008-06-10 11:41:27.644820323 +0530
-@@ -0,0 +1,293 @@
-+/*
-+ * linux/arch/arm/mach-omap2/cpuidle34xx.c
-+ *
-+ * OMAP3 CPU IDLE Routines
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * Copyright (C) 2007 Texas Instruments, Inc.
-+ * Karthik Dasu <karthik-dp@ti.com>
-+ *
-+ * Copyright (C) 2006 Nokia Corporation
-+ * Tony Lindgren <tony@atomide.com>
-+ *
-+ * Copyright (C) 2005 Texas Instruments, Inc.
-+ * Richard Woodruff <r-woodruff2@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/cpuidle.h>
-+#include <asm/arch/pm.h>
-+#include <asm/arch/prcm.h>
-+#include <asm/arch/powerdomain.h>
-+#include <asm/arch/clockdomain.h>
-+#include <asm/arch/irqs.h>
-+#include "cpuidle34xx.h"
-+
-+#ifdef CONFIG_CPU_IDLE
-+
-+struct omap3_processor_cx omap3_power_states[OMAP3_MAX_STATES];
-+struct omap3_processor_cx current_cx_state;
-+
-+static int omap3_idle_bm_check(void)
-+{
-+ /* Check for omap3_fclks_active() here once available */
-+ return 0;
-+}
-+
-+/* omap3_enter_idle - Programs OMAP3 to enter the specified state.
-+ * returns the total time during which the system was idle.
-+ */
-+static int omap3_enter_idle(struct cpuidle_device *dev,
-+ struct cpuidle_state *state)
-+{
-+ struct omap3_processor_cx *cx = cpuidle_get_statedata(state);
-+ struct timespec ts_preidle, ts_postidle, ts_idle;
-+ struct powerdomain *mpu_pd, *core_pd, *per_pd, *neon_pd;
-+ int neon_pwrst;
-+
-+ current_cx_state = *cx;
-+
-+ if (cx->type == OMAP3_STATE_C0) {
-+ /* Do nothing for C0, not even a wfi */
-+ return 0;
-+ }
-+
-+ /* Used to keep track of the total time in idle */
-+ getnstimeofday(&ts_preidle);
-+
-+ mpu_pd = pwrdm_lookup("mpu_pwrdm");
-+ core_pd = pwrdm_lookup("core_pwrdm");
-+ per_pd = pwrdm_lookup("per_pwrdm");
-+ neon_pd = pwrdm_lookup("neon_pwrdm");
-+
-+ /* Reset previous power state registers */
-+ pwrdm_clear_all_prev_pwrst(mpu_pd);
-+ pwrdm_clear_all_prev_pwrst(neon_pd);
-+ pwrdm_clear_all_prev_pwrst(core_pd);
-+ pwrdm_clear_all_prev_pwrst(per_pd);
-+
-+ if (omap_irq_pending())
-+ return 0;
-+
-+ neon_pwrst = pwrdm_read_pwrst(neon_pd);
-+
-+ /* Program MPU/NEON to target state */
-+ if (cx->mpu_state < PWRDM_POWER_ON) {
-+ if (neon_pwrst == PWRDM_POWER_ON) {
-+ if (cx->mpu_state == PWRDM_POWER_RET)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_RET);
-+ else if (cx->mpu_state == PWRDM_POWER_OFF)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_OFF);
-+ }
-+ pwrdm_set_next_pwrst(mpu_pd, cx->mpu_state);
-+ }
-+
-+ /* Program CORE to target state */
-+ if (cx->core_state < PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(core_pd, cx->core_state);
-+
-+ /* Execute ARM wfi */
-+ omap_sram_idle();
-+
-+ /* Program MPU/NEON to ON */
-+ if (cx->mpu_state < PWRDM_POWER_ON) {
-+ if (neon_pwrst == PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(neon_pd, PWRDM_POWER_ON);
-+ pwrdm_set_next_pwrst(mpu_pd, PWRDM_POWER_ON);
-+ }
-+
-+ if (cx->core_state < PWRDM_POWER_ON)
-+ pwrdm_set_next_pwrst(core_pd, PWRDM_POWER_ON);
-+
-+ getnstimeofday(&ts_postidle);
-+ ts_idle = timespec_sub(ts_postidle, ts_preidle);
-+ return timespec_to_ns(&ts_idle);
-+}
-+
-+/*
-+ * omap3_enter_idle_bm - enter function for states with CPUIDLE_FLAG_CHECK_BM
-+ *
-+ * This function checks for all the pre-requisites needed for OMAP3 to enter
-+ * CORE RET/OFF state. It then calls omap3_enter_idle to program the desired
-+ * C state.
-+ */
-+static int omap3_enter_idle_bm(struct cpuidle_device *dev,
-+ struct cpuidle_state *state)
-+{
-+ struct cpuidle_state *new_state = NULL;
-+ int i, j;
-+
-+ if ((state->flags & CPUIDLE_FLAG_CHECK_BM) && omap3_idle_bm_check()) {
-+
-+ /* Find current state in list */
-+ for (i = 0; i < OMAP3_MAX_STATES; i++)
-+ if (state == &dev->states[i])
-+ break;
-+ BUG_ON(i == OMAP3_MAX_STATES);
-+
-+ /* Back up to non 'CHECK_BM' state */
-+ for (j = i - 1; j > 0; j--) {
-+ struct cpuidle_state *s = &dev->states[j];
-+
-+ if (!(s->flags & CPUIDLE_FLAG_CHECK_BM)) {
-+ new_state = s;
-+ break;
-+ }
-+ }
-+
-+ pr_debug("%s: Bus activity: Entering %s (instead of %s)\n",
-+ __FUNCTION__, new_state->name, state->name);
-+ }
-+
-+ return omap3_enter_idle(dev, new_state ? : state);
-+}
-+
-+DEFINE_PER_CPU(struct cpuidle_device, omap3_idle_dev);
-+
-+/* omap3_init_power_states - Initialises the OMAP3 specific C states.
-+ * Below is the desciption of each C state.
-+ *
-+ C0 . System executing code
-+ C1 . MPU WFI + Core active
-+ C2 . MPU CSWR + Core active
-+ C3 . MPU OFF + Core active
-+ C4 . MPU CSWR + Core CSWR
-+ C5 . MPU OFF + Core CSWR
-+ C6 . MPU OFF + Core OFF
-+ */
-+void omap_init_power_states(void)
-+{
-+ /* C0 . System executing code */
-+ omap3_power_states[0].valid = 1;
-+ omap3_power_states[0].type = OMAP3_STATE_C0;
-+ omap3_power_states[0].sleep_latency = 0;
-+ omap3_power_states[0].wakeup_latency = 0;
-+ omap3_power_states[0].threshold = 0;
-+ omap3_power_states[0].mpu_state = PWRDM_POWER_ON;
-+ omap3_power_states[0].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[0].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_SHALLOW;
-+
-+ /* C1 . MPU WFI + Core active */
-+ omap3_power_states[1].valid = 1;
-+ omap3_power_states[1].type = OMAP3_STATE_C1;
-+ omap3_power_states[1].sleep_latency = 10;
-+ omap3_power_states[1].wakeup_latency = 10;
-+ omap3_power_states[1].threshold = 30;
-+ omap3_power_states[1].mpu_state = PWRDM_POWER_ON;
-+ omap3_power_states[1].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[1].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_SHALLOW;
-+
-+ /* C2 . MPU CSWR + Core active */
-+ omap3_power_states[2].valid = 1;
-+ omap3_power_states[2].type = OMAP3_STATE_C2;
-+ omap3_power_states[2].sleep_latency = 50;
-+ omap3_power_states[2].wakeup_latency = 50;
-+ omap3_power_states[2].threshold = 300;
-+ omap3_power_states[2].mpu_state = PWRDM_POWER_RET;
-+ omap3_power_states[2].core_state = PWRDM_POWER_ON;
-+ omap3_power_states[2].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED;
-+
-+ /* C3 . MPU OFF + Core active */
-+ omap3_power_states[3].valid = 0;
-+ omap3_power_states[3].type = OMAP3_STATE_C3;
-+ omap3_power_states[3].sleep_latency = 1500;
-+ omap3_power_states[3].wakeup_latency = 1800;
-+ omap3_power_states[3].threshold = 4000;
-+ omap3_power_states[3].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[3].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[3].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED;
-+
-+ /* C4 . MPU CSWR + Core CSWR*/
-+ omap3_power_states[4].valid = 1;
-+ omap3_power_states[4].type = OMAP3_STATE_C4;
-+ omap3_power_states[4].sleep_latency = 2500;
-+ omap3_power_states[4].wakeup_latency = 7500;
-+ omap3_power_states[4].threshold = 12000;
-+ omap3_power_states[4].mpu_state = PWRDM_POWER_RET;
-+ omap3_power_states[4].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[4].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED | CPUIDLE_FLAG_CHECK_BM;
-+
-+ /* C5 . MPU OFF + Core CSWR */
-+ omap3_power_states[5].valid = 0;
-+ omap3_power_states[5].type = OMAP3_STATE_C5;
-+ omap3_power_states[5].sleep_latency = 3000;
-+ omap3_power_states[5].wakeup_latency = 8500;
-+ omap3_power_states[5].threshold = 15000;
-+ omap3_power_states[5].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[5].core_state = PWRDM_POWER_RET;
-+ omap3_power_states[5].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_BALANCED | CPUIDLE_FLAG_CHECK_BM;
-+
-+ /* C6 . MPU OFF + Core OFF */
-+ omap3_power_states[6].valid = 0;
-+ omap3_power_states[6].type = OMAP3_STATE_C6;
-+ omap3_power_states[6].sleep_latency = 10000;
-+ omap3_power_states[6].wakeup_latency = 30000;
-+ omap3_power_states[6].threshold = 300000;
-+ omap3_power_states[6].mpu_state = PWRDM_POWER_OFF;
-+ omap3_power_states[6].core_state = PWRDM_POWER_OFF;
-+ omap3_power_states[6].flags = CPUIDLE_FLAG_TIME_VALID |
-+ CPUIDLE_FLAG_DEEP | CPUIDLE_FLAG_CHECK_BM;
-+}
-+
-+struct cpuidle_driver omap3_idle_driver = {
-+ .name = "omap3_idle",
-+ .owner = THIS_MODULE,
-+};
-+/*
-+ * omap3_idle_init - Init routine for OMAP3 idle.
-+ * Registers the OMAP3 specific cpuidle driver with the cpuidle f/w
-+ * with the valid set of states.
-+ */
-+int omap3_idle_init(void)
-+{
-+ int i, count = 0;
-+ struct omap3_processor_cx *cx;
-+ struct cpuidle_state *state;
-+ struct cpuidle_device *dev;
-+
-+ omap_init_power_states();
-+ cpuidle_register_driver(&omap3_idle_driver);
-+
-+ dev = &per_cpu(omap3_idle_dev, smp_processor_id());
-+
-+ for (i = 0; i < OMAP3_MAX_STATES; i++) {
-+ cx = &omap3_power_states[i];
-+ state = &dev->states[count];
-+
-+ if (!cx->valid)
-+ continue;
-+ cpuidle_set_statedata(state, cx);
-+ state->exit_latency = cx->sleep_latency + cx->wakeup_latency;
-+ state->target_residency = cx->threshold;
-+ state->flags = cx->flags;
-+ state->enter = (state->flags & CPUIDLE_FLAG_CHECK_BM) ?
-+ omap3_enter_idle_bm : omap3_enter_idle;
-+ sprintf(state->name, "C%d", count+1);
-+ count++;
-+ }
-+
-+ if (!count)
-+ return -EINVAL;
-+ dev->state_count = count;
-+
-+ if (cpuidle_register_device(dev)) {
-+ printk(KERN_ERR "%s: CPUidle register device failed\n",
-+ __FUNCTION__);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+__initcall(omap3_idle_init);
-+#endif /* CONFIG_CPU_IDLE */
-Index: linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-omap-2.6/arch/arm/mach-omap2/cpuidle34xx.h 2008-06-09 20:15:39.569121361 +0530
-@@ -0,0 +1,51 @@
-+/*
-+ * linux/arch/arm/mach-omap2/cpuidle34xx.h
-+ *
-+ * OMAP3 cpuidle structure definitions
-+ *
-+ * Copyright (C) 2007-2008 Texas Instruments, Inc.
-+ * Written by Rajendra Nayak <rnayak@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-+ *
-+ * History:
-+ *
-+ */
-+
-+#ifndef ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX
-+#define ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX
-+
-+#define OMAP3_MAX_STATES 7
-+#define OMAP3_STATE_C0 0 /* C0 - System executing code */
-+#define OMAP3_STATE_C1 1 /* C1 - MPU WFI + Core active */
-+#define OMAP3_STATE_C2 2 /* C2 - MPU CSWR + Core active */
-+#define OMAP3_STATE_C3 3 /* C3 - MPU OFF + Core active */
-+#define OMAP3_STATE_C4 4 /* C4 - MPU RET + Core RET */
-+#define OMAP3_STATE_C5 5 /* C5 - MPU OFF + Core RET */
-+#define OMAP3_STATE_C6 6 /* C6 - MPU OFF + Core OFF */
-+
-+extern void omap_sram_idle(void);
-+extern int omap3_irq_pending(void);
-+
-+struct omap3_processor_cx {
-+ u8 valid;
-+ u8 type;
-+ u32 sleep_latency;
-+ u32 wakeup_latency;
-+ u32 mpu_state;
-+ u32 core_state;
-+ u32 threshold;
-+ u32 flags;
-+};
-+
-+void omap_init_power_states(void);
-+int omap3_idle_init(void);
-+
-+#endif /* ARCH_ARM_MACH_OMAP2_CPUIDLE_34XX */
-+
-Index: linux-omap-2.6/arch/arm/mach-omap2/pm34xx.c
-===================================================================
---- linux-omap-2.6.orig/arch/arm/mach-omap2/pm34xx.c 2008-06-09 20:15:33.855303920 +0530
-+++ linux-omap-2.6/arch/arm/mach-omap2/pm34xx.c 2008-06-09 20:16:20.976798343 +0530
-@@ -141,7 +141,7 @@ static irqreturn_t prcm_interrupt_handle
- return IRQ_HANDLED;
- }
-
--static void omap_sram_idle(void)
-+void omap_sram_idle(void)
- {
- /* Variable to tell what needs to be saved and restored
- * in omap_sram_idle*/
-@@ -156,6 +156,7 @@ static void omap_sram_idle(void)
-
- mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
- switch (mpu_next_state) {
-+ case PWRDM_POWER_ON:
- case PWRDM_POWER_RET:
- /* No need to save context */
- save_state = 0;
-@@ -386,7 +387,9 @@ int __init omap3_pm_init(void)
-
- prcm_setup_regs();
-
-+#ifndef CONFIG_CPU_IDLE
- pm_idle = omap3_pm_idle;
-+#endif
-
- err1:
- return ret;
-Index: linux-omap-2.6/drivers/cpuidle/cpuidle.c
-===================================================================
---- linux-omap-2.6.orig/drivers/cpuidle/cpuidle.c 2008-06-09 20:15:33.856303888 +0530
-+++ linux-omap-2.6/drivers/cpuidle/cpuidle.c 2008-06-09 20:15:39.570121329 +0530
-@@ -58,6 +58,11 @@ static void cpuidle_idle_call(void)
- return;
- }
-
-+#ifdef CONFIG_ARCH_OMAP3
-+ local_irq_disable();
-+ local_fiq_disable();
-+#endif
-+
- /* ask the governor for the next state */
- next_state = cpuidle_curr_governor->select(dev);
- if (need_resched())
-@@ -70,6 +75,11 @@ static void cpuidle_idle_call(void)
- target_state->time += (unsigned long long)dev->last_residency;
- target_state->usage++;
-
-+#ifdef CONFIG_ARCH_OMAP3
-+ local_irq_enable();
-+ local_fiq_enable();
-+#endif
-+
- /* give the governor an opportunity to reflect on the outcome */
- if (cpuidle_curr_governor->reflect)
- cpuidle_curr_governor->reflect(dev);
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/omap3evm/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch b/packages/linux/linux-omap2-git/omap3evm/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch
deleted file mode 100644
index 17329be29b..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 7a444ee080c5f1a62ac5042f1e7926622b3e1ce7 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@openembedded.org>
-Date: Fri, 30 May 2008 13:43:36 +0200
-Subject: [PATCH] ARM: OMAP: omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
-
-omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
- * on revision A5 and earlier board the two leds can't be controlled seperately, should be fixed in rev. B and C boards.
-
-Signed-off-by: Koen Kooi <koen@openembedded.org>
----
- arch/arm/mach-omap2/board-omap3beagle.c | 28 ++++++++++++++++++++++++++++
- 1 files changed, 28 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index c992cc7..83891fc 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -19,6 +19,7 @@
- #include <linux/err.h>
- #include <linux/clk.h>
- #include <linux/io.h>
-+#include <linux/leds.h>
-
- #include <asm/hardware.h>
- #include <asm/mach-types.h>
-@@ -72,6 +73,32 @@ static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
- .ctrl_name = "internal",
- };
-
-+struct gpio_led gpio_leds[] = {
-+ {
-+ .name = "beagleboard::led0",
-+ .default_trigger = "none",
-+ .gpio = 149,
-+ },
-+ {
-+ .name = "beagleboard::led1",
-+ .default_trigger = "none",
-+ .gpio = 150,
-+ },
-+};
-+
-+static struct gpio_led_platform_data gpio_led_info = {
-+ .leds = gpio_leds,
-+ .num_leds = ARRAY_SIZE(gpio_leds),
-+};
-+
-+static struct platform_device leds_gpio = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &gpio_led_info,
-+ },
-+};
-+
- static struct omap_board_config_kernel omap3_beagle_config[] __initdata = {
- { OMAP_TAG_UART, &omap3_beagle_uart_config },
- { OMAP_TAG_MMC, &omap3beagle_mmc_config },
-@@ -83,6 +110,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
- #ifdef CONFIG_RTC_DRV_TWL4030
- &omap3_beagle_twl4030rtc_device,
- #endif
-+ &leds_gpio,
- };
-
- static void __init omap3_beagle_init(void)
---
-1.5.4.3
-
diff --git a/packages/linux/linux-omap2-git/omap3evm/0002-ARM-OMAP-SmartReflex-driver.patch b/packages/linux/linux-omap2-git/omap3evm/0002-ARM-OMAP-SmartReflex-driver.patch
deleted file mode 100644
index 8e609395a0..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0002-ARM-OMAP-SmartReflex-driver.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-From: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-To: linux-omap@vger.kernel.org
-Cc: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-Subject: [PATCH 2/3] ARM: OMAP: SmartReflex driver: added required register and bit definitions.
-Date: Fri, 6 Jun 2008 12:49:48 +0300
-
-Added new register and bit definitions to enable Smartreflex driver integration.
-Also PRM_VC_SMPS_SA bit definitions' naming was changed to match the naming of
-other similar bit definitions.
-
-Signed-off-by: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
----
- arch/arm/mach-omap2/prm-regbits-34xx.h | 27 ++++++--
- arch/arm/mach-omap2/smartreflex.h | 124 ++++++++++++++++++++++++++++++-
- include/asm-arm/arch-omap/control.h | 19 +++++
- include/asm-arm/arch-omap/omap34xx.h | 2 +
- 4 files changed, 163 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/prm-regbits-34xx.h b/arch/arm/mach-omap2/prm-regbits-34xx.h
-index c6a7940..f82b5a7 100644
---- a/arch/arm/mach-omap2/prm-regbits-34xx.h
-+++ b/arch/arm/mach-omap2/prm-regbits-34xx.h
-@@ -435,10 +435,10 @@
- /* PM_PWSTST_EMU specific bits */
-
- /* PRM_VC_SMPS_SA */
--#define OMAP3430_PRM_VC_SMPS_SA_SA1_SHIFT 16
--#define OMAP3430_PRM_VC_SMPS_SA_SA1_MASK (0x7f << 16)
--#define OMAP3430_PRM_VC_SMPS_SA_SA0_SHIFT 0
--#define OMAP3430_PRM_VC_SMPS_SA_SA0_MASK (0x7f << 0)
-+#define OMAP3430_SMPS_SA1_SHIFT 16
-+#define OMAP3430_SMPS_SA1_MASK (0x7f << 16)
-+#define OMAP3430_SMPS_SA0_SHIFT 0
-+#define OMAP3430_SMPS_SA0_MASK (0x7f << 0)
-
- /* PRM_VC_SMPS_VOL_RA */
- #define OMAP3430_VOLRA1_SHIFT 16
-@@ -452,7 +452,7 @@
- #define OMAP3430_CMDRA0_SHIFT 0
- #define OMAP3430_CMDRA0_MASK (0xff << 0)
-
--/* PRM_VC_CMD_VAL_0 specific bits */
-+/* PRM_VC_CMD_VAL */
- #define OMAP3430_VC_CMD_ON_SHIFT 24
- #define OMAP3430_VC_CMD_ON_MASK (0xFF << 24)
- #define OMAP3430_VC_CMD_ONLP_SHIFT 16
-@@ -462,7 +462,17 @@
- #define OMAP3430_VC_CMD_OFF_SHIFT 0
- #define OMAP3430_VC_CMD_OFF_MASK (0xFF << 0)
-
-+/* PRM_VC_CMD_VAL_0 specific bits */
-+#define OMAP3430_VC_CMD_VAL0_ON (0x3 << 4)
-+#define OMAP3430_VC_CMD_VAL0_ONLP (0x3 << 3)
-+#define OMAP3430_VC_CMD_VAL0_RET (0x3 << 3)
-+#define OMAP3430_VC_CMD_VAL0_OFF (0x3 << 3)
-+
- /* PRM_VC_CMD_VAL_1 specific bits */
-+#define OMAP3430_VC_CMD_VAL1_ON (0xB << 2)
-+#define OMAP3430_VC_CMD_VAL1_ONLP (0x3 << 3)
-+#define OMAP3430_VC_CMD_VAL1_RET (0x3 << 3)
-+#define OMAP3430_VC_CMD_VAL1_OFF (0x3 << 3)
-
- /* PRM_VC_CH_CONF */
- #define OMAP3430_CMD1 (1 << 20)
-@@ -521,6 +531,13 @@
- #define OMAP3430_AUTO_RET (1 << 1)
- #define OMAP3430_AUTO_SLEEP (1 << 0)
-
-+/* Constants to define setup durations */
-+#define OMAP3430_CLKSETUP_DURATION 0xff
-+#define OMAP3430_VOLTSETUP_TIME2 0xfff
-+#define OMAP3430_VOLTSETUP_TIME1 0xfff
-+#define OMAP3430_VOLTOFFSET_DURATION 0xff
-+#define OMAP3430_VOLTSETUP2_DURATION 0xff
-+
- /* PRM_SRAM_PCHARGE */
- #define OMAP3430_PCHARGE_TIME_SHIFT 0
- #define OMAP3430_PCHARGE_TIME_MASK (0xff << 0)
-diff --git a/arch/arm/mach-omap2/smartreflex.h b/arch/arm/mach-omap2/smartreflex.h
-index 62907ef..2091a15 100644
---- a/arch/arm/mach-omap2/smartreflex.h
-+++ b/arch/arm/mach-omap2/smartreflex.h
-@@ -1,5 +1,10 @@
-+#ifndef __ARCH_ARM_MACH_OMAP3_SMARTREFLEX_H
-+#define __ARCH_ARM_MACH_OMAP3_SMARTREFLEX_H
- /*
-- * linux/arch/arm/mach-omap3/smartreflex.h
-+ * linux/arch/arm/mach-omap2/smartreflex.h
-+ *
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Kalle Jokiniemi
- *
- * Copyright (C) 2007 Texas Instruments, Inc.
- * Lesly A M <x0080970@ti.com>
-@@ -9,6 +14,21 @@
- * published by the Free Software Foundation.
- */
-
-+#define PHY_TO_OFF_PM_MASTER(p) (p - 0x36)
-+#define PHY_TO_OFF_PM_RECIEVER(p) (p - 0x5b)
-+#define PHY_TO_OFF_PM_INT(p) (p - 0x2e)
-+
-+/* SMART REFLEX REG ADDRESS OFFSET */
-+#define SRCONFIG 0x00
-+#define SRSTATUS 0x04
-+#define SENVAL 0x08
-+#define SENMIN 0x0C
-+#define SENMAX 0x10
-+#define SENAVG 0x14
-+#define AVGWEIGHT 0x18
-+#define NVALUERECIPROCAL 0x1C
-+#define SENERROR 0x20
-+#define ERRCONFIG 0x24
-
- /* SR Modules */
- #define SR1 1
-@@ -127,10 +147,106 @@
- #define SR2_ERRMAXLIMIT (0x02 << 8)
- #define SR2_ERRMINLIMIT (0xF9 << 0)
-
-+/* T2 SMART REFLEX */
-+#define R_SRI2C_SLAVE_ADDR 0x12
-+#define R_VDD1_SR_CONTROL 0x00
-+#define R_VDD2_SR_CONTROL 0x01
-+#define T2_SMPS_UPDATE_DELAY 360 /* In uSec */
-+
-+/* Vmode control */
-+#define R_DCDC_GLOBAL_CFG PHY_TO_OFF_PM_RECIEVER(0x61)
-+
-+#define R_VDD1_VSEL PHY_TO_OFF_PM_RECIEVER(0xb9)
-+#define R_VDD1_VMODE_CFG PHY_TO_OFF_PM_RECIEVER(0xba)
-+#define R_VDD1_VFLOOR PHY_TO_OFF_PM_RECIEVER(0xbb)
-+#define R_VDD1_VROOF PHY_TO_OFF_PM_RECIEVER(0xbc)
-+#define R_VDD1_STEP PHY_TO_OFF_PM_RECIEVER(0xbd)
-+
-+#define R_VDD2_VSEL PHY_TO_OFF_PM_RECIEVER(0xc7)
-+#define R_VDD2_VMODE_CFG PHY_TO_OFF_PM_RECIEVER(0xc8)
-+#define R_VDD2_VFLOOR PHY_TO_OFF_PM_RECIEVER(0xc9)
-+#define R_VDD2_VROOF PHY_TO_OFF_PM_RECIEVER(0xca)
-+#define R_VDD2_STEP PHY_TO_OFF_PM_RECIEVER(0xcb)
-+
-+/* R_DCDC_GLOBAL_CFG register, SMARTREFLEX_ENABLE valuws */
-+#define DCDC_GLOBAL_CFG_ENABLE_SRFLX 0x08
-+
-+/* VDDs*/
-+#define PRCM_VDD1 1
-+#define PRCM_VDD2 2
-+#define PRCM_MAX_SYSC_REGS 30
-+
-+/* XXX: These should be removed/moved from here once we have a working DVFS
-+ implementation in place */
-+#define AT_3430 1 /*3430 ES 1.0 */
-+#define AT_3430_ES2 2 /*3430 ES 2.0 */
-+
-+#define ID_OPP 0xE2 /*OPP*/
-+
-+/* DEVICE ID/DPLL ID/CLOCK ID: bits 28-31 for OMAP type */
-+#define OMAP_TYPE_SHIFT 28
-+#define OMAP_TYPE_MASK 0xF
-+/* OPP ID: bits: 0-4 for OPP number */
-+#define OPP_NO_POS 0
-+#define OPP_NO_MASK 0x1F
-+/* OPP ID: bits: 5-6 for VDD */
-+#define VDD_NO_POS 5
-+#define VDD_NO_MASK 0x3
-+/* Other IDs: bits 20-27 for ID type */
-+/* These IDs have bits 25,26,27 as 1 */
-+#define OTHER_ID_TYPE_SHIFT 20
-+#define OTHER_ID_TYPE_MASK 0xFF
-+
-+#define OTHER_ID_TYPE(X) ((X & OTHER_ID_TYPE_MASK) << OTHER_ID_TYPE_SHIFT)
-+#define ID_OPP_NO(X) ((X & OPP_NO_MASK) << OPP_NO_POS)
-+#define ID_VDD(X) ((X & VDD_NO_MASK) << VDD_NO_POS)
-+#define OMAP(X) ((X >> OMAP_TYPE_SHIFT) & OMAP_TYPE_MASK)
-+#define get_opp_no(X) ((X >> OPP_NO_POS) & OPP_NO_MASK)
-+#define get_vdd(X) ((X >> VDD_NO_POS) & VDD_NO_MASK)
-+
-+/* VDD1 OPPs */
-+#define PRCM_VDD1_OPP1 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD1) | ID_OPP_NO(0x1))
-+#define PRCM_VDD1_OPP2 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD1) | ID_OPP_NO(0x2))
-+#define PRCM_VDD1_OPP3 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD1) | ID_OPP_NO(0x3))
-+#define PRCM_VDD1_OPP4 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD1) | ID_OPP_NO(0x4))
-+#define PRCM_VDD1_OPP5 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD1) | ID_OPP_NO(0x5))
-+#define PRCM_NO_VDD1_OPPS 5
-+
-+
-+/* VDD2 OPPs */
-+#define PRCM_VDD2_OPP1 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD2) | ID_OPP_NO(0x1))
-+#define PRCM_VDD2_OPP2 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD2) | ID_OPP_NO(0x2))
-+#define PRCM_VDD2_OPP3 (OMAP(AT_3430_ES2) | OTHER_ID_TYPE(ID_OPP) | \
-+ ID_VDD(PRCM_VDD2) | ID_OPP_NO(0x3))
-+#define PRCM_NO_VDD2_OPPS 3
-+/* XXX: end remove/move */
-+
-+
-+/* XXX: find more appropriate place for these once DVFS is in place */
- extern u32 current_vdd1_opp;
- extern u32 current_vdd2_opp;
--extern struct kset power_subsys;
-
--extern inline int loop_wait(u32 *lcnt, u32 *rcnt, u32 delay);
--extern void omap_udelay(u32 udelay);
-+/*
-+ * Smartreflex module enable/disable interface.
-+ * NOTE: if smartreflex is not enabled from sysfs, these functions will not
-+ * do anything.
-+ */
-+#if defined(CONFIG_ARCH_OMAP34XX) && defined(CONFIG_TWL4030_CORE)
-+void enable_smartreflex(int srid);
-+void disable_smartreflex(int srid);
-+#else
-+static inline void enable_smartreflex(int srid) {}
-+static inline void disable_smartreflex(int srid) {}
-+#endif
-+
-+
-+#endif
-+
-
-diff --git a/include/asm-arm/arch-omap/control.h b/include/asm-arm/arch-omap/control.h
-index 12bc22a..6e64fe7 100644
---- a/include/asm-arm/arch-omap/control.h
-+++ b/include/asm-arm/arch-omap/control.h
-@@ -138,6 +138,15 @@
- #define OMAP343X_CONTROL_TEST_KEY_11 (OMAP2_CONTROL_GENERAL + 0x00f4)
- #define OMAP343X_CONTROL_TEST_KEY_12 (OMAP2_CONTROL_GENERAL + 0x00f8)
- #define OMAP343X_CONTROL_TEST_KEY_13 (OMAP2_CONTROL_GENERAL + 0x00fc)
-+#define OMAP343X_CONTROL_FUSE_OPP1_VDD1 (OMAP2_CONTROL_GENERAL + 0x0110)
-+#define OMAP343X_CONTROL_FUSE_OPP2_VDD1 (OMAP2_CONTROL_GENERAL + 0x0114)
-+#define OMAP343X_CONTROL_FUSE_OPP3_VDD1 (OMAP2_CONTROL_GENERAL + 0x0118)
-+#define OMAP343X_CONTROL_FUSE_OPP4_VDD1 (OMAP2_CONTROL_GENERAL + 0x011c)
-+#define OMAP343X_CONTROL_FUSE_OPP5_VDD1 (OMAP2_CONTROL_GENERAL + 0x0120)
-+#define OMAP343X_CONTROL_FUSE_OPP1_VDD2 (OMAP2_CONTROL_GENERAL + 0x0124)
-+#define OMAP343X_CONTROL_FUSE_OPP2_VDD2 (OMAP2_CONTROL_GENERAL + 0x0128)
-+#define OMAP343X_CONTROL_FUSE_OPP3_VDD2 (OMAP2_CONTROL_GENERAL + 0x012c)
-+#define OMAP343X_CONTROL_FUSE_SR (OMAP2_CONTROL_GENERAL + 0x0130)
- #define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190)
- #define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194)
- #define OMAP343X_CONTROL_TEMP_SENSOR (OMAP2_CONTROL_GENERAL + 0x02b4)
-@@ -172,6 +181,16 @@
- #define OMAP2_SYSBOOT_1_MASK (1 << 1)
- #define OMAP2_SYSBOOT_0_MASK (1 << 0)
-
-+/* CONTROL_FUSE_SR bits */
-+#define OMAP343X_SR2_SENNENABLE_MASK (0x3 << 10)
-+#define OMAP343X_SR2_SENNENABLE_SHIFT 10
-+#define OMAP343X_SR2_SENPENABLE_MASK (0x3 << 8)
-+#define OMAP343X_SR2_SENPENABLE_SHIFT 8
-+#define OMAP343X_SR1_SENNENABLE_MASK (0x3 << 2)
-+#define OMAP343X_SR1_SENNENABLE_SHIFT 2
-+#define OMAP343X_SR1_SENPENABLE_MASK (0x3 << 0)
-+#define OMAP343X_SR1_SENPENABLE_SHIFT 0
-+
- #ifndef __ASSEMBLY__
- #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
- extern void __iomem *omap_ctrl_base_get(void);
-diff --git a/include/asm-arm/arch-omap/omap34xx.h b/include/asm-arm/arch-omap/omap34xx.h
-index 6a0459a..3667fd6 100644
---- a/include/asm-arm/arch-omap/omap34xx.h
-+++ b/include/asm-arm/arch-omap/omap34xx.h
-@@ -54,6 +54,8 @@
- #define OMAP34XX_HSUSB_OTG_BASE (L4_34XX_BASE + 0xAB000)
- #define OMAP34XX_HSUSB_HOST_BASE (L4_34XX_BASE + 0x64000)
- #define OMAP34XX_USBTLL_BASE (L4_34XX_BASE + 0x62000)
-+#define OMAP34XX_SR1_BASE 0x480C9000
-+#define OMAP34XX_SR2_BASE 0x480CB000
-
-
- #if defined(CONFIG_ARCH_OMAP3430)
---
-1.5.4.3
diff --git a/packages/linux/linux-omap2-git/omap3evm/0002-omap3-cpuidle.patch b/packages/linux/linux-omap2-git/omap3evm/0002-omap3-cpuidle.patch
deleted file mode 100644
index d35fd47567..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0002-omap3-cpuidle.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From: "Rajendra Nayak" <rnayak@ti.com>
-To: <linux-omap@vger.kernel.org>
-Subject: [PATCH 02/02] Kconfig changes
-Date: Tue, 10 Jun 2008 12:39:02 +0530
-
-Updates the CPUidle Kconfig
-
-Signed-off-by: Rajendra Nayak <rnayak@ti.com>
-
----
- arch/arm/Kconfig | 10 ++++++++++
- drivers/cpuidle/Kconfig | 28 ++++++++++++++++++++++------
- 2 files changed, 32 insertions(+), 6 deletions(-)
-
-Index: linux-omap-2.6/arch/arm/Kconfig
-===================================================================
---- linux-omap-2.6.orig/arch/arm/Kconfig 2008-06-10 11:43:10.790502713 +0530
-+++ linux-omap-2.6/arch/arm/Kconfig 2008-06-10 11:43:38.701604549 +0530
-@@ -954,6 +954,16 @@ config ATAGS_PROC
-
- endmenu
-
-+if (ARCH_OMAP)
-+
-+menu "CPUIdle"
-+
-+source "drivers/cpuidle/Kconfig"
-+
-+endmenu
-+
-+endif
-+
- if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA)
-
- menu "CPU Frequency scaling"
-Index: linux-omap-2.6/drivers/cpuidle/Kconfig
-===================================================================
---- linux-omap-2.6.orig/drivers/cpuidle/Kconfig 2008-06-10 11:43:10.790502713 +0530
-+++ linux-omap-2.6/drivers/cpuidle/Kconfig 2008-06-10 12:06:36.139332151 +0530
-@@ -1,20 +1,36 @@
-+menu "CPU idle PM support"
-
- config CPU_IDLE
- bool "CPU idle PM support"
-- default ACPI
-+ default n
- help
- CPU idle is a generic framework for supporting software-controlled
- idle processor power management. It includes modular cross-platform
- governors that can be swapped during runtime.
-
-- If you're using an ACPI-enabled platform, you should say Y here.
-+ If you're using a mobile platform that supports CPU idle PM (e.g.
-+ an ACPI-capable notebook), you should say Y here.
-+
-+if CPU_IDLE
-+
-+comment "Governors"
-
- config CPU_IDLE_GOV_LADDER
-- bool
-+ bool "ladder"
- depends on CPU_IDLE
-- default y
-+ default n
-
- config CPU_IDLE_GOV_MENU
-- bool
-+ bool "menu"
- depends on CPU_IDLE && NO_HZ
-- default y
-+ default n
-+ help
-+ This cpuidle governor evaluates all available states and chooses the
-+ deepest state that meets all of the following constraints: BM activity,
-+ expected time until next timer interrupt, and last break event time
-+ delta. It is designed to minimize power consumption. Currently
-+ dynticks is required.
-+
-+endif # CPU_IDLE
-+
-+endmenu
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
diff --git a/packages/linux/linux-omap2-git/omap3evm/0003-ARM-OMAP-SmartReflex-driver.patch b/packages/linux/linux-omap2-git/omap3evm/0003-ARM-OMAP-SmartReflex-driver.patch
deleted file mode 100644
index 40d5790367..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/0003-ARM-OMAP-SmartReflex-driver.patch
+++ /dev/null
@@ -1,1001 +0,0 @@
-From: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-To: linux-omap@vger.kernel.org
-Cc: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-Subject: [PATCH 3/3] ARM: OMAP: SmartReflex driver: integration to linux-omap
-Date: Fri, 6 Jun 2008 12:49:49 +0300
-Message-Id: <1212745789-13926-3-git-send-email-ext-kalle.jokiniemi@nokia.com>
-
-- Changed register accesses to use prm_{read,write}_mod_reg and
- prm_{set,clear,rmw}_mod_reg_bits() functions instread of
- "REG_X = REG_Y" type accesses.
-
-- Changed direct register clock enables/disables to clockframework calls.
-
-- replaced cpu-related #ifdefs with if (cpu_is_xxxx()) calls.
-
-- Added E-fuse support: Use silicon characteristics parameters from E-fuse
-
-- added smartreflex_disable/enable calls to pm34xx.c suspend function.
-
-- Added "SmartReflex support" entry into Kconfig under "System type->TI OMAP
- Implementations". It depends on ARCH_OMAP34XX and TWL4030_CORE.
-
-- Added "SmartReflex testing support" Kconfig option for using hard coded
- software parameters instead of E-fuse parameters.
-
-Signed-off-by: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
----
- arch/arm/mach-omap2/Makefile | 3 +
- arch/arm/mach-omap2/pm34xx.c | 9 +
- arch/arm/mach-omap2/smartreflex.c | 531 +++++++++++++++++++++++--------------
- arch/arm/mach-omap2/smartreflex.h | 9 +-
- arch/arm/plat-omap/Kconfig | 31 +++
- 5 files changed, 385 insertions(+), 198 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
-index 50c6657..f645b6e 100644
---- a/arch/arm/mach-omap2/Makefile
-+++ b/arch/arm/mach-omap2/Makefile
-@@ -25,6 +25,9 @@ obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o
- obj-$(CONFIG_PM_DEBUG) += pm-debug.o
- endif
-
-+# SmartReflex driver
-+obj-$(CONFIG_OMAP_SMARTREFLEX) += smartreflex.o
-+
- # Clock framework
- obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o
- obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o
-diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
-index 7e775cc..3da4f47 100644
---- a/arch/arm/mach-omap2/pm34xx.c
-+++ b/arch/arm/mach-omap2/pm34xx.c
-@@ -36,6 +36,7 @@
-
- #include "prm.h"
- #include "pm.h"
-+#include "smartreflex.h"
-
- struct power_state {
- struct powerdomain *pwrdm;
-@@ -256,6 +257,10 @@ static int omap3_pm_suspend(void)
- struct power_state *pwrst;
- int state, ret = 0;
-
-+ /* XXX Disable smartreflex before entering suspend */
-+ disable_smartreflex(SR1);
-+ disable_smartreflex(SR2);
-+
- /* Read current next_pwrsts */
- list_for_each_entry(pwrst, &pwrst_list, node)
- pwrst->saved_state = pwrdm_read_next_pwrst(pwrst->pwrdm);
-@@ -287,6 +292,10 @@ restore:
- printk(KERN_INFO "Successfully put all powerdomains "
- "to target state\n");
-
-+ /* XXX Enable smartreflex after suspend */
-+ enable_smartreflex(SR1);
-+ enable_smartreflex(SR2);
-+
- return ret;
- }
-
-diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
-index dae7460..0b10a5d 100644
---- a/arch/arm/mach-omap2/smartreflex.c
-+++ b/arch/arm/mach-omap2/smartreflex.c
-@@ -3,6 +3,9 @@
- *
- * OMAP34XX SmartReflex Voltage Control
- *
-+ * Copyright (C) 2008 Nokia Corporation
-+ * Kalle Jokiniemi
-+ *
- * Copyright (C) 2007 Texas Instruments, Inc.
- * Lesly A M <x0080970@ti.com>
- *
-@@ -20,13 +23,16 @@
- #include <linux/err.h>
- #include <linux/clk.h>
- #include <linux/sysfs.h>
--
--#include <asm/arch/prcm.h>
--#include <asm/arch/power_companion.h>
-+#include <linux/kobject.h>
-+#include <linux/i2c/twl4030.h>
- #include <linux/io.h>
-
--#include "prcm-regs.h"
-+#include <asm/arch/omap34xx.h>
-+#include <asm/arch/control.h>
-+
-+#include "prm.h"
- #include "smartreflex.h"
-+#include "prm-regbits-34xx.h"
-
-
- /* #define DEBUG_SR 1 */
-@@ -37,11 +43,16 @@
- # define DPRINTK(fmt, args...)
- #endif
-
-+/* XXX: These should be relocated where-ever the OPP implementation will be */
-+u32 current_vdd1_opp;
-+u32 current_vdd2_opp;
-+
- struct omap_sr{
- int srid;
- int is_sr_reset;
- int is_autocomp_active;
- struct clk *fck;
-+ u32 clk_length;
- u32 req_opp_no;
- u32 opp1_nvalue, opp2_nvalue, opp3_nvalue, opp4_nvalue, opp5_nvalue;
- u32 senp_mod, senn_mod;
-@@ -53,6 +64,7 @@ static struct omap_sr sr1 = {
- .srid = SR1,
- .is_sr_reset = 1,
- .is_autocomp_active = 0,
-+ .clk_length = 0,
- .srbase_addr = OMAP34XX_SR1_BASE,
- };
-
-@@ -60,6 +72,7 @@ static struct omap_sr sr2 = {
- .srid = SR2,
- .is_sr_reset = 1,
- .is_autocomp_active = 0,
-+ .clk_length = 0,
- .srbase_addr = OMAP34XX_SR2_BASE,
- };
-
-@@ -85,8 +98,6 @@ static inline u32 sr_read_reg(struct omap_sr *sr, int offset)
- return omap_readl(sr->srbase_addr + offset);
- }
-
--
--#ifndef USE_EFUSE_VALUES
- static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen)
- {
- u32 gn, rn, mul;
-@@ -100,7 +111,21 @@ static void cal_reciprocal(u32 sensor, u32 *sengain, u32 *rnsen)
- }
- }
- }
--#endif
-+
-+static void sr_clk_get(struct omap_sr *sr)
-+{
-+ if (sr->srid == SR1) {
-+ sr->fck = clk_get(NULL, "sr1_fck");
-+ if (IS_ERR(sr->fck))
-+ printk(KERN_ERR "Could not get sr1_fck\n");
-+
-+ } else if (sr->srid == SR2) {
-+ sr->fck = clk_get(NULL, "sr2_fck");
-+ if (IS_ERR(sr->fck))
-+ printk(KERN_ERR "Could not get sr2_fck\n");
-+
-+ }
-+}
-
- static int sr_clk_enable(struct omap_sr *sr)
- {
-@@ -131,22 +156,86 @@ static int sr_clk_disable(struct omap_sr *sr)
- return 0;
- }
-
--static void sr_set_nvalues(struct omap_sr *sr)
-+static void sr_set_clk_length(struct omap_sr *sr)
-+{
-+ struct clk *osc_sys_ck;
-+ u32 sys_clk = 0;
-+
-+ osc_sys_ck = clk_get(NULL, "osc_sys_ck");
-+ sys_clk = clk_get_rate(osc_sys_ck);
-+ clk_put(osc_sys_ck);
-+
-+ switch (sys_clk) {
-+ case 12000000:
-+ sr->clk_length = SRCLKLENGTH_12MHZ_SYSCLK;
-+ break;
-+ case 13000000:
-+ sr->clk_length = SRCLKLENGTH_13MHZ_SYSCLK;
-+ break;
-+ case 19200000:
-+ sr->clk_length = SRCLKLENGTH_19MHZ_SYSCLK;
-+ break;
-+ case 26000000:
-+ sr->clk_length = SRCLKLENGTH_26MHZ_SYSCLK;
-+ break;
-+ case 38400000:
-+ sr->clk_length = SRCLKLENGTH_38MHZ_SYSCLK;
-+ break;
-+ default :
-+ printk(KERN_ERR "Invalid sysclk value: %d\n", sys_clk);
-+ break;
-+ }
-+}
-+
-+static void sr_set_efuse_nvalues(struct omap_sr *sr)
-+{
-+ if (sr->srid == SR1) {
-+ sr->senn_mod = (omap_ctrl_readl(OMAP343X_CONTROL_FUSE_SR) &
-+ OMAP343X_SR1_SENNENABLE_MASK) >>
-+ OMAP343X_SR1_SENNENABLE_SHIFT;
-+
-+ sr->senp_mod = (omap_ctrl_readl(OMAP343X_CONTROL_FUSE_SR) &
-+ OMAP343X_SR1_SENPENABLE_MASK) >>
-+ OMAP343X_SR1_SENPENABLE_SHIFT;
-+
-+ sr->opp5_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP5_VDD1);
-+ sr->opp4_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP4_VDD1);
-+ sr->opp3_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP3_VDD1);
-+ sr->opp2_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP2_VDD1);
-+ sr->opp1_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP1_VDD1);
-+ } else if (sr->srid == SR2) {
-+ sr->senn_mod = (omap_ctrl_readl(OMAP343X_CONTROL_FUSE_SR) &
-+ OMAP343X_SR2_SENNENABLE_MASK) >>
-+ OMAP343X_SR2_SENNENABLE_SHIFT;
-+
-+ sr->senp_mod = (omap_ctrl_readl(OMAP343X_CONTROL_FUSE_SR) &
-+ OMAP343X_SR2_SENPENABLE_MASK) >>
-+ OMAP343X_SR2_SENPENABLE_SHIFT;
-+
-+ sr->opp3_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP3_VDD2);
-+ sr->opp2_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP2_VDD2);
-+ sr->opp1_nvalue = omap_ctrl_readl(
-+ OMAP343X_CONTROL_FUSE_OPP1_VDD2);
-+ }
-+}
-+
-+/* Hard coded nvalues for testing purposes, may cause device to hang! */
-+static void sr_set_testing_nvalues(struct omap_sr *sr)
- {
--#ifdef USE_EFUSE_VALUES
-- u32 n1, n2;
--#else
- u32 senpval, sennval;
- u32 senpgain, senngain;
- u32 rnsenp, rnsenn;
--#endif
-
- if (sr->srid == SR1) {
--#ifdef USE_EFUSE_VALUES
-- /* Read values for VDD1 from EFUSE */
--#else
-- /* since E-Fuse Values are not available, calculating the
-- * reciprocal of the SenN and SenP values for SR1
-+ /* Calculating the reciprocal of the SenN and SenP values
-+ * for SR1
- */
- sr->senp_mod = 0x03; /* SenN-M5 enabled */
- sr->senn_mod = 0x03;
-@@ -216,15 +305,16 @@ static void sr_set_nvalues(struct omap_sr *sr)
- (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
- (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
-
-+ /* XXX The clocks are enabled in the startup and NVALUE is
-+ * set also there. Disabling this for now, but this could
-+ * be related to dynamic sleep during boot */
-+#if 0
- sr_clk_enable(sr);
- sr_write_reg(sr, NVALUERECIPROCAL, sr->opp3_nvalue);
- sr_clk_disable(sr);
--
- #endif
-+
- } else if (sr->srid == SR2) {
--#ifdef USE_EFUSE_VALUES
-- /* Read values for VDD2 from EFUSE */
--#else
- /* since E-Fuse Values are not available, calculating the
- * reciprocal of the SenN and SenP values for SR2
- */
-@@ -269,134 +359,163 @@ static void sr_set_nvalues(struct omap_sr *sr)
- (senngain << NVALUERECIPROCAL_SENNGAIN_SHIFT) |
- (rnsenp << NVALUERECIPROCAL_RNSENP_SHIFT) |
- (rnsenn << NVALUERECIPROCAL_RNSENN_SHIFT));
--
--#endif
- }
-
- }
-
-+static void sr_set_nvalues(struct omap_sr *sr)
-+{
-+ if (SR_TESTING_NVALUES)
-+ sr_set_testing_nvalues(sr);
-+ else
-+ sr_set_efuse_nvalues(sr);
-+}
-+
- static void sr_configure_vp(int srid)
- {
- u32 vpconfig;
-
- if (srid == SR1) {
- vpconfig = PRM_VP1_CONFIG_ERROROFFSET | PRM_VP1_CONFIG_ERRORGAIN
-- | PRM_VP1_CONFIG_INITVOLTAGE | PRM_VP1_CONFIG_TIMEOUTEN;
--
-- PRM_VP1_CONFIG = vpconfig;
-- PRM_VP1_VSTEPMIN = PRM_VP1_VSTEPMIN_SMPSWAITTIMEMIN |
-- PRM_VP1_VSTEPMIN_VSTEPMIN;
--
-- PRM_VP1_VSTEPMAX = PRM_VP1_VSTEPMAX_SMPSWAITTIMEMAX |
-- PRM_VP1_VSTEPMAX_VSTEPMAX;
--
-- PRM_VP1_VLIMITTO = PRM_VP1_VLIMITTO_VDDMAX |
-- PRM_VP1_VLIMITTO_VDDMIN | PRM_VP1_VLIMITTO_TIMEOUT;
--
-- PRM_VP1_CONFIG |= PRM_VP1_CONFIG_INITVDD;
-- PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_INITVDD;
-+ | PRM_VP1_CONFIG_INITVOLTAGE
-+ | PRM_VP1_CONFIG_TIMEOUTEN;
-+
-+ prm_write_mod_reg(vpconfig, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
-+ prm_write_mod_reg(PRM_VP1_VSTEPMIN_SMPSWAITTIMEMIN |
-+ PRM_VP1_VSTEPMIN_VSTEPMIN,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_VSTEPMIN_OFFSET);
-+
-+ prm_write_mod_reg(PRM_VP1_VSTEPMAX_SMPSWAITTIMEMAX |
-+ PRM_VP1_VSTEPMAX_VSTEPMAX,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_VSTEPMAX_OFFSET);
-+
-+ prm_write_mod_reg(PRM_VP1_VLIMITTO_VDDMAX |
-+ PRM_VP1_VLIMITTO_VDDMIN |
-+ PRM_VP1_VLIMITTO_TIMEOUT,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_VLIMITTO_OFFSET);
-+
-+ /* Trigger initVDD value copy to voltage processor */
-+ prm_set_mod_reg_bits(PRM_VP1_CONFIG_INITVDD, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
-+ /* Clear initVDD copy trigger bit */
-+ prm_clear_mod_reg_bits(PRM_VP1_CONFIG_INITVDD, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
-
- } else if (srid == SR2) {
- vpconfig = PRM_VP2_CONFIG_ERROROFFSET | PRM_VP2_CONFIG_ERRORGAIN
-- | PRM_VP2_CONFIG_INITVOLTAGE | PRM_VP2_CONFIG_TIMEOUTEN;
--
-- PRM_VP2_CONFIG = vpconfig;
-- PRM_VP2_VSTEPMIN = PRM_VP2_VSTEPMIN_SMPSWAITTIMEMIN |
-- PRM_VP2_VSTEPMIN_VSTEPMIN;
--
-- PRM_VP2_VSTEPMAX = PRM_VP2_VSTEPMAX_SMPSWAITTIMEMAX |
-- PRM_VP2_VSTEPMAX_VSTEPMAX;
--
-- PRM_VP2_VLIMITTO = PRM_VP2_VLIMITTO_VDDMAX |
-- PRM_VP2_VLIMITTO_VDDMIN | PRM_VP2_VLIMITTO_TIMEOUT;
--
-- PRM_VP2_CONFIG |= PRM_VP2_CONFIG_INITVDD;
-- PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_INITVDD;
-+ | PRM_VP2_CONFIG_INITVOLTAGE
-+ | PRM_VP2_CONFIG_TIMEOUTEN;
-+
-+ prm_write_mod_reg(vpconfig, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
-+ prm_write_mod_reg(PRM_VP2_VSTEPMIN_SMPSWAITTIMEMIN |
-+ PRM_VP2_VSTEPMIN_VSTEPMIN,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_VSTEPMIN_OFFSET);
-+
-+ prm_write_mod_reg(PRM_VP2_VSTEPMAX_SMPSWAITTIMEMAX |
-+ PRM_VP2_VSTEPMAX_VSTEPMAX,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_VSTEPMAX_OFFSET);
-+
-+ prm_write_mod_reg(PRM_VP2_VLIMITTO_VDDMAX |
-+ PRM_VP2_VLIMITTO_VDDMIN |
-+ PRM_VP2_VLIMITTO_TIMEOUT,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_VLIMITTO_OFFSET);
-+
-+ /* Trigger initVDD value copy to voltage processor */
-+ prm_set_mod_reg_bits(PRM_VP2_CONFIG_INITVDD, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
-+ /* Reset initVDD copy trigger bit */
-+ prm_clear_mod_reg_bits(PRM_VP2_CONFIG_INITVDD, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
-
- }
- }
-
- static void sr_configure_vc(void)
- {
-- PRM_VC_SMPS_SA =
-- (R_SRI2C_SLAVE_ADDR << PRM_VC_SMPS_SA1_SHIFT) |
-- (R_SRI2C_SLAVE_ADDR << PRM_VC_SMPS_SA0_SHIFT);
--
-- PRM_VC_SMPS_VOL_RA = (R_VDD2_SR_CONTROL << PRM_VC_SMPS_VOLRA1_SHIFT) |
-- (R_VDD1_SR_CONTROL << PRM_VC_SMPS_VOLRA0_SHIFT);
--
-- PRM_VC_CMD_VAL_0 = (PRM_VC_CMD_VAL0_ON << PRM_VC_CMD_ON_SHIFT) |
-- (PRM_VC_CMD_VAL0_ONLP << PRM_VC_CMD_ONLP_SHIFT) |
-- (PRM_VC_CMD_VAL0_RET << PRM_VC_CMD_RET_SHIFT) |
-- (PRM_VC_CMD_VAL0_OFF << PRM_VC_CMD_OFF_SHIFT);
--
-- PRM_VC_CMD_VAL_1 = (PRM_VC_CMD_VAL1_ON << PRM_VC_CMD_ON_SHIFT) |
-- (PRM_VC_CMD_VAL1_ONLP << PRM_VC_CMD_ONLP_SHIFT) |
-- (PRM_VC_CMD_VAL1_RET << PRM_VC_CMD_RET_SHIFT) |
-- (PRM_VC_CMD_VAL1_OFF << PRM_VC_CMD_OFF_SHIFT);
--
-- PRM_VC_CH_CONF = PRM_VC_CH_CONF_CMD1 | PRM_VC_CH_CONF_RAV1;
--
-- PRM_VC_I2C_CFG = PRM_VC_I2C_CFG_MCODE | PRM_VC_I2C_CFG_HSEN
-- | PRM_VC_I2C_CFG_SREN;
-+ prm_write_mod_reg((R_SRI2C_SLAVE_ADDR << OMAP3430_SMPS_SA1_SHIFT) |
-+ (R_SRI2C_SLAVE_ADDR << OMAP3430_SMPS_SA0_SHIFT),
-+ OMAP3430_GR_MOD, OMAP3_PRM_VC_SMPS_SA_OFFSET);
-+
-+ prm_write_mod_reg((R_VDD2_SR_CONTROL << OMAP3430_VOLRA1_SHIFT) |
-+ (R_VDD1_SR_CONTROL << OMAP3430_VOLRA0_SHIFT),
-+ OMAP3430_GR_MOD, OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET);
-+
-+ prm_write_mod_reg((OMAP3430_VC_CMD_VAL0_ON <<
-+ OMAP3430_VC_CMD_ON_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL0_ONLP << OMAP3430_VC_CMD_ONLP_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL0_RET << OMAP3430_VC_CMD_RET_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL0_OFF << OMAP3430_VC_CMD_OFF_SHIFT),
-+ OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_0_OFFSET);
-+
-+ prm_write_mod_reg((OMAP3430_VC_CMD_VAL1_ON <<
-+ OMAP3430_VC_CMD_ON_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL1_ONLP << OMAP3430_VC_CMD_ONLP_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL1_RET << OMAP3430_VC_CMD_RET_SHIFT) |
-+ (OMAP3430_VC_CMD_VAL1_OFF << OMAP3430_VC_CMD_OFF_SHIFT),
-+ OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_1_OFFSET);
-+
-+ prm_write_mod_reg(OMAP3430_CMD1 | OMAP3430_RAV1,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_CH_CONF_OFFSET);
-+
-+ prm_write_mod_reg(OMAP3430_MCODE_SHIFT | OMAP3430_HSEN | OMAP3430_SREN,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_I2C_CFG_OFFSET);
-
- /* Setup voltctrl and other setup times */
-+ /* XXX CONFIG_SYSOFFMODE has not been implemented yet */
- #ifdef CONFIG_SYSOFFMODE
-- PRM_VOLTCTRL = PRM_VOLTCTRL_AUTO_OFF | PRM_VOLTCTRL_AUTO_RET;
-- PRM_CLKSETUP = PRM_CLKSETUP_DURATION;
-- PRM_VOLTSETUP1 = (PRM_VOLTSETUP_TIME2 << PRM_VOLTSETUP_TIME2_OFFSET) |
-- (PRM_VOLTSETUP_TIME1 << PRM_VOLTSETUP_TIME1_OFFSET);
-- PRM_VOLTOFFSET = PRM_VOLTOFFSET_DURATION;
-- PRM_VOLTSETUP2 = PRM_VOLTSETUP2_DURATION;
-+ prm_write_mod_reg(OMAP3430_AUTO_OFF | OMAP3430_AUTO_RET,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VOLTCTRL_OFFSET);
-+
-+ prm_write_mod_reg(OMAP3430_CLKSETUP_DURATION, OMAP3430_GR_MOD,
-+ OMAP3_PRM_CLKSETUP_OFFSET);
-+ prm_write_mod_reg((OMAP3430_VOLTSETUP_TIME2 <<
-+ OMAP3430_VOLTSETUP_TIME2_OFFSET) |
-+ (OMAP3430_VOLTSETUP_TIME1 <<
-+ OMAP3430_VOLTSETUP_TIME1_OFFSET),
-+ OMAP3430_GR_MOD, OMAP3_PRM_VOLTSETUP1_OFFSET);
-+
-+ prm_write_mod_reg(OMAP3430_VOLTOFFSET_DURATION, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VOLTOFFSET_OFFSET);
-+ prm_write_mod_reg(OMAP3430_VOLTSETUP2_DURATION, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VOLTSETUP2_OFFSET);
- #else
-- PRM_VOLTCTRL |= PRM_VOLTCTRL_AUTO_RET;
-+ prm_set_mod_reg_bits(OMAP3430_AUTO_RET, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VOLTCTRL_OFFSET);
- #endif
-
- }
-
--
- static void sr_configure(struct omap_sr *sr)
- {
-- u32 sys_clk, sr_clk_length = 0;
- u32 sr_config;
- u32 senp_en , senn_en;
-
-+ if (sr->clk_length == 0)
-+ sr_set_clk_length(sr);
-+
- senp_en = sr->senp_mod;
- senn_en = sr->senn_mod;
--
-- sys_clk = prcm_get_system_clock_speed();
--
-- switch (sys_clk) {
-- case 12000:
-- sr_clk_length = SRCLKLENGTH_12MHZ_SYSCLK;
-- break;
-- case 13000:
-- sr_clk_length = SRCLKLENGTH_13MHZ_SYSCLK;
-- break;
-- case 19200:
-- sr_clk_length = SRCLKLENGTH_19MHZ_SYSCLK;
-- break;
-- case 26000:
-- sr_clk_length = SRCLKLENGTH_26MHZ_SYSCLK;
-- break;
-- case 38400:
-- sr_clk_length = SRCLKLENGTH_38MHZ_SYSCLK;
-- break;
-- default :
-- printk(KERN_ERR "Invalid sysclk value\n");
-- break;
-- }
--
-- DPRINTK(KERN_DEBUG "SR : sys clk %lu\n", sys_clk);
- if (sr->srid == SR1) {
- sr_config = SR1_SRCONFIG_ACCUMDATA |
-- (sr_clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
-+ (sr->clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
- SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN |
- SRCONFIG_MINMAXAVG_EN |
- (senn_en << SRCONFIG_SENNENABLE_SHIFT) |
- (senp_en << SRCONFIG_SENPENABLE_SHIFT) |
- SRCONFIG_DELAYCTRL;
--
-+ DPRINTK(KERN_DEBUG "setting SRCONFIG1 to 0x%08lx\n",
-+ (unsigned long int) sr_config);
- sr_write_reg(sr, SRCONFIG, sr_config);
-
- sr_write_reg(sr, AVGWEIGHT, SR1_AVGWEIGHT_SENPAVGWEIGHT |
-@@ -408,18 +527,18 @@ static void sr_configure(struct omap_sr *sr)
-
- } else if (sr->srid == SR2) {
- sr_config = SR2_SRCONFIG_ACCUMDATA |
-- (sr_clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
-+ (sr->clk_length << SRCONFIG_SRCLKLENGTH_SHIFT) |
- SRCONFIG_SENENABLE | SRCONFIG_ERRGEN_EN |
- SRCONFIG_MINMAXAVG_EN |
- (senn_en << SRCONFIG_SENNENABLE_SHIFT) |
- (senp_en << SRCONFIG_SENPENABLE_SHIFT) |
- SRCONFIG_DELAYCTRL;
-
-+ DPRINTK(KERN_DEBUG "setting SRCONFIG2 to 0x%08lx\n",
-+ (unsigned long int) sr_config);
- sr_write_reg(sr, SRCONFIG, sr_config);
--
- sr_write_reg(sr, AVGWEIGHT, SR2_AVGWEIGHT_SENPAVGWEIGHT |
- SR2_AVGWEIGHT_SENNAVGWEIGHT);
--
- sr_modify_reg(sr, ERRCONFIG, (SR_ERRWEIGHT_MASK |
- SR_ERRMAXLIMIT_MASK | SR_ERRMINLIMIT_MASK),
- (SR2_ERRWEIGHT | SR2_ERRMAXLIMIT | SR2_ERRMINLIMIT));
-@@ -428,9 +547,9 @@ static void sr_configure(struct omap_sr *sr)
- sr->is_sr_reset = 0;
- }
-
--static void sr_enable(struct omap_sr *sr, u32 target_opp_no)
-+static int sr_enable(struct omap_sr *sr, u32 target_opp_no)
- {
-- u32 nvalue_reciprocal, current_nvalue;
-+ u32 nvalue_reciprocal;
-
- sr->req_opp_no = target_opp_no;
-
-@@ -472,11 +591,10 @@ static void sr_enable(struct omap_sr *sr, u32 target_opp_no)
- }
- }
-
-- current_nvalue = sr_read_reg(sr, NVALUERECIPROCAL);
--
-- if (current_nvalue == nvalue_reciprocal) {
-- DPRINTK("System is already at the desired voltage level\n");
-- return;
-+ if (nvalue_reciprocal == 0) {
-+ printk(KERN_NOTICE "OPP%d doesn't support SmartReflex\n",
-+ target_opp_no);
-+ return SR_FALSE;
- }
-
- sr_write_reg(sr, NVALUERECIPROCAL, nvalue_reciprocal);
-@@ -485,18 +603,19 @@ static void sr_enable(struct omap_sr *sr, u32 target_opp_no)
- sr_modify_reg(sr, ERRCONFIG,
- (ERRCONFIG_VPBOUNDINTEN | ERRCONFIG_VPBOUNDINTST),
- (ERRCONFIG_VPBOUNDINTEN | ERRCONFIG_VPBOUNDINTST));
--
- if (sr->srid == SR1) {
- /* Enable VP1 */
-- PRM_VP1_CONFIG |= PRM_VP1_CONFIG_VPENABLE;
-+ prm_set_mod_reg_bits(PRM_VP1_CONFIG_VPENABLE, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
- } else if (sr->srid == SR2) {
- /* Enable VP2 */
-- PRM_VP2_CONFIG |= PRM_VP2_CONFIG_VPENABLE;
-+ prm_set_mod_reg_bits(PRM_VP2_CONFIG_VPENABLE, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
- }
-
- /* SRCONFIG - enable SR */
- sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE, SRCONFIG_SRENABLE);
--
-+ return SR_TRUE;
- }
-
- static void sr_disable(struct omap_sr *sr)
-@@ -507,11 +626,13 @@ static void sr_disable(struct omap_sr *sr)
- sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE, ~SRCONFIG_SRENABLE);
-
- if (sr->srid == SR1) {
-- /* Enable VP1 */
-- PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_VPENABLE;
-+ /* Disable VP1 */
-+ prm_clear_mod_reg_bits(PRM_VP1_CONFIG_VPENABLE, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
- } else if (sr->srid == SR2) {
-- /* Enable VP2 */
-- PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_VPENABLE;
-+ /* Disable VP2 */
-+ prm_clear_mod_reg_bits(PRM_VP2_CONFIG_VPENABLE, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
- }
- }
-
-@@ -535,7 +656,12 @@ void sr_start_vddautocomap(int srid, u32 target_opp_no)
- srid);
-
- sr->is_autocomp_active = 1;
-- sr_enable(sr, target_opp_no);
-+ if (!sr_enable(sr, target_opp_no)) {
-+ printk(KERN_WARNING "SR%d: VDD autocomp not activated\n", srid);
-+ sr->is_autocomp_active = 0;
-+ if (sr->is_sr_reset == 1)
-+ sr_clk_disable(sr);
-+ }
- }
- EXPORT_SYMBOL(sr_start_vddautocomap);
-
-@@ -574,20 +700,18 @@ void enable_smartreflex(int srid)
-
- if (sr->is_autocomp_active == 1) {
- if (sr->is_sr_reset == 1) {
-- if (srid == SR1) {
-- /* Enable SR clks */
-- CM_FCLKEN_WKUP |= SR1_CLK_ENABLE;
-- target_opp_no = get_opp_no(current_vdd1_opp);
-+ /* Enable SR clks */
-+ sr_clk_enable(sr);
-
-- } else if (srid == SR2) {
-- /* Enable SR clks */
-- CM_FCLKEN_WKUP |= SR2_CLK_ENABLE;
-+ if (srid == SR1)
-+ target_opp_no = get_opp_no(current_vdd1_opp);
-+ else if (srid == SR2)
- target_opp_no = get_opp_no(current_vdd2_opp);
-- }
-
- sr_configure(sr);
-
-- sr_enable(sr, target_opp_no);
-+ if (!sr_enable(sr, target_opp_no))
-+ sr_clk_disable(sr);
- }
- }
- }
-@@ -602,15 +726,6 @@ void disable_smartreflex(int srid)
- sr = &sr2;
-
- if (sr->is_autocomp_active == 1) {
-- if (srid == SR1) {
-- /* Enable SR clk */
-- CM_FCLKEN_WKUP |= SR1_CLK_ENABLE;
--
-- } else if (srid == SR2) {
-- /* Enable SR clk */
-- CM_FCLKEN_WKUP |= SR2_CLK_ENABLE;
-- }
--
- if (sr->is_sr_reset == 0) {
-
- sr->is_sr_reset = 1;
-@@ -618,17 +733,18 @@ void disable_smartreflex(int srid)
- sr_modify_reg(sr, SRCONFIG, SRCONFIG_SRENABLE,
- ~SRCONFIG_SRENABLE);
-
-+ /* Disable SR clk */
-+ sr_clk_disable(sr);
- if (sr->srid == SR1) {
-- /* Disable SR clk */
-- CM_FCLKEN_WKUP &= ~SR1_CLK_ENABLE;
-- /* Enable VP1 */
-- PRM_VP1_CONFIG &= ~PRM_VP1_CONFIG_VPENABLE;
--
-+ /* Disable VP1 */
-+ prm_clear_mod_reg_bits(PRM_VP1_CONFIG_VPENABLE,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP1_CONFIG_OFFSET);
- } else if (sr->srid == SR2) {
-- /* Disable SR clk */
-- CM_FCLKEN_WKUP &= ~SR2_CLK_ENABLE;
-- /* Enable VP2 */
-- PRM_VP2_CONFIG &= ~PRM_VP2_CONFIG_VPENABLE;
-+ /* Disable VP2 */
-+ prm_clear_mod_reg_bits(PRM_VP2_CONFIG_VPENABLE,
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VP2_CONFIG_OFFSET);
- }
- }
- }
-@@ -638,7 +754,6 @@ void disable_smartreflex(int srid)
- /* Voltage Scaling using SR VCBYPASS */
- int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel)
- {
-- int ret;
- int sr_status = 0;
- u32 vdd, target_opp_no;
- u32 vc_bypass_value;
-@@ -651,39 +766,53 @@ int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel)
- if (vdd == PRCM_VDD1) {
- sr_status = sr_stop_vddautocomap(SR1);
-
-- PRM_VC_CMD_VAL_0 = (PRM_VC_CMD_VAL_0 & ~PRM_VC_CMD_ON_MASK) |
-- (vsel << PRM_VC_CMD_ON_SHIFT);
-+ prm_rmw_mod_reg_bits(OMAP3430_VC_CMD_ON_MASK,
-+ (vsel << OMAP3430_VC_CMD_ON_SHIFT),
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_CMD_VAL_0_OFFSET);
- reg_addr = R_VDD1_SR_CONTROL;
-
- } else if (vdd == PRCM_VDD2) {
- sr_status = sr_stop_vddautocomap(SR2);
-
-- PRM_VC_CMD_VAL_1 = (PRM_VC_CMD_VAL_1 & ~PRM_VC_CMD_ON_MASK) |
-- (vsel << PRM_VC_CMD_ON_SHIFT);
-+ prm_rmw_mod_reg_bits(OMAP3430_VC_CMD_ON_MASK,
-+ (vsel << OMAP3430_VC_CMD_ON_SHIFT),
-+ OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_CMD_VAL_1_OFFSET);
- reg_addr = R_VDD2_SR_CONTROL;
- }
-
-- vc_bypass_value = (vsel << PRM_VC_BYPASS_DATA_SHIFT) |
-- (reg_addr << PRM_VC_BYPASS_REGADDR_SHIFT) |
-- (R_SRI2C_SLAVE_ADDR << PRM_VC_BYPASS_SLAVEADDR_SHIFT);
-+ vc_bypass_value = (vsel << OMAP3430_DATA_SHIFT) |
-+ (reg_addr << OMAP3430_REGADDR_SHIFT) |
-+ (R_SRI2C_SLAVE_ADDR << OMAP3430_SLAVEADDR_SHIFT);
-
-- PRM_VC_BYPASS_VAL = vc_bypass_value;
-+ prm_write_mod_reg(vc_bypass_value, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_BYPASS_VAL_OFFSET);
-
-- PRM_VC_BYPASS_VAL |= PRM_VC_BYPASS_VALID;
-+ vc_bypass_value = prm_set_mod_reg_bits(OMAP3430_VALID, OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_BYPASS_VAL_OFFSET);
-
-- DPRINTK("%s : PRM_VC_BYPASS_VAL %X\n", __func__, PRM_VC_BYPASS_VAL);
-- DPRINTK("PRM_IRQST_MPU %X\n", PRM_IRQSTATUS_MPU);
-+ DPRINTK("%s : PRM_VC_BYPASS_VAL %X\n", __func__, vc_bypass_value);
-+ DPRINTK("PRM_IRQST_MPU %X\n", prm_read_mod_reg(OCP_MOD,
-+ OMAP3_PRM_IRQSTATUS_MPU_OFFSET));
-
-- while ((PRM_VC_BYPASS_VAL & PRM_VC_BYPASS_VALID) != 0x0) {
-- ret = loop_wait(&loop_cnt, &retries_cnt, 10);
-- if (ret != PRCM_PASS) {
-+ while ((vc_bypass_value & OMAP3430_VALID) != 0x0) {
-+ loop_cnt++;
-+ if (retries_cnt > 10) {
- printk(KERN_INFO "Loop count exceeded in check SR I2C"
- "write\n");
-- return ret;
-+ return SR_FAIL;
-+ }
-+ if (loop_cnt > 50) {
-+ retries_cnt++;
-+ loop_cnt = 0;
-+ udelay(10);
- }
-+ vc_bypass_value = prm_read_mod_reg(OMAP3430_GR_MOD,
-+ OMAP3_PRM_VC_BYPASS_VAL_OFFSET);
- }
-
-- omap_udelay(T2_SMPS_UPDATE_DELAY);
-+ udelay(T2_SMPS_UPDATE_DELAY);
-
- if (sr_status) {
- if (vdd == PRCM_VDD1)
-@@ -696,13 +825,15 @@ int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel)
- }
-
- /* Sysfs interface to select SR VDD1 auto compensation */
--static ssize_t omap_sr_vdd1_autocomp_show(struct kset *subsys, char *buf)
-+static ssize_t omap_sr_vdd1_autocomp_show(struct kobject *kobj,
-+ struct kobj_attribute *attr, char *buf)
- {
- return sprintf(buf, "%d\n", sr1.is_autocomp_active);
- }
-
--static ssize_t omap_sr_vdd1_autocomp_store(struct kset *subsys,
-- const char *buf, size_t n)
-+static ssize_t omap_sr_vdd1_autocomp_store(struct kobject *kobj,
-+ struct kobj_attribute *attr,
-+ const char *buf, size_t n)
- {
- u32 current_vdd1opp_no;
- unsigned short value;
-@@ -722,7 +853,7 @@ static ssize_t omap_sr_vdd1_autocomp_store(struct kset *subsys,
- return n;
- }
-
--static struct subsys_attribute sr_vdd1_autocomp = {
-+static struct kobj_attribute sr_vdd1_autocomp = {
- .attr = {
- .name = __stringify(sr_vdd1_autocomp),
- .mode = 0644,
-@@ -732,13 +863,15 @@ static struct subsys_attribute sr_vdd1_autocomp = {
- };
-
- /* Sysfs interface to select SR VDD2 auto compensation */
--static ssize_t omap_sr_vdd2_autocomp_show(struct kset *subsys, char *buf)
-+static ssize_t omap_sr_vdd2_autocomp_show(struct kobject *kobj,
-+ struct kobj_attribute *attr, char *buf)
- {
- return sprintf(buf, "%d\n", sr2.is_autocomp_active);
- }
-
--static ssize_t omap_sr_vdd2_autocomp_store(struct kset *subsys,
-- const char *buf, size_t n)
-+static ssize_t omap_sr_vdd2_autocomp_store(struct kobject *kobj,
-+ struct kobj_attribute *attr,
-+ const char *buf, size_t n)
- {
- u32 current_vdd2opp_no;
- unsigned short value;
-@@ -758,7 +891,7 @@ static ssize_t omap_sr_vdd2_autocomp_store(struct kset *subsys,
- return n;
- }
-
--static struct subsys_attribute sr_vdd2_autocomp = {
-+static struct kobj_attribute sr_vdd2_autocomp = {
- .attr = {
- .name = __stringify(sr_vdd2_autocomp),
- .mode = 0644,
-@@ -774,15 +907,19 @@ static int __init omap3_sr_init(void)
- int ret = 0;
- u8 RdReg;
-
--#ifdef CONFIG_ARCH_OMAP34XX
-- sr1.fck = clk_get(NULL, "sr1_fck");
-- if (IS_ERR(sr1.fck))
-- printk(KERN_ERR "Could not get sr1_fck\n");
--
-- sr2.fck = clk_get(NULL, "sr2_fck");
-- if (IS_ERR(sr2.fck))
-- printk(KERN_ERR "Could not get sr2_fck\n");
--#endif /* #ifdef CONFIG_ARCH_OMAP34XX */
-+ if (is_sil_rev_greater_than(OMAP3430_REV_ES1_0)) {
-+ current_vdd1_opp = PRCM_VDD1_OPP3;
-+ current_vdd2_opp = PRCM_VDD2_OPP3;
-+ } else {
-+ current_vdd1_opp = PRCM_VDD1_OPP1;
-+ current_vdd2_opp = PRCM_VDD1_OPP1;
-+ }
-+ if (cpu_is_omap34xx()) {
-+ sr_clk_get(&sr1);
-+ sr_clk_get(&sr2);
-+ }
-+ sr_set_clk_length(&sr1);
-+ sr_set_clk_length(&sr2);
-
- /* Call the VPConfig, VCConfig, set N Values. */
- sr_set_nvalues(&sr1);
-@@ -794,22 +931,24 @@ static int __init omap3_sr_init(void)
- sr_configure_vc();
-
- /* Enable SR on T2 */
-- ret = t2_in(PM_RECEIVER, &RdReg, R_DCDC_GLOBAL_CFG);
-- RdReg |= DCDC_GLOBAL_CFG_ENABLE_SRFLX;
-- ret |= t2_out(PM_RECEIVER, RdReg, R_DCDC_GLOBAL_CFG);
-+ ret = twl4030_i2c_read_u8(TWL4030_MODULE_PM_RECEIVER, &RdReg,
-+ R_DCDC_GLOBAL_CFG);
-
-+ RdReg |= DCDC_GLOBAL_CFG_ENABLE_SRFLX;
-+ ret |= twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, RdReg,
-+ R_DCDC_GLOBAL_CFG);
-
- printk(KERN_INFO "SmartReflex driver initialized\n");
-
-- ret = subsys_create_file(&power_subsys, &sr_vdd1_autocomp);
-+ ret = sysfs_create_file(power_kobj, &sr_vdd1_autocomp.attr);
- if (ret)
-- printk(KERN_ERR "subsys_create_file failed: %d\n", ret);
-+ printk(KERN_ERR "sysfs_create_file failed: %d\n", ret);
-
-- ret = subsys_create_file(&power_subsys, &sr_vdd2_autocomp);
-+ ret = sysfs_create_file(power_kobj, &sr_vdd2_autocomp.attr);
- if (ret)
-- printk(KERN_ERR "subsys_create_file failed: %d\n", ret);
-+ printk(KERN_ERR "sysfs_create_file failed: %d\n", ret);
-
- return 0;
- }
-
--arch_initcall(omap3_sr_init);
-+late_initcall(omap3_sr_init);
-diff --git a/arch/arm/mach-omap2/smartreflex.h b/arch/arm/mach-omap2/smartreflex.h
-index 2091a15..194429e 100644
---- a/arch/arm/mach-omap2/smartreflex.h
-+++ b/arch/arm/mach-omap2/smartreflex.h
-@@ -233,12 +233,18 @@
- extern u32 current_vdd1_opp;
- extern u32 current_vdd2_opp;
-
-+#ifdef CONFIG_OMAP_SMARTREFLEX_TESTING
-+#define SR_TESTING_NVALUES 1
-+#else
-+#define SR_TESTING_NVALUES 0
-+#endif
-+
- /*
- * Smartreflex module enable/disable interface.
- * NOTE: if smartreflex is not enabled from sysfs, these functions will not
- * do anything.
- */
--#if defined(CONFIG_ARCH_OMAP34XX) && defined(CONFIG_TWL4030_CORE)
-+#ifdef CONFIG_OMAP_SMARTREFLEX
- void enable_smartreflex(int srid);
- void disable_smartreflex(int srid);
- #else
-@@ -246,7 +252,6 @@ static inline void enable_smartreflex(int srid) {}
- static inline void disable_smartreflex(int srid) {}
- #endif
-
--
- #endif
-
-
-diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
-index b085b07..960c13f 100644
---- a/arch/arm/plat-omap/Kconfig
-+++ b/arch/arm/plat-omap/Kconfig
-@@ -56,6 +56,37 @@ config OMAP_DEBUG_CLOCKDOMAIN
- for every clockdomain register write. However, the
- extra detail costs some memory.
-
-+config OMAP_SMARTREFLEX
-+ bool "SmartReflex support"
-+ depends on ARCH_OMAP34XX && TWL4030_CORE
-+ help
-+ Say Y if you want to enable SmartReflex.
-+
-+ SmartReflex can perform continuous dynamic voltage
-+ scaling around the nominal operating point voltage
-+ according to silicon characteristics and operating
-+ conditions. Enabling SmartReflex reduces power
-+ consumption.
-+
-+ Please note, that by default SmartReflex is only
-+ initialized. To enable the automatic voltage
-+ compensation for VDD1 and VDD2, user must write 1 to
-+ /sys/power/sr_vddX_autocomp, where X is 1 or 2.
-+
-+config OMAP_SMARTREFLEX_TESTING
-+ bool "Smartreflex testing support"
-+ depends on OMAP_SMARTREFLEX
-+ default n
-+ help
-+ Say Y if you want to enable SmartReflex testing with SW hardcoded
-+ NVALUES intead of E-fuse NVALUES set in factory silicon testing.
-+
-+ In some devices the E-fuse values have not been set, even though
-+ SmartReflex modules are included. Using these hardcoded values set
-+ in software, one can test the SmartReflex features without E-fuse.
-+
-+ WARNING: Enabling this option may cause your device to hang!
-+
- config OMAP_RESET_CLOCKS
- bool "Reset unused clocks during boot"
- depends on ARCH_OMAP
---
-1.5.4.3
diff --git a/packages/linux/linux-omap2-git/omap3evm/defconfig b/packages/linux/linux-omap2-git/omap3evm/defconfig
deleted file mode 100644
index a0ba3d1e0a..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/defconfig
+++ /dev/null
@@ -1,1622 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.26-rc5-omap1
-# Sun Jun 15 21:58:01 2008
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-CONFIG_ZONE_DMA=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_COMPAT_BRK=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-# CONFIG_HAVE_DMA_ATTRS is not set
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-CONFIG_LSF=y
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-CONFIG_CLASSIC_RCU=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_MSM7X00A is not set
-
-#
-# TI OMAP Implementations
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-# CONFIG_ARCH_OMAP2 is not set
-CONFIG_ARCH_OMAP3=y
-
-#
-# OMAP Feature Selections
-#
-# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
-# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-# CONFIG_OMAP_SMARTREFLEX is not set
-# CONFIG_OMAP_RESET_CLOCKS is not set
-CONFIG_OMAP_BOOT_TAG=y
-CONFIG_OMAP_BOOT_REASON=y
-# CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
-# CONFIG_OMAP_MUX is not set
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MMU_FWK is not set
-# CONFIG_OMAP_MBOX_FWK is not set
-# CONFIG_OMAP_MPU_TIMER is not set
-CONFIG_OMAP_32K_TIMER=y
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
-CONFIG_ARCH_OMAP34XX=y
-CONFIG_ARCH_OMAP3430=y
-
-#
-# OMAP Board Type
-#
-# CONFIG_MACH_OMAP_LDP is not set
-# CONFIG_MACH_OMAP_3430SDP is not set
-CONFIG_MACH_OMAP3EVM=y
-# CONFIG_MACH_OMAP3_BEAGLE is not set
-
-#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_IFAR=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMBEE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_HAS_TLS_REG=y
-# CONFIG_OUTER_CACHE is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=128
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" quiet "
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# CPUIdle
-#
-
-#
-# CPU idle PM support
-#
-# CONFIG_CPU_IDLE is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-# CONFIG_NEON is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-# CONFIG_BT_HCIBTUSB is not set
-CONFIG_BT_HCIBTSDIO=m
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIBRF6150 is not set
-# CONFIG_BT_HCIH4P is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-CONFIG_CFG80211=m
-CONFIG_NL80211=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_DEFAULT_PID=y
-# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
-
-#
-# Selecting 'y' for an algorithm will
-#
-
-#
-# build the algorithm into mac80211.
-#
-CONFIG_MAC80211_RC_DEFAULT="pid"
-CONFIG_MAC80211_RC_PID=y
-# CONFIG_MAC80211_MESH is not set
-# CONFIG_MAC80211_LEDS is not set
-# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
-# CONFIG_MAC80211_DEBUG is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_OMAP_NOR=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-CONFIG_MTD_ONENAND_OMAP2=y
-# CONFIG_MTD_ONENAND_OTP is not set
-# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
-# CONFIG_MTD_ONENAND_SIM is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_EEPROM_93CX6=m
-# CONFIG_OMAP_STI is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-CONFIG_NETDEVICES_MULTIQUEUE=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_AX88796 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_ENC28J60 is not set
-CONFIG_SMC911X=y
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_B44 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_LIBERTAS=m
-# CONFIG_LIBERTAS_USB is not set
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_RTL8187 is not set
-CONFIG_P54_COMMON=m
-# CONFIG_P54_USB is not set
-# CONFIG_IWLWIFI_LEDS is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_RT2X00 is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_TSC2005 is not set
-# CONFIG_TOUCHSCREEN_TSC2102 is not set
-# CONFIG_TOUCHSCREEN_TSC210X is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_DEVKMEM=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_OCORES is not set
-CONFIG_I2C_OMAP=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_PCF8575 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_SENSORS_TLV320AIC23 is not set
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_GPIO=y
-# CONFIG_TWL4030_MADC is not set
-CONFIG_TWL4030_USB=y
-CONFIG_TWL4030_USB_HS_ULPI=y
-# CONFIG_TWL4030_PWRBUTTON is not set
-# CONFIG_TWL4030_POWEROFF is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_LP5521 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_OMAP24XX=y
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_TSC2101 is not set
-# CONFIG_SPI_TSC2102 is not set
-# CONFIG_SPI_TSC210X is not set
-# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-CONFIG_HAVE_GPIO_LIB=y
-
-#
-# GPIO Support
-#
-# CONFIG_DEBUG_GPIO is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_OMAP_WATCHDOG=y
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-# CONFIG_VIDEO_MEDIA is not set
-
-#
-# Multimedia drivers
-#
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_OMAP=y
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-# CONFIG_LOGO is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-CONFIG_SND_DEBUG_DETECT=y
-CONFIG_SND_PCM_XRUN_DEBUG=y
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_OMAP_AIC23 is not set
-# CONFIG_SND_OMAP_TSC2101 is not set
-# CONFIG_SND_SX1 is not set
-# CONFIG_SND_OMAP_TSC2102 is not set
-# CONFIG_SND_OMAP24XX_EAC is not set
-
-#
-# SPI devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=y
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# ALSA SoC audio for Freescale SOCs
-#
-
-#
-# SoC Audio for the Texas Instruments OMAP
-#
-CONFIG_SND_OMAP_SOC=y
-CONFIG_SND_OMAP_SOC_MCBSP=y
-CONFIG_SND_OMAP_SOC_OMAP3EVM=y
-CONFIG_SND_SOC_TWL4030=y
-
-#
-# Open Sound System
-#
-CONFIG_SOUND_PRIME=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_OMAP_EHCI_PHY_MODE=y
-# CONFIG_OMAP_EHCI_TLL_MODE is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_ISP116X_HCD=y
-# CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=y
-CONFIG_USB_R8A66597_HCD=y
-CONFIG_USB_MUSB_HDRC=y
-CONFIG_USB_MUSB_SOC=y
-
-#
-# OMAP 343x high speed USB support
-#
-CONFIG_USB_MUSB_HOST=y
-# CONFIG_USB_MUSB_PERIPHERAL is not set
-# CONFIG_USB_MUSB_OTG is not set
-CONFIG_USB_MUSB_HDRC_HCD=y
-# CONFIG_MUSB_PIO_ONLY is not set
-CONFIG_USB_INVENTRA_DMA=y
-# CONFIG_USB_TI_CPPI_DMA is not set
-CONFIG_USB_MUSB_LOGLEVEL=0
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_WDM is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-CONFIG_USB_LIBUSUAL=y
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_GADGET is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
-CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_SPI is not set
-# CONFIG_NEW_LEDS is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-CONFIG_RTC_DRV_TWL4030=y
-# CONFIG_RTC_DRV_S35390A is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_UIO is not set
-
-#
-# CBUS support
-#
-# CONFIG_CBUS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-# CONFIG_QUOTA_NETLINK_INTERFACE is not set
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QFMT_V1 is not set
-CONFIG_QFMT_V2=y
-CONFIG_QUOTACTL=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HFSPLUS_FS=m
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_FS_XATTR=y
-CONFIG_JFFS2_FS_POSIX_ACL=y
-CONFIG_JFFS2_FS_SECURITY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=m
-# CONFIG_DLM is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_MANAGER=y
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=m
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_HW=y
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-# CONFIG_GENERIC_FIND_FIRST_BIT is not set
-# CONFIG_GENERIC_FIND_NEXT_BIT is not set
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-omap2-git/omap3evm/no-empty-flash-warnings.patch b/packages/linux/linux-omap2-git/omap3evm/no-empty-flash-warnings.patch
deleted file mode 100644
index ab344b0449..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/no-empty-flash-warnings.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
-index 1d437de..33b3feb 100644
---- a/fs/jffs2/scan.c
-+++ b/fs/jffs2/scan.c
-@@ -647,8 +647,8 @@ scan_more:
- inbuf_ofs = ofs - buf_ofs;
- while (inbuf_ofs < scan_end) {
- if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
-- printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
-- empty_start, ofs);
-+// printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
-+// empty_start, ofs);
- if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
- return err;
- goto scan_more;
diff --git a/packages/linux/linux-omap2-git/omap3evm/no-harry-potter.diff b/packages/linux/linux-omap2-git/omap3evm/no-harry-potter.diff
deleted file mode 100644
index 2bb20ab9c0..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/no-harry-potter.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/Makefile 2008-04-24 14:36:20.509598016 +0200
-+++ git/arch/arm/Makefile 2008-04-24 14:36:31.949546584 +0200
-@@ -47,7 +47,7 @@
- # Note that GCC does not numerically define an architecture version
- # macro, but instead defines a whole series of macros which makes
- # testing for a specific architecture or later rather impossible.
--arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7a,-march=armv5t -Wa$(comma)-march=armv7a)
-+arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
- arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
- # Only override the compiler option if ARMv6. The ARMv6K extensions are
- # always available in ARMv7
diff --git a/packages/linux/linux-omap2-git/omap3evm/soc.patch b/packages/linux/linux-omap2-git/omap3evm/soc.patch
deleted file mode 100644
index f4cce21ca7..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/soc.patch
+++ /dev/null
@@ -1,1154 +0,0 @@
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 3903ab7..468536d 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -44,3 +44,7 @@ config SND_SOC_CS4270_VD33_ERRATA
- config SND_SOC_TLV320AIC3X
- tristate
- depends on SND_SOC && I2C
-+
-+config SND_SOC_TWL4030
-+ tristate
-+ depends on SND_SOC && I2C
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index 4e1314c..d2c0b12 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -6,6 +6,7 @@ snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
- snd-soc-cs4270-objs := cs4270.o
- snd-soc-tlv320aic3x-objs := tlv320aic3x.o
-+snd-soc-twl4030-objs := twl4030.o
-
- obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
- obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
-@@ -15,3 +16,4 @@ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
- obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
- obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-cs4270.o
- obj-$(CONFIG_SND_SOC_TLV320AIC3X) += snd-soc-tlv320aic3x.o
-+obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o
-diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
-new file mode 100644
-index 0000000..eb8370c
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.c
-@@ -0,0 +1,625 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <linux/i2c/twl4030.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "twl4030.h"
-+
-+/*
-+ * twl4030 register cache & default register settings
-+ */
-+static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
-+ 0x00, // this register not used
-+ 0x93, // REG_CODEC_MODE (0x1)
-+ 0xc3, // REG_OPTION (0x2)
-+ 0x00, // REG_UNKNOWN (0x3)
-+ 0x00, // REG_MICBIAS_CTL (0x4)
-+ 0x34, // REG_ANAMICL (0x5)
-+ 0x14, // REG_ANAMICR (0x6)
-+ 0x0a, // REG_AVADC_CTL (0x7)
-+ 0x00, // REG_ADCMICSEL (0x8)
-+ 0x00, // REG_DIGMIXING (0x9)
-+ 0x0c, // REG_ATXL1PGA (0xA)
-+ 0x0c, // REG_ATXR1PGA (0xB)
-+ 0x00, // REG_AVTXL2PGA (0xC)
-+ 0x00, // REG_AVTXR2PGA (0xD)
-+ 0x01, // REG_AUDIO_IF (0xE)
-+ 0x00, // REG_VOICE_IF (0xF)
-+ 0x00, // REG_ARXR1PGA (0x10)
-+ 0x00, // REG_ARXL1PGA (0x11)
-+ 0x6c, // REG_ARXR2PGA (0x12)
-+ 0x6c, // REG_ARXL2PGA (0x13)
-+ 0x00, // REG_VRXPGA (0x14)
-+ 0x00, // REG_VSTPGA (0x15)
-+ 0x00, // REG_VRX2ARXPGA (0x16)
-+ 0x0c, // REG_AVDAC_CTL (0x17)
-+ 0x00, // REG_ARX2VTXPGA (0x18)
-+ 0x00, // REG_ARXL1_APGA_CTL (0x19)
-+ 0x00, // REG_ARXR1_APGA_CTL (0x1A)
-+ 0x4b, // REG_ARXL2_APGA_CTL (0x1B)
-+ 0x4b, // REG_ARXR2_APGA_CTL (0x1C)
-+ 0x00, // REG_ATX2ARXPGA (0x1D)
-+ 0x00, // REG_BT_IF (0x1E)
-+ 0x00, // REG_BTPGA (0x1F)
-+ 0x00, // REG_BTSTPGA (0x20)
-+ 0x00, // REG_EAR_CTL (0x21)
-+ 0x24, // REG_HS_SEL (0x22)
-+ 0x0a, // REG_HS_GAIN_SET (0x23)
-+ 0x00, // REG_HS_POPN_SET (0x24)
-+ 0x00, // REG_PREDL_CTL (0x25)
-+ 0x00, // REG_PREDR_CTL (0x26)
-+ 0x00, // REG_PRECKL_CTL (0x27)
-+ 0x00, // REG_PRECKR_CTL (0x28)
-+ 0x00, // REG_HFL_CTL (0x29)
-+ 0x00, // REG_HFR_CTL (0x2A)
-+ 0x00, // REG_ALC_CTL (0x2B)
-+ 0x00, // REG_ALC_SET1 (0x2C)
-+ 0x00, // REG_ALC_SET2 (0x2D)
-+ 0x00, // REG_BOOST_CTL (0x2E)
-+ 0x01, // REG_SOFTVOL_CTL (0x2F)
-+ 0x00, // REG_DTMF_FREQSEL (0x30)
-+ 0x00, // REG_DTMF_TONEXT1H (0x31)
-+ 0x00, // REG_DTMF_TONEXT1L (0x32)
-+ 0x00, // REG_DTMF_TONEXT2H (0x33)
-+ 0x00, // REG_DTMF_TONEXT2L (0x34)
-+ 0x00, // REG_DTMF_TONOFF (0x35)
-+ 0x00, // REG_DTMF_WANONOFF (0x36)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_H (0x37)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_M (0x38)
-+ 0x00, // REG_I2S_RX_SCRAMBLE_L (0x39)
-+ 0x16, // REG_APLL_CTL (0x3A)
-+ 0x00, // REG_DTMF_CTL (0x3B)
-+ 0x00, // REG_DTMF_PGA_CTL2 (0x3C)
-+ 0x00, // REG_DTMF_PGA_CTL1 (0x3D)
-+ 0x00, // REG_MISC_SET_1 (0x3E)
-+ 0x00, // REG_PCMBTMUX (0x3F)
-+ 0x00, // REG_RX_PATH_SEL (0x43)
-+ 0x00, // REG_VDL_APGA_CTL (0x44)
-+ 0x00, // REG_VIBRA_CTL (0x45)
-+ 0x00, // REG_VIBRA_SET (0x46)
-+ 0x00, // REG_VIBRA_PWM_SET (0x47)
-+ 0x00, // REG_ANAMIC_GAIN (0x48)
-+ 0x00, // REG_MISC_SET_2 (0x49)
-+};
-+
-+static void twl4030_dump_registers(void)
-+{
-+ int i = 0;
-+ u8 data;
-+
-+ printk(KERN_INFO "TWL 4030 Register dump for Audio Module\n");
-+
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &data, i);
-+ printk(KERN_INFO "Register[0x%02x]=0x%02x\n", i, data);
-+ }
-+}
-+
-+struct twl4030_priv {
-+ unsigned int dummy;
-+};
-+
-+/*
-+ * read twl4030 register cache
-+ */
-+static inline unsigned int twl4030_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ return cache[reg];
-+}
-+
-+/*
-+ * write twl4030 register cache
-+ */
-+static inline void twl4030_write_reg_cache(struct snd_soc_codec *codec,
-+ u8 reg, u8 value)
-+{
-+ u8 *cache = codec->reg_cache;
-+
-+ if (reg >= TWL4030_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the twl4030 register space
-+ */
-+static int twl4030_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ twl4030_write_reg_cache(codec, reg, value);
-+ return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg);
-+}
-+
-+static void twl4030_init_chip(void)
-+{
-+ unsigned char byte;
-+ int i;
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE] & 0xfd, REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ for (i = REG_OPTION; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, twl4030_reg[i], i);
-+ }
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_CODEC_MODE], REG_CODEC_MODE);
-+
-+ udelay(10); /* delay for power settling */
-+
-+ /* initiate offset cancellation */
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_ANAMICL] | 0x80, REG_ANAMICL);
-+
-+ /* wait for offset cancellation to complete */
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte, REG_ANAMICL);
-+ while ((byte & 0x80) == 0x80)
-+ twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte, REG_ANAMICL);
-+
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
-+ twl4030_reg[REG_MISC_SET_1] | 0x02, REG_MISC_SET_1);
-+
-+}
-+
-+static const struct snd_kcontrol_new twl4030_snd_controls[] = {
-+ SOC_DOUBLE_R("Master Playback Volume",
-+ REG_ARXL2PGA, REG_ARXR2PGA,
-+ 0, 127, 0),
-+ SOC_DOUBLE_R("Capture Volume",
-+ REG_ATXL1PGA, REG_ATXR1PGA,
-+ 0, 127, 0),
-+};
-+
-+/* add non dapm controls */
-+static int twl4030_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&twl4030_snd_controls[i],
-+ codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
-+ SND_SOC_DAPM_INPUT("INL"),
-+ SND_SOC_DAPM_INPUT("INR"),
-+
-+ SND_SOC_DAPM_OUTPUT("OUTL"),
-+ SND_SOC_DAPM_OUTPUT("OUTR"),
-+
-+ SND_SOC_DAPM_DAC("DACL", "Left Playback", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_DAC("DACR", "Right Playback", SND_SOC_NOPM, 0, 0),
-+
-+ SND_SOC_DAPM_ADC("ADCL", "Left Capture", SND_SOC_NOPM, 0, 0),
-+ SND_SOC_DAPM_ADC("ADCR", "Right Capture", SND_SOC_NOPM, 0, 0),
-+};
-+
-+static const char *intercon[][3] = {
-+ /* outputs */
-+ {"OUTL", NULL, "DACL"},
-+ {"OUTR", NULL, "DACR"},
-+
-+ /* inputs */
-+ {"ADCL", NULL, "INL"},
-+ {"ADCR", NULL, "INR"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int twl4030_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(twl4030_dapm_widgets); i++)
-+ snd_soc_dapm_new_control(codec, &twl4030_dapm_widgets[i]);
-+
-+ /* set up audio path interconnects */
-+ for (i = 0; intercon[i][0] != NULL; i++)
-+ snd_soc_dapm_connect_input(codec, intercon[i][0],
-+ intercon[i][1], intercon[i][2]);
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static int twl4030_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec dapm event\n");
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* off, with power */
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* off, without power */
-+ break;
-+ }
-+ codec->dapm_state = event;
-+
-+ return 0;
-+}
-+
-+static void twl4030_power_up (struct snd_soc_codec *codec, u8 mode)
-+{
-+ u8 popn, hsgain;
-+
-+ twl4030_write(codec, REG_CODEC_MODE, mode & ~CODECPDZ);
-+ twl4030_write(codec, REG_CODEC_MODE, mode | CODECPDZ);
-+ udelay(10);
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= RAMP_DELAY;
-+ popn |= VMID_EN | RAMP_DELAY_161MS;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_0DB| HSL_GAIN_0DB;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn |= RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+}
-+
-+static void twl4030_power_down (struct snd_soc_codec *codec)
-+{
-+ u8 popn, hsgain, mode;
-+
-+ popn = twl4030_read_reg_cache(codec, REG_HS_POPN_SET);
-+ popn &= ~RAMP_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ hsgain = HSR_GAIN_PWR_DOWN | HSL_GAIN_PWR_DOWN;
-+ twl4030_write(codec, REG_HS_GAIN_SET, hsgain);
-+
-+ popn &= ~VMID_EN;
-+ twl4030_write(codec, REG_HS_POPN_SET, popn);
-+
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ udelay(10);
-+}
-+
-+
-+static int twl4030_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_mode, format, old_format;
-+
-+
-+ /* bit rate */
-+ old_mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE) & ~CODECPDZ;
-+ mode = old_mode;
-+ mode &= ~APLL_RATE;
-+ switch (params_rate(params)) {
-+ case 44100:
-+ mode |= APLL_RATE_44100;
-+ break;
-+ case 48000:
-+ mode |= APLL_RATE_48000;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown rate %d\n", params_rate(params));
-+ return -EINVAL;
-+ }
-+
-+ if (mode != old_mode) {
-+ /* change rate and turn codec back on */
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ /* sample size */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+ format &= ~DATA_WIDTH;
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ format |= DATA_WIDTH_16S_16W;
-+ break;
-+ case SNDRV_PCM_FORMAT_S24_LE:
-+ format |= DATA_WIDTH_32S_24W;
-+ break;
-+ default:
-+ printk(KERN_INFO "TWL4030 hw params: unknown format %d\n", params_format(params));
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ /* turn on codec */
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+ return 0;
-+}
-+
-+static int twl4030_mute(struct snd_soc_codec_dai *dai, int mute)
-+{
-+ struct snd_soc_codec *codec = dai->codec;
-+
-+ u8 ldac_reg = twl4030_read_reg_cache(codec, REG_ARXL2PGA);
-+ u8 rdac_reg = twl4030_read_reg_cache(codec, REG_ARXR2PGA);
-+
-+ if (mute) {
-+ /* printk(KERN_INFO "TWL4030 Audio Codec mute\n"); */
-+ twl4030_write(codec, REG_ARXL2PGA, 0x00);
-+ twl4030_write(codec, REG_ARXR2PGA, 0x00);
-+ twl4030_write_reg_cache(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write_reg_cache(codec, REG_ARXR2PGA, rdac_reg);
-+ }
-+ else {
-+ /* printk(KERN_INFO "TWL4030 Audio Codec unmute: %02x/%02x\n", ldac_reg, rdac_reg); */
-+ twl4030_write(codec, REG_ARXL2PGA, ldac_reg);
-+ twl4030_write(codec, REG_ARXR2PGA, rdac_reg);
-+ }
-+
-+ return 0;
-+}
-+
-+static int twl4030_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
-+ unsigned int fmt)
-+{
-+ struct snd_soc_codec *codec = codec_dai->codec;
-+ struct twl4030_priv *twl4030 = codec->private_data;
-+ u8 mode, old_format, format;
-+
-+ /* get format */
-+ old_format = twl4030_read_reg_cache(codec, REG_AUDIO_IF);
-+ format = old_format;
-+
-+ /* set master/slave audio interface */
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: master\n"); */
-+ format &= ~(AIF_SLAVE_EN);
-+ format |= CLK256FS_EN;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: slave\n"); */
-+ format &= ~(CLK256FS_EN);
-+ format |= AIF_SLAVE_EN;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ /* interface format */
-+ format &= ~AIF_FORMAT;
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ /* printk(KERN_INFO "TWL4030 set dai fmt: i2s\n"); */
-+ format |= AIF_FORMAT_CODEC;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (format != old_format) {
-+
-+ /* turn off codec before changing format */
-+ mode = twl4030_read_reg_cache(codec, REG_CODEC_MODE);
-+ mode &= ~CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+
-+ /* change format */
-+ twl4030_write(codec, REG_AUDIO_IF, format);
-+
-+ mode |= CODECPDZ;
-+ twl4030_write(codec, REG_CODEC_MODE, mode);
-+ }
-+
-+ return 0;
-+}
-+
-+#define TWL4030_RATES SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000
-+#define TWL4030_FORMATS SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE
-+
-+struct snd_soc_codec_dai twl4030_dai = {
-+ .name = "twl4030",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = TWL4030_RATES,
-+ .formats = TWL4030_FORMATS,},
-+ .ops = {
-+ .hw_params = twl4030_hw_params,
-+ },
-+ .dai_ops = {
-+ .digital_mute = twl4030_mute,
-+ .set_fmt = twl4030_set_dai_fmt,
-+ }
-+};
-+
-+EXPORT_SYMBOL_GPL(twl4030_dai);
-+
-+static int twl4030_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec suspend\n");
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ return 0;
-+}
-+
-+static int twl4030_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u16 *cache = codec->reg_cache;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec resume\n");
-+ /* Sync reg_cache with the hardware */
-+ for (i = REG_CODEC_MODE; i <= REG_MISC_SET_2; i++) {
-+ twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, cache[i], i);
-+ }
-+ twl4030_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ twl4030_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialize the driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+
-+static int twl4030_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec init \n");
-+
-+ codec->name = "twl4030";
-+ codec->owner = THIS_MODULE;
-+ codec->read = twl4030_read_reg_cache;
-+ codec->write = twl4030_write;
-+ codec->dapm_event = twl4030_dapm_event;
-+ codec->dai = &twl4030_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = sizeof(twl4030_reg);
-+ codec->reg_cache = kmemdup(twl4030_reg, sizeof(twl4030_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to create pcms\n");
-+ goto pcm_err;
-+ }
-+
-+ twl4030_add_controls(codec);
-+ twl4030_add_widgets(codec);
-+
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ printk(KERN_ERR "twl4030: failed to register card\n");
-+ goto card_err;
-+ }
-+
-+ twl4030_init_chip();
-+ twl4030_power_up(codec, APLL_RATE_44100 | OPT_MODE);
-+
-+ return ret;
-+
-+card_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init card error\n");
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+pcm_err:
-+ printk(KERN_INFO "TWL4030 Audio Codec init pcm error\n");
-+ kfree(codec->reg_cache);
-+ return ret;
-+}
-+
-+static struct snd_soc_device *twl4030_socdev;
-+
-+static int twl4030_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ struct twl4030_priv *twl4030;
-+
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ twl4030 = kzalloc(sizeof(struct twl4030_priv), GFP_KERNEL);
-+ if (twl4030 == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+
-+ codec->private_data = twl4030;
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ twl4030_socdev = socdev;
-+ twl4030_init(socdev);
-+
-+ return 0;
-+}
-+
-+static int twl4030_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ printk(KERN_INFO "TWL4030 Audio Codec remove\n");
-+ kfree(codec->private_data);
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_twl4030 = {
-+ .probe = twl4030_probe,
-+ .remove = twl4030_remove,
-+ .suspend = twl4030_suspend,
-+ .resume = twl4030_resume,
-+};
-+EXPORT_SYMBOL_GPL(soc_codec_dev_twl4030);
-+
-+MODULE_DESCRIPTION("ASoC TWL4030 codec driver");
-+MODULE_AUTHOR("Steve Sakoman");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/codecs/twl4030.h b/sound/soc/codecs/twl4030.h
-new file mode 100644
-index 0000000..e126f96
---- /dev/null
-+++ b/sound/soc/codecs/twl4030.h
-@@ -0,0 +1,152 @@
-+/*
-+ * ALSA SoC TWL4030 codec driver
-+ *
-+ * Author: Steve Sakoman, <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __TWL4030_AUDIO_H__
-+#define __TWL4030_AUDIO_H__
-+
-+#define REG_CODEC_MODE 0x1
-+#define REG_OPTION 0x2
-+#define REG_UNKNOWN 0x3
-+#define REG_MICBIAS_CTL 0x4
-+#define REG_ANAMICL 0x5
-+#define REG_ANAMICR 0x6
-+#define REG_AVADC_CTL 0x7
-+#define REG_ADCMICSEL 0x8
-+#define REG_DIGMIXING 0x9
-+#define REG_ATXL1PGA 0xA
-+#define REG_ATXR1PGA 0xB
-+#define REG_AVTXL2PGA 0xC
-+#define REG_AVTXR2PGA 0xD
-+#define REG_AUDIO_IF 0xE
-+#define REG_VOICE_IF 0xF
-+#define REG_ARXR1PGA 0x10
-+#define REG_ARXL1PGA 0x11
-+#define REG_ARXR2PGA 0x12
-+#define REG_ARXL2PGA 0x13
-+#define REG_VRXPGA 0x14
-+#define REG_VSTPGA 0x15
-+#define REG_VRX2ARXPGA 0x16
-+#define REG_AVDAC_CTL 0x17
-+#define REG_ARX2VTXPGA 0x18
-+#define REG_ARXL1_APGA_CTL 0x19
-+#define REG_ARXR1_APGA_CTL 0x1A
-+#define REG_ARXL2_APGA_CTL 0x1B
-+#define REG_ARXR2_APGA_CTL 0x1C
-+#define REG_ATX2ARXPGA 0x1D
-+#define REG_BT_IF 0x1E
-+#define REG_BTPGA 0x1F
-+#define REG_BTSTPGA 0x20
-+#define REG_EAR_CTL 0x21
-+#define REG_HS_SEL 0x22
-+#define REG_HS_GAIN_SET 0x23
-+#define REG_HS_POPN_SET 0x24
-+#define REG_PREDL_CTL 0x25
-+#define REG_PREDR_CTL 0x26
-+#define REG_PRECKL_CTL 0x27
-+#define REG_PRECKR_CTL 0x28
-+#define REG_HFL_CTL 0x29
-+#define REG_HFR_CTL 0x2A
-+#define REG_ALC_CTL 0x2B
-+#define REG_ALC_SET1 0x2C
-+#define REG_ALC_SET2 0x2D
-+#define REG_BOOST_CTL 0x2E
-+#define REG_SOFTVOL_CTL 0x2F
-+#define REG_DTMF_FREQSEL 0x30
-+#define REG_DTMF_TONEXT1H 0x31
-+#define REG_DTMF_TONEXT1L 0x32
-+#define REG_DTMF_TONEXT2H 0x33
-+#define REG_DTMF_TONEXT2L 0x34
-+#define REG_DTMF_TONOFF 0x35
-+#define REG_DTMF_WANONOFF 0x36
-+#define REG_I2S_RX_SCRAMBLE_H 0x37
-+#define REG_I2S_RX_SCRAMBLE_M 0x38
-+#define REG_I2S_RX_SCRAMBLE_L 0x39
-+#define REG_APLL_CTL 0x3A
-+#define REG_DTMF_CTL 0x3B
-+#define REG_DTMF_PGA_CTL2 0x3C
-+#define REG_DTMF_PGA_CTL1 0x3D
-+#define REG_MISC_SET_1 0x3E
-+#define REG_PCMBTMUX 0x3F
-+#define REG_RX_PATH_SEL 0x43
-+#define REG_VDL_APGA_CTL 0x44
-+#define REG_VIBRA_CTL 0x45
-+#define REG_VIBRA_SET 0x46
-+#define REG_VIBRA_PWM_SET 0x47
-+#define REG_ANAMIC_GAIN 0x48
-+#define REG_MISC_SET_2 0x49
-+
-+#define TWL4030_CACHEREGNUM REG_MISC_SET_2 + 1
-+
-+/* Bitfield Definitions */
-+
-+/* CODEC_MODE (0x01) Fields */
-+
-+#define APLL_RATE 0xF0
-+#define APLL_RATE_8000 0x00
-+#define APLL_RATE_11025 0x10
-+#define APLL_RATE_12000 0x20
-+#define APLL_RATE_16000 0x40
-+#define APLL_RATE_22050 0x50
-+#define APLL_RATE_24000 0x60
-+#define APLL_RATE_32000 0x80
-+#define APLL_RATE_44100 0x90
-+#define APLL_RATE_48000 0xa0
-+#define SEL_16K 0x04
-+#define CODECPDZ 0x02
-+#define OPT_MODE 0x01
-+
-+/* AUDIO_IF (0x0E) Fields */
-+
-+#define AIF_SLAVE_EN 0x80
-+#define DATA_WIDTH 0x60
-+#define DATA_WIDTH_16S_16W 0x00
-+#define DATA_WIDTH_32S_16W 0x40
-+#define DATA_WIDTH_32S_24W 0x60
-+#define AIF_FORMAT 0x18
-+#define AIF_FORMAT_CODEC 0x00
-+#define AIF_FORMAT_LEFT 0x08
-+#define AIF_FORMAT_RIGHT 0x10
-+#define AIF_FORMAT_TDM 0x18
-+#define AIF_TRI_EN 0x04
-+#define CLK256FS_EN 0x02
-+#define AIF_EN 0x01
-+
-+/* HS_GAIN_SET (0x23) Fields */
-+
-+#define HSR_GAIN 0x0c
-+#define HSR_GAIN_PWR_DOWN 0x00
-+#define HSR_GAIN_PLUS_6DB 0x04
-+#define HSR_GAIN_0DB 0x08
-+#define HSR_GAIN_MINUS_6DB 0x0c
-+#define HSL_GAIN 0x0c
-+#define HSL_GAIN_PWR_DOWN 0x00
-+#define HSL_GAIN_PLUS_6DB 0x01
-+#define HSL_GAIN_0DB 0x02
-+#define HSL_GAIN_MINUS_6DB 0x03
-+
-+/* HS_POPN_SET (0x24) Fields */
-+
-+#define VMID_EN 0x40
-+#define EXTMUTE 0x20
-+#define RAMP_DELAY 0x1C
-+#define RAMP_DELAY_20MS 0x00
-+#define RAMP_DELAY_40MS 0x04
-+#define RAMP_DELAY_81MS 0x08
-+#define RAMP_DELAY_161MS 0x0c
-+#define RAMP_DELAY_323MS 0x10
-+#define RAMP_DELAY_645MS 0x14
-+#define RAMP_DELAY_1291MS 0x18
-+#define RAMP_DELAY_2581MS 0x1c
-+#define RAMP_EN 0x02
-+
-+extern struct snd_soc_codec_dai twl4030_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_twl4030;
-+
-+#endif /* End of __TWL4030_AUDIO_H__ */
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 0230d83..8703cea 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -16,4 +16,20 @@ config SND_OMAP_SOC_N810
- help
- Say Y if you want to add support for SoC audio on Nokia N810.
-
-+config SND_OMAP_SOC_OMAP3EVM
-+ tristate "SoC Audio support for OMAP3 EVM"
-+ depends on SND_OMAP_SOC && MACH_OMAP3EVM
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 EVM.
-+
-+config SND_OMAP_SOC_OMAP3BEAGLE
-+ tristate "SoC Audio support for OMAP3 Beagle"
-+ depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the OMAP3 Beagle.
-+
- endmenu
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index d8d8d58..638a240 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -7,5 +7,10 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
-
- # OMAP Machine Support
- snd-soc-n810-objs := n810.o
-+snd-soc-omap3evm-objs := omap3evm.o
-+snd-soc-omap3beagle-objs := omap3beagle.o
-
- obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3BEAGLE) += snd-soc-omap3beagle.o
-+
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-new file mode 100644
-index 0000000..878f894
---- /dev/null
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3beagle.c -- SoC audio for OMAP3 Beagle
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3beagle_ops = {
-+ .hw_params = omap3beagle_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3beagle_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3beagle_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3beagle = {
-+ .name = "omap3beagle",
-+ .dai_link = &omap3beagle_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3beagle_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3beagle,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3beagle_snd_device;
-+
-+static int __init omap3beagle_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 Beagle SoC init\n");
-+ if (!machine_is_omap3_beagle()) {
-+ printk(KERN_INFO "Not OMAP3 Beagle!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3beagle_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3beagle_snd_device, &omap3beagle_snd_devdata);
-+ omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
-+ *(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3beagle_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3beagle_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3beagle_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 Beagle SoC exit\n");
-+ platform_device_unregister(omap3beagle_snd_device);
-+}
-+
-+module_init(omap3beagle_soc_init);
-+module_exit(omap3beagle_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
-new file mode 100644
-index 0000000..a64c788
---- /dev/null
-+++ b/sound/soc/omap/omap3evm.c
-@@ -0,0 +1,142 @@
-+/*
-+ * omap3evm.c -- SoC audio for OMAP3 EVM
-+ *
-+ * Author: Steve Sakoman <steve@sakoman.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-+ * 02110-1301 USA
-+ *
-+ */
-+
-+#include <linux/clk.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/mcbsp.h>
-+
-+#include "omap-mcbsp.h"
-+#include "omap-pcm.h"
-+#include "../codecs/twl4030.h"
-+
-+static int omap3evm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
-+ int ret;
-+
-+ /* Set codec DAI configuration */
-+ ret = codec_dai->dai_ops.set_fmt(codec_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set codec DAI configuration\n");
-+ return ret;
-+ }
-+
-+ /* Set cpu DAI configuration */
-+ ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-+ SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_NB_NF |
-+ SND_SOC_DAIFMT_CBM_CFM);
-+ if (ret < 0) {
-+ printk(KERN_INFO "can't set cpu DAI configuration\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_ops omap3evm_ops = {
-+ .hw_params = omap3evm_hw_params,
-+};
-+
-+/* Digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link omap3evm_dai = {
-+ .name = "TWL4030",
-+ .stream_name = "TWL4030",
-+ .cpu_dai = &omap_mcbsp_dai[0],
-+ .codec_dai = &twl4030_dai,
-+ .ops = &omap3evm_ops,
-+};
-+
-+/* Audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_omap3evm = {
-+ .name = "omap3evm",
-+ .dai_link = &omap3evm_dai,
-+ .num_links = 1,
-+};
-+
-+/* Audio subsystem */
-+static struct snd_soc_device omap3evm_snd_devdata = {
-+ .machine = &snd_soc_machine_omap3evm,
-+ .platform = &omap_soc_platform,
-+ .codec_dev = &soc_codec_dev_twl4030,
-+};
-+
-+static struct platform_device *omap3evm_snd_device;
-+
-+static int __init omap3evm_soc_init(void)
-+{
-+ int ret;
-+
-+ printk(KERN_INFO "OMAP3 EVM SoC init\n");
-+ if (!machine_is_omap3evm()) {
-+ printk(KERN_INFO "Not OMAP3 EVM!\n");
-+ return -ENODEV;
-+ }
-+
-+ omap3evm_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!omap3evm_snd_device) {
-+ printk(KERN_INFO "Platform device allocation failed\n");
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(omap3evm_snd_device, &omap3evm_snd_devdata);
-+ omap3evm_snd_devdata.dev = &omap3evm_snd_device->dev;
-+ *(unsigned int *)omap3evm_dai.cpu_dai->private_data = 1; /* McBSP2 */
-+
-+ ret = platform_device_add(omap3evm_snd_device);
-+ if (ret)
-+ goto err1;
-+
-+ return 0;
-+
-+err1:
-+ printk(KERN_INFO "Unable to add platform device\n");
-+ platform_device_put(omap3evm_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit omap3evm_soc_exit(void)
-+{
-+ printk(KERN_INFO "OMAP3 EVM SoC exit\n");
-+ platform_device_unregister(omap3evm_snd_device);
-+}
-+
-+module_init(omap3evm_soc_init);
-+module_exit(omap3evm_soc_exit);
-+
-+MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
-+MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-omap2-git/omap3evm/timer-suppression.patch b/packages/linux/linux-omap2-git/omap3evm/timer-suppression.patch
deleted file mode 100644
index 04362c96e3..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/timer-suppression.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index b854a89..26f5569 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -253,6 +253,16 @@ void tick_nohz_stop_sched_tick(void)
-
- /* Schedule the tick, if we are at least one jiffie off */
- if ((long)delta_jiffies >= 1) {
-+ /*
-+ * calculate the expiry time for the next timer wheel
-+ * timer
-+ */
-+ expires = ktime_add_ns(last_update, tick_period.tv64 *
-+ delta_jiffies);
-+
-+ /* Skip reprogram of event if its not changed */
-+ if(ts->tick_stopped && ktime_equal(expires, dev->next_event))
-+ goto out2;
-
- if (delta_jiffies > 1)
- cpu_set(cpu, nohz_cpu_mask);
-@@ -304,12 +314,7 @@ void tick_nohz_stop_sched_tick(void)
- goto out;
- }
-
-- /*
-- * calculate the expiry time for the next timer wheel
-- * timer
-- */
-- expires = ktime_add_ns(last_update, tick_period.tv64 *
-- delta_jiffies);
-+ /* Mark expiries */
- ts->idle_expires = expires;
-
- if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
-@@ -328,6 +333,7 @@ void tick_nohz_stop_sched_tick(void)
- tick_do_update_jiffies64(ktime_get());
- cpu_clear(cpu, nohz_cpu_mask);
- }
-+out2:
- raise_softirq_irqoff(TIMER_SOFTIRQ);
- out:
- ts->next_jiffies = next_jiffies;
diff --git a/packages/linux/linux-omap2-git/omap3evm/touchscreen.patch b/packages/linux/linux-omap2-git/omap3evm/touchscreen.patch
deleted file mode 100644
index 2325c401e4..0000000000
--- a/packages/linux/linux-omap2-git/omap3evm/touchscreen.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
-index d8109ae..f8ce669 100644
---- a/arch/arm/mach-omap2/board-omap3evm.c
-+++ b/arch/arm/mach-omap2/board-omap3evm.c
-@@ -128,8 +128,16 @@ static int ads7846_get_pendown_state(void)
- }
-
- struct ads7846_platform_data ads7846_config = {
-+ .x_max = 0x0fff,
-+ .y_max = 0x0fff,
-+ .x_plate_ohms = 180,
-+ .pressure_max = 255,
-+ .debounce_max = 10,
-+ .debounce_tol = 3,
-+ .debounce_rep = 1,
- .get_pendown_state = ads7846_get_pendown_state,
- .keep_vref_on = 1,
-+ .settle_delay_usecs = 150,
- };
-
- static struct omap2_mcspi_device_config ads7846_mcspi_config = {
-