From 78a5b578cabe495b6355cf34a9f7e13584a66f87 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 30 Apr 2010 12:38:40 +0200 Subject: linux-omap-psp 2.6.32: update to latest PSP git, rediff patches --- ...-support-to-sync-the-VFP-state-of-the-cur.patch | 109 --------------------- 1 file changed, 109 deletions(-) delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch (limited to 'recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch') diff --git a/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch b/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch deleted file mode 100644 index 8bebc455ca..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 06408a83f74dde1c827749912fa53c7118f84822 Mon Sep 17 00:00:00 2001 -From: Imre Deak -Date: Thu, 4 Feb 2010 21:38:02 +0200 -Subject: [PATCH 31/42] ARM: VFP: add support to sync the VFP state of the current thread - -ARM: VFP: add support to sync the VFP state of the current thread - -So far vfp_sync_state worked only for threads other than the current -one. This worked for tracing other threads, but not for PTRACE_TRACEME. -Syncing for the current thread will also be needed by an upcoming patch -adding support for VFP context save / restore around signal handlers. - -For SMP we need get_cpu now, since we have to protect the FPEXC -register, other than this things remained the same for threads other -than the current. - -Signed-off-by: Imre Deak -Signed-off-by: Bryan Wu ---- - arch/arm/vfp/vfpmodule.c | 46 +++++++++++++++++++++++++++++++--------------- - 1 files changed, 31 insertions(+), 15 deletions(-) - -diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c -index aed05bc..f28f45b 100644 ---- a/arch/arm/vfp/vfpmodule.c -+++ b/arch/arm/vfp/vfpmodule.c -@@ -423,12 +423,19 @@ static inline void vfp_pm_init(void) { } - #endif /* CONFIG_PM */ - - /* -- * Synchronise the hardware VFP state of a thread other than current with the -- * saved one. This function is used by the ptrace mechanism. -+ * Synchronise the hardware VFP state of a thread with the saved one. -+ * This function is used by the ptrace mechanism and the signal handler path. - */ --#ifdef CONFIG_SMP - void vfp_sync_state(struct thread_info *thread) - { -+ unsigned int cpu = get_cpu(); -+ u32 fpexc = fmrx(FPEXC); -+ int vfp_enabled; -+ int self; -+ -+ vfp_enabled = fpexc & FPEXC_EN; -+ self = thread == current_thread_info(); -+#ifdef CONFIG_SMP - /* - * On SMP systems, the VFP state is automatically saved at every - * context switch. We mark the thread VFP state as belonging to a -@@ -436,18 +443,22 @@ void vfp_sync_state(struct thread_info *thread) - * needed. - */ - thread->vfpstate.hard.cpu = NR_CPUS; --} --#else --void vfp_sync_state(struct thread_info *thread) --{ -- unsigned int cpu = get_cpu(); -- u32 fpexc = fmrx(FPEXC); -- - /* -- * If VFP is enabled, the previous state was already saved and -- * last_VFP_context updated. -+ * Only the current thread's saved VFP context can be out-of-date. -+ * For others there is nothing else to do, since we already ensured -+ * force loading above. - */ -- if (fpexc & FPEXC_EN) -+ if (!self) -+ goto out; -+#endif -+ /* -+ * If the VFP is enabled only the current thread's saved VFP -+ * context can get out-of-date. For other threads the context -+ * was updated when the current thread started to use the VFP. -+ * This also means that the context will be reloaded next time -+ * the thread uses the VFP, so no need to enforce it. -+ */ -+ if (vfp_enabled && !self) - goto out; - - if (!last_VFP_context[cpu]) -@@ -456,8 +467,14 @@ void vfp_sync_state(struct thread_info *thread) - /* - * Save the last VFP state on this CPU. - */ -- fmxr(FPEXC, fpexc | FPEXC_EN); -+ if (!vfp_enabled) -+ fmxr(FPEXC, fpexc | FPEXC_EN); - vfp_save_state(last_VFP_context[cpu], fpexc); -+ /* -+ * Disable VFP in case it was enabled so that the force reload -+ * can happen. -+ */ -+ fpexc &= ~FPEXC_EN; - fmxr(FPEXC, fpexc); - - /* -@@ -469,7 +486,6 @@ void vfp_sync_state(struct thread_info *thread) - out: - put_cpu(); - } --#endif - - #include - --- -1.6.6.1 - -- cgit 1.2.3-korg From 1a733aa29a95816cc344bb38441338963f1e0180 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 9 May 2010 10:54:01 +0200 Subject: linux-omap-psp 2.6.32: rediff touchbook and beagleboard patches, tweak beagleboard defconfig --- ...vert-omap3-beagle-Fix-compile-time-errors.patch | 4 +- ...touchbook-make-it-build-against-TI-linux-.patch | 4 +- ...d-support-for-TCT-Zippy-to-Beagle-board-f.patch | 4 +- ...MAP-Make-beagle-u-boot-partition-writable.patch | 4 +- .../0005-board-omap3-beagle-add-DSS2-support.patch | 4 +- ...-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch | 27 - ...beagle-prepare-for-DM3730-based-Beagleboa.patch | 103 + ...agleboard-Add-infrastructure-to-do-fixups.patch | 172 + ...beagle-prepare-for-DM3730-based-Beagleboa.patch | 97 - ...agleboard-pre-export-GPIOs-to-userspace-w.patch | 57 + ...beagle-turn-on-power-to-camera-on-boot-an.patch | 31 - ...agleboard-initialize-ds1307-and-eeprom-on.patch | 76 + ...able-audio-capture-by-default-for-twl4030.patch | 27 - ...010-ARM-OMAP-update-beagleboard-defconfig.patch | 3323 ++++++++++++++++++++ ...ap2-proper-fix-for-subpage-read-ECC-error.patch | 35 - ...able-audio-capture-by-default-for-twl4030.patch | 27 + ...-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch | 44 - ...otarg-for-selecting-svideo-or-composite-f.patch | 75 - ...ap2-proper-fix-for-subpage-read-ECC-error.patch | 35 + ...-add-some-more-from-Leopard-imaging-patch.patch | 133 - ...-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch | 44 + ...vero-Add-support-for-second-ethernet-port.patch | 110 - ...otarg-for-selecting-svideo-or-composite-f.patch | 75 + ...-add-some-more-from-Leopard-imaging-patch.patch | 133 + ...-smsc911x-return-ENODEV-if-device-is-not-.patch | 29 - ...vero-Add-support-for-second-ethernet-port.patch | 110 + ...ut-touchscreen-ads7846-return-ENODEV-if-d.patch | 53 - .../0017-drivers-mfd-add-twl4030-madc-driver.patch | 601 ---- ...-smsc911x-return-ENODEV-if-device-is-not-.patch | 29 + ...OMAP-Add-missing-twl4030-madc-header-file.patch | 149 - ...ut-touchscreen-ads7846-return-ENODEV-if-d.patch | 53 + ...RM-OMAP-Add-twl4030-madc-support-to-Overo.patch | 32 - .../0019-drivers-mfd-add-twl4030-madc-driver.patch | 601 ++++ ...OMAP-Add-missing-twl4030-madc-header-file.patch | 149 + ...M-OMAP-Add-twl4030-madc-support-to-Beagle.patch | 35 - ...RM-OMAP-Add-twl4030-madc-support-to-Overo.patch | 32 + ...usb-add-vendor-device-ID-for-Ceiva-Wirele.patch | 25 - ...M-OMAP-Add-twl4030-madc-support-to-Beagle.patch | 35 + ...isplay-single-block-read-console-messages.patch | 28 - ...mc-twl4030-move-clock-input-selection-pri.patch | 47 - ...usb-add-vendor-device-ID-for-Ceiva-Wirele.patch | 25 + ...-add-PM-code-and-sync-with-http-www.sakom.patch | 373 --- ...isplay-single-block-read-console-messages.patch | 28 + ...mc-twl4030-move-clock-input-selection-pri.patch | 47 + ...0-madc-adjust-for-twl4030-twl-api-changes.patch | 85 - ...e-add-support-for-Samsung-lte430wq-f0c-pa.patch | 161 - ...-add-PM-code-and-sync-with-http-www.sakom.patch | 373 +++ ...Add-support-for-LG-Philips-LB035Q02-panel.patch | 254 -- ...0-madc-adjust-for-twl4030-twl-api-changes.patch | 85 + ...-width-which-improves-SD-card-s-peformanc.patch | 32 - ...e-add-support-for-Samsung-lte430wq-f0c-pa.patch | 161 + ...-support-to-sync-the-VFP-state-of-the-cur.patch | 109 - ...Add-support-for-LG-Philips-LB035Q02-panel.patch | 254 ++ ...serve-the-HW-context-when-calling-signal-.patch | 211 -- ...-width-which-improves-SD-card-s-peformanc.patch | 32 + ...-support-to-sync-the-VFP-state-of-the-cur.patch | 109 + ...h-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch | 27 - ...serve-the-HW-context-when-calling-signal-.patch | 211 ++ .../0032-modedb.c-add-proper-720p60-mode.patch | 27 - ...C-add-support-for-backup-battery-recharge.patch | 55 - ...h-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch | 27 + ...-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch | 29 - .../0034-modedb.c-add-proper-720p60-mode.patch | 27 + ...-warning-on-alignment-trap-in-kernel-mode.patch | 31 - ...C-add-support-for-backup-battery-recharge.patch | 55 + ...-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch | 29 + ...pose-some-CPU-control-registers-via-sysfs.patch | 202 -- ...-Add-option-to-allow-userspace-PLE-access.patch | 48 - ...-warning-on-alignment-trap-in-kernel-mode.patch | 31 + ...ion-to-allow-userspace-access-to-performa.patch | 49 - ...pose-some-CPU-control-registers-via-sysfs.patch | 202 ++ ...-Add-option-to-allow-userspace-PLE-access.patch | 48 + ...-Expose-some-PMON-registers-through-sysfs.patch | 41 - ...ion-to-allow-userspace-access-to-performa.patch | 49 + ...-musb-allow-host-io-without-gadget-module.patch | 90 - ...-Expose-some-PMON-registers-through-sysfs.patch | 41 + .../0041-MTD-silence-ecc-errors-on-mtdblock0.patch | 59 - ...042-ARM-OMAP-update-beagleboard-defconfig.patch | 3323 -------------------- ...-musb-allow-host-io-without-gadget-module.patch | 90 + ...agleboard-Add-infrastructure-to-do-fixups.patch | 172 - .../0043-MTD-silence-ecc-errors-on-mtdblock0.patch | 59 + ...agleboard-pre-export-GPIOs-to-userspace-w.patch | 57 - ...agleboard-initialize-ds1307-and-eeprom-on.patch | 76 - .../linux-omap-psp-2.6.32/beagleboard/defconfig | 2 +- .../0001-ARM-OMAP-add-spi-platform-devices.patch | 4 +- .../0002-MMA7455L-accelerometer-driver.patch | 4 +- ...27x00_battery-remove-error-message-output.patch | 4 +- .../0004-bq27x00_battery-add-charged-gpio.patch | 4 +- .../0005-adf7846-add-more-debugging.patch | 4 +- .../0006-ads7846-read-max-mix-x-y-from-pdata.patch | 4 +- .../0007-ads7846-add-settling-delay-to-pdata.patch | 4 +- ...-Translate-X-Y-coordinates-for-the-video-.patch | 4 +- ...aling-checks-when-rotation-is-90-or-270-d.patch | 52 + .../0009-DSS2-fix-rotation-offsets.patch | 69 - ...aling-checks-when-rotation-is-90-or-270-d.patch | 52 - .../0010-add-touchbook-hid-driver.patch | 339 ++ ...ke-backlight-controls-accessible-to-users.patch | 25 + .../0011-add-touchbook-hid-driver.patch | 339 -- ...ke-backlight-controls-accessible-to-users.patch | 25 - ...-t-error-out-when-there-s-no-pendown-gpio.patch | 30 + .../0013-ASoC-add-driver-for-omap3-touchbook.patch | 350 +++ ...-t-error-out-when-there-s-no-pendown-gpio.patch | 30 - .../0014-ASoC-add-driver-for-omap3-touchbook.patch | 340 -- .../0014-backlight-add-PWM-support.patch | 126 + ...t-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch | 1367 ++++++++ .../0015-backlight-add-PWM-support.patch | 126 - ...ARM-OMAP-omap3-touchbook-update-boardfile.patch | 47 +- ...OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch | 2 +- .../omap3-touchbook/defconfig | 5 +- recipes/linux/linux-omap-psp_2.6.32.bb | 94 +- 110 files changed, 9433 insertions(+), 8165 deletions(-) delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0013-ISP-add-some-more-from-Leopard-imaging-patch.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0017-drivers-mfd-add-twl4030-madc-driver.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0022-mmc-don-t-display-single-block-read-console-messages.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0032-modedb.c-add-proper-720p60-mode.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0033-RTC-add-support-for-backup-battery-recharge.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Add-option-to-allow-userspace-PLE-access.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Expose-some-PMON-registers-through-sysfs.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0040-musb-allow-host-io-without-gadget-module.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0041-MTD-silence-ecc-errors-on-mtdblock0.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0042-ARM-OMAP-update-beagleboard-defconfig.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch create mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch delete mode 100644 recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch (limited to 'recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch') diff --git a/recipes/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch b/recipes/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch index 5e81a16357..c406af1a15 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch @@ -1,7 +1,7 @@ -From 6942ec9d19faef80770ae0f2302790d8ec73a9a7 Mon Sep 17 00:00:00 2001 +From 03e3ae2685bbd9586d520b0dd081593b814240b3 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 30 Apr 2010 11:12:24 +0200 -Subject: [PATCH 01/45] Revert "omap3: beagle: Fix compile-time errors" +Subject: [PATCH 01/43] Revert "omap3: beagle: Fix compile-time errors" This commit clashes with the other beagle patches we apply on top diff --git a/recipes/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch b/recipes/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch index da4fc189d7..f016e0edce 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch @@ -1,7 +1,7 @@ -From c5438f97d0ace3b414b13ef59a58427b9fd5b94b Mon Sep 17 00:00:00 2001 +From ad2b9548c700dc424209e543d10ab14c848895a5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 30 Jan 2010 15:49:15 +0100 -Subject: [PATCH 02/45] board-omap3touchbook: make it build against TI linux-omap 2.6.32-PSP +Subject: [PATCH 02/43] board-omap3touchbook: make it build against TI linux-omap 2.6.32-PSP --- arch/arm/mach-omap2/board-omap3touchbook.c | 11 +++++++++-- diff --git a/recipes/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch b/recipes/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch index ba280ff546..0e7a8b2943 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch @@ -1,7 +1,7 @@ -From 48e1df47cf683e4640ec3ae403b2e6dea7432d0c Mon Sep 17 00:00:00 2001 +From 95d7fc0cb0c4367c378ed640d6bb49ab6dc100dc Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 15 Dec 2009 15:34:29 -0800 -Subject: [PATCH 03/45] ARM: OMAP: add support for TCT Zippy to Beagle board file +Subject: [PATCH 03/43] ARM: OMAP: add support for TCT Zippy to Beagle board file Signed-off-by: Steve Sakoman --- diff --git a/recipes/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch b/recipes/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch index ab88739b73..f2ed1914f9 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch @@ -1,7 +1,7 @@ -From 97113a211c7fa07bc4fd34ea8fbe87551eec635d Mon Sep 17 00:00:00 2001 +From 7ca7040b3382fabbaa37dfda2c80cc4433b16d2e Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 17 Dec 2009 12:40:24 -0800 -Subject: [PATCH 04/45] ARM: OMAP: Make beagle u-boot partition writable +Subject: [PATCH 04/43] ARM: OMAP: Make beagle u-boot partition writable --- arch/arm/mach-omap2/board-omap3beagle.c | 1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch b/recipes/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch index 01d95566ca..e9a1715c97 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch @@ -1,7 +1,7 @@ -From 48e9baa773af0d99e5f9121da26bb92a391e2853 Mon Sep 17 00:00:00 2001 +From 8a3d9bff79f71a2733607e409f820e79142592d5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Wed, 10 Feb 2010 15:07:36 +0100 -Subject: [PATCH 05/45] board-omap3-beagle: add DSS2 support +Subject: [PATCH 05/43] board-omap3-beagle: add DSS2 support --- arch/arm/mach-omap2/board-omap3beagle.c | 130 ++++++++++++++++++++++++------- diff --git a/recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch b/recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch deleted file mode 100644 index 4371aad924..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 5be3bc924fbb66f7604763c617eecc4c5b009cb5 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Wed, 27 Jan 2010 21:57:13 +0100 -Subject: [PATCH 06/45] beagleboard: omap3__rate_table -> omap35x__rate_table - ---- - arch/arm/mach-omap2/board-omap3beagle.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index 3b7f6ec..1caaa01 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -502,8 +502,8 @@ static struct platform_device keys_gpio = { - static void __init omap3_beagle_init_irq(void) - { - omap2_init_common_hw(mt46h32m32lf6_sdrc_params, -- mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table, -- omap3_dsp_rate_table, omap3_l3_rate_table); -+ mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table, -+ omap35x_dsp_rate_table, omap35x_l3_rate_table); - omap_init_irq(); - #ifdef CONFIG_OMAP_32K_TIMER - omap2_gp_clockevent_set_gptimer(12); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch b/recipes/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch new file mode 100644 index 0000000000..0a483cd44f --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch @@ -0,0 +1,103 @@ +From 9f69d9bbab1d24da77864b48dbc5d8d4db9f4cdf Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 27 Jan 2010 21:57:13 +0100 +Subject: [PATCH 06/43] board-omap3beagle: prepare for DM3730 based BeagleboardXM + +* OPP changes copy/pasted from board-omap3evm.c + * EHCI changes copy/pasted from Steve Kipisz' 2.6.33rcX work + * turn on power to camera on boot and add some comments +--- + arch/arm/mach-omap2/board-omap3beagle.c | 62 +++++++++++++++++++++++++++---- + 1 files changed, 54 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 3b7f6ec..429dacb 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -53,6 +53,23 @@ + #include "pm.h" + #include "omap3-opp.h" + ++#ifdef CONFIG_PM ++static struct omap_opp * _omap35x_mpu_rate_table = omap35x_mpu_rate_table; ++static struct omap_opp * _omap37x_mpu_rate_table = omap37x_mpu_rate_table; ++static struct omap_opp * _omap35x_dsp_rate_table = omap35x_dsp_rate_table; ++static struct omap_opp * _omap37x_dsp_rate_table = omap37x_dsp_rate_table; ++static struct omap_opp * _omap35x_l3_rate_table = omap35x_l3_rate_table; ++static struct omap_opp * _omap37x_l3_rate_table = omap37x_l3_rate_table; ++#else /* CONFIG_PM */ ++static struct omap_opp * _omap35x_mpu_rate_table = NULL; ++static struct omap_opp * _omap37x_mpu_rate_table = NULL; ++static struct omap_opp * _omap35x_dsp_rate_table = NULL; ++static struct omap_opp * _omap37x_dsp_rate_table = NULL; ++static struct omap_opp * _omap35x_l3_rate_table = NULL; ++static struct omap_opp * _omap37x_l3_rate_table = NULL; ++#endif /* CONFIG_PM */ ++ ++ + #define GPMC_CS0_BASE 0x60 + #define GPMC_CS_SIZE 0x30 + +@@ -303,12 +320,28 @@ static int beagle_twl_gpio_setup(struct device *dev, + * power switch and overcurrent detect + */ + +- gpio_request(gpio + 1, "EHCI_nOC"); +- gpio_direction_input(gpio + 1); ++ if (cpu_is_omap3630()) { ++ /* Power on DVI, Serial and PWR led */ ++ gpio_request(gpio + 1, "nDVI_PWR_EN"); ++ gpio_direction_output(gpio + 1, 0); ++ ++ /* Power on camera interface */ ++ gpio_request(gpio + 2, "CAM_EN"); ++ gpio_direction_output(gpio + 2, 1); ++ ++ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ ++ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); ++ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); ++ } ++ else { ++ gpio_request(gpio + 1, "EHCI_nOC"); ++ gpio_direction_input(gpio + 1); ++ ++ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ ++ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); ++ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); ++ } + +- /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ +- gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); +- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); + + /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ + gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; +@@ -501,9 +534,22 @@ static struct platform_device keys_gpio = { + + static void __init omap3_beagle_init_irq(void) + { +- omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table, +- omap3_dsp_rate_table, omap3_l3_rate_table); ++ if (cpu_is_omap3630()) ++ { ++ omap2_init_common_hw(mt46h32m32lf6_sdrc_params, ++ NULL, ++ _omap37x_mpu_rate_table, ++ _omap37x_dsp_rate_table, ++ _omap37x_l3_rate_table); ++ } ++ else ++ { ++ omap2_init_common_hw(mt46h32m32lf6_sdrc_params, ++ NULL, ++ _omap35x_mpu_rate_table, ++ _omap35x_dsp_rate_table, ++ _omap35x_l3_rate_table); ++ } + omap_init_irq(); + #ifdef CONFIG_OMAP_32K_TIMER + omap2_gp_clockevent_set_gptimer(12); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch b/recipes/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch new file mode 100644 index 0000000000..184ce18948 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch @@ -0,0 +1,172 @@ +From 32fb278553a4cd6126c1791d70aa33df12f73d90 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 14:41:29 +0200 +Subject: [PATCH 07/43] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot + +And add support for zippy2 +--- + arch/arm/mach-omap2/board-omap3beagle.c | 88 +++++++++++++++++++++++++++---- + 1 files changed, 78 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 429dacb..ac96551 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -75,6 +75,8 @@ static struct omap_opp * _omap37x_l3_rate_table = NULL; + + #define NAND_BLOCK_SIZE SZ_128K + ++char expansionboard_name[16]; ++ + #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) + + #include +@@ -87,7 +89,7 @@ static struct omap2_mcspi_device_config enc28j60_spi_chip_info = { + .single_channel = 1, /* 0: slave, 1: master */ + }; + +-static struct spi_board_info omap3beagle_spi_board_info[] __initdata = { ++static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = { + { + .modalias = "enc28j60", + .bus_num = 4, +@@ -102,21 +104,62 @@ static void __init omap3beagle_enc28j60_init(void) + if ((gpio_request(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, "ENC28J60_IRQ") == 0) && + (gpio_direction_input(OMAP3BEAGLE_GPIO_ENC28J60_IRQ) == 0)) { + gpio_export(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, 0); +- omap3beagle_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ); +- set_irq_type(omap3beagle_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); ++ omap3beagle_zippy_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ); ++ set_irq_type(omap3beagle_zippy_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); + } else { + printk(KERN_ERR "could not obtain gpio for ENC28J60_IRQ\n"); + return; + } + +- spi_register_board_info(omap3beagle_spi_board_info, +- ARRAY_SIZE(omap3beagle_spi_board_info)); ++ spi_register_board_info(omap3beagle_zippy_spi_board_info, ++ ARRAY_SIZE(omap3beagle_zippy_spi_board_info)); + } + + #else + static inline void __init omap3beagle_enc28j60_init(void) { return; } + #endif + ++#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) ++ ++#include ++#include ++ ++#define OMAP3BEAGLE_GPIO_KS8851_IRQ 157 ++ ++static struct omap2_mcspi_device_config ks8851_spi_chip_info = { ++ .turbo_mode = 0, ++ .single_channel = 1, /* 0: slave, 1: master */ ++}; ++ ++static struct spi_board_info omap3beagle_zippy2_spi_board_info[] __initdata = { ++ { ++ .modalias = "ks8851", ++ .bus_num = 4, ++ .chip_select = 0, ++ .max_speed_hz = 36000000, ++ .controller_data = &ks8851_spi_chip_info, ++ }, ++}; ++ ++static void __init omap3beagle_ks8851_init(void) ++{ ++ if ((gpio_request(OMAP3BEAGLE_GPIO_KS8851_IRQ, "KS8851_IRQ") == 0) && ++ (gpio_direction_input(OMAP3BEAGLE_GPIO_KS8851_IRQ) == 0)) { ++ gpio_export(OMAP3BEAGLE_GPIO_KS8851_IRQ, 0); ++ omap3beagle_zippy2_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_KS8851_IRQ); ++ set_irq_type(omap3beagle_zippy2_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); ++ } else { ++ printk(KERN_ERR "could not obtain gpio for KS8851_IRQ\n"); ++ return; ++ } ++ ++ spi_register_board_info(omap3beagle_zippy2_spi_board_info, ++ ARRAY_SIZE(omap3beagle_zippy2_spi_board_info)); ++} ++ ++#else ++static inline void __init omap3beagle_ks8851_init(void) { return; } ++#endif + + static struct mtd_partition omap3beagle_nand_partitions[] = { + /* All the partition sizes are listed in terms of NAND block size */ +@@ -281,8 +324,6 @@ static struct twl4030_hsmmc_info mmc[] = { + { + .mmc = 2, + .wires = 4, +- .gpio_wp = 141, +- .gpio_cd = 162, + .transceiver = true, + .ocr_mask = 0x00100000, /* 3.3V */ + }, +@@ -601,7 +642,7 @@ static void __init omap3beagle_flash_init(void) + } + } + +-static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { ++static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { + + .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, + .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, +@@ -621,6 +662,15 @@ static struct omap_board_mux board_mux[] __initdata = { + #define board_mux NULL + #endif + ++static int __init expansionboard_setup(char *str) ++{ ++ if (!str) ++ return -EINVAL; ++ strncpy(expansionboard_name, str, 16); ++ printk(KERN_INFO "Beagle expansionboard: %s\n", expansionboard_name); ++ return 0; ++} ++ + static void __init omap3_beagle_init(void) + { + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); +@@ -634,8 +684,24 @@ static void __init omap3_beagle_init(void) + /* REVISIT leave DVI powered down until it's needed ... */ + gpio_direction_output(170, true); + +- omap3beagle_enc28j60_init(); +- ++ if(!strcmp(expansionboard_name, "zippy")) ++ { ++ printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n"); ++ omap3beagle_enc28j60_init(); ++ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n"); ++ mmc[1].gpio_wp = 141; ++ mmc[1].gpio_cd = 162; ++ } ++ ++ if(!strcmp(expansionboard_name, "zippy2")) ++ { ++ printk(KERN_INFO "Beagle expansionboard: initializing ks_8851\n"); ++ omap3beagle_ks8851_init(); ++ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n"); ++ mmc[1].gpio_wp = 141; ++ mmc[1].gpio_cd = 162; ++ } ++ + usb_musb_init(); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +@@ -652,6 +718,8 @@ static void __init omap3_beagle_map_io(void) + omap2_map_common_io(); + } + ++early_param("buddy", expansionboard_setup); ++ + MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") + /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */ + .phys_io = 0x48000000, +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch b/recipes/linux/linux-omap-psp-2.6.32/0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch deleted file mode 100644 index 83ada2b602..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 81f13d0f20e50503eb6baef9bb28a3ed2210154a Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 8 Feb 2010 16:30:59 +0100 -Subject: [PATCH 07/45] board-omap3beagle: prepare for DM3730 based BeagleboardXM - -* OPP changes copy/pasted from board-omap3evm.c - * EHCI changes copy/pasted from Steve Kipisz' 2.6.33rcX work ---- - arch/arm/mach-omap2/board-omap3beagle.c | 57 ++++++++++++++++++++++++++---- - 1 files changed, 49 insertions(+), 8 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index 1caaa01..accf80d 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -53,6 +53,23 @@ - #include "pm.h" - #include "omap3-opp.h" - -+#ifdef CONFIG_PM -+static struct omap_opp * _omap35x_mpu_rate_table = omap35x_mpu_rate_table; -+static struct omap_opp * _omap37x_mpu_rate_table = omap37x_mpu_rate_table; -+static struct omap_opp * _omap35x_dsp_rate_table = omap35x_dsp_rate_table; -+static struct omap_opp * _omap37x_dsp_rate_table = omap37x_dsp_rate_table; -+static struct omap_opp * _omap35x_l3_rate_table = omap35x_l3_rate_table; -+static struct omap_opp * _omap37x_l3_rate_table = omap37x_l3_rate_table; -+#else /* CONFIG_PM */ -+static struct omap_opp * _omap35x_mpu_rate_table = NULL; -+static struct omap_opp * _omap37x_mpu_rate_table = NULL; -+static struct omap_opp * _omap35x_dsp_rate_table = NULL; -+static struct omap_opp * _omap37x_dsp_rate_table = NULL; -+static struct omap_opp * _omap35x_l3_rate_table = NULL; -+static struct omap_opp * _omap37x_l3_rate_table = NULL; -+#endif /* CONFIG_PM */ -+ -+ - #define GPMC_CS0_BASE 0x60 - #define GPMC_CS_SIZE 0x30 - -@@ -303,12 +320,23 @@ static int beagle_twl_gpio_setup(struct device *dev, - * power switch and overcurrent detect - */ - -- gpio_request(gpio + 1, "EHCI_nOC"); -- gpio_direction_input(gpio + 1); -+ if (cpu_is_omap3630()) { -+ gpio_request(gpio + 1, "nDVI_PWR_EN"); -+ gpio_direction_output(gpio + 1, 0); -+ -+ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ -+ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); -+ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); -+ } -+ else { -+ gpio_request(gpio + 1, "EHCI_nOC"); -+ gpio_direction_input(gpio + 1); -+ -+ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ -+ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); -+ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); -+ } - -- /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ -- gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); -- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); - - /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ - gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; -@@ -501,9 +529,22 @@ static struct platform_device keys_gpio = { - - static void __init omap3_beagle_init_irq(void) - { -- omap2_init_common_hw(mt46h32m32lf6_sdrc_params, -- mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table, -- omap35x_dsp_rate_table, omap35x_l3_rate_table); -+ if (cpu_is_omap3630()) -+ { -+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params, -+ NULL, -+ _omap37x_mpu_rate_table, -+ _omap37x_dsp_rate_table, -+ _omap37x_l3_rate_table); -+ } -+ else -+ { -+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params, -+ NULL, -+ _omap35x_mpu_rate_table, -+ _omap35x_dsp_rate_table, -+ _omap35x_l3_rate_table); -+ } - omap_init_irq(); - #ifdef CONFIG_OMAP_32K_TIMER - omap2_gp_clockevent_set_gptimer(12); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch b/recipes/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch new file mode 100644 index 0000000000..be8110e4f1 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch @@ -0,0 +1,57 @@ +From dec5927ff1ccda36cc982509c9a9e92ff9d49af7 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 21:38:34 +0200 +Subject: [PATCH 08/43] ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard + +This really needs a for loop, patches welcome +--- + arch/arm/mach-omap2/board-omap3beagle.c | 33 ++++++++++++++++++++++++++++++- + 1 files changed, 32 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index ac96551..c9af202 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -701,7 +701,38 @@ static void __init omap3_beagle_init(void) + mmc[1].gpio_wp = 141; + mmc[1].gpio_cd = 162; + } +- ++ ++ if(!strcmp(expansionboard_name, "trainer")) ++ { ++ printk(KERN_INFO "Beagle expansionboard: exporting GPIOs 130-141,162 to userspace\n"); ++ gpio_request(130, "sysfs"); ++ gpio_export(130, 1); ++ gpio_request(131, "sysfs"); ++ gpio_export(131, 1); ++ gpio_request(132, "sysfs"); ++ gpio_export(132, 1); ++ gpio_request(133, "sysfs"); ++ gpio_export(133, 1); ++ gpio_request(134, "sysfs"); ++ gpio_export(134, 1); ++ gpio_request(135, "sysfs"); ++ gpio_export(135, 1); ++ gpio_request(136, "sysfs"); ++ gpio_export(136, 1); ++ gpio_request(137, "sysfs"); ++ gpio_export(137, 1); ++ gpio_request(138, "sysfs"); ++ gpio_export(138, 1); ++ gpio_request(139, "sysfs"); ++ gpio_export(139, 1); ++ gpio_request(140, "sysfs"); ++ gpio_export(140, 1); ++ gpio_request(141, "sysfs"); ++ gpio_export(141, 1); ++ gpio_request(162, "sysfs"); ++ gpio_export(162, 1); ++ } ++ + usb_musb_init(); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch b/recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch deleted file mode 100644 index a1ffaeeba1..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch +++ /dev/null @@ -1,31 +0,0 @@ -From e97c34409d2b503f695586f613a447799e98fea8 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Thu, 11 Feb 2010 20:23:01 +0100 -Subject: [PATCH 08/45] board-omap3beagle: turn on power to camera on boot and add some comments - ---- - arch/arm/mach-omap2/board-omap3beagle.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index accf80d..429dacb 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -321,9 +321,14 @@ static int beagle_twl_gpio_setup(struct device *dev, - */ - - if (cpu_is_omap3630()) { -+ /* Power on DVI, Serial and PWR led */ - gpio_request(gpio + 1, "nDVI_PWR_EN"); - gpio_direction_output(gpio + 1, 0); - -+ /* Power on camera interface */ -+ gpio_request(gpio + 2, "CAM_EN"); -+ gpio_direction_output(gpio + 2, 1); -+ - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ - gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch b/recipes/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch new file mode 100644 index 0000000000..fe9383a145 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch @@ -0,0 +1,76 @@ +From 7305c83476fe90a1368f647b7a5e5eba924b6f55 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 22:31:34 +0200 +Subject: [PATCH 09/43] ARM: OMAP: beagleboard: initialize ds1307 and eeprom only for zippy and zippy2 + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 39 +++++++++++++++++++++++++++--- + 1 files changed, 35 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index c9af202..b3c8cb7 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -496,24 +496,55 @@ static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { + }, + }; + ++ ++#if defined(CONFIG_EEPROM_AT24) || defined(CONFIG_EEPROM_AT24_MODULE) ++#include ++ ++static struct at24_platform_data m24c01 = { ++ .byte_len = SZ_1K / 8, ++ .page_size = 16, ++}; ++ + #if defined(CONFIG_RTC_DRV_DS1307) || \ + defined(CONFIG_RTC_DRV_DS1307_MODULE) + +-static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { + { + I2C_BOARD_INFO("ds1307", 0x68), + }, ++ { ++ I2C_BOARD_INFO("24c01", 0x50), ++ .platform_data = &m24c01, ++ }, + }; + #else +-static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; ++static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { ++ { ++ I2C_BOARD_INFO("24c01", 0x50), ++ .platform_data = &m24c01, ++ }, ++}; ++#endif ++#else ++static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; + #endif + ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; ++ + static int __init omap3_beagle_i2c_init(void) + { + omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo, + ARRAY_SIZE(beagle_i2c1_boardinfo)); +- omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, +- ARRAY_SIZE(beagle_i2c2_boardinfo)); ++ if(!strcmp(expansionboard_name, "zippy") || !strcmp(expansionboard_name, "zippy2")) ++ { ++ printk(KERN_INFO "Beagle expansionboard: registering i2c2 bus for zippy/zippy2\n"); ++ omap_register_i2c_bus(2, 400, beagle_zippy_i2c2_boardinfo, ++ ARRAY_SIZE(beagle_zippy_i2c2_boardinfo)); ++ } else ++ { ++ omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, ++ ARRAY_SIZE(beagle_i2c2_boardinfo)); ++ } + /* Bus 3 is attached to the DVI port where devices like the pico DLP + * projector don't work reliably with 400kHz */ + omap_register_i2c_bus(3, 100, NULL, 0); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch b/recipes/linux/linux-omap-psp-2.6.32/0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch deleted file mode 100644 index 869717f18a..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e2bfc6c60fc749e939839a00abc0583bea9af857 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 12:45:20 -0800 -Subject: [PATCH 09/45] ASoC: enable audio capture by default for twl4030 - ---- - sound/soc/codecs/twl4030.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c -index 74f0d65..53da465 100644 ---- a/sound/soc/codecs/twl4030.c -+++ b/sound/soc/codecs/twl4030.c -@@ -46,8 +46,8 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = { - 0xc3, /* REG_OPTION (0x2) */ - 0x00, /* REG_UNKNOWN (0x3) */ - 0x00, /* REG_MICBIAS_CTL (0x4) */ -- 0x20, /* REG_ANAMICL (0x5) */ -- 0x00, /* REG_ANAMICR (0x6) */ -+ 0x34, /* REG_ANAMICL (0x5) */ -+ 0x14, /* REG_ANAMICR (0x6) */ - 0x00, /* REG_AVADC_CTL (0x7) */ - 0x00, /* REG_ADCMICSEL (0x8) */ - 0x00, /* REG_DIGMIXING (0x9) */ --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch b/recipes/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch new file mode 100644 index 0000000000..977d000217 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch @@ -0,0 +1,3323 @@ +From 98b6d38691e00f56a6428768eb042a8f42c2fe41 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 27 Apr 2010 10:51:15 +0200 +Subject: [PATCH 10/43] ARM: OMAP: update beagleboard defconfig + +--- + arch/arm/configs/omap3_beagle_defconfig | 2514 +++++++++++++++++++++++++------ + 1 files changed, 2088 insertions(+), 426 deletions(-) + +diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig +index 9cfae37..adb4f8c 100644 +--- a/arch/arm/configs/omap3_beagle_defconfig ++++ b/arch/arm/configs/omap3_beagle_defconfig +@@ -1,15 +1,13 @@ + # + # Automatically generated make config: don't edit +-# Linux kernel version: 2.6.27-rc8 +-# Wed Oct 1 17:14:22 2008 ++# Linux kernel version: 2.6.32 ++# Mon Apr 26 16:59:04 2010 + # + 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_HAVE_LATENCYTOP_SUPPORT=y +@@ -18,134 +16,183 @@ 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_ARCH_HAS_CPUFREQ=y + CONFIG_GENERIC_HWEIGHT=y + CONFIG_GENERIC_CALIBRATE_DELAY=y +-CONFIG_ARCH_SUPPORTS_AOUT=y +-CONFIG_ZONE_DMA=y + CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y ++CONFIG_OPROFILE_ARMV7=y + CONFIG_VECTORS_BASE=0xffff0000 + CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ++CONFIG_CONSTRUCTORS=y + + # + # 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_LOCALVERSION_AUTO is not set + 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_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y + # CONFIG_AUDIT is not set +-# CONFIG_IKCONFIG is not set +-CONFIG_LOG_BUF_SHIFT=14 +-# CONFIG_CGROUPS is not set ++ ++# ++# RCU Subsystem ++# ++CONFIG_TREE_RCU=y ++# CONFIG_TREE_PREEMPT_RCU is not set ++# CONFIG_TINY_RCU is not set ++# CONFIG_RCU_TRACE is not set ++CONFIG_RCU_FANOUT=32 ++# CONFIG_RCU_FANOUT_EXACT is not set ++# CONFIG_TREE_RCU_TRACE is not set ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_LOG_BUF_SHIFT=16 + 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 is not set +-# CONFIG_SYSFS_DEPRECATED_V2=y is not set ++# CONFIG_CGROUPS is not set ++# CONFIG_SYSFS_DEPRECATED_V2 is not set + # CONFIG_RELAY is not set + # CONFIG_NAMESPACES is not set + CONFIG_BLK_DEV_INITRD=y + CONFIG_INITRAMFS_SOURCE="" ++CONFIG_RD_GZIP=y ++# CONFIG_RD_BZIP2 is not set ++# CONFIG_RD_LZMA is not set + CONFIG_CC_OPTIMIZE_FOR_SIZE=y + CONFIG_SYSCTL=y ++CONFIG_ANON_INODES=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_KALLSYMS_EXTRA_PASS is not set + CONFIG_HOTPLUG=y + CONFIG_PRINTK=y + CONFIG_BUG=y +-CONFIG_ELF_CORE=y +-CONFIG_COMPAT_BRK=y ++# CONFIG_ELF_CORE 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_AIO=y ++ ++# ++# Kernel Performance Events And Counters ++# + CONFIG_VM_EVENT_COUNTERS=y ++# CONFIG_COMPAT_BRK is not set + CONFIG_SLAB=y + # CONFIG_SLUB is not set + # CONFIG_SLOB is not set +-# CONFIG_PROFILING is not set +-# CONFIG_MARKERS is not set ++CONFIG_PROFILING=y ++CONFIG_TRACEPOINTS=y ++CONFIG_OPROFILE=y + CONFIG_HAVE_OPROFILE=y + # CONFIG_KPROBES is not set +-# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set +-# CONFIG_HAVE_IOREMAP_PROT is not set + CONFIG_HAVE_KPROBES=y + CONFIG_HAVE_KRETPROBES=y +-# CONFIG_HAVE_ARCH_TRACEHOOK is not set +-# CONFIG_HAVE_DMA_ATTRS is not set +-# CONFIG_USE_GENERIC_SMP_HELPERS is not set + CONFIG_HAVE_CLK=y +-CONFIG_PROC_PAGE_MONITOR=y ++ ++# ++# GCOV-based kernel profiling ++# ++# CONFIG_GCOV_KERNEL is not set ++CONFIG_SLOW_WORK=y ++# CONFIG_SLOW_WORK_DEBUG is not set + CONFIG_HAVE_GENERIC_DMA_COHERENT=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 is not set ++CONFIG_MODULE_FORCE_LOAD=y + CONFIG_MODULE_UNLOAD=y +-# CONFIG_MODULE_FORCE_UNLOAD is not set ++CONFIG_MODULE_FORCE_UNLOAD=y + 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 ++CONFIG_LBDAF=y ++CONFIG_BLK_DEV_BSG=y + # CONFIG_BLK_DEV_INTEGRITY 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_CFQ=y + # CONFIG_DEFAULT_NOOP is not set +-CONFIG_DEFAULT_IOSCHED="anticipatory" +-CONFIG_CLASSIC_RCU=y ++CONFIG_DEFAULT_IOSCHED="cfq" ++# CONFIG_INLINE_SPIN_TRYLOCK is not set ++# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set ++# CONFIG_INLINE_SPIN_LOCK is not set ++# CONFIG_INLINE_SPIN_LOCK_BH is not set ++# CONFIG_INLINE_SPIN_LOCK_IRQ is not set ++# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set ++# CONFIG_INLINE_SPIN_UNLOCK is not set ++# CONFIG_INLINE_SPIN_UNLOCK_BH is not set ++# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set ++# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set ++# CONFIG_INLINE_READ_TRYLOCK is not set ++# CONFIG_INLINE_READ_LOCK is not set ++# CONFIG_INLINE_READ_LOCK_BH is not set ++# CONFIG_INLINE_READ_LOCK_IRQ is not set ++# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set ++# CONFIG_INLINE_READ_UNLOCK is not set ++# CONFIG_INLINE_READ_UNLOCK_BH is not set ++# CONFIG_INLINE_READ_UNLOCK_IRQ is not set ++# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set ++# CONFIG_INLINE_WRITE_TRYLOCK is not set ++# CONFIG_INLINE_WRITE_LOCK is not set ++# CONFIG_INLINE_WRITE_LOCK_BH is not set ++# CONFIG_INLINE_WRITE_LOCK_IRQ is not set ++# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set ++# CONFIG_INLINE_WRITE_UNLOCK is not set ++# CONFIG_INLINE_WRITE_UNLOCK_BH is not set ++# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set ++# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set ++# CONFIG_MUTEX_SPIN_ON_OWNER is not set + CONFIG_FREEZER=y + + # + # System Type + # ++CONFIG_MMU=y + # 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_GEMINI is not set + # CONFIG_ARCH_EBSA110 is not set + # CONFIG_ARCH_EP93XX is not set + # CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_STMP3XXX is not set + # CONFIG_ARCH_NETX is not set + # CONFIG_ARCH_H720X is not set +-# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_NOMADIK is not set + # CONFIG_ARCH_IOP13XX is not set + # CONFIG_ARCH_IOP32X is not set + # CONFIG_ARCH_IOP33X is not set +@@ -153,23 +200,30 @@ CONFIG_FREEZER=y + # CONFIG_ARCH_IXP2000 is not set + # CONFIG_ARCH_IXP4XX is not set + # CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_DOVE is not set + # CONFIG_ARCH_KIRKWOOD is not set +-# CONFIG_ARCH_KS8695 is not set +-# CONFIG_ARCH_NS9XXX is not set + # CONFIG_ARCH_LOKI is not set + # CONFIG_ARCH_MV78XX0 is not set +-# CONFIG_ARCH_MXC is not set + # CONFIG_ARCH_ORION5X is not set ++# CONFIG_ARCH_MMP is not set ++# CONFIG_ARCH_KS8695 is not set ++# CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_W90X900 is not set + # CONFIG_ARCH_PNX4008 is not set + # CONFIG_ARCH_PXA is not set ++# CONFIG_ARCH_MSM is not set + # CONFIG_ARCH_RPC is not set + # CONFIG_ARCH_SA1100 is not set + # CONFIG_ARCH_S3C2410 is not set ++# CONFIG_ARCH_S3C64XX is not set ++# CONFIG_ARCH_S5PC1XX is not set + # CONFIG_ARCH_SHARK is not set + # CONFIG_ARCH_LH7A40X is not set ++# CONFIG_ARCH_U300 is not set + # CONFIG_ARCH_DAVINCI is not set + CONFIG_ARCH_OMAP=y +-# CONFIG_ARCH_MSM7X00A is not set ++# CONFIG_ARCH_BCMRING is not set ++# CONFIG_ARCH_U8500 is not set + + # + # TI OMAP Implementations +@@ -178,37 +232,55 @@ CONFIG_ARCH_OMAP_OTG=y + # CONFIG_ARCH_OMAP1 is not set + # CONFIG_ARCH_OMAP2 is not set + CONFIG_ARCH_OMAP3=y ++# CONFIG_ARCH_OMAP4 is not set + + # + # OMAP Feature Selections + # +-# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set +-# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set +-# CONFIG_OMAP_RESET_CLOCKS is not set ++CONFIG_OMAP_SMARTREFLEX=y ++# CONFIG_OMAP_SMARTREFLEX_TESTING is not set ++CONFIG_OMAP_RESET_CLOCKS=y + # CONFIG_OMAP_MUX is not set +-# CONFIG_OMAP_MCBSP is not set ++CONFIG_OMAP_MCBSP=y ++CONFIG_OMAP_MBOX_FWK=m ++CONFIG_OMAP_IOMMU=y + # CONFIG_OMAP_MPU_TIMER is not set + CONFIG_OMAP_32K_TIMER=y ++# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set ++# CONFIG_OMAP3_DEBOBS is not set + 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_LL_DEBUG_NONE is not set ++# 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 ++CONFIG_OMAP_PACKAGE_CBB=y + + # + # OMAP Board Type + # + CONFIG_MACH_OMAP3_BEAGLE=y +- +-# +-# Boot options +-# +- +-# +-# Power management +-# ++# CONFIG_MACH_OMAP_LDP is not set ++# CONFIG_MACH_OVERO is not set ++CONFIG_MACH_OMAP3EVM=y ++CONFIG_PMIC_TWL4030=y ++# CONFIG_MACH_OMAP3517EVM is not set ++# CONFIG_MACH_OMAP3_PANDORA is not set ++# CONFIG_MACH_OMAP3_TOUCHBOOK is not set ++# CONFIG_MACH_OMAP_3430SDP is not set ++# CONFIG_MACH_NOKIA_RX51 is not set ++# CONFIG_MACH_OMAP_ZOOM2 is not set ++# CONFIG_MACH_OMAP_ZOOM3 is not set ++# CONFIG_MACH_CM_T35 is not set ++# CONFIG_MACH_IGEP0020 is not set ++# CONFIG_MACH_OMAP_3630SDP is not set ++# CONFIG_OMAP3_EMU is not set ++# CONFIG_OMAP3_SDRC_AC_TIMING is not set + + # + # Processor Type +@@ -218,7 +290,7 @@ CONFIG_CPU_32v6K=y + CONFIG_CPU_V7=y + CONFIG_CPU_32v7=y + CONFIG_CPU_ABRT_EV7=y +-CONFIG_CPU_PABRT_IFAR=y ++CONFIG_CPU_PABRT_V7=y + CONFIG_CPU_CACHE_V7=y + CONFIG_CPU_CACHE_VIPT=y + CONFIG_CPU_COPY_V6=y +@@ -231,12 +303,17 @@ CONFIG_CPU_CP15_MMU=y + # Processor Features + # + CONFIG_ARM_THUMB=y +-# CONFIG_ARM_THUMBEE is not set ++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 ++CONFIG_ARM_L1_CACHE_SHIFT=6 ++CONFIG_USER_L2_PLE=y ++CONFIG_USER_PMON=y ++# CONFIG_ARM_ERRATA_430973 is not set ++# CONFIG_ARM_ERRATA_458693 is not set ++# CONFIG_ARM_ERRATA_460075 is not set + CONFIG_COMMON_CLKDEV=y + + # +@@ -257,42 +334,63 @@ CONFIG_VMSPLIT_3G=y + # CONFIG_VMSPLIT_2G is not set + # CONFIG_VMSPLIT_1G is not set + CONFIG_PAGE_OFFSET=0xC0000000 +-# CONFIG_PREEMPT is not set ++# CONFIG_PREEMPT_NONE is not set ++# CONFIG_PREEMPT_VOLUNTARY is not set ++CONFIG_PREEMPT=y + CONFIG_HZ=128 ++# CONFIG_THUMB2_KERNEL is not set + CONFIG_AEABI=y +-CONFIG_OABI_COMPAT=y +-CONFIG_ARCH_FLATMEM_HAS_HOLES=y +-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set ++# CONFIG_OABI_COMPAT is not set ++CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y ++# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set ++# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set ++# CONFIG_HIGHMEM 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_PHYS_ADDR_T_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=0 + CONFIG_VIRT_TO_BUS=y +-# CONFIG_LEDS is not set ++# CONFIG_KSM is not set ++CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 ++CONFIG_LEDS=y + CONFIG_ALIGNMENT_TRAP=y ++# CONFIG_UACCESS_WITH_MEMCPY is not set ++CONFIG_CPU_V7_SYSFS=y + + # + # Boot options + # + CONFIG_ZBOOT_ROM_TEXT=0x0 + CONFIG_ZBOOT_ROM_BSS=0x0 +-CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:tgt:eth0:off rw console=ttyS2,115200n8" ++CONFIG_CMDLINE=" debug " + # CONFIG_XIP_KERNEL is not set +-# CONFIG_KEXEC is not set ++CONFIG_KEXEC=y ++CONFIG_ATAGS_PROC=y + + # + # CPU Power Management + # +-# CONFIG_CPU_FREQ is not set ++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=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=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y + # CONFIG_CPU_IDLE is not set + + # +@@ -302,29 +400,30 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.16 + # + # 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=y + CONFIG_VFPv3=y +-# CONFIG_NEON is not set ++CONFIG_NEON=y + + # + # Userspace binary formats + # + CONFIG_BINFMT_ELF=y +-# CONFIG_BINFMT_AOUT is not set ++CONFIG_HAVE_AOUT=y ++CONFIG_BINFMT_AOUT=m + CONFIG_BINFMT_MISC=y + + # + # Power management options + # + CONFIG_PM=y +-# CONFIG_PM_DEBUG is not set ++CONFIG_PM_DEBUG=y ++# CONFIG_PM_VERBOSE is not set ++CONFIG_CAN_PM_TRACE=y + CONFIG_PM_SLEEP=y + CONFIG_SUSPEND=y + CONFIG_SUSPEND_FREEZER=y + # CONFIG_APM_EMULATION is not set ++CONFIG_PM_RUNTIME=y + CONFIG_ARCH_SUSPEND_POSSIBLE=y + CONFIG_NET=y + +@@ -332,13 +431,14 @@ CONFIG_NET=y + # Networking options + # + CONFIG_PACKET=y +-# CONFIG_PACKET_MMAP is not set ++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_XFRM_IPCOMP=m + CONFIG_NET_KEY=y + # CONFIG_NET_KEY_MIGRATE is not set + CONFIG_INET=y +@@ -349,63 +449,462 @@ 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_NET_IPIP=m ++CONFIG_NET_IPGRE=m + # 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_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_TUNNEL=m ++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_INET_LRO=y ++CONFIG_INET_DIAG=m ++CONFIG_INET_TCP_DIAG=m ++CONFIG_TCP_CONG_ADVANCED=y ++CONFIG_TCP_CONG_BIC=m + CONFIG_TCP_CONG_CUBIC=y ++CONFIG_TCP_CONG_WESTWOOD=m ++CONFIG_TCP_CONG_HTCP=m ++CONFIG_TCP_CONG_HSTCP=m ++CONFIG_TCP_CONG_HYBLA=m ++CONFIG_TCP_CONG_VEGAS=m ++CONFIG_TCP_CONG_SCALABLE=m ++CONFIG_TCP_CONG_LP=m ++CONFIG_TCP_CONG_VENO=m ++CONFIG_TCP_CONG_YEAH=m ++CONFIG_TCP_CONG_ILLINOIS=m ++# CONFIG_DEFAULT_BIC is not set ++CONFIG_DEFAULT_CUBIC=y ++# CONFIG_DEFAULT_HTCP is not set ++# CONFIG_DEFAULT_VEGAS is not set ++# CONFIG_DEFAULT_WESTWOOD is not set ++# CONFIG_DEFAULT_RENO is not set + CONFIG_DEFAULT_TCP_CONG="cubic" + # CONFIG_TCP_MD5SIG is not set +-# CONFIG_IPV6 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=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_MIP6=m ++CONFIG_INET6_XFRM_TUNNEL=m ++CONFIG_INET6_TUNNEL=m ++CONFIG_INET6_XFRM_MODE_TRANSPORT=m ++CONFIG_INET6_XFRM_MODE_TUNNEL=m ++CONFIG_INET6_XFRM_MODE_BEET=m ++CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m ++CONFIG_IPV6_SIT=m ++# CONFIG_IPV6_SIT_6RD is not set ++CONFIG_IPV6_NDISC_NODETYPE=y ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++# CONFIG_IPV6_PIMSM_V2 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_NETFILTER=y ++# CONFIG_NETFILTER_DEBUG is not set ++CONFIG_NETFILTER_ADVANCED=y ++CONFIG_BRIDGE_NETFILTER=y ++ ++# ++# Core Netfilter Configuration ++# ++CONFIG_NETFILTER_NETLINK=m ++CONFIG_NETFILTER_NETLINK_QUEUE=m ++CONFIG_NETFILTER_NETLINK_LOG=m ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CT_ACCT=y ++CONFIG_NF_CONNTRACK_MARK=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_GRE=m ++CONFIG_NF_CT_PROTO_SCTP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++# CONFIG_NETFILTER_TPROXY is not set ++CONFIG_NETFILTER_XTABLES=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++# CONFIG_NETFILTER_XT_TARGET_DSCP is not set ++CONFIG_NETFILTER_XT_TARGET_HL=m ++# CONFIG_NETFILTER_XT_TARGET_LED is not set ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set ++CONFIG_NETFILTER_XT_TARGET_RATEEST=m ++# CONFIG_NETFILTER_XT_TARGET_TRACE is not set ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set ++# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_HL=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set ++CONFIG_NETFILTER_XT_MATCH_SCTP=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++# CONFIG_NETFILTER_XT_MATCH_OSF is not set ++CONFIG_IP_VS=m ++CONFIG_IP_VS_IPV6=y ++CONFIG_IP_VS_DEBUG=y ++CONFIG_IP_VS_TAB_BITS=12 ++ ++# ++# IPVS transport protocol load balancing support ++# ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_AH_ESP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++ ++# ++# IPVS scheduler ++# ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++ ++# ++# IPVS application helper ++# ++CONFIG_IP_VS_FTP=m ++ ++# ++# IP: Netfilter Configuration ++# ++CONFIG_NF_DEFRAG_IPV4=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_NF_CONNTRACK_PROC_COMPAT=y ++CONFIG_IP_NF_QUEUE=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_ADDRTYPE=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_TARGET_LOG=m ++CONFIG_IP_NF_TARGET_ULOG=m ++CONFIG_NF_NAT=m ++CONFIG_NF_NAT_NEEDED=y ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_NF_NAT_SNMP_BASIC=m ++CONFIG_NF_NAT_PROTO_DCCP=m ++CONFIG_NF_NAT_PROTO_GRE=m ++CONFIG_NF_NAT_PROTO_UDPLITE=m ++CONFIG_NF_NAT_PROTO_SCTP=m ++CONFIG_NF_NAT_FTP=m ++CONFIG_NF_NAT_IRC=m ++CONFIG_NF_NAT_TFTP=m ++CONFIG_NF_NAT_AMANDA=m ++CONFIG_NF_NAT_PPTP=m ++CONFIG_NF_NAT_H323=m ++CONFIG_NF_NAT_SIP=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++ ++# ++# IPv6: Netfilter Configuration ++# ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_QUEUE=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_TARGET_LOG=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++# CONFIG_BRIDGE_NF_EBTABLES is not set ++CONFIG_IP_DCCP=m ++CONFIG_INET_DCCP_DIAG=m ++ ++# ++# DCCP CCIDs Configuration (EXPERIMENTAL) ++# ++# CONFIG_IP_DCCP_CCID2_DEBUG is not set ++CONFIG_IP_DCCP_CCID3=y ++# CONFIG_IP_DCCP_CCID3_DEBUG is not set ++CONFIG_IP_DCCP_CCID3_RTO=100 ++CONFIG_IP_DCCP_TFRC_LIB=y ++ ++# ++# DCCP Kernel Hacking ++# ++# CONFIG_IP_DCCP_DEBUG is not set ++CONFIG_IP_SCTP=m ++# CONFIG_SCTP_DBG_MSG is not set ++# CONFIG_SCTP_DBG_OBJCNT is not set ++# CONFIG_SCTP_HMAC_NONE is not set ++# CONFIG_SCTP_HMAC_SHA1 is not set ++CONFIG_SCTP_HMAC_MD5=y ++# CONFIG_RDS is not set ++CONFIG_TIPC=m ++# CONFIG_TIPC_ADVANCED is not set ++# CONFIG_TIPC_DEBUG is not set ++CONFIG_ATM=m ++CONFIG_ATM_CLIP=m ++# CONFIG_ATM_CLIP_NO_ICMP is not set ++CONFIG_ATM_LANE=m ++CONFIG_ATM_MPOA=m ++CONFIG_ATM_BR2684=m ++# CONFIG_ATM_BR2684_IPFILTER is not set ++CONFIG_STP=m ++CONFIG_GARP=m ++CONFIG_BRIDGE=m ++# CONFIG_NET_DSA is not set ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y + # 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_WAN_ROUTER=m ++# CONFIG_PHONET is not set ++# CONFIG_IEEE802154 is not set ++CONFIG_NET_SCHED=y ++ ++# ++# Queueing/Scheduling ++# ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_ATM=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++ ++# ++# Classification ++# ++CONFIG_NET_CLS=y ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_ROUTE=y ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_PERF=y ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++# CONFIG_NET_EMATCH is not set ++# CONFIG_NET_CLS_ACT is not set ++CONFIG_NET_CLS_IND=y ++CONFIG_NET_SCH_FIFO=y ++# CONFIG_DCB is not set + + # + # Network testing + # + # CONFIG_NET_PKTGEN is not set ++# CONFIG_NET_DROP_MONITOR is not set + # CONFIG_HAMRADIO is not set +-# CONFIG_CAN 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 ++CONFIG_CAN=m ++CONFIG_CAN_RAW=m ++CONFIG_CAN_BCM=m ++ ++# ++# CAN Device Drivers ++# ++CONFIG_CAN_VCAN=m ++# CONFIG_CAN_DEV is not set ++# CONFIG_CAN_DEBUG_DEVICES is not set ++CONFIG_IRDA=m ++ ++# ++# IrDA protocols ++# ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++ ++# ++# IrDA options ++# ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRDA_DEBUG=y ++ ++# ++# Infrared-port device drivers ++# ++ ++# ++# SIR device drivers ++# ++CONFIG_IRTTY_SIR=m ++ ++# ++# Dongle support ++# ++CONFIG_DONGLE=y ++CONFIG_ESI_DONGLE=m ++CONFIG_ACTISYS_DONGLE=m ++CONFIG_TEKRAM_DONGLE=m ++CONFIG_TOIM3232_DONGLE=m ++CONFIG_LITELINK_DONGLE=m ++CONFIG_MA600_DONGLE=m ++CONFIG_GIRBIL_DONGLE=m ++CONFIG_MCP2120_DONGLE=m ++CONFIG_OLD_BELKIN_DONGLE=m ++# CONFIG_ACT200L_DONGLE is not set ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++ ++# ++# FIR device drivers ++# ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++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_HCIBTUSB=m ++CONFIG_BT_HCIBTSDIO=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_H4=y ++CONFIG_BT_HCIUART_BCSP=y ++CONFIG_BT_HCIUART_LL=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++# CONFIG_BT_HCIVHCI is not set ++# CONFIG_BT_MRVL is not set ++CONFIG_AF_RXRPC=m ++# CONFIG_AF_RXRPC_DEBUG is not set ++# CONFIG_RXKAD is not set ++CONFIG_FIB_RULES=y ++CONFIG_WIRELESS=y ++CONFIG_WIRELESS_EXT=y ++CONFIG_WEXT_CORE=y ++CONFIG_WEXT_PROC=y ++CONFIG_WEXT_SPY=y ++CONFIG_WEXT_PRIV=y ++CONFIG_CFG80211=m ++# CONFIG_NL80211_TESTMODE is not set ++# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set ++# CONFIG_CFG80211_REG_DEBUG is not set ++CONFIG_CFG80211_DEFAULT_PS=y ++# CONFIG_CFG80211_DEBUGFS is not set ++CONFIG_WIRELESS_OLD_REGULATORY=y ++CONFIG_CFG80211_WEXT=y ++CONFIG_WIRELESS_EXT_SYSFS=y ++CONFIG_LIB80211=y ++CONFIG_LIB80211_CRYPT_WEP=m ++CONFIG_LIB80211_CRYPT_CCMP=m ++CONFIG_LIB80211_CRYPT_TKIP=m ++# CONFIG_LIB80211_DEBUG is not set ++CONFIG_MAC80211=m ++CONFIG_MAC80211_RC_PID=y ++# CONFIG_MAC80211_RC_MINSTREL is not set ++CONFIG_MAC80211_RC_DEFAULT_PID=y ++# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set ++CONFIG_MAC80211_RC_DEFAULT="pid" ++# CONFIG_MAC80211_MESH is not set ++CONFIG_MAC80211_LEDS=y ++# CONFIG_MAC80211_DEBUGFS is not set ++# CONFIG_MAC80211_DEBUG_MENU is not set ++CONFIG_WIMAX=m ++CONFIG_WIMAX_DEBUG_LEVEL=8 ++CONFIG_RFKILL=m ++CONFIG_RFKILL_LEDS=y ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++# CONFIG_NET_9P_DEBUG is not set + + # + # Device Drivers +@@ -414,17 +913,22 @@ CONFIG_DEFAULT_TCP_CONG="cubic" + # + # Generic Driver Options + # +-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" ++CONFIG_UEVENT_HELPER_PATH="" ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y + CONFIG_STANDALONE=y + CONFIG_PREVENT_FIRMWARE_BUILD=y +-# CONFIG_FW_LOADER is not set ++CONFIG_FW_LOADER=y ++CONFIG_FIRMWARE_IN_KERNEL=y ++CONFIG_EXTRA_FIRMWARE="" + # 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 is not set ++# CONFIG_MTD_TESTS 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 +@@ -472,6 +976,9 @@ CONFIG_MTD_CFI_I2=y + # + # Self-contained MTD device drivers + # ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_M25P80 is not set ++# CONFIG_MTD_SST25L is not set + # CONFIG_MTD_SLRAM is not set + # CONFIG_MTD_PHRAM is not set + # CONFIG_MTD_MTDRAM is not set +@@ -487,38 +994,82 @@ 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_GPIO is not set ++CONFIG_MTD_NAND_OMAP2=y ++CONFIG_MTD_NAND_OMAP_PREFETCH=y ++# CONFIG_MTD_NAND_OMAP_PREFETCH_DMA is not set + CONFIG_MTD_NAND_IDS=y + # CONFIG_MTD_NAND_DISKONCHIP is not set + # CONFIG_MTD_NAND_NANDSIM is not set +-# CONFIG_MTD_NAND_PLATFORM is not set ++CONFIG_MTD_NAND_PLATFORM=y + # CONFIG_MTD_ALAUDA is not set + # CONFIG_MTD_ONENAND is not set + + # ++# LPDDR flash memory drivers ++# ++# CONFIG_MTD_LPDDR is not set ++ ++# + # UBI - Unsorted block images + # +-# CONFIG_MTD_UBI is not set ++CONFIG_MTD_UBI=y ++CONFIG_MTD_UBI_WL_THRESHOLD=4096 ++CONFIG_MTD_UBI_BEB_RESERVE=1 ++# CONFIG_MTD_UBI_GLUEBI is not set ++ ++# ++# UBI debugging options ++# ++# CONFIG_MTD_UBI_DEBUG 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_CRYPTOLOOP=m ++ ++# ++# DRBD disabled because PROC_FS, INET or CONNECTOR not selected ++# + # 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_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 is not set ++# CONFIG_MG_DISK is not set ++CONFIG_MISC_DEVICES=y ++# CONFIG_AD525X_DPOT is not set ++# CONFIG_ICS932S401 is not set ++# CONFIG_ENCLOSURE_SERVICES is not set ++CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7 ++# CONFIG_ISL29003 is not set ++# CONFIG_DS1682 is not set ++# CONFIG_TI_DAC7512 is not set ++# CONFIG_C2PORT is not set ++ ++# ++# EEPROM support ++# ++# CONFIG_EEPROM_AT24 is not set ++# CONFIG_EEPROM_AT25 is not set ++# CONFIG_EEPROM_LEGACY is not set ++# CONFIG_EEPROM_MAX6875 is not set ++CONFIG_EEPROM_93CX6=y ++CONFIG_IWMC3200TOP=m ++# CONFIG_IWMC3200TOP_DEBUG is not set ++# CONFIG_IWMC3200TOP_DEBUGFS is not set + CONFIG_HAVE_IDE=y + # CONFIG_IDE is not set + + # + # SCSI device support + # +-# CONFIG_RAID_ATTRS is not set ++CONFIG_RAID_ATTRS=m + CONFIG_SCSI=y + CONFIG_SCSI_DMA=y + # CONFIG_SCSI_TGT is not set +@@ -531,14 +1082,11 @@ CONFIG_SCSI_PROC_FS=y + 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_BLK_DEV_SR=y ++CONFIG_BLK_DEV_SR_VENDOR=y ++CONFIG_CHR_DEV_SG=y ++CONFIG_CHR_DEV_SCH=m ++CONFIG_SCSI_MULTI_LUN=y + # CONFIG_SCSI_CONSTANTS is not set + # CONFIG_SCSI_LOGGING is not set + # CONFIG_SCSI_SCAN_ASYNC is not set +@@ -549,78 +1097,277 @@ CONFIG_SCSI_WAIT_SCAN=m + # + # CONFIG_SCSI_SPI_ATTRS is not set + # CONFIG_SCSI_FC_ATTRS is not set +-# CONFIG_SCSI_ISCSI_ATTRS is not set ++CONFIG_SCSI_ISCSI_ATTRS=m ++# CONFIG_SCSI_SAS_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_ISCSI_TCP=m ++# CONFIG_LIBFC is not set ++# CONFIG_LIBFCOE is not set + # CONFIG_SCSI_DEBUG is not set + # CONFIG_SCSI_DH is not set ++# CONFIG_SCSI_OSD_INITIATOR is not set + # CONFIG_ATA is not set +-# CONFIG_MD 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_RAID6_PQ=m ++# CONFIG_ASYNC_RAID6_TEST is not set ++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_LOG_USERSPACE is not set ++CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m ++# CONFIG_DM_MULTIPATH_QL is not set ++# CONFIG_DM_MULTIPATH_ST is not set ++CONFIG_DM_DELAY=m ++# CONFIG_DM_UEVENT is not set + CONFIG_NETDEVICES=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_NET_ETHERNET is not set ++CONFIG_DUMMY=m ++CONFIG_BONDING=m ++CONFIG_MACVLAN=m ++CONFIG_EQUALIZER=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_PHYLIB=y ++ ++# ++# MII PHY device drivers ++# ++# CONFIG_MARVELL_PHY is not set ++# CONFIG_DAVICOM_PHY is not set ++# CONFIG_QSEMI_PHY is not set ++# CONFIG_LXT_PHY is not set ++# CONFIG_CICADA_PHY is not set ++# CONFIG_VITESSE_PHY is not set ++# CONFIG_SMSC_PHY is not set ++# CONFIG_BROADCOM_PHY is not set ++# CONFIG_ICPLUS_PHY is not set ++# CONFIG_REALTEK_PHY is not set ++# CONFIG_NATIONAL_PHY is not set ++# CONFIG_STE10XP is not set ++# CONFIG_LSI_ET1011C_PHY is not set ++# CONFIG_FIXED_PHY is not set ++# CONFIG_MDIO_BITBANG is not set ++CONFIG_NET_ETHERNET=y ++CONFIG_MII=y ++# CONFIG_AX88796 is not set ++# CONFIG_SMC91X is not set ++# CONFIG_TI_DAVINCI_EMAC is not set ++# CONFIG_DM9000 is not set ++CONFIG_ENC28J60=y ++# CONFIG_ENC28J60_WRITEVERIFY is not set ++# CONFIG_ETHOC is not set ++CONFIG_SMC911X=y ++CONFIG_SMSC911X=y ++# CONFIG_DNET is not set ++# 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_IBM_NEW_EMAC_NO_FLOW_CTRL is not set ++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set ++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set ++# CONFIG_B44 is not set ++# CONFIG_KS8842 is not set ++CONFIG_KS8851=y ++# CONFIG_KS8851_MLL 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 is not set +-# CONFIG_IWLWIFI_LEDS is not set ++CONFIG_WLAN=y ++# CONFIG_LIBERTAS_THINFIRM is not set ++CONFIG_AT76C50X_USB=m ++CONFIG_USB_ZD1201=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_RTL8187=m ++CONFIG_RTL8187_LEDS=y ++# CONFIG_MAC80211_HWSIM is not set ++# CONFIG_ATH_COMMON is not set ++CONFIG_B43=m ++# CONFIG_B43_SDIO is not set ++CONFIG_B43_PHY_LP=y ++CONFIG_B43_LEDS=y ++CONFIG_B43_HWRNG=y ++# CONFIG_B43_DEBUG is not set ++# CONFIG_B43LEGACY is not set ++CONFIG_HOSTAP=m ++CONFIG_HOSTAP_FIRMWARE=y ++CONFIG_HOSTAP_FIRMWARE_NVRAM=y ++# CONFIG_IWM is not set ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++# CONFIG_LIBERTAS_SDIO is not set ++# CONFIG_LIBERTAS_SPI is not set ++# CONFIG_LIBERTAS_DEBUG is not set ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++# CONFIG_P54_SPI is not set ++CONFIG_P54_LEDS=y ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++# CONFIG_RT2800USB is not set ++CONFIG_RT2X00_LIB_USB=m ++CONFIG_RT2X00_LIB=m ++CONFIG_RT2X00_LIB_FIRMWARE=y ++CONFIG_RT2X00_LIB_CRYPTO=y ++CONFIG_RT2X00_LIB_LEDS=y ++# CONFIG_RT2X00_DEBUG is not set ++CONFIG_WL12XX=m ++CONFIG_WL1251=m ++CONFIG_WL1251_SPI=m ++CONFIG_WL1251_SDIO=m ++CONFIG_WL1271=m ++CONFIG_ZD1211RW=m ++# CONFIG_ZD1211RW_DEBUG is not set ++ ++# ++# WiMAX Wireless Broadband devices ++# ++CONFIG_WIMAX_I2400M=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_WIMAX_I2400M_SDIO=m ++CONFIG_WIMAX_IWMC3200_SDIO=y ++CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 + + # + # 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 is not set ++CONFIG_USB_CATC=y ++CONFIG_USB_KAWETH=y ++CONFIG_USB_PEGASUS=y ++CONFIG_USB_RTL8150=y ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=y ++CONFIG_USB_NET_CDCETHER=y ++CONFIG_USB_NET_CDC_EEM=y ++CONFIG_USB_NET_DM9601=y ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=y ++CONFIG_USB_NET_NET1080=y ++CONFIG_USB_NET_PLUSB=y ++CONFIG_USB_NET_MCS7830=y ++CONFIG_USB_NET_RNDIS_HOST=y ++CONFIG_USB_NET_CDC_SUBSET=y ++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=y ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m + # CONFIG_WAN is not set +-# CONFIG_PPP is not set ++CONFIG_ATM_DRIVERS=y ++# CONFIG_ATM_DUMMY is not set ++# CONFIG_ATM_TCP 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_PPPOATM is not set ++CONFIG_PPPOL2TP=m + # CONFIG_SLIP is not set +-# CONFIG_NETCONSOLE is not set +-# CONFIG_NETPOLL is not set +-# CONFIG_NET_POLL_CONTROLLER is not set ++CONFIG_SLHC=m ++CONFIG_NETCONSOLE=m ++CONFIG_NETCONSOLE_DYNAMIC=y ++CONFIG_NETPOLL=y ++CONFIG_NETPOLL_TRAP=y ++CONFIG_NET_POLL_CONTROLLER=y + # CONFIG_ISDN is not set ++# CONFIG_PHONE is not set + + # + # Input device support + # + CONFIG_INPUT=y +-# CONFIG_INPUT_FF_MEMLESS is not set +-# CONFIG_INPUT_POLLDEV is not set ++CONFIG_INPUT_FF_MEMLESS=y ++CONFIG_INPUT_POLLDEV=y ++# CONFIG_INPUT_SPARSEKMAP is not set + + # + # Userland interfaces + # +-# CONFIG_INPUT_MOUSEDEV is not set ++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 is not set ++CONFIG_INPUT_EVDEV=y + # CONFIG_INPUT_EVBUG is not set + + # + # Input Device Drivers + # +-# CONFIG_INPUT_KEYBOARD is not set +-# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_KEYBOARD=y ++# CONFIG_KEYBOARD_ADP5588 is not set ++# CONFIG_KEYBOARD_ATKBD is not set ++# CONFIG_QT2160 is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++CONFIG_KEYBOARD_GPIO=y ++# CONFIG_KEYBOARD_TCA6416 is not set ++# CONFIG_KEYBOARD_MATRIX is not set ++# CONFIG_KEYBOARD_LM8323 is not set ++# CONFIG_KEYBOARD_MAX7359 is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++# CONFIG_KEYBOARD_OPENCORES is not set ++# CONFIG_KEYBOARD_STOWAWAY is not set ++# CONFIG_KEYBOARD_SUNKBD is not set ++# CONFIG_KEYBOARD_TWL4030 is not set ++# CONFIG_KEYBOARD_XTKBD 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_TRACKPOINT=y ++# CONFIG_MOUSE_PS2_ELANTECH is not set ++# CONFIG_MOUSE_PS2_SENTELIC is not set ++# CONFIG_MOUSE_PS2_TOUCHKIT is not set ++# CONFIG_MOUSE_SERIAL is not set ++# CONFIG_MOUSE_APPLETOUCH is not set ++# CONFIG_MOUSE_BCM5974 is not set ++# CONFIG_MOUSE_VSXXXAA is not set ++# CONFIG_MOUSE_GPIO is not set ++# CONFIG_MOUSE_SYNAPTICS_I2C 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 ++CONFIG_INPUT_MISC=y ++# CONFIG_INPUT_ATI_REMOTE is not set ++# CONFIG_INPUT_ATI_REMOTE2 is not set ++# CONFIG_INPUT_KEYSPAN_REMOTE is not set ++# CONFIG_INPUT_POWERMATE is not set ++# CONFIG_INPUT_YEALINK is not set ++# CONFIG_INPUT_CM109 is not set ++CONFIG_INPUT_TWL4030_PWRBUTTON=y ++CONFIG_INPUT_UINPUT=y ++# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set + + # + # Hardware I/O ports + # +-# CONFIG_SERIO is not set ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_SERIO_RAW is not set ++# CONFIG_SERIO_ALTERA_PS2 is not set + # CONFIG_GAMEPORT is not set + + # +@@ -630,7 +1377,7 @@ CONFIG_VT=y + CONFIG_CONSOLE_TRANSLATIONS=y + CONFIG_VT_CONSOLE=y + CONFIG_HW_CONSOLE=y +-# CONFIG_VT_HW_CONSOLE_BINDING is not set ++CONFIG_VT_HW_CONSOLE_BINDING=y + CONFIG_DEVKMEM=y + # CONFIG_SERIAL_NONSTANDARD is not set + +@@ -650,18 +1397,21 @@ CONFIG_SERIAL_8250_RSA=y + # + # Non-8250 serial port support + # ++# CONFIG_SERIAL_MAX3100 is not set + CONFIG_SERIAL_CORE=y + CONFIG_SERIAL_CORE_CONSOLE=y + CONFIG_UNIX98_PTYS=y ++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set + # CONFIG_LEGACY_PTYS is not set + # CONFIG_IPMI_HANDLER is not set + CONFIG_HW_RANDOM=y +-# CONFIG_NVRAM is not set ++# CONFIG_HW_RANDOM_TIMERIOMEM 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_COMPAT=y + CONFIG_I2C_CHARDEV=y + CONFIG_I2C_HELPER_AUTO=y + +@@ -672,6 +1422,7 @@ CONFIG_I2C_HELPER_AUTO=y + # + # I2C system bus drivers (mostly embedded / system-on-chip) + # ++# CONFIG_I2C_DESIGNWARE is not set + # CONFIG_I2C_GPIO is not set + # CONFIG_I2C_OCORES is not set + CONFIG_I2C_OMAP=y +@@ -693,26 +1444,41 @@ CONFIG_I2C_OMAP=y + # + # Miscellaneous I2C Chip support + # +-# CONFIG_DS1682 is not set +-# CONFIG_EEPROM_AT24 is not set +-# CONFIG_EEPROM_LEGACY is not set +-# CONFIG_SENSORS_PCF8574 is not set +-# CONFIG_PCF8575 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_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 +-# CONFIG_SPI 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_GPIO is not set ++CONFIG_SPI_OMAP24XX=y ++# CONFIG_SPI_XILINX is not set ++ ++# ++# SPI Protocol Masters ++# ++CONFIG_SPI_SPIDEV=y ++# CONFIG_SPI_TLE62X0 is not set ++ ++# ++# PPS support ++# ++# CONFIG_PPS is not set + CONFIG_ARCH_REQUIRE_GPIOLIB=y + CONFIG_GPIOLIB=y + # CONFIG_DEBUG_GPIO is not set +-# CONFIG_GPIO_SYSFS is not set ++CONFIG_GPIO_SYSFS=y ++ ++# ++# Memory mapped GPIO expanders: ++# + + # + # I2C GPIO expanders: +@@ -729,49 +1495,469 @@ CONFIG_GPIO_TWL4030=y + # + # SPI GPIO expanders: + # ++# CONFIG_GPIO_MAX7301 is not set ++# CONFIG_GPIO_MCP23S08 is not set ++# CONFIG_GPIO_MC33880 is not set ++ ++# ++# AC97 GPIO expanders: ++# + # CONFIG_W1 is not set +-# CONFIG_POWER_SUPPLY is not set +-# CONFIG_HWMON is not set +-# CONFIG_THERMAL is not set +-# CONFIG_THERMAL_HWMON is not set +-# CONFIG_WATCHDOG 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_DS2782 is not set ++# CONFIG_BATTERY_BQ27x00 is not set ++# CONFIG_BATTERY_MAX17040 is not set ++CONFIG_HWMON=y ++# CONFIG_HWMON_VID is not set ++# CONFIG_HWMON_DEBUG_CHIP is not set ++ ++# ++# Native drivers ++# ++# CONFIG_SENSORS_AD7414 is not set ++# CONFIG_SENSORS_AD7418 is not set ++# CONFIG_SENSORS_ADCXX 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_ADT7462 is not set ++# CONFIG_SENSORS_ADT7470 is not set ++# CONFIG_SENSORS_ADT7473 is not set ++# CONFIG_SENSORS_ADT7475 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_G760A 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_LM73 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_LTC4215 is not set ++# CONFIG_SENSORS_LTC4245 is not set ++# CONFIG_SENSORS_LM95241 is not set ++# CONFIG_SENSORS_MAX1111 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_PCF8591 is not set ++# CONFIG_SENSORS_SHT15 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_TMP401 is not set ++# CONFIG_SENSORS_TMP421 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_LIS3_SPI is not set ++CONFIG_THERMAL=y ++CONFIG_THERMAL_HWMON=y ++CONFIG_WATCHDOG=y ++CONFIG_WATCHDOG_NOWAYOUT=y ++ ++# ++# Watchdog Device Drivers ++# ++# CONFIG_SOFT_WATCHDOG is not set ++CONFIG_OMAP_WATCHDOG=y ++# CONFIG_TWL4030_WATCHDOG is not set ++ ++# ++# USB-based Watchdog Cards ++# ++# CONFIG_USBPCWATCHDOG is not set ++CONFIG_SSB_POSSIBLE=y + + # + # Sonics Silicon Backplane + # +-CONFIG_SSB_POSSIBLE=y +-# CONFIG_SSB is not set ++CONFIG_SSB=y ++CONFIG_SSB_SDIOHOST_POSSIBLE=y ++# CONFIG_SSB_SDIOHOST is not set ++# CONFIG_SSB_SILENT is not set ++# CONFIG_SSB_DEBUG is not set + + # + # Multifunction device drivers + # +-# CONFIG_MFD_CORE is not set ++CONFIG_MFD_CORE=y + # CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_ASIC3 is not set + # CONFIG_HTC_EGPIO is not set + # CONFIG_HTC_PASIC3 is not set ++# CONFIG_TPS65010 is not set + CONFIG_TWL4030_CORE=y +-# CONFIG_UCB1400_CORE is not set ++CONFIG_TWL4030_POWER=y ++CONFIG_TWL4030_CODEC=y ++# CONFIG_TWL4030_MADC is not set + # CONFIG_MFD_TMIO is not set + # CONFIG_MFD_T7L66XB is not set + # CONFIG_MFD_TC6387XB is not set + # CONFIG_MFD_TC6393XB is not set +- +-# +-# Multimedia devices +-# ++# CONFIG_PMIC_DA903X is not set ++# CONFIG_PMIC_ADP5520 is not set ++# CONFIG_MFD_WM8400 is not set ++# CONFIG_MFD_WM831X is not set ++# CONFIG_MFD_WM8350_I2C is not set ++# CONFIG_MFD_PCF50633 is not set ++# CONFIG_MFD_MC13783 is not set ++# CONFIG_AB3100_CORE is not set ++# CONFIG_EZX_PCAP is not set ++# CONFIG_MFD_88PM8607 is not set ++# CONFIG_AB4500_CORE is not set ++CONFIG_REGULATOR=y ++# CONFIG_REGULATOR_DEBUG is not set ++# CONFIG_REGULATOR_FIXED_VOLTAGE is not set ++# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set ++# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set ++# CONFIG_REGULATOR_BQ24022 is not set ++# CONFIG_REGULATOR_MAX1586 is not set ++CONFIG_REGULATOR_TWL4030=y ++# CONFIG_REGULATOR_LP3971 is not set ++# CONFIG_REGULATOR_TPS65023 is not set ++# CONFIG_REGULATOR_TPS6507X is not set ++CONFIG_MEDIA_SUPPORT=y + + # + # Multimedia core support + # +-# CONFIG_VIDEO_DEV is not set +-# CONFIG_DVB_CORE is not set +-# CONFIG_VIDEO_MEDIA is not set ++CONFIG_VIDEO_DEV=y ++CONFIG_VIDEO_V4L2_COMMON=y ++CONFIG_VIDEO_ALLOW_V4L1=y ++CONFIG_VIDEO_V4L1_COMPAT=y ++CONFIG_DVB_CORE=m ++CONFIG_VIDEO_MEDIA=m + + # + # Multimedia drivers + # +-CONFIG_DAB=y +-# CONFIG_USB_DABUSB is not set ++CONFIG_MEDIA_ATTACH=y ++CONFIG_MEDIA_TUNER=m ++CONFIG_MEDIA_TUNER_CUSTOMISE=y ++CONFIG_MEDIA_TUNER_SIMPLE=m ++CONFIG_MEDIA_TUNER_TDA8290=m ++CONFIG_MEDIA_TUNER_TDA827X=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_MT2131=m ++CONFIG_MEDIA_TUNER_QT1010=m ++CONFIG_MEDIA_TUNER_XC2028=m ++CONFIG_MEDIA_TUNER_XC5000=m ++CONFIG_MEDIA_TUNER_MXL5005S=m ++CONFIG_MEDIA_TUNER_MXL5007T=m ++CONFIG_MEDIA_TUNER_MC44S803=m ++CONFIG_MEDIA_TUNER_MAX2165=m ++CONFIG_VIDEO_V4L2=y ++CONFIG_VIDEO_V4L1=y ++CONFIG_VIDEOBUF_GEN=y ++CONFIG_VIDEOBUF_DMA_SG=y ++CONFIG_VIDEOBUF_VMALLOC=m ++CONFIG_VIDEOBUF_DMA_CONTIG=y ++CONFIG_VIDEOBUF_DVB=m ++CONFIG_VIDEO_IR=m ++CONFIG_VIDEO_TVEEPROM=m ++CONFIG_VIDEO_TUNER=m ++CONFIG_VIDEO_CAPTURE_DRIVERS=y ++# CONFIG_VIDEO_ADV_DEBUG is not set ++# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set ++# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set ++CONFIG_VIDEO_IR_I2C=m ++ ++# ++# Encoders/decoders and other helper chips ++# ++ ++# ++# Audio decoders ++# ++# CONFIG_VIDEO_TVAUDIO is not set ++# CONFIG_VIDEO_TDA7432 is not set ++# CONFIG_VIDEO_TDA9840 is not set ++# CONFIG_VIDEO_TDA9875 is not set ++# CONFIG_VIDEO_TEA6415C is not set ++# CONFIG_VIDEO_TEA6420 is not set ++CONFIG_VIDEO_MSP3400=m ++# CONFIG_VIDEO_CS5345 is not set ++CONFIG_VIDEO_CS53L32A=m ++# CONFIG_VIDEO_M52790 is not set ++# CONFIG_VIDEO_TLV320AIC23B is not set ++CONFIG_VIDEO_WM8775=m ++# CONFIG_VIDEO_WM8739 is not set ++# CONFIG_VIDEO_VP27SMPX is not set ++ ++# ++# RDS decoders ++# ++# CONFIG_VIDEO_SAA6588 is not set ++ ++# ++# Video decoders ++# ++# CONFIG_VIDEO_ADV7180 is not set ++# CONFIG_VIDEO_BT819 is not set ++# CONFIG_VIDEO_BT856 is not set ++# CONFIG_VIDEO_BT866 is not set ++# CONFIG_VIDEO_KS0127 is not set ++# CONFIG_VIDEO_OV7670 is not set ++CONFIG_VIDEO_MT9V011=m ++# CONFIG_VIDEO_TCM825X is not set ++CONFIG_VIDEO_MT9P012=m ++# CONFIG_VIDEO_MT9T111 is not set ++# CONFIG_VIDEO_DW9710 is not set ++# CONFIG_VIDEO_OV3640 is not set ++# CONFIG_VIDEO_IMX046 is not set ++# CONFIG_VIDEO_LV8093 is not set ++# CONFIG_VIDEO_SAA7110 is not set ++CONFIG_VIDEO_SAA711X=m ++# CONFIG_VIDEO_SAA717X is not set ++# CONFIG_VIDEO_SAA7191 is not set ++# CONFIG_VIDEO_TVP514X is not set ++# CONFIG_VIDEO_TVP5150 is not set ++# CONFIG_VIDEO_VPX3220 is not set ++ ++# ++# Video and audio decoders ++# ++CONFIG_VIDEO_CX25840=m ++ ++# ++# MPEG video encoders ++# ++CONFIG_VIDEO_CX2341X=m ++ ++# ++# Video encoders ++# ++# CONFIG_VIDEO_SAA7127 is not set ++# CONFIG_VIDEO_SAA7185 is not set ++# CONFIG_VIDEO_ADV7170 is not set ++# CONFIG_VIDEO_ADV7175 is not set ++# CONFIG_VIDEO_THS7303 is not set ++# CONFIG_VIDEO_ADV7343 is not set ++ ++# ++# Video improvement chips ++# ++# CONFIG_VIDEO_UPD64031A is not set ++# CONFIG_VIDEO_UPD64083 is not set ++CONFIG_VIDEO_VIVI=m ++# 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_VIDEO_AU0828 is not set ++CONFIG_TI_MEDIA=y ++CONFIG_VIDEO_VPSS_SYSTEM=y ++CONFIG_VIDEO_VPFE_CAPTURE=y ++# CONFIG_VIDEO_DM6446_CCDC is not set ++# CONFIG_VIDEO_DM355_CCDC is not set ++CONFIG_VIDEO_OMAP2_VOUT=y ++CONFIG_VIDEO_OMAP3=y ++CONFIG_VIDEO_OMAP3_ISP=y ++CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER=y ++CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=y ++# CONFIG_SOC_CAMERA is not set ++CONFIG_V4L_USB_DRIVERS=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y ++CONFIG_USB_GSPCA=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++# CONFIG_USB_GL860 is not set ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++# CONFIG_USB_GSPCA_JEILINJ is not set ++CONFIG_USB_GSPCA_MARS=m ++# CONFIG_USB_GSPCA_MR97310A is not set ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_PAC207=m ++# CONFIG_USB_GSPCA_PAC7302 is not set ++CONFIG_USB_GSPCA_PAC7311=m ++# CONFIG_USB_GSPCA_SN9C20X is not set ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++# CONFIG_USB_GSPCA_SQ905 is not set ++# CONFIG_USB_GSPCA_SQ905C is not set ++CONFIG_USB_GSPCA_STK014=m ++# CONFIG_USB_GSPCA_STV0680 is not set ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_PVRUSB2_SYSFS=y ++CONFIG_VIDEO_PVRUSB2_DVB=y ++# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_VIDEO_CX231XX=m ++# CONFIG_VIDEO_CX231XX_ALSA is not set ++CONFIG_VIDEO_CX231XX_DVB=m ++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=m ++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=m ++CONFIG_USB_PWC=m ++# CONFIG_USB_PWC_DEBUG is not set ++CONFIG_USB_PWC_INPUT_EVDEV=y ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_RADIO_ADAPTERS=y ++# CONFIG_I2C_SI4713 is not set ++# CONFIG_RADIO_SI4713 is not set ++# CONFIG_USB_DSBR is not set ++# CONFIG_RADIO_SI470X is not set ++# CONFIG_USB_MR800 is not set ++# CONFIG_RADIO_TEA5764 is not set ++# CONFIG_RADIO_TEF6862 is not set ++CONFIG_DVB_MAX_ADAPTERS=8 ++CONFIG_DVB_DYNAMIC_MINORS=y ++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_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_AF9015=m ++# CONFIG_DVB_USB_CE6230 is not set ++# CONFIG_DVB_USB_FRIIO is not set ++# CONFIG_DVB_USB_EC168 is not set ++# CONFIG_SMS_SIANO_MDTV is not set ++ ++# ++# Supported FlexCopII (B2C2) Adapters ++# ++CONFIG_DVB_B2C2_FLEXCOP=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set ++ ++# ++# Supported DVB Frontends ++# ++# CONFIG_DVB_FE_CUSTOMISE is not set ++CONFIG_DVB_CX24123=m ++CONFIG_DVB_MT312=m ++CONFIG_DVB_ZL10039=m ++CONFIG_DVB_S5H1420=m ++CONFIG_DVB_STV0288=m ++CONFIG_DVB_STB6000=m ++CONFIG_DVB_STV0299=m ++CONFIG_DVB_TDA10086=m ++CONFIG_DVB_TUNER_ITD1000=m ++CONFIG_DVB_TUNER_CX24113=m ++CONFIG_DVB_TDA826X=m ++CONFIG_DVB_CX24116=m ++CONFIG_DVB_SI21XX=m ++CONFIG_DVB_CX22702=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 ++CONFIG_DVB_AF9013=m ++CONFIG_DVB_TDA10021=m ++CONFIG_DVB_TDA10023=m ++CONFIG_DVB_STV0297=m ++CONFIG_DVB_NXT200X=m ++CONFIG_DVB_BCM3510=m ++CONFIG_DVB_LGDT330X=m ++CONFIG_DVB_LGDT3305=m ++CONFIG_DVB_S5H1409=m ++CONFIG_DVB_S5H1411=m ++CONFIG_DVB_DIB8000=m ++CONFIG_DVB_PLL=m ++CONFIG_DVB_TUNER_DIB0070=m ++CONFIG_DVB_LNBP21=m ++CONFIG_DVB_ISL6421=m ++CONFIG_DVB_LGS8GL5=m ++# CONFIG_DAB is not set + + # + # Graphics support +@@ -781,6 +1967,7 @@ CONFIG_DAB=y + CONFIG_FB=y + # CONFIG_FIRMWARE_EDID is not set + # CONFIG_FB_DDC is not set ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set + CONFIG_FB_CFB_FILLRECT=y + CONFIG_FB_CFB_COPYAREA=y + CONFIG_FB_CFB_IMAGEBLIT=y +@@ -793,24 +1980,57 @@ CONFIG_FB_CFB_IMAGEBLIT=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_MODE_HELPERS=y + # CONFIG_FB_TILEBLITTING is not set + + # + # Frame buffer hardware drivers + # + # CONFIG_FB_S1D13XXX is not set ++# CONFIG_FB_TMIO is not set + # CONFIG_FB_VIRTUAL is not set +-CONFIG_FB_OMAP=y +-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set ++# CONFIG_FB_METRONOME is not set ++# CONFIG_FB_MB862XX is not set ++# CONFIG_FB_BROADSHEET is not set + # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set +-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2 ++CONFIG_OMAP2_VRAM=y ++CONFIG_OMAP2_VRFB=y ++CONFIG_OMAP2_DSS=y ++CONFIG_OMAP2_VRAM_SIZE=14 ++CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y ++# CONFIG_OMAP2_DSS_RFBI is not set ++CONFIG_OMAP2_DSS_VENC=y ++CONFIG_OMAP2_VENC_OUT_TYPE_SVIDEO=y ++# CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE is not set ++# CONFIG_OMAP2_DSS_SDI is not set ++CONFIG_OMAP2_DSS_DSI=y ++CONFIG_OMAP2_DSS_USE_DSI_PLL=y ++# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set ++CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 ++CONFIG_FB_OMAP2=y ++CONFIG_FB_OMAP2_DEBUG_SUPPORT=y ++# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set ++CONFIG_FB_OMAP2_NUM_FBS=3 ++ ++# ++# OMAP2/3 Display Device Drivers ++# ++CONFIG_PANEL_GENERIC=y ++# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set ++# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set ++CONFIG_PANEL_SHARP_LS037V7DW01=y ++# CONFIG_PANEL_SHARP_LQ043T1DG01 is not set ++# CONFIG_PANEL_TAAL is not set + # CONFIG_BACKLIGHT_LCD_SUPPORT is not set + + # + # Display device support + # +-# CONFIG_DISPLAY_SUPPORT is not set ++CONFIG_DISPLAY_SUPPORT=y ++ ++# ++# Display hardware drivers ++# + + # + # Console display driver support +@@ -820,31 +2040,113 @@ 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_FONTS is not set + CONFIG_FONT_8x8=y + 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 is not set +-# CONFIG_HID_SUPPORT is not set ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_LOGO_LINUX_CLUT224=y ++CONFIG_SOUND=y ++CONFIG_SOUND_OSS_CORE=y ++CONFIG_SOUND_OSS_CORE_PRECLAIM=y ++CONFIG_SND=y ++CONFIG_SND_TIMER=y ++CONFIG_SND_PCM=y ++CONFIG_SND_HWDEP=y ++CONFIG_SND_RAWMIDI=y ++CONFIG_SND_JACK=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_HRTIMER=m ++CONFIG_SND_SEQ_HRTIMER_DEFAULT=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 ++CONFIG_SND_RAWMIDI_SEQ=m ++# CONFIG_SND_OPL3_LIB_SEQ is not set ++# CONFIG_SND_OPL4_LIB_SEQ is not set ++# CONFIG_SND_SBAWE_SEQ is not set ++# CONFIG_SND_EMU10K1_SEQ is not set ++CONFIG_SND_DRIVERS=y ++# 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 ++# CONFIG_SND_ARM is not set ++CONFIG_SND_SPI=y ++CONFIG_SND_USB=y ++CONFIG_SND_USB_AUDIO=y ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_SOC=y ++CONFIG_SND_OMAP_SOC=y ++CONFIG_SND_OMAP_SOC_MCBSP=y ++# CONFIG_SND_OMAP_SOC_OMAP3EVM is not set ++CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y ++CONFIG_SND_SOC_I2C_AND_SPI=y ++# CONFIG_SND_SOC_ALL_CODECS is not set ++CONFIG_SND_SOC_TWL4030=y ++# CONFIG_SOUND_PRIME is not set ++CONFIG_HID_SUPPORT=y ++CONFIG_HID=y ++# CONFIG_HIDRAW is not set ++ ++# ++# USB Input Devices ++# ++CONFIG_USB_HID=y ++# CONFIG_HID_PID is not set ++# CONFIG_USB_HIDDEV is not set ++ ++# ++# Special HID drivers ++# ++CONFIG_HID_A4TECH=y ++CONFIG_HID_APPLE=y ++CONFIG_HID_BELKIN=y ++CONFIG_HID_CHERRY=y ++CONFIG_HID_CHICONY=y ++CONFIG_HID_CYPRESS=y ++# CONFIG_HID_DRAGONRISE is not set ++CONFIG_HID_EZKEY=y ++# CONFIG_HID_KYE is not set ++CONFIG_HID_GYRATION=y ++# CONFIG_HID_TWINHAN is not set ++# CONFIG_HID_KENSINGTON is not set ++CONFIG_HID_LOGITECH=y ++# CONFIG_LOGITECH_FF is not set ++# CONFIG_LOGIRUMBLEPAD2_FF is not set ++CONFIG_HID_MICROSOFT=y ++CONFIG_HID_MONTEREY=y ++CONFIG_HID_NTRIG=y ++CONFIG_HID_PANTHERLORD=y ++# CONFIG_PANTHERLORD_FF is not set ++CONFIG_HID_PETALYNX=y ++CONFIG_HID_SAMSUNG=y ++CONFIG_HID_SONY=y ++CONFIG_HID_SUNPLUS=y ++# CONFIG_HID_GREENASIA is not set ++# CONFIG_HID_SMARTJOYPLUS is not set ++CONFIG_HID_TOPSEED=y ++# CONFIG_HID_THRUSTMASTER is not set ++# CONFIG_HID_WACOM is not set ++# CONFIG_HID_ZEROPLUS 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 ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + # + # Miscellaneous USB options +@@ -857,18 +2159,25 @@ CONFIG_USB_OTG=y + # CONFIG_USB_OTG_WHITELIST is not set + # CONFIG_USB_OTG_BLACKLIST_HUB is not set + CONFIG_USB_MON=y ++# CONFIG_USB_WUSB is not set ++# CONFIG_USB_WUSB_CBAF is not set + + # + # USB Host Controller Drivers + # +-CONFIG_USB_EHCI_HCD=y +-CONFIG_USB_EHCI_ROOT_HUB_TT=y + # CONFIG_USB_C67X00_HCD is not set ++CONFIG_USB_EHCI_HCD=y ++# CONFIG_USB_EHCI_ROOT_HUB_TT is not set ++CONFIG_USB_EHCI_TT_NEWSCHED=y ++# CONFIG_USB_OXU210HP_HCD is not set + # CONFIG_USB_ISP116X_HCD is not set + # CONFIG_USB_ISP1760_HCD is not set ++# CONFIG_USB_ISP1362_HCD is not set + # CONFIG_USB_OHCI_HCD is not set ++# CONFIG_USB_U132_HCD is not set + # CONFIG_USB_SL811_HCD is not set + # CONFIG_USB_R8A66597_HCD is not set ++# CONFIG_USB_HWA_HCD is not set + CONFIG_USB_MUSB_HDRC=y + CONFIG_USB_MUSB_SOC=y + +@@ -882,24 +2191,39 @@ 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_TI_CPPI41_DMA is not set + # CONFIG_USB_MUSB_DEBUG is not set + + # + # USB Device Class drivers + # +-# CONFIG_USB_ACM is not set +-# CONFIG_USB_PRINTER is not set +-# CONFIG_USB_WDM is not set ++CONFIG_USB_ACM=m ++CONFIG_USB_PRINTER=m ++CONFIG_USB_WDM=m ++CONFIG_USB_TMC=m + + # +-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may + # + + # +-# may also be needed; see USB_STORAGE Help for more information ++# also be needed; see USB_STORAGE Help for more info + # +-# CONFIG_USB_STORAGE is not set ++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_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 + + # +@@ -911,92 +2235,200 @@ CONFIG_USB_INVENTRA_DMA=y + # + # USB port drivers + # +-# CONFIG_USB_SERIAL is not set ++CONFIG_USB_SERIAL=m ++CONFIG_USB_EZUSB=y ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=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_CP210X is not set ++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_QUALCOMM is not set ++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_SIEMENS_MPI=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++# CONFIG_USB_SERIAL_SYMBOL is not set ++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_OPTICON=m ++CONFIG_USB_SERIAL_DEBUG=m + + # + # USB Miscellaneous drivers + # +-# CONFIG_USB_EMI62 is not set +-# CONFIG_USB_EMI26 is not set ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m + # CONFIG_USB_ADUTUX is not set ++# CONFIG_USB_SEVSEG 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_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_BERRY_CHARGE=m ++CONFIG_USB_LED=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m + # CONFIG_USB_APPLEDISPLAY is not set +-# CONFIG_USB_LD is not set +-# CONFIG_USB_TRANCEVIBRATOR is not set ++CONFIG_USB_SISUSBVGA=m ++CONFIG_USB_SISUSBVGA_CON=y ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m + # CONFIG_USB_IOWARRIOR is not set +-# CONFIG_USB_TEST is not set ++CONFIG_USB_TEST=m + # CONFIG_USB_ISIGHTFW is not set ++CONFIG_USB_VST=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m + CONFIG_USB_GADGET=y + # CONFIG_USB_GADGET_DEBUG is not set + # CONFIG_USB_GADGET_DEBUG_FILES is not set ++CONFIG_USB_GADGET_DEBUG_FS=y ++CONFIG_USB_GADGET_VBUS_DRAW=2 + CONFIG_USB_GADGET_SELECTED=y +-# CONFIG_USB_GADGET_AMD5536UDC is not set ++# CONFIG_USB_GADGET_AT91 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_PXA25X is not set +-# CONFIG_USB_GADGET_M66592 is not set +-# CONFIG_USB_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_PXA25X is not set ++# CONFIG_USB_GADGET_R8A66597 is not set ++# CONFIG_USB_GADGET_PXA27X is not set ++# CONFIG_USB_GADGET_S3C_HSOTG is not set ++# CONFIG_USB_GADGET_IMX is not set + # CONFIG_USB_GADGET_S3C2410 is not set +-# CONFIG_USB_GADGET_AT91 is not set ++# CONFIG_USB_GADGET_M66592 is not set ++# CONFIG_USB_GADGET_AMD5536UDC is not set ++# CONFIG_USB_GADGET_FSL_QE is not set ++# CONFIG_USB_GADGET_CI13XXX is not set ++# CONFIG_USB_GADGET_NET2280 is not set ++# CONFIG_USB_GADGET_GOKU is not set ++# CONFIG_USB_GADGET_LANGWELL is not set + # CONFIG_USB_GADGET_DUMMY_HCD is not set + CONFIG_USB_GADGET_DUALSPEED=y +-# CONFIG_USB_ZERO is not set ++CONFIG_USB_ZERO=m ++CONFIG_USB_ZERO_HNPTEST=y ++# CONFIG_USB_AUDIO is not set + CONFIG_USB_ETH=m + 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_USB_CDC_COMPOSITE is not set ++# CONFIG_USB_ETH_EEM is not set ++CONFIG_USB_GADGETFS=m ++CONFIG_USB_FILE_STORAGE=m ++# CONFIG_USB_FILE_STORAGE_TEST is not set ++# CONFIG_USB_MASS_STORAGE is not set ++CONFIG_USB_G_SERIAL=m ++CONFIG_USB_MIDI_GADGET=m ++CONFIG_USB_G_PRINTER=m ++CONFIG_USB_CDC_COMPOSITE=m ++# CONFIG_USB_G_MULTI is not set + + # + # OTG and related infrastructure + # + CONFIG_USB_OTG_UTILS=y +-# CONFIG_USB_GPIO_VBUS is not set ++CONFIG_USB_GPIO_VBUS=y ++# CONFIG_ISP1301_OMAP is not set ++# CONFIG_USB_ULPI is not set + CONFIG_TWL4030_USB=y +-# CONFIG_NOP_USB_XCEIV is not set ++CONFIG_NOP_USB_XCEIV=y + CONFIG_MMC=y + # CONFIG_MMC_DEBUG is not set +-# CONFIG_MMC_UNSAFE_RESUME is not set ++CONFIG_MMC_UNSAFE_RESUME=y + + # +-# MMC/SD Card Drivers ++# MMC/SD/SDIO Card Drivers + # + CONFIG_MMC_BLOCK=y + CONFIG_MMC_BLOCK_BOUNCE=y +-# CONFIG_SDIO_UART is not set ++CONFIG_SDIO_UART=y + # CONFIG_MMC_TEST is not set + + # +-# MMC/SD Host Controller Drivers ++# MMC/SD/SDIO Host Controller Drivers + # + # CONFIG_MMC_SDHCI is not set + # CONFIG_MMC_OMAP is not set + CONFIG_MMC_OMAP_HS=y ++# CONFIG_MMC_AT91 is not set ++# CONFIG_MMC_ATMELMCI is not set ++CONFIG_MMC_SPI=m + # CONFIG_MEMSTICK is not set ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=y ++ ++# ++# LED drivers ++# ++# CONFIG_LEDS_PCA9532 is not set ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_GPIO_PLATFORM=y ++# CONFIG_LEDS_LP3944 is not set ++# CONFIG_LEDS_PCA955X is not set ++# CONFIG_LEDS_DAC124S085 is not set ++# CONFIG_LEDS_BD2802 is not set ++ ++# ++# LED Triggers ++# ++CONFIG_LEDS_TRIGGERS=y ++CONFIG_LEDS_TRIGGER_TIMER=m ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=m ++# CONFIG_LEDS_TRIGGER_GPIO is not set ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=m ++ ++# ++# iptables trigger is under Netfilter config (LED target) ++# + # CONFIG_ACCESSIBILITY 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 ++CONFIG_RTC_CLASS=m + + # + # RTC interfaces +@@ -1020,73 +2452,178 @@ CONFIG_RTC_INTF_DEV=y + # 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=m + # CONFIG_RTC_DRV_S35390A is not set + # CONFIG_RTC_DRV_FM3130 is not set ++# CONFIG_RTC_DRV_RX8581 is not set ++# CONFIG_RTC_DRV_RX8025 is not set + + # + # SPI RTC drivers + # ++# CONFIG_RTC_DRV_M41T94 is not set ++# CONFIG_RTC_DRV_DS1305 is not set ++# CONFIG_RTC_DRV_DS1390 is not set ++# CONFIG_RTC_DRV_MAX6902 is not set ++# CONFIG_RTC_DRV_R9701 is not set ++# CONFIG_RTC_DRV_RS5C348 is not set ++# CONFIG_RTC_DRV_DS3234 is not set ++# CONFIG_RTC_DRV_PCF2123 is not set + + # + # Platform RTC drivers + # + # CONFIG_RTC_DRV_CMOS is not set ++# CONFIG_RTC_DRV_DS1286 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_M48T35 is not set + # CONFIG_RTC_DRV_M48T59 is not set ++# CONFIG_RTC_DRV_MSM6242 is not set ++# CONFIG_RTC_DRV_BQ4802 is not set ++# CONFIG_RTC_DRV_RP5C01 is not set + # CONFIG_RTC_DRV_V3020 is not set + + # + # on-CPU RTC drivers + # + # CONFIG_DMADEVICES is not set ++# CONFIG_AUXDISPLAY is not set ++CONFIG_UIO=m ++CONFIG_UIO_PDRV=m ++CONFIG_UIO_PDRV_GENIRQ=m ++# CONFIG_UIO_SMX is not set ++# CONFIG_UIO_SERCOS3 is not set + + # +-# Voltage and Current regulators ++# TI VLYNQ + # +-CONFIG_REGULATOR=y +-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +-# CONFIG_REGULATOR_BQ24022 is not set +-CONFIG_REGULATOR_TWL4030=y +-# CONFIG_UIO is not set ++CONFIG_STAGING=y ++# CONFIG_STAGING_EXCLUDE_BUILD is not set ++# CONFIG_USB_IP_COMMON is not set ++CONFIG_W35UND=m ++# CONFIG_PRISM2_USB is not set ++CONFIG_ECHO=m ++CONFIG_OTUS=m ++# CONFIG_COMEDI is not set ++# CONFIG_ASUS_OLED is not set ++# CONFIG_INPUT_MIMIO is not set ++# CONFIG_TRANZPORT is not set ++ ++# ++# Qualcomm MSM Camera And Video ++# ++ ++# ++# Camera Sensor Selection ++# ++# CONFIG_INPUT_GPIO is not set ++# CONFIG_DST is not set ++# CONFIG_POHMELFS is not set ++# CONFIG_PLAN9AUTH is not set ++# CONFIG_LINE6_USB is not set ++# CONFIG_USB_SERIAL_QUATECH2 is not set ++# CONFIG_USB_SERIAL_QUATECH_USB2 is not set ++# CONFIG_VT6656 is not set ++# CONFIG_FB_UDL is not set ++ ++# ++# RAR Register Driver ++# ++# CONFIG_RAR_REGISTER is not set ++# CONFIG_IIO is not set ++# CONFIG_RAMZSWAP is not set ++# CONFIG_BATMAN_ADV is not set ++# CONFIG_STRIP is not set ++ ++# ++# CBUS support ++# ++# CONFIG_CBUS is not set + + # + # File systems + # ++CONFIG_FS_JOURNAL_INFO=y + CONFIG_EXT2_FS=y + # CONFIG_EXT2_FS_XATTR is not set + # CONFIG_EXT2_FS_XIP is not set + CONFIG_EXT3_FS=y ++# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set + # CONFIG_EXT3_FS_XATTR is not set +-# CONFIG_EXT4DEV_FS is not set ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_XATTR=y ++# CONFIG_EXT4_FS_POSIX_ACL is not set ++# CONFIG_EXT4_FS_SECURITY is not set ++# CONFIG_EXT4_DEBUG is not set + CONFIG_JBD=y +-# 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_OCFS2_FS is not set ++# CONFIG_JBD_DEBUG is not set ++CONFIG_JBD2=y ++# CONFIG_JBD2_DEBUG is not set ++CONFIG_FS_MBCACHE=y ++CONFIG_REISERFS_FS=m ++# CONFIG_REISERFS_CHECK is not set ++CONFIG_REISERFS_PROC_INFO=y ++CONFIG_REISERFS_FS_XATTR=y ++# CONFIG_REISERFS_FS_POSIX_ACL is not set ++# CONFIG_REISERFS_FS_SECURITY is not set ++CONFIG_JFS_FS=m ++# CONFIG_JFS_POSIX_ACL is not set ++# CONFIG_JFS_SECURITY is not set ++# CONFIG_JFS_DEBUG is not set ++# CONFIG_JFS_STATISTICS 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=m ++# CONFIG_GFS2_FS_LOCKING_DLM is not set ++CONFIG_OCFS2_FS=m ++CONFIG_OCFS2_FS_O2CB=m ++CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m ++CONFIG_OCFS2_FS_STATS=y ++CONFIG_OCFS2_DEBUG_MASKLOG=y ++# CONFIG_OCFS2_DEBUG_FS is not set ++# CONFIG_OCFS2_FS_POSIX_ACL is not set ++CONFIG_BTRFS_FS=m ++# CONFIG_BTRFS_FS_POSIX_ACL is not set ++# CONFIG_NILFS2_FS is not set ++CONFIG_FILE_LOCKING=y ++CONFIG_FSNOTIFY=y + 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_QUOTA_TREE=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 ++CONFIG_AUTOFS4_FS=m ++CONFIG_FUSE_FS=m ++# CONFIG_CUSE is not set ++CONFIG_GENERIC_ACL=y ++ ++# ++# Caches ++# ++# CONFIG_FSCACHE is not set + + # + # CD-ROM/DVD Filesystems + # +-# CONFIG_ISO9660_FS is not set +-# CONFIG_UDF_FS is not set ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_UDF_NLS=y + + # + # DOS/FAT/NT Filesystems +@@ -1096,68 +2633,118 @@ 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 ++CONFIG_NTFS_FS=m ++# CONFIG_NTFS_DEBUG is not set ++CONFIG_NTFS_RW=y + + # + # Pseudo filesystems + # + CONFIG_PROC_FS=y + CONFIG_PROC_SYSCTL=y ++CONFIG_PROC_PAGE_MONITOR=y + CONFIG_SYSFS=y + CONFIG_TMPFS=y +-# CONFIG_TMPFS_POSIX_ACL is not set ++CONFIG_TMPFS_POSIX_ACL=y + # 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_CONFIGFS_FS=m ++CONFIG_MISC_FILESYSTEMS=y ++CONFIG_ADFS_FS=m ++# CONFIG_ADFS_FS_RW is not set ++CONFIG_AFFS_FS=m ++# CONFIG_ECRYPT_FS is not set ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_BEFS_FS=m ++# CONFIG_BEFS_DEBUG is not set ++CONFIG_BFS_FS=m ++CONFIG_EFS_FS=m + 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 is not set +-# CONFIG_JFFS2_FS_XATTR is not set +-# CONFIG_JFFS2_COMPRESSION_OPTIONS 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 is not set ++CONFIG_JFFS2_LZO=y + CONFIG_JFFS2_RTIME=y +-# CONFIG_JFFS2_RUBIN is not set +-# CONFIG_CRAMFS is not set +-# CONFIG_VXFS_FS is not set +-# CONFIG_MINIX_FS is not set +-# CONFIG_OMFS_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_JFFS2_RUBIN=y ++# CONFIG_JFFS2_CMODE_NONE is not set ++# CONFIG_JFFS2_CMODE_PRIORITY is not set ++# CONFIG_JFFS2_CMODE_SIZE is not set ++CONFIG_JFFS2_CMODE_FAVOURLZO=y ++CONFIG_UBIFS_FS=y ++CONFIG_UBIFS_FS_XATTR=y ++CONFIG_UBIFS_FS_ADVANCED_COMPR=y ++CONFIG_UBIFS_FS_LZO=y ++CONFIG_UBIFS_FS_ZLIB=y ++# CONFIG_UBIFS_FS_DEBUG is not set ++CONFIG_CRAMFS=m ++CONFIG_SQUASHFS=y ++# CONFIG_SQUASHFS_EMBEDDED is not set ++CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 ++CONFIG_VXFS_FS=m ++CONFIG_MINIX_FS=m ++CONFIG_OMFS_FS=m ++CONFIG_HPFS_FS=m ++CONFIG_QNX4FS_FS=m ++CONFIG_ROMFS_FS=m ++CONFIG_ROMFS_BACKED_BY_BLOCK=y ++# CONFIG_ROMFS_BACKED_BY_MTD is not set ++# CONFIG_ROMFS_BACKED_BY_BOTH is not set ++CONFIG_ROMFS_ON_BLOCK=y ++CONFIG_SYSV_FS=m ++CONFIG_UFS_FS=m ++# CONFIG_UFS_FS_WRITE is not set ++# CONFIG_UFS_DEBUG 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_NFS_V4_1 is not set + CONFIG_ROOT_NFS=y +-# CONFIG_NFSD is not set ++CONFIG_NFSD=m ++CONFIG_NFSD_V2_ACL=y ++CONFIG_NFSD_V3=y ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y + CONFIG_LOCKD=y + CONFIG_LOCKD_V4=y ++CONFIG_EXPORTFS=m ++CONFIG_NFS_ACL_SUPPORT=m + CONFIG_NFS_COMMON=y + CONFIG_SUNRPC=y + CONFIG_SUNRPC_GSS=y + 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 ++CONFIG_SMB_FS=m ++# CONFIG_SMB_NLS_DEFAULT is not set ++CONFIG_CIFS=m ++CONFIG_CIFS_STATS=y ++CONFIG_CIFS_STATS2=y ++# CONFIG_CIFS_WEAK_PW_HASH is not set ++# CONFIG_CIFS_UPCALL is not set ++# CONFIG_CIFS_XATTR is not set ++# CONFIG_CIFS_DEBUG2 is not set ++# CONFIG_CIFS_DFS_UPCALL is not set ++CONFIG_CIFS_EXPERIMENTAL=y ++CONFIG_NCP_FS=m ++# CONFIG_NCPFS_PACKET_SIGNING is not set ++# CONFIG_NCPFS_IOCTL_LOCKING is not set ++# CONFIG_NCPFS_STRONG is not set ++# CONFIG_NCPFS_NFS_NS is not set ++# CONFIG_NCPFS_OS2_NS is not set ++# CONFIG_NCPFS_SMALLDOS is not set ++# CONFIG_NCPFS_NLS is not set ++# CONFIG_NCPFS_EXTRAS is not set ++CONFIG_CODA_FS=m ++CONFIG_AFS_FS=m ++# CONFIG_AFS_DEBUG is not set ++CONFIG_9P_FS=m + + # + # Partition Types +@@ -1167,82 +2754,90 @@ CONFIG_PARTITION_ADVANCED=y + # 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_MAC_PARTITION=y + CONFIG_MSDOS_PARTITION=y +-# CONFIG_BSD_DISKLABEL is not set +-# CONFIG_MINIX_SUBPARTITION is not set +-# CONFIG_SOLARIS_X86_PARTITION is not set ++CONFIG_BSD_DISKLABEL=y ++CONFIG_MINIX_SUBPARTITION=y ++CONFIG_SOLARIS_X86_PARTITION=y + # CONFIG_UNIXWARE_DISKLABEL is not set +-# CONFIG_LDM_PARTITION is not set ++CONFIG_LDM_PARTITION=y ++CONFIG_LDM_DEBUG=y + # 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_EFI_PARTITION=y + # 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_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=m + 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 ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_NLS_UTF8=y ++CONFIG_DLM=m ++# CONFIG_DLM_DEBUG is not set + + # + # Kernel hacking + # +-# CONFIG_PRINTK_TIME is not set ++CONFIG_PRINTK_TIME=y + CONFIG_ENABLE_WARN_DEPRECATED=y + CONFIG_ENABLE_MUST_CHECK=y + CONFIG_FRAME_WARN=1024 + CONFIG_MAGIC_SYSRQ=y ++# CONFIG_STRIP_ASM_SYMS is not set + # CONFIG_UNUSED_SYMBOLS is not set +-# CONFIG_DEBUG_FS is not set ++CONFIG_DEBUG_FS=y + # CONFIG_HEADERS_CHECK is not set + CONFIG_DEBUG_KERNEL=y + # CONFIG_DEBUG_SHIRQ is not set + CONFIG_DETECT_SOFTLOCKUP=y + # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set + CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 ++CONFIG_DETECT_HUNG_TASK=y ++# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set ++CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 + CONFIG_SCHED_DEBUG=y +-# CONFIG_SCHEDSTATS is not set +-# CONFIG_TIMER_STATS is not set ++CONFIG_SCHEDSTATS=y ++CONFIG_TIMER_STATS=y + # CONFIG_DEBUG_OBJECTS is not set + # CONFIG_DEBUG_SLAB is not set ++# CONFIG_DEBUG_KMEMLEAK 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 +@@ -1252,137 +2847,204 @@ CONFIG_DEBUG_MUTEXES=y + # CONFIG_LOCK_STAT is not set + # CONFIG_DEBUG_SPINLOCK_SLEEP is not set + # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++CONFIG_STACKTRACE=y + # CONFIG_DEBUG_KOBJECT is not set + # CONFIG_DEBUG_BUGVERBOSE is not set +-CONFIG_DEBUG_INFO=y ++# CONFIG_DEBUG_INFO is not set + # CONFIG_DEBUG_VM is not set + # CONFIG_DEBUG_WRITECOUNT is not set + # CONFIG_DEBUG_MEMORY_INIT is not set + # CONFIG_DEBUG_LIST is not set + # CONFIG_DEBUG_SG is not set +-CONFIG_FRAME_POINTER=y ++# CONFIG_DEBUG_NOTIFIERS is not set ++# CONFIG_DEBUG_CREDENTIALS is not set + # CONFIG_BOOT_PRINTK_DELAY is not set + # CONFIG_RCU_TORTURE_TEST is not set ++# CONFIG_RCU_CPU_STALL_DETECTOR is not set + # CONFIG_BACKTRACE_SELF_TEST is not set ++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set ++# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set + # CONFIG_FAULT_INJECTION is not set + # CONFIG_LATENCYTOP is not set +-CONFIG_HAVE_FTRACE=y +-CONFIG_HAVE_DYNAMIC_FTRACE=y +-# CONFIG_FTRACE is not set ++# CONFIG_SYSCTL_SYSCALL_CHECK is not set ++# CONFIG_PAGE_POISONING is not set ++CONFIG_NOP_TRACER=y ++CONFIG_HAVE_FUNCTION_TRACER=y ++CONFIG_RING_BUFFER=y ++CONFIG_EVENT_TRACING=y ++CONFIG_CONTEXT_SWITCH_TRACER=y ++CONFIG_RING_BUFFER_ALLOW_SWAP=y ++CONFIG_TRACING=y ++CONFIG_TRACING_SUPPORT=y ++CONFIG_FTRACE=y ++# CONFIG_FUNCTION_TRACER is not set + # CONFIG_IRQSOFF_TRACER is not set ++# CONFIG_PREEMPT_TRACER is not set + # CONFIG_SCHED_TRACER is not set +-# CONFIG_CONTEXT_SWITCH_TRACER is not set ++# CONFIG_ENABLE_DEFAULT_TRACERS is not set ++# CONFIG_BOOT_TRACER is not set ++CONFIG_BRANCH_PROFILE_NONE=y ++# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set ++# CONFIG_PROFILE_ALL_BRANCHES is not set ++# CONFIG_STACK_TRACER is not set ++# CONFIG_KMEMTRACE is not set ++# CONFIG_WORKQUEUE_TRACER is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++# CONFIG_RING_BUFFER_BENCHMARK is not set ++# CONFIG_DYNAMIC_DEBUG is not set + # CONFIG_SAMPLES is not set + CONFIG_HAVE_ARCH_KGDB=y + # CONFIG_KGDB is not set ++CONFIG_ARM_UNWIND=y + # 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_OC_ETM is not set + + # + # Security options + # +-# CONFIG_KEYS is not set ++CONFIG_KEYS=y ++# CONFIG_KEYS_DEBUG_PROC_KEYS is not set + # CONFIG_SECURITY is not set +-# CONFIG_SECURITY_FILE_CAPABILITIES is not set ++# CONFIG_SECURITYFS is not set ++# CONFIG_DEFAULT_SECURITY_SELINUX is not set ++# CONFIG_DEFAULT_SECURITY_SMACK is not set ++# CONFIG_DEFAULT_SECURITY_TOMOYO is not set ++CONFIG_DEFAULT_SECURITY_DAC=y ++CONFIG_DEFAULT_SECURITY="" ++CONFIG_XOR_BLOCKS=m ++CONFIG_ASYNC_CORE=m ++CONFIG_ASYNC_MEMCPY=m ++CONFIG_ASYNC_XOR=m ++CONFIG_ASYNC_PQ=m ++CONFIG_ASYNC_RAID6_RECOV=m + CONFIG_CRYPTO=y + + # + # Crypto core or helper + # ++CONFIG_CRYPTO_FIPS=y + CONFIG_CRYPTO_ALGAPI=y ++CONFIG_CRYPTO_ALGAPI2=y ++CONFIG_CRYPTO_AEAD=m ++CONFIG_CRYPTO_AEAD2=y + CONFIG_CRYPTO_BLKCIPHER=y ++CONFIG_CRYPTO_BLKCIPHER2=y ++CONFIG_CRYPTO_HASH=y ++CONFIG_CRYPTO_HASH2=y ++CONFIG_CRYPTO_RNG=m ++CONFIG_CRYPTO_RNG2=y ++CONFIG_CRYPTO_PCOMP=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 ++CONFIG_CRYPTO_MANAGER2=y ++CONFIG_CRYPTO_GF128MUL=m ++CONFIG_CRYPTO_NULL=m ++CONFIG_CRYPTO_WORKQUEUE=y ++CONFIG_CRYPTO_CRYPTD=m ++CONFIG_CRYPTO_AUTHENC=m ++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 ++CONFIG_CRYPTO_CCM=m ++CONFIG_CRYPTO_GCM=m ++CONFIG_CRYPTO_SEQIV=m + + # + # 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_CTR=m ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_ECB=y ++CONFIG_CRYPTO_LRW=m + CONFIG_CRYPTO_PCBC=m +-# CONFIG_CRYPTO_XTS is not set ++CONFIG_CRYPTO_XTS=m + + # + # Hash modes + # +-# CONFIG_CRYPTO_HMAC is not set +-# CONFIG_CRYPTO_XCBC is not set ++CONFIG_CRYPTO_HMAC=m ++CONFIG_CRYPTO_XCBC=m ++# CONFIG_CRYPTO_VMAC is not set + + # + # Digest + # +-# CONFIG_CRYPTO_CRC32C is not set +-# CONFIG_CRYPTO_MD4 is not set ++CONFIG_CRYPTO_CRC32C=y ++CONFIG_CRYPTO_GHASH=m ++CONFIG_CRYPTO_MD4=m + CONFIG_CRYPTO_MD5=y +-# CONFIG_CRYPTO_MICHAEL_MIC is not set +-# CONFIG_CRYPTO_RMD128 is not set +-# CONFIG_CRYPTO_RMD160 is not set +-# CONFIG_CRYPTO_RMD256 is not set +-# CONFIG_CRYPTO_RMD320 is not set +-# CONFIG_CRYPTO_SHA1 is not set +-# CONFIG_CRYPTO_SHA256 is not set +-# CONFIG_CRYPTO_SHA512 is not set +-# CONFIG_CRYPTO_TGR192 is not set +-# CONFIG_CRYPTO_WP512 is not set ++CONFIG_CRYPTO_MICHAEL_MIC=y ++CONFIG_CRYPTO_RMD128=m ++CONFIG_CRYPTO_RMD160=m ++CONFIG_CRYPTO_RMD256=m ++CONFIG_CRYPTO_RMD320=m ++CONFIG_CRYPTO_SHA1=m ++CONFIG_CRYPTO_SHA256=m ++CONFIG_CRYPTO_SHA512=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m + + # + # Ciphers + # +-# CONFIG_CRYPTO_AES is not set +-# CONFIG_CRYPTO_ANUBIS is not set +-# CONFIG_CRYPTO_ARC4 is not set +-# 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_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 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 ++CONFIG_CRYPTO_FCRYPT=m ++CONFIG_CRYPTO_KHAZAD=m ++CONFIG_CRYPTO_SALSA20=m ++CONFIG_CRYPTO_SEED=m ++CONFIG_CRYPTO_SERPENT=m ++CONFIG_CRYPTO_TEA=m ++CONFIG_CRYPTO_TWOFISH=m ++CONFIG_CRYPTO_TWOFISH_COMMON=m + + # + # Compression + # +-# CONFIG_CRYPTO_DEFLATE is not set +-# CONFIG_CRYPTO_LZO is not set ++CONFIG_CRYPTO_DEFLATE=y ++# CONFIG_CRYPTO_ZLIB is not set ++CONFIG_CRYPTO_LZO=y ++ ++# ++# Random Number Generation ++# ++CONFIG_CRYPTO_ANSI_CPRNG=m + CONFIG_CRYPTO_HW=y ++CONFIG_BINARY_PRINTF=y + + # + # Library routines + # + CONFIG_BITREVERSE=y +-# CONFIG_GENERIC_FIND_FIRST_BIT is not set +-# CONFIG_GENERIC_FIND_NEXT_BIT is not set ++CONFIG_GENERIC_FIND_LAST_BIT=y + CONFIG_CRC_CCITT=y +-# CONFIG_CRC16 is not set +-# CONFIG_CRC_T10DIF is not set +-# CONFIG_CRC_ITU_T is not set ++CONFIG_CRC16=y ++CONFIG_CRC_T10DIF=y ++CONFIG_CRC_ITU_T=y + CONFIG_CRC32=y +-# CONFIG_CRC7 is not set ++CONFIG_CRC7=y + CONFIG_LIBCRC32C=y + CONFIG_ZLIB_INFLATE=y + CONFIG_ZLIB_DEFLATE=y +-CONFIG_PLIST=y ++CONFIG_LZO_COMPRESS=y ++CONFIG_LZO_DECOMPRESS=y ++CONFIG_DECOMPRESS_GZIP=y ++CONFIG_TEXTSEARCH=y ++CONFIG_TEXTSEARCH_KMP=m ++CONFIG_TEXTSEARCH_BM=m ++CONFIG_TEXTSEARCH_FSM=m + CONFIG_HAS_IOMEM=y + CONFIG_HAS_IOPORT=y + CONFIG_HAS_DMA=y ++CONFIG_NLATTR=y +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch b/recipes/linux/linux-omap-psp-2.6.32/0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch deleted file mode 100644 index e8b704e1c4..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 5a6b395ade97b7b4315615ad48b8a467e1214c96 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 31 Dec 2009 07:05:02 -0800 -Subject: [PATCH 10/45] MTD: NAND: omap2: proper fix for subpage read ECC errors - ---- - drivers/mtd/nand/omap2.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c -index 08c193c..9b185b0 100644 ---- a/drivers/mtd/nand/omap2.c -+++ b/drivers/mtd/nand/omap2.c -@@ -295,11 +295,14 @@ static void omap_read_buf_pref(struct mtd_info *mtd, u_char *buf, int len) - u32 *p = (u32 *)buf; - - /* take care of subpage reads */ -- for (; len % 4 != 0; ) { -- *buf++ = __raw_readb(info->nand.IO_ADDR_R); -- len--; -+ if (len % 4) { -+ if (info->nand.options & NAND_BUSWIDTH_16) -+ omap_read_buf16(mtd, buf, len % 4); -+ else -+ omap_read_buf8(mtd, buf, len % 4); -+ p = (u32 *) (buf + len % 4); -+ len -= len % 4; - } -- p = (u32 *) buf; - - /* configure and start prefetch transfer */ - ret = gpmc_prefetch_enable(info->gpmc_cs, 0x0, len, 0x0); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch b/recipes/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch new file mode 100644 index 0000000000..d5038dcce9 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch @@ -0,0 +1,27 @@ +From a27b4854330f9f7430c757bd5b4476fb85bae6c6 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 12:45:20 -0800 +Subject: [PATCH 11/43] ASoC: enable audio capture by default for twl4030 + +--- + sound/soc/codecs/twl4030.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c +index 74f0d65..53da465 100644 +--- a/sound/soc/codecs/twl4030.c ++++ b/sound/soc/codecs/twl4030.c +@@ -46,8 +46,8 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = { + 0xc3, /* REG_OPTION (0x2) */ + 0x00, /* REG_UNKNOWN (0x3) */ + 0x00, /* REG_MICBIAS_CTL (0x4) */ +- 0x20, /* REG_ANAMICL (0x5) */ +- 0x00, /* REG_ANAMICR (0x6) */ ++ 0x34, /* REG_ANAMICL (0x5) */ ++ 0x14, /* REG_ANAMICR (0x6) */ + 0x00, /* REG_AVADC_CTL (0x7) */ + 0x00, /* REG_ADCMICSEL (0x8) */ + 0x00, /* REG_DIGMIXING (0x9) */ +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch b/recipes/linux/linux-omap-psp-2.6.32/0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch deleted file mode 100644 index d8e4d72d96..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 42ca6429f4c2b385064c239dc9a3244efef625b0 Mon Sep 17 00:00:00 2001 -From: Sudeep Basavaraj -Date: Tue, 5 Jan 2010 18:58:18 +0530 -Subject: [PATCH 11/45] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support - -Enables dss to process color formats with pre-mulitplied alpha values. -With this we can have alpha values defined for each pixel -and hence can have different blending values for each pixel. - -Signed-off-by: Sudeep Basavaraj -Signed-off-by: Kishore Y ---- - drivers/video/omap2/dss/dispc.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c -index f7acf87..c6d5fc5 100644 ---- a/drivers/video/omap2/dss/dispc.c -+++ b/drivers/video/omap2/dss/dispc.c -@@ -913,6 +913,11 @@ static void _dispc_set_vid_color_conv(enum omap_plane plane, bool enable) - dispc_write_reg(dispc_reg_att[plane], val); - } - -+static void _dispc_set_alpha_blend_attrs(enum omap_plane plane, bool enable) -+{ -+ REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 28, 28); -+} -+ - void dispc_enable_replication(enum omap_plane plane, bool enable) - { - int bit; -@@ -1689,6 +1694,9 @@ static int _dispc_setup_plane(enum omap_plane plane, - - _dispc_set_rotation_attrs(plane, rotation, mirror, color_mode); - -+ if (cpu_is_omap3630() && (plane != OMAP_DSS_VIDEO1)) -+ _dispc_set_alpha_blend_attrs(plane, 1); -+ - if (plane != OMAP_DSS_VIDEO1) - _dispc_setup_global_alpha(plane, global_alpha); - --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch b/recipes/linux/linux-omap-psp-2.6.32/0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch deleted file mode 100644 index 5d11373aa1..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d712e54a547b0800e6b482c43b5e6f8ca3f032de Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Tue, 19 Jan 2010 21:19:15 -0800 -Subject: [PATCH 12/45] DSS2: add bootarg for selecting svideo or composite for tv output - -also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp ---- - drivers/video/omap2/dss/venc.c | 22 ++++++++++++++++++++++ - drivers/video/omap2/omapfb/omapfb-main.c | 10 +++++++++- - 2 files changed, 31 insertions(+), 1 deletions(-) - -diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c -index 749a5a0..14aa721 100644 ---- a/drivers/video/omap2/dss/venc.c -+++ b/drivers/video/omap2/dss/venc.c -@@ -87,6 +87,11 @@ - #define VENC_OUTPUT_TEST 0xC8 - #define VENC_DAC_B__DAC_C 0xC8 - -+static char *tv_connection; -+ -+module_param_named(tvcable, tv_connection, charp, 0); -+MODULE_PARM_DESC(tvcable, "TV connection type (svideo, composite)"); -+ - struct venc_config { - u32 f_control; - u32 vidout_ctrl; -@@ -409,6 +414,23 @@ static int venc_panel_probe(struct omap_dss_device *dssdev) - { - dssdev->panel.timings = omap_dss_pal_timings; - -+ /* Allow the TV output to be overriden */ -+ if (tv_connection) { -+ if (strcmp(tv_connection, "svideo") == 0) { -+ printk(KERN_INFO -+ "omapdss: tv output is svideo.\n"); -+ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO; -+ } else if (strcmp(tv_connection, "composite") == 0) { -+ printk(KERN_INFO -+ "omapdss: tv output is composite.\n"); -+ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE; -+ } else { -+ printk(KERN_INFO -+ "omapdss: unsupported output type'%s'.\n", -+ tv_connection); -+ } -+ } -+ - return 0; - } - -diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c -index 340ab51..c2c9663 100644 ---- a/drivers/video/omap2/omapfb/omapfb-main.c -+++ b/drivers/video/omap2/omapfb/omapfb-main.c -@@ -1988,7 +1988,15 @@ static int omapfb_mode_to_timings(const char *mode_str, - int r; - - #ifdef CONFIG_OMAP2_DSS_VENC -- if (strcmp(mode_str, "pal") == 0) { -+ if (strcmp(mode_str, "pal-16") == 0) { -+ *timings = omap_dss_pal_timings; -+ *bpp = 16; -+ return 0; -+ } else if (strcmp(mode_str, "ntsc-16") == 0) { -+ *timings = omap_dss_ntsc_timings; -+ *bpp = 16; -+ return 0; -+ } else if (strcmp(mode_str, "pal") == 0) { - *timings = omap_dss_pal_timings; - *bpp = 0; - return 0; --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch b/recipes/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch new file mode 100644 index 0000000000..325cb366c2 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch @@ -0,0 +1,35 @@ +From 6ea180bb9b73b36b5b3ff47fdd1d3d0194ee03c1 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 31 Dec 2009 07:05:02 -0800 +Subject: [PATCH 12/43] MTD: NAND: omap2: proper fix for subpage read ECC errors + +--- + drivers/mtd/nand/omap2.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c +index 08c193c..9b185b0 100644 +--- a/drivers/mtd/nand/omap2.c ++++ b/drivers/mtd/nand/omap2.c +@@ -295,11 +295,14 @@ static void omap_read_buf_pref(struct mtd_info *mtd, u_char *buf, int len) + u32 *p = (u32 *)buf; + + /* take care of subpage reads */ +- for (; len % 4 != 0; ) { +- *buf++ = __raw_readb(info->nand.IO_ADDR_R); +- len--; ++ if (len % 4) { ++ if (info->nand.options & NAND_BUSWIDTH_16) ++ omap_read_buf16(mtd, buf, len % 4); ++ else ++ omap_read_buf8(mtd, buf, len % 4); ++ p = (u32 *) (buf + len % 4); ++ len -= len % 4; + } +- p = (u32 *) buf; + + /* configure and start prefetch transfer */ + ret = gpmc_prefetch_enable(info->gpmc_cs, 0x0, len, 0x0); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0013-ISP-add-some-more-from-Leopard-imaging-patch.patch b/recipes/linux/linux-omap-psp-2.6.32/0013-ISP-add-some-more-from-Leopard-imaging-patch.patch deleted file mode 100644 index 60824f6298..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0013-ISP-add-some-more-from-Leopard-imaging-patch.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 4f99b5658cbee7a09fd4cb2887d0e42dc4c70371 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Thu, 11 Feb 2010 21:34:00 +0100 -Subject: [PATCH 13/45] ISP: add some more from Leopard imaging patch - ---- - drivers/media/video/isp/isppreview.c | 16 ++++++++- - include/media/v4l2-int-device.h | 58 ++++++++++++++++++++++++++++++++++ - 2 files changed, 72 insertions(+), 2 deletions(-) - -diff --git a/drivers/media/video/isp/isppreview.c b/drivers/media/video/isp/isppreview.c -index 5494efc..85ee25d 100644 ---- a/drivers/media/video/isp/isppreview.c -+++ b/drivers/media/video/isp/isppreview.c -@@ -79,13 +79,26 @@ static struct ispprev_rgbtorgb flr_rgb2rgb = { - {0x0000, 0x0000, 0x0000} - }; - -+static struct ispprev_rgbtorgb unity_rgb2rgb = { -+ { /* RGB-RGB Matrix */ -+ {0x0100, 0x0000, 0x0000}, -+ {0x0000, 0x0100, 0x0000}, -+ {0x0000, 0x0000, 0x0100} -+ }, /* RGB Offset */ -+ {0x0000, 0x0000, 0x0000} -+}; -+ - /* Default values in Office Flourescent Light for RGB to YUV Conversion*/ - static struct ispprev_csc flr_prev_csc[] = { - { - { /* CSC Coef Matrix */ -- {66, 129, 25}, -+/* {66, 129, 25}, - {-38, -75, 112}, - {112, -94 , -18} -+*/ -+ {0x04C, 0x098, 0x01C}, -+ {0x3D4, 0x3AC, 0x080}, -+ {0x080, 0x39E, 0x3EC} - }, /* CSC Offset */ - {0x0, 0x0, 0x0} - }, -@@ -107,7 +120,6 @@ static struct ispprev_csc flr_prev_csc[] = { - } - }; - -- - /* Default values in Office Flourescent Light for CFA Gradient*/ - #define FLR_CFA_GRADTHRS_HORZ 0x28 - #define FLR_CFA_GRADTHRS_VERT 0x28 -diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-int-device.h -index ed32d3f..ce415ec 100644 ---- a/include/media/v4l2-int-device.h -+++ b/include/media/v4l2-int-device.h -@@ -113,6 +113,8 @@ enum v4l2_if_type { - * on certain image sensors. - */ - V4L2_IF_TYPE_BT656, -+ V4L2_IF_TYPE_YCbCr, -+ V4L2_IF_TYPE_RAW, - }; - - enum v4l2_if_type_bt656_mode { -@@ -159,10 +161,66 @@ struct v4l2_if_type_bt656 { - u32 clock_curr; - }; - -+struct v4l2_if_type_ycbcr { -+ /* -+ * 0: Frame begins when vsync is high. -+ * 1: Frame begins when vsync changes from low to high. -+ */ -+ unsigned frame_start_on_rising_vs:1; -+ /* Use Bt synchronisation codes for sync correction. */ -+ unsigned bt_sync_correct:1; -+ /* Swap every two adjacent image data elements. */ -+ unsigned swap:1; -+ /* Inverted latch clock polarity from slave. */ -+ unsigned latch_clk_inv:1; -+ /* Hs polarity. 0 is active high, 1 active low. */ -+ unsigned nobt_hs_inv:1; -+ /* Vs polarity. 0 is active high, 1 active low. */ -+ unsigned nobt_vs_inv:1; -+ /* Minimum accepted bus clock for slave (in Hz). */ -+ u32 clock_min; -+ /* Maximum accepted bus clock for slave. */ -+ u32 clock_max; -+ /* -+ * Current wish of the slave. May only change in response to -+ * ioctls that affect image capture. -+ */ -+ u32 clock_curr; -+}; -+ -+struct v4l2_if_type_raw { -+ /* -+ * 0: Frame begins when vsync is high. -+ * 1: Frame begins when vsync changes from low to high. -+ */ -+ unsigned frame_start_on_rising_vs:1; -+ /* Use Bt synchronisation codes for sync correction. */ -+ unsigned bt_sync_correct:1; -+ /* Swap every two adjacent image data elements. */ -+ unsigned swap:1; -+ /* Inverted latch clock polarity from slave. */ -+ unsigned latch_clk_inv:1; -+ /* Hs polarity. 0 is active high, 1 active low. */ -+ unsigned nobt_hs_inv:1; -+ /* Vs polarity. 0 is active high, 1 active low. */ -+ unsigned nobt_vs_inv:1; -+ /* Minimum accepted bus clock for slave (in Hz). */ -+ u32 clock_min; -+ /* Maximum accepted bus clock for slave. */ -+ u32 clock_max; -+ /* -+ * Current wish of the slave. May only change in response to -+ * ioctls that affect image capture. -+ */ -+ u32 clock_curr; -+}; -+ - struct v4l2_ifparm { - enum v4l2_if_type if_type; - union { - struct v4l2_if_type_bt656 bt656; -+ struct v4l2_if_type_ycbcr ycbcr; -+ struct v4l2_if_type_raw raw; - } u; - }; - --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch b/recipes/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch new file mode 100644 index 0000000000..329076b0bf --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch @@ -0,0 +1,44 @@ +From 83006da4037e890d5c4eec9f5fe0e8d0ea4af44b Mon Sep 17 00:00:00 2001 +From: Sudeep Basavaraj +Date: Tue, 5 Jan 2010 18:58:18 +0530 +Subject: [PATCH 13/43] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support + +Enables dss to process color formats with pre-mulitplied alpha values. +With this we can have alpha values defined for each pixel +and hence can have different blending values for each pixel. + +Signed-off-by: Sudeep Basavaraj +Signed-off-by: Kishore Y +--- + drivers/video/omap2/dss/dispc.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index f7acf87..c6d5fc5 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -913,6 +913,11 @@ static void _dispc_set_vid_color_conv(enum omap_plane plane, bool enable) + dispc_write_reg(dispc_reg_att[plane], val); + } + ++static void _dispc_set_alpha_blend_attrs(enum omap_plane plane, bool enable) ++{ ++ REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 28, 28); ++} ++ + void dispc_enable_replication(enum omap_plane plane, bool enable) + { + int bit; +@@ -1689,6 +1694,9 @@ static int _dispc_setup_plane(enum omap_plane plane, + + _dispc_set_rotation_attrs(plane, rotation, mirror, color_mode); + ++ if (cpu_is_omap3630() && (plane != OMAP_DSS_VIDEO1)) ++ _dispc_set_alpha_blend_attrs(plane, 1); ++ + if (plane != OMAP_DSS_VIDEO1) + _dispc_setup_global_alpha(plane, global_alpha); + +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch b/recipes/linux/linux-omap-psp-2.6.32/0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch deleted file mode 100644 index 263daa5592..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch +++ /dev/null @@ -1,110 +0,0 @@ -From df2fe69fb08d6784975744c2723b33892526c60c Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Tue, 15 Dec 2009 14:59:42 -0800 -Subject: [PATCH 14/45] ARM: OMAP: Overo: Add support for second ethernet port - -Signed-off-by: Steve Sakoman ---- - arch/arm/mach-omap2/board-overo.c | 56 +++++++++++++++++++++++++++++++++++-- - 1 files changed, 53 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c -index e0aebc3..6204b8c 100644 ---- a/arch/arm/mach-omap2/board-overo.c -+++ b/arch/arm/mach-omap2/board-overo.c -@@ -63,6 +63,8 @@ - - #define OVERO_SMSC911X_CS 5 - #define OVERO_SMSC911X_GPIO 176 -+#define OVERO_SMSC911X2_CS 4 -+#define OVERO_SMSC911X2_GPIO 65 - - #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ - defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) -@@ -137,6 +139,16 @@ static struct resource overo_smsc911x_resources[] = { - }, - }; - -+static struct resource overo_smsc911x2_resources[] = { -+ { -+ .name = "smsc911x2-memory", -+ .flags = IORESOURCE_MEM, -+ }, -+ { -+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, -+ }, -+}; -+ - static struct smsc911x_platform_config overo_smsc911x_config = { - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, - .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, -@@ -146,7 +158,7 @@ static struct smsc911x_platform_config overo_smsc911x_config = { - - static struct platform_device overo_smsc911x_device = { - .name = "smsc911x", -- .id = -1, -+ .id = 0, - .num_resources = ARRAY_SIZE(overo_smsc911x_resources), - .resource = overo_smsc911x_resources, - .dev = { -@@ -154,9 +166,26 @@ static struct platform_device overo_smsc911x_device = { - }, - }; - -+static struct platform_device overo_smsc911x2_device = { -+ .name = "smsc911x", -+ .id = 1, -+ .num_resources = ARRAY_SIZE(overo_smsc911x2_resources), -+ .resource = overo_smsc911x2_resources, -+ .dev = { -+ .platform_data = &overo_smsc911x_config, -+ }, -+}; -+ -+static struct platform_device *smsc911x_devices[] = { -+ &overo_smsc911x_device, -+ &overo_smsc911x2_device, -+}; -+ - static inline void __init overo_init_smsc911x(void) - { -- unsigned long cs_mem_base; -+ unsigned long cs_mem_base, cs_mem_base2; -+ -+ /* set up first smsc911x chip */ - - if (gpmc_cs_request(OVERO_SMSC911X_CS, SZ_16M, &cs_mem_base) < 0) { - printk(KERN_ERR "Failed request for GPMC mem for smsc911x\n"); -@@ -177,7 +206,28 @@ static inline void __init overo_init_smsc911x(void) - overo_smsc911x_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X_GPIO); - overo_smsc911x_resources[1].end = 0; - -- platform_device_register(&overo_smsc911x_device); -+ /* set up second smsc911x chip */ -+ -+ if (gpmc_cs_request(OVERO_SMSC911X2_CS, SZ_16M, &cs_mem_base2) < 0) { -+ printk(KERN_ERR "Failed request for GPMC mem for smsc911x2\n"); -+ return; -+ } -+ -+ overo_smsc911x2_resources[0].start = cs_mem_base2 + 0x0; -+ overo_smsc911x2_resources[0].end = cs_mem_base2 + 0xff; -+ -+ if ((gpio_request(OVERO_SMSC911X2_GPIO, "SMSC911X2 IRQ") == 0) && -+ (gpio_direction_input(OVERO_SMSC911X2_GPIO) == 0)) { -+ gpio_export(OVERO_SMSC911X2_GPIO, 0); -+ } else { -+ printk(KERN_ERR "could not obtain gpio for SMSC911X2 IRQ\n"); -+ return; -+ } -+ -+ overo_smsc911x2_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X2_GPIO); -+ overo_smsc911x2_resources[1].end = 0; -+ -+ platform_add_devices(smsc911x_devices, ARRAY_SIZE(smsc911x_devices)); - } - - #else --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch b/recipes/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch new file mode 100644 index 0000000000..f8c939264d --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch @@ -0,0 +1,75 @@ +From da46218c8e601d44ab125bd7dc27af93a8b21e5b Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 19 Jan 2010 21:19:15 -0800 +Subject: [PATCH 14/43] DSS2: add bootarg for selecting svideo or composite for tv output + +also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp +--- + drivers/video/omap2/dss/venc.c | 22 ++++++++++++++++++++++ + drivers/video/omap2/omapfb/omapfb-main.c | 10 +++++++++- + 2 files changed, 31 insertions(+), 1 deletions(-) + +diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c +index 1127e85..53fa54e 100644 +--- a/drivers/video/omap2/dss/venc.c ++++ b/drivers/video/omap2/dss/venc.c +@@ -87,6 +87,11 @@ + #define VENC_OUTPUT_TEST 0xC8 + #define VENC_DAC_B__DAC_C 0xC8 + ++static char *tv_connection; ++ ++module_param_named(tvcable, tv_connection, charp, 0); ++MODULE_PARM_DESC(tvcable, "TV connection type (svideo, composite)"); ++ + struct venc_config { + u32 f_control; + u32 vidout_ctrl; +@@ -430,6 +435,23 @@ static int venc_panel_probe(struct omap_dss_device *dssdev) + { + dssdev->panel.timings = omap_dss_pal_timings; + ++ /* Allow the TV output to be overriden */ ++ if (tv_connection) { ++ if (strcmp(tv_connection, "svideo") == 0) { ++ printk(KERN_INFO ++ "omapdss: tv output is svideo.\n"); ++ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO; ++ } else if (strcmp(tv_connection, "composite") == 0) { ++ printk(KERN_INFO ++ "omapdss: tv output is composite.\n"); ++ dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE; ++ } else { ++ printk(KERN_INFO ++ "omapdss: unsupported output type'%s'.\n", ++ tv_connection); ++ } ++ } ++ + return 0; + } + +diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c +index ef29983..015831b 100644 +--- a/drivers/video/omap2/omapfb/omapfb-main.c ++++ b/drivers/video/omap2/omapfb/omapfb-main.c +@@ -1961,7 +1961,15 @@ static int omapfb_mode_to_timings(const char *mode_str, + int r; + + #ifdef CONFIG_OMAP2_DSS_VENC +- if (strcmp(mode_str, "pal") == 0) { ++ if (strcmp(mode_str, "pal-16") == 0) { ++ *timings = omap_dss_pal_timings; ++ *bpp = 16; ++ return 0; ++ } else if (strcmp(mode_str, "ntsc-16") == 0) { ++ *timings = omap_dss_ntsc_timings; ++ *bpp = 16; ++ return 0; ++ } else if (strcmp(mode_str, "pal") == 0) { + *timings = omap_dss_pal_timings; + *bpp = 0; + return 0; +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch b/recipes/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch new file mode 100644 index 0000000000..92041048fb --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch @@ -0,0 +1,133 @@ +From 77eaef7dfa42ecf2fbf66e95bc1e4642bf52c989 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 11 Feb 2010 21:34:00 +0100 +Subject: [PATCH 15/43] ISP: add some more from Leopard imaging patch + +--- + drivers/media/video/isp/isppreview.c | 16 ++++++++- + include/media/v4l2-int-device.h | 58 ++++++++++++++++++++++++++++++++++ + 2 files changed, 72 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/video/isp/isppreview.c b/drivers/media/video/isp/isppreview.c +index 5494efc..85ee25d 100644 +--- a/drivers/media/video/isp/isppreview.c ++++ b/drivers/media/video/isp/isppreview.c +@@ -79,13 +79,26 @@ static struct ispprev_rgbtorgb flr_rgb2rgb = { + {0x0000, 0x0000, 0x0000} + }; + ++static struct ispprev_rgbtorgb unity_rgb2rgb = { ++ { /* RGB-RGB Matrix */ ++ {0x0100, 0x0000, 0x0000}, ++ {0x0000, 0x0100, 0x0000}, ++ {0x0000, 0x0000, 0x0100} ++ }, /* RGB Offset */ ++ {0x0000, 0x0000, 0x0000} ++}; ++ + /* Default values in Office Flourescent Light for RGB to YUV Conversion*/ + static struct ispprev_csc flr_prev_csc[] = { + { + { /* CSC Coef Matrix */ +- {66, 129, 25}, ++/* {66, 129, 25}, + {-38, -75, 112}, + {112, -94 , -18} ++*/ ++ {0x04C, 0x098, 0x01C}, ++ {0x3D4, 0x3AC, 0x080}, ++ {0x080, 0x39E, 0x3EC} + }, /* CSC Offset */ + {0x0, 0x0, 0x0} + }, +@@ -107,7 +120,6 @@ static struct ispprev_csc flr_prev_csc[] = { + } + }; + +- + /* Default values in Office Flourescent Light for CFA Gradient*/ + #define FLR_CFA_GRADTHRS_HORZ 0x28 + #define FLR_CFA_GRADTHRS_VERT 0x28 +diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-int-device.h +index ed32d3f..ce415ec 100644 +--- a/include/media/v4l2-int-device.h ++++ b/include/media/v4l2-int-device.h +@@ -113,6 +113,8 @@ enum v4l2_if_type { + * on certain image sensors. + */ + V4L2_IF_TYPE_BT656, ++ V4L2_IF_TYPE_YCbCr, ++ V4L2_IF_TYPE_RAW, + }; + + enum v4l2_if_type_bt656_mode { +@@ -159,10 +161,66 @@ struct v4l2_if_type_bt656 { + u32 clock_curr; + }; + ++struct v4l2_if_type_ycbcr { ++ /* ++ * 0: Frame begins when vsync is high. ++ * 1: Frame begins when vsync changes from low to high. ++ */ ++ unsigned frame_start_on_rising_vs:1; ++ /* Use Bt synchronisation codes for sync correction. */ ++ unsigned bt_sync_correct:1; ++ /* Swap every two adjacent image data elements. */ ++ unsigned swap:1; ++ /* Inverted latch clock polarity from slave. */ ++ unsigned latch_clk_inv:1; ++ /* Hs polarity. 0 is active high, 1 active low. */ ++ unsigned nobt_hs_inv:1; ++ /* Vs polarity. 0 is active high, 1 active low. */ ++ unsigned nobt_vs_inv:1; ++ /* Minimum accepted bus clock for slave (in Hz). */ ++ u32 clock_min; ++ /* Maximum accepted bus clock for slave. */ ++ u32 clock_max; ++ /* ++ * Current wish of the slave. May only change in response to ++ * ioctls that affect image capture. ++ */ ++ u32 clock_curr; ++}; ++ ++struct v4l2_if_type_raw { ++ /* ++ * 0: Frame begins when vsync is high. ++ * 1: Frame begins when vsync changes from low to high. ++ */ ++ unsigned frame_start_on_rising_vs:1; ++ /* Use Bt synchronisation codes for sync correction. */ ++ unsigned bt_sync_correct:1; ++ /* Swap every two adjacent image data elements. */ ++ unsigned swap:1; ++ /* Inverted latch clock polarity from slave. */ ++ unsigned latch_clk_inv:1; ++ /* Hs polarity. 0 is active high, 1 active low. */ ++ unsigned nobt_hs_inv:1; ++ /* Vs polarity. 0 is active high, 1 active low. */ ++ unsigned nobt_vs_inv:1; ++ /* Minimum accepted bus clock for slave (in Hz). */ ++ u32 clock_min; ++ /* Maximum accepted bus clock for slave. */ ++ u32 clock_max; ++ /* ++ * Current wish of the slave. May only change in response to ++ * ioctls that affect image capture. ++ */ ++ u32 clock_curr; ++}; ++ + struct v4l2_ifparm { + enum v4l2_if_type if_type; + union { + struct v4l2_if_type_bt656 bt656; ++ struct v4l2_if_type_ycbcr ycbcr; ++ struct v4l2_if_type_raw raw; + } u; + }; + +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch b/recipes/linux/linux-omap-psp-2.6.32/0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch deleted file mode 100644 index 535b524875..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 25665d81b2b42e6ad9cb3a976af4ff792018b321 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Tue, 15 Dec 2009 15:17:44 -0800 -Subject: [PATCH 15/45] drivers: net: smsc911x: return ENODEV if device is not found - -Signed-off-by: Steve Sakoman ---- - drivers/net/smsc911x.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c -index 494cd91..2472cb0 100644 ---- a/drivers/net/smsc911x.c -+++ b/drivers/net/smsc911x.c -@@ -2021,8 +2021,10 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) - } - - retval = smsc911x_init(dev); -- if (retval < 0) -+ if (retval < 0) { -+ retval = -ENODEV; - goto out_unmap_io_3; -+ } - - /* configure irq polarity and type before connecting isr */ - if (pdata->config.irq_polarity == SMSC911X_IRQ_POLARITY_ACTIVE_HIGH) --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch b/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch new file mode 100644 index 0000000000..ea032e2985 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch @@ -0,0 +1,110 @@ +From 0f494c3545ebbc375a7241ede3aa0db33295bebe Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 14:59:42 -0800 +Subject: [PATCH 16/43] ARM: OMAP: Overo: Add support for second ethernet port + +Signed-off-by: Steve Sakoman +--- + arch/arm/mach-omap2/board-overo.c | 56 +++++++++++++++++++++++++++++++++++-- + 1 files changed, 53 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index e0aebc3..6204b8c 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -63,6 +63,8 @@ + + #define OVERO_SMSC911X_CS 5 + #define OVERO_SMSC911X_GPIO 176 ++#define OVERO_SMSC911X2_CS 4 ++#define OVERO_SMSC911X2_GPIO 65 + + #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ + defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) +@@ -137,6 +139,16 @@ static struct resource overo_smsc911x_resources[] = { + }, + }; + ++static struct resource overo_smsc911x2_resources[] = { ++ { ++ .name = "smsc911x2-memory", ++ .flags = IORESOURCE_MEM, ++ }, ++ { ++ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, ++ }, ++}; ++ + static struct smsc911x_platform_config overo_smsc911x_config = { + .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, + .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, +@@ -146,7 +158,7 @@ static struct smsc911x_platform_config overo_smsc911x_config = { + + static struct platform_device overo_smsc911x_device = { + .name = "smsc911x", +- .id = -1, ++ .id = 0, + .num_resources = ARRAY_SIZE(overo_smsc911x_resources), + .resource = overo_smsc911x_resources, + .dev = { +@@ -154,9 +166,26 @@ static struct platform_device overo_smsc911x_device = { + }, + }; + ++static struct platform_device overo_smsc911x2_device = { ++ .name = "smsc911x", ++ .id = 1, ++ .num_resources = ARRAY_SIZE(overo_smsc911x2_resources), ++ .resource = overo_smsc911x2_resources, ++ .dev = { ++ .platform_data = &overo_smsc911x_config, ++ }, ++}; ++ ++static struct platform_device *smsc911x_devices[] = { ++ &overo_smsc911x_device, ++ &overo_smsc911x2_device, ++}; ++ + static inline void __init overo_init_smsc911x(void) + { +- unsigned long cs_mem_base; ++ unsigned long cs_mem_base, cs_mem_base2; ++ ++ /* set up first smsc911x chip */ + + if (gpmc_cs_request(OVERO_SMSC911X_CS, SZ_16M, &cs_mem_base) < 0) { + printk(KERN_ERR "Failed request for GPMC mem for smsc911x\n"); +@@ -177,7 +206,28 @@ static inline void __init overo_init_smsc911x(void) + overo_smsc911x_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X_GPIO); + overo_smsc911x_resources[1].end = 0; + +- platform_device_register(&overo_smsc911x_device); ++ /* set up second smsc911x chip */ ++ ++ if (gpmc_cs_request(OVERO_SMSC911X2_CS, SZ_16M, &cs_mem_base2) < 0) { ++ printk(KERN_ERR "Failed request for GPMC mem for smsc911x2\n"); ++ return; ++ } ++ ++ overo_smsc911x2_resources[0].start = cs_mem_base2 + 0x0; ++ overo_smsc911x2_resources[0].end = cs_mem_base2 + 0xff; ++ ++ if ((gpio_request(OVERO_SMSC911X2_GPIO, "SMSC911X2 IRQ") == 0) && ++ (gpio_direction_input(OVERO_SMSC911X2_GPIO) == 0)) { ++ gpio_export(OVERO_SMSC911X2_GPIO, 0); ++ } else { ++ printk(KERN_ERR "could not obtain gpio for SMSC911X2 IRQ\n"); ++ return; ++ } ++ ++ overo_smsc911x2_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X2_GPIO); ++ overo_smsc911x2_resources[1].end = 0; ++ ++ platform_add_devices(smsc911x_devices, ARRAY_SIZE(smsc911x_devices)); + } + + #else +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch b/recipes/linux/linux-omap-psp-2.6.32/0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch deleted file mode 100644 index 68220b08ea..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0a74491985cab287962c0243565e78600b86c894 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Tue, 15 Dec 2009 15:24:10 -0800 -Subject: [PATCH 16/45] drivers: input: touchscreen: ads7846: return ENODEV if device is not found - -Signed-off-by: Steve Sakoman ---- - drivers/input/touchscreen/ads7846.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c -index e53ac1f..45287ab 100644 ---- a/drivers/input/touchscreen/ads7846.c -+++ b/drivers/input/touchscreen/ads7846.c -@@ -1165,9 +1165,16 @@ static int __devinit ads7846_probe(struct spi_device *spi) - /* take a first sample, leaving nPENIRQ active and vREF off; avoid - * the touchscreen, in case it's not connected. - */ -- (void) ads7846_read12_ser(&spi->dev, -+ err = ads7846_read12_ser(&spi->dev, - READ_12BIT_SER(vaux) | ADS_PD10_ALL_ON); - -+ /* if sample is all 0's or all 1's then there is no device on spi */ -+ if ( (err == 0x000) || (err == 0xfff)) { -+ dev_info(&spi->dev, "no device detected, test read result was 0x%08X\n", err); -+ err = -ENODEV; -+ goto err_free_irq; -+ } -+ - err = sysfs_create_group(&spi->dev.kobj, &ads784x_attr_group); - if (err) - goto err_remove_hwmon; -@@ -1188,7 +1195,7 @@ static int __devinit ads7846_probe(struct spi_device *spi) - err_free_irq: - free_irq(spi->irq, ts); - err_free_gpio: -- if (ts->gpio_pendown != -1) -+ if (!ts->get_pendown_state && ts->gpio_pendown != -1) - gpio_free(ts->gpio_pendown); - err_cleanup_filter: - if (ts->filter_cleanup) -@@ -1216,7 +1223,7 @@ static int __devexit ads7846_remove(struct spi_device *spi) - /* suspend left the IRQ disabled */ - enable_irq(ts->spi->irq); - -- if (ts->gpio_pendown != -1) -+ if (!ts->get_pendown_state && ts->gpio_pendown != -1) - gpio_free(ts->gpio_pendown); - - if (ts->filter_cleanup) --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-mfd-add-twl4030-madc-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-mfd-add-twl4030-madc-driver.patch deleted file mode 100644 index 2baefff94f..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-mfd-add-twl4030-madc-driver.patch +++ /dev/null @@ -1,601 +0,0 @@ -From 294e88638b891322998deb9154f4babd024732d3 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 14:19:34 -0800 -Subject: [PATCH 17/45] drivers: mfd: add twl4030 madc driver - ---- - drivers/mfd/Kconfig | 21 ++ - drivers/mfd/Makefile | 1 + - drivers/mfd/twl4030-madc.c | 536 ++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 558 insertions(+), 0 deletions(-) - create mode 100644 drivers/mfd/twl4030-madc.c - -diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 8782978..aefdd66 100644 ---- a/drivers/mfd/Kconfig -+++ b/drivers/mfd/Kconfig -@@ -135,6 +135,27 @@ config TWL4030_CODEC - select MFD_CORE - default n - -+config TWL4030_MADC -+ tristate "TWL4030 MADC Driver" -+ depends on TWL4030_CORE -+ help -+ The TWL4030 Monitoring ADC driver enables the host -+ processor to monitor analog signals using analog-to-digital -+ conversions on the input source. TWL4030 MADC provides the -+ following features: -+ - Single 10-bit ADC with successive approximation register (SAR) conversion; -+ - Analog multiplexer for 16 inputs; -+ - Seven (of the 16) inputs are freely available; -+ - Battery voltage monitoring; -+ - Concurrent conversion request management; -+ - Interrupt signal to Primary Interrupt Handler; -+ - Averaging feature; -+ - Selective enable/disable of the averaging feature. -+ -+ Say 'y' here to statically link this module into the kernel or 'm' -+ to build it as a dinamically loadable module. The module will be -+ called twl4030-madc.ko -+ - config MFD_TMIO - bool - default n -diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -index ca2f2c4..ec9c4f2 100644 ---- a/drivers/mfd/Makefile -+++ b/drivers/mfd/Makefile -@@ -29,6 +29,7 @@ obj-$(CONFIG_MENELAUS) += menelaus.o - obj-$(CONFIG_TWL4030_CORE) += twl-core.o twl4030-irq.o twl6030-irq.o - obj-$(CONFIG_TWL4030_POWER) += twl4030-power.o - obj-$(CONFIG_TWL4030_CODEC) += twl4030-codec.o -+obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o - - obj-$(CONFIG_MFD_MC13783) += mc13783-core.o - -diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c -new file mode 100644 -index 0000000..7d83ab8 ---- /dev/null -+++ b/drivers/mfd/twl4030-madc.c -@@ -0,0 +1,536 @@ -+/* -+ * TWL4030 MADC module driver -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Mikko Ylinen -+ * -+ * 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 -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#define TWL4030_MADC_PFX "twl4030-madc: " -+ -+struct twl4030_madc_data { -+ struct device *dev; -+ struct mutex lock; -+ struct work_struct ws; -+ struct twl4030_madc_request requests[TWL4030_MADC_NUM_METHODS]; -+ int imr; -+ int isr; -+}; -+ -+static struct twl4030_madc_data *the_madc; -+ -+static -+const struct twl4030_madc_conversion_method twl4030_conversion_methods[] = { -+ [TWL4030_MADC_RT] = { -+ .sel = TWL4030_MADC_RTSELECT_LSB, -+ .avg = TWL4030_MADC_RTAVERAGE_LSB, -+ .rbase = TWL4030_MADC_RTCH0_LSB, -+ }, -+ [TWL4030_MADC_SW1] = { -+ .sel = TWL4030_MADC_SW1SELECT_LSB, -+ .avg = TWL4030_MADC_SW1AVERAGE_LSB, -+ .rbase = TWL4030_MADC_GPCH0_LSB, -+ .ctrl = TWL4030_MADC_CTRL_SW1, -+ }, -+ [TWL4030_MADC_SW2] = { -+ .sel = TWL4030_MADC_SW2SELECT_LSB, -+ .avg = TWL4030_MADC_SW2AVERAGE_LSB, -+ .rbase = TWL4030_MADC_GPCH0_LSB, -+ .ctrl = TWL4030_MADC_CTRL_SW2, -+ }, -+}; -+ -+static int twl4030_madc_read(struct twl4030_madc_data *madc, u8 reg) -+{ -+ int ret; -+ u8 val; -+ -+ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); -+ if (ret) { -+ dev_dbg(madc->dev, "unable to read register 0x%X\n", reg); -+ return ret; -+ } -+ -+ return val; -+} -+ -+static void twl4030_madc_write(struct twl4030_madc_data *madc, u8 reg, u8 val) -+{ -+ int ret; -+ -+ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); -+ if (ret) -+ dev_err(madc->dev, "unable to write register 0x%X\n", reg); -+} -+ -+static int twl4030_madc_channel_raw_read(struct twl4030_madc_data *madc, u8 reg) -+{ -+ u8 msb, lsb; -+ -+ /* For each ADC channel, we have MSB and LSB register pair. MSB address -+ * is always LSB address+1. reg parameter is the addr of LSB register */ -+ msb = twl4030_madc_read(madc, reg + 1); -+ lsb = twl4030_madc_read(madc, reg); -+ -+ return (int)(((msb << 8) | lsb) >> 6); -+} -+ -+static int twl4030_madc_read_channels(struct twl4030_madc_data *madc, -+ u8 reg_base, u16 channels, int *buf) -+{ -+ int count = 0; -+ u8 reg, i; -+ -+ if (unlikely(!buf)) -+ return 0; -+ -+ for (i = 0; i < TWL4030_MADC_MAX_CHANNELS; i++) { -+ if (channels & (1<imr); -+ val &= ~(1 << id); -+ twl4030_madc_write(madc, madc->imr, val); -+} -+ -+static void twl4030_madc_disable_irq(struct twl4030_madc_data *madc, int id) -+{ -+ u8 val; -+ -+ val = twl4030_madc_read(madc, madc->imr); -+ val |= (1 << id); -+ twl4030_madc_write(madc, madc->imr, val); -+} -+ -+static irqreturn_t twl4030_madc_irq_handler(int irq, void *_madc) -+{ -+ struct twl4030_madc_data *madc = _madc; -+ u8 isr_val, imr_val; -+ int i; -+ -+#ifdef CONFIG_LOCKDEP -+ /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which -+ * we don't want and can't tolerate. Although it might be -+ * friendlier not to borrow this thread context... -+ */ -+ local_irq_enable(); -+#endif -+ -+ /* Use COR to ack interrupts since we have no shared IRQs in ISRx */ -+ isr_val = twl4030_madc_read(madc, madc->isr); -+ imr_val = twl4030_madc_read(madc, madc->imr); -+ -+ isr_val &= ~imr_val; -+ -+ for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) { -+ -+ if (!(isr_val & (1<requests[i].result_pending = 1; -+ } -+ -+ schedule_work(&madc->ws); -+ -+ return IRQ_HANDLED; -+} -+ -+static void twl4030_madc_work(struct work_struct *ws) -+{ -+ const struct twl4030_madc_conversion_method *method; -+ struct twl4030_madc_data *madc; -+ struct twl4030_madc_request *r; -+ int len, i; -+ -+ madc = container_of(ws, struct twl4030_madc_data, ws); -+ mutex_lock(&madc->lock); -+ -+ for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) { -+ -+ r = &madc->requests[i]; -+ -+ /* No pending results for this method, move to next one */ -+ if (!r->result_pending) -+ continue; -+ -+ method = &twl4030_conversion_methods[r->method]; -+ -+ /* Read results */ -+ len = twl4030_madc_read_channels(madc, method->rbase, -+ r->channels, r->rbuf); -+ -+ /* Return results to caller */ -+ if (r->func_cb != NULL) { -+ r->func_cb(len, r->channels, r->rbuf); -+ r->func_cb = NULL; -+ } -+ -+ /* Free request */ -+ r->result_pending = 0; -+ r->active = 0; -+ } -+ -+ mutex_unlock(&madc->lock); -+} -+ -+static int twl4030_madc_set_irq(struct twl4030_madc_data *madc, -+ struct twl4030_madc_request *req) -+{ -+ struct twl4030_madc_request *p; -+ -+ p = &madc->requests[req->method]; -+ -+ memcpy(p, req, sizeof *req); -+ -+ twl4030_madc_enable_irq(madc, req->method); -+ -+ return 0; -+} -+ -+static inline void twl4030_madc_start_conversion(struct twl4030_madc_data *madc, -+ int conv_method) -+{ -+ const struct twl4030_madc_conversion_method *method; -+ -+ method = &twl4030_conversion_methods[conv_method]; -+ -+ switch (conv_method) { -+ case TWL4030_MADC_SW1: -+ case TWL4030_MADC_SW2: -+ twl4030_madc_write(madc, method->ctrl, TWL4030_MADC_SW_START); -+ break; -+ case TWL4030_MADC_RT: -+ default: -+ break; -+ } -+} -+ -+static int twl4030_madc_wait_conversion_ready( -+ struct twl4030_madc_data *madc, -+ unsigned int timeout_ms, u8 status_reg) -+{ -+ unsigned long timeout; -+ -+ timeout = jiffies + msecs_to_jiffies(timeout_ms); -+ do { -+ u8 reg; -+ -+ reg = twl4030_madc_read(madc, status_reg); -+ if (!(reg & TWL4030_MADC_BUSY) && (reg & TWL4030_MADC_EOC_SW)) -+ return 0; -+ } while (!time_after(jiffies, timeout)); -+ -+ return -EAGAIN; -+} -+ -+int twl4030_madc_conversion(struct twl4030_madc_request *req) -+{ -+ const struct twl4030_madc_conversion_method *method; -+ u8 ch_msb, ch_lsb; -+ int ret; -+ -+ if (unlikely(!req)) -+ return -EINVAL; -+ -+ mutex_lock(&the_madc->lock); -+ -+ /* Do we have a conversion request ongoing */ -+ if (the_madc->requests[req->method].active) { -+ ret = -EBUSY; -+ goto out; -+ } -+ -+ ch_msb = (req->channels >> 8) & 0xff; -+ ch_lsb = req->channels & 0xff; -+ -+ method = &twl4030_conversion_methods[req->method]; -+ -+ /* Select channels to be converted */ -+ twl4030_madc_write(the_madc, method->sel + 1, ch_msb); -+ twl4030_madc_write(the_madc, method->sel, ch_lsb); -+ -+ /* Select averaging for all channels if do_avg is set */ -+ if (req->do_avg) { -+ twl4030_madc_write(the_madc, method->avg + 1, ch_msb); -+ twl4030_madc_write(the_madc, method->avg, ch_lsb); -+ } -+ -+ if ((req->type == TWL4030_MADC_IRQ_ONESHOT) && (req->func_cb != NULL)) { -+ twl4030_madc_set_irq(the_madc, req); -+ twl4030_madc_start_conversion(the_madc, req->method); -+ the_madc->requests[req->method].active = 1; -+ ret = 0; -+ goto out; -+ } -+ -+ /* With RT method we should not be here anymore */ -+ if (req->method == TWL4030_MADC_RT) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ twl4030_madc_start_conversion(the_madc, req->method); -+ the_madc->requests[req->method].active = 1; -+ -+ /* Wait until conversion is ready (ctrl register returns EOC) */ -+ ret = twl4030_madc_wait_conversion_ready(the_madc, 5, method->ctrl); -+ if (ret) { -+ dev_dbg(the_madc->dev, "conversion timeout!\n"); -+ the_madc->requests[req->method].active = 0; -+ goto out; -+ } -+ -+ ret = twl4030_madc_read_channels(the_madc, method->rbase, req->channels, -+ req->rbuf); -+ -+ the_madc->requests[req->method].active = 0; -+ -+out: -+ mutex_unlock(&the_madc->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(twl4030_madc_conversion); -+ -+static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc, -+ int chan, int on) -+{ -+ int ret; -+ u8 regval; -+ -+ /* Current generator is only available for ADCIN0 and ADCIN1. NB: -+ * ADCIN1 current generator only works when AC or VBUS is present */ -+ if (chan > 1) -+ return EINVAL; -+ -+ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ®val, TWL4030_BCI_BCICTL1); -+ if (on) -+ regval |= (chan) ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN; -+ else -+ regval &= (chan) ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN; -+ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, -+ regval, TWL4030_BCI_BCICTL1); -+ -+ return ret; -+} -+ -+static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on) -+{ -+ u8 regval; -+ -+ regval = twl4030_madc_read(madc, TWL4030_MADC_CTRL1); -+ if (on) -+ regval |= TWL4030_MADC_MADCON; -+ else -+ regval &= ~TWL4030_MADC_MADCON; -+ twl4030_madc_write(madc, TWL4030_MADC_CTRL1, regval); -+ -+ return 0; -+} -+ -+static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd, -+ unsigned long arg) -+{ -+ struct twl4030_madc_user_parms par; -+ int val, ret; -+ -+ ret = copy_from_user(&par, (void __user *) arg, sizeof(par)); -+ if (ret) { -+ dev_dbg(the_madc->dev, "copy_from_user: %d\n", ret); -+ return -EACCES; -+ } -+ -+ switch (cmd) { -+ case TWL4030_MADC_IOCX_ADC_RAW_READ: { -+ struct twl4030_madc_request req; -+ if (par.channel >= TWL4030_MADC_MAX_CHANNELS) -+ return -EINVAL; -+ -+ req.channels = (1 << par.channel); -+ req.do_avg = par.average; -+ req.method = TWL4030_MADC_SW1; -+ req.func_cb = NULL; -+ -+ val = twl4030_madc_conversion(&req); -+ if (val <= 0) { -+ par.status = -1; -+ } else { -+ par.status = 0; -+ par.result = (u16)req.rbuf[par.channel]; -+ } -+ break; -+ } -+ default: -+ return -EINVAL; -+ } -+ -+ ret = copy_to_user((void __user *) arg, &par, sizeof(par)); -+ if (ret) { -+ dev_dbg(the_madc->dev, "copy_to_user: %d\n", ret); -+ return -EACCES; -+ } -+ -+ return 0; -+} -+ -+static struct file_operations twl4030_madc_fileops = { -+ .owner = THIS_MODULE, -+ .unlocked_ioctl = twl4030_madc_ioctl -+}; -+ -+static struct miscdevice twl4030_madc_device = { -+ .minor = MISC_DYNAMIC_MINOR, -+ .name = "twl4030-madc", -+ .fops = &twl4030_madc_fileops -+}; -+ -+static int __init twl4030_madc_probe(struct platform_device *pdev) -+{ -+ struct twl4030_madc_data *madc; -+ struct twl4030_madc_platform_data *pdata = pdev->dev.platform_data; -+ int ret; -+ u8 regval; -+ -+ madc = kzalloc(sizeof *madc, GFP_KERNEL); -+ if (!madc) -+ return -ENOMEM; -+ -+ if (!pdata) { -+ dev_dbg(&pdev->dev, "platform_data not available\n"); -+ ret = -EINVAL; -+ goto err_pdata; -+ } -+ -+ madc->imr = (pdata->irq_line == 1) ? TWL4030_MADC_IMR1 : TWL4030_MADC_IMR2; -+ madc->isr = (pdata->irq_line == 1) ? TWL4030_MADC_ISR1 : TWL4030_MADC_ISR2; -+ -+ ret = misc_register(&twl4030_madc_device); -+ if (ret) { -+ dev_dbg(&pdev->dev, "could not register misc_device\n"); -+ goto err_misc; -+ } -+ twl4030_madc_set_power(madc, 1); -+ twl4030_madc_set_current_generator(madc, 0, 1); -+ -+ /* Enable ADCIN3 through 6 */ -+ ret = twl4030_i2c_read_u8(TWL4030_MODULE_USB, -+ ®val, TWL4030_USB_CARKIT_ANA_CTRL); -+ -+ regval |= TWL4030_USB_SEL_MADC_MCPC; -+ -+ ret = twl4030_i2c_write_u8(TWL4030_MODULE_USB, -+ regval, TWL4030_USB_CARKIT_ANA_CTRL); -+ -+ -+ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ®val, TWL4030_BCI_BCICTL1); -+ -+ regval |= TWL4030_BCI_MESBAT; -+ -+ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, -+ regval, TWL4030_BCI_BCICTL1); -+ -+ ret = request_irq(platform_get_irq(pdev, 0), twl4030_madc_irq_handler, -+ 0, "twl4030_madc", madc); -+ if (ret) { -+ dev_dbg(&pdev->dev, "could not request irq\n"); -+ goto err_irq; -+ } -+ -+ platform_set_drvdata(pdev, madc); -+ mutex_init(&madc->lock); -+ INIT_WORK(&madc->ws, twl4030_madc_work); -+ -+ the_madc = madc; -+ -+ return 0; -+ -+err_irq: -+ misc_deregister(&twl4030_madc_device); -+ -+err_misc: -+err_pdata: -+ kfree(madc); -+ -+ return ret; -+} -+ -+static int __exit twl4030_madc_remove(struct platform_device *pdev) -+{ -+ struct twl4030_madc_data *madc = platform_get_drvdata(pdev); -+ -+ twl4030_madc_set_power(madc, 0); -+ twl4030_madc_set_current_generator(madc, 0, 0); -+ free_irq(platform_get_irq(pdev, 0), madc); -+ cancel_work_sync(&madc->ws); -+ misc_deregister(&twl4030_madc_device); -+ -+ return 0; -+} -+ -+static struct platform_driver twl4030_madc_driver = { -+ .probe = twl4030_madc_probe, -+ .remove = __exit_p(twl4030_madc_remove), -+ .driver = { -+ .name = "twl4030_madc", -+ .owner = THIS_MODULE, -+ }, -+}; -+ -+static int __init twl4030_madc_init(void) -+{ -+ return platform_driver_register(&twl4030_madc_driver); -+} -+module_init(twl4030_madc_init); -+ -+static void __exit twl4030_madc_exit(void) -+{ -+ platform_driver_unregister(&twl4030_madc_driver); -+} -+module_exit(twl4030_madc_exit); -+ -+MODULE_ALIAS("platform:twl4030-madc"); -+MODULE_AUTHOR("Nokia Corporation"); -+MODULE_DESCRIPTION("twl4030 ADC driver"); -+MODULE_LICENSE("GPL"); -+ --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch b/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch new file mode 100644 index 0000000000..57253a9bb3 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch @@ -0,0 +1,29 @@ +From e6b2441d2d92a62cf30dfde9451bdaebf6a2cee0 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:17:44 -0800 +Subject: [PATCH 17/43] drivers: net: smsc911x: return ENODEV if device is not found + +Signed-off-by: Steve Sakoman +--- + drivers/net/smsc911x.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c +index 494cd91..2472cb0 100644 +--- a/drivers/net/smsc911x.c ++++ b/drivers/net/smsc911x.c +@@ -2021,8 +2021,10 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) + } + + retval = smsc911x_init(dev); +- if (retval < 0) ++ if (retval < 0) { ++ retval = -ENODEV; + goto out_unmap_io_3; ++ } + + /* configure irq polarity and type before connecting isr */ + if (pdata->config.irq_polarity == SMSC911X_IRQ_POLARITY_ACTIVE_HIGH) +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch b/recipes/linux/linux-omap-psp-2.6.32/0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch deleted file mode 100644 index 3c858493a5..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 3d9fb5ea6d899ad50dadd8ec0a4004077425916b Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 15:54:58 -0800 -Subject: [PATCH 18/45] ARM: OMAP: Add missing twl4030 madc header file - ---- - include/linux/i2c/twl4030-madc.h | 130 ++++++++++++++++++++++++++++++++++++++ - 1 files changed, 130 insertions(+), 0 deletions(-) - create mode 100644 include/linux/i2c/twl4030-madc.h - -diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/twl4030-madc.h -new file mode 100644 -index 0000000..341a665 ---- /dev/null -+++ b/include/linux/i2c/twl4030-madc.h -@@ -0,0 +1,130 @@ -+/* -+ * include/linux/i2c/twl4030-madc.h -+ * -+ * TWL4030 MADC module driver header -+ * -+ * Copyright (C) 2008 Nokia Corporation -+ * Mikko Ylinen -+ * -+ * 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 -+ * -+ */ -+ -+#ifndef _TWL4030_MADC_H -+#define _TWL4030_MADC_H -+ -+struct twl4030_madc_conversion_method { -+ u8 sel; -+ u8 avg; -+ u8 rbase; -+ u8 ctrl; -+}; -+ -+#define TWL4030_MADC_MAX_CHANNELS 16 -+ -+struct twl4030_madc_request { -+ u16 channels; -+ u16 do_avg; -+ u16 method; -+ u16 type; -+ int active; -+ int result_pending; -+ int rbuf[TWL4030_MADC_MAX_CHANNELS]; -+ void (*func_cb)(int len, int channels, int *buf); -+}; -+ -+enum conversion_methods { -+ TWL4030_MADC_RT, -+ TWL4030_MADC_SW1, -+ TWL4030_MADC_SW2, -+ TWL4030_MADC_NUM_METHODS -+}; -+ -+enum sample_type { -+ TWL4030_MADC_WAIT, -+ TWL4030_MADC_IRQ_ONESHOT, -+ TWL4030_MADC_IRQ_REARM -+}; -+ -+#define TWL4030_MADC_CTRL1 0x00 -+#define TWL4030_MADC_CTRL2 0x01 -+ -+#define TWL4030_MADC_RTSELECT_LSB 0x02 -+#define TWL4030_MADC_SW1SELECT_LSB 0x06 -+#define TWL4030_MADC_SW2SELECT_LSB 0x0A -+ -+#define TWL4030_MADC_RTAVERAGE_LSB 0x04 -+#define TWL4030_MADC_SW1AVERAGE_LSB 0x08 -+#define TWL4030_MADC_SW2AVERAGE_LSB 0x0C -+ -+#define TWL4030_MADC_CTRL_SW1 0x12 -+#define TWL4030_MADC_CTRL_SW2 0x13 -+ -+#define TWL4030_MADC_RTCH0_LSB 0x17 -+#define TWL4030_MADC_GPCH0_LSB 0x37 -+ -+#define TWL4030_MADC_MADCON (1<<0) /* MADC power on */ -+#define TWL4030_MADC_BUSY (1<<0) /* MADC busy */ -+#define TWL4030_MADC_EOC_SW (1<<1) /* MADC conversion completion */ -+#define TWL4030_MADC_SW_START (1<<5) /* MADC SWx start conversion */ -+ -+#define TWL4030_MADC_ADCIN0 (1<<0) -+#define TWL4030_MADC_ADCIN1 (1<<1) -+#define TWL4030_MADC_ADCIN2 (1<<2) -+#define TWL4030_MADC_ADCIN3 (1<<3) -+#define TWL4030_MADC_ADCIN4 (1<<4) -+#define TWL4030_MADC_ADCIN5 (1<<5) -+#define TWL4030_MADC_ADCIN6 (1<<6) -+#define TWL4030_MADC_ADCIN7 (1<<7) -+#define TWL4030_MADC_ADCIN8 (1<<8) -+#define TWL4030_MADC_ADCIN9 (1<<9) -+#define TWL4030_MADC_ADCIN10 (1<<10) -+#define TWL4030_MADC_ADCIN11 (1<<11) -+#define TWL4030_MADC_ADCIN12 (1<<12) -+#define TWL4030_MADC_ADCIN13 (1<<13) -+#define TWL4030_MADC_ADCIN14 (1<<14) -+#define TWL4030_MADC_ADCIN15 (1<<15) -+ -+/* Fixed channels */ -+#define TWL4030_MADC_BTEMP TWL4030_MADC_ADCIN1 -+#define TWL4030_MADC_VBUS TWL4030_MADC_ADCIN8 -+#define TWL4030_MADC_VBKB TWL4030_MADC_ADCIN9 -+#define TWL4030_MADC_ICHG TWL4030_MADC_ADCIN10 -+#define TWL4030_MADC_VCHG TWL4030_MADC_ADCIN11 -+#define TWL4030_MADC_VBAT TWL4030_MADC_ADCIN12 -+ -+/* BCI related - XXX To be moved elsewhere */ -+#define TWL4030_BCI_BCICTL1 0x23 -+#define TWL4030_BCI_MESBAT (1<<1) -+#define TWL4030_BCI_TYPEN (1<<4) -+#define TWL4030_BCI_ITHEN (1<<3) -+ -+/* USB related - XXX To be moved elsewhere */ -+#define TWL4030_USB_CARKIT_ANA_CTRL 0xBB -+#define TWL4030_USB_SEL_MADC_MCPC (1<<3) -+ -+#define TWL4030_MADC_IOC_MAGIC '`' -+#define TWL4030_MADC_IOCX_ADC_RAW_READ _IO(TWL4030_MADC_IOC_MAGIC, 0) -+ -+struct twl4030_madc_user_parms { -+ int channel; -+ int average; -+ int status; -+ u16 result; -+}; -+ -+int twl4030_madc_conversion(struct twl4030_madc_request *conv); -+ -+#endif --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch b/recipes/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch new file mode 100644 index 0000000000..a90245abd3 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch @@ -0,0 +1,53 @@ +From 551a2a661a3b55820560a30fb19c6df10086b91f Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:24:10 -0800 +Subject: [PATCH 18/43] drivers: input: touchscreen: ads7846: return ENODEV if device is not found + +Signed-off-by: Steve Sakoman +--- + drivers/input/touchscreen/ads7846.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c +index e53ac1f..45287ab 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -1165,9 +1165,16 @@ static int __devinit ads7846_probe(struct spi_device *spi) + /* take a first sample, leaving nPENIRQ active and vREF off; avoid + * the touchscreen, in case it's not connected. + */ +- (void) ads7846_read12_ser(&spi->dev, ++ err = ads7846_read12_ser(&spi->dev, + READ_12BIT_SER(vaux) | ADS_PD10_ALL_ON); + ++ /* if sample is all 0's or all 1's then there is no device on spi */ ++ if ( (err == 0x000) || (err == 0xfff)) { ++ dev_info(&spi->dev, "no device detected, test read result was 0x%08X\n", err); ++ err = -ENODEV; ++ goto err_free_irq; ++ } ++ + err = sysfs_create_group(&spi->dev.kobj, &ads784x_attr_group); + if (err) + goto err_remove_hwmon; +@@ -1188,7 +1195,7 @@ static int __devinit ads7846_probe(struct spi_device *spi) + err_free_irq: + free_irq(spi->irq, ts); + err_free_gpio: +- if (ts->gpio_pendown != -1) ++ if (!ts->get_pendown_state && ts->gpio_pendown != -1) + gpio_free(ts->gpio_pendown); + err_cleanup_filter: + if (ts->filter_cleanup) +@@ -1216,7 +1223,7 @@ static int __devexit ads7846_remove(struct spi_device *spi) + /* suspend left the IRQ disabled */ + enable_irq(ts->spi->irq); + +- if (ts->gpio_pendown != -1) ++ if (!ts->get_pendown_state && ts->gpio_pendown != -1) + gpio_free(ts->gpio_pendown); + + if (ts->filter_cleanup) +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch b/recipes/linux/linux-omap-psp-2.6.32/0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch deleted file mode 100644 index 42fff963a6..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c4ff1cf23fc3bf33b3f9b91591af7146f5391b3f Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 14:27:15 -0800 -Subject: [PATCH 19/45] ARM: OMAP: Add twl4030 madc support to Overo - ---- - arch/arm/mach-omap2/board-overo.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c -index 6204b8c..9c76588 100644 ---- a/arch/arm/mach-omap2/board-overo.c -+++ b/arch/arm/mach-omap2/board-overo.c -@@ -390,10 +390,15 @@ static struct twl4030_codec_data overo_codec_data = { - - /* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ - -+static struct twl4030_madc_platform_data overo_madc_data = { -+ .irq_line = 1, -+}; -+ - static struct twl4030_platform_data overo_twldata = { - .irq_base = TWL4030_IRQ_BASE, - .irq_end = TWL4030_IRQ_END, - .gpio = &overo_gpio_data, -+ .madc = &overo_madc_data, - .usb = &overo_usb_data, - .codec = &overo_codec_data, - .vmmc1 = &overo_vmmc1, --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch new file mode 100644 index 0000000000..09c62a7478 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch @@ -0,0 +1,601 @@ +From c9ff40a9288c0cbac9d10b14ae05db1bdba71a53 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:19:34 -0800 +Subject: [PATCH 19/43] drivers: mfd: add twl4030 madc driver + +--- + drivers/mfd/Kconfig | 21 ++ + drivers/mfd/Makefile | 1 + + drivers/mfd/twl4030-madc.c | 536 ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 558 insertions(+), 0 deletions(-) + create mode 100644 drivers/mfd/twl4030-madc.c + +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index 8782978..aefdd66 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -135,6 +135,27 @@ config TWL4030_CODEC + select MFD_CORE + default n + ++config TWL4030_MADC ++ tristate "TWL4030 MADC Driver" ++ depends on TWL4030_CORE ++ help ++ The TWL4030 Monitoring ADC driver enables the host ++ processor to monitor analog signals using analog-to-digital ++ conversions on the input source. TWL4030 MADC provides the ++ following features: ++ - Single 10-bit ADC with successive approximation register (SAR) conversion; ++ - Analog multiplexer for 16 inputs; ++ - Seven (of the 16) inputs are freely available; ++ - Battery voltage monitoring; ++ - Concurrent conversion request management; ++ - Interrupt signal to Primary Interrupt Handler; ++ - Averaging feature; ++ - Selective enable/disable of the averaging feature. ++ ++ Say 'y' here to statically link this module into the kernel or 'm' ++ to build it as a dinamically loadable module. The module will be ++ called twl4030-madc.ko ++ + config MFD_TMIO + bool + default n +diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile +index ca2f2c4..ec9c4f2 100644 +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -29,6 +29,7 @@ obj-$(CONFIG_MENELAUS) += menelaus.o + obj-$(CONFIG_TWL4030_CORE) += twl-core.o twl4030-irq.o twl6030-irq.o + obj-$(CONFIG_TWL4030_POWER) += twl4030-power.o + obj-$(CONFIG_TWL4030_CODEC) += twl4030-codec.o ++obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o + + obj-$(CONFIG_MFD_MC13783) += mc13783-core.o + +diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c +new file mode 100644 +index 0000000..7d83ab8 +--- /dev/null ++++ b/drivers/mfd/twl4030-madc.c +@@ -0,0 +1,536 @@ ++/* ++ * TWL4030 MADC module driver ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Mikko Ylinen ++ * ++ * 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 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#define TWL4030_MADC_PFX "twl4030-madc: " ++ ++struct twl4030_madc_data { ++ struct device *dev; ++ struct mutex lock; ++ struct work_struct ws; ++ struct twl4030_madc_request requests[TWL4030_MADC_NUM_METHODS]; ++ int imr; ++ int isr; ++}; ++ ++static struct twl4030_madc_data *the_madc; ++ ++static ++const struct twl4030_madc_conversion_method twl4030_conversion_methods[] = { ++ [TWL4030_MADC_RT] = { ++ .sel = TWL4030_MADC_RTSELECT_LSB, ++ .avg = TWL4030_MADC_RTAVERAGE_LSB, ++ .rbase = TWL4030_MADC_RTCH0_LSB, ++ }, ++ [TWL4030_MADC_SW1] = { ++ .sel = TWL4030_MADC_SW1SELECT_LSB, ++ .avg = TWL4030_MADC_SW1AVERAGE_LSB, ++ .rbase = TWL4030_MADC_GPCH0_LSB, ++ .ctrl = TWL4030_MADC_CTRL_SW1, ++ }, ++ [TWL4030_MADC_SW2] = { ++ .sel = TWL4030_MADC_SW2SELECT_LSB, ++ .avg = TWL4030_MADC_SW2AVERAGE_LSB, ++ .rbase = TWL4030_MADC_GPCH0_LSB, ++ .ctrl = TWL4030_MADC_CTRL_SW2, ++ }, ++}; ++ ++static int twl4030_madc_read(struct twl4030_madc_data *madc, u8 reg) ++{ ++ int ret; ++ u8 val; ++ ++ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); ++ if (ret) { ++ dev_dbg(madc->dev, "unable to read register 0x%X\n", reg); ++ return ret; ++ } ++ ++ return val; ++} ++ ++static void twl4030_madc_write(struct twl4030_madc_data *madc, u8 reg, u8 val) ++{ ++ int ret; ++ ++ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); ++ if (ret) ++ dev_err(madc->dev, "unable to write register 0x%X\n", reg); ++} ++ ++static int twl4030_madc_channel_raw_read(struct twl4030_madc_data *madc, u8 reg) ++{ ++ u8 msb, lsb; ++ ++ /* For each ADC channel, we have MSB and LSB register pair. MSB address ++ * is always LSB address+1. reg parameter is the addr of LSB register */ ++ msb = twl4030_madc_read(madc, reg + 1); ++ lsb = twl4030_madc_read(madc, reg); ++ ++ return (int)(((msb << 8) | lsb) >> 6); ++} ++ ++static int twl4030_madc_read_channels(struct twl4030_madc_data *madc, ++ u8 reg_base, u16 channels, int *buf) ++{ ++ int count = 0; ++ u8 reg, i; ++ ++ if (unlikely(!buf)) ++ return 0; ++ ++ for (i = 0; i < TWL4030_MADC_MAX_CHANNELS; i++) { ++ if (channels & (1<imr); ++ val &= ~(1 << id); ++ twl4030_madc_write(madc, madc->imr, val); ++} ++ ++static void twl4030_madc_disable_irq(struct twl4030_madc_data *madc, int id) ++{ ++ u8 val; ++ ++ val = twl4030_madc_read(madc, madc->imr); ++ val |= (1 << id); ++ twl4030_madc_write(madc, madc->imr, val); ++} ++ ++static irqreturn_t twl4030_madc_irq_handler(int irq, void *_madc) ++{ ++ struct twl4030_madc_data *madc = _madc; ++ u8 isr_val, imr_val; ++ int i; ++ ++#ifdef CONFIG_LOCKDEP ++ /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which ++ * we don't want and can't tolerate. Although it might be ++ * friendlier not to borrow this thread context... ++ */ ++ local_irq_enable(); ++#endif ++ ++ /* Use COR to ack interrupts since we have no shared IRQs in ISRx */ ++ isr_val = twl4030_madc_read(madc, madc->isr); ++ imr_val = twl4030_madc_read(madc, madc->imr); ++ ++ isr_val &= ~imr_val; ++ ++ for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) { ++ ++ if (!(isr_val & (1<requests[i].result_pending = 1; ++ } ++ ++ schedule_work(&madc->ws); ++ ++ return IRQ_HANDLED; ++} ++ ++static void twl4030_madc_work(struct work_struct *ws) ++{ ++ const struct twl4030_madc_conversion_method *method; ++ struct twl4030_madc_data *madc; ++ struct twl4030_madc_request *r; ++ int len, i; ++ ++ madc = container_of(ws, struct twl4030_madc_data, ws); ++ mutex_lock(&madc->lock); ++ ++ for (i = 0; i < TWL4030_MADC_NUM_METHODS; i++) { ++ ++ r = &madc->requests[i]; ++ ++ /* No pending results for this method, move to next one */ ++ if (!r->result_pending) ++ continue; ++ ++ method = &twl4030_conversion_methods[r->method]; ++ ++ /* Read results */ ++ len = twl4030_madc_read_channels(madc, method->rbase, ++ r->channels, r->rbuf); ++ ++ /* Return results to caller */ ++ if (r->func_cb != NULL) { ++ r->func_cb(len, r->channels, r->rbuf); ++ r->func_cb = NULL; ++ } ++ ++ /* Free request */ ++ r->result_pending = 0; ++ r->active = 0; ++ } ++ ++ mutex_unlock(&madc->lock); ++} ++ ++static int twl4030_madc_set_irq(struct twl4030_madc_data *madc, ++ struct twl4030_madc_request *req) ++{ ++ struct twl4030_madc_request *p; ++ ++ p = &madc->requests[req->method]; ++ ++ memcpy(p, req, sizeof *req); ++ ++ twl4030_madc_enable_irq(madc, req->method); ++ ++ return 0; ++} ++ ++static inline void twl4030_madc_start_conversion(struct twl4030_madc_data *madc, ++ int conv_method) ++{ ++ const struct twl4030_madc_conversion_method *method; ++ ++ method = &twl4030_conversion_methods[conv_method]; ++ ++ switch (conv_method) { ++ case TWL4030_MADC_SW1: ++ case TWL4030_MADC_SW2: ++ twl4030_madc_write(madc, method->ctrl, TWL4030_MADC_SW_START); ++ break; ++ case TWL4030_MADC_RT: ++ default: ++ break; ++ } ++} ++ ++static int twl4030_madc_wait_conversion_ready( ++ struct twl4030_madc_data *madc, ++ unsigned int timeout_ms, u8 status_reg) ++{ ++ unsigned long timeout; ++ ++ timeout = jiffies + msecs_to_jiffies(timeout_ms); ++ do { ++ u8 reg; ++ ++ reg = twl4030_madc_read(madc, status_reg); ++ if (!(reg & TWL4030_MADC_BUSY) && (reg & TWL4030_MADC_EOC_SW)) ++ return 0; ++ } while (!time_after(jiffies, timeout)); ++ ++ return -EAGAIN; ++} ++ ++int twl4030_madc_conversion(struct twl4030_madc_request *req) ++{ ++ const struct twl4030_madc_conversion_method *method; ++ u8 ch_msb, ch_lsb; ++ int ret; ++ ++ if (unlikely(!req)) ++ return -EINVAL; ++ ++ mutex_lock(&the_madc->lock); ++ ++ /* Do we have a conversion request ongoing */ ++ if (the_madc->requests[req->method].active) { ++ ret = -EBUSY; ++ goto out; ++ } ++ ++ ch_msb = (req->channels >> 8) & 0xff; ++ ch_lsb = req->channels & 0xff; ++ ++ method = &twl4030_conversion_methods[req->method]; ++ ++ /* Select channels to be converted */ ++ twl4030_madc_write(the_madc, method->sel + 1, ch_msb); ++ twl4030_madc_write(the_madc, method->sel, ch_lsb); ++ ++ /* Select averaging for all channels if do_avg is set */ ++ if (req->do_avg) { ++ twl4030_madc_write(the_madc, method->avg + 1, ch_msb); ++ twl4030_madc_write(the_madc, method->avg, ch_lsb); ++ } ++ ++ if ((req->type == TWL4030_MADC_IRQ_ONESHOT) && (req->func_cb != NULL)) { ++ twl4030_madc_set_irq(the_madc, req); ++ twl4030_madc_start_conversion(the_madc, req->method); ++ the_madc->requests[req->method].active = 1; ++ ret = 0; ++ goto out; ++ } ++ ++ /* With RT method we should not be here anymore */ ++ if (req->method == TWL4030_MADC_RT) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ twl4030_madc_start_conversion(the_madc, req->method); ++ the_madc->requests[req->method].active = 1; ++ ++ /* Wait until conversion is ready (ctrl register returns EOC) */ ++ ret = twl4030_madc_wait_conversion_ready(the_madc, 5, method->ctrl); ++ if (ret) { ++ dev_dbg(the_madc->dev, "conversion timeout!\n"); ++ the_madc->requests[req->method].active = 0; ++ goto out; ++ } ++ ++ ret = twl4030_madc_read_channels(the_madc, method->rbase, req->channels, ++ req->rbuf); ++ ++ the_madc->requests[req->method].active = 0; ++ ++out: ++ mutex_unlock(&the_madc->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(twl4030_madc_conversion); ++ ++static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc, ++ int chan, int on) ++{ ++ int ret; ++ u8 regval; ++ ++ /* Current generator is only available for ADCIN0 and ADCIN1. NB: ++ * ADCIN1 current generator only works when AC or VBUS is present */ ++ if (chan > 1) ++ return EINVAL; ++ ++ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ®val, TWL4030_BCI_BCICTL1); ++ if (on) ++ regval |= (chan) ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN; ++ else ++ regval &= (chan) ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN; ++ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, ++ regval, TWL4030_BCI_BCICTL1); ++ ++ return ret; ++} ++ ++static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on) ++{ ++ u8 regval; ++ ++ regval = twl4030_madc_read(madc, TWL4030_MADC_CTRL1); ++ if (on) ++ regval |= TWL4030_MADC_MADCON; ++ else ++ regval &= ~TWL4030_MADC_MADCON; ++ twl4030_madc_write(madc, TWL4030_MADC_CTRL1, regval); ++ ++ return 0; ++} ++ ++static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd, ++ unsigned long arg) ++{ ++ struct twl4030_madc_user_parms par; ++ int val, ret; ++ ++ ret = copy_from_user(&par, (void __user *) arg, sizeof(par)); ++ if (ret) { ++ dev_dbg(the_madc->dev, "copy_from_user: %d\n", ret); ++ return -EACCES; ++ } ++ ++ switch (cmd) { ++ case TWL4030_MADC_IOCX_ADC_RAW_READ: { ++ struct twl4030_madc_request req; ++ if (par.channel >= TWL4030_MADC_MAX_CHANNELS) ++ return -EINVAL; ++ ++ req.channels = (1 << par.channel); ++ req.do_avg = par.average; ++ req.method = TWL4030_MADC_SW1; ++ req.func_cb = NULL; ++ ++ val = twl4030_madc_conversion(&req); ++ if (val <= 0) { ++ par.status = -1; ++ } else { ++ par.status = 0; ++ par.result = (u16)req.rbuf[par.channel]; ++ } ++ break; ++ } ++ default: ++ return -EINVAL; ++ } ++ ++ ret = copy_to_user((void __user *) arg, &par, sizeof(par)); ++ if (ret) { ++ dev_dbg(the_madc->dev, "copy_to_user: %d\n", ret); ++ return -EACCES; ++ } ++ ++ return 0; ++} ++ ++static struct file_operations twl4030_madc_fileops = { ++ .owner = THIS_MODULE, ++ .unlocked_ioctl = twl4030_madc_ioctl ++}; ++ ++static struct miscdevice twl4030_madc_device = { ++ .minor = MISC_DYNAMIC_MINOR, ++ .name = "twl4030-madc", ++ .fops = &twl4030_madc_fileops ++}; ++ ++static int __init twl4030_madc_probe(struct platform_device *pdev) ++{ ++ struct twl4030_madc_data *madc; ++ struct twl4030_madc_platform_data *pdata = pdev->dev.platform_data; ++ int ret; ++ u8 regval; ++ ++ madc = kzalloc(sizeof *madc, GFP_KERNEL); ++ if (!madc) ++ return -ENOMEM; ++ ++ if (!pdata) { ++ dev_dbg(&pdev->dev, "platform_data not available\n"); ++ ret = -EINVAL; ++ goto err_pdata; ++ } ++ ++ madc->imr = (pdata->irq_line == 1) ? TWL4030_MADC_IMR1 : TWL4030_MADC_IMR2; ++ madc->isr = (pdata->irq_line == 1) ? TWL4030_MADC_ISR1 : TWL4030_MADC_ISR2; ++ ++ ret = misc_register(&twl4030_madc_device); ++ if (ret) { ++ dev_dbg(&pdev->dev, "could not register misc_device\n"); ++ goto err_misc; ++ } ++ twl4030_madc_set_power(madc, 1); ++ twl4030_madc_set_current_generator(madc, 0, 1); ++ ++ /* Enable ADCIN3 through 6 */ ++ ret = twl4030_i2c_read_u8(TWL4030_MODULE_USB, ++ ®val, TWL4030_USB_CARKIT_ANA_CTRL); ++ ++ regval |= TWL4030_USB_SEL_MADC_MCPC; ++ ++ ret = twl4030_i2c_write_u8(TWL4030_MODULE_USB, ++ regval, TWL4030_USB_CARKIT_ANA_CTRL); ++ ++ ++ ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ®val, TWL4030_BCI_BCICTL1); ++ ++ regval |= TWL4030_BCI_MESBAT; ++ ++ ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, ++ regval, TWL4030_BCI_BCICTL1); ++ ++ ret = request_irq(platform_get_irq(pdev, 0), twl4030_madc_irq_handler, ++ 0, "twl4030_madc", madc); ++ if (ret) { ++ dev_dbg(&pdev->dev, "could not request irq\n"); ++ goto err_irq; ++ } ++ ++ platform_set_drvdata(pdev, madc); ++ mutex_init(&madc->lock); ++ INIT_WORK(&madc->ws, twl4030_madc_work); ++ ++ the_madc = madc; ++ ++ return 0; ++ ++err_irq: ++ misc_deregister(&twl4030_madc_device); ++ ++err_misc: ++err_pdata: ++ kfree(madc); ++ ++ return ret; ++} ++ ++static int __exit twl4030_madc_remove(struct platform_device *pdev) ++{ ++ struct twl4030_madc_data *madc = platform_get_drvdata(pdev); ++ ++ twl4030_madc_set_power(madc, 0); ++ twl4030_madc_set_current_generator(madc, 0, 0); ++ free_irq(platform_get_irq(pdev, 0), madc); ++ cancel_work_sync(&madc->ws); ++ misc_deregister(&twl4030_madc_device); ++ ++ return 0; ++} ++ ++static struct platform_driver twl4030_madc_driver = { ++ .probe = twl4030_madc_probe, ++ .remove = __exit_p(twl4030_madc_remove), ++ .driver = { ++ .name = "twl4030_madc", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init twl4030_madc_init(void) ++{ ++ return platform_driver_register(&twl4030_madc_driver); ++} ++module_init(twl4030_madc_init); ++ ++static void __exit twl4030_madc_exit(void) ++{ ++ platform_driver_unregister(&twl4030_madc_driver); ++} ++module_exit(twl4030_madc_exit); ++ ++MODULE_ALIAS("platform:twl4030-madc"); ++MODULE_AUTHOR("Nokia Corporation"); ++MODULE_DESCRIPTION("twl4030 ADC driver"); ++MODULE_LICENSE("GPL"); ++ +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch b/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch new file mode 100644 index 0000000000..c92d46ab81 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch @@ -0,0 +1,149 @@ +From 9b4c740531916992ba11be300250d51e2e2a1638 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 15:54:58 -0800 +Subject: [PATCH 20/43] ARM: OMAP: Add missing twl4030 madc header file + +--- + include/linux/i2c/twl4030-madc.h | 130 ++++++++++++++++++++++++++++++++++++++ + 1 files changed, 130 insertions(+), 0 deletions(-) + create mode 100644 include/linux/i2c/twl4030-madc.h + +diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/twl4030-madc.h +new file mode 100644 +index 0000000..341a665 +--- /dev/null ++++ b/include/linux/i2c/twl4030-madc.h +@@ -0,0 +1,130 @@ ++/* ++ * include/linux/i2c/twl4030-madc.h ++ * ++ * TWL4030 MADC module driver header ++ * ++ * Copyright (C) 2008 Nokia Corporation ++ * Mikko Ylinen ++ * ++ * 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 ++ * ++ */ ++ ++#ifndef _TWL4030_MADC_H ++#define _TWL4030_MADC_H ++ ++struct twl4030_madc_conversion_method { ++ u8 sel; ++ u8 avg; ++ u8 rbase; ++ u8 ctrl; ++}; ++ ++#define TWL4030_MADC_MAX_CHANNELS 16 ++ ++struct twl4030_madc_request { ++ u16 channels; ++ u16 do_avg; ++ u16 method; ++ u16 type; ++ int active; ++ int result_pending; ++ int rbuf[TWL4030_MADC_MAX_CHANNELS]; ++ void (*func_cb)(int len, int channels, int *buf); ++}; ++ ++enum conversion_methods { ++ TWL4030_MADC_RT, ++ TWL4030_MADC_SW1, ++ TWL4030_MADC_SW2, ++ TWL4030_MADC_NUM_METHODS ++}; ++ ++enum sample_type { ++ TWL4030_MADC_WAIT, ++ TWL4030_MADC_IRQ_ONESHOT, ++ TWL4030_MADC_IRQ_REARM ++}; ++ ++#define TWL4030_MADC_CTRL1 0x00 ++#define TWL4030_MADC_CTRL2 0x01 ++ ++#define TWL4030_MADC_RTSELECT_LSB 0x02 ++#define TWL4030_MADC_SW1SELECT_LSB 0x06 ++#define TWL4030_MADC_SW2SELECT_LSB 0x0A ++ ++#define TWL4030_MADC_RTAVERAGE_LSB 0x04 ++#define TWL4030_MADC_SW1AVERAGE_LSB 0x08 ++#define TWL4030_MADC_SW2AVERAGE_LSB 0x0C ++ ++#define TWL4030_MADC_CTRL_SW1 0x12 ++#define TWL4030_MADC_CTRL_SW2 0x13 ++ ++#define TWL4030_MADC_RTCH0_LSB 0x17 ++#define TWL4030_MADC_GPCH0_LSB 0x37 ++ ++#define TWL4030_MADC_MADCON (1<<0) /* MADC power on */ ++#define TWL4030_MADC_BUSY (1<<0) /* MADC busy */ ++#define TWL4030_MADC_EOC_SW (1<<1) /* MADC conversion completion */ ++#define TWL4030_MADC_SW_START (1<<5) /* MADC SWx start conversion */ ++ ++#define TWL4030_MADC_ADCIN0 (1<<0) ++#define TWL4030_MADC_ADCIN1 (1<<1) ++#define TWL4030_MADC_ADCIN2 (1<<2) ++#define TWL4030_MADC_ADCIN3 (1<<3) ++#define TWL4030_MADC_ADCIN4 (1<<4) ++#define TWL4030_MADC_ADCIN5 (1<<5) ++#define TWL4030_MADC_ADCIN6 (1<<6) ++#define TWL4030_MADC_ADCIN7 (1<<7) ++#define TWL4030_MADC_ADCIN8 (1<<8) ++#define TWL4030_MADC_ADCIN9 (1<<9) ++#define TWL4030_MADC_ADCIN10 (1<<10) ++#define TWL4030_MADC_ADCIN11 (1<<11) ++#define TWL4030_MADC_ADCIN12 (1<<12) ++#define TWL4030_MADC_ADCIN13 (1<<13) ++#define TWL4030_MADC_ADCIN14 (1<<14) ++#define TWL4030_MADC_ADCIN15 (1<<15) ++ ++/* Fixed channels */ ++#define TWL4030_MADC_BTEMP TWL4030_MADC_ADCIN1 ++#define TWL4030_MADC_VBUS TWL4030_MADC_ADCIN8 ++#define TWL4030_MADC_VBKB TWL4030_MADC_ADCIN9 ++#define TWL4030_MADC_ICHG TWL4030_MADC_ADCIN10 ++#define TWL4030_MADC_VCHG TWL4030_MADC_ADCIN11 ++#define TWL4030_MADC_VBAT TWL4030_MADC_ADCIN12 ++ ++/* BCI related - XXX To be moved elsewhere */ ++#define TWL4030_BCI_BCICTL1 0x23 ++#define TWL4030_BCI_MESBAT (1<<1) ++#define TWL4030_BCI_TYPEN (1<<4) ++#define TWL4030_BCI_ITHEN (1<<3) ++ ++/* USB related - XXX To be moved elsewhere */ ++#define TWL4030_USB_CARKIT_ANA_CTRL 0xBB ++#define TWL4030_USB_SEL_MADC_MCPC (1<<3) ++ ++#define TWL4030_MADC_IOC_MAGIC '`' ++#define TWL4030_MADC_IOCX_ADC_RAW_READ _IO(TWL4030_MADC_IOC_MAGIC, 0) ++ ++struct twl4030_madc_user_parms { ++ int channel; ++ int average; ++ int status; ++ u16 result; ++}; ++ ++int twl4030_madc_conversion(struct twl4030_madc_request *conv); ++ ++#endif +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch b/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch deleted file mode 100644 index 7a62bf60ae..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 4721d7878b3bb28e83d245cd3014b11f6e289126 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 14:32:36 -0800 -Subject: [PATCH 20/45] ARM: OMAP: Add twl4030 madc support to Beagle - ---- - arch/arm/mach-omap2/board-omap3beagle.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index 429dacb..8dfb864 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -432,6 +432,10 @@ static struct twl4030_codec_data beagle_codec_data = { - .audio = &beagle_audio_data, - }; - -+static struct twl4030_madc_platform_data beagle_madc_data = { -+ .irq_line = 1, -+}; -+ - static struct twl4030_platform_data beagle_twldata = { - .irq_base = TWL4030_IRQ_BASE, - .irq_end = TWL4030_IRQ_END, -@@ -440,6 +444,7 @@ static struct twl4030_platform_data beagle_twldata = { - .usb = &beagle_usb_data, - .gpio = &beagle_gpio_data, - .codec = &beagle_codec_data, -+ .madc = &beagle_madc_data, - .vmmc1 = &beagle_vmmc1, - .vsim = &beagle_vsim, - .vdac = &beagle_vdac, --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch b/recipes/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch new file mode 100644 index 0000000000..98a1b65d6e --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch @@ -0,0 +1,32 @@ +From 9957678090f6e4bee24dca76b668b4daec02d88c Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:27:15 -0800 +Subject: [PATCH 21/43] ARM: OMAP: Add twl4030 madc support to Overo + +--- + arch/arm/mach-omap2/board-overo.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index 6204b8c..9c76588 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -390,10 +390,15 @@ static struct twl4030_codec_data overo_codec_data = { + + /* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ + ++static struct twl4030_madc_platform_data overo_madc_data = { ++ .irq_line = 1, ++}; ++ + static struct twl4030_platform_data overo_twldata = { + .irq_base = TWL4030_IRQ_BASE, + .irq_end = TWL4030_IRQ_END, + .gpio = &overo_gpio_data, ++ .madc = &overo_madc_data, + .usb = &overo_usb_data, + .codec = &overo_codec_data, + .vmmc1 = &overo_vmmc1, +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch b/recipes/linux/linux-omap-psp-2.6.32/0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch deleted file mode 100644 index 4b4160ce95..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 73457855345b6e0da83e1d452c4cb0cb28fbef34 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Tue, 19 Jan 2010 20:00:46 -0800 -Subject: [PATCH 21/45] netdev: rt73usb - add vendor/device ID for Ceiva Wireless PartNo 81726-00702 - ---- - drivers/net/wireless/rt2x00/rt73usb.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c -index ced3b6a..719ac0a 100644 ---- a/drivers/net/wireless/rt2x00/rt73usb.c -+++ b/drivers/net/wireless/rt2x00/rt73usb.c -@@ -2357,6 +2357,8 @@ static struct usb_device_id rt73usb_device_table[] = { - { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) }, - { USB_DEVICE(0x0411, 0x0116), USB_DEVICE_DATA(&rt73usb_ops) }, - { USB_DEVICE(0x0411, 0x0119), USB_DEVICE_DATA(&rt73usb_ops) }, -+ /* Ceiva Wireless PartNo 81726-00702 */ -+ { USB_DEVICE(0x178d, 0x02be), USB_DEVICE_DATA(&rt73usb_ops) }, - /* CNet */ - { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) }, - { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) }, --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch b/recipes/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch new file mode 100644 index 0000000000..b77ebf1e18 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch @@ -0,0 +1,35 @@ +From 1e7a9e815e97782f4aa69b27822fe1664faf7fd4 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:32:36 -0800 +Subject: [PATCH 22/43] ARM: OMAP: Add twl4030 madc support to Beagle + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index b3c8cb7..dd830b1 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -473,6 +473,10 @@ static struct twl4030_codec_data beagle_codec_data = { + .audio = &beagle_audio_data, + }; + ++static struct twl4030_madc_platform_data beagle_madc_data = { ++ .irq_line = 1, ++}; ++ + static struct twl4030_platform_data beagle_twldata = { + .irq_base = TWL4030_IRQ_BASE, + .irq_end = TWL4030_IRQ_END, +@@ -481,6 +485,7 @@ static struct twl4030_platform_data beagle_twldata = { + .usb = &beagle_usb_data, + .gpio = &beagle_gpio_data, + .codec = &beagle_codec_data, ++ .madc = &beagle_madc_data, + .vmmc1 = &beagle_vmmc1, + .vsim = &beagle_vsim, + .vdac = &beagle_vdac, +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0022-mmc-don-t-display-single-block-read-console-messages.patch b/recipes/linux/linux-omap-psp-2.6.32/0022-mmc-don-t-display-single-block-read-console-messages.patch deleted file mode 100644 index 7869b6db84..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0022-mmc-don-t-display-single-block-read-console-messages.patch +++ /dev/null @@ -1,28 +0,0 @@ -From aa0048368802d454253b847df33a3ef191ed5f1b Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Mon, 4 Jan 2010 19:20:25 -0800 -Subject: [PATCH 22/45] mmc: don't display single block read console messages - -mmc: don't display single block read console messages ---- - drivers/mmc/card/block.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index 85f0e8c..05492e9 100644 ---- a/drivers/mmc/card/block.c -+++ b/drivers/mmc/card/block.c -@@ -338,8 +338,8 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) - if (brq.cmd.error || brq.data.error || brq.stop.error) { - if (brq.data.blocks > 1 && rq_data_dir(req) == READ) { - /* Redo read one sector at a time */ -- printk(KERN_WARNING "%s: retrying using single " -- "block read\n", req->rq_disk->disk_name); -+ /* printk(KERN_WARNING "%s: retrying using single " -+ "block read\n", req->rq_disk->disk_name); */ - disable_multi = 1; - continue; - } --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch b/recipes/linux/linux-omap-psp-2.6.32/0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch deleted file mode 100644 index d2001398d3..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 4740a7121cbdffcc3e0a7ff26cdf08bde85d7fc7 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Sun, 24 Jan 2010 09:33:56 -0800 -Subject: [PATCH 23/45] ARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test - -otherwise it is not executed on systems that use non-twl regulators ---- - arch/arm/mach-omap2/mmc-twl4030.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c -index 0c3c72d..dbdafb9 100644 ---- a/arch/arm/mach-omap2/mmc-twl4030.c -+++ b/arch/arm/mach-omap2/mmc-twl4030.c -@@ -302,6 +302,14 @@ static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int v - if (c == NULL) - return -ENODEV; - -+ if (mmc->slots[0].internal_clock) { -+ u32 reg; -+ -+ reg = omap_ctrl_readl(control_devconf1_offset); -+ reg |= OMAP2_MMCSDIO2ADPCLKISEL; -+ omap_ctrl_writel(reg, control_devconf1_offset); -+ } -+ - /* If we don't see a Vcc regulator, assume it's a fixed - * voltage always-on regulator. - */ -@@ -322,14 +330,6 @@ static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int v - * chips/cards need an interface voltage rail too. - */ - if (power_on) { -- /* only MMC2 supports a CLKIN */ -- if (mmc->slots[0].internal_clock) { -- u32 reg; -- -- reg = omap_ctrl_readl(control_devconf1_offset); -- reg |= OMAP2_MMCSDIO2ADPCLKISEL; -- omap_ctrl_writel(reg, control_devconf1_offset); -- } - ret = mmc_regulator_set_ocr(c->vcc, vdd); - /* enable interface voltage rail, if needed */ - if (ret == 0 && c->vcc_aux) { --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch b/recipes/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch new file mode 100644 index 0000000000..bb6bd7598b --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch @@ -0,0 +1,25 @@ +From b7fda334f7a394647422f58b91b4890dc72b1c30 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 19 Jan 2010 20:00:46 -0800 +Subject: [PATCH 23/43] netdev: rt73usb - add vendor/device ID for Ceiva Wireless PartNo 81726-00702 + +--- + drivers/net/wireless/rt2x00/rt73usb.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c +index ced3b6a..719ac0a 100644 +--- a/drivers/net/wireless/rt2x00/rt73usb.c ++++ b/drivers/net/wireless/rt2x00/rt73usb.c +@@ -2357,6 +2357,8 @@ static struct usb_device_id rt73usb_device_table[] = { + { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) }, + { USB_DEVICE(0x0411, 0x0116), USB_DEVICE_DATA(&rt73usb_ops) }, + { USB_DEVICE(0x0411, 0x0119), USB_DEVICE_DATA(&rt73usb_ops) }, ++ /* Ceiva Wireless PartNo 81726-00702 */ ++ { USB_DEVICE(0x178d, 0x02be), USB_DEVICE_DATA(&rt73usb_ops) }, + /* CNet */ + { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) }, + { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) }, +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch b/recipes/linux/linux-omap-psp-2.6.32/0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch deleted file mode 100644 index 0d1e3a966d..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch +++ /dev/null @@ -1,373 +0,0 @@ -From 84a0b05b8149345c87181c74a63a27b0321f5e7f Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Sun, 14 Feb 2010 12:52:02 +0100 -Subject: [PATCH 24/45] board-overo: add PM code and sync with http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.32 - ---- - arch/arm/mach-omap2/board-overo.c | 274 ++++++++++++++++++++++++++++++++----- - 1 files changed, 242 insertions(+), 32 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c -index 9c76588..2595f81 100644 ---- a/arch/arm/mach-omap2/board-overo.c -+++ b/arch/arm/mach-omap2/board-overo.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -40,16 +41,24 @@ - - #include - #include -+#include - #include - #include - #include - #include -+#include - #include -- --#include "mux.h" -+#include -+#include -+ - #include "sdram-micron-mt46h32m32lf-6.h" - #include "mmc-twl4030.h" - -+#include "mux.h" -+ -+#include "pm.h" -+#include "omap3-opp.h" -+ - #define OVERO_GPIO_BT_XGATE 15 - #define OVERO_GPIO_W2W_NRESET 16 - #define OVERO_GPIO_PENDOWN 114 -@@ -95,18 +104,6 @@ static struct ads7846_platform_data ads7846_config = { - .keep_vref_on = 1, - }; - --static struct spi_board_info overo_spi_board_info[] __initdata = { -- { -- .modalias = "ads7846", -- .bus_num = 1, -- .chip_select = 0, -- .max_speed_hz = 1500000, -- .controller_data = &ads7846_mcspi_config, -- .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), -- .platform_data = &ads7846_config, -- } --}; -- - static void __init overo_ads7846_init(void) - { - if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) && -@@ -116,9 +113,6 @@ static void __init overo_ads7846_init(void) - printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n"); - return; - } -- -- spi_register_board_info(overo_spi_board_info, -- ARRAY_SIZE(overo_spi_board_info)); - } - - #else -@@ -234,6 +228,169 @@ static inline void __init overo_init_smsc911x(void) - static inline void __init overo_init_smsc911x(void) { return; } - #endif - -+/* DSS */ -+static int lcd_enabled; -+static int dvi_enabled; -+ -+#define OVERO_GPIO_LCD_EN 144 -+#define OVERO_GPIO_LCD_BL 145 -+ -+static void __init overo_display_init(void) -+{ -+ if ((gpio_request(OVERO_GPIO_LCD_EN, "OVERO_GPIO_LCD_EN") == 0) && -+ (gpio_direction_output(OVERO_GPIO_LCD_EN, 1) == 0)) -+ gpio_export(OVERO_GPIO_LCD_EN, 0); -+ else -+ printk(KERN_ERR "could not obtain gpio for " -+ "OVERO_GPIO_LCD_EN\n"); -+ -+ if ((gpio_request(OVERO_GPIO_LCD_BL, "OVERO_GPIO_LCD_BL") == 0) && -+ (gpio_direction_output(OVERO_GPIO_LCD_BL, 1) == 0)) -+ gpio_export(OVERO_GPIO_LCD_BL, 0); -+ else -+ printk(KERN_ERR "could not obtain gpio for " -+ "OVERO_GPIO_LCD_BL\n"); -+} -+ -+static int overo_panel_enable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (lcd_enabled) { -+ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); -+ return -EINVAL; -+ } -+ dvi_enabled = 1; -+ -+ return 0; -+} -+ -+static void overo_panel_disable_dvi(struct omap_dss_device *dssdev) -+{ -+ dvi_enabled = 0; -+} -+ -+static struct omap_dss_device overo_dvi_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .driver_name = "generic_panel", -+ .phy.dpi.data_lines = 24, -+ .platform_enable = overo_panel_enable_dvi, -+ .platform_disable = overo_panel_disable_dvi, -+}; -+ -+static int overo_panel_enable_tv(struct omap_dss_device *dssdev) -+{ -+#define ENABLE_VDAC_DEDICATED 0x03 -+#define ENABLE_VDAC_DEV_GRP 0x20 -+ -+ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEDICATED, -+ TWL4030_VDAC_DEDICATED); -+ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); -+ -+ return 0; -+} -+ -+static void overo_panel_disable_tv(struct omap_dss_device *dssdev) -+{ -+ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEDICATED); -+ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEV_GRP); -+} -+ -+static struct omap_dss_device overo_tv_device = { -+ .name = "tv", -+ .driver_name = "venc", -+ .type = OMAP_DISPLAY_TYPE_VENC, -+ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, -+ .platform_enable = overo_panel_enable_tv, -+ .platform_disable = overo_panel_disable_tv, -+}; -+ -+static int overo_panel_enable_lcd(struct omap_dss_device *dssdev) -+{ -+ if (dvi_enabled) { -+ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); -+ return -EINVAL; -+ } -+ -+ gpio_set_value(OVERO_GPIO_LCD_EN, 1); -+ gpio_set_value(OVERO_GPIO_LCD_BL, 1); -+ lcd_enabled = 1; -+ return 0; -+} -+ -+static void overo_panel_disable_lcd(struct omap_dss_device *dssdev) -+{ -+ gpio_set_value(OVERO_GPIO_LCD_EN, 0); -+ gpio_set_value(OVERO_GPIO_LCD_BL, 0); -+ lcd_enabled = 0; -+} -+ -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+static struct omap_dss_device overo_lcd35_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "lcd35", -+ .driver_name = "lgphilips_lb035q02_panel", -+ .phy.dpi.data_lines = 24, -+ .panel.recommended_bpp = 16, -+ .platform_enable = overo_panel_enable_lcd, -+ .platform_disable = overo_panel_disable_lcd, -+}; -+#endif -+ -+#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ -+ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) -+static struct omap_dss_device overo_lcd43_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "lcd43", -+ .driver_name = "samsung_lte_panel", -+ .phy.dpi.data_lines = 24, -+ .panel.recommended_bpp = 16, -+ .platform_enable = overo_panel_enable_lcd, -+ .platform_disable = overo_panel_disable_lcd, -+}; -+#endif -+ -+static struct omap_dss_device *overo_dss_devices[] = { -+ &overo_dvi_device, -+ &overo_tv_device, -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+ &overo_lcd35_device, -+#endif -+#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ -+ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) -+ &overo_lcd43_device, -+#endif -+}; -+ -+static struct omap_dss_board_info overo_dss_data = { -+ .num_devices = ARRAY_SIZE(overo_dss_devices), -+ .devices = overo_dss_devices, -+ .default_device = &overo_dvi_device, -+}; -+ -+static struct platform_device overo_dss_device = { -+ .name = "omapdss", -+ .id = -1, -+ .dev = { -+ .platform_data = &overo_dss_data, -+ }, -+}; -+ -+static struct regulator_consumer_supply overo_vdda_dac_supply = { -+ .supply = "vdda_dac", -+ .dev = &overo_dss_device.dev, -+}; -+ -+static struct regulator_consumer_supply overo_vdds_dsi_supply = { -+ .supply = "vdds_dsi", -+ .dev = &overo_dss_device.dev, -+}; -+ - static struct mtd_partition overo_nand_partitions[] = { - { - .name = "xloader", -@@ -379,6 +536,37 @@ static struct regulator_init_data overo_vmmc1 = { - .consumer_supplies = &overo_vmmc1_supply, - }; - -+/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ -+static struct regulator_init_data overo_vdac = { -+ .constraints = { -+ .min_uV = 1800000, -+ .max_uV = 1800000, -+ .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &overo_vdda_dac_supply, -+}; -+ -+/* VPLL2 for digital video outputs */ -+static struct regulator_init_data overo_vpll2 = { -+ .constraints = { -+ .name = "VDVI", -+ .min_uV = 1800000, -+ .max_uV = 1800000, -+ .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &overo_vdds_dsi_supply, -+}; -+ -+/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ -+ - static struct twl4030_codec_audio_data overo_audio_data = { - .audio_mclk = 26000000, - }; -@@ -402,6 +590,8 @@ static struct twl4030_platform_data overo_twldata = { - .usb = &overo_usb_data, - .codec = &overo_codec_data, - .vmmc1 = &overo_vmmc1, -+ .vdac = &overo_vdac, -+ .vpll2 = &overo_vpll2, - }; - - static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { -@@ -422,31 +612,50 @@ static int __init overo_i2c_init(void) - return 0; - } - --static struct platform_device overo_lcd_device = { -- .name = "overo_lcd", -- .id = -1, --}; -- --static struct omap_lcd_config overo_lcd_config __initdata = { -- .ctrl_name = "internal", -+static struct spi_board_info overo_spi_board_info[] __initdata = { -+#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ -+ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) -+ { -+ .modalias = "ads7846", -+ .bus_num = 1, -+ .chip_select = 0, -+ .max_speed_hz = 1500000, -+ .controller_data = &ads7846_mcspi_config, -+ .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), -+ .platform_data = &ads7846_config, -+ }, -+#endif -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+ { -+ .modalias = "lgphilips_lb035q02_panel-spi", -+ .bus_num = 1, -+ .chip_select = 1, -+ .max_speed_hz = 500000, -+ .mode = SPI_MODE_3, -+ }, -+#endif - }; - --static struct omap_board_config_kernel overo_config[] __initdata = { -- { OMAP_TAG_LCD, &overo_lcd_config }, --}; -+static int __init overo_spi_init(void) -+{ -+ overo_ads7846_init(); -+ spi_register_board_info(overo_spi_board_info, -+ ARRAY_SIZE(overo_spi_board_info)); -+ return 0; -+} - - static void __init overo_init_irq(void) - { -- omap_board_config = overo_config; -- omap_board_config_size = ARRAY_SIZE(overo_config); - omap2_init_common_hw(mt46h32m32lf6_sdrc_params, -- mt46h32m32lf6_sdrc_params, NULL, NULL, NULL); -+ NULL, omap35x_mpu_rate_table, -+ omap35x_dsp_rate_table, omap35x_l3_rate_table); - omap_init_irq(); - omap_gpio_init(); - } - - static struct platform_device *overo_devices[] __initdata = { -- &overo_lcd_device, -+ &overo_dss_device, - }; - - static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { -@@ -477,8 +686,9 @@ static void __init overo_init(void) - overo_flash_init(); - usb_musb_init(); - usb_ehci_init(&ehci_pdata); -- overo_ads7846_init(); -+ overo_spi_init(); - overo_init_smsc911x(); -+ overo_display_init(); - - /* Ensure SDRC pins are mux'd for self-refresh */ - omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch b/recipes/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch new file mode 100644 index 0000000000..20b6ca7be8 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch @@ -0,0 +1,28 @@ +From 7f87d1531cfdbf4fcd59bc8502e45d3aea8c8eba Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 4 Jan 2010 19:20:25 -0800 +Subject: [PATCH 24/43] mmc: don't display single block read console messages + +mmc: don't display single block read console messages +--- + drivers/mmc/card/block.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c +index 85f0e8c..05492e9 100644 +--- a/drivers/mmc/card/block.c ++++ b/drivers/mmc/card/block.c +@@ -338,8 +338,8 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) + if (brq.cmd.error || brq.data.error || brq.stop.error) { + if (brq.data.blocks > 1 && rq_data_dir(req) == READ) { + /* Redo read one sector at a time */ +- printk(KERN_WARNING "%s: retrying using single " +- "block read\n", req->rq_disk->disk_name); ++ /* printk(KERN_WARNING "%s: retrying using single " ++ "block read\n", req->rq_disk->disk_name); */ + disable_multi = 1; + continue; + } +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch b/recipes/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch new file mode 100644 index 0000000000..2272cb3312 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch @@ -0,0 +1,47 @@ +From f715b7b9f49e4a65ba5370cb36ce6f2c7830d1bc Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Sun, 24 Jan 2010 09:33:56 -0800 +Subject: [PATCH 25/43] ARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test + +otherwise it is not executed on systems that use non-twl regulators +--- + arch/arm/mach-omap2/mmc-twl4030.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c +index 0c3c72d..dbdafb9 100644 +--- a/arch/arm/mach-omap2/mmc-twl4030.c ++++ b/arch/arm/mach-omap2/mmc-twl4030.c +@@ -302,6 +302,14 @@ static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int v + if (c == NULL) + return -ENODEV; + ++ if (mmc->slots[0].internal_clock) { ++ u32 reg; ++ ++ reg = omap_ctrl_readl(control_devconf1_offset); ++ reg |= OMAP2_MMCSDIO2ADPCLKISEL; ++ omap_ctrl_writel(reg, control_devconf1_offset); ++ } ++ + /* If we don't see a Vcc regulator, assume it's a fixed + * voltage always-on regulator. + */ +@@ -322,14 +330,6 @@ static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int v + * chips/cards need an interface voltage rail too. + */ + if (power_on) { +- /* only MMC2 supports a CLKIN */ +- if (mmc->slots[0].internal_clock) { +- u32 reg; +- +- reg = omap_ctrl_readl(control_devconf1_offset); +- reg |= OMAP2_MMCSDIO2ADPCLKISEL; +- omap_ctrl_writel(reg, control_devconf1_offset); +- } + ret = mmc_regulator_set_ocr(c->vcc, vdd); + /* enable interface voltage rail, if needed */ + if (ret == 0 && c->vcc_aux) { +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch b/recipes/linux/linux-omap-psp-2.6.32/0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch deleted file mode 100644 index 8972bb0e04..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch +++ /dev/null @@ -1,85 +0,0 @@ -From da8a517444cdf8b89e9beb9407dd2c7903393d61 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 15 Feb 2010 14:20:51 +0100 -Subject: [PATCH 25/45] twl4030-madc: adjust for twl4030 -> twl api changes - ---- - drivers/mfd/twl4030-madc.c | 18 +++++++++--------- - 1 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c -index 7d83ab8..de6bdcd 100644 ---- a/drivers/mfd/twl4030-madc.c -+++ b/drivers/mfd/twl4030-madc.c -@@ -29,7 +29,7 @@ - #include - #include - #include --#include -+#include - #include - - #include -@@ -73,7 +73,7 @@ static int twl4030_madc_read(struct twl4030_madc_data *madc, u8 reg) - int ret; - u8 val; - -- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); -+ ret = twl_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); - if (ret) { - dev_dbg(madc->dev, "unable to read register 0x%X\n", reg); - return ret; -@@ -86,7 +86,7 @@ static void twl4030_madc_write(struct twl4030_madc_data *madc, u8 reg, u8 val) - { - int ret; - -- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); -+ ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); - if (ret) - dev_err(madc->dev, "unable to write register 0x%X\n", reg); - } -@@ -342,13 +342,13 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc, - if (chan > 1) - return EINVAL; - -- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, - ®val, TWL4030_BCI_BCICTL1); - if (on) - regval |= (chan) ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN; - else - regval &= (chan) ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN; -- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, - regval, TWL4030_BCI_BCICTL1); - - return ret; -@@ -453,21 +453,21 @@ static int __init twl4030_madc_probe(struct platform_device *pdev) - twl4030_madc_set_current_generator(madc, 0, 1); - - /* Enable ADCIN3 through 6 */ -- ret = twl4030_i2c_read_u8(TWL4030_MODULE_USB, -+ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, - ®val, TWL4030_USB_CARKIT_ANA_CTRL); - - regval |= TWL4030_USB_SEL_MADC_MCPC; - -- ret = twl4030_i2c_write_u8(TWL4030_MODULE_USB, -+ ret = twl_i2c_write_u8(TWL4030_MODULE_USB, - regval, TWL4030_USB_CARKIT_ANA_CTRL); - - -- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, - ®val, TWL4030_BCI_BCICTL1); - - regval |= TWL4030_BCI_MESBAT; - -- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, -+ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, - regval, TWL4030_BCI_BCICTL1); - - ret = request_irq(platform_get_irq(pdev, 0), twl4030_madc_irq_handler, --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch b/recipes/linux/linux-omap-psp-2.6.32/0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch deleted file mode 100644 index 38625ecd35..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch +++ /dev/null @@ -1,161 +0,0 @@ -From 6543717ed765f9f5cd981a88507f18b73e9d9c13 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 15 Feb 2010 14:38:00 +0100 -Subject: [PATCH 26/45] OMAP: DSS2: (Re)add support for Samsung lte430wq-f0c panel - ---- - drivers/video/omap2/displays/Kconfig | 6 + - drivers/video/omap2/displays/Makefile | 1 + - .../omap2/displays/panel-samsung-lte430wq-f0c.c | 113 ++++++++++++++++++++ - 3 files changed, 120 insertions(+), 0 deletions(-) - create mode 100644 drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c - -diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig -index 4ce47dd..4229a28 100644 ---- a/drivers/video/omap2/displays/Kconfig -+++ b/drivers/video/omap2/displays/Kconfig -@@ -7,6 +7,12 @@ config PANEL_GENERIC - Generic panel driver. - Used for DVI output for Beagle and OMAP3 SDP. - -+config PANEL_SAMSUNG_LTE430WQ_F0C -+ tristate "Samsung LTE430WQ-F0C LCD Panel" -+ depends on OMAP2_DSS -+ help -+ LCD Panel used on Overo Palo43 -+ - config PANEL_SHARP_LS037V7DW01 - tristate "Sharp LS037V7DW01 LCD Panel" - depends on OMAP2_DSS -diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile -index 8f3d0ad..9317445 100644 ---- a/drivers/video/omap2/displays/Makefile -+++ b/drivers/video/omap2/displays/Makefile -@@ -1,4 +1,5 @@ - obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o -+obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o - obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o - obj-$(CONFIG_PANEL_SHARP_LQ043T1DG01) += panel-sharp-lq043t1dg01.o - -diff --git a/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c -new file mode 100644 -index 0000000..3f0477e ---- /dev/null -+++ b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c -@@ -0,0 +1,113 @@ -+/* -+ * LCD panel driver for Samsung LTE430WQ-F0C -+ * -+ * Author: Steve Sakoman -+ * -+ * 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, see . -+ */ -+ -+#include -+#include -+ -+#include -+ -+static struct omap_video_timings samsung_lte_timings = { -+ .x_res = 480, -+ .y_res = 272, -+ -+ .pixel_clock = 9200, -+ -+ .hsw = 41, -+ .hfp = 8, -+ .hbp = 45-41, -+ -+ .vsw = 10, -+ .vfp = 4, -+ .vbp = 12-10, -+}; -+ -+static int samsung_lte_panel_probe(struct omap_dss_device *dssdev) -+{ -+ dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | -+ OMAP_DSS_LCD_IHS; -+ dssdev->panel.timings = samsung_lte_timings; -+ -+ return 0; -+} -+ -+static void samsung_lte_panel_remove(struct omap_dss_device *dssdev) -+{ -+} -+ -+static int samsung_lte_panel_enable(struct omap_dss_device *dssdev) -+{ -+ int r = 0; -+ -+ /* wait couple of vsyncs until enabling the LCD */ -+ msleep(50); -+ -+ if (dssdev->platform_enable) -+ r = dssdev->platform_enable(dssdev); -+ -+ return r; -+} -+ -+static void samsung_lte_panel_disable(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->platform_disable) -+ dssdev->platform_disable(dssdev); -+ -+ /* wait at least 5 vsyncs after disabling the LCD */ -+ -+ msleep(100); -+} -+ -+static int samsung_lte_panel_suspend(struct omap_dss_device *dssdev) -+{ -+ samsung_lte_panel_disable(dssdev); -+ return 0; -+} -+ -+static int samsung_lte_panel_resume(struct omap_dss_device *dssdev) -+{ -+ return samsung_lte_panel_enable(dssdev); -+} -+ -+static struct omap_dss_driver samsung_lte_driver = { -+ .probe = samsung_lte_panel_probe, -+ .remove = samsung_lte_panel_remove, -+ -+ .enable = samsung_lte_panel_enable, -+ .disable = samsung_lte_panel_disable, -+ .suspend = samsung_lte_panel_suspend, -+ .resume = samsung_lte_panel_resume, -+ -+ .driver = { -+ .name = "samsung_lte_panel", -+ .owner = THIS_MODULE, -+ }, -+}; -+ -+static int __init samsung_lte_panel_drv_init(void) -+{ -+ return omap_dss_register_driver(&samsung_lte_driver); -+} -+ -+static void __exit samsung_lte_panel_drv_exit(void) -+{ -+ omap_dss_unregister_driver(&samsung_lte_driver); -+} -+ -+module_init(samsung_lte_panel_drv_init); -+module_exit(samsung_lte_panel_drv_exit); -+MODULE_LICENSE("GPL"); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch b/recipes/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch new file mode 100644 index 0000000000..8977495a67 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch @@ -0,0 +1,373 @@ +From caa6d93d406fa836c8af84268f0ed7391434f1ee Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 14 Feb 2010 12:52:02 +0100 +Subject: [PATCH 26/43] board-overo: add PM code and sync with http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.32 + +--- + arch/arm/mach-omap2/board-overo.c | 274 ++++++++++++++++++++++++++++++++----- + 1 files changed, 242 insertions(+), 32 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index 9c76588..2595f81 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -40,16 +41,24 @@ + + #include + #include ++#include + #include + #include + #include + #include ++#include + #include +- +-#include "mux.h" ++#include ++#include ++ + #include "sdram-micron-mt46h32m32lf-6.h" + #include "mmc-twl4030.h" + ++#include "mux.h" ++ ++#include "pm.h" ++#include "omap3-opp.h" ++ + #define OVERO_GPIO_BT_XGATE 15 + #define OVERO_GPIO_W2W_NRESET 16 + #define OVERO_GPIO_PENDOWN 114 +@@ -95,18 +104,6 @@ static struct ads7846_platform_data ads7846_config = { + .keep_vref_on = 1, + }; + +-static struct spi_board_info overo_spi_board_info[] __initdata = { +- { +- .modalias = "ads7846", +- .bus_num = 1, +- .chip_select = 0, +- .max_speed_hz = 1500000, +- .controller_data = &ads7846_mcspi_config, +- .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), +- .platform_data = &ads7846_config, +- } +-}; +- + static void __init overo_ads7846_init(void) + { + if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) && +@@ -116,9 +113,6 @@ static void __init overo_ads7846_init(void) + printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n"); + return; + } +- +- spi_register_board_info(overo_spi_board_info, +- ARRAY_SIZE(overo_spi_board_info)); + } + + #else +@@ -234,6 +228,169 @@ static inline void __init overo_init_smsc911x(void) + static inline void __init overo_init_smsc911x(void) { return; } + #endif + ++/* DSS */ ++static int lcd_enabled; ++static int dvi_enabled; ++ ++#define OVERO_GPIO_LCD_EN 144 ++#define OVERO_GPIO_LCD_BL 145 ++ ++static void __init overo_display_init(void) ++{ ++ if ((gpio_request(OVERO_GPIO_LCD_EN, "OVERO_GPIO_LCD_EN") == 0) && ++ (gpio_direction_output(OVERO_GPIO_LCD_EN, 1) == 0)) ++ gpio_export(OVERO_GPIO_LCD_EN, 0); ++ else ++ printk(KERN_ERR "could not obtain gpio for " ++ "OVERO_GPIO_LCD_EN\n"); ++ ++ if ((gpio_request(OVERO_GPIO_LCD_BL, "OVERO_GPIO_LCD_BL") == 0) && ++ (gpio_direction_output(OVERO_GPIO_LCD_BL, 1) == 0)) ++ gpio_export(OVERO_GPIO_LCD_BL, 0); ++ else ++ printk(KERN_ERR "could not obtain gpio for " ++ "OVERO_GPIO_LCD_BL\n"); ++} ++ ++static int overo_panel_enable_dvi(struct omap_dss_device *dssdev) ++{ ++ if (lcd_enabled) { ++ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); ++ return -EINVAL; ++ } ++ dvi_enabled = 1; ++ ++ return 0; ++} ++ ++static void overo_panel_disable_dvi(struct omap_dss_device *dssdev) ++{ ++ dvi_enabled = 0; ++} ++ ++static struct omap_dss_device overo_dvi_device = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .driver_name = "generic_panel", ++ .phy.dpi.data_lines = 24, ++ .platform_enable = overo_panel_enable_dvi, ++ .platform_disable = overo_panel_disable_dvi, ++}; ++ ++static int overo_panel_enable_tv(struct omap_dss_device *dssdev) ++{ ++#define ENABLE_VDAC_DEDICATED 0x03 ++#define ENABLE_VDAC_DEV_GRP 0x20 ++ ++ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEDICATED, ++ TWL4030_VDAC_DEDICATED); ++ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); ++ ++ return 0; ++} ++ ++static void overo_panel_disable_tv(struct omap_dss_device *dssdev) ++{ ++ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEDICATED); ++ twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, ++ TWL4030_VDAC_DEV_GRP); ++} ++ ++static struct omap_dss_device overo_tv_device = { ++ .name = "tv", ++ .driver_name = "venc", ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .platform_enable = overo_panel_enable_tv, ++ .platform_disable = overo_panel_disable_tv, ++}; ++ ++static int overo_panel_enable_lcd(struct omap_dss_device *dssdev) ++{ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ ++ gpio_set_value(OVERO_GPIO_LCD_EN, 1); ++ gpio_set_value(OVERO_GPIO_LCD_BL, 1); ++ lcd_enabled = 1; ++ return 0; ++} ++ ++static void overo_panel_disable_lcd(struct omap_dss_device *dssdev) ++{ ++ gpio_set_value(OVERO_GPIO_LCD_EN, 0); ++ gpio_set_value(OVERO_GPIO_LCD_BL, 0); ++ lcd_enabled = 0; ++} ++ ++#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ ++ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) ++static struct omap_dss_device overo_lcd35_device = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd35", ++ .driver_name = "lgphilips_lb035q02_panel", ++ .phy.dpi.data_lines = 24, ++ .panel.recommended_bpp = 16, ++ .platform_enable = overo_panel_enable_lcd, ++ .platform_disable = overo_panel_disable_lcd, ++}; ++#endif ++ ++#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ ++ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) ++static struct omap_dss_device overo_lcd43_device = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "lcd43", ++ .driver_name = "samsung_lte_panel", ++ .phy.dpi.data_lines = 24, ++ .panel.recommended_bpp = 16, ++ .platform_enable = overo_panel_enable_lcd, ++ .platform_disable = overo_panel_disable_lcd, ++}; ++#endif ++ ++static struct omap_dss_device *overo_dss_devices[] = { ++ &overo_dvi_device, ++ &overo_tv_device, ++#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ ++ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) ++ &overo_lcd35_device, ++#endif ++#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ ++ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) ++ &overo_lcd43_device, ++#endif ++}; ++ ++static struct omap_dss_board_info overo_dss_data = { ++ .num_devices = ARRAY_SIZE(overo_dss_devices), ++ .devices = overo_dss_devices, ++ .default_device = &overo_dvi_device, ++}; ++ ++static struct platform_device overo_dss_device = { ++ .name = "omapdss", ++ .id = -1, ++ .dev = { ++ .platform_data = &overo_dss_data, ++ }, ++}; ++ ++static struct regulator_consumer_supply overo_vdda_dac_supply = { ++ .supply = "vdda_dac", ++ .dev = &overo_dss_device.dev, ++}; ++ ++static struct regulator_consumer_supply overo_vdds_dsi_supply = { ++ .supply = "vdds_dsi", ++ .dev = &overo_dss_device.dev, ++}; ++ + static struct mtd_partition overo_nand_partitions[] = { + { + .name = "xloader", +@@ -379,6 +536,37 @@ static struct regulator_init_data overo_vmmc1 = { + .consumer_supplies = &overo_vmmc1_supply, + }; + ++/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ ++static struct regulator_init_data overo_vdac = { ++ .constraints = { ++ .min_uV = 1800000, ++ .max_uV = 1800000, ++ .valid_modes_mask = REGULATOR_MODE_NORMAL ++ | REGULATOR_MODE_STANDBY, ++ .valid_ops_mask = REGULATOR_CHANGE_MODE ++ | REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &overo_vdda_dac_supply, ++}; ++ ++/* VPLL2 for digital video outputs */ ++static struct regulator_init_data overo_vpll2 = { ++ .constraints = { ++ .name = "VDVI", ++ .min_uV = 1800000, ++ .max_uV = 1800000, ++ .valid_modes_mask = REGULATOR_MODE_NORMAL ++ | REGULATOR_MODE_STANDBY, ++ .valid_ops_mask = REGULATOR_CHANGE_MODE ++ | REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &overo_vdds_dsi_supply, ++}; ++ ++/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ ++ + static struct twl4030_codec_audio_data overo_audio_data = { + .audio_mclk = 26000000, + }; +@@ -402,6 +590,8 @@ static struct twl4030_platform_data overo_twldata = { + .usb = &overo_usb_data, + .codec = &overo_codec_data, + .vmmc1 = &overo_vmmc1, ++ .vdac = &overo_vdac, ++ .vpll2 = &overo_vpll2, + }; + + static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { +@@ -422,31 +612,50 @@ static int __init overo_i2c_init(void) + return 0; + } + +-static struct platform_device overo_lcd_device = { +- .name = "overo_lcd", +- .id = -1, +-}; +- +-static struct omap_lcd_config overo_lcd_config __initdata = { +- .ctrl_name = "internal", ++static struct spi_board_info overo_spi_board_info[] __initdata = { ++#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ ++ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) ++ { ++ .modalias = "ads7846", ++ .bus_num = 1, ++ .chip_select = 0, ++ .max_speed_hz = 1500000, ++ .controller_data = &ads7846_mcspi_config, ++ .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), ++ .platform_data = &ads7846_config, ++ }, ++#endif ++#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ ++ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) ++ { ++ .modalias = "lgphilips_lb035q02_panel-spi", ++ .bus_num = 1, ++ .chip_select = 1, ++ .max_speed_hz = 500000, ++ .mode = SPI_MODE_3, ++ }, ++#endif + }; + +-static struct omap_board_config_kernel overo_config[] __initdata = { +- { OMAP_TAG_LCD, &overo_lcd_config }, +-}; ++static int __init overo_spi_init(void) ++{ ++ overo_ads7846_init(); ++ spi_register_board_info(overo_spi_board_info, ++ ARRAY_SIZE(overo_spi_board_info)); ++ return 0; ++} + + static void __init overo_init_irq(void) + { +- omap_board_config = overo_config; +- omap_board_config_size = ARRAY_SIZE(overo_config); + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- mt46h32m32lf6_sdrc_params, NULL, NULL, NULL); ++ NULL, omap35x_mpu_rate_table, ++ omap35x_dsp_rate_table, omap35x_l3_rate_table); + omap_init_irq(); + omap_gpio_init(); + } + + static struct platform_device *overo_devices[] __initdata = { +- &overo_lcd_device, ++ &overo_dss_device, + }; + + static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { +@@ -477,8 +686,9 @@ static void __init overo_init(void) + overo_flash_init(); + usb_musb_init(); + usb_ehci_init(&ehci_pdata); +- overo_ads7846_init(); ++ overo_spi_init(); + overo_init_smsc911x(); ++ overo_display_init(); + + /* Ensure SDRC pins are mux'd for self-refresh */ + omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch b/recipes/linux/linux-omap-psp-2.6.32/0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch deleted file mode 100644 index ed17c2ec72..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch +++ /dev/null @@ -1,254 +0,0 @@ -From c5a8cc3beb2784fd3851d758ddc8e74b8e0c09ac Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 17 Dec 2009 15:05:30 -0800 -Subject: [PATCH 27/45] OMAP: DSS2: Add support for LG Philips LB035Q02 panel - ---- - drivers/video/omap2/displays/Kconfig | 6 + - drivers/video/omap2/displays/Makefile | 1 + - .../omap2/displays/panel-lgphilips-lb035q02.c | 206 ++++++++++++++++++++ - 3 files changed, 213 insertions(+), 0 deletions(-) - create mode 100644 drivers/video/omap2/displays/panel-lgphilips-lb035q02.c - -diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig -index 4229a28..875250a 100644 ---- a/drivers/video/omap2/displays/Kconfig -+++ b/drivers/video/omap2/displays/Kconfig -@@ -7,6 +7,12 @@ config PANEL_GENERIC - Generic panel driver. - Used for DVI output for Beagle and OMAP3 SDP. - -+config PANEL_LGPHILIPS_LB035Q02 -+ tristate "LG.Philips LB035Q02 LCD Panel" -+ depends on OMAP2_DSS -+ help -+ LCD Panel used on Overo Palo35 -+ - config PANEL_SAMSUNG_LTE430WQ_F0C - tristate "Samsung LTE430WQ-F0C LCD Panel" - depends on OMAP2_DSS -diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile -index 9317445..f8e6c52 100644 ---- a/drivers/video/omap2/displays/Makefile -+++ b/drivers/video/omap2/displays/Makefile -@@ -1,4 +1,5 @@ - obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o -+obj-$(CONFIG_PANEL_LGPHILIPS_LB035Q02) += panel-lgphilips-lb035q02.o - obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o - obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o - obj-$(CONFIG_PANEL_SHARP_LQ043T1DG01) += panel-sharp-lq043t1dg01.o -diff --git a/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c -new file mode 100644 -index 0000000..22dc865 ---- /dev/null -+++ b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c -@@ -0,0 +1,206 @@ -+/* -+ * LCD panel driver for LG.Philips LB035Q02 -+ * -+ * Author: Steve Sakoman -+ * -+ * 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, see . -+ */ -+ -+#include -+#include -+#include -+ -+#include -+ -+static struct spi_device *spidev; -+ -+static struct omap_video_timings lb035q02_timings = { -+ .x_res = 320, -+ .y_res = 240, -+ -+ .pixel_clock = 6500, -+ -+ .hsw = 2, -+ .hfp = 20, -+ .hbp = 68, -+ -+ .vsw = 2, -+ .vfp = 4, -+ .vbp = 18, -+}; -+ -+static int lb035q02_panel_probe(struct omap_dss_device *dssdev) -+{ -+ dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | -+ OMAP_DSS_LCD_IHS; -+ dssdev->panel.timings = lb035q02_timings; -+ -+ return 0; -+} -+ -+static void lb035q02_panel_remove(struct omap_dss_device *dssdev) -+{ -+} -+ -+static int lb035q02_write_reg(u8 reg, u16 val) -+{ -+ struct spi_message msg; -+ struct spi_transfer index_xfer = { -+ .len = 3, -+ .cs_change = 1, -+ }; -+ struct spi_transfer value_xfer = { -+ .len = 3, -+ }; -+ u8 buffer[16]; -+ -+ spi_message_init(&msg); -+ -+ /* register index */ -+ buffer[0] = 0x70; -+ buffer[1] = 0x00; -+ buffer[2] = reg & 0x7f; -+ index_xfer.tx_buf = buffer; -+ spi_message_add_tail(&index_xfer, &msg); -+ -+ /* register value */ -+ buffer[4] = 0x72; -+ buffer[5] = val >> 8; -+ buffer[6] = val; -+ value_xfer.tx_buf = buffer + 4; -+ spi_message_add_tail(&value_xfer, &msg); -+ -+ return spi_sync(spidev, &msg); -+} -+ -+static int lb035q02_panel_enable(struct omap_dss_device *dssdev) -+{ -+ int r = 0; -+ -+ pr_info("lgphilips_lb035q02: panel_enable: 0x%08x\n", spidev); -+ /* wait couple of vsyncs until enabling the LCD */ -+ msleep(50); -+ -+ if (dssdev->platform_enable) -+ r = dssdev->platform_enable(dssdev); -+ -+ /* Panel init sequence from page 28 of the spec */ -+ lb035q02_write_reg(0x01, 0x6300); -+ lb035q02_write_reg(0x02, 0x0200); -+ lb035q02_write_reg(0x03, 0x0177); -+ lb035q02_write_reg(0x04, 0x04c7); -+ lb035q02_write_reg(0x05, 0xffc0); -+ lb035q02_write_reg(0x06, 0xe806); -+ lb035q02_write_reg(0x0a, 0x4008); -+ lb035q02_write_reg(0x0b, 0x0000); -+ lb035q02_write_reg(0x0d, 0x0030); -+ lb035q02_write_reg(0x0e, 0x2800); -+ lb035q02_write_reg(0x0f, 0x0000); -+ lb035q02_write_reg(0x16, 0x9f80); -+ lb035q02_write_reg(0x17, 0x0a0f); -+ lb035q02_write_reg(0x1e, 0x00c1); -+ lb035q02_write_reg(0x30, 0x0300); -+ lb035q02_write_reg(0x31, 0x0007); -+ lb035q02_write_reg(0x32, 0x0000); -+ lb035q02_write_reg(0x33, 0x0000); -+ lb035q02_write_reg(0x34, 0x0707); -+ lb035q02_write_reg(0x35, 0x0004); -+ lb035q02_write_reg(0x36, 0x0302); -+ lb035q02_write_reg(0x37, 0x0202); -+ lb035q02_write_reg(0x3a, 0x0a0d); -+ lb035q02_write_reg(0x3b, 0x0806); -+ -+ return r; -+} -+ -+static void lb035q02_panel_disable(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->platform_disable) -+ dssdev->platform_disable(dssdev); -+ -+ /* wait at least 5 vsyncs after disabling the LCD */ -+ -+ msleep(100); -+} -+ -+static int lb035q02_panel_suspend(struct omap_dss_device *dssdev) -+{ -+ pr_info("lgphilips_lb035q02: panel_suspend\n"); -+ lb035q02_panel_disable(dssdev); -+ return 0; -+} -+ -+static int lb035q02_panel_resume(struct omap_dss_device *dssdev) -+{ -+ pr_info("lgphilips_lb035q02: panel_resume\n"); -+ return lb035q02_panel_enable(dssdev); -+} -+ -+static struct omap_dss_driver lb035q02_driver = { -+ .probe = lb035q02_panel_probe, -+ .remove = lb035q02_panel_remove, -+ -+ .enable = lb035q02_panel_enable, -+ .disable = lb035q02_panel_disable, -+ .suspend = lb035q02_panel_suspend, -+ .resume = lb035q02_panel_resume, -+ -+ .driver = { -+ .name = "lgphilips_lb035q02_panel", -+ .owner = THIS_MODULE, -+ }, -+}; -+ -+static int __devinit lb035q02_panel_spi_probe(struct spi_device *spi) -+{ -+ spidev = spi; -+ return 0; -+} -+ -+static int __devexit lb035q02_panel_spi_remove(struct spi_device *spi) -+{ -+ return 0; -+} -+ -+static struct spi_driver lb035q02_spi_driver = { -+ .driver = { -+ .name = "lgphilips_lb035q02_panel-spi", -+ .owner = THIS_MODULE, -+ }, -+ .probe = lb035q02_panel_spi_probe, -+ .remove = __devexit_p (lb035q02_panel_spi_remove), -+}; -+ -+static int __init lb035q02_panel_drv_init(void) -+{ -+ int ret; -+ ret = spi_register_driver(&lb035q02_spi_driver); -+ if (ret != 0) -+ pr_err("lgphilips_lb035q02: Unable to register SPI driver: %d\n", ret); -+ -+ ret = omap_dss_register_driver(&lb035q02_driver); -+ if (ret != 0) -+ pr_err("lgphilips_lb035q02: Unable to register panel driver: %d\n", ret); -+ -+ return ret; -+} -+ -+static void __exit lb035q02_panel_drv_exit(void) -+{ -+ spi_unregister_driver(&lb035q02_spi_driver); -+ omap_dss_unregister_driver(&lb035q02_driver); -+} -+ -+module_init(lb035q02_panel_drv_init); -+module_exit(lb035q02_panel_drv_exit); -+MODULE_LICENSE("GPL"); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch b/recipes/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch new file mode 100644 index 0000000000..0c494751cf --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch @@ -0,0 +1,85 @@ +From f308badab37377503a387db2c0153c0a9c71ff7f Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 15 Feb 2010 14:20:51 +0100 +Subject: [PATCH 27/43] twl4030-madc: adjust for twl4030 -> twl api changes + +--- + drivers/mfd/twl4030-madc.c | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c +index 7d83ab8..de6bdcd 100644 +--- a/drivers/mfd/twl4030-madc.c ++++ b/drivers/mfd/twl4030-madc.c +@@ -29,7 +29,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include +@@ -73,7 +73,7 @@ static int twl4030_madc_read(struct twl4030_madc_data *madc, u8 reg) + int ret; + u8 val; + +- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MADC, &val, reg); + if (ret) { + dev_dbg(madc->dev, "unable to read register 0x%X\n", reg); + return ret; +@@ -86,7 +86,7 @@ static void twl4030_madc_write(struct twl4030_madc_data *madc, u8 reg, u8 val) + { + int ret; + +- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, val, reg); + if (ret) + dev_err(madc->dev, "unable to write register 0x%X\n", reg); + } +@@ -342,13 +342,13 @@ static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc, + if (chan > 1) + return EINVAL; + +- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, + ®val, TWL4030_BCI_BCICTL1); + if (on) + regval |= (chan) ? TWL4030_BCI_ITHEN : TWL4030_BCI_TYPEN; + else + regval &= (chan) ? ~TWL4030_BCI_ITHEN : ~TWL4030_BCI_TYPEN; +- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, + regval, TWL4030_BCI_BCICTL1); + + return ret; +@@ -453,21 +453,21 @@ static int __init twl4030_madc_probe(struct platform_device *pdev) + twl4030_madc_set_current_generator(madc, 0, 1); + + /* Enable ADCIN3 through 6 */ +- ret = twl4030_i2c_read_u8(TWL4030_MODULE_USB, ++ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, + ®val, TWL4030_USB_CARKIT_ANA_CTRL); + + regval |= TWL4030_USB_SEL_MADC_MCPC; + +- ret = twl4030_i2c_write_u8(TWL4030_MODULE_USB, ++ ret = twl_i2c_write_u8(TWL4030_MODULE_USB, + regval, TWL4030_USB_CARKIT_ANA_CTRL); + + +- ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, + ®val, TWL4030_BCI_BCICTL1); + + regval |= TWL4030_BCI_MESBAT; + +- ret = twl4030_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, + regval, TWL4030_BCI_BCICTL1); + + ret = request_irq(platform_get_irq(pdev, 0), twl4030_madc_irq_handler, +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch b/recipes/linux/linux-omap-psp-2.6.32/0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch deleted file mode 100644 index 6607ee37a3..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 103d5a963c4f05d0fa454551469ddef334cb9d23 Mon Sep 17 00:00:00 2001 -From: Kishore Kadiyala -Date: Wed, 17 Feb 2010 19:34:47 +0530 -Subject: [PATCH 28/45] Fix for bus width which improves SD card's peformance. - -This patch fixes bus width which improves peformance for SD cards. -OMAP-MMC controller's can support maximum bus width of '8'. -when bus width is mentioned as "8" in controller data,the SD -stack will check whether bus width is "4" and if not it will -set bus width to "1" and there by degrading peformance. - -Signed-off-by: Kishore Kadiyala ---- - drivers/mmc/host/omap_hsmmc.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c -index fa94580..9646a75 100644 ---- a/drivers/mmc/host/omap_hsmmc.c -+++ b/drivers/mmc/host/omap_hsmmc.c -@@ -1776,7 +1776,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) - MMC_CAP_WAIT_WHILE_BUSY; - - if (mmc_slot(host).wires >= 8) -- mmc->caps |= MMC_CAP_8_BIT_DATA; -+ mmc->caps |= (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA); - else if (mmc_slot(host).wires >= 4) - mmc->caps |= MMC_CAP_4_BIT_DATA; - --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch b/recipes/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch new file mode 100644 index 0000000000..1905833e24 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch @@ -0,0 +1,161 @@ +From 821a796dba3b5f1745d3ff990b14995bd691a8e3 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 15 Feb 2010 14:38:00 +0100 +Subject: [PATCH 28/43] OMAP: DSS2: (Re)add support for Samsung lte430wq-f0c panel + +--- + drivers/video/omap2/displays/Kconfig | 6 + + drivers/video/omap2/displays/Makefile | 1 + + .../omap2/displays/panel-samsung-lte430wq-f0c.c | 113 ++++++++++++++++++++ + 3 files changed, 120 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c + +diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig +index 4ce47dd..4229a28 100644 +--- a/drivers/video/omap2/displays/Kconfig ++++ b/drivers/video/omap2/displays/Kconfig +@@ -7,6 +7,12 @@ config PANEL_GENERIC + Generic panel driver. + Used for DVI output for Beagle and OMAP3 SDP. + ++config PANEL_SAMSUNG_LTE430WQ_F0C ++ tristate "Samsung LTE430WQ-F0C LCD Panel" ++ depends on OMAP2_DSS ++ help ++ LCD Panel used on Overo Palo43 ++ + config PANEL_SHARP_LS037V7DW01 + tristate "Sharp LS037V7DW01 LCD Panel" + depends on OMAP2_DSS +diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile +index 8f3d0ad..9317445 100644 +--- a/drivers/video/omap2/displays/Makefile ++++ b/drivers/video/omap2/displays/Makefile +@@ -1,4 +1,5 @@ + obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o ++obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o + obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o + obj-$(CONFIG_PANEL_SHARP_LQ043T1DG01) += panel-sharp-lq043t1dg01.o + +diff --git a/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c +new file mode 100644 +index 0000000..3f0477e +--- /dev/null ++++ b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c +@@ -0,0 +1,113 @@ ++/* ++ * LCD panel driver for Samsung LTE430WQ-F0C ++ * ++ * Author: Steve Sakoman ++ * ++ * 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, see . ++ */ ++ ++#include ++#include ++ ++#include ++ ++static struct omap_video_timings samsung_lte_timings = { ++ .x_res = 480, ++ .y_res = 272, ++ ++ .pixel_clock = 9200, ++ ++ .hsw = 41, ++ .hfp = 8, ++ .hbp = 45-41, ++ ++ .vsw = 10, ++ .vfp = 4, ++ .vbp = 12-10, ++}; ++ ++static int samsung_lte_panel_probe(struct omap_dss_device *dssdev) ++{ ++ dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS; ++ dssdev->panel.timings = samsung_lte_timings; ++ ++ return 0; ++} ++ ++static void samsung_lte_panel_remove(struct omap_dss_device *dssdev) ++{ ++} ++ ++static int samsung_lte_panel_enable(struct omap_dss_device *dssdev) ++{ ++ int r = 0; ++ ++ /* wait couple of vsyncs until enabling the LCD */ ++ msleep(50); ++ ++ if (dssdev->platform_enable) ++ r = dssdev->platform_enable(dssdev); ++ ++ return r; ++} ++ ++static void samsung_lte_panel_disable(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->platform_disable) ++ dssdev->platform_disable(dssdev); ++ ++ /* wait at least 5 vsyncs after disabling the LCD */ ++ ++ msleep(100); ++} ++ ++static int samsung_lte_panel_suspend(struct omap_dss_device *dssdev) ++{ ++ samsung_lte_panel_disable(dssdev); ++ return 0; ++} ++ ++static int samsung_lte_panel_resume(struct omap_dss_device *dssdev) ++{ ++ return samsung_lte_panel_enable(dssdev); ++} ++ ++static struct omap_dss_driver samsung_lte_driver = { ++ .probe = samsung_lte_panel_probe, ++ .remove = samsung_lte_panel_remove, ++ ++ .enable = samsung_lte_panel_enable, ++ .disable = samsung_lte_panel_disable, ++ .suspend = samsung_lte_panel_suspend, ++ .resume = samsung_lte_panel_resume, ++ ++ .driver = { ++ .name = "samsung_lte_panel", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __init samsung_lte_panel_drv_init(void) ++{ ++ return omap_dss_register_driver(&samsung_lte_driver); ++} ++ ++static void __exit samsung_lte_panel_drv_exit(void) ++{ ++ omap_dss_unregister_driver(&samsung_lte_driver); ++} ++ ++module_init(samsung_lte_panel_drv_init); ++module_exit(samsung_lte_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch b/recipes/linux/linux-omap-psp-2.6.32/0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch deleted file mode 100644 index 8df95dd06e..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 3381ab702c3798c039f294ed06e3da2e8f62009a Mon Sep 17 00:00:00 2001 -From: Imre Deak -Date: Thu, 4 Feb 2010 21:38:02 +0200 -Subject: [PATCH 29/45] ARM: VFP: add support to sync the VFP state of the current thread - -ARM: VFP: add support to sync the VFP state of the current thread - -So far vfp_sync_state worked only for threads other than the current -one. This worked for tracing other threads, but not for PTRACE_TRACEME. -Syncing for the current thread will also be needed by an upcoming patch -adding support for VFP context save / restore around signal handlers. - -For SMP we need get_cpu now, since we have to protect the FPEXC -register, other than this things remained the same for threads other -than the current. - -Signed-off-by: Imre Deak -Signed-off-by: Bryan Wu ---- - arch/arm/vfp/vfpmodule.c | 46 +++++++++++++++++++++++++++++++--------------- - 1 files changed, 31 insertions(+), 15 deletions(-) - -diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c -index aed05bc..f28f45b 100644 ---- a/arch/arm/vfp/vfpmodule.c -+++ b/arch/arm/vfp/vfpmodule.c -@@ -423,12 +423,19 @@ static inline void vfp_pm_init(void) { } - #endif /* CONFIG_PM */ - - /* -- * Synchronise the hardware VFP state of a thread other than current with the -- * saved one. This function is used by the ptrace mechanism. -+ * Synchronise the hardware VFP state of a thread with the saved one. -+ * This function is used by the ptrace mechanism and the signal handler path. - */ --#ifdef CONFIG_SMP - void vfp_sync_state(struct thread_info *thread) - { -+ unsigned int cpu = get_cpu(); -+ u32 fpexc = fmrx(FPEXC); -+ int vfp_enabled; -+ int self; -+ -+ vfp_enabled = fpexc & FPEXC_EN; -+ self = thread == current_thread_info(); -+#ifdef CONFIG_SMP - /* - * On SMP systems, the VFP state is automatically saved at every - * context switch. We mark the thread VFP state as belonging to a -@@ -436,18 +443,22 @@ void vfp_sync_state(struct thread_info *thread) - * needed. - */ - thread->vfpstate.hard.cpu = NR_CPUS; --} --#else --void vfp_sync_state(struct thread_info *thread) --{ -- unsigned int cpu = get_cpu(); -- u32 fpexc = fmrx(FPEXC); -- - /* -- * If VFP is enabled, the previous state was already saved and -- * last_VFP_context updated. -+ * Only the current thread's saved VFP context can be out-of-date. -+ * For others there is nothing else to do, since we already ensured -+ * force loading above. - */ -- if (fpexc & FPEXC_EN) -+ if (!self) -+ goto out; -+#endif -+ /* -+ * If the VFP is enabled only the current thread's saved VFP -+ * context can get out-of-date. For other threads the context -+ * was updated when the current thread started to use the VFP. -+ * This also means that the context will be reloaded next time -+ * the thread uses the VFP, so no need to enforce it. -+ */ -+ if (vfp_enabled && !self) - goto out; - - if (!last_VFP_context[cpu]) -@@ -456,8 +467,14 @@ void vfp_sync_state(struct thread_info *thread) - /* - * Save the last VFP state on this CPU. - */ -- fmxr(FPEXC, fpexc | FPEXC_EN); -+ if (!vfp_enabled) -+ fmxr(FPEXC, fpexc | FPEXC_EN); - vfp_save_state(last_VFP_context[cpu], fpexc); -+ /* -+ * Disable VFP in case it was enabled so that the force reload -+ * can happen. -+ */ -+ fpexc &= ~FPEXC_EN; - fmxr(FPEXC, fpexc); - - /* -@@ -469,7 +486,6 @@ void vfp_sync_state(struct thread_info *thread) - out: - put_cpu(); - } --#endif - - #include - --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch b/recipes/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch new file mode 100644 index 0000000000..97aa09ceda --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch @@ -0,0 +1,254 @@ +From d65c7d454ff43f8955f23f324a24adf7e2d4edff Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 15:05:30 -0800 +Subject: [PATCH 29/43] OMAP: DSS2: Add support for LG Philips LB035Q02 panel + +--- + drivers/video/omap2/displays/Kconfig | 6 + + drivers/video/omap2/displays/Makefile | 1 + + .../omap2/displays/panel-lgphilips-lb035q02.c | 206 ++++++++++++++++++++ + 3 files changed, 213 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap2/displays/panel-lgphilips-lb035q02.c + +diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig +index 4229a28..875250a 100644 +--- a/drivers/video/omap2/displays/Kconfig ++++ b/drivers/video/omap2/displays/Kconfig +@@ -7,6 +7,12 @@ config PANEL_GENERIC + Generic panel driver. + Used for DVI output for Beagle and OMAP3 SDP. + ++config PANEL_LGPHILIPS_LB035Q02 ++ tristate "LG.Philips LB035Q02 LCD Panel" ++ depends on OMAP2_DSS ++ help ++ LCD Panel used on Overo Palo35 ++ + config PANEL_SAMSUNG_LTE430WQ_F0C + tristate "Samsung LTE430WQ-F0C LCD Panel" + depends on OMAP2_DSS +diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile +index 9317445..f8e6c52 100644 +--- a/drivers/video/omap2/displays/Makefile ++++ b/drivers/video/omap2/displays/Makefile +@@ -1,4 +1,5 @@ + obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o ++obj-$(CONFIG_PANEL_LGPHILIPS_LB035Q02) += panel-lgphilips-lb035q02.o + obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o + obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o + obj-$(CONFIG_PANEL_SHARP_LQ043T1DG01) += panel-sharp-lq043t1dg01.o +diff --git a/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c +new file mode 100644 +index 0000000..22dc865 +--- /dev/null ++++ b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c +@@ -0,0 +1,206 @@ ++/* ++ * LCD panel driver for LG.Philips LB035Q02 ++ * ++ * Author: Steve Sakoman ++ * ++ * 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, see . ++ */ ++ ++#include ++#include ++#include ++ ++#include ++ ++static struct spi_device *spidev; ++ ++static struct omap_video_timings lb035q02_timings = { ++ .x_res = 320, ++ .y_res = 240, ++ ++ .pixel_clock = 6500, ++ ++ .hsw = 2, ++ .hfp = 20, ++ .hbp = 68, ++ ++ .vsw = 2, ++ .vfp = 4, ++ .vbp = 18, ++}; ++ ++static int lb035q02_panel_probe(struct omap_dss_device *dssdev) ++{ ++ dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | ++ OMAP_DSS_LCD_IHS; ++ dssdev->panel.timings = lb035q02_timings; ++ ++ return 0; ++} ++ ++static void lb035q02_panel_remove(struct omap_dss_device *dssdev) ++{ ++} ++ ++static int lb035q02_write_reg(u8 reg, u16 val) ++{ ++ struct spi_message msg; ++ struct spi_transfer index_xfer = { ++ .len = 3, ++ .cs_change = 1, ++ }; ++ struct spi_transfer value_xfer = { ++ .len = 3, ++ }; ++ u8 buffer[16]; ++ ++ spi_message_init(&msg); ++ ++ /* register index */ ++ buffer[0] = 0x70; ++ buffer[1] = 0x00; ++ buffer[2] = reg & 0x7f; ++ index_xfer.tx_buf = buffer; ++ spi_message_add_tail(&index_xfer, &msg); ++ ++ /* register value */ ++ buffer[4] = 0x72; ++ buffer[5] = val >> 8; ++ buffer[6] = val; ++ value_xfer.tx_buf = buffer + 4; ++ spi_message_add_tail(&value_xfer, &msg); ++ ++ return spi_sync(spidev, &msg); ++} ++ ++static int lb035q02_panel_enable(struct omap_dss_device *dssdev) ++{ ++ int r = 0; ++ ++ pr_info("lgphilips_lb035q02: panel_enable: 0x%08x\n", spidev); ++ /* wait couple of vsyncs until enabling the LCD */ ++ msleep(50); ++ ++ if (dssdev->platform_enable) ++ r = dssdev->platform_enable(dssdev); ++ ++ /* Panel init sequence from page 28 of the spec */ ++ lb035q02_write_reg(0x01, 0x6300); ++ lb035q02_write_reg(0x02, 0x0200); ++ lb035q02_write_reg(0x03, 0x0177); ++ lb035q02_write_reg(0x04, 0x04c7); ++ lb035q02_write_reg(0x05, 0xffc0); ++ lb035q02_write_reg(0x06, 0xe806); ++ lb035q02_write_reg(0x0a, 0x4008); ++ lb035q02_write_reg(0x0b, 0x0000); ++ lb035q02_write_reg(0x0d, 0x0030); ++ lb035q02_write_reg(0x0e, 0x2800); ++ lb035q02_write_reg(0x0f, 0x0000); ++ lb035q02_write_reg(0x16, 0x9f80); ++ lb035q02_write_reg(0x17, 0x0a0f); ++ lb035q02_write_reg(0x1e, 0x00c1); ++ lb035q02_write_reg(0x30, 0x0300); ++ lb035q02_write_reg(0x31, 0x0007); ++ lb035q02_write_reg(0x32, 0x0000); ++ lb035q02_write_reg(0x33, 0x0000); ++ lb035q02_write_reg(0x34, 0x0707); ++ lb035q02_write_reg(0x35, 0x0004); ++ lb035q02_write_reg(0x36, 0x0302); ++ lb035q02_write_reg(0x37, 0x0202); ++ lb035q02_write_reg(0x3a, 0x0a0d); ++ lb035q02_write_reg(0x3b, 0x0806); ++ ++ return r; ++} ++ ++static void lb035q02_panel_disable(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->platform_disable) ++ dssdev->platform_disable(dssdev); ++ ++ /* wait at least 5 vsyncs after disabling the LCD */ ++ ++ msleep(100); ++} ++ ++static int lb035q02_panel_suspend(struct omap_dss_device *dssdev) ++{ ++ pr_info("lgphilips_lb035q02: panel_suspend\n"); ++ lb035q02_panel_disable(dssdev); ++ return 0; ++} ++ ++static int lb035q02_panel_resume(struct omap_dss_device *dssdev) ++{ ++ pr_info("lgphilips_lb035q02: panel_resume\n"); ++ return lb035q02_panel_enable(dssdev); ++} ++ ++static struct omap_dss_driver lb035q02_driver = { ++ .probe = lb035q02_panel_probe, ++ .remove = lb035q02_panel_remove, ++ ++ .enable = lb035q02_panel_enable, ++ .disable = lb035q02_panel_disable, ++ .suspend = lb035q02_panel_suspend, ++ .resume = lb035q02_panel_resume, ++ ++ .driver = { ++ .name = "lgphilips_lb035q02_panel", ++ .owner = THIS_MODULE, ++ }, ++}; ++ ++static int __devinit lb035q02_panel_spi_probe(struct spi_device *spi) ++{ ++ spidev = spi; ++ return 0; ++} ++ ++static int __devexit lb035q02_panel_spi_remove(struct spi_device *spi) ++{ ++ return 0; ++} ++ ++static struct spi_driver lb035q02_spi_driver = { ++ .driver = { ++ .name = "lgphilips_lb035q02_panel-spi", ++ .owner = THIS_MODULE, ++ }, ++ .probe = lb035q02_panel_spi_probe, ++ .remove = __devexit_p (lb035q02_panel_spi_remove), ++}; ++ ++static int __init lb035q02_panel_drv_init(void) ++{ ++ int ret; ++ ret = spi_register_driver(&lb035q02_spi_driver); ++ if (ret != 0) ++ pr_err("lgphilips_lb035q02: Unable to register SPI driver: %d\n", ret); ++ ++ ret = omap_dss_register_driver(&lb035q02_driver); ++ if (ret != 0) ++ pr_err("lgphilips_lb035q02: Unable to register panel driver: %d\n", ret); ++ ++ return ret; ++} ++ ++static void __exit lb035q02_panel_drv_exit(void) ++{ ++ spi_unregister_driver(&lb035q02_spi_driver); ++ omap_dss_unregister_driver(&lb035q02_driver); ++} ++ ++module_init(lb035q02_panel_drv_init); ++module_exit(lb035q02_panel_drv_exit); ++MODULE_LICENSE("GPL"); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch b/recipes/linux/linux-omap-psp-2.6.32/0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch deleted file mode 100644 index 996d1bf950..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch +++ /dev/null @@ -1,211 +0,0 @@ -From bdd0431478907155b3180a3c8e1cbee720bfe7ec Mon Sep 17 00:00:00 2001 -From: Imre Deak -Date: Thu, 4 Feb 2010 21:38:30 +0200 -Subject: [PATCH 30/45] ARM: VFP: preserve the HW context when calling signal handlers - -ARM: VFP: preserve the HW context when calling signal handlers - -Signal handlers can use floating point, so prevent them to corrupt -the main thread's VFP context. So far there were two signal stack -frame formats defined based on the VFP implementation, but the user -struct used for ptrace covers all posibilities, so use it for the -signal stack too. This patch extends the user struct and leaves -its magic number the same, in the hope that user space code does -not depend on its size and can parse the original regs w/o -problems. - -Support to save / restore the exception registers was added by -Will Deacon. - -Signed-off-by: Imre Deak -Signed-off-by: Will Deacon -Signed-off-by: Bryan Wu ---- - arch/arm/include/asm/ucontext.h | 19 +++----- - arch/arm/include/asm/user.h | 3 + - arch/arm/kernel/signal.c | 91 +++++++++++++++++++++++++++++++++++++-- - 3 files changed, 97 insertions(+), 16 deletions(-) - -diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h -index bf65e9f..1c3236b 100644 ---- a/arch/arm/include/asm/ucontext.h -+++ b/arch/arm/include/asm/ucontext.h -@@ -59,23 +59,18 @@ struct iwmmxt_sigframe { - #endif /* CONFIG_IWMMXT */ - - #ifdef CONFIG_VFP --#if __LINUX_ARM_ARCH__ < 6 --/* For ARM pre-v6, we use fstmiax and fldmiax. This adds one extra -- * word after the registers, and a word of padding at the end for -- * alignment. */ - #define VFP_MAGIC 0x56465001 --#define VFP_STORAGE_SIZE 152 --#else --#define VFP_MAGIC 0x56465002 --#define VFP_STORAGE_SIZE 144 --#endif - - struct vfp_sigframe - { - unsigned long magic; - unsigned long size; -- union vfp_state storage; --}; -+ struct user_vfp ufp; -+} __attribute__((__aligned__(8))); -+ -+/* 8 byte for magic and size, 272 byte for ufp */ -+#define VFP_STORAGE_SIZE sizeof(struct vfp_sigframe) -+ - #endif /* CONFIG_VFP */ - - /* -@@ -91,7 +86,7 @@ struct aux_sigframe { - #ifdef CONFIG_IWMMXT - struct iwmmxt_sigframe iwmmxt; - #endif --#if 0 && defined CONFIG_VFP /* Not yet saved. */ -+#ifdef CONFIG_VFP - struct vfp_sigframe vfp; - #endif - /* Something that isn't a valid magic number for any coprocessor. */ -diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h -index df95e05..ea7e44d 100644 ---- a/arch/arm/include/asm/user.h -+++ b/arch/arm/include/asm/user.h -@@ -88,6 +88,9 @@ struct user{ - struct user_vfp { - unsigned long long fpregs[32]; - unsigned long fpscr; -+ unsigned long fpexc; -+ unsigned long fpinst; -+ unsigned long fpinst2; - }; - - #endif /* _ARM_USER_H */ -diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c -index e7714f3..6a36851 100644 ---- a/arch/arm/kernel/signal.c -+++ b/arch/arm/kernel/signal.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - - #include "ptrace.h" - #include "signal.h" -@@ -175,6 +176,88 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame) - - #endif - -+#ifdef CONFIG_VFP -+ -+static int preserve_vfp_context(struct vfp_sigframe __user *frame) -+{ -+ struct thread_info *thread = current_thread_info(); -+ struct vfp_hard_struct *h = &thread->vfpstate.hard; -+ const unsigned long magic = VFP_MAGIC; -+ const unsigned long size = VFP_STORAGE_SIZE; -+ int err = 0; -+ -+ vfp_sync_state(thread); -+ __put_user_error(magic, &frame->magic, err); -+ __put_user_error(size, &frame->size, err); -+ -+ /* -+ * Copy the floating point registers. There can be unused -+ * registers see asm/hwcap.h for details. -+ */ -+ err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs, -+ sizeof(h->fpregs)); -+ /* -+ * Copy the status and control register. -+ */ -+ __put_user_error(h->fpscr, &frame->ufp.fpscr, err); -+ -+ /* -+ * Copy the exception registers. -+ */ -+ __put_user_error(h->fpexc, &frame->ufp.fpexc, err); -+ __put_user_error(h->fpinst, &frame->ufp.fpinst, err); -+ __put_user_error(h->fpinst2, &frame->ufp.fpinst2, err); -+ -+ return err ? -EFAULT : 0; -+} -+ -+static int restore_vfp_context(struct vfp_sigframe __user *frame) -+{ -+ struct thread_info *thread = current_thread_info(); -+ struct vfp_hard_struct *h = &thread->vfpstate.hard; -+ unsigned long magic; -+ unsigned long size; -+ unsigned long fpexc; -+ int err = 0; -+ -+ vfp_sync_state(thread); -+ __get_user_error(magic, &frame->magic, err); -+ __get_user_error(size, &frame->size, err); -+ -+ if (err) -+ return -EFAULT; -+ if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE) -+ return -EINVAL; -+ -+ /* -+ * Copy the floating point registers. There can be unused -+ * registers see asm/hwcap.h for details. -+ */ -+ err |= __copy_from_user(&h->fpregs, &frame->ufp.fpregs, -+ sizeof(h->fpregs)); -+ /* -+ * Copy the status and control register. -+ */ -+ __get_user_error(h->fpscr, &frame->ufp.fpscr, err); -+ -+ /* -+ * Sanitise and restore the exception registers. -+ */ -+ __get_user_error(fpexc, &frame->ufp.fpexc, err); -+ /* Ensure the VFP is enabled. */ -+ fpexc |= FPEXC_EN; -+ /* Ensure FPINST2 is invalid and the exception flag is cleared. */ -+ fpexc &= ~(FPEXC_EX | FPEXC_FP2V); -+ h->fpexc = fpexc; -+ -+ __get_user_error(h->fpinst, &frame->ufp.fpinst, err); -+ __get_user_error(h->fpinst2, &frame->ufp.fpinst2, err); -+ -+ return err ? -EFAULT : 0; -+} -+ -+#endif -+ - /* - * Do a signal return; undo the signal stack. These are aligned to 64-bit. - */ -@@ -233,8 +316,8 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf) - err |= restore_iwmmxt_context(&aux->iwmmxt); - #endif - #ifdef CONFIG_VFP --// if (err == 0) --// err |= vfp_restore_state(&sf->aux.vfp); -+ if (err == 0) -+ err |= restore_vfp_context(&aux->vfp); - #endif - - return err; -@@ -348,8 +431,8 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set) - err |= preserve_iwmmxt_context(&aux->iwmmxt); - #endif - #ifdef CONFIG_VFP --// if (err == 0) --// err |= vfp_save_state(&sf->aux.vfp); -+ if (err == 0) -+ err |= preserve_vfp_context(&aux->vfp); - #endif - __put_user_error(0, &aux->end_magic, err); - --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch b/recipes/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch new file mode 100644 index 0000000000..5e842cfa6b --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch @@ -0,0 +1,32 @@ +From c6c2fc6a66a56256bb2fe015fb07b062666ee246 Mon Sep 17 00:00:00 2001 +From: Kishore Kadiyala +Date: Wed, 17 Feb 2010 19:34:47 +0530 +Subject: [PATCH 30/43] Fix for bus width which improves SD card's peformance. + +This patch fixes bus width which improves peformance for SD cards. +OMAP-MMC controller's can support maximum bus width of '8'. +when bus width is mentioned as "8" in controller data,the SD +stack will check whether bus width is "4" and if not it will +set bus width to "1" and there by degrading peformance. + +Signed-off-by: Kishore Kadiyala +--- + drivers/mmc/host/omap_hsmmc.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c +index fa94580..9646a75 100644 +--- a/drivers/mmc/host/omap_hsmmc.c ++++ b/drivers/mmc/host/omap_hsmmc.c +@@ -1776,7 +1776,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) + MMC_CAP_WAIT_WHILE_BUSY; + + if (mmc_slot(host).wires >= 8) +- mmc->caps |= MMC_CAP_8_BIT_DATA; ++ mmc->caps |= (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA); + else if (mmc_slot(host).wires >= 4) + mmc->caps |= MMC_CAP_4_BIT_DATA; + +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch b/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch new file mode 100644 index 0000000000..11a418400d --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch @@ -0,0 +1,109 @@ +From d3c14324b23c6cef8452a9a6037b6ec2a6f07d6e Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Thu, 4 Feb 2010 21:38:02 +0200 +Subject: [PATCH 31/43] ARM: VFP: add support to sync the VFP state of the current thread + +ARM: VFP: add support to sync the VFP state of the current thread + +So far vfp_sync_state worked only for threads other than the current +one. This worked for tracing other threads, but not for PTRACE_TRACEME. +Syncing for the current thread will also be needed by an upcoming patch +adding support for VFP context save / restore around signal handlers. + +For SMP we need get_cpu now, since we have to protect the FPEXC +register, other than this things remained the same for threads other +than the current. + +Signed-off-by: Imre Deak +Signed-off-by: Bryan Wu +--- + arch/arm/vfp/vfpmodule.c | 46 +++++++++++++++++++++++++++++++--------------- + 1 files changed, 31 insertions(+), 15 deletions(-) + +diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c +index aed05bc..f28f45b 100644 +--- a/arch/arm/vfp/vfpmodule.c ++++ b/arch/arm/vfp/vfpmodule.c +@@ -423,12 +423,19 @@ static inline void vfp_pm_init(void) { } + #endif /* CONFIG_PM */ + + /* +- * Synchronise the hardware VFP state of a thread other than current with the +- * saved one. This function is used by the ptrace mechanism. ++ * Synchronise the hardware VFP state of a thread with the saved one. ++ * This function is used by the ptrace mechanism and the signal handler path. + */ +-#ifdef CONFIG_SMP + void vfp_sync_state(struct thread_info *thread) + { ++ unsigned int cpu = get_cpu(); ++ u32 fpexc = fmrx(FPEXC); ++ int vfp_enabled; ++ int self; ++ ++ vfp_enabled = fpexc & FPEXC_EN; ++ self = thread == current_thread_info(); ++#ifdef CONFIG_SMP + /* + * On SMP systems, the VFP state is automatically saved at every + * context switch. We mark the thread VFP state as belonging to a +@@ -436,18 +443,22 @@ void vfp_sync_state(struct thread_info *thread) + * needed. + */ + thread->vfpstate.hard.cpu = NR_CPUS; +-} +-#else +-void vfp_sync_state(struct thread_info *thread) +-{ +- unsigned int cpu = get_cpu(); +- u32 fpexc = fmrx(FPEXC); +- + /* +- * If VFP is enabled, the previous state was already saved and +- * last_VFP_context updated. ++ * Only the current thread's saved VFP context can be out-of-date. ++ * For others there is nothing else to do, since we already ensured ++ * force loading above. + */ +- if (fpexc & FPEXC_EN) ++ if (!self) ++ goto out; ++#endif ++ /* ++ * If the VFP is enabled only the current thread's saved VFP ++ * context can get out-of-date. For other threads the context ++ * was updated when the current thread started to use the VFP. ++ * This also means that the context will be reloaded next time ++ * the thread uses the VFP, so no need to enforce it. ++ */ ++ if (vfp_enabled && !self) + goto out; + + if (!last_VFP_context[cpu]) +@@ -456,8 +467,14 @@ void vfp_sync_state(struct thread_info *thread) + /* + * Save the last VFP state on this CPU. + */ +- fmxr(FPEXC, fpexc | FPEXC_EN); ++ if (!vfp_enabled) ++ fmxr(FPEXC, fpexc | FPEXC_EN); + vfp_save_state(last_VFP_context[cpu], fpexc); ++ /* ++ * Disable VFP in case it was enabled so that the force reload ++ * can happen. ++ */ ++ fpexc &= ~FPEXC_EN; + fmxr(FPEXC, fpexc); + + /* +@@ -469,7 +486,6 @@ void vfp_sync_state(struct thread_info *thread) + out: + put_cpu(); + } +-#endif + + #include + +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch b/recipes/linux/linux-omap-psp-2.6.32/0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch deleted file mode 100644 index 4c7f809c04..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e46009db99b4f65a3173521d19e94aaa48e75a33 Mon Sep 17 00:00:00 2001 -From: Prabindh Sundareson -Date: Wed, 3 Mar 2010 15:45:35 +0100 -Subject: [PATCH 31/45] Switch SGX clocks to 200MHz on DM37xx/OMAP36xx - ---- - arch/arm/mach-omap2/clock34xx_data.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c -index e3c752f..89e2f61 100644 ---- a/arch/arm/mach-omap2/clock34xx_data.c -+++ b/arch/arm/mach-omap2/clock34xx_data.c -@@ -3325,8 +3325,8 @@ static struct omap_clk omap3xxx_clks[] = { - CLK(NULL, "gfx_l3_ick", &gfx_l3_ick, CK_3430ES1), - CLK(NULL, "gfx_cg1_ck", &gfx_cg1_ck, CK_3430ES1), - CLK(NULL, "gfx_cg2_ck", &gfx_cg2_ck, CK_3430ES1), -- CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2 | CK_3517), -- CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2 | CK_3517), -+ CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2 | CK_3517 | CK_36XX), -+ CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2 | CK_3517 | CK_36XX), - CLK(NULL, "d2d_26m_fck", &d2d_26m_fck, CK_3430ES1), - CLK(NULL, "modem_fck", &modem_fck, CK_343X), - CLK(NULL, "sad2d_ick", &sad2d_ick, CK_343X), --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch b/recipes/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch new file mode 100644 index 0000000000..8426ce3086 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch @@ -0,0 +1,211 @@ +From 59c9e3b77e82affd2ab0233af06a47473f991996 Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Thu, 4 Feb 2010 21:38:30 +0200 +Subject: [PATCH 32/43] ARM: VFP: preserve the HW context when calling signal handlers + +ARM: VFP: preserve the HW context when calling signal handlers + +Signal handlers can use floating point, so prevent them to corrupt +the main thread's VFP context. So far there were two signal stack +frame formats defined based on the VFP implementation, but the user +struct used for ptrace covers all posibilities, so use it for the +signal stack too. This patch extends the user struct and leaves +its magic number the same, in the hope that user space code does +not depend on its size and can parse the original regs w/o +problems. + +Support to save / restore the exception registers was added by +Will Deacon. + +Signed-off-by: Imre Deak +Signed-off-by: Will Deacon +Signed-off-by: Bryan Wu +--- + arch/arm/include/asm/ucontext.h | 19 +++----- + arch/arm/include/asm/user.h | 3 + + arch/arm/kernel/signal.c | 91 +++++++++++++++++++++++++++++++++++++-- + 3 files changed, 97 insertions(+), 16 deletions(-) + +diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h +index bf65e9f..1c3236b 100644 +--- a/arch/arm/include/asm/ucontext.h ++++ b/arch/arm/include/asm/ucontext.h +@@ -59,23 +59,18 @@ struct iwmmxt_sigframe { + #endif /* CONFIG_IWMMXT */ + + #ifdef CONFIG_VFP +-#if __LINUX_ARM_ARCH__ < 6 +-/* For ARM pre-v6, we use fstmiax and fldmiax. This adds one extra +- * word after the registers, and a word of padding at the end for +- * alignment. */ + #define VFP_MAGIC 0x56465001 +-#define VFP_STORAGE_SIZE 152 +-#else +-#define VFP_MAGIC 0x56465002 +-#define VFP_STORAGE_SIZE 144 +-#endif + + struct vfp_sigframe + { + unsigned long magic; + unsigned long size; +- union vfp_state storage; +-}; ++ struct user_vfp ufp; ++} __attribute__((__aligned__(8))); ++ ++/* 8 byte for magic and size, 272 byte for ufp */ ++#define VFP_STORAGE_SIZE sizeof(struct vfp_sigframe) ++ + #endif /* CONFIG_VFP */ + + /* +@@ -91,7 +86,7 @@ struct aux_sigframe { + #ifdef CONFIG_IWMMXT + struct iwmmxt_sigframe iwmmxt; + #endif +-#if 0 && defined CONFIG_VFP /* Not yet saved. */ ++#ifdef CONFIG_VFP + struct vfp_sigframe vfp; + #endif + /* Something that isn't a valid magic number for any coprocessor. */ +diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h +index df95e05..ea7e44d 100644 +--- a/arch/arm/include/asm/user.h ++++ b/arch/arm/include/asm/user.h +@@ -88,6 +88,9 @@ struct user{ + struct user_vfp { + unsigned long long fpregs[32]; + unsigned long fpscr; ++ unsigned long fpexc; ++ unsigned long fpinst; ++ unsigned long fpinst2; + }; + + #endif /* _ARM_USER_H */ +diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c +index e7714f3..6a36851 100644 +--- a/arch/arm/kernel/signal.c ++++ b/arch/arm/kernel/signal.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + #include "ptrace.h" + #include "signal.h" +@@ -175,6 +176,88 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame) + + #endif + ++#ifdef CONFIG_VFP ++ ++static int preserve_vfp_context(struct vfp_sigframe __user *frame) ++{ ++ struct thread_info *thread = current_thread_info(); ++ struct vfp_hard_struct *h = &thread->vfpstate.hard; ++ const unsigned long magic = VFP_MAGIC; ++ const unsigned long size = VFP_STORAGE_SIZE; ++ int err = 0; ++ ++ vfp_sync_state(thread); ++ __put_user_error(magic, &frame->magic, err); ++ __put_user_error(size, &frame->size, err); ++ ++ /* ++ * Copy the floating point registers. There can be unused ++ * registers see asm/hwcap.h for details. ++ */ ++ err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs, ++ sizeof(h->fpregs)); ++ /* ++ * Copy the status and control register. ++ */ ++ __put_user_error(h->fpscr, &frame->ufp.fpscr, err); ++ ++ /* ++ * Copy the exception registers. ++ */ ++ __put_user_error(h->fpexc, &frame->ufp.fpexc, err); ++ __put_user_error(h->fpinst, &frame->ufp.fpinst, err); ++ __put_user_error(h->fpinst2, &frame->ufp.fpinst2, err); ++ ++ return err ? -EFAULT : 0; ++} ++ ++static int restore_vfp_context(struct vfp_sigframe __user *frame) ++{ ++ struct thread_info *thread = current_thread_info(); ++ struct vfp_hard_struct *h = &thread->vfpstate.hard; ++ unsigned long magic; ++ unsigned long size; ++ unsigned long fpexc; ++ int err = 0; ++ ++ vfp_sync_state(thread); ++ __get_user_error(magic, &frame->magic, err); ++ __get_user_error(size, &frame->size, err); ++ ++ if (err) ++ return -EFAULT; ++ if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE) ++ return -EINVAL; ++ ++ /* ++ * Copy the floating point registers. There can be unused ++ * registers see asm/hwcap.h for details. ++ */ ++ err |= __copy_from_user(&h->fpregs, &frame->ufp.fpregs, ++ sizeof(h->fpregs)); ++ /* ++ * Copy the status and control register. ++ */ ++ __get_user_error(h->fpscr, &frame->ufp.fpscr, err); ++ ++ /* ++ * Sanitise and restore the exception registers. ++ */ ++ __get_user_error(fpexc, &frame->ufp.fpexc, err); ++ /* Ensure the VFP is enabled. */ ++ fpexc |= FPEXC_EN; ++ /* Ensure FPINST2 is invalid and the exception flag is cleared. */ ++ fpexc &= ~(FPEXC_EX | FPEXC_FP2V); ++ h->fpexc = fpexc; ++ ++ __get_user_error(h->fpinst, &frame->ufp.fpinst, err); ++ __get_user_error(h->fpinst2, &frame->ufp.fpinst2, err); ++ ++ return err ? -EFAULT : 0; ++} ++ ++#endif ++ + /* + * Do a signal return; undo the signal stack. These are aligned to 64-bit. + */ +@@ -233,8 +316,8 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf) + err |= restore_iwmmxt_context(&aux->iwmmxt); + #endif + #ifdef CONFIG_VFP +-// if (err == 0) +-// err |= vfp_restore_state(&sf->aux.vfp); ++ if (err == 0) ++ err |= restore_vfp_context(&aux->vfp); + #endif + + return err; +@@ -348,8 +431,8 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set) + err |= preserve_iwmmxt_context(&aux->iwmmxt); + #endif + #ifdef CONFIG_VFP +-// if (err == 0) +-// err |= vfp_save_state(&sf->aux.vfp); ++ if (err == 0) ++ err |= preserve_vfp_context(&aux->vfp); + #endif + __put_user_error(0, &aux->end_magic, err); + +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0032-modedb.c-add-proper-720p60-mode.patch b/recipes/linux/linux-omap-psp-2.6.32/0032-modedb.c-add-proper-720p60-mode.patch deleted file mode 100644 index 35b792a35c..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0032-modedb.c-add-proper-720p60-mode.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 434d6d660b3988cdb096292c8c0ec51de2eea723 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 8 Mar 2010 14:38:31 +0100 -Subject: [PATCH 32/45] modedb.c: add proper 720p60 mode - ---- - drivers/video/modedb.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c -index b32fa2a..f017d57 100644 ---- a/drivers/video/modedb.c -+++ b/drivers/video/modedb.c -@@ -44,6 +44,10 @@ static const struct fb_videomode modedb[] = { - NULL, 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2, - 0, FB_VMODE_NONINTERLACED - }, { -+ /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */ -+ "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, -+ 0, FB_VMODE_NONINTERLACED -+ }, { - /* 800x600 @ 56 Hz, 35.15 kHz hsync */ - NULL, 56, 800, 600, 27777, 128, 24, 22, 1, 72, 2, - 0, FB_VMODE_NONINTERLACED --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0033-RTC-add-support-for-backup-battery-recharge.patch b/recipes/linux/linux-omap-psp-2.6.32/0033-RTC-add-support-for-backup-battery-recharge.patch deleted file mode 100644 index ee133c7892..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0033-RTC-add-support-for-backup-battery-recharge.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 25052ae67a0c5be9dea6f3e225b23dd3e7566d77 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Thu, 4 Feb 2010 12:26:22 -0800 -Subject: [PATCH 33/45] RTC: add support for backup battery recharge - ---- - drivers/rtc/rtc-twl.c | 25 +++++++++++++++++++++++++ - 1 files changed, 25 insertions(+), 0 deletions(-) - -diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c -index c6a83a2..2329b5b 100644 ---- a/drivers/rtc/rtc-twl.c -+++ b/drivers/rtc/rtc-twl.c -@@ -30,6 +30,23 @@ - - #include - -+/* -+ * PM_RECEIVER block register offsets (use TWL4030_MODULE_PM_RECEIVER) -+ */ -+#define REG_BB_CFG 0x12 -+ -+/* PM_RECEIVER BB_CFG bitfields */ -+#define BIT_PM_RECEIVER_BB_CFG_BBCHEN 0x10 -+#define BIT_PM_RECEIVER_BB_CFG_BBSEL 0x0C -+#define BIT_PM_RECEIVER_BB_CFG_BBSEL_2V5 0x00 -+#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3V0 0x04 -+#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3V1 0x08 -+#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3v2 0x0c -+#define BIT_PM_RECEIVER_BB_CFG_BBISEL 0x03 -+#define BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA 0x00 -+#define BIT_PM_RECEIVER_BB_CFG_BBISEL_150UA 0x01 -+#define BIT_PM_RECEIVER_BB_CFG_BBISEL_500UA 0x02 -+#define BIT_PM_RECEIVER_BB_CFG_BBISEL_1MA 0x03 - - /* - * RTC block register offsets (use TWL_MODULE_RTC) -@@ -508,6 +525,14 @@ static int __devinit twl_rtc_probe(struct platform_device *pdev) - if (ret < 0) - goto out2; - -+ /* enable backup battery charging */ -+ /* use a conservative 25uA @ 3.1V */ -+ ret = twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ BIT_PM_RECEIVER_BB_CFG_BBCHEN | -+ BIT_PM_RECEIVER_BB_CFG_BBSEL_3V1 | -+ BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA, -+ REG_BB_CFG); -+ - return ret; - - out2: --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch b/recipes/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch new file mode 100644 index 0000000000..972976d27f --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch @@ -0,0 +1,27 @@ +From b9e50cb8ee8ad92d71b65bd71700be1894f9e543 Mon Sep 17 00:00:00 2001 +From: Prabindh Sundareson +Date: Wed, 3 Mar 2010 15:45:35 +0100 +Subject: [PATCH 33/43] Switch SGX clocks to 200MHz on DM37xx/OMAP36xx + +--- + arch/arm/mach-omap2/clock34xx_data.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c +index e3c752f..89e2f61 100644 +--- a/arch/arm/mach-omap2/clock34xx_data.c ++++ b/arch/arm/mach-omap2/clock34xx_data.c +@@ -3325,8 +3325,8 @@ static struct omap_clk omap3xxx_clks[] = { + CLK(NULL, "gfx_l3_ick", &gfx_l3_ick, CK_3430ES1), + CLK(NULL, "gfx_cg1_ck", &gfx_cg1_ck, CK_3430ES1), + CLK(NULL, "gfx_cg2_ck", &gfx_cg2_ck, CK_3430ES1), +- CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2 | CK_3517), +- CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2 | CK_3517), ++ CLK(NULL, "sgx_fck", &sgx_fck, CK_3430ES2 | CK_3517 | CK_36XX), ++ CLK(NULL, "sgx_ick", &sgx_ick, CK_3430ES2 | CK_3517 | CK_36XX), + CLK(NULL, "d2d_26m_fck", &d2d_26m_fck, CK_3430ES1), + CLK(NULL, "modem_fck", &modem_fck, CK_343X), + CLK(NULL, "sad2d_ick", &sad2d_ick, CK_343X), +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch b/recipes/linux/linux-omap-psp-2.6.32/0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch deleted file mode 100644 index e64c68194d..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch +++ /dev/null @@ -1,29 +0,0 @@ -From ca92b0b90ed5ebd14a6ad29d9a0c858274f7f566 Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Mon, 13 Oct 2008 20:32:16 +0100 -Subject: [PATCH 34/45] ARM: Add prompt for CONFIG_ALIGNMENT_TRAP - -This adds a prompt text for CONFIG_ALIGNMENT_TRAP, thus making it -visible in make *config. - -Signed-off-by: Mans Rullgard ---- - arch/arm/Kconfig | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 88f628b..f5ded3c 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -1224,7 +1224,7 @@ config LEDS_CPU - will overrule the CPU usage LED. - - config ALIGNMENT_TRAP -- bool -+ bool "Enable alignment trap" - depends on CPU_CP15_MMU - default y if !ARCH_EBSA110 - help --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch b/recipes/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch new file mode 100644 index 0000000000..1d49fcd475 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch @@ -0,0 +1,27 @@ +From fd8be8ca22b19d58202ef84cc27d0f14d2f59e2a Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 8 Mar 2010 14:38:31 +0100 +Subject: [PATCH 34/43] modedb.c: add proper 720p60 mode + +--- + drivers/video/modedb.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c +index b32fa2a..f017d57 100644 +--- a/drivers/video/modedb.c ++++ b/drivers/video/modedb.c +@@ -44,6 +44,10 @@ static const struct fb_videomode modedb[] = { + NULL, 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2, + 0, FB_VMODE_NONINTERLACED + }, { ++ /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */ ++ "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, ++ 0, FB_VMODE_NONINTERLACED ++ }, { + /* 800x600 @ 56 Hz, 35.15 kHz hsync */ + NULL, 56, 800, 600, 27777, 128, 24, 22, 1, 72, 2, + 0, FB_VMODE_NONINTERLACED +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch b/recipes/linux/linux-omap-psp-2.6.32/0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch deleted file mode 100644 index f6b1705257..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 7100b98fc3ad8bff74f3469ac5257c7c500c525c Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Sat, 28 Mar 2009 13:21:55 +0000 -Subject: [PATCH 35/45] ARM: Print warning on alignment trap in kernel mode - -Signed-off-by: Mans Rullgard ---- - arch/arm/mm/alignment.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c -index b270d62..5e9014b 100644 ---- a/arch/arm/mm/alignment.c -+++ b/arch/arm/mm/alignment.c -@@ -756,6 +756,13 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) - - ai_sys += 1; - -+ printk("Alignment trap in kernel: %s (%d) PC=0x%08lx Instr=0x%0*lx " -+ "Address=0x%08lx FSR 0x%03x\n", current->comm, -+ task_pid_nr(current), instrptr, -+ thumb_mode(regs) ? 4 : 8, -+ thumb_mode(regs) ? tinstr : instr, -+ addr, fsr); -+ - fixup: - - regs->ARM_pc += isize; --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch b/recipes/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch new file mode 100644 index 0000000000..ba689c459c --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch @@ -0,0 +1,55 @@ +From 02203232a3230c06a1bc939c92aac7e910c5d578 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 4 Feb 2010 12:26:22 -0800 +Subject: [PATCH 35/43] RTC: add support for backup battery recharge + +--- + drivers/rtc/rtc-twl.c | 25 +++++++++++++++++++++++++ + 1 files changed, 25 insertions(+), 0 deletions(-) + +diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c +index c6a83a2..2329b5b 100644 +--- a/drivers/rtc/rtc-twl.c ++++ b/drivers/rtc/rtc-twl.c +@@ -30,6 +30,23 @@ + + #include + ++/* ++ * PM_RECEIVER block register offsets (use TWL4030_MODULE_PM_RECEIVER) ++ */ ++#define REG_BB_CFG 0x12 ++ ++/* PM_RECEIVER BB_CFG bitfields */ ++#define BIT_PM_RECEIVER_BB_CFG_BBCHEN 0x10 ++#define BIT_PM_RECEIVER_BB_CFG_BBSEL 0x0C ++#define BIT_PM_RECEIVER_BB_CFG_BBSEL_2V5 0x00 ++#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3V0 0x04 ++#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3V1 0x08 ++#define BIT_PM_RECEIVER_BB_CFG_BBSEL_3v2 0x0c ++#define BIT_PM_RECEIVER_BB_CFG_BBISEL 0x03 ++#define BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA 0x00 ++#define BIT_PM_RECEIVER_BB_CFG_BBISEL_150UA 0x01 ++#define BIT_PM_RECEIVER_BB_CFG_BBISEL_500UA 0x02 ++#define BIT_PM_RECEIVER_BB_CFG_BBISEL_1MA 0x03 + + /* + * RTC block register offsets (use TWL_MODULE_RTC) +@@ -508,6 +525,14 @@ static int __devinit twl_rtc_probe(struct platform_device *pdev) + if (ret < 0) + goto out2; + ++ /* enable backup battery charging */ ++ /* use a conservative 25uA @ 3.1V */ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, ++ BIT_PM_RECEIVER_BB_CFG_BBCHEN | ++ BIT_PM_RECEIVER_BB_CFG_BBSEL_3V1 | ++ BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA, ++ REG_BB_CFG); ++ + return ret; + + out2: +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch b/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch new file mode 100644 index 0000000000..dcf4ac6f12 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch @@ -0,0 +1,29 @@ +From 1bd440f727d2ce1a9673489b776e38e1b4dd0521 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Mon, 13 Oct 2008 20:32:16 +0100 +Subject: [PATCH 36/43] ARM: Add prompt for CONFIG_ALIGNMENT_TRAP + +This adds a prompt text for CONFIG_ALIGNMENT_TRAP, thus making it +visible in make *config. + +Signed-off-by: Mans Rullgard +--- + arch/arm/Kconfig | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 88f628b..f5ded3c 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -1224,7 +1224,7 @@ config LEDS_CPU + will overrule the CPU usage LED. + + config ALIGNMENT_TRAP +- bool ++ bool "Enable alignment trap" + depends on CPU_CP15_MMU + default y if !ARCH_EBSA110 + help +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch b/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch deleted file mode 100644 index c7fa562ebe..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch +++ /dev/null @@ -1,202 +0,0 @@ -From eb05553047988e84a6be8d1548efbcb43ccbb13b Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Tue, 10 Nov 2009 00:39:21 +0000 -Subject: [PATCH 36/45] ARM: Expose some CPU control registers via sysfs - -This creates sysfs files under /sys/devices/system/cpu/cpuN -exposing the values of the control register, auxiliary control -register, and L2 cache auxiliary control register. Writing to -the files allows setting the value of bits which are safe to -change at any time. - -Signed-off-by: Mans Rullgard ---- - arch/arm/Kconfig | 5 ++ - arch/arm/kernel/Makefile | 1 + - arch/arm/kernel/sysfs_v7.c | 146 ++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 152 insertions(+), 0 deletions(-) - create mode 100644 arch/arm/kernel/sysfs_v7.c - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index f5ded3c..2d370da 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -1252,6 +1252,11 @@ config UACCESS_WITH_MEMCPY - However, if the CPU data cache is using a write-allocate mode, - this option is unlikely to provide any performance gain. - -+config CPU_V7_SYSFS -+ bool -+ depends on CPU_V7 && SYSFS -+ default y -+ - endmenu - - menu "Boot options" -diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile -index dd00f74..ee20134 100644 ---- a/arch/arm/kernel/Makefile -+++ b/arch/arm/kernel/Makefile -@@ -38,6 +38,7 @@ obj-$(CONFIG_ARM_THUMBEE) += thumbee.o - obj-$(CONFIG_KGDB) += kgdb.o - obj-$(CONFIG_ARM_UNWIND) += unwind.o - obj-$(CONFIG_HAVE_TCM) += tcm.o -+obj-$(CONFIG_CPU_V7_SYSFS) += sysfs_v7.o - - obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o - AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312 -diff --git a/arch/arm/kernel/sysfs_v7.c b/arch/arm/kernel/sysfs_v7.c -new file mode 100644 -index 0000000..c05bf5f ---- /dev/null -+++ b/arch/arm/kernel/sysfs_v7.c -@@ -0,0 +1,146 @@ -+/* -+ * linux/arch/arm/kernel/sysfs.c -+ * -+ * Copyright (C) 2008 Mans Rullgard -+ * -+ * 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 -+#include -+#include -+#include -+ -+#define SETBITS(val, bits, new) \ -+ do { \ -+ val &= ~bits; \ -+ val |= new & bits; \ -+ } while (0) -+ -+#define SHOW_REG(name, opc1, crn, crm, opc2) \ -+static ssize_t name##_show(struct sys_device *dev, \ -+ struct sysdev_attribute *attr, \ -+ char *buf) \ -+{ \ -+ unsigned val; \ -+ asm ("mrc p15,"#opc1", %0,"#crn","#crm","#opc2 : "=r"(val)); \ -+ return snprintf(buf, PAGE_SIZE, "%08x\n", val); \ -+} -+ -+#define STORE_REG(name, opc1, crn, crm, opc2, bits) \ -+static ssize_t name##_store(struct sys_device *dev, \ -+ struct sysdev_attribute *attr, \ -+ const char *buf, size_t size) \ -+{ \ -+ char *end; \ -+ unsigned new = simple_strtoul(buf, &end, 0); \ -+ unsigned val; \ -+ \ -+ if (end == buf) \ -+ return -EINVAL; \ -+ \ -+ asm ("mrc p15,"#opc1", %0,"#crn","#crm","#opc2 : "=r"(val)); \ -+ SETBITS(val, bits, new); \ -+ asm ("mcr p15,"#opc1", %0,"#crn","#crm","#opc2 :: "r"(val)); \ -+ \ -+ return end - buf; \ -+} -+ -+#define RD_REG(name, opc1, crn, crm, opc2) \ -+ SHOW_REG(name, opc1, crn, crm, opc2) \ -+ static SYSDEV_ATTR(name, S_IRUGO|S_IWUSR, name##_show, NULL) -+ -+#define RDWR_REG(name, opc1, crn, crm, opc2, bits) \ -+ SHOW_REG(name, opc1, crn, crm, opc2) \ -+ STORE_REG(name, opc1, crn, crm, opc2, bits) \ -+ static SYSDEV_ATTR(name, S_IRUGO|S_IWUSR, name##_show, name##_store) -+ -+RDWR_REG(control, 0, c1, c0, 0, 0x802); -+ -+SHOW_REG(aux_ctl, 0, c1, c0, 1) -+ -+#ifdef CONFIG_ARCH_OMAP34XX -+static ssize_t aux_ctl_store(struct sys_device *dev, -+ struct sysdev_attribute *attr, -+ const char *buf, size_t size) -+{ -+ char *end; -+ unsigned new = simple_strtoul(buf, &end, 0); -+ unsigned val; -+ -+ if (end == buf) -+ return -EINVAL; -+ -+ asm ("mrc p15, 0, %0, c1, c0, 1" : "=r"(val)); -+ SETBITS(val, 0xff8, new); -+ val &= ~2; -+ asm ("mov r0, %0 \n\t" -+ "mov r12, #3 \n\t" -+ "smc #0 \n\t" -+ :: "r"(val) : "r0", "r12"); -+ -+ return end - buf; -+} -+#define AUX_WR S_IWUSR -+#else -+#define aux_ctl_store NULL -+#define AUX_WR 0 -+#endif -+ -+static SYSDEV_ATTR(aux_control, S_IRUGO|AUX_WR, aux_ctl_show, aux_ctl_store); -+ -+SHOW_REG(l2_aux_ctl, 1, c9, c0, 2) -+ -+#ifdef CONFIG_ARCH_OMAP34XX -+static ssize_t l2_aux_ctl_store(struct sys_device *dev, -+ struct sysdev_attribute *attr, -+ const char *buf, size_t size) -+{ -+ char *end; -+ unsigned new = simple_strtoul(buf, &end, 0); -+ unsigned val; -+ -+ if (end == buf) -+ return -EINVAL; -+ -+ asm ("mrc p15, 1, %0, c9, c0, 2" : "=r"(val)); -+ SETBITS(val, 0xbc00000, new); -+ asm ("mov r0, %0 \n\t" -+ "mov r12, #2 \n\t" -+ "smc #0 \n\t" -+ :: "r"(val) : "r0", "r12"); -+ -+ return end - buf; -+} -+#define L2AUX_WR S_IWUSR -+#else -+#define l2_aux_ctl_store NULL -+#define L2AUX_WR 0 -+#endif -+ -+static SYSDEV_ATTR(l2_aux_control, S_IRUGO|L2AUX_WR, -+ l2_aux_ctl_show, l2_aux_ctl_store); -+ -+#define REG_ATTR(sysdev, name) \ -+ do { \ -+ int err = sysfs_create_file(&sysdev->kobj, &name.attr); \ -+ WARN_ON(err != 0); \ -+ } while (0) -+ -+static int __init cpu_sysfs_init(void) -+{ -+ struct sys_device *sysdev; -+ int cpu; -+ -+ for_each_possible_cpu(cpu) { -+ sysdev = get_cpu_sysdev(cpu); -+ REG_ATTR(sysdev, attr_control); -+ REG_ATTR(sysdev, attr_aux_control); -+ REG_ATTR(sysdev, attr_l2_aux_control); -+ } -+ -+ return 0; -+} -+device_initcall(cpu_sysfs_init); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Add-option-to-allow-userspace-PLE-access.patch b/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Add-option-to-allow-userspace-PLE-access.patch deleted file mode 100644 index 59a19546dd..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Add-option-to-allow-userspace-PLE-access.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 84296cfee5a95613be6dd32467b7c0766174d9f6 Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Tue, 10 Nov 2009 00:41:54 +0000 -Subject: [PATCH 37/45] ARM: Add option to allow userspace PLE access - -This adds a Kconfig option to allow userspace to access the L2 preload -engine (PLE) found in Cortex-A8. - -Signed-off-by: Mans Rullgard ---- - arch/arm/kernel/head.S | 4 ++++ - arch/arm/mm/Kconfig | 8 ++++++++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S -index eb62bf9..659ec9e 100644 ---- a/arch/arm/kernel/head.S -+++ b/arch/arm/kernel/head.S -@@ -172,6 +172,10 @@ __enable_mmu: - #ifdef CONFIG_CPU_ICACHE_DISABLE - bic r0, r0, #CR_I - #endif -+#ifdef CONFIG_USER_L2_PLE -+ mov r5, #3 -+ mcr p15, 0, r5, c11, c1, 0 -+#endif - mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \ - domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \ - domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \ -diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig -index dd4698c..564ff7d 100644 ---- a/arch/arm/mm/Kconfig -+++ b/arch/arm/mm/Kconfig -@@ -785,3 +785,11 @@ config ARM_L1_CACHE_SHIFT - int - default 6 if ARCH_OMAP3 || ARCH_S5PC1XX - default 5 -+ -+config USER_L2_PLE -+ bool "Enable userspace access to the L2 PLE" -+ depends on CPU_V7 -+ default n -+ help -+ Enable userspace access to the L2 preload engine (PLE) available -+ in Cortex-A series ARM processors. --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch b/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch new file mode 100644 index 0000000000..713ab4600f --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch @@ -0,0 +1,31 @@ +From f1f418ef2fd457872e4ca7da1789bcfd8f97bca8 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Sat, 28 Mar 2009 13:21:55 +0000 +Subject: [PATCH 37/43] ARM: Print warning on alignment trap in kernel mode + +Signed-off-by: Mans Rullgard +--- + arch/arm/mm/alignment.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c +index b270d62..5e9014b 100644 +--- a/arch/arm/mm/alignment.c ++++ b/arch/arm/mm/alignment.c +@@ -756,6 +756,13 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) + + ai_sys += 1; + ++ printk("Alignment trap in kernel: %s (%d) PC=0x%08lx Instr=0x%0*lx " ++ "Address=0x%08lx FSR 0x%03x\n", current->comm, ++ task_pid_nr(current), instrptr, ++ thumb_mode(regs) ? 4 : 8, ++ thumb_mode(regs) ? tinstr : instr, ++ addr, fsr); ++ + fixup: + + regs->ARM_pc += isize; +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch b/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch deleted file mode 100644 index 3f22c9d550..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch +++ /dev/null @@ -1,49 +0,0 @@ -From fd47acba386ae20539816664f6be3fdc5602b93d Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Tue, 10 Nov 2009 00:52:56 +0000 -Subject: [PATCH 38/45] ARM: Add option to allow userspace access to performance counters - -This adds an option to allow userspace access to the performance monitor -registers of the Cortex-A8. - -Signed-off-by: Mans Rullgard ---- - arch/arm/mm/Kconfig | 7 +++++++ - arch/arm/mm/proc-v7.S | 6 ++++++ - 2 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig -index 564ff7d..fda2e68 100644 ---- a/arch/arm/mm/Kconfig -+++ b/arch/arm/mm/Kconfig -@@ -793,3 +793,10 @@ config USER_L2_PLE - help - Enable userspace access to the L2 preload engine (PLE) available - in Cortex-A series ARM processors. -+ -+config USER_PMON -+ bool "Enable userspace access to performance counters" -+ depends on CPU_V7 -+ default n -+ help -+ Enable userpsace access to the performance monitor registers. -diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S -index 3a28521..fec926a 100644 ---- a/arch/arm/mm/proc-v7.S -+++ b/arch/arm/mm/proc-v7.S -@@ -270,6 +270,12 @@ __v7_setup: - mcr p15, 0, r5, c10, c2, 0 @ write PRRR - mcr p15, 0, r6, c10, c2, 1 @ write NMRR - #endif -+ -+#ifdef CONFIG_USER_PMON -+ mov r0, #1 -+ mcr p15, 0, r0, c9, c14, 0 -+#endif -+ - adr r5, v7_crval - ldmia r5, {r5, r6} - #ifdef CONFIG_CPU_ENDIAN_BE8 --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch b/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch new file mode 100644 index 0000000000..e5670fc155 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch @@ -0,0 +1,202 @@ +From bbc04eff26fcd9ecb75069a62a84fa49d83811b8 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:39:21 +0000 +Subject: [PATCH 38/43] ARM: Expose some CPU control registers via sysfs + +This creates sysfs files under /sys/devices/system/cpu/cpuN +exposing the values of the control register, auxiliary control +register, and L2 cache auxiliary control register. Writing to +the files allows setting the value of bits which are safe to +change at any time. + +Signed-off-by: Mans Rullgard +--- + arch/arm/Kconfig | 5 ++ + arch/arm/kernel/Makefile | 1 + + arch/arm/kernel/sysfs_v7.c | 146 ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 152 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/kernel/sysfs_v7.c + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index f5ded3c..2d370da 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -1252,6 +1252,11 @@ config UACCESS_WITH_MEMCPY + However, if the CPU data cache is using a write-allocate mode, + this option is unlikely to provide any performance gain. + ++config CPU_V7_SYSFS ++ bool ++ depends on CPU_V7 && SYSFS ++ default y ++ + endmenu + + menu "Boot options" +diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile +index dd00f74..ee20134 100644 +--- a/arch/arm/kernel/Makefile ++++ b/arch/arm/kernel/Makefile +@@ -38,6 +38,7 @@ obj-$(CONFIG_ARM_THUMBEE) += thumbee.o + obj-$(CONFIG_KGDB) += kgdb.o + obj-$(CONFIG_ARM_UNWIND) += unwind.o + obj-$(CONFIG_HAVE_TCM) += tcm.o ++obj-$(CONFIG_CPU_V7_SYSFS) += sysfs_v7.o + + obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o + AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312 +diff --git a/arch/arm/kernel/sysfs_v7.c b/arch/arm/kernel/sysfs_v7.c +new file mode 100644 +index 0000000..c05bf5f +--- /dev/null ++++ b/arch/arm/kernel/sysfs_v7.c +@@ -0,0 +1,146 @@ ++/* ++ * linux/arch/arm/kernel/sysfs.c ++ * ++ * Copyright (C) 2008 Mans Rullgard ++ * ++ * 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 ++#include ++#include ++#include ++ ++#define SETBITS(val, bits, new) \ ++ do { \ ++ val &= ~bits; \ ++ val |= new & bits; \ ++ } while (0) ++ ++#define SHOW_REG(name, opc1, crn, crm, opc2) \ ++static ssize_t name##_show(struct sys_device *dev, \ ++ struct sysdev_attribute *attr, \ ++ char *buf) \ ++{ \ ++ unsigned val; \ ++ asm ("mrc p15,"#opc1", %0,"#crn","#crm","#opc2 : "=r"(val)); \ ++ return snprintf(buf, PAGE_SIZE, "%08x\n", val); \ ++} ++ ++#define STORE_REG(name, opc1, crn, crm, opc2, bits) \ ++static ssize_t name##_store(struct sys_device *dev, \ ++ struct sysdev_attribute *attr, \ ++ const char *buf, size_t size) \ ++{ \ ++ char *end; \ ++ unsigned new = simple_strtoul(buf, &end, 0); \ ++ unsigned val; \ ++ \ ++ if (end == buf) \ ++ return -EINVAL; \ ++ \ ++ asm ("mrc p15,"#opc1", %0,"#crn","#crm","#opc2 : "=r"(val)); \ ++ SETBITS(val, bits, new); \ ++ asm ("mcr p15,"#opc1", %0,"#crn","#crm","#opc2 :: "r"(val)); \ ++ \ ++ return end - buf; \ ++} ++ ++#define RD_REG(name, opc1, crn, crm, opc2) \ ++ SHOW_REG(name, opc1, crn, crm, opc2) \ ++ static SYSDEV_ATTR(name, S_IRUGO|S_IWUSR, name##_show, NULL) ++ ++#define RDWR_REG(name, opc1, crn, crm, opc2, bits) \ ++ SHOW_REG(name, opc1, crn, crm, opc2) \ ++ STORE_REG(name, opc1, crn, crm, opc2, bits) \ ++ static SYSDEV_ATTR(name, S_IRUGO|S_IWUSR, name##_show, name##_store) ++ ++RDWR_REG(control, 0, c1, c0, 0, 0x802); ++ ++SHOW_REG(aux_ctl, 0, c1, c0, 1) ++ ++#ifdef CONFIG_ARCH_OMAP34XX ++static ssize_t aux_ctl_store(struct sys_device *dev, ++ struct sysdev_attribute *attr, ++ const char *buf, size_t size) ++{ ++ char *end; ++ unsigned new = simple_strtoul(buf, &end, 0); ++ unsigned val; ++ ++ if (end == buf) ++ return -EINVAL; ++ ++ asm ("mrc p15, 0, %0, c1, c0, 1" : "=r"(val)); ++ SETBITS(val, 0xff8, new); ++ val &= ~2; ++ asm ("mov r0, %0 \n\t" ++ "mov r12, #3 \n\t" ++ "smc #0 \n\t" ++ :: "r"(val) : "r0", "r12"); ++ ++ return end - buf; ++} ++#define AUX_WR S_IWUSR ++#else ++#define aux_ctl_store NULL ++#define AUX_WR 0 ++#endif ++ ++static SYSDEV_ATTR(aux_control, S_IRUGO|AUX_WR, aux_ctl_show, aux_ctl_store); ++ ++SHOW_REG(l2_aux_ctl, 1, c9, c0, 2) ++ ++#ifdef CONFIG_ARCH_OMAP34XX ++static ssize_t l2_aux_ctl_store(struct sys_device *dev, ++ struct sysdev_attribute *attr, ++ const char *buf, size_t size) ++{ ++ char *end; ++ unsigned new = simple_strtoul(buf, &end, 0); ++ unsigned val; ++ ++ if (end == buf) ++ return -EINVAL; ++ ++ asm ("mrc p15, 1, %0, c9, c0, 2" : "=r"(val)); ++ SETBITS(val, 0xbc00000, new); ++ asm ("mov r0, %0 \n\t" ++ "mov r12, #2 \n\t" ++ "smc #0 \n\t" ++ :: "r"(val) : "r0", "r12"); ++ ++ return end - buf; ++} ++#define L2AUX_WR S_IWUSR ++#else ++#define l2_aux_ctl_store NULL ++#define L2AUX_WR 0 ++#endif ++ ++static SYSDEV_ATTR(l2_aux_control, S_IRUGO|L2AUX_WR, ++ l2_aux_ctl_show, l2_aux_ctl_store); ++ ++#define REG_ATTR(sysdev, name) \ ++ do { \ ++ int err = sysfs_create_file(&sysdev->kobj, &name.attr); \ ++ WARN_ON(err != 0); \ ++ } while (0) ++ ++static int __init cpu_sysfs_init(void) ++{ ++ struct sys_device *sysdev; ++ int cpu; ++ ++ for_each_possible_cpu(cpu) { ++ sysdev = get_cpu_sysdev(cpu); ++ REG_ATTR(sysdev, attr_control); ++ REG_ATTR(sysdev, attr_aux_control); ++ REG_ATTR(sysdev, attr_l2_aux_control); ++ } ++ ++ return 0; ++} ++device_initcall(cpu_sysfs_init); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch b/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch new file mode 100644 index 0000000000..e97d9d5117 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch @@ -0,0 +1,48 @@ +From 7ba11a1ce9a6dc90dd17aeff30127217fa604ecf Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:41:54 +0000 +Subject: [PATCH 39/43] ARM: Add option to allow userspace PLE access + +This adds a Kconfig option to allow userspace to access the L2 preload +engine (PLE) found in Cortex-A8. + +Signed-off-by: Mans Rullgard +--- + arch/arm/kernel/head.S | 4 ++++ + arch/arm/mm/Kconfig | 8 ++++++++ + 2 files changed, 12 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index eb62bf9..659ec9e 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -172,6 +172,10 @@ __enable_mmu: + #ifdef CONFIG_CPU_ICACHE_DISABLE + bic r0, r0, #CR_I + #endif ++#ifdef CONFIG_USER_L2_PLE ++ mov r5, #3 ++ mcr p15, 0, r5, c11, c1, 0 ++#endif + mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \ + domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \ + domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \ +diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig +index dd4698c..564ff7d 100644 +--- a/arch/arm/mm/Kconfig ++++ b/arch/arm/mm/Kconfig +@@ -785,3 +785,11 @@ config ARM_L1_CACHE_SHIFT + int + default 6 if ARCH_OMAP3 || ARCH_S5PC1XX + default 5 ++ ++config USER_L2_PLE ++ bool "Enable userspace access to the L2 PLE" ++ depends on CPU_V7 ++ default n ++ help ++ Enable userspace access to the L2 preload engine (PLE) available ++ in Cortex-A series ARM processors. +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Expose-some-PMON-registers-through-sysfs.patch b/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Expose-some-PMON-registers-through-sysfs.patch deleted file mode 100644 index c9abeffdb4..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Expose-some-PMON-registers-through-sysfs.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 887cd41fff0c399086a06e38a734bc0f14006b82 Mon Sep 17 00:00:00 2001 -From: Mans Rullgard -Date: Sat, 28 Mar 2009 13:05:02 +0000 -Subject: [PATCH 39/45] ARM: Expose some PMON registers through sysfs - ---- - arch/arm/kernel/sysfs_v7.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/kernel/sysfs_v7.c b/arch/arm/kernel/sysfs_v7.c -index c05bf5f..5ed32fb 100644 ---- a/arch/arm/kernel/sysfs_v7.c -+++ b/arch/arm/kernel/sysfs_v7.c -@@ -123,6 +123,12 @@ static ssize_t l2_aux_ctl_store(struct sys_device *dev, - static SYSDEV_ATTR(l2_aux_control, S_IRUGO|L2AUX_WR, - l2_aux_ctl_show, l2_aux_ctl_store); - -+RDWR_REG(pmon_pmnc, 0, c9, c12, 0, 0x3f) -+RDWR_REG(pmon_cntens, 0, c9, c12, 1, 0x8000000f) -+RDWR_REG(pmon_cntenc, 0, c9, c12, 2, 0x8000000f) -+RDWR_REG(pmon_ccnt, 0, c9, c13, 0, 0xffffffff) -+RDWR_REG(pmon_useren, 0, c9, c14, 0, 1) -+ - #define REG_ATTR(sysdev, name) \ - do { \ - int err = sysfs_create_file(&sysdev->kobj, &name.attr); \ -@@ -139,6 +145,11 @@ static int __init cpu_sysfs_init(void) - REG_ATTR(sysdev, attr_control); - REG_ATTR(sysdev, attr_aux_control); - REG_ATTR(sysdev, attr_l2_aux_control); -+ REG_ATTR(sysdev, attr_pmon_pmnc); -+ REG_ATTR(sysdev, attr_pmon_cntens); -+ REG_ATTR(sysdev, attr_pmon_cntenc); -+ REG_ATTR(sysdev, attr_pmon_ccnt); -+ REG_ATTR(sysdev, attr_pmon_useren); - } - - return 0; --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch b/recipes/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch new file mode 100644 index 0000000000..41a303662e --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch @@ -0,0 +1,49 @@ +From 7a20711022052ffe2a563f83e8645712919234ba Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:52:56 +0000 +Subject: [PATCH 40/43] ARM: Add option to allow userspace access to performance counters + +This adds an option to allow userspace access to the performance monitor +registers of the Cortex-A8. + +Signed-off-by: Mans Rullgard +--- + arch/arm/mm/Kconfig | 7 +++++++ + arch/arm/mm/proc-v7.S | 6 ++++++ + 2 files changed, 13 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig +index 564ff7d..fda2e68 100644 +--- a/arch/arm/mm/Kconfig ++++ b/arch/arm/mm/Kconfig +@@ -793,3 +793,10 @@ config USER_L2_PLE + help + Enable userspace access to the L2 preload engine (PLE) available + in Cortex-A series ARM processors. ++ ++config USER_PMON ++ bool "Enable userspace access to performance counters" ++ depends on CPU_V7 ++ default n ++ help ++ Enable userpsace access to the performance monitor registers. +diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S +index 3a28521..fec926a 100644 +--- a/arch/arm/mm/proc-v7.S ++++ b/arch/arm/mm/proc-v7.S +@@ -270,6 +270,12 @@ __v7_setup: + mcr p15, 0, r5, c10, c2, 0 @ write PRRR + mcr p15, 0, r6, c10, c2, 1 @ write NMRR + #endif ++ ++#ifdef CONFIG_USER_PMON ++ mov r0, #1 ++ mcr p15, 0, r0, c9, c14, 0 ++#endif ++ + adr r5, v7_crval + ldmia r5, {r5, r6} + #ifdef CONFIG_CPU_ENDIAN_BE8 +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0040-musb-allow-host-io-without-gadget-module.patch b/recipes/linux/linux-omap-psp-2.6.32/0040-musb-allow-host-io-without-gadget-module.patch deleted file mode 100644 index 1c19d6bbab..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0040-musb-allow-host-io-without-gadget-module.patch +++ /dev/null @@ -1,90 +0,0 @@ -From e33724530848154c9302a720427bd46bf8a6700c Mon Sep 17 00:00:00 2001 -From: Ajay Kumar Gupta -Date: Wed, 14 Apr 2010 16:08:37 +0530 -Subject: [PATCH 40/45] musb: allow host io without gadget module - -Signed-off-by: Ajay Kumar Gupta ---- - drivers/usb/musb/musb_core.c | 14 +++++++++----- - drivers/usb/musb/musb_gadget.c | 26 -------------------------- - 2 files changed, 9 insertions(+), 31 deletions(-) - -diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c -index 7ed7f6a..649b689 100644 ---- a/drivers/usb/musb/musb_core.c -+++ b/drivers/usb/musb/musb_core.c -@@ -2101,10 +2101,12 @@ bad_config: - * (We expect the ID pin to be forcibly grounded!!) - * Otherwise, wait till the gadget driver hooks up. - */ -- if (!is_otg_enabled(musb) && is_host_enabled(musb)) { -- MUSB_HST_MODE(musb); -- musb->xceiv->default_a = 1; -- musb->xceiv->state = OTG_STATE_A_IDLE; -+ if (is_host_enabled(musb)) { -+ if (!is_otg_enabled(musb)) { -+ MUSB_HST_MODE(musb); -+ musb->xceiv->default_a = 1; -+ musb->xceiv->state = OTG_STATE_A_IDLE; -+ } - - status = usb_add_hcd(musb_to_hcd(musb), -1, 0); - -@@ -2115,7 +2117,9 @@ bad_config: - & MUSB_DEVCTL_BDEVICE - ? 'B' : 'A')); - -- } else /* peripheral is enabled */ { -+ } -+ /* peripheral is enabled */ -+ if (is_peripheral_enabled(musb)) { - MUSB_DEV_MODE(musb); - musb->xceiv->default_a = 0; - musb->xceiv->state = OTG_STATE_B_IDLE; -diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c -index c0e2efc..e0a6015 100644 ---- a/drivers/usb/musb/musb_gadget.c -+++ b/drivers/usb/musb/musb_gadget.c -@@ -1765,24 +1765,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) - otg_set_peripheral(musb->xceiv, &musb->g); - - spin_unlock_irqrestore(&musb->lock, flags); -- -- if (is_otg_enabled(musb)) { -- DBG(3, "OTG startup...\n"); -- -- /* REVISIT: funcall to other code, which also -- * handles power budgeting ... this way also -- * ensures HdrcStart is indirectly called. -- */ -- retval = usb_add_hcd(musb_to_hcd(musb), -1, 0); -- if (retval < 0) { -- DBG(1, "add_hcd failed, %d\n", retval); -- spin_lock_irqsave(&musb->lock, flags); -- otg_set_peripheral(musb->xceiv, NULL); -- musb->gadget_driver = NULL; -- musb->g.dev.driver = NULL; -- spin_unlock_irqrestore(&musb->lock, flags); -- } -- } - } - - return retval; -@@ -1878,14 +1860,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) - retval = -EINVAL; - spin_unlock_irqrestore(&musb->lock, flags); - -- if (is_otg_enabled(musb) && retval == 0) { -- usb_remove_hcd(musb_to_hcd(musb)); -- /* FIXME we need to be able to register another -- * gadget driver here and have everything work; -- * that currently misbehaves. -- */ -- } -- - return retval; - } - EXPORT_SYMBOL(usb_gadget_unregister_driver); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch b/recipes/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch new file mode 100644 index 0000000000..51c9a049c5 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch @@ -0,0 +1,41 @@ +From b8ceea553dcf1d4657e3cb792ead9bdf03ab64e8 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Sat, 28 Mar 2009 13:05:02 +0000 +Subject: [PATCH 41/43] ARM: Expose some PMON registers through sysfs + +--- + arch/arm/kernel/sysfs_v7.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/kernel/sysfs_v7.c b/arch/arm/kernel/sysfs_v7.c +index c05bf5f..5ed32fb 100644 +--- a/arch/arm/kernel/sysfs_v7.c ++++ b/arch/arm/kernel/sysfs_v7.c +@@ -123,6 +123,12 @@ static ssize_t l2_aux_ctl_store(struct sys_device *dev, + static SYSDEV_ATTR(l2_aux_control, S_IRUGO|L2AUX_WR, + l2_aux_ctl_show, l2_aux_ctl_store); + ++RDWR_REG(pmon_pmnc, 0, c9, c12, 0, 0x3f) ++RDWR_REG(pmon_cntens, 0, c9, c12, 1, 0x8000000f) ++RDWR_REG(pmon_cntenc, 0, c9, c12, 2, 0x8000000f) ++RDWR_REG(pmon_ccnt, 0, c9, c13, 0, 0xffffffff) ++RDWR_REG(pmon_useren, 0, c9, c14, 0, 1) ++ + #define REG_ATTR(sysdev, name) \ + do { \ + int err = sysfs_create_file(&sysdev->kobj, &name.attr); \ +@@ -139,6 +145,11 @@ static int __init cpu_sysfs_init(void) + REG_ATTR(sysdev, attr_control); + REG_ATTR(sysdev, attr_aux_control); + REG_ATTR(sysdev, attr_l2_aux_control); ++ REG_ATTR(sysdev, attr_pmon_pmnc); ++ REG_ATTR(sysdev, attr_pmon_cntens); ++ REG_ATTR(sysdev, attr_pmon_cntenc); ++ REG_ATTR(sysdev, attr_pmon_ccnt); ++ REG_ATTR(sysdev, attr_pmon_useren); + } + + return 0; +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0041-MTD-silence-ecc-errors-on-mtdblock0.patch b/recipes/linux/linux-omap-psp-2.6.32/0041-MTD-silence-ecc-errors-on-mtdblock0.patch deleted file mode 100644 index 7d7c3e4159..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0041-MTD-silence-ecc-errors-on-mtdblock0.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 538a454d07c8524ebb5db6d47be9eac0e0292575 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman -Date: Mon, 26 Apr 2010 11:17:26 -0700 -Subject: [PATCH 41/45] MTD: silence ecc errors on mtdblock0 - -mtdblock0 is the x-load partition, which uses hw ecc -this confuses linux, which uses sw ecc -this patch silences ecc error messages when linux peeks into mtdblock0 -* not for upstream submission * ---- - block/blk-core.c | 3 ++- - drivers/mtd/nand/nand_ecc.c | 2 +- - fs/buffer.c | 3 ++- - 3 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/block/blk-core.c b/block/blk-core.c -index 718897e..c526fde 100644 ---- a/block/blk-core.c -+++ b/block/blk-core.c -@@ -1970,7 +1970,8 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes) - req->errors = 0; - - if (error && (blk_fs_request(req) && !(req->cmd_flags & REQ_QUIET))) { -- printk(KERN_ERR "end_request: I/O error, dev %s, sector %llu\n", -+ if (req->rq_disk && (strcmp(req->rq_disk->disk_name, "mtdblock0") != 0)) -+ printk(KERN_ERR "end_request: I/O error, dev %s, sector %llu\n", - req->rq_disk ? req->rq_disk->disk_name : "?", - (unsigned long long)blk_rq_pos(req)); - } -diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c -index 92320a6..2b86b6d 100644 ---- a/drivers/mtd/nand/nand_ecc.c -+++ b/drivers/mtd/nand/nand_ecc.c -@@ -492,7 +492,7 @@ int __nand_correct_data(unsigned char *buf, - if ((bitsperbyte[b0] + bitsperbyte[b1] + bitsperbyte[b2]) == 1) - return 1; /* error in ecc data; no action needed */ - -- printk(KERN_ERR "uncorrectable error : "); -+// printk(KERN_ERR "uncorrectable error : "); - return -1; - } - EXPORT_SYMBOL(__nand_correct_data); -diff --git a/fs/buffer.c b/fs/buffer.c -index 6fa5302..27b3103 100644 ---- a/fs/buffer.c -+++ b/fs/buffer.c -@@ -114,7 +114,8 @@ static int quiet_error(struct buffer_head *bh) - static void buffer_io_error(struct buffer_head *bh) - { - char b[BDEVNAME_SIZE]; -- printk(KERN_ERR "Buffer I/O error on device %s, logical block %Lu\n", -+ if (strcmp(bdevname(bh->b_bdev, b), "mtdblock0") != 0) -+ printk(KERN_ERR "Buffer I/O error on device %s, logical block %Lu\n", - bdevname(bh->b_bdev, b), - (unsigned long long)bh->b_blocknr); - } --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0042-ARM-OMAP-update-beagleboard-defconfig.patch b/recipes/linux/linux-omap-psp-2.6.32/0042-ARM-OMAP-update-beagleboard-defconfig.patch deleted file mode 100644 index 297e4c618c..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0042-ARM-OMAP-update-beagleboard-defconfig.patch +++ /dev/null @@ -1,3323 +0,0 @@ -From 6373a5aa34efdf0a938a585ded13ad111a1c2466 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Tue, 27 Apr 2010 10:51:15 +0200 -Subject: [PATCH 42/45] ARM: OMAP: update beagleboard defconfig - ---- - arch/arm/configs/omap3_beagle_defconfig | 2514 +++++++++++++++++++++++++------ - 1 files changed, 2088 insertions(+), 426 deletions(-) - -diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig -index 9cfae37..adb4f8c 100644 ---- a/arch/arm/configs/omap3_beagle_defconfig -+++ b/arch/arm/configs/omap3_beagle_defconfig -@@ -1,15 +1,13 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.27-rc8 --# Wed Oct 1 17:14:22 2008 -+# Linux kernel version: 2.6.32 -+# Mon Apr 26 16:59:04 2010 - # - 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_HAVE_LATENCYTOP_SUPPORT=y -@@ -18,134 +16,183 @@ 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_ARCH_HAS_CPUFREQ=y - CONFIG_GENERIC_HWEIGHT=y - CONFIG_GENERIC_CALIBRATE_DELAY=y --CONFIG_ARCH_SUPPORTS_AOUT=y --CONFIG_ZONE_DMA=y - CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y -+CONFIG_OPROFILE_ARMV7=y - CONFIG_VECTORS_BASE=0xffff0000 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" -+CONFIG_CONSTRUCTORS=y - - # - # 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_LOCALVERSION_AUTO is not set - 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_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y - # CONFIG_AUDIT is not set --# CONFIG_IKCONFIG is not set --CONFIG_LOG_BUF_SHIFT=14 --# CONFIG_CGROUPS is not set -+ -+# -+# RCU Subsystem -+# -+CONFIG_TREE_RCU=y -+# CONFIG_TREE_PREEMPT_RCU is not set -+# CONFIG_TINY_RCU is not set -+# CONFIG_RCU_TRACE is not set -+CONFIG_RCU_FANOUT=32 -+# CONFIG_RCU_FANOUT_EXACT is not set -+# CONFIG_TREE_RCU_TRACE is not set -+CONFIG_IKCONFIG=y -+CONFIG_IKCONFIG_PROC=y -+CONFIG_LOG_BUF_SHIFT=16 - 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 is not set --# CONFIG_SYSFS_DEPRECATED_V2=y is not set -+# CONFIG_CGROUPS is not set -+# CONFIG_SYSFS_DEPRECATED_V2 is not set - # CONFIG_RELAY is not set - # CONFIG_NAMESPACES is not set - CONFIG_BLK_DEV_INITRD=y - CONFIG_INITRAMFS_SOURCE="" -+CONFIG_RD_GZIP=y -+# CONFIG_RD_BZIP2 is not set -+# CONFIG_RD_LZMA is not set - CONFIG_CC_OPTIMIZE_FOR_SIZE=y - CONFIG_SYSCTL=y -+CONFIG_ANON_INODES=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_KALLSYMS_EXTRA_PASS is not set - CONFIG_HOTPLUG=y - CONFIG_PRINTK=y - CONFIG_BUG=y --CONFIG_ELF_CORE=y --CONFIG_COMPAT_BRK=y -+# CONFIG_ELF_CORE 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_AIO=y -+ -+# -+# Kernel Performance Events And Counters -+# - CONFIG_VM_EVENT_COUNTERS=y -+# CONFIG_COMPAT_BRK is not set - CONFIG_SLAB=y - # CONFIG_SLUB is not set - # CONFIG_SLOB is not set --# CONFIG_PROFILING is not set --# CONFIG_MARKERS is not set -+CONFIG_PROFILING=y -+CONFIG_TRACEPOINTS=y -+CONFIG_OPROFILE=y - CONFIG_HAVE_OPROFILE=y - # CONFIG_KPROBES is not set --# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set --# CONFIG_HAVE_IOREMAP_PROT is not set - CONFIG_HAVE_KPROBES=y - CONFIG_HAVE_KRETPROBES=y --# CONFIG_HAVE_ARCH_TRACEHOOK is not set --# CONFIG_HAVE_DMA_ATTRS is not set --# CONFIG_USE_GENERIC_SMP_HELPERS is not set - CONFIG_HAVE_CLK=y --CONFIG_PROC_PAGE_MONITOR=y -+ -+# -+# GCOV-based kernel profiling -+# -+# CONFIG_GCOV_KERNEL is not set -+CONFIG_SLOW_WORK=y -+# CONFIG_SLOW_WORK_DEBUG is not set - CONFIG_HAVE_GENERIC_DMA_COHERENT=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 is not set -+CONFIG_MODULE_FORCE_LOAD=y - CONFIG_MODULE_UNLOAD=y --# CONFIG_MODULE_FORCE_UNLOAD is not set -+CONFIG_MODULE_FORCE_UNLOAD=y - 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 -+CONFIG_LBDAF=y -+CONFIG_BLK_DEV_BSG=y - # CONFIG_BLK_DEV_INTEGRITY 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_CFQ=y - # CONFIG_DEFAULT_NOOP is not set --CONFIG_DEFAULT_IOSCHED="anticipatory" --CONFIG_CLASSIC_RCU=y -+CONFIG_DEFAULT_IOSCHED="cfq" -+# CONFIG_INLINE_SPIN_TRYLOCK is not set -+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set -+# CONFIG_INLINE_SPIN_LOCK is not set -+# CONFIG_INLINE_SPIN_LOCK_BH is not set -+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set -+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set -+# CONFIG_INLINE_SPIN_UNLOCK is not set -+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set -+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set -+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set -+# CONFIG_INLINE_READ_TRYLOCK is not set -+# CONFIG_INLINE_READ_LOCK is not set -+# CONFIG_INLINE_READ_LOCK_BH is not set -+# CONFIG_INLINE_READ_LOCK_IRQ is not set -+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -+# CONFIG_INLINE_READ_UNLOCK is not set -+# CONFIG_INLINE_READ_UNLOCK_BH is not set -+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set -+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set -+# CONFIG_INLINE_WRITE_TRYLOCK is not set -+# CONFIG_INLINE_WRITE_LOCK is not set -+# CONFIG_INLINE_WRITE_LOCK_BH is not set -+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set -+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -+# CONFIG_INLINE_WRITE_UNLOCK is not set -+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set -+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set -+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set -+# CONFIG_MUTEX_SPIN_ON_OWNER is not set - CONFIG_FREEZER=y - - # - # System Type - # -+CONFIG_MMU=y - # 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_GEMINI is not set - # CONFIG_ARCH_EBSA110 is not set - # CONFIG_ARCH_EP93XX is not set - # CONFIG_ARCH_FOOTBRIDGE is not set -+# CONFIG_ARCH_MXC is not set -+# CONFIG_ARCH_STMP3XXX is not set - # CONFIG_ARCH_NETX is not set - # CONFIG_ARCH_H720X is not set --# CONFIG_ARCH_IMX is not set -+# CONFIG_ARCH_NOMADIK is not set - # CONFIG_ARCH_IOP13XX is not set - # CONFIG_ARCH_IOP32X is not set - # CONFIG_ARCH_IOP33X is not set -@@ -153,23 +200,30 @@ CONFIG_FREEZER=y - # CONFIG_ARCH_IXP2000 is not set - # CONFIG_ARCH_IXP4XX is not set - # CONFIG_ARCH_L7200 is not set -+# CONFIG_ARCH_DOVE is not set - # CONFIG_ARCH_KIRKWOOD is not set --# CONFIG_ARCH_KS8695 is not set --# CONFIG_ARCH_NS9XXX is not set - # CONFIG_ARCH_LOKI is not set - # CONFIG_ARCH_MV78XX0 is not set --# CONFIG_ARCH_MXC is not set - # CONFIG_ARCH_ORION5X is not set -+# CONFIG_ARCH_MMP is not set -+# CONFIG_ARCH_KS8695 is not set -+# CONFIG_ARCH_NS9XXX is not set -+# CONFIG_ARCH_W90X900 is not set - # CONFIG_ARCH_PNX4008 is not set - # CONFIG_ARCH_PXA is not set -+# CONFIG_ARCH_MSM is not set - # CONFIG_ARCH_RPC is not set - # CONFIG_ARCH_SA1100 is not set - # CONFIG_ARCH_S3C2410 is not set -+# CONFIG_ARCH_S3C64XX is not set -+# CONFIG_ARCH_S5PC1XX is not set - # CONFIG_ARCH_SHARK is not set - # CONFIG_ARCH_LH7A40X is not set -+# CONFIG_ARCH_U300 is not set - # CONFIG_ARCH_DAVINCI is not set - CONFIG_ARCH_OMAP=y --# CONFIG_ARCH_MSM7X00A is not set -+# CONFIG_ARCH_BCMRING is not set -+# CONFIG_ARCH_U8500 is not set - - # - # TI OMAP Implementations -@@ -178,37 +232,55 @@ CONFIG_ARCH_OMAP_OTG=y - # CONFIG_ARCH_OMAP1 is not set - # CONFIG_ARCH_OMAP2 is not set - CONFIG_ARCH_OMAP3=y -+# CONFIG_ARCH_OMAP4 is not set - - # - # OMAP Feature Selections - # --# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set --# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set --# CONFIG_OMAP_RESET_CLOCKS is not set -+CONFIG_OMAP_SMARTREFLEX=y -+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set -+CONFIG_OMAP_RESET_CLOCKS=y - # CONFIG_OMAP_MUX is not set --# CONFIG_OMAP_MCBSP is not set -+CONFIG_OMAP_MCBSP=y -+CONFIG_OMAP_MBOX_FWK=m -+CONFIG_OMAP_IOMMU=y - # CONFIG_OMAP_MPU_TIMER is not set - CONFIG_OMAP_32K_TIMER=y -+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set -+# CONFIG_OMAP3_DEBOBS is not set - 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_LL_DEBUG_NONE is not set -+# 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 -+CONFIG_OMAP_PACKAGE_CBB=y - - # - # OMAP Board Type - # - CONFIG_MACH_OMAP3_BEAGLE=y -- --# --# Boot options --# -- --# --# Power management --# -+# CONFIG_MACH_OMAP_LDP is not set -+# CONFIG_MACH_OVERO is not set -+CONFIG_MACH_OMAP3EVM=y -+CONFIG_PMIC_TWL4030=y -+# CONFIG_MACH_OMAP3517EVM is not set -+# CONFIG_MACH_OMAP3_PANDORA is not set -+# CONFIG_MACH_OMAP3_TOUCHBOOK is not set -+# CONFIG_MACH_OMAP_3430SDP is not set -+# CONFIG_MACH_NOKIA_RX51 is not set -+# CONFIG_MACH_OMAP_ZOOM2 is not set -+# CONFIG_MACH_OMAP_ZOOM3 is not set -+# CONFIG_MACH_CM_T35 is not set -+# CONFIG_MACH_IGEP0020 is not set -+# CONFIG_MACH_OMAP_3630SDP is not set -+# CONFIG_OMAP3_EMU is not set -+# CONFIG_OMAP3_SDRC_AC_TIMING is not set - - # - # Processor Type -@@ -218,7 +290,7 @@ CONFIG_CPU_32v6K=y - CONFIG_CPU_V7=y - CONFIG_CPU_32v7=y - CONFIG_CPU_ABRT_EV7=y --CONFIG_CPU_PABRT_IFAR=y -+CONFIG_CPU_PABRT_V7=y - CONFIG_CPU_CACHE_V7=y - CONFIG_CPU_CACHE_VIPT=y - CONFIG_CPU_COPY_V6=y -@@ -231,12 +303,17 @@ CONFIG_CPU_CP15_MMU=y - # Processor Features - # - CONFIG_ARM_THUMB=y --# CONFIG_ARM_THUMBEE is not set -+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 -+CONFIG_ARM_L1_CACHE_SHIFT=6 -+CONFIG_USER_L2_PLE=y -+CONFIG_USER_PMON=y -+# CONFIG_ARM_ERRATA_430973 is not set -+# CONFIG_ARM_ERRATA_458693 is not set -+# CONFIG_ARM_ERRATA_460075 is not set - CONFIG_COMMON_CLKDEV=y - - # -@@ -257,42 +334,63 @@ CONFIG_VMSPLIT_3G=y - # CONFIG_VMSPLIT_2G is not set - # CONFIG_VMSPLIT_1G is not set - CONFIG_PAGE_OFFSET=0xC0000000 --# CONFIG_PREEMPT is not set -+# CONFIG_PREEMPT_NONE is not set -+# CONFIG_PREEMPT_VOLUNTARY is not set -+CONFIG_PREEMPT=y - CONFIG_HZ=128 -+# CONFIG_THUMB2_KERNEL is not set - CONFIG_AEABI=y --CONFIG_OABI_COMPAT=y --CONFIG_ARCH_FLATMEM_HAS_HOLES=y --# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set -+# CONFIG_OABI_COMPAT is not set -+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y -+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set -+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set -+# CONFIG_HIGHMEM 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_PHYS_ADDR_T_64BIT is not set -+CONFIG_ZONE_DMA_FLAG=0 - CONFIG_VIRT_TO_BUS=y --# CONFIG_LEDS is not set -+# CONFIG_KSM is not set -+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -+CONFIG_LEDS=y - CONFIG_ALIGNMENT_TRAP=y -+# CONFIG_UACCESS_WITH_MEMCPY is not set -+CONFIG_CPU_V7_SYSFS=y - - # - # Boot options - # - CONFIG_ZBOOT_ROM_TEXT=0x0 - CONFIG_ZBOOT_ROM_BSS=0x0 --CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:tgt:eth0:off rw console=ttyS2,115200n8" -+CONFIG_CMDLINE=" debug " - # CONFIG_XIP_KERNEL is not set --# CONFIG_KEXEC is not set -+CONFIG_KEXEC=y -+CONFIG_ATAGS_PROC=y - - # - # CPU Power Management - # --# CONFIG_CPU_FREQ is not set -+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=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=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y - # CONFIG_CPU_IDLE is not set - - # -@@ -302,29 +400,30 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.16 - # - # 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=y - CONFIG_VFPv3=y --# CONFIG_NEON is not set -+CONFIG_NEON=y - - # - # Userspace binary formats - # - CONFIG_BINFMT_ELF=y --# CONFIG_BINFMT_AOUT is not set -+CONFIG_HAVE_AOUT=y -+CONFIG_BINFMT_AOUT=m - CONFIG_BINFMT_MISC=y - - # - # Power management options - # - CONFIG_PM=y --# CONFIG_PM_DEBUG is not set -+CONFIG_PM_DEBUG=y -+# CONFIG_PM_VERBOSE is not set -+CONFIG_CAN_PM_TRACE=y - CONFIG_PM_SLEEP=y - CONFIG_SUSPEND=y - CONFIG_SUSPEND_FREEZER=y - # CONFIG_APM_EMULATION is not set -+CONFIG_PM_RUNTIME=y - CONFIG_ARCH_SUSPEND_POSSIBLE=y - CONFIG_NET=y - -@@ -332,13 +431,14 @@ CONFIG_NET=y - # Networking options - # - CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set -+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_XFRM_IPCOMP=m - CONFIG_NET_KEY=y - # CONFIG_NET_KEY_MIGRATE is not set - CONFIG_INET=y -@@ -349,63 +449,462 @@ 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_NET_IPIP=m -+CONFIG_NET_IPGRE=m - # 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_AH=m -+CONFIG_INET_ESP=m -+CONFIG_INET_IPCOMP=m -+CONFIG_INET_XFRM_TUNNEL=m -+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_INET_LRO=y -+CONFIG_INET_DIAG=m -+CONFIG_INET_TCP_DIAG=m -+CONFIG_TCP_CONG_ADVANCED=y -+CONFIG_TCP_CONG_BIC=m - CONFIG_TCP_CONG_CUBIC=y -+CONFIG_TCP_CONG_WESTWOOD=m -+CONFIG_TCP_CONG_HTCP=m -+CONFIG_TCP_CONG_HSTCP=m -+CONFIG_TCP_CONG_HYBLA=m -+CONFIG_TCP_CONG_VEGAS=m -+CONFIG_TCP_CONG_SCALABLE=m -+CONFIG_TCP_CONG_LP=m -+CONFIG_TCP_CONG_VENO=m -+CONFIG_TCP_CONG_YEAH=m -+CONFIG_TCP_CONG_ILLINOIS=m -+# CONFIG_DEFAULT_BIC is not set -+CONFIG_DEFAULT_CUBIC=y -+# CONFIG_DEFAULT_HTCP is not set -+# CONFIG_DEFAULT_VEGAS is not set -+# CONFIG_DEFAULT_WESTWOOD is not set -+# CONFIG_DEFAULT_RENO is not set - CONFIG_DEFAULT_TCP_CONG="cubic" - # CONFIG_TCP_MD5SIG is not set --# CONFIG_IPV6 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=m -+CONFIG_INET6_ESP=m -+CONFIG_INET6_IPCOMP=m -+CONFIG_IPV6_MIP6=m -+CONFIG_INET6_XFRM_TUNNEL=m -+CONFIG_INET6_TUNNEL=m -+CONFIG_INET6_XFRM_MODE_TRANSPORT=m -+CONFIG_INET6_XFRM_MODE_TUNNEL=m -+CONFIG_INET6_XFRM_MODE_BEET=m -+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m -+CONFIG_IPV6_SIT=m -+# CONFIG_IPV6_SIT_6RD is not set -+CONFIG_IPV6_NDISC_NODETYPE=y -+CONFIG_IPV6_TUNNEL=m -+CONFIG_IPV6_MULTIPLE_TABLES=y -+CONFIG_IPV6_SUBTREES=y -+CONFIG_IPV6_MROUTE=y -+# CONFIG_IPV6_PIMSM_V2 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_NETFILTER=y -+# CONFIG_NETFILTER_DEBUG is not set -+CONFIG_NETFILTER_ADVANCED=y -+CONFIG_BRIDGE_NETFILTER=y -+ -+# -+# Core Netfilter Configuration -+# -+CONFIG_NETFILTER_NETLINK=m -+CONFIG_NETFILTER_NETLINK_QUEUE=m -+CONFIG_NETFILTER_NETLINK_LOG=m -+CONFIG_NF_CONNTRACK=m -+CONFIG_NF_CT_ACCT=y -+CONFIG_NF_CONNTRACK_MARK=y -+CONFIG_NF_CONNTRACK_EVENTS=y -+CONFIG_NF_CT_PROTO_DCCP=m -+CONFIG_NF_CT_PROTO_GRE=m -+CONFIG_NF_CT_PROTO_SCTP=m -+CONFIG_NF_CT_PROTO_UDPLITE=m -+CONFIG_NF_CONNTRACK_AMANDA=m -+CONFIG_NF_CONNTRACK_FTP=m -+CONFIG_NF_CONNTRACK_H323=m -+CONFIG_NF_CONNTRACK_IRC=m -+CONFIG_NF_CONNTRACK_NETBIOS_NS=m -+CONFIG_NF_CONNTRACK_PPTP=m -+CONFIG_NF_CONNTRACK_SANE=m -+CONFIG_NF_CONNTRACK_SIP=m -+CONFIG_NF_CONNTRACK_TFTP=m -+CONFIG_NF_CT_NETLINK=m -+# CONFIG_NETFILTER_TPROXY is not set -+CONFIG_NETFILTER_XTABLES=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set -+CONFIG_NETFILTER_XT_TARGET_HL=m -+# CONFIG_NETFILTER_XT_TARGET_LED is not set -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFLOG=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set -+CONFIG_NETFILTER_XT_TARGET_RATEEST=m -+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set -+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set -+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_DSCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_HL=m -+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_OWNER=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_QUOTA=m -+CONFIG_NETFILTER_XT_MATCH_RATEEST=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_RECENT=m -+# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set -+CONFIG_NETFILTER_XT_MATCH_SCTP=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+CONFIG_NETFILTER_XT_MATCH_TIME=m -+CONFIG_NETFILTER_XT_MATCH_U32=m -+# CONFIG_NETFILTER_XT_MATCH_OSF is not set -+CONFIG_IP_VS=m -+CONFIG_IP_VS_IPV6=y -+CONFIG_IP_VS_DEBUG=y -+CONFIG_IP_VS_TAB_BITS=12 -+ -+# -+# IPVS transport protocol load balancing support -+# -+CONFIG_IP_VS_PROTO_TCP=y -+CONFIG_IP_VS_PROTO_UDP=y -+CONFIG_IP_VS_PROTO_AH_ESP=y -+CONFIG_IP_VS_PROTO_ESP=y -+CONFIG_IP_VS_PROTO_AH=y -+ -+# -+# IPVS scheduler -+# -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+CONFIG_IP_VS_SED=m -+CONFIG_IP_VS_NQ=m -+ -+# -+# IPVS application helper -+# -+CONFIG_IP_VS_FTP=m -+ -+# -+# IP: Netfilter Configuration -+# -+CONFIG_NF_DEFRAG_IPV4=m -+CONFIG_NF_CONNTRACK_IPV4=m -+CONFIG_NF_CONNTRACK_PROC_COMPAT=y -+CONFIG_IP_NF_QUEUE=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_ADDRTYPE=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_TARGET_LOG=m -+CONFIG_IP_NF_TARGET_ULOG=m -+CONFIG_NF_NAT=m -+CONFIG_NF_NAT_NEEDED=y -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_NF_NAT_SNMP_BASIC=m -+CONFIG_NF_NAT_PROTO_DCCP=m -+CONFIG_NF_NAT_PROTO_GRE=m -+CONFIG_NF_NAT_PROTO_UDPLITE=m -+CONFIG_NF_NAT_PROTO_SCTP=m -+CONFIG_NF_NAT_FTP=m -+CONFIG_NF_NAT_IRC=m -+CONFIG_NF_NAT_TFTP=m -+CONFIG_NF_NAT_AMANDA=m -+CONFIG_NF_NAT_PPTP=m -+CONFIG_NF_NAT_H323=m -+CONFIG_NF_NAT_SIP=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+ -+# -+# IPv6: Netfilter Configuration -+# -+CONFIG_NF_CONNTRACK_IPV6=m -+CONFIG_IP6_NF_QUEUE=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_MH=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_TARGET_LOG=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_RAW=m -+# CONFIG_BRIDGE_NF_EBTABLES is not set -+CONFIG_IP_DCCP=m -+CONFIG_INET_DCCP_DIAG=m -+ -+# -+# DCCP CCIDs Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP_CCID2_DEBUG is not set -+CONFIG_IP_DCCP_CCID3=y -+# CONFIG_IP_DCCP_CCID3_DEBUG is not set -+CONFIG_IP_DCCP_CCID3_RTO=100 -+CONFIG_IP_DCCP_TFRC_LIB=y -+ -+# -+# DCCP Kernel Hacking -+# -+# CONFIG_IP_DCCP_DEBUG is not set -+CONFIG_IP_SCTP=m -+# CONFIG_SCTP_DBG_MSG is not set -+# CONFIG_SCTP_DBG_OBJCNT is not set -+# CONFIG_SCTP_HMAC_NONE is not set -+# CONFIG_SCTP_HMAC_SHA1 is not set -+CONFIG_SCTP_HMAC_MD5=y -+# CONFIG_RDS is not set -+CONFIG_TIPC=m -+# CONFIG_TIPC_ADVANCED is not set -+# CONFIG_TIPC_DEBUG is not set -+CONFIG_ATM=m -+CONFIG_ATM_CLIP=m -+# CONFIG_ATM_CLIP_NO_ICMP is not set -+CONFIG_ATM_LANE=m -+CONFIG_ATM_MPOA=m -+CONFIG_ATM_BR2684=m -+# CONFIG_ATM_BR2684_IPFILTER is not set -+CONFIG_STP=m -+CONFIG_GARP=m -+CONFIG_BRIDGE=m -+# CONFIG_NET_DSA is not set -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y - # 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_WAN_ROUTER=m -+# CONFIG_PHONET is not set -+# CONFIG_IEEE802154 is not set -+CONFIG_NET_SCHED=y -+ -+# -+# Queueing/Scheduling -+# -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_ATM=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_MULTIQ=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_DRR=m -+ -+# -+# Classification -+# -+CONFIG_NET_CLS=y -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_ROUTE=y -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_PERF=y -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_CLS_FLOW=m -+# CONFIG_NET_EMATCH is not set -+# CONFIG_NET_CLS_ACT is not set -+CONFIG_NET_CLS_IND=y -+CONFIG_NET_SCH_FIFO=y -+# CONFIG_DCB is not set - - # - # Network testing - # - # CONFIG_NET_PKTGEN is not set -+# CONFIG_NET_DROP_MONITOR is not set - # CONFIG_HAMRADIO is not set --# CONFIG_CAN 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 -+CONFIG_CAN=m -+CONFIG_CAN_RAW=m -+CONFIG_CAN_BCM=m -+ -+# -+# CAN Device Drivers -+# -+CONFIG_CAN_VCAN=m -+# CONFIG_CAN_DEV is not set -+# CONFIG_CAN_DEBUG_DEVICES is not set -+CONFIG_IRDA=m -+ -+# -+# IrDA protocols -+# -+CONFIG_IRLAN=m -+CONFIG_IRNET=m -+CONFIG_IRCOMM=m -+CONFIG_IRDA_ULTRA=y -+ -+# -+# IrDA options -+# -+CONFIG_IRDA_CACHE_LAST_LSAP=y -+CONFIG_IRDA_FAST_RR=y -+CONFIG_IRDA_DEBUG=y -+ -+# -+# Infrared-port device drivers -+# -+ -+# -+# SIR device drivers -+# -+CONFIG_IRTTY_SIR=m -+ -+# -+# Dongle support -+# -+CONFIG_DONGLE=y -+CONFIG_ESI_DONGLE=m -+CONFIG_ACTISYS_DONGLE=m -+CONFIG_TEKRAM_DONGLE=m -+CONFIG_TOIM3232_DONGLE=m -+CONFIG_LITELINK_DONGLE=m -+CONFIG_MA600_DONGLE=m -+CONFIG_GIRBIL_DONGLE=m -+CONFIG_MCP2120_DONGLE=m -+CONFIG_OLD_BELKIN_DONGLE=m -+# CONFIG_ACT200L_DONGLE is not set -+CONFIG_KINGSUN_DONGLE=m -+CONFIG_KSDAZZLE_DONGLE=m -+CONFIG_KS959_DONGLE=m -+ -+# -+# FIR device drivers -+# -+CONFIG_USB_IRDA=m -+CONFIG_SIGMATEL_FIR=m -+CONFIG_MCS_FIR=m -+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_HCIBTUSB=m -+CONFIG_BT_HCIBTSDIO=m -+CONFIG_BT_HCIUART=m -+CONFIG_BT_HCIUART_H4=y -+CONFIG_BT_HCIUART_BCSP=y -+CONFIG_BT_HCIUART_LL=y -+CONFIG_BT_HCIBCM203X=m -+CONFIG_BT_HCIBPA10X=m -+CONFIG_BT_HCIBFUSB=m -+# CONFIG_BT_HCIVHCI is not set -+# CONFIG_BT_MRVL is not set -+CONFIG_AF_RXRPC=m -+# CONFIG_AF_RXRPC_DEBUG is not set -+# CONFIG_RXKAD is not set -+CONFIG_FIB_RULES=y -+CONFIG_WIRELESS=y -+CONFIG_WIRELESS_EXT=y -+CONFIG_WEXT_CORE=y -+CONFIG_WEXT_PROC=y -+CONFIG_WEXT_SPY=y -+CONFIG_WEXT_PRIV=y -+CONFIG_CFG80211=m -+# CONFIG_NL80211_TESTMODE is not set -+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set -+# CONFIG_CFG80211_REG_DEBUG is not set -+CONFIG_CFG80211_DEFAULT_PS=y -+# CONFIG_CFG80211_DEBUGFS is not set -+CONFIG_WIRELESS_OLD_REGULATORY=y -+CONFIG_CFG80211_WEXT=y -+CONFIG_WIRELESS_EXT_SYSFS=y -+CONFIG_LIB80211=y -+CONFIG_LIB80211_CRYPT_WEP=m -+CONFIG_LIB80211_CRYPT_CCMP=m -+CONFIG_LIB80211_CRYPT_TKIP=m -+# CONFIG_LIB80211_DEBUG is not set -+CONFIG_MAC80211=m -+CONFIG_MAC80211_RC_PID=y -+# CONFIG_MAC80211_RC_MINSTREL is not set -+CONFIG_MAC80211_RC_DEFAULT_PID=y -+# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set -+CONFIG_MAC80211_RC_DEFAULT="pid" -+# CONFIG_MAC80211_MESH is not set -+CONFIG_MAC80211_LEDS=y -+# CONFIG_MAC80211_DEBUGFS is not set -+# CONFIG_MAC80211_DEBUG_MENU is not set -+CONFIG_WIMAX=m -+CONFIG_WIMAX_DEBUG_LEVEL=8 -+CONFIG_RFKILL=m -+CONFIG_RFKILL_LEDS=y -+CONFIG_RFKILL_INPUT=y -+CONFIG_NET_9P=m -+# CONFIG_NET_9P_DEBUG is not set - - # - # Device Drivers -@@ -414,17 +913,22 @@ CONFIG_DEFAULT_TCP_CONG="cubic" - # - # Generic Driver Options - # --CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -+CONFIG_UEVENT_HELPER_PATH="" -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y - CONFIG_STANDALONE=y - CONFIG_PREVENT_FIRMWARE_BUILD=y --# CONFIG_FW_LOADER is not set -+CONFIG_FW_LOADER=y -+CONFIG_FIRMWARE_IN_KERNEL=y -+CONFIG_EXTRA_FIRMWARE="" - # 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 is not set -+# CONFIG_MTD_TESTS 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 -@@ -472,6 +976,9 @@ CONFIG_MTD_CFI_I2=y - # - # Self-contained MTD device drivers - # -+# CONFIG_MTD_DATAFLASH is not set -+# CONFIG_MTD_M25P80 is not set -+# CONFIG_MTD_SST25L is not set - # CONFIG_MTD_SLRAM is not set - # CONFIG_MTD_PHRAM is not set - # CONFIG_MTD_MTDRAM is not set -@@ -487,38 +994,82 @@ 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_GPIO is not set -+CONFIG_MTD_NAND_OMAP2=y -+CONFIG_MTD_NAND_OMAP_PREFETCH=y -+# CONFIG_MTD_NAND_OMAP_PREFETCH_DMA is not set - CONFIG_MTD_NAND_IDS=y - # CONFIG_MTD_NAND_DISKONCHIP is not set - # CONFIG_MTD_NAND_NANDSIM is not set --# CONFIG_MTD_NAND_PLATFORM is not set -+CONFIG_MTD_NAND_PLATFORM=y - # CONFIG_MTD_ALAUDA is not set - # CONFIG_MTD_ONENAND is not set - - # -+# LPDDR flash memory drivers -+# -+# CONFIG_MTD_LPDDR is not set -+ -+# - # UBI - Unsorted block images - # --# CONFIG_MTD_UBI is not set -+CONFIG_MTD_UBI=y -+CONFIG_MTD_UBI_WL_THRESHOLD=4096 -+CONFIG_MTD_UBI_BEB_RESERVE=1 -+# CONFIG_MTD_UBI_GLUEBI is not set -+ -+# -+# UBI debugging options -+# -+# CONFIG_MTD_UBI_DEBUG 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_CRYPTOLOOP=m -+ -+# -+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected -+# - # 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_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 is not set -+# CONFIG_MG_DISK is not set -+CONFIG_MISC_DEVICES=y -+# CONFIG_AD525X_DPOT is not set -+# CONFIG_ICS932S401 is not set -+# CONFIG_ENCLOSURE_SERVICES is not set -+CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7 -+# CONFIG_ISL29003 is not set -+# CONFIG_DS1682 is not set -+# CONFIG_TI_DAC7512 is not set -+# CONFIG_C2PORT is not set -+ -+# -+# EEPROM support -+# -+# CONFIG_EEPROM_AT24 is not set -+# CONFIG_EEPROM_AT25 is not set -+# CONFIG_EEPROM_LEGACY is not set -+# CONFIG_EEPROM_MAX6875 is not set -+CONFIG_EEPROM_93CX6=y -+CONFIG_IWMC3200TOP=m -+# CONFIG_IWMC3200TOP_DEBUG is not set -+# CONFIG_IWMC3200TOP_DEBUGFS is not set - CONFIG_HAVE_IDE=y - # CONFIG_IDE is not set - - # - # SCSI device support - # --# CONFIG_RAID_ATTRS is not set -+CONFIG_RAID_ATTRS=m - CONFIG_SCSI=y - CONFIG_SCSI_DMA=y - # CONFIG_SCSI_TGT is not set -@@ -531,14 +1082,11 @@ CONFIG_SCSI_PROC_FS=y - 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_BLK_DEV_SR=y -+CONFIG_BLK_DEV_SR_VENDOR=y -+CONFIG_CHR_DEV_SG=y -+CONFIG_CHR_DEV_SCH=m -+CONFIG_SCSI_MULTI_LUN=y - # CONFIG_SCSI_CONSTANTS is not set - # CONFIG_SCSI_LOGGING is not set - # CONFIG_SCSI_SCAN_ASYNC is not set -@@ -549,78 +1097,277 @@ CONFIG_SCSI_WAIT_SCAN=m - # - # CONFIG_SCSI_SPI_ATTRS is not set - # CONFIG_SCSI_FC_ATTRS is not set --# CONFIG_SCSI_ISCSI_ATTRS is not set -+CONFIG_SCSI_ISCSI_ATTRS=m -+# CONFIG_SCSI_SAS_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_ISCSI_TCP=m -+# CONFIG_LIBFC is not set -+# CONFIG_LIBFCOE is not set - # CONFIG_SCSI_DEBUG is not set - # CONFIG_SCSI_DH is not set -+# CONFIG_SCSI_OSD_INITIATOR is not set - # CONFIG_ATA is not set --# CONFIG_MD 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_RAID6_PQ=m -+# CONFIG_ASYNC_RAID6_TEST is not set -+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_LOG_USERSPACE is not set -+CONFIG_DM_ZERO=m -+CONFIG_DM_MULTIPATH=m -+# CONFIG_DM_MULTIPATH_QL is not set -+# CONFIG_DM_MULTIPATH_ST is not set -+CONFIG_DM_DELAY=m -+# CONFIG_DM_UEVENT is not set - CONFIG_NETDEVICES=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_NET_ETHERNET is not set -+CONFIG_DUMMY=m -+CONFIG_BONDING=m -+CONFIG_MACVLAN=m -+CONFIG_EQUALIZER=m -+CONFIG_TUN=m -+CONFIG_VETH=m -+CONFIG_PHYLIB=y -+ -+# -+# MII PHY device drivers -+# -+# CONFIG_MARVELL_PHY is not set -+# CONFIG_DAVICOM_PHY is not set -+# CONFIG_QSEMI_PHY is not set -+# CONFIG_LXT_PHY is not set -+# CONFIG_CICADA_PHY is not set -+# CONFIG_VITESSE_PHY is not set -+# CONFIG_SMSC_PHY is not set -+# CONFIG_BROADCOM_PHY is not set -+# CONFIG_ICPLUS_PHY is not set -+# CONFIG_REALTEK_PHY is not set -+# CONFIG_NATIONAL_PHY is not set -+# CONFIG_STE10XP is not set -+# CONFIG_LSI_ET1011C_PHY is not set -+# CONFIG_FIXED_PHY is not set -+# CONFIG_MDIO_BITBANG is not set -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_AX88796 is not set -+# CONFIG_SMC91X is not set -+# CONFIG_TI_DAVINCI_EMAC is not set -+# CONFIG_DM9000 is not set -+CONFIG_ENC28J60=y -+# CONFIG_ENC28J60_WRITEVERIFY is not set -+# CONFIG_ETHOC is not set -+CONFIG_SMC911X=y -+CONFIG_SMSC911X=y -+# CONFIG_DNET is not set -+# 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_IBM_NEW_EMAC_NO_FLOW_CTRL is not set -+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set -+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set -+# CONFIG_B44 is not set -+# CONFIG_KS8842 is not set -+CONFIG_KS8851=y -+# CONFIG_KS8851_MLL 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 is not set --# CONFIG_IWLWIFI_LEDS is not set -+CONFIG_WLAN=y -+# CONFIG_LIBERTAS_THINFIRM is not set -+CONFIG_AT76C50X_USB=m -+CONFIG_USB_ZD1201=m -+CONFIG_USB_NET_RNDIS_WLAN=m -+CONFIG_RTL8187=m -+CONFIG_RTL8187_LEDS=y -+# CONFIG_MAC80211_HWSIM is not set -+# CONFIG_ATH_COMMON is not set -+CONFIG_B43=m -+# CONFIG_B43_SDIO is not set -+CONFIG_B43_PHY_LP=y -+CONFIG_B43_LEDS=y -+CONFIG_B43_HWRNG=y -+# CONFIG_B43_DEBUG is not set -+# CONFIG_B43LEGACY is not set -+CONFIG_HOSTAP=m -+CONFIG_HOSTAP_FIRMWARE=y -+CONFIG_HOSTAP_FIRMWARE_NVRAM=y -+# CONFIG_IWM is not set -+CONFIG_LIBERTAS=m -+CONFIG_LIBERTAS_USB=m -+# CONFIG_LIBERTAS_SDIO is not set -+# CONFIG_LIBERTAS_SPI is not set -+# CONFIG_LIBERTAS_DEBUG is not set -+CONFIG_P54_COMMON=m -+CONFIG_P54_USB=m -+# CONFIG_P54_SPI is not set -+CONFIG_P54_LEDS=y -+CONFIG_RT2X00=m -+CONFIG_RT2500USB=m -+CONFIG_RT73USB=m -+# CONFIG_RT2800USB is not set -+CONFIG_RT2X00_LIB_USB=m -+CONFIG_RT2X00_LIB=m -+CONFIG_RT2X00_LIB_FIRMWARE=y -+CONFIG_RT2X00_LIB_CRYPTO=y -+CONFIG_RT2X00_LIB_LEDS=y -+# CONFIG_RT2X00_DEBUG is not set -+CONFIG_WL12XX=m -+CONFIG_WL1251=m -+CONFIG_WL1251_SPI=m -+CONFIG_WL1251_SDIO=m -+CONFIG_WL1271=m -+CONFIG_ZD1211RW=m -+# CONFIG_ZD1211RW_DEBUG is not set -+ -+# -+# WiMAX Wireless Broadband devices -+# -+CONFIG_WIMAX_I2400M=m -+CONFIG_WIMAX_I2400M_USB=m -+CONFIG_WIMAX_I2400M_SDIO=m -+CONFIG_WIMAX_IWMC3200_SDIO=y -+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 - - # - # 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 is not set -+CONFIG_USB_CATC=y -+CONFIG_USB_KAWETH=y -+CONFIG_USB_PEGASUS=y -+CONFIG_USB_RTL8150=y -+CONFIG_USB_USBNET=y -+CONFIG_USB_NET_AX8817X=y -+CONFIG_USB_NET_CDCETHER=y -+CONFIG_USB_NET_CDC_EEM=y -+CONFIG_USB_NET_DM9601=y -+CONFIG_USB_NET_SMSC95XX=y -+CONFIG_USB_NET_GL620A=y -+CONFIG_USB_NET_NET1080=y -+CONFIG_USB_NET_PLUSB=y -+CONFIG_USB_NET_MCS7830=y -+CONFIG_USB_NET_RNDIS_HOST=y -+CONFIG_USB_NET_CDC_SUBSET=y -+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=y -+CONFIG_USB_HSO=m -+CONFIG_USB_NET_INT51X1=m - # CONFIG_WAN is not set --# CONFIG_PPP is not set -+CONFIG_ATM_DRIVERS=y -+# CONFIG_ATM_DUMMY is not set -+# CONFIG_ATM_TCP 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_PPPOATM is not set -+CONFIG_PPPOL2TP=m - # CONFIG_SLIP is not set --# CONFIG_NETCONSOLE is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set -+CONFIG_SLHC=m -+CONFIG_NETCONSOLE=m -+CONFIG_NETCONSOLE_DYNAMIC=y -+CONFIG_NETPOLL=y -+CONFIG_NETPOLL_TRAP=y -+CONFIG_NET_POLL_CONTROLLER=y - # CONFIG_ISDN is not set -+# CONFIG_PHONE is not set - - # - # Input device support - # - CONFIG_INPUT=y --# CONFIG_INPUT_FF_MEMLESS is not set --# CONFIG_INPUT_POLLDEV is not set -+CONFIG_INPUT_FF_MEMLESS=y -+CONFIG_INPUT_POLLDEV=y -+# CONFIG_INPUT_SPARSEKMAP is not set - - # - # Userland interfaces - # --# CONFIG_INPUT_MOUSEDEV is not set -+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 is not set -+CONFIG_INPUT_EVDEV=y - # CONFIG_INPUT_EVBUG is not set - - # - # Input Device Drivers - # --# CONFIG_INPUT_KEYBOARD is not set --# CONFIG_INPUT_MOUSE is not set -+CONFIG_INPUT_KEYBOARD=y -+# CONFIG_KEYBOARD_ADP5588 is not set -+# CONFIG_KEYBOARD_ATKBD is not set -+# CONFIG_QT2160 is not set -+# CONFIG_KEYBOARD_LKKBD is not set -+CONFIG_KEYBOARD_GPIO=y -+# CONFIG_KEYBOARD_TCA6416 is not set -+# CONFIG_KEYBOARD_MATRIX is not set -+# CONFIG_KEYBOARD_LM8323 is not set -+# CONFIG_KEYBOARD_MAX7359 is not set -+# CONFIG_KEYBOARD_NEWTON is not set -+# CONFIG_KEYBOARD_OPENCORES is not set -+# CONFIG_KEYBOARD_STOWAWAY is not set -+# CONFIG_KEYBOARD_SUNKBD is not set -+# CONFIG_KEYBOARD_TWL4030 is not set -+# CONFIG_KEYBOARD_XTKBD 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_TRACKPOINT=y -+# CONFIG_MOUSE_PS2_ELANTECH is not set -+# CONFIG_MOUSE_PS2_SENTELIC is not set -+# CONFIG_MOUSE_PS2_TOUCHKIT is not set -+# CONFIG_MOUSE_SERIAL is not set -+# CONFIG_MOUSE_APPLETOUCH is not set -+# CONFIG_MOUSE_BCM5974 is not set -+# CONFIG_MOUSE_VSXXXAA is not set -+# CONFIG_MOUSE_GPIO is not set -+# CONFIG_MOUSE_SYNAPTICS_I2C 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 -+CONFIG_INPUT_MISC=y -+# CONFIG_INPUT_ATI_REMOTE is not set -+# CONFIG_INPUT_ATI_REMOTE2 is not set -+# CONFIG_INPUT_KEYSPAN_REMOTE is not set -+# CONFIG_INPUT_POWERMATE is not set -+# CONFIG_INPUT_YEALINK is not set -+# CONFIG_INPUT_CM109 is not set -+CONFIG_INPUT_TWL4030_PWRBUTTON=y -+CONFIG_INPUT_UINPUT=y -+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set - - # - # Hardware I/O ports - # --# CONFIG_SERIO is not set -+CONFIG_SERIO=y -+CONFIG_SERIO_SERPORT=y -+CONFIG_SERIO_LIBPS2=y -+# CONFIG_SERIO_RAW is not set -+# CONFIG_SERIO_ALTERA_PS2 is not set - # CONFIG_GAMEPORT is not set - - # -@@ -630,7 +1377,7 @@ CONFIG_VT=y - CONFIG_CONSOLE_TRANSLATIONS=y - CONFIG_VT_CONSOLE=y - CONFIG_HW_CONSOLE=y --# CONFIG_VT_HW_CONSOLE_BINDING is not set -+CONFIG_VT_HW_CONSOLE_BINDING=y - CONFIG_DEVKMEM=y - # CONFIG_SERIAL_NONSTANDARD is not set - -@@ -650,18 +1397,21 @@ CONFIG_SERIAL_8250_RSA=y - # - # Non-8250 serial port support - # -+# CONFIG_SERIAL_MAX3100 is not set - CONFIG_SERIAL_CORE=y - CONFIG_SERIAL_CORE_CONSOLE=y - CONFIG_UNIX98_PTYS=y -+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set - # CONFIG_LEGACY_PTYS is not set - # CONFIG_IPMI_HANDLER is not set - CONFIG_HW_RANDOM=y --# CONFIG_NVRAM is not set -+# CONFIG_HW_RANDOM_TIMERIOMEM 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_COMPAT=y - CONFIG_I2C_CHARDEV=y - CONFIG_I2C_HELPER_AUTO=y - -@@ -672,6 +1422,7 @@ CONFIG_I2C_HELPER_AUTO=y - # - # I2C system bus drivers (mostly embedded / system-on-chip) - # -+# CONFIG_I2C_DESIGNWARE is not set - # CONFIG_I2C_GPIO is not set - # CONFIG_I2C_OCORES is not set - CONFIG_I2C_OMAP=y -@@ -693,26 +1444,41 @@ CONFIG_I2C_OMAP=y - # - # Miscellaneous I2C Chip support - # --# CONFIG_DS1682 is not set --# CONFIG_EEPROM_AT24 is not set --# CONFIG_EEPROM_LEGACY is not set --# CONFIG_SENSORS_PCF8574 is not set --# CONFIG_PCF8575 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_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 --# CONFIG_SPI 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_GPIO is not set -+CONFIG_SPI_OMAP24XX=y -+# CONFIG_SPI_XILINX is not set -+ -+# -+# SPI Protocol Masters -+# -+CONFIG_SPI_SPIDEV=y -+# CONFIG_SPI_TLE62X0 is not set -+ -+# -+# PPS support -+# -+# CONFIG_PPS is not set - CONFIG_ARCH_REQUIRE_GPIOLIB=y - CONFIG_GPIOLIB=y - # CONFIG_DEBUG_GPIO is not set --# CONFIG_GPIO_SYSFS is not set -+CONFIG_GPIO_SYSFS=y -+ -+# -+# Memory mapped GPIO expanders: -+# - - # - # I2C GPIO expanders: -@@ -729,49 +1495,469 @@ CONFIG_GPIO_TWL4030=y - # - # SPI GPIO expanders: - # -+# CONFIG_GPIO_MAX7301 is not set -+# CONFIG_GPIO_MCP23S08 is not set -+# CONFIG_GPIO_MC33880 is not set -+ -+# -+# AC97 GPIO expanders: -+# - # CONFIG_W1 is not set --# CONFIG_POWER_SUPPLY is not set --# CONFIG_HWMON is not set --# CONFIG_THERMAL is not set --# CONFIG_THERMAL_HWMON is not set --# CONFIG_WATCHDOG 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_DS2782 is not set -+# CONFIG_BATTERY_BQ27x00 is not set -+# CONFIG_BATTERY_MAX17040 is not set -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Native drivers -+# -+# CONFIG_SENSORS_AD7414 is not set -+# CONFIG_SENSORS_AD7418 is not set -+# CONFIG_SENSORS_ADCXX 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_ADT7462 is not set -+# CONFIG_SENSORS_ADT7470 is not set -+# CONFIG_SENSORS_ADT7473 is not set -+# CONFIG_SENSORS_ADT7475 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_G760A 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_LM73 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_LTC4215 is not set -+# CONFIG_SENSORS_LTC4245 is not set -+# CONFIG_SENSORS_LM95241 is not set -+# CONFIG_SENSORS_MAX1111 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_PCF8591 is not set -+# CONFIG_SENSORS_SHT15 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_TMP401 is not set -+# CONFIG_SENSORS_TMP421 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_LIS3_SPI is not set -+CONFIG_THERMAL=y -+CONFIG_THERMAL_HWMON=y -+CONFIG_WATCHDOG=y -+CONFIG_WATCHDOG_NOWAYOUT=y -+ -+# -+# Watchdog Device Drivers -+# -+# CONFIG_SOFT_WATCHDOG is not set -+CONFIG_OMAP_WATCHDOG=y -+# CONFIG_TWL4030_WATCHDOG is not set -+ -+# -+# USB-based Watchdog Cards -+# -+# CONFIG_USBPCWATCHDOG is not set -+CONFIG_SSB_POSSIBLE=y - - # - # Sonics Silicon Backplane - # --CONFIG_SSB_POSSIBLE=y --# CONFIG_SSB is not set -+CONFIG_SSB=y -+CONFIG_SSB_SDIOHOST_POSSIBLE=y -+# CONFIG_SSB_SDIOHOST is not set -+# CONFIG_SSB_SILENT is not set -+# CONFIG_SSB_DEBUG is not set - - # - # Multifunction device drivers - # --# CONFIG_MFD_CORE is not set -+CONFIG_MFD_CORE=y - # CONFIG_MFD_SM501 is not set -+# CONFIG_MFD_ASIC3 is not set - # CONFIG_HTC_EGPIO is not set - # CONFIG_HTC_PASIC3 is not set -+# CONFIG_TPS65010 is not set - CONFIG_TWL4030_CORE=y --# CONFIG_UCB1400_CORE is not set -+CONFIG_TWL4030_POWER=y -+CONFIG_TWL4030_CODEC=y -+# CONFIG_TWL4030_MADC is not set - # CONFIG_MFD_TMIO is not set - # CONFIG_MFD_T7L66XB is not set - # CONFIG_MFD_TC6387XB is not set - # CONFIG_MFD_TC6393XB is not set -- --# --# Multimedia devices --# -+# CONFIG_PMIC_DA903X is not set -+# CONFIG_PMIC_ADP5520 is not set -+# CONFIG_MFD_WM8400 is not set -+# CONFIG_MFD_WM831X is not set -+# CONFIG_MFD_WM8350_I2C is not set -+# CONFIG_MFD_PCF50633 is not set -+# CONFIG_MFD_MC13783 is not set -+# CONFIG_AB3100_CORE is not set -+# CONFIG_EZX_PCAP is not set -+# CONFIG_MFD_88PM8607 is not set -+# CONFIG_AB4500_CORE is not set -+CONFIG_REGULATOR=y -+# CONFIG_REGULATOR_DEBUG is not set -+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set -+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -+# CONFIG_REGULATOR_BQ24022 is not set -+# CONFIG_REGULATOR_MAX1586 is not set -+CONFIG_REGULATOR_TWL4030=y -+# CONFIG_REGULATOR_LP3971 is not set -+# CONFIG_REGULATOR_TPS65023 is not set -+# CONFIG_REGULATOR_TPS6507X is not set -+CONFIG_MEDIA_SUPPORT=y - - # - # Multimedia core support - # --# CONFIG_VIDEO_DEV is not set --# CONFIG_DVB_CORE is not set --# CONFIG_VIDEO_MEDIA is not set -+CONFIG_VIDEO_DEV=y -+CONFIG_VIDEO_V4L2_COMMON=y -+CONFIG_VIDEO_ALLOW_V4L1=y -+CONFIG_VIDEO_V4L1_COMPAT=y -+CONFIG_DVB_CORE=m -+CONFIG_VIDEO_MEDIA=m - - # - # Multimedia drivers - # --CONFIG_DAB=y --# CONFIG_USB_DABUSB is not set -+CONFIG_MEDIA_ATTACH=y -+CONFIG_MEDIA_TUNER=m -+CONFIG_MEDIA_TUNER_CUSTOMISE=y -+CONFIG_MEDIA_TUNER_SIMPLE=m -+CONFIG_MEDIA_TUNER_TDA8290=m -+CONFIG_MEDIA_TUNER_TDA827X=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_MT2131=m -+CONFIG_MEDIA_TUNER_QT1010=m -+CONFIG_MEDIA_TUNER_XC2028=m -+CONFIG_MEDIA_TUNER_XC5000=m -+CONFIG_MEDIA_TUNER_MXL5005S=m -+CONFIG_MEDIA_TUNER_MXL5007T=m -+CONFIG_MEDIA_TUNER_MC44S803=m -+CONFIG_MEDIA_TUNER_MAX2165=m -+CONFIG_VIDEO_V4L2=y -+CONFIG_VIDEO_V4L1=y -+CONFIG_VIDEOBUF_GEN=y -+CONFIG_VIDEOBUF_DMA_SG=y -+CONFIG_VIDEOBUF_VMALLOC=m -+CONFIG_VIDEOBUF_DMA_CONTIG=y -+CONFIG_VIDEOBUF_DVB=m -+CONFIG_VIDEO_IR=m -+CONFIG_VIDEO_TVEEPROM=m -+CONFIG_VIDEO_TUNER=m -+CONFIG_VIDEO_CAPTURE_DRIVERS=y -+# CONFIG_VIDEO_ADV_DEBUG is not set -+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set -+CONFIG_VIDEO_IR_I2C=m -+ -+# -+# Encoders/decoders and other helper chips -+# -+ -+# -+# Audio decoders -+# -+# CONFIG_VIDEO_TVAUDIO is not set -+# CONFIG_VIDEO_TDA7432 is not set -+# CONFIG_VIDEO_TDA9840 is not set -+# CONFIG_VIDEO_TDA9875 is not set -+# CONFIG_VIDEO_TEA6415C is not set -+# CONFIG_VIDEO_TEA6420 is not set -+CONFIG_VIDEO_MSP3400=m -+# CONFIG_VIDEO_CS5345 is not set -+CONFIG_VIDEO_CS53L32A=m -+# CONFIG_VIDEO_M52790 is not set -+# CONFIG_VIDEO_TLV320AIC23B is not set -+CONFIG_VIDEO_WM8775=m -+# CONFIG_VIDEO_WM8739 is not set -+# CONFIG_VIDEO_VP27SMPX is not set -+ -+# -+# RDS decoders -+# -+# CONFIG_VIDEO_SAA6588 is not set -+ -+# -+# Video decoders -+# -+# CONFIG_VIDEO_ADV7180 is not set -+# CONFIG_VIDEO_BT819 is not set -+# CONFIG_VIDEO_BT856 is not set -+# CONFIG_VIDEO_BT866 is not set -+# CONFIG_VIDEO_KS0127 is not set -+# CONFIG_VIDEO_OV7670 is not set -+CONFIG_VIDEO_MT9V011=m -+# CONFIG_VIDEO_TCM825X is not set -+CONFIG_VIDEO_MT9P012=m -+# CONFIG_VIDEO_MT9T111 is not set -+# CONFIG_VIDEO_DW9710 is not set -+# CONFIG_VIDEO_OV3640 is not set -+# CONFIG_VIDEO_IMX046 is not set -+# CONFIG_VIDEO_LV8093 is not set -+# CONFIG_VIDEO_SAA7110 is not set -+CONFIG_VIDEO_SAA711X=m -+# CONFIG_VIDEO_SAA717X is not set -+# CONFIG_VIDEO_SAA7191 is not set -+# CONFIG_VIDEO_TVP514X is not set -+# CONFIG_VIDEO_TVP5150 is not set -+# CONFIG_VIDEO_VPX3220 is not set -+ -+# -+# Video and audio decoders -+# -+CONFIG_VIDEO_CX25840=m -+ -+# -+# MPEG video encoders -+# -+CONFIG_VIDEO_CX2341X=m -+ -+# -+# Video encoders -+# -+# CONFIG_VIDEO_SAA7127 is not set -+# CONFIG_VIDEO_SAA7185 is not set -+# CONFIG_VIDEO_ADV7170 is not set -+# CONFIG_VIDEO_ADV7175 is not set -+# CONFIG_VIDEO_THS7303 is not set -+# CONFIG_VIDEO_ADV7343 is not set -+ -+# -+# Video improvement chips -+# -+# CONFIG_VIDEO_UPD64031A is not set -+# CONFIG_VIDEO_UPD64083 is not set -+CONFIG_VIDEO_VIVI=m -+# 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_VIDEO_AU0828 is not set -+CONFIG_TI_MEDIA=y -+CONFIG_VIDEO_VPSS_SYSTEM=y -+CONFIG_VIDEO_VPFE_CAPTURE=y -+# CONFIG_VIDEO_DM6446_CCDC is not set -+# CONFIG_VIDEO_DM355_CCDC is not set -+CONFIG_VIDEO_OMAP2_VOUT=y -+CONFIG_VIDEO_OMAP3=y -+CONFIG_VIDEO_OMAP3_ISP=y -+CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER=y -+CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=y -+# CONFIG_SOC_CAMERA is not set -+CONFIG_V4L_USB_DRIVERS=y -+CONFIG_USB_VIDEO_CLASS=m -+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y -+CONFIG_USB_GSPCA=m -+CONFIG_USB_M5602=m -+CONFIG_USB_STV06XX=m -+# CONFIG_USB_GL860 is not set -+CONFIG_USB_GSPCA_CONEX=m -+CONFIG_USB_GSPCA_ETOMS=m -+CONFIG_USB_GSPCA_FINEPIX=m -+# CONFIG_USB_GSPCA_JEILINJ is not set -+CONFIG_USB_GSPCA_MARS=m -+# CONFIG_USB_GSPCA_MR97310A is not set -+CONFIG_USB_GSPCA_OV519=m -+CONFIG_USB_GSPCA_OV534=m -+CONFIG_USB_GSPCA_PAC207=m -+# CONFIG_USB_GSPCA_PAC7302 is not set -+CONFIG_USB_GSPCA_PAC7311=m -+# CONFIG_USB_GSPCA_SN9C20X is not set -+CONFIG_USB_GSPCA_SONIXB=m -+CONFIG_USB_GSPCA_SONIXJ=m -+CONFIG_USB_GSPCA_SPCA500=m -+CONFIG_USB_GSPCA_SPCA501=m -+CONFIG_USB_GSPCA_SPCA505=m -+CONFIG_USB_GSPCA_SPCA506=m -+CONFIG_USB_GSPCA_SPCA508=m -+CONFIG_USB_GSPCA_SPCA561=m -+# CONFIG_USB_GSPCA_SQ905 is not set -+# CONFIG_USB_GSPCA_SQ905C is not set -+CONFIG_USB_GSPCA_STK014=m -+# CONFIG_USB_GSPCA_STV0680 is not set -+CONFIG_USB_GSPCA_SUNPLUS=m -+CONFIG_USB_GSPCA_T613=m -+CONFIG_USB_GSPCA_TV8532=m -+CONFIG_USB_GSPCA_VC032X=m -+CONFIG_USB_GSPCA_ZC3XX=m -+CONFIG_VIDEO_PVRUSB2=m -+CONFIG_VIDEO_PVRUSB2_SYSFS=y -+CONFIG_VIDEO_PVRUSB2_DVB=y -+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -+CONFIG_VIDEO_HDPVR=m -+CONFIG_VIDEO_EM28XX=m -+CONFIG_VIDEO_EM28XX_ALSA=m -+CONFIG_VIDEO_EM28XX_DVB=m -+CONFIG_VIDEO_CX231XX=m -+# CONFIG_VIDEO_CX231XX_ALSA is not set -+CONFIG_VIDEO_CX231XX_DVB=m -+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=m -+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=m -+CONFIG_USB_PWC=m -+# CONFIG_USB_PWC_DEBUG is not set -+CONFIG_USB_PWC_INPUT_EVDEV=y -+CONFIG_USB_ZR364XX=m -+CONFIG_USB_STKWEBCAM=m -+CONFIG_USB_S2255=m -+CONFIG_RADIO_ADAPTERS=y -+# CONFIG_I2C_SI4713 is not set -+# CONFIG_RADIO_SI4713 is not set -+# CONFIG_USB_DSBR is not set -+# CONFIG_RADIO_SI470X is not set -+# CONFIG_USB_MR800 is not set -+# CONFIG_RADIO_TEA5764 is not set -+# CONFIG_RADIO_TEF6862 is not set -+CONFIG_DVB_MAX_ADAPTERS=8 -+CONFIG_DVB_DYNAMIC_MINORS=y -+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_USB_DW2102=m -+CONFIG_DVB_USB_CINERGY_T2=m -+CONFIG_DVB_USB_ANYSEE=m -+CONFIG_DVB_USB_DTV5100=m -+CONFIG_DVB_USB_AF9015=m -+# CONFIG_DVB_USB_CE6230 is not set -+# CONFIG_DVB_USB_FRIIO is not set -+# CONFIG_DVB_USB_EC168 is not set -+# CONFIG_SMS_SIANO_MDTV is not set -+ -+# -+# Supported FlexCopII (B2C2) Adapters -+# -+CONFIG_DVB_B2C2_FLEXCOP=m -+CONFIG_DVB_B2C2_FLEXCOP_USB=m -+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set -+ -+# -+# Supported DVB Frontends -+# -+# CONFIG_DVB_FE_CUSTOMISE is not set -+CONFIG_DVB_CX24123=m -+CONFIG_DVB_MT312=m -+CONFIG_DVB_ZL10039=m -+CONFIG_DVB_S5H1420=m -+CONFIG_DVB_STV0288=m -+CONFIG_DVB_STB6000=m -+CONFIG_DVB_STV0299=m -+CONFIG_DVB_TDA10086=m -+CONFIG_DVB_TUNER_ITD1000=m -+CONFIG_DVB_TUNER_CX24113=m -+CONFIG_DVB_TDA826X=m -+CONFIG_DVB_CX24116=m -+CONFIG_DVB_SI21XX=m -+CONFIG_DVB_CX22702=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 -+CONFIG_DVB_AF9013=m -+CONFIG_DVB_TDA10021=m -+CONFIG_DVB_TDA10023=m -+CONFIG_DVB_STV0297=m -+CONFIG_DVB_NXT200X=m -+CONFIG_DVB_BCM3510=m -+CONFIG_DVB_LGDT330X=m -+CONFIG_DVB_LGDT3305=m -+CONFIG_DVB_S5H1409=m -+CONFIG_DVB_S5H1411=m -+CONFIG_DVB_DIB8000=m -+CONFIG_DVB_PLL=m -+CONFIG_DVB_TUNER_DIB0070=m -+CONFIG_DVB_LNBP21=m -+CONFIG_DVB_ISL6421=m -+CONFIG_DVB_LGS8GL5=m -+# CONFIG_DAB is not set - - # - # Graphics support -@@ -781,6 +1967,7 @@ CONFIG_DAB=y - CONFIG_FB=y - # CONFIG_FIRMWARE_EDID is not set - # CONFIG_FB_DDC is not set -+# CONFIG_FB_BOOT_VESA_SUPPORT is not set - CONFIG_FB_CFB_FILLRECT=y - CONFIG_FB_CFB_COPYAREA=y - CONFIG_FB_CFB_IMAGEBLIT=y -@@ -793,24 +1980,57 @@ CONFIG_FB_CFB_IMAGEBLIT=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_MODE_HELPERS=y - # CONFIG_FB_TILEBLITTING is not set - - # - # Frame buffer hardware drivers - # - # CONFIG_FB_S1D13XXX is not set -+# CONFIG_FB_TMIO is not set - # CONFIG_FB_VIRTUAL is not set --CONFIG_FB_OMAP=y --# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set -+# CONFIG_FB_METRONOME is not set -+# CONFIG_FB_MB862XX is not set -+# CONFIG_FB_BROADSHEET is not set - # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set --CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2 -+CONFIG_OMAP2_VRAM=y -+CONFIG_OMAP2_VRFB=y -+CONFIG_OMAP2_DSS=y -+CONFIG_OMAP2_VRAM_SIZE=14 -+CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y -+# CONFIG_OMAP2_DSS_RFBI is not set -+CONFIG_OMAP2_DSS_VENC=y -+CONFIG_OMAP2_VENC_OUT_TYPE_SVIDEO=y -+# CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE is not set -+# CONFIG_OMAP2_DSS_SDI is not set -+CONFIG_OMAP2_DSS_DSI=y -+CONFIG_OMAP2_DSS_USE_DSI_PLL=y -+# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set -+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 -+CONFIG_FB_OMAP2=y -+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y -+# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set -+CONFIG_FB_OMAP2_NUM_FBS=3 -+ -+# -+# OMAP2/3 Display Device Drivers -+# -+CONFIG_PANEL_GENERIC=y -+# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set -+# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set -+CONFIG_PANEL_SHARP_LS037V7DW01=y -+# CONFIG_PANEL_SHARP_LQ043T1DG01 is not set -+# CONFIG_PANEL_TAAL is not set - # CONFIG_BACKLIGHT_LCD_SUPPORT is not set - - # - # Display device support - # --# CONFIG_DISPLAY_SUPPORT is not set -+CONFIG_DISPLAY_SUPPORT=y -+ -+# -+# Display hardware drivers -+# - - # - # Console display driver support -@@ -820,31 +2040,113 @@ 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_FONTS is not set - CONFIG_FONT_8x8=y - 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 is not set --# CONFIG_HID_SUPPORT is not set -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_LOGO_LINUX_CLUT224=y -+CONFIG_SOUND=y -+CONFIG_SOUND_OSS_CORE=y -+CONFIG_SOUND_OSS_CORE_PRECLAIM=y -+CONFIG_SND=y -+CONFIG_SND_TIMER=y -+CONFIG_SND_PCM=y -+CONFIG_SND_HWDEP=y -+CONFIG_SND_RAWMIDI=y -+CONFIG_SND_JACK=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_HRTIMER=m -+CONFIG_SND_SEQ_HRTIMER_DEFAULT=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 -+CONFIG_SND_RAWMIDI_SEQ=m -+# CONFIG_SND_OPL3_LIB_SEQ is not set -+# CONFIG_SND_OPL4_LIB_SEQ is not set -+# CONFIG_SND_SBAWE_SEQ is not set -+# CONFIG_SND_EMU10K1_SEQ is not set -+CONFIG_SND_DRIVERS=y -+# 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 -+# CONFIG_SND_ARM is not set -+CONFIG_SND_SPI=y -+CONFIG_SND_USB=y -+CONFIG_SND_USB_AUDIO=y -+CONFIG_SND_USB_CAIAQ=m -+CONFIG_SND_USB_CAIAQ_INPUT=y -+CONFIG_SND_SOC=y -+CONFIG_SND_OMAP_SOC=y -+CONFIG_SND_OMAP_SOC_MCBSP=y -+# CONFIG_SND_OMAP_SOC_OMAP3EVM is not set -+CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y -+CONFIG_SND_SOC_I2C_AND_SPI=y -+# CONFIG_SND_SOC_ALL_CODECS is not set -+CONFIG_SND_SOC_TWL4030=y -+# CONFIG_SOUND_PRIME is not set -+CONFIG_HID_SUPPORT=y -+CONFIG_HID=y -+# CONFIG_HIDRAW is not set -+ -+# -+# USB Input Devices -+# -+CONFIG_USB_HID=y -+# CONFIG_HID_PID is not set -+# CONFIG_USB_HIDDEV is not set -+ -+# -+# Special HID drivers -+# -+CONFIG_HID_A4TECH=y -+CONFIG_HID_APPLE=y -+CONFIG_HID_BELKIN=y -+CONFIG_HID_CHERRY=y -+CONFIG_HID_CHICONY=y -+CONFIG_HID_CYPRESS=y -+# CONFIG_HID_DRAGONRISE is not set -+CONFIG_HID_EZKEY=y -+# CONFIG_HID_KYE is not set -+CONFIG_HID_GYRATION=y -+# CONFIG_HID_TWINHAN is not set -+# CONFIG_HID_KENSINGTON is not set -+CONFIG_HID_LOGITECH=y -+# CONFIG_LOGITECH_FF is not set -+# CONFIG_LOGIRUMBLEPAD2_FF is not set -+CONFIG_HID_MICROSOFT=y -+CONFIG_HID_MONTEREY=y -+CONFIG_HID_NTRIG=y -+CONFIG_HID_PANTHERLORD=y -+# CONFIG_PANTHERLORD_FF is not set -+CONFIG_HID_PETALYNX=y -+CONFIG_HID_SAMSUNG=y -+CONFIG_HID_SONY=y -+CONFIG_HID_SUNPLUS=y -+# CONFIG_HID_GREENASIA is not set -+# CONFIG_HID_SMARTJOYPLUS is not set -+CONFIG_HID_TOPSEED=y -+# CONFIG_HID_THRUSTMASTER is not set -+# CONFIG_HID_WACOM is not set -+# CONFIG_HID_ZEROPLUS 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 -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y - - # - # Miscellaneous USB options -@@ -857,18 +2159,25 @@ CONFIG_USB_OTG=y - # CONFIG_USB_OTG_WHITELIST is not set - # CONFIG_USB_OTG_BLACKLIST_HUB is not set - CONFIG_USB_MON=y -+# CONFIG_USB_WUSB is not set -+# CONFIG_USB_WUSB_CBAF is not set - - # - # USB Host Controller Drivers - # --CONFIG_USB_EHCI_HCD=y --CONFIG_USB_EHCI_ROOT_HUB_TT=y - # CONFIG_USB_C67X00_HCD is not set -+CONFIG_USB_EHCI_HCD=y -+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -+CONFIG_USB_EHCI_TT_NEWSCHED=y -+# CONFIG_USB_OXU210HP_HCD is not set - # CONFIG_USB_ISP116X_HCD is not set - # CONFIG_USB_ISP1760_HCD is not set -+# CONFIG_USB_ISP1362_HCD is not set - # CONFIG_USB_OHCI_HCD is not set -+# CONFIG_USB_U132_HCD is not set - # CONFIG_USB_SL811_HCD is not set - # CONFIG_USB_R8A66597_HCD is not set -+# CONFIG_USB_HWA_HCD is not set - CONFIG_USB_MUSB_HDRC=y - CONFIG_USB_MUSB_SOC=y - -@@ -882,24 +2191,39 @@ 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_TI_CPPI41_DMA is not set - # CONFIG_USB_MUSB_DEBUG is not set - - # - # USB Device Class drivers - # --# CONFIG_USB_ACM is not set --# CONFIG_USB_PRINTER is not set --# CONFIG_USB_WDM is not set -+CONFIG_USB_ACM=m -+CONFIG_USB_PRINTER=m -+CONFIG_USB_WDM=m -+CONFIG_USB_TMC=m - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may - # - - # --# may also be needed; see USB_STORAGE Help for more information -+# also be needed; see USB_STORAGE Help for more info - # --# CONFIG_USB_STORAGE is not set -+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_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 - - # -@@ -911,92 +2235,200 @@ CONFIG_USB_INVENTRA_DMA=y - # - # USB port drivers - # --# CONFIG_USB_SERIAL is not set -+CONFIG_USB_SERIAL=m -+CONFIG_USB_EZUSB=y -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_AIRCABLE=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_CP210X is not set -+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_QUALCOMM is not set -+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_SIEMENS_MPI=m -+CONFIG_USB_SERIAL_SIERRAWIRELESS=m -+# CONFIG_USB_SERIAL_SYMBOL is not set -+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_OPTICON=m -+CONFIG_USB_SERIAL_DEBUG=m - - # - # USB Miscellaneous drivers - # --# CONFIG_USB_EMI62 is not set --# CONFIG_USB_EMI26 is not set -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m - # CONFIG_USB_ADUTUX is not set -+# CONFIG_USB_SEVSEG 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_LEGOTOWER=m -+CONFIG_USB_LCD=m -+CONFIG_USB_BERRY_CHARGE=m -+CONFIG_USB_LED=m -+CONFIG_USB_CYPRESS_CY7C63=m -+CONFIG_USB_CYTHERM=m -+CONFIG_USB_IDMOUSE=m -+CONFIG_USB_FTDI_ELAN=m - # CONFIG_USB_APPLEDISPLAY is not set --# CONFIG_USB_LD is not set --# CONFIG_USB_TRANCEVIBRATOR is not set -+CONFIG_USB_SISUSBVGA=m -+CONFIG_USB_SISUSBVGA_CON=y -+CONFIG_USB_LD=m -+CONFIG_USB_TRANCEVIBRATOR=m - # CONFIG_USB_IOWARRIOR is not set --# CONFIG_USB_TEST is not set -+CONFIG_USB_TEST=m - # CONFIG_USB_ISIGHTFW is not set -+CONFIG_USB_VST=m -+CONFIG_USB_ATM=m -+CONFIG_USB_SPEEDTOUCH=m -+CONFIG_USB_CXACRU=m -+CONFIG_USB_UEAGLEATM=m -+CONFIG_USB_XUSBATM=m - CONFIG_USB_GADGET=y - # CONFIG_USB_GADGET_DEBUG is not set - # CONFIG_USB_GADGET_DEBUG_FILES is not set -+CONFIG_USB_GADGET_DEBUG_FS=y -+CONFIG_USB_GADGET_VBUS_DRAW=2 - CONFIG_USB_GADGET_SELECTED=y --# CONFIG_USB_GADGET_AMD5536UDC is not set -+# CONFIG_USB_GADGET_AT91 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_PXA25X is not set --# CONFIG_USB_GADGET_M66592 is not set --# CONFIG_USB_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_PXA25X is not set -+# CONFIG_USB_GADGET_R8A66597 is not set -+# CONFIG_USB_GADGET_PXA27X is not set -+# CONFIG_USB_GADGET_S3C_HSOTG is not set -+# CONFIG_USB_GADGET_IMX is not set - # CONFIG_USB_GADGET_S3C2410 is not set --# CONFIG_USB_GADGET_AT91 is not set -+# CONFIG_USB_GADGET_M66592 is not set -+# CONFIG_USB_GADGET_AMD5536UDC is not set -+# CONFIG_USB_GADGET_FSL_QE is not set -+# CONFIG_USB_GADGET_CI13XXX is not set -+# CONFIG_USB_GADGET_NET2280 is not set -+# CONFIG_USB_GADGET_GOKU is not set -+# CONFIG_USB_GADGET_LANGWELL is not set - # CONFIG_USB_GADGET_DUMMY_HCD is not set - CONFIG_USB_GADGET_DUALSPEED=y --# CONFIG_USB_ZERO is not set -+CONFIG_USB_ZERO=m -+CONFIG_USB_ZERO_HNPTEST=y -+# CONFIG_USB_AUDIO is not set - CONFIG_USB_ETH=m - 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_USB_CDC_COMPOSITE is not set -+# CONFIG_USB_ETH_EEM is not set -+CONFIG_USB_GADGETFS=m -+CONFIG_USB_FILE_STORAGE=m -+# CONFIG_USB_FILE_STORAGE_TEST is not set -+# CONFIG_USB_MASS_STORAGE is not set -+CONFIG_USB_G_SERIAL=m -+CONFIG_USB_MIDI_GADGET=m -+CONFIG_USB_G_PRINTER=m -+CONFIG_USB_CDC_COMPOSITE=m -+# CONFIG_USB_G_MULTI is not set - - # - # OTG and related infrastructure - # - CONFIG_USB_OTG_UTILS=y --# CONFIG_USB_GPIO_VBUS is not set -+CONFIG_USB_GPIO_VBUS=y -+# CONFIG_ISP1301_OMAP is not set -+# CONFIG_USB_ULPI is not set - CONFIG_TWL4030_USB=y --# CONFIG_NOP_USB_XCEIV is not set -+CONFIG_NOP_USB_XCEIV=y - CONFIG_MMC=y - # CONFIG_MMC_DEBUG is not set --# CONFIG_MMC_UNSAFE_RESUME is not set -+CONFIG_MMC_UNSAFE_RESUME=y - - # --# MMC/SD Card Drivers -+# MMC/SD/SDIO Card Drivers - # - CONFIG_MMC_BLOCK=y - CONFIG_MMC_BLOCK_BOUNCE=y --# CONFIG_SDIO_UART is not set -+CONFIG_SDIO_UART=y - # CONFIG_MMC_TEST is not set - - # --# MMC/SD Host Controller Drivers -+# MMC/SD/SDIO Host Controller Drivers - # - # CONFIG_MMC_SDHCI is not set - # CONFIG_MMC_OMAP is not set - CONFIG_MMC_OMAP_HS=y -+# CONFIG_MMC_AT91 is not set -+# CONFIG_MMC_ATMELMCI is not set -+CONFIG_MMC_SPI=m - # CONFIG_MEMSTICK is not set -+CONFIG_NEW_LEDS=y -+CONFIG_LEDS_CLASS=y -+ -+# -+# LED drivers -+# -+# CONFIG_LEDS_PCA9532 is not set -+CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_GPIO_PLATFORM=y -+# CONFIG_LEDS_LP3944 is not set -+# CONFIG_LEDS_PCA955X is not set -+# CONFIG_LEDS_DAC124S085 is not set -+# CONFIG_LEDS_BD2802 is not set -+ -+# -+# LED Triggers -+# -+CONFIG_LEDS_TRIGGERS=y -+CONFIG_LEDS_TRIGGER_TIMER=m -+CONFIG_LEDS_TRIGGER_HEARTBEAT=y -+CONFIG_LEDS_TRIGGER_BACKLIGHT=m -+# CONFIG_LEDS_TRIGGER_GPIO is not set -+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m -+ -+# -+# iptables trigger is under Netfilter config (LED target) -+# - # CONFIG_ACCESSIBILITY 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 -+CONFIG_RTC_CLASS=m - - # - # RTC interfaces -@@ -1020,73 +2452,178 @@ CONFIG_RTC_INTF_DEV=y - # 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=m - # CONFIG_RTC_DRV_S35390A is not set - # CONFIG_RTC_DRV_FM3130 is not set -+# CONFIG_RTC_DRV_RX8581 is not set -+# CONFIG_RTC_DRV_RX8025 is not set - - # - # SPI RTC drivers - # -+# CONFIG_RTC_DRV_M41T94 is not set -+# CONFIG_RTC_DRV_DS1305 is not set -+# CONFIG_RTC_DRV_DS1390 is not set -+# CONFIG_RTC_DRV_MAX6902 is not set -+# CONFIG_RTC_DRV_R9701 is not set -+# CONFIG_RTC_DRV_RS5C348 is not set -+# CONFIG_RTC_DRV_DS3234 is not set -+# CONFIG_RTC_DRV_PCF2123 is not set - - # - # Platform RTC drivers - # - # CONFIG_RTC_DRV_CMOS is not set -+# CONFIG_RTC_DRV_DS1286 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_M48T35 is not set - # CONFIG_RTC_DRV_M48T59 is not set -+# CONFIG_RTC_DRV_MSM6242 is not set -+# CONFIG_RTC_DRV_BQ4802 is not set -+# CONFIG_RTC_DRV_RP5C01 is not set - # CONFIG_RTC_DRV_V3020 is not set - - # - # on-CPU RTC drivers - # - # CONFIG_DMADEVICES is not set -+# CONFIG_AUXDISPLAY is not set -+CONFIG_UIO=m -+CONFIG_UIO_PDRV=m -+CONFIG_UIO_PDRV_GENIRQ=m -+# CONFIG_UIO_SMX is not set -+# CONFIG_UIO_SERCOS3 is not set - - # --# Voltage and Current regulators -+# TI VLYNQ - # --CONFIG_REGULATOR=y --# CONFIG_REGULATOR_FIXED_VOLTAGE is not set --# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set --# CONFIG_REGULATOR_BQ24022 is not set --CONFIG_REGULATOR_TWL4030=y --# CONFIG_UIO is not set -+CONFIG_STAGING=y -+# CONFIG_STAGING_EXCLUDE_BUILD is not set -+# CONFIG_USB_IP_COMMON is not set -+CONFIG_W35UND=m -+# CONFIG_PRISM2_USB is not set -+CONFIG_ECHO=m -+CONFIG_OTUS=m -+# CONFIG_COMEDI is not set -+# CONFIG_ASUS_OLED is not set -+# CONFIG_INPUT_MIMIO is not set -+# CONFIG_TRANZPORT is not set -+ -+# -+# Qualcomm MSM Camera And Video -+# -+ -+# -+# Camera Sensor Selection -+# -+# CONFIG_INPUT_GPIO is not set -+# CONFIG_DST is not set -+# CONFIG_POHMELFS is not set -+# CONFIG_PLAN9AUTH is not set -+# CONFIG_LINE6_USB is not set -+# CONFIG_USB_SERIAL_QUATECH2 is not set -+# CONFIG_USB_SERIAL_QUATECH_USB2 is not set -+# CONFIG_VT6656 is not set -+# CONFIG_FB_UDL is not set -+ -+# -+# RAR Register Driver -+# -+# CONFIG_RAR_REGISTER is not set -+# CONFIG_IIO is not set -+# CONFIG_RAMZSWAP is not set -+# CONFIG_BATMAN_ADV is not set -+# CONFIG_STRIP is not set -+ -+# -+# CBUS support -+# -+# CONFIG_CBUS is not set - - # - # File systems - # -+CONFIG_FS_JOURNAL_INFO=y - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set - # CONFIG_EXT2_FS_XIP is not set - CONFIG_EXT3_FS=y -+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set - # CONFIG_EXT3_FS_XATTR is not set --# CONFIG_EXT4DEV_FS is not set -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_XATTR=y -+# CONFIG_EXT4_FS_POSIX_ACL is not set -+# CONFIG_EXT4_FS_SECURITY is not set -+# CONFIG_EXT4_DEBUG is not set - CONFIG_JBD=y --# 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_OCFS2_FS is not set -+# CONFIG_JBD_DEBUG is not set -+CONFIG_JBD2=y -+# CONFIG_JBD2_DEBUG is not set -+CONFIG_FS_MBCACHE=y -+CONFIG_REISERFS_FS=m -+# CONFIG_REISERFS_CHECK is not set -+CONFIG_REISERFS_PROC_INFO=y -+CONFIG_REISERFS_FS_XATTR=y -+# CONFIG_REISERFS_FS_POSIX_ACL is not set -+# CONFIG_REISERFS_FS_SECURITY is not set -+CONFIG_JFS_FS=m -+# CONFIG_JFS_POSIX_ACL is not set -+# CONFIG_JFS_SECURITY is not set -+# CONFIG_JFS_DEBUG is not set -+# CONFIG_JFS_STATISTICS 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=m -+# CONFIG_GFS2_FS_LOCKING_DLM is not set -+CONFIG_OCFS2_FS=m -+CONFIG_OCFS2_FS_O2CB=m -+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m -+CONFIG_OCFS2_FS_STATS=y -+CONFIG_OCFS2_DEBUG_MASKLOG=y -+# CONFIG_OCFS2_DEBUG_FS is not set -+# CONFIG_OCFS2_FS_POSIX_ACL is not set -+CONFIG_BTRFS_FS=m -+# CONFIG_BTRFS_FS_POSIX_ACL is not set -+# CONFIG_NILFS2_FS is not set -+CONFIG_FILE_LOCKING=y -+CONFIG_FSNOTIFY=y - 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_QUOTA_TREE=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 -+CONFIG_AUTOFS4_FS=m -+CONFIG_FUSE_FS=m -+# CONFIG_CUSE is not set -+CONFIG_GENERIC_ACL=y -+ -+# -+# Caches -+# -+# CONFIG_FSCACHE is not set - - # - # CD-ROM/DVD Filesystems - # --# CONFIG_ISO9660_FS is not set --# CONFIG_UDF_FS is not set -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=m -+CONFIG_UDF_NLS=y - - # - # DOS/FAT/NT Filesystems -@@ -1096,68 +2633,118 @@ 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 -+CONFIG_NTFS_FS=m -+# CONFIG_NTFS_DEBUG is not set -+CONFIG_NTFS_RW=y - - # - # Pseudo filesystems - # - CONFIG_PROC_FS=y - CONFIG_PROC_SYSCTL=y -+CONFIG_PROC_PAGE_MONITOR=y - CONFIG_SYSFS=y - CONFIG_TMPFS=y --# CONFIG_TMPFS_POSIX_ACL is not set -+CONFIG_TMPFS_POSIX_ACL=y - # 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_CONFIGFS_FS=m -+CONFIG_MISC_FILESYSTEMS=y -+CONFIG_ADFS_FS=m -+# CONFIG_ADFS_FS_RW is not set -+CONFIG_AFFS_FS=m -+# CONFIG_ECRYPT_FS is not set -+CONFIG_HFS_FS=m -+CONFIG_HFSPLUS_FS=m -+CONFIG_BEFS_FS=m -+# CONFIG_BEFS_DEBUG is not set -+CONFIG_BFS_FS=m -+CONFIG_EFS_FS=m - 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 is not set --# CONFIG_JFFS2_FS_XATTR is not set --# CONFIG_JFFS2_COMPRESSION_OPTIONS 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 is not set -+CONFIG_JFFS2_LZO=y - CONFIG_JFFS2_RTIME=y --# CONFIG_JFFS2_RUBIN is not set --# CONFIG_CRAMFS is not set --# CONFIG_VXFS_FS is not set --# CONFIG_MINIX_FS is not set --# CONFIG_OMFS_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_JFFS2_RUBIN=y -+# CONFIG_JFFS2_CMODE_NONE is not set -+# CONFIG_JFFS2_CMODE_PRIORITY is not set -+# CONFIG_JFFS2_CMODE_SIZE is not set -+CONFIG_JFFS2_CMODE_FAVOURLZO=y -+CONFIG_UBIFS_FS=y -+CONFIG_UBIFS_FS_XATTR=y -+CONFIG_UBIFS_FS_ADVANCED_COMPR=y -+CONFIG_UBIFS_FS_LZO=y -+CONFIG_UBIFS_FS_ZLIB=y -+# CONFIG_UBIFS_FS_DEBUG is not set -+CONFIG_CRAMFS=m -+CONFIG_SQUASHFS=y -+# CONFIG_SQUASHFS_EMBEDDED is not set -+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -+CONFIG_VXFS_FS=m -+CONFIG_MINIX_FS=m -+CONFIG_OMFS_FS=m -+CONFIG_HPFS_FS=m -+CONFIG_QNX4FS_FS=m -+CONFIG_ROMFS_FS=m -+CONFIG_ROMFS_BACKED_BY_BLOCK=y -+# CONFIG_ROMFS_BACKED_BY_MTD is not set -+# CONFIG_ROMFS_BACKED_BY_BOTH is not set -+CONFIG_ROMFS_ON_BLOCK=y -+CONFIG_SYSV_FS=m -+CONFIG_UFS_FS=m -+# CONFIG_UFS_FS_WRITE is not set -+# CONFIG_UFS_DEBUG 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_NFS_V4_1 is not set - CONFIG_ROOT_NFS=y --# CONFIG_NFSD is not set -+CONFIG_NFSD=m -+CONFIG_NFSD_V2_ACL=y -+CONFIG_NFSD_V3=y -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y - CONFIG_LOCKD=y - CONFIG_LOCKD_V4=y -+CONFIG_EXPORTFS=m -+CONFIG_NFS_ACL_SUPPORT=m - CONFIG_NFS_COMMON=y - CONFIG_SUNRPC=y - CONFIG_SUNRPC_GSS=y - 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 -+CONFIG_SMB_FS=m -+# CONFIG_SMB_NLS_DEFAULT is not set -+CONFIG_CIFS=m -+CONFIG_CIFS_STATS=y -+CONFIG_CIFS_STATS2=y -+# CONFIG_CIFS_WEAK_PW_HASH is not set -+# CONFIG_CIFS_UPCALL is not set -+# CONFIG_CIFS_XATTR is not set -+# CONFIG_CIFS_DEBUG2 is not set -+# CONFIG_CIFS_DFS_UPCALL is not set -+CONFIG_CIFS_EXPERIMENTAL=y -+CONFIG_NCP_FS=m -+# CONFIG_NCPFS_PACKET_SIGNING is not set -+# CONFIG_NCPFS_IOCTL_LOCKING is not set -+# CONFIG_NCPFS_STRONG is not set -+# CONFIG_NCPFS_NFS_NS is not set -+# CONFIG_NCPFS_OS2_NS is not set -+# CONFIG_NCPFS_SMALLDOS is not set -+# CONFIG_NCPFS_NLS is not set -+# CONFIG_NCPFS_EXTRAS is not set -+CONFIG_CODA_FS=m -+CONFIG_AFS_FS=m -+# CONFIG_AFS_DEBUG is not set -+CONFIG_9P_FS=m - - # - # Partition Types -@@ -1167,82 +2754,90 @@ CONFIG_PARTITION_ADVANCED=y - # 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_MAC_PARTITION=y - CONFIG_MSDOS_PARTITION=y --# CONFIG_BSD_DISKLABEL is not set --# CONFIG_MINIX_SUBPARTITION is not set --# CONFIG_SOLARIS_X86_PARTITION is not set -+CONFIG_BSD_DISKLABEL=y -+CONFIG_MINIX_SUBPARTITION=y -+CONFIG_SOLARIS_X86_PARTITION=y - # CONFIG_UNIXWARE_DISKLABEL is not set --# CONFIG_LDM_PARTITION is not set -+CONFIG_LDM_PARTITION=y -+CONFIG_LDM_DEBUG=y - # 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_EFI_PARTITION=y - # 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_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=m - 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 -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_NLS_UTF8=y -+CONFIG_DLM=m -+# CONFIG_DLM_DEBUG is not set - - # - # Kernel hacking - # --# CONFIG_PRINTK_TIME is not set -+CONFIG_PRINTK_TIME=y - CONFIG_ENABLE_WARN_DEPRECATED=y - CONFIG_ENABLE_MUST_CHECK=y - CONFIG_FRAME_WARN=1024 - CONFIG_MAGIC_SYSRQ=y -+# CONFIG_STRIP_ASM_SYMS is not set - # CONFIG_UNUSED_SYMBOLS is not set --# CONFIG_DEBUG_FS is not set -+CONFIG_DEBUG_FS=y - # CONFIG_HEADERS_CHECK is not set - CONFIG_DEBUG_KERNEL=y - # CONFIG_DEBUG_SHIRQ is not set - CONFIG_DETECT_SOFTLOCKUP=y - # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set - CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -+CONFIG_DETECT_HUNG_TASK=y -+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 - CONFIG_SCHED_DEBUG=y --# CONFIG_SCHEDSTATS is not set --# CONFIG_TIMER_STATS is not set -+CONFIG_SCHEDSTATS=y -+CONFIG_TIMER_STATS=y - # CONFIG_DEBUG_OBJECTS is not set - # CONFIG_DEBUG_SLAB is not set -+# CONFIG_DEBUG_KMEMLEAK 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 -@@ -1252,137 +2847,204 @@ CONFIG_DEBUG_MUTEXES=y - # CONFIG_LOCK_STAT is not set - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set - # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -+CONFIG_STACKTRACE=y - # CONFIG_DEBUG_KOBJECT is not set - # CONFIG_DEBUG_BUGVERBOSE is not set --CONFIG_DEBUG_INFO=y -+# CONFIG_DEBUG_INFO is not set - # CONFIG_DEBUG_VM is not set - # CONFIG_DEBUG_WRITECOUNT is not set - # CONFIG_DEBUG_MEMORY_INIT is not set - # CONFIG_DEBUG_LIST is not set - # CONFIG_DEBUG_SG is not set --CONFIG_FRAME_POINTER=y -+# CONFIG_DEBUG_NOTIFIERS is not set -+# CONFIG_DEBUG_CREDENTIALS is not set - # CONFIG_BOOT_PRINTK_DELAY is not set - # CONFIG_RCU_TORTURE_TEST is not set -+# CONFIG_RCU_CPU_STALL_DETECTOR is not set - # CONFIG_BACKTRACE_SELF_TEST is not set -+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set - # CONFIG_FAULT_INJECTION is not set - # CONFIG_LATENCYTOP is not set --CONFIG_HAVE_FTRACE=y --CONFIG_HAVE_DYNAMIC_FTRACE=y --# CONFIG_FTRACE is not set -+# CONFIG_SYSCTL_SYSCALL_CHECK is not set -+# CONFIG_PAGE_POISONING is not set -+CONFIG_NOP_TRACER=y -+CONFIG_HAVE_FUNCTION_TRACER=y -+CONFIG_RING_BUFFER=y -+CONFIG_EVENT_TRACING=y -+CONFIG_CONTEXT_SWITCH_TRACER=y -+CONFIG_RING_BUFFER_ALLOW_SWAP=y -+CONFIG_TRACING=y -+CONFIG_TRACING_SUPPORT=y -+CONFIG_FTRACE=y -+# CONFIG_FUNCTION_TRACER is not set - # CONFIG_IRQSOFF_TRACER is not set -+# CONFIG_PREEMPT_TRACER is not set - # CONFIG_SCHED_TRACER is not set --# CONFIG_CONTEXT_SWITCH_TRACER is not set -+# CONFIG_ENABLE_DEFAULT_TRACERS is not set -+# CONFIG_BOOT_TRACER is not set -+CONFIG_BRANCH_PROFILE_NONE=y -+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -+# CONFIG_PROFILE_ALL_BRANCHES is not set -+# CONFIG_STACK_TRACER is not set -+# CONFIG_KMEMTRACE is not set -+# CONFIG_WORKQUEUE_TRACER is not set -+# CONFIG_BLK_DEV_IO_TRACE is not set -+# CONFIG_RING_BUFFER_BENCHMARK is not set -+# CONFIG_DYNAMIC_DEBUG is not set - # CONFIG_SAMPLES is not set - CONFIG_HAVE_ARCH_KGDB=y - # CONFIG_KGDB is not set -+CONFIG_ARM_UNWIND=y - # 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_OC_ETM is not set - - # - # Security options - # --# CONFIG_KEYS is not set -+CONFIG_KEYS=y -+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set - # CONFIG_SECURITY is not set --# CONFIG_SECURITY_FILE_CAPABILITIES is not set -+# CONFIG_SECURITYFS is not set -+# CONFIG_DEFAULT_SECURITY_SELINUX is not set -+# CONFIG_DEFAULT_SECURITY_SMACK is not set -+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set -+CONFIG_DEFAULT_SECURITY_DAC=y -+CONFIG_DEFAULT_SECURITY="" -+CONFIG_XOR_BLOCKS=m -+CONFIG_ASYNC_CORE=m -+CONFIG_ASYNC_MEMCPY=m -+CONFIG_ASYNC_XOR=m -+CONFIG_ASYNC_PQ=m -+CONFIG_ASYNC_RAID6_RECOV=m - CONFIG_CRYPTO=y - - # - # Crypto core or helper - # -+CONFIG_CRYPTO_FIPS=y - CONFIG_CRYPTO_ALGAPI=y -+CONFIG_CRYPTO_ALGAPI2=y -+CONFIG_CRYPTO_AEAD=m -+CONFIG_CRYPTO_AEAD2=y - CONFIG_CRYPTO_BLKCIPHER=y -+CONFIG_CRYPTO_BLKCIPHER2=y -+CONFIG_CRYPTO_HASH=y -+CONFIG_CRYPTO_HASH2=y -+CONFIG_CRYPTO_RNG=m -+CONFIG_CRYPTO_RNG2=y -+CONFIG_CRYPTO_PCOMP=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 -+CONFIG_CRYPTO_MANAGER2=y -+CONFIG_CRYPTO_GF128MUL=m -+CONFIG_CRYPTO_NULL=m -+CONFIG_CRYPTO_WORKQUEUE=y -+CONFIG_CRYPTO_CRYPTD=m -+CONFIG_CRYPTO_AUTHENC=m -+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 -+CONFIG_CRYPTO_CCM=m -+CONFIG_CRYPTO_GCM=m -+CONFIG_CRYPTO_SEQIV=m - - # - # 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_CTR=m -+CONFIG_CRYPTO_CTS=m -+CONFIG_CRYPTO_ECB=y -+CONFIG_CRYPTO_LRW=m - CONFIG_CRYPTO_PCBC=m --# CONFIG_CRYPTO_XTS is not set -+CONFIG_CRYPTO_XTS=m - - # - # Hash modes - # --# CONFIG_CRYPTO_HMAC is not set --# CONFIG_CRYPTO_XCBC is not set -+CONFIG_CRYPTO_HMAC=m -+CONFIG_CRYPTO_XCBC=m -+# CONFIG_CRYPTO_VMAC is not set - - # - # Digest - # --# CONFIG_CRYPTO_CRC32C is not set --# CONFIG_CRYPTO_MD4 is not set -+CONFIG_CRYPTO_CRC32C=y -+CONFIG_CRYPTO_GHASH=m -+CONFIG_CRYPTO_MD4=m - CONFIG_CRYPTO_MD5=y --# CONFIG_CRYPTO_MICHAEL_MIC is not set --# CONFIG_CRYPTO_RMD128 is not set --# CONFIG_CRYPTO_RMD160 is not set --# CONFIG_CRYPTO_RMD256 is not set --# CONFIG_CRYPTO_RMD320 is not set --# CONFIG_CRYPTO_SHA1 is not set --# CONFIG_CRYPTO_SHA256 is not set --# CONFIG_CRYPTO_SHA512 is not set --# CONFIG_CRYPTO_TGR192 is not set --# CONFIG_CRYPTO_WP512 is not set -+CONFIG_CRYPTO_MICHAEL_MIC=y -+CONFIG_CRYPTO_RMD128=m -+CONFIG_CRYPTO_RMD160=m -+CONFIG_CRYPTO_RMD256=m -+CONFIG_CRYPTO_RMD320=m -+CONFIG_CRYPTO_SHA1=m -+CONFIG_CRYPTO_SHA256=m -+CONFIG_CRYPTO_SHA512=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_WP512=m - - # - # Ciphers - # --# CONFIG_CRYPTO_AES is not set --# CONFIG_CRYPTO_ANUBIS is not set --# CONFIG_CRYPTO_ARC4 is not set --# 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_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 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 -+CONFIG_CRYPTO_FCRYPT=m -+CONFIG_CRYPTO_KHAZAD=m -+CONFIG_CRYPTO_SALSA20=m -+CONFIG_CRYPTO_SEED=m -+CONFIG_CRYPTO_SERPENT=m -+CONFIG_CRYPTO_TEA=m -+CONFIG_CRYPTO_TWOFISH=m -+CONFIG_CRYPTO_TWOFISH_COMMON=m - - # - # Compression - # --# CONFIG_CRYPTO_DEFLATE is not set --# CONFIG_CRYPTO_LZO is not set -+CONFIG_CRYPTO_DEFLATE=y -+# CONFIG_CRYPTO_ZLIB is not set -+CONFIG_CRYPTO_LZO=y -+ -+# -+# Random Number Generation -+# -+CONFIG_CRYPTO_ANSI_CPRNG=m - CONFIG_CRYPTO_HW=y -+CONFIG_BINARY_PRINTF=y - - # - # Library routines - # - CONFIG_BITREVERSE=y --# CONFIG_GENERIC_FIND_FIRST_BIT is not set --# CONFIG_GENERIC_FIND_NEXT_BIT is not set -+CONFIG_GENERIC_FIND_LAST_BIT=y - CONFIG_CRC_CCITT=y --# CONFIG_CRC16 is not set --# CONFIG_CRC_T10DIF is not set --# CONFIG_CRC_ITU_T is not set -+CONFIG_CRC16=y -+CONFIG_CRC_T10DIF=y -+CONFIG_CRC_ITU_T=y - CONFIG_CRC32=y --# CONFIG_CRC7 is not set -+CONFIG_CRC7=y - CONFIG_LIBCRC32C=y - CONFIG_ZLIB_INFLATE=y - CONFIG_ZLIB_DEFLATE=y --CONFIG_PLIST=y -+CONFIG_LZO_COMPRESS=y -+CONFIG_LZO_DECOMPRESS=y -+CONFIG_DECOMPRESS_GZIP=y -+CONFIG_TEXTSEARCH=y -+CONFIG_TEXTSEARCH_KMP=m -+CONFIG_TEXTSEARCH_BM=m -+CONFIG_TEXTSEARCH_FSM=m - CONFIG_HAS_IOMEM=y - CONFIG_HAS_IOPORT=y - CONFIG_HAS_DMA=y -+CONFIG_NLATTR=y --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch b/recipes/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch new file mode 100644 index 0000000000..a8540c4ce5 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch @@ -0,0 +1,90 @@ +From f769159cae4d1ae42589d180ac8a376ac3ad687f Mon Sep 17 00:00:00 2001 +From: Ajay Kumar Gupta +Date: Wed, 14 Apr 2010 16:08:37 +0530 +Subject: [PATCH 42/43] musb: allow host io without gadget module + +Signed-off-by: Ajay Kumar Gupta +--- + drivers/usb/musb/musb_core.c | 14 +++++++++----- + drivers/usb/musb/musb_gadget.c | 26 -------------------------- + 2 files changed, 9 insertions(+), 31 deletions(-) + +diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c +index 98874c5..a448fa6 100644 +--- a/drivers/usb/musb/musb_core.c ++++ b/drivers/usb/musb/musb_core.c +@@ -2101,10 +2101,12 @@ bad_config: + * (We expect the ID pin to be forcibly grounded!!) + * Otherwise, wait till the gadget driver hooks up. + */ +- if (!is_otg_enabled(musb) && is_host_enabled(musb)) { +- MUSB_HST_MODE(musb); +- musb->xceiv->default_a = 1; +- musb->xceiv->state = OTG_STATE_A_IDLE; ++ if (is_host_enabled(musb)) { ++ if (!is_otg_enabled(musb)) { ++ MUSB_HST_MODE(musb); ++ musb->xceiv->default_a = 1; ++ musb->xceiv->state = OTG_STATE_A_IDLE; ++ } + + status = usb_add_hcd(musb_to_hcd(musb), -1, 0); + +@@ -2115,7 +2117,9 @@ bad_config: + & MUSB_DEVCTL_BDEVICE + ? 'B' : 'A')); + +- } else /* peripheral is enabled */ { ++ } ++ /* peripheral is enabled */ ++ if (is_peripheral_enabled(musb)) { + MUSB_DEV_MODE(musb); + musb->xceiv->default_a = 0; + musb->xceiv->state = OTG_STATE_B_IDLE; +diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c +index c0e2efc..e0a6015 100644 +--- a/drivers/usb/musb/musb_gadget.c ++++ b/drivers/usb/musb/musb_gadget.c +@@ -1765,24 +1765,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) + otg_set_peripheral(musb->xceiv, &musb->g); + + spin_unlock_irqrestore(&musb->lock, flags); +- +- if (is_otg_enabled(musb)) { +- DBG(3, "OTG startup...\n"); +- +- /* REVISIT: funcall to other code, which also +- * handles power budgeting ... this way also +- * ensures HdrcStart is indirectly called. +- */ +- retval = usb_add_hcd(musb_to_hcd(musb), -1, 0); +- if (retval < 0) { +- DBG(1, "add_hcd failed, %d\n", retval); +- spin_lock_irqsave(&musb->lock, flags); +- otg_set_peripheral(musb->xceiv, NULL); +- musb->gadget_driver = NULL; +- musb->g.dev.driver = NULL; +- spin_unlock_irqrestore(&musb->lock, flags); +- } +- } + } + + return retval; +@@ -1878,14 +1860,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) + retval = -EINVAL; + spin_unlock_irqrestore(&musb->lock, flags); + +- if (is_otg_enabled(musb) && retval == 0) { +- usb_remove_hcd(musb_to_hcd(musb)); +- /* FIXME we need to be able to register another +- * gadget driver here and have everything work; +- * that currently misbehaves. +- */ +- } +- + return retval; + } + EXPORT_SYMBOL(usb_gadget_unregister_driver); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch b/recipes/linux/linux-omap-psp-2.6.32/0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch deleted file mode 100644 index 3788a163b8..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch +++ /dev/null @@ -1,172 +0,0 @@ -From b6238a79746a5022969a5f780a6e51d794ab9c0c Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 3 May 2010 14:41:29 +0200 -Subject: [PATCH 43/45] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot - -And add support for zippy2 ---- - arch/arm/mach-omap2/board-omap3beagle.c | 88 +++++++++++++++++++++++++++---- - 1 files changed, 78 insertions(+), 10 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index 8dfb864..cb2c9c8 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -75,6 +75,8 @@ static struct omap_opp * _omap37x_l3_rate_table = NULL; - - #define NAND_BLOCK_SIZE SZ_128K - -+char expansionboard_name[16]; -+ - #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) - - #include -@@ -87,7 +89,7 @@ static struct omap2_mcspi_device_config enc28j60_spi_chip_info = { - .single_channel = 1, /* 0: slave, 1: master */ - }; - --static struct spi_board_info omap3beagle_spi_board_info[] __initdata = { -+static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = { - { - .modalias = "enc28j60", - .bus_num = 4, -@@ -102,21 +104,62 @@ static void __init omap3beagle_enc28j60_init(void) - if ((gpio_request(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, "ENC28J60_IRQ") == 0) && - (gpio_direction_input(OMAP3BEAGLE_GPIO_ENC28J60_IRQ) == 0)) { - gpio_export(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, 0); -- omap3beagle_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ); -- set_irq_type(omap3beagle_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); -+ omap3beagle_zippy_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ); -+ set_irq_type(omap3beagle_zippy_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); - } else { - printk(KERN_ERR "could not obtain gpio for ENC28J60_IRQ\n"); - return; - } - -- spi_register_board_info(omap3beagle_spi_board_info, -- ARRAY_SIZE(omap3beagle_spi_board_info)); -+ spi_register_board_info(omap3beagle_zippy_spi_board_info, -+ ARRAY_SIZE(omap3beagle_zippy_spi_board_info)); - } - - #else - static inline void __init omap3beagle_enc28j60_init(void) { return; } - #endif - -+#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) -+ -+#include -+#include -+ -+#define OMAP3BEAGLE_GPIO_KS8851_IRQ 157 -+ -+static struct omap2_mcspi_device_config ks8851_spi_chip_info = { -+ .turbo_mode = 0, -+ .single_channel = 1, /* 0: slave, 1: master */ -+}; -+ -+static struct spi_board_info omap3beagle_zippy2_spi_board_info[] __initdata = { -+ { -+ .modalias = "ks8851", -+ .bus_num = 4, -+ .chip_select = 0, -+ .max_speed_hz = 36000000, -+ .controller_data = &ks8851_spi_chip_info, -+ }, -+}; -+ -+static void __init omap3beagle_ks8851_init(void) -+{ -+ if ((gpio_request(OMAP3BEAGLE_GPIO_KS8851_IRQ, "KS8851_IRQ") == 0) && -+ (gpio_direction_input(OMAP3BEAGLE_GPIO_KS8851_IRQ) == 0)) { -+ gpio_export(OMAP3BEAGLE_GPIO_KS8851_IRQ, 0); -+ omap3beagle_zippy2_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_KS8851_IRQ); -+ set_irq_type(omap3beagle_zippy2_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING); -+ } else { -+ printk(KERN_ERR "could not obtain gpio for KS8851_IRQ\n"); -+ return; -+ } -+ -+ spi_register_board_info(omap3beagle_zippy2_spi_board_info, -+ ARRAY_SIZE(omap3beagle_zippy2_spi_board_info)); -+} -+ -+#else -+static inline void __init omap3beagle_ks8851_init(void) { return; } -+#endif - - static struct mtd_partition omap3beagle_nand_partitions[] = { - /* All the partition sizes are listed in terms of NAND block size */ -@@ -281,8 +324,6 @@ static struct twl4030_hsmmc_info mmc[] = { - { - .mmc = 2, - .wires = 4, -- .gpio_wp = 141, -- .gpio_cd = 162, - .transceiver = true, - .ocr_mask = 0x00100000, /* 3.3V */ - }, -@@ -606,7 +647,7 @@ static void __init omap3beagle_flash_init(void) - } - } - --static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { -+static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { - - .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, - .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, -@@ -626,6 +667,15 @@ static struct omap_board_mux board_mux[] __initdata = { - #define board_mux NULL - #endif - -+static int __init expansionboard_setup(char *str) -+{ -+ if (!str) -+ return -EINVAL; -+ strncpy(expansionboard_name, str, 16); -+ printk(KERN_INFO "Beagle expansionboard: %s\n", expansionboard_name); -+ return 0; -+} -+ - static void __init omap3_beagle_init(void) - { - omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); -@@ -639,8 +689,24 @@ static void __init omap3_beagle_init(void) - /* REVISIT leave DVI powered down until it's needed ... */ - gpio_direction_output(170, true); - -- omap3beagle_enc28j60_init(); -- -+ if(!strcmp(expansionboard_name, "zippy")) -+ { -+ printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n"); -+ omap3beagle_enc28j60_init(); -+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n"); -+ mmc[1].gpio_wp = 141; -+ mmc[1].gpio_cd = 162; -+ } -+ -+ if(!strcmp(expansionboard_name, "zippy2")) -+ { -+ printk(KERN_INFO "Beagle expansionboard: initializing ks_8851\n"); -+ omap3beagle_ks8851_init(); -+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n"); -+ mmc[1].gpio_wp = 141; -+ mmc[1].gpio_cd = 162; -+ } -+ - usb_musb_init(); - usb_ehci_init(&ehci_pdata); - omap3beagle_flash_init(); -@@ -657,6 +723,8 @@ static void __init omap3_beagle_map_io(void) - omap2_map_common_io(); - } - -+early_param("buddy", expansionboard_setup); -+ - MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") - /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */ - .phys_io = 0x48000000, --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch b/recipes/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch new file mode 100644 index 0000000000..9fb0ec9687 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch @@ -0,0 +1,59 @@ +From 9bd77da63888873c8ebb0c6a70835f2c432a0337 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 26 Apr 2010 11:17:26 -0700 +Subject: [PATCH 43/43] MTD: silence ecc errors on mtdblock0 + +mtdblock0 is the x-load partition, which uses hw ecc +this confuses linux, which uses sw ecc +this patch silences ecc error messages when linux peeks into mtdblock0 +* not for upstream submission * +--- + block/blk-core.c | 3 ++- + drivers/mtd/nand/nand_ecc.c | 2 +- + fs/buffer.c | 3 ++- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/block/blk-core.c b/block/blk-core.c +index 718897e..c526fde 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -1970,7 +1970,8 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes) + req->errors = 0; + + if (error && (blk_fs_request(req) && !(req->cmd_flags & REQ_QUIET))) { +- printk(KERN_ERR "end_request: I/O error, dev %s, sector %llu\n", ++ if (req->rq_disk && (strcmp(req->rq_disk->disk_name, "mtdblock0") != 0)) ++ printk(KERN_ERR "end_request: I/O error, dev %s, sector %llu\n", + req->rq_disk ? req->rq_disk->disk_name : "?", + (unsigned long long)blk_rq_pos(req)); + } +diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c +index 92320a6..2b86b6d 100644 +--- a/drivers/mtd/nand/nand_ecc.c ++++ b/drivers/mtd/nand/nand_ecc.c +@@ -492,7 +492,7 @@ int __nand_correct_data(unsigned char *buf, + if ((bitsperbyte[b0] + bitsperbyte[b1] + bitsperbyte[b2]) == 1) + return 1; /* error in ecc data; no action needed */ + +- printk(KERN_ERR "uncorrectable error : "); ++// printk(KERN_ERR "uncorrectable error : "); + return -1; + } + EXPORT_SYMBOL(__nand_correct_data); +diff --git a/fs/buffer.c b/fs/buffer.c +index 6fa5302..27b3103 100644 +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -114,7 +114,8 @@ static int quiet_error(struct buffer_head *bh) + static void buffer_io_error(struct buffer_head *bh) + { + char b[BDEVNAME_SIZE]; +- printk(KERN_ERR "Buffer I/O error on device %s, logical block %Lu\n", ++ if (strcmp(bdevname(bh->b_bdev, b), "mtdblock0") != 0) ++ printk(KERN_ERR "Buffer I/O error on device %s, logical block %Lu\n", + bdevname(bh->b_bdev, b), + (unsigned long long)bh->b_blocknr); + } +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch b/recipes/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch deleted file mode 100644 index a8e351455e..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 1608895c3901aa1a857fb931d56054dec120d232 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 3 May 2010 21:38:34 +0200 -Subject: [PATCH 44/45] ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard - -This really needs a for loop, patches welcome ---- - arch/arm/mach-omap2/board-omap3beagle.c | 33 ++++++++++++++++++++++++++++++- - 1 files changed, 32 insertions(+), 1 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index cb2c9c8..4dbb109 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -706,7 +706,38 @@ static void __init omap3_beagle_init(void) - mmc[1].gpio_wp = 141; - mmc[1].gpio_cd = 162; - } -- -+ -+ if(!strcmp(expansionboard_name, "trainer")) -+ { -+ printk(KERN_INFO "Beagle expansionboard: exporting GPIOs 130-141,162 to userspace\n"); -+ gpio_request(130, "sysfs"); -+ gpio_export(130, 1); -+ gpio_request(131, "sysfs"); -+ gpio_export(131, 1); -+ gpio_request(132, "sysfs"); -+ gpio_export(132, 1); -+ gpio_request(133, "sysfs"); -+ gpio_export(133, 1); -+ gpio_request(134, "sysfs"); -+ gpio_export(134, 1); -+ gpio_request(135, "sysfs"); -+ gpio_export(135, 1); -+ gpio_request(136, "sysfs"); -+ gpio_export(136, 1); -+ gpio_request(137, "sysfs"); -+ gpio_export(137, 1); -+ gpio_request(138, "sysfs"); -+ gpio_export(138, 1); -+ gpio_request(139, "sysfs"); -+ gpio_export(139, 1); -+ gpio_request(140, "sysfs"); -+ gpio_export(140, 1); -+ gpio_request(141, "sysfs"); -+ gpio_export(141, 1); -+ gpio_request(162, "sysfs"); -+ gpio_export(162, 1); -+ } -+ - usb_musb_init(); - usb_ehci_init(&ehci_pdata); - omap3beagle_flash_init(); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch b/recipes/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch deleted file mode 100644 index 205cb7e311..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 5544b0a8c422e75c5d372232b494a4652008f048 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Mon, 3 May 2010 22:31:34 +0200 -Subject: [PATCH 45/45] ARM: OMAP: beagleboard: initialize ds1307 and eeprom only for zippy and zippy2 - ---- - arch/arm/mach-omap2/board-omap3beagle.c | 39 +++++++++++++++++++++++++++--- - 1 files changed, 35 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c -index 4dbb109..dd830b1 100644 ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -501,24 +501,55 @@ static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { - }, - }; - -+ -+#if defined(CONFIG_EEPROM_AT24) || defined(CONFIG_EEPROM_AT24_MODULE) -+#include -+ -+static struct at24_platform_data m24c01 = { -+ .byte_len = SZ_1K / 8, -+ .page_size = 16, -+}; -+ - #if defined(CONFIG_RTC_DRV_DS1307) || \ - defined(CONFIG_RTC_DRV_DS1307_MODULE) - --static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { -+static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { - { - I2C_BOARD_INFO("ds1307", 0x68), - }, -+ { -+ I2C_BOARD_INFO("24c01", 0x50), -+ .platform_data = &m24c01, -+ }, - }; - #else --static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; -+static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { -+ { -+ I2C_BOARD_INFO("24c01", 0x50), -+ .platform_data = &m24c01, -+ }, -+}; -+#endif -+#else -+static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; - #endif - -+static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; -+ - static int __init omap3_beagle_i2c_init(void) - { - omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo, - ARRAY_SIZE(beagle_i2c1_boardinfo)); -- omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, -- ARRAY_SIZE(beagle_i2c2_boardinfo)); -+ if(!strcmp(expansionboard_name, "zippy") || !strcmp(expansionboard_name, "zippy2")) -+ { -+ printk(KERN_INFO "Beagle expansionboard: registering i2c2 bus for zippy/zippy2\n"); -+ omap_register_i2c_bus(2, 400, beagle_zippy_i2c2_boardinfo, -+ ARRAY_SIZE(beagle_zippy_i2c2_boardinfo)); -+ } else -+ { -+ omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, -+ ARRAY_SIZE(beagle_i2c2_boardinfo)); -+ } - /* Bus 3 is attached to the DVI port where devices like the pico DLP - * projector don't work reliably with 400kHz */ - omap_register_i2c_bus(3, 100, NULL, 0); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/beagleboard/defconfig b/recipes/linux/linux-omap-psp-2.6.32/beagleboard/defconfig index a2aeee49b3..86ed6c980e 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/beagleboard/defconfig +++ b/recipes/linux/linux-omap-psp-2.6.32/beagleboard/defconfig @@ -267,7 +267,7 @@ CONFIG_OMAP_PACKAGE_CBB=y CONFIG_MACH_OMAP3_BEAGLE=y # CONFIG_MACH_OMAP_LDP is not set # CONFIG_MACH_OVERO is not set -CONFIG_MACH_OMAP3EVM=y +CONFIG_MACH_OMAP3EVM=n CONFIG_PMIC_TWL4030=y # CONFIG_MACH_OMAP3517EVM is not set # CONFIG_MACH_OMAP3_PANDORA is not set diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch index 70d9b0044a..8988fd8210 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch @@ -1,7 +1,7 @@ -From 512af40b0efa98d9a7a5596fe6b19600d89a58dd Mon Sep 17 00:00:00 2001 +From 0031d3fb2d067f4c46e434f5f5c6c14cef2a83a3 Mon Sep 17 00:00:00 2001 From: Tim Yamin Date: Sat, 11 Apr 2009 13:05:21 -0700 -Subject: [PATCH 01/16] ARM: OMAP: add spi platform devices +Subject: [PATCH 01/17] ARM: OMAP: add spi platform devices --- arch/arm/mach-omap2/devices.c | 32 ++++++++++++++++++++++++++++++++ diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch index c6cf13c2cc..f9c7702e9e 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch @@ -1,7 +1,7 @@ -From f02cd8da4f4dc269b83128e2c42ab664e6619ef8 Mon Sep 17 00:00:00 2001 +From 0c804b06c04a14da575d592c89408537c21fb26b Mon Sep 17 00:00:00 2001 From: Tim Yamin Date: Tue, 23 Mar 2010 09:52:10 +0100 -Subject: [PATCH 02/16] MMA7455L accelerometer driver +Subject: [PATCH 02/17] MMA7455L accelerometer driver --- drivers/input/misc/Kconfig | 9 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch index bd1a50b35f..f8b307ee9d 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch @@ -1,7 +1,7 @@ -From df5573b7c2ed7b0e31be60bddc6b9bc928e78bfe Mon Sep 17 00:00:00 2001 +From 6837800d92947d25e263bf041ebe7db4e804af68 Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 11:41:17 +0100 -Subject: [PATCH 03/16] bq27x00_battery: remove error message output +Subject: [PATCH 03/17] bq27x00_battery: remove error message output --- drivers/power/bq27x00_battery.c | 5 ----- diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch index 6f871ce649..759525f283 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch @@ -1,7 +1,7 @@ -From e1869b08e330d50fd0b57cf0f9ee86eb24d83ec3 Mon Sep 17 00:00:00 2001 +From 829d500667448b7ea9465615261a988adc3aa645 Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 11:42:45 +0100 -Subject: [PATCH 04/16] bq27x00_battery: add charged gpio +Subject: [PATCH 04/17] bq27x00_battery: add charged gpio --- drivers/power/bq27x00_battery.c | 21 +++++++++++++++++++++ diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch index a9903ea942..f15e0a2e50 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch @@ -1,7 +1,7 @@ -From 0b859f934499c20b71b7c40fe356ab1c53bf7ade Mon Sep 17 00:00:00 2001 +From e00ae0c0fa35b4b67bbc905581c2c7bde0e29901 Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 13:50:38 +0100 -Subject: [PATCH 05/16] adf7846: add more debugging +Subject: [PATCH 05/17] adf7846: add more debugging --- drivers/input/touchscreen/ads7846.c | 73 +++++++++++++++++++++++++++++++++++ diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch index fff70be27c..63a4ebbf7c 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch @@ -1,7 +1,7 @@ -From 8ccf65bc56ba2f71a4420754969b522fd86945a2 Mon Sep 17 00:00:00 2001 +From 5f227b8aa6083437e2907ca621159228a4a24d9a Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 13:50:45 +0100 -Subject: [PATCH 06/16] ads7846: read max/mix x/y from pdata +Subject: [PATCH 06/17] ads7846: read max/mix x/y from pdata --- drivers/input/touchscreen/ads7846.c | 5 +++-- diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch index 5994529edd..a69c7836b9 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch @@ -1,7 +1,7 @@ -From 68e4eb5c9690531fa04cc9e0621854b03369d78b Mon Sep 17 00:00:00 2001 +From 7330c695afad64eef62c525cb8e54913265a3b39 Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 13:50:52 +0100 -Subject: [PATCH 07/16] ads7846: add settling delay to pdata +Subject: [PATCH 07/17] ads7846: add settling delay to pdata --- drivers/input/touchscreen/ads7846.c | 22 ++++++++++++++++++++++ diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch index db1d7a63ea..5d6ff3fbc2 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch @@ -1,7 +1,7 @@ -From b5fbb6c23770e496250e5cbdaad7b7b6120b86af Mon Sep 17 00:00:00 2001 +From 07396a332c4f3d6ed4ff498cb08d0338c98dc612 Mon Sep 17 00:00:00 2001 From: Tim Yamin Date: Mon, 20 Apr 2009 20:29:11 -0700 -Subject: [PATCH 08/16] DSS2: OMAPFB: Translate X/Y coordinates for the video planes when rotating. +Subject: [PATCH 08/17] DSS2: OMAPFB: Translate X/Y coordinates for the video planes when rotating. When rotating the video planes, translate the X/Y coordinates such that a [0,0] from userspace always maps to the correct upper left corner of diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch new file mode 100644 index 0000000000..5130598422 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch @@ -0,0 +1,52 @@ +From fc2e9ddb93cb026ed10900d794dd1db11191dc24 Mon Sep 17 00:00:00 2001 +From: Tim Yamin +Date: Fri, 12 Mar 2010 13:57:38 +0100 +Subject: [PATCH 09/17] DSS2: Fix scaling checks when rotation is 90 or 270 degrees. + +--- + drivers/video/omap2/dss/dispc.c | 25 +++++++++++++++++++------ + 1 files changed, 19 insertions(+), 6 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index 1b38c49..d648c08 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -1563,16 +1563,29 @@ static int _dispc_setup_plane(enum omap_plane plane, + } + } else { + /* video plane */ +- ++ u8 error = 0; + unsigned long fclk = 0; + +- if (out_width < width / maxdownscale || +- out_width > width * 8) +- return -EINVAL; ++ if(rotation == 1 || rotation == 3) ++ { ++ if (out_width < height / maxdownscale || out_width > height * 8) ++ error = 1; ++ ++ if (out_height < width / maxdownscale || out_height > width * 8) ++ error = 1; ++ } else { ++ if (out_width < width / maxdownscale || out_width > width * 8) ++ error = 1; + +- if (out_height < height / maxdownscale || +- out_height > height * 8) ++ if (out_height < height / maxdownscale || out_height > height * 8) ++ error = 1; ++ } ++ ++ if(error != 0) ++ { ++ printk("DSS: Unable to down/up scale video plane\n"); + return -EINVAL; ++ } + + switch (color_mode) { + case OMAP_DSS_COLOR_RGBX32: +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch deleted file mode 100644 index 89d5285688..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 15ef52dc7a6d92e50ed9437ca6ca4bdcbd62faa6 Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Wed, 31 Mar 2010 11:32:23 +0200 -Subject: [PATCH 09/16] DSS2: fix rotation offsets - ---- - drivers/video/omap2/omapfb/omapfb-main.c | 34 +++++++++++++++++++++++++---- - 1 files changed, 29 insertions(+), 5 deletions(-) - -diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c -index c2c9663..1b116b6 100644 ---- a/drivers/video/omap2/omapfb/omapfb-main.c -+++ b/drivers/video/omap2/omapfb/omapfb-main.c -@@ -859,12 +859,14 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, - u32 data_start_p; - void __iomem *data_start_v; - struct omap_overlay_info info; -- int xres, yres; -+ int xres, yres, xoff, yoff; - int screen_width; - int mirror; - int rotation = var->rotate; - int i; - -+ xoff = var->xoffset; -+ yoff = var->yoffset; - for (i = 0; i < ofbi->num_overlays; i++) { - if (ovl != ofbi->overlays[i]) - continue; -@@ -893,10 +895,32 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl, - data_start_v = omapfb_get_region_vaddr(ofbi, 0); - } - -- if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) -- offset = calc_rotation_offset_vrfb(var, fix, 0); -- else -- offset = calc_rotation_offset_dma(var, fix, rotation); -+ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_UD) { -+ if (var->yres < var->yres_virtual) { -+ if (var->yoffset) -+ yoff = 0; -+ else -+ yoff = var->yres_virtual - var->yres; -+ } -+ } -+ -+ if (ofbi->rotation == FB_ROTATE_CCW || ofbi->rotation == FB_ROTATE_UD) { -+ if (var->xres < var->xres_virtual) { -+ if (var->xoffset) -+ xoff = 0; -+ else -+ xoff = var->xres_virtual - var->xres; -+ } -+ } -+ -+ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) { -+ offset = ((xoff * fix->line_length) >> 1) + -+ ((yoff * var->bits_per_pixel) >> 2); -+ } else -+ { -+ offset = yoff * fix->line_length + -+ ((xoff * var->bits_per_pixel) >> 3); -+ } - - data_start_p += offset; - data_start_v += offset; --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch deleted file mode 100644 index 58d084e3cf..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 7986ce08b1f7ed40c815620853fe76ce3deeb7c5 Mon Sep 17 00:00:00 2001 -From: Tim Yamin -Date: Fri, 12 Mar 2010 13:57:38 +0100 -Subject: [PATCH 10/16] DSS2: Fix scaling checks when rotation is 90 or 270 degrees. - ---- - drivers/video/omap2/dss/dispc.c | 25 +++++++++++++++++++------ - 1 files changed, 19 insertions(+), 6 deletions(-) - -diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c -index 1b38c49..d648c08 100644 ---- a/drivers/video/omap2/dss/dispc.c -+++ b/drivers/video/omap2/dss/dispc.c -@@ -1563,16 +1563,29 @@ static int _dispc_setup_plane(enum omap_plane plane, - } - } else { - /* video plane */ -- -+ u8 error = 0; - unsigned long fclk = 0; - -- if (out_width < width / maxdownscale || -- out_width > width * 8) -- return -EINVAL; -+ if(rotation == 1 || rotation == 3) -+ { -+ if (out_width < height / maxdownscale || out_width > height * 8) -+ error = 1; -+ -+ if (out_height < width / maxdownscale || out_height > width * 8) -+ error = 1; -+ } else { -+ if (out_width < width / maxdownscale || out_width > width * 8) -+ error = 1; - -- if (out_height < height / maxdownscale || -- out_height > height * 8) -+ if (out_height < height / maxdownscale || out_height > height * 8) -+ error = 1; -+ } -+ -+ if(error != 0) -+ { -+ printk("DSS: Unable to down/up scale video plane\n"); - return -EINVAL; -+ } - - switch (color_mode) { - case OMAP_DSS_COLOR_RGBX32: --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch new file mode 100644 index 0000000000..aa3b359c65 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch @@ -0,0 +1,339 @@ +From 0f651f19bf9cfecbb76d6f0b251e3d8395f306b8 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 14:39:07 +0100 +Subject: [PATCH 10/17] add touchbook hid driver + +--- + drivers/hid/Kconfig | 7 ++ + drivers/hid/Makefile | 1 + + drivers/hid/hid-ai.c | 260 ++++++++++++++++++++++++++++++++++++++++++++++++ + drivers/hid/hid-core.c | 1 + + drivers/hid/hid-ids.h | 3 + + 5 files changed, 272 insertions(+), 0 deletions(-) + create mode 100644 drivers/hid/hid-ai.c + +diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig +index 24d90ea..3760565 100644 +--- a/drivers/hid/Kconfig ++++ b/drivers/hid/Kconfig +@@ -62,6 +62,13 @@ config HID_A4TECH + ---help--- + Support for A4 tech X5 and WOP-35 / Trust 450L mice. + ++config HID_AI ++ tristate "Always Innovating" if EMBEDDED ++ depends on USB_HID ++ default !EMBEDDED ++ ---help--- ++ Support for Always Innovating Touch Book. ++ + config HID_APPLE + tristate "Apple" if EMBEDDED + depends on (USB_HID || BT_HIDP) +diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile +index 0de2dff..1787952 100644 +--- a/drivers/hid/Makefile ++++ b/drivers/hid/Makefile +@@ -20,6 +20,7 @@ ifdef CONFIG_LOGIRUMBLEPAD2_FF + endif + + obj-$(CONFIG_HID_A4TECH) += hid-a4tech.o ++obj-$(CONFIG_HID_AI) += hid-ai.o + obj-$(CONFIG_HID_APPLE) += hid-apple.o + obj-$(CONFIG_HID_BELKIN) += hid-belkin.o + obj-$(CONFIG_HID_CHERRY) += hid-cherry.o +diff --git a/drivers/hid/hid-ai.c b/drivers/hid/hid-ai.c +new file mode 100644 +index 0000000..83aecaf +--- /dev/null ++++ b/drivers/hid/hid-ai.c +@@ -0,0 +1,260 @@ ++/* ++ * USB HID quirks support for the Always Innovating Touch Book ++ * Code borrowed from hid-apple.c ++ * ++ * Copyright (c) 2009 Tim Yamin ++ */ ++ ++/* ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the Free ++ * Software Foundation; either version 2 of the License, or (at your option) ++ * any later version. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include "hid-ids.h" ++ ++struct ai_sc { ++ unsigned long quirks; ++ unsigned int fn_on; ++ DECLARE_BITMAP(pressed_fn, KEY_CNT); ++}; ++ ++struct ai_key_translation { ++ u16 from; ++ u16 to; ++ u8 flags; ++}; ++ ++static struct ai_key_translation ai_fn_keys[] = { ++ { KEY_F6, KEY_BRIGHTNESSDOWN }, ++ { KEY_F7, KEY_BRIGHTNESSUP }, ++ ++ { KEY_F8, KEY_MUTE }, ++ { KEY_F9, KEY_VOLUMEDOWN }, ++ { KEY_F10, KEY_VOLUMEUP }, ++ ++ { KEY_UP, KEY_PAGEUP }, ++ { KEY_DOWN, KEY_PAGEDOWN }, ++ { } ++}; ++ ++extern unsigned int ai_revision; ++int swap_key = 0; ++ ++static struct ai_key_translation *ai_find_translation( ++ struct ai_key_translation *table, u16 from) ++{ ++ struct ai_key_translation *trans; ++ ++ /* Look for the translation */ ++ for (trans = table; trans->from; trans++) ++ if (trans->from == from) ++ return trans; ++ ++ return NULL; ++} ++ ++static int ai_event(struct hid_device *hid, struct hid_field *field, ++ struct hid_usage *usage, __s32 value) ++{ ++ int do_translate; ++ ++ struct input_dev *input = field->hidinput->input; ++ struct ai_sc *asc = hid_get_drvdata(hid); ++ struct ai_key_translation *trans; ++ ++ if (swap_key && usage->code == KEY_RIGHTSHIFT) { ++ input_event(input, usage->type, KEY_END, value); ++ return 1; ++ } ++ ++ if (swap_key && usage->code == KEY_END) { ++ input_event(input, usage->type, KEY_RIGHTSHIFT, value); ++ return 1; ++ } ++ ++ if (usage->code == KEY_POWER) { ++ asc->fn_on = !!value; ++ input_event(input, usage->type, usage->code, value); ++ return 1; ++ } ++ ++ trans = ai_find_translation(ai_fn_keys, usage->code); ++ if (trans) { ++ if (test_bit(usage->code, asc->pressed_fn)) ++ do_translate = 1; ++ else ++ do_translate = asc->fn_on; ++ ++ if (do_translate) { ++ if (value) ++ set_bit(usage->code, asc->pressed_fn); ++ else ++ clear_bit(usage->code, asc->pressed_fn); ++ ++ input_event(input, usage->type, trans->to, ++ value); ++ ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++static int ai_input_mapping(struct hid_device *hdev, struct hid_input *hi, ++ struct hid_field *field, struct hid_usage *usage, ++ unsigned long **bit, int *max) ++{ ++ struct ai_key_translation *trans; ++ ++ /* Enable all other keys */ ++ for (trans = ai_fn_keys; trans->from; trans++) ++ set_bit(trans->to, hi->input->keybit); ++ ++ return 0; ++} ++ ++static ssize_t show_swap_key(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return snprintf(buf, PAGE_SIZE, "%d\n", swap_key); ++} ++ ++static ssize_t store_swap_key(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ swap_key = simple_strtoul(buf, NULL, 0); ++ ++ if (swap_key != 0 && swap_key != 1) { ++ swap_key = 0; ++ return -EINVAL; ++ } ++ ++ return count; ++} ++ ++static struct device_attribute ai_hid_attrs[] = { ++ __ATTR(swap_key, S_IRUGO | S_IWUGO, show_swap_key, store_swap_key), ++}; ++ ++int ai_create_sysfs(struct hid_device *hdev) ++{ ++ int i; ++ int r; ++ ++ for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) { ++ r = device_create_file(&hdev->dev, ++ &ai_hid_attrs[i]); ++ ++ if (r) { ++ dev_err(&hdev->dev, "failed to create sysfs file\n"); ++ return r; ++ } ++ } ++ ++ return 0; ++} ++ ++void ai_remove_sysfs(struct hid_device *hdev) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) ++ device_remove_file(&hdev->dev, ++ &ai_hid_attrs[i]); ++} ++ ++static int ai_probe(struct hid_device *hdev, ++ const struct hid_device_id *id) ++{ ++ unsigned long quirks = id->driver_data; ++ struct ai_sc *asc; ++ unsigned int connect_mask = HID_CONNECT_DEFAULT; ++ int ret; ++ ++ asc = kzalloc(sizeof(*asc), GFP_KERNEL); ++ if (asc == NULL) { ++ dev_err(&hdev->dev, "can't alloc ai descriptor\n"); ++ return -ENOMEM; ++ } ++ ++ asc->quirks = quirks; ++ hid_set_drvdata(hdev, asc); ++ ++ ret = hid_parse(hdev); ++ if (ret) { ++ dev_err(&hdev->dev, "parse failed\n"); ++ goto err_free; ++ } ++ ++ ret = ai_create_sysfs(hdev); ++ if (ret) { ++ dev_err(&hdev->dev, "failed to create sysfs entries\n"); ++ goto err_free; ++ } ++ ++ swap_key = (ai_revision >= 4) ? 1 : 0; ++ ++ ret = hid_hw_start(hdev, connect_mask); ++ if (ret) { ++ dev_err(&hdev->dev, "hw start failed\n"); ++ goto err_free; ++ } ++ ++ return 0; ++err_free: ++ kfree(asc); ++ return ret; ++} ++ ++static void ai_remove(struct hid_device *hdev) ++{ ++ hid_hw_stop(hdev); ++ kfree(hid_get_drvdata(hdev)); ++ ai_remove_sysfs(hdev); ++} ++ ++static const struct hid_device_id ai_devices[] = { ++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, ++ { } ++}; ++ ++MODULE_DEVICE_TABLE(hid, ai_devices); ++ ++static struct hid_driver ai_driver = { ++ .name = "ai", ++ .id_table = ai_devices, ++ .probe = ai_probe, ++ .remove = ai_remove, ++ .event = ai_event, ++ .input_mapping = ai_input_mapping, ++}; ++ ++static int ai_init(void) ++{ ++ int ret; ++ ++ ret = hid_register_driver(&ai_driver); ++ if (ret) ++ printk(KERN_ERR "can't register ai driver\n"); ++ ++ return ret; ++} ++ ++static void ai_exit(void) ++{ ++ hid_unregister_driver(&ai_driver); ++} ++ ++module_init(ai_init); ++module_exit(ai_exit); ++MODULE_LICENSE("GPL"); ++HID_COMPAT_LOAD_DRIVER(ai); +diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c +index 80792d3..f6b5960 100644 +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -1250,6 +1250,7 @@ EXPORT_SYMBOL_GPL(hid_disconnect); + static const struct hid_device_id hid_blacklist[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index 3839340..5a0127d 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -54,6 +54,9 @@ + #define USB_VENDOR_ID_ALPS 0x0433 + #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 + ++#define USB_VENDOR_ID_AI 0xa110 ++#define USB_DEVICE_ID_AI_TOUCH_BOOK 0x0002 ++ + #define USB_VENDOR_ID_APPLE 0x05ac + #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 + #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch new file mode 100644 index 0000000000..c6d3678751 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch @@ -0,0 +1,25 @@ +From b46a494e0c02450e412db221d75446671b6ef511 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 14:41:05 +0100 +Subject: [PATCH 11/17] Make backlight controls accessible to users + +--- + drivers/video/backlight/backlight.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c +index 6615ac7..7898707 100644 +--- a/drivers/video/backlight/backlight.c ++++ b/drivers/video/backlight/backlight.c +@@ -228,7 +228,7 @@ static void bl_device_release(struct device *dev) + + static struct device_attribute bl_device_attributes[] = { + __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), +- __ATTR(brightness, 0644, backlight_show_brightness, ++ __ATTR(brightness, 0666, backlight_show_brightness, + backlight_store_brightness), + __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, + NULL), +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch deleted file mode 100644 index 7dca1ddeda..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch +++ /dev/null @@ -1,339 +0,0 @@ -From 935a7f21581403bd791729ae1cc1b49b10561fa6 Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Fri, 12 Mar 2010 14:39:07 +0100 -Subject: [PATCH 11/16] add touchbook hid driver - ---- - drivers/hid/Kconfig | 7 ++ - drivers/hid/Makefile | 1 + - drivers/hid/hid-ai.c | 260 ++++++++++++++++++++++++++++++++++++++++++++++++ - drivers/hid/hid-core.c | 1 + - drivers/hid/hid-ids.h | 3 + - 5 files changed, 272 insertions(+), 0 deletions(-) - create mode 100644 drivers/hid/hid-ai.c - -diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig -index 24d90ea..3760565 100644 ---- a/drivers/hid/Kconfig -+++ b/drivers/hid/Kconfig -@@ -62,6 +62,13 @@ config HID_A4TECH - ---help--- - Support for A4 tech X5 and WOP-35 / Trust 450L mice. - -+config HID_AI -+ tristate "Always Innovating" if EMBEDDED -+ depends on USB_HID -+ default !EMBEDDED -+ ---help--- -+ Support for Always Innovating Touch Book. -+ - config HID_APPLE - tristate "Apple" if EMBEDDED - depends on (USB_HID || BT_HIDP) -diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile -index 0de2dff..1787952 100644 ---- a/drivers/hid/Makefile -+++ b/drivers/hid/Makefile -@@ -20,6 +20,7 @@ ifdef CONFIG_LOGIRUMBLEPAD2_FF - endif - - obj-$(CONFIG_HID_A4TECH) += hid-a4tech.o -+obj-$(CONFIG_HID_AI) += hid-ai.o - obj-$(CONFIG_HID_APPLE) += hid-apple.o - obj-$(CONFIG_HID_BELKIN) += hid-belkin.o - obj-$(CONFIG_HID_CHERRY) += hid-cherry.o -diff --git a/drivers/hid/hid-ai.c b/drivers/hid/hid-ai.c -new file mode 100644 -index 0000000..83aecaf ---- /dev/null -+++ b/drivers/hid/hid-ai.c -@@ -0,0 +1,260 @@ -+/* -+ * USB HID quirks support for the Always Innovating Touch Book -+ * Code borrowed from hid-apple.c -+ * -+ * Copyright (c) 2009 Tim Yamin -+ */ -+ -+/* -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the Free -+ * Software Foundation; either version 2 of the License, or (at your option) -+ * any later version. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include "hid-ids.h" -+ -+struct ai_sc { -+ unsigned long quirks; -+ unsigned int fn_on; -+ DECLARE_BITMAP(pressed_fn, KEY_CNT); -+}; -+ -+struct ai_key_translation { -+ u16 from; -+ u16 to; -+ u8 flags; -+}; -+ -+static struct ai_key_translation ai_fn_keys[] = { -+ { KEY_F6, KEY_BRIGHTNESSDOWN }, -+ { KEY_F7, KEY_BRIGHTNESSUP }, -+ -+ { KEY_F8, KEY_MUTE }, -+ { KEY_F9, KEY_VOLUMEDOWN }, -+ { KEY_F10, KEY_VOLUMEUP }, -+ -+ { KEY_UP, KEY_PAGEUP }, -+ { KEY_DOWN, KEY_PAGEDOWN }, -+ { } -+}; -+ -+extern unsigned int ai_revision; -+int swap_key = 0; -+ -+static struct ai_key_translation *ai_find_translation( -+ struct ai_key_translation *table, u16 from) -+{ -+ struct ai_key_translation *trans; -+ -+ /* Look for the translation */ -+ for (trans = table; trans->from; trans++) -+ if (trans->from == from) -+ return trans; -+ -+ return NULL; -+} -+ -+static int ai_event(struct hid_device *hid, struct hid_field *field, -+ struct hid_usage *usage, __s32 value) -+{ -+ int do_translate; -+ -+ struct input_dev *input = field->hidinput->input; -+ struct ai_sc *asc = hid_get_drvdata(hid); -+ struct ai_key_translation *trans; -+ -+ if (swap_key && usage->code == KEY_RIGHTSHIFT) { -+ input_event(input, usage->type, KEY_END, value); -+ return 1; -+ } -+ -+ if (swap_key && usage->code == KEY_END) { -+ input_event(input, usage->type, KEY_RIGHTSHIFT, value); -+ return 1; -+ } -+ -+ if (usage->code == KEY_POWER) { -+ asc->fn_on = !!value; -+ input_event(input, usage->type, usage->code, value); -+ return 1; -+ } -+ -+ trans = ai_find_translation(ai_fn_keys, usage->code); -+ if (trans) { -+ if (test_bit(usage->code, asc->pressed_fn)) -+ do_translate = 1; -+ else -+ do_translate = asc->fn_on; -+ -+ if (do_translate) { -+ if (value) -+ set_bit(usage->code, asc->pressed_fn); -+ else -+ clear_bit(usage->code, asc->pressed_fn); -+ -+ input_event(input, usage->type, trans->to, -+ value); -+ -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+static int ai_input_mapping(struct hid_device *hdev, struct hid_input *hi, -+ struct hid_field *field, struct hid_usage *usage, -+ unsigned long **bit, int *max) -+{ -+ struct ai_key_translation *trans; -+ -+ /* Enable all other keys */ -+ for (trans = ai_fn_keys; trans->from; trans++) -+ set_bit(trans->to, hi->input->keybit); -+ -+ return 0; -+} -+ -+static ssize_t show_swap_key(struct device *dev, -+ struct device_attribute *attr, char *buf) -+{ -+ return snprintf(buf, PAGE_SIZE, "%d\n", swap_key); -+} -+ -+static ssize_t store_swap_key(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ swap_key = simple_strtoul(buf, NULL, 0); -+ -+ if (swap_key != 0 && swap_key != 1) { -+ swap_key = 0; -+ return -EINVAL; -+ } -+ -+ return count; -+} -+ -+static struct device_attribute ai_hid_attrs[] = { -+ __ATTR(swap_key, S_IRUGO | S_IWUGO, show_swap_key, store_swap_key), -+}; -+ -+int ai_create_sysfs(struct hid_device *hdev) -+{ -+ int i; -+ int r; -+ -+ for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) { -+ r = device_create_file(&hdev->dev, -+ &ai_hid_attrs[i]); -+ -+ if (r) { -+ dev_err(&hdev->dev, "failed to create sysfs file\n"); -+ return r; -+ } -+ } -+ -+ return 0; -+} -+ -+void ai_remove_sysfs(struct hid_device *hdev) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) -+ device_remove_file(&hdev->dev, -+ &ai_hid_attrs[i]); -+} -+ -+static int ai_probe(struct hid_device *hdev, -+ const struct hid_device_id *id) -+{ -+ unsigned long quirks = id->driver_data; -+ struct ai_sc *asc; -+ unsigned int connect_mask = HID_CONNECT_DEFAULT; -+ int ret; -+ -+ asc = kzalloc(sizeof(*asc), GFP_KERNEL); -+ if (asc == NULL) { -+ dev_err(&hdev->dev, "can't alloc ai descriptor\n"); -+ return -ENOMEM; -+ } -+ -+ asc->quirks = quirks; -+ hid_set_drvdata(hdev, asc); -+ -+ ret = hid_parse(hdev); -+ if (ret) { -+ dev_err(&hdev->dev, "parse failed\n"); -+ goto err_free; -+ } -+ -+ ret = ai_create_sysfs(hdev); -+ if (ret) { -+ dev_err(&hdev->dev, "failed to create sysfs entries\n"); -+ goto err_free; -+ } -+ -+ swap_key = (ai_revision >= 4) ? 1 : 0; -+ -+ ret = hid_hw_start(hdev, connect_mask); -+ if (ret) { -+ dev_err(&hdev->dev, "hw start failed\n"); -+ goto err_free; -+ } -+ -+ return 0; -+err_free: -+ kfree(asc); -+ return ret; -+} -+ -+static void ai_remove(struct hid_device *hdev) -+{ -+ hid_hw_stop(hdev); -+ kfree(hid_get_drvdata(hdev)); -+ ai_remove_sysfs(hdev); -+} -+ -+static const struct hid_device_id ai_devices[] = { -+ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, -+ { } -+}; -+ -+MODULE_DEVICE_TABLE(hid, ai_devices); -+ -+static struct hid_driver ai_driver = { -+ .name = "ai", -+ .id_table = ai_devices, -+ .probe = ai_probe, -+ .remove = ai_remove, -+ .event = ai_event, -+ .input_mapping = ai_input_mapping, -+}; -+ -+static int ai_init(void) -+{ -+ int ret; -+ -+ ret = hid_register_driver(&ai_driver); -+ if (ret) -+ printk(KERN_ERR "can't register ai driver\n"); -+ -+ return ret; -+} -+ -+static void ai_exit(void) -+{ -+ hid_unregister_driver(&ai_driver); -+} -+ -+module_init(ai_init); -+module_exit(ai_exit); -+MODULE_LICENSE("GPL"); -+HID_COMPAT_LOAD_DRIVER(ai); -diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c -index 80792d3..f6b5960 100644 ---- a/drivers/hid/hid-core.c -+++ b/drivers/hid/hid-core.c -@@ -1250,6 +1250,7 @@ EXPORT_SYMBOL_GPL(hid_disconnect); - static const struct hid_device_id hid_blacklist[] = { - { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, - { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, -+ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, -diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h -index 3839340..5a0127d 100644 ---- a/drivers/hid/hid-ids.h -+++ b/drivers/hid/hid-ids.h -@@ -54,6 +54,9 @@ - #define USB_VENDOR_ID_ALPS 0x0433 - #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 - -+#define USB_VENDOR_ID_AI 0xa110 -+#define USB_DEVICE_ID_AI_TOUCH_BOOK 0x0002 -+ - #define USB_VENDOR_ID_APPLE 0x05ac - #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 - #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch deleted file mode 100644 index 5f3e2336fe..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 94ea406045ee596951204736fd5bdf454c574343 Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Fri, 12 Mar 2010 14:41:05 +0100 -Subject: [PATCH 12/16] Make backlight controls accessible to users - ---- - drivers/video/backlight/backlight.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c -index 6615ac7..7898707 100644 ---- a/drivers/video/backlight/backlight.c -+++ b/drivers/video/backlight/backlight.c -@@ -228,7 +228,7 @@ static void bl_device_release(struct device *dev) - - static struct device_attribute bl_device_attributes[] = { - __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), -- __ATTR(brightness, 0644, backlight_show_brightness, -+ __ATTR(brightness, 0666, backlight_show_brightness, - backlight_store_brightness), - __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, - NULL), --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch new file mode 100644 index 0000000000..24fb913221 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch @@ -0,0 +1,30 @@ +From 4c3ef06a333cf1f873a9a8de05af90959a5d1e68 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 15:04:58 +0100 +Subject: [PATCH 12/17] ads7846: don't error out when there's no pendown gpio + +--- + drivers/input/touchscreen/ads7846.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c +index 1d9f97c..c72c3ae 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -952,13 +952,6 @@ static int __devinit setup_pendown(struct spi_device *spi, struct ads7846 *ts) + return 0; + } + +- err = gpio_request(pdata->gpio_pendown, "ads7846_pendown"); +- if (err) { +- dev_err(&spi->dev, "failed to request pendown GPIO%d\n", +- pdata->gpio_pendown); +- return err; +- } +- + ts->gpio_pendown = pdata->gpio_pendown; + return 0; + } +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch new file mode 100644 index 0000000000..2da7354e11 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch @@ -0,0 +1,350 @@ +From 96ce6261efe4c194d9188e0f352803bcd92f1c59 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Wed, 31 Mar 2010 11:14:04 +0200 +Subject: [PATCH 13/17] ASoC: add driver for omap3-touchbook + +--- + sound/soc/omap/Kconfig | 8 + + sound/soc/omap/Makefile | 2 + + sound/soc/omap/omap3touchbook.c | 291 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 301 insertions(+), 0 deletions(-) + create mode 100644 sound/soc/omap/omap3touchbook.c + +diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig +index 61952aa..a7c06ab 100644 +--- a/sound/soc/omap/Kconfig ++++ b/sound/soc/omap/Kconfig +@@ -101,6 +101,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE + help + Say Y if you want to add support for SoC audio on the Beagleboard. + ++config SND_OMAP_SOC_OMAP3_TOUCHBOOK ++ tristate "SoC Audio support for OMAP3 Touch Book" ++ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK ++ select SND_OMAP_SOC_MCBSP ++ select SND_SOC_TWL4030 ++ help ++ Say Y if you want to add support for SoC audio on the Touch Book. ++ + config SND_OMAP_SOC_ZOOM2 + tristate "SoC Audio support for Zoom2" + depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2 +diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile +index 19283e5..e3f172f 100644 +--- a/sound/soc/omap/Makefile ++++ b/sound/soc/omap/Makefile +@@ -16,6 +16,7 @@ snd-soc-am3517evm-objs := am3517evm.o + snd-soc-sdp3430-objs := sdp3430.o + snd-soc-omap3pandora-objs := omap3pandora.o + snd-soc-omap3beagle-objs := omap3beagle.o ++snd-soc-omap3touchbook-objs := omap3touchbook.o + snd-soc-zoom2-objs := zoom2.o + snd-soc-igep0020-objs := igep0020.o + +@@ -29,5 +30,6 @@ obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o + obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o + obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o + obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o ++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3touchbook.o + obj-$(CONFIG_SND_OMAP_SOC_ZOOM2) += snd-soc-zoom2.o + obj-$(CONFIG_SND_OMAP_SOC_IGEP0020) += snd-soc-igep0020.o +diff --git a/sound/soc/omap/omap3touchbook.c b/sound/soc/omap/omap3touchbook.c +new file mode 100644 +index 0000000..c5e6eaa +--- /dev/null ++++ b/sound/soc/omap/omap3touchbook.c +@@ -0,0 +1,291 @@ ++/* ++ * omap3touchbook.c -- SoC audio for Touch Book ++ * ++ * Copyright (C) 2009-2010 Always Innovating ++ * ++ * Author: Gregoire Gentil ++ * ++ * Based on: ++ * Author: Steve Sakoman ++ * Author: Misael Lopez Cruz ++ * ++ * 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 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "omap-mcbsp.h" ++#include "omap-pcm.h" ++#include "../codecs/twl4030.h" ++ ++static struct snd_soc_card snd_soc_omap3touchbook; ++ ++static int omap3touchbook_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_dai *codec_dai = rtd->dai->codec_dai; ++ struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; ++ unsigned int fmt; ++ int ret; ++ ++ switch (params_channels(params)) { ++ case 2: /* Stereo I2S mode */ ++ fmt = SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBM_CFM; ++ break; ++ case 4: /* Four channel TDM mode */ ++ fmt = SND_SOC_DAIFMT_DSP_A | ++ SND_SOC_DAIFMT_IB_NF | ++ SND_SOC_DAIFMT_CBM_CFM; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ /* Set codec DAI configuration */ ++ ret = snd_soc_dai_set_fmt(codec_dai, fmt); ++ if (ret < 0) { ++ printk(KERN_ERR "can't set codec DAI configuration\n"); ++ return ret; ++ } ++ ++ /* Set cpu DAI configuration */ ++ ret = snd_soc_dai_set_fmt(cpu_dai, fmt); ++ if (ret < 0) { ++ printk(KERN_ERR "can't set cpu DAI configuration\n"); ++ return ret; ++ } ++ ++ /* Set the codec system clock for DAC and ADC */ ++ ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) { ++ printk(KERN_ERR "can't set codec system clock\n"); ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static struct snd_soc_ops omap3touchbook_ops = { ++ .hw_params = omap3touchbook_hw_params, ++}; ++ ++/* Headset jack */ ++static struct snd_soc_jack hs_jack; ++ ++/* Headset jack detection DAPM pins */ ++static struct snd_soc_jack_pin hs_jack_pins[] = { ++ { ++ .pin = "Headset Stereo", ++ .mask = SND_JACK_HEADPHONE, ++ }, ++ { ++ .pin = "Headset Mic", ++ .mask = SND_JACK_HEADPHONE, ++ }, ++ { ++ .pin = "External Speakers", ++ .mask = SND_JACK_HEADPHONE, ++ .invert = 1, ++ }, ++}; ++ ++/* Headset jack detection gpios */ ++static struct snd_soc_jack_gpio hs_jack_gpios[] = { ++ { ++ .gpio = 56, ++ .name = "hsdet-gpio", ++ .report = SND_JACK_HEADSET, ++ .debounce_time = 200, ++ }, ++}; ++ ++/* omap3touchbook machine DAPM */ ++static const struct snd_soc_dapm_widget omap3touchbook_twl4030_dapm_widgets[] = { ++ SND_SOC_DAPM_SPK("External Speakers", NULL), ++ SND_SOC_DAPM_HP("Headset Stereo", NULL), ++ SND_SOC_DAPM_MIC("Headset Mic", NULL), ++ SND_SOC_DAPM_LINE("Line In", NULL), ++}; ++ ++static const struct snd_soc_dapm_route audio_map[] = { ++ /* External Speakers: HFL, HFR */ ++ {"External Speakers", NULL, "HFL"}, ++ {"External Speakers", NULL, "HFR"}, ++ ++ /* Headset Stereo: HSOL, HSOR */ ++ {"Headset Stereo", NULL, "HSOL"}, ++ {"Headset Stereo", NULL, "HSOR"}, ++ ++ /* Micro: HSMIC */ ++ {"HSMIC", NULL, "Headset Mic Bias"}, ++ {"Headset Mic Bias", NULL, "Headset Mic"}, ++ ++ /* Line In: AUXL, AUXR */ ++ {"AUXL", NULL, "Line In"}, ++ {"AUXR", NULL, "Line In"}, ++}; ++ ++static int omap3touchbook_twl4030_init(struct snd_soc_codec *codec) ++{ ++ int ret; ++ ++ /* Add omap3touchbook specific widgets */ ++ ret = snd_soc_dapm_new_controls(codec, omap3touchbook_twl4030_dapm_widgets, ++ ARRAY_SIZE(omap3touchbook_twl4030_dapm_widgets)); ++ if (ret) ++ return ret; ++ ++ /* Set up omap3touchbook specific audio path audio_map */ ++ snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map)); ++ ++ /* omap3touchbook connected pins */ ++ snd_soc_dapm_enable_pin(codec, "External Speakers"); ++ snd_soc_dapm_enable_pin(codec, "Headset Stereo"); ++ snd_soc_dapm_enable_pin(codec, "Headset Mic"); ++ snd_soc_dapm_enable_pin(codec, "Line In"); ++ ++ /* omap3touchbook not connected pins */ ++ snd_soc_dapm_nc_pin(codec, "CARKITMIC"); ++ snd_soc_dapm_nc_pin(codec, "MAINMIC"); ++ snd_soc_dapm_nc_pin(codec, "SUBMIC"); ++ snd_soc_dapm_nc_pin(codec, "DIGIMIC0"); ++ snd_soc_dapm_nc_pin(codec, "DIGIMIC1"); ++ snd_soc_dapm_nc_pin(codec, "OUTL"); ++ snd_soc_dapm_nc_pin(codec, "OUTR"); ++ snd_soc_dapm_nc_pin(codec, "EARPIECE"); ++ snd_soc_dapm_nc_pin(codec, "PREDRIVEL"); ++ snd_soc_dapm_nc_pin(codec, "PREDRIVER"); ++ snd_soc_dapm_nc_pin(codec, "CARKITL"); ++ snd_soc_dapm_nc_pin(codec, "CARKITR"); ++ snd_soc_dapm_nc_pin(codec, "VIBRA"); ++ ++ ret = snd_soc_dapm_sync(codec); ++ if (ret) ++ return ret; ++ ++ /* Headset jack detection */ ++ ret = snd_soc_jack_new(&snd_soc_omap3touchbook, "Headset Jack", ++ SND_JACK_HEADSET, &hs_jack); ++ if (ret) ++ return ret; ++ ++ ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins), ++ hs_jack_pins); ++ if (ret) ++ return ret; ++ ++ ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), ++ hs_jack_gpios); ++ ++ return ret; ++} ++ ++/* Digital audio interface glue - connects codec <--> CPU */ ++static struct snd_soc_dai_link omap3touchbook_dai = { ++ .name = "TWL4030 I2S", ++ .stream_name = "TWL4030 Audio", ++ .cpu_dai = &omap_mcbsp_dai[0], ++ .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI], ++ .init = omap3touchbook_twl4030_init, ++ .ops = &omap3touchbook_ops, ++}; ++ ++/* Audio machine driver */ ++static struct snd_soc_card snd_soc_omap3touchbook = { ++ .name = "omap3touchbook", ++ .platform = &omap_soc_platform, ++ .dai_link = &omap3touchbook_dai, ++ .num_links = 1, ++}; ++ ++/* twl4030 setup */ ++static struct twl4030_setup_data twl4030_setup = { ++ .ramp_delay_value = 3, ++ .sysclk = 26000, ++ .hs_extmute = 1, ++}; ++ ++/* Audio subsystem */ ++static struct snd_soc_device omap3touchbook_snd_devdata = { ++ .card = &snd_soc_omap3touchbook, ++ .codec_dev = &soc_codec_dev_twl4030, ++ .codec_data = &twl4030_setup, ++}; ++ ++static struct platform_device *omap3touchbook_snd_device; ++ ++static int __init omap3touchbook_soc_init(void) ++{ ++ int ret; ++ u8 pin_mux; ++ ++ if (!machine_is_touchbook()) { ++ pr_debug("Not Touch Book!\n"); ++ //return -ENODEV; ++ } ++ printk(KERN_INFO "Touch Book SoC init\n"); ++ ++ omap3touchbook_snd_device = platform_device_alloc("soc-audio", -1); ++ if (!omap3touchbook_snd_device) { ++ printk(KERN_ERR "Platform device allocation failed\n"); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(omap3touchbook_snd_device, &omap3touchbook_snd_devdata); ++ omap3touchbook_snd_devdata.dev = &omap3touchbook_snd_device->dev; ++ *(unsigned int *)omap3touchbook_dai.cpu_dai->private_data = 1; /* McBSP2 */ ++ ++ ret = platform_device_add(omap3touchbook_snd_device); ++ if (ret) ++ goto err1; ++ ++ return 0; ++ ++err1: ++ printk(KERN_ERR "Unable to add platform device\n"); ++ platform_device_put(omap3touchbook_snd_device); ++ ++ return ret; ++} ++module_init(omap3touchbook_soc_init); ++ ++static void __exit omap3touchbook_soc_exit(void) ++{ ++ snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), ++ hs_jack_gpios); ++ ++ platform_device_unregister(omap3touchbook_snd_device); ++} ++module_exit(omap3touchbook_soc_exit); ++ ++MODULE_AUTHOR("Gregoire Gentil "); ++MODULE_LICENSE("GPL"); +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch deleted file mode 100644 index b6da0dc5fb..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 55eb032a9f3d9c2a46a0e4621e6704a00ba2ab46 Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Fri, 12 Mar 2010 15:04:58 +0100 -Subject: [PATCH 13/16] ads7846: don't error out when there's no pendown gpio - ---- - drivers/input/touchscreen/ads7846.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c -index 1d9f97c..c72c3ae 100644 ---- a/drivers/input/touchscreen/ads7846.c -+++ b/drivers/input/touchscreen/ads7846.c -@@ -952,13 +952,6 @@ static int __devinit setup_pendown(struct spi_device *spi, struct ads7846 *ts) - return 0; - } - -- err = gpio_request(pdata->gpio_pendown, "ads7846_pendown"); -- if (err) { -- dev_err(&spi->dev, "failed to request pendown GPIO%d\n", -- pdata->gpio_pendown); -- return err; -- } -- - ts->gpio_pendown = pdata->gpio_pendown; - return 0; - } --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch deleted file mode 100644 index 4e39423869..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch +++ /dev/null @@ -1,340 +0,0 @@ -From 0abfaf3d50f7df7b7dd9462d1822e856bf306bf5 Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Wed, 31 Mar 2010 11:14:04 +0200 -Subject: [PATCH 14/16] ASoC: add driver for omap3-touchbook - ---- - sound/soc/omap/Kconfig | 8 + - sound/soc/omap/Makefile | 2 + - sound/soc/omap/omap3touchbook.c | 281 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 291 insertions(+), 0 deletions(-) - create mode 100644 sound/soc/omap/omap3touchbook.c - -diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig -index 61952aa..a7c06ab 100644 ---- a/sound/soc/omap/Kconfig -+++ b/sound/soc/omap/Kconfig -@@ -101,6 +101,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE - help - Say Y if you want to add support for SoC audio on the Beagleboard. - -+config SND_OMAP_SOC_OMAP3_TOUCHBOOK -+ tristate "SoC Audio support for OMAP3 Touch Book" -+ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK -+ select SND_OMAP_SOC_MCBSP -+ select SND_SOC_TWL4030 -+ help -+ Say Y if you want to add support for SoC audio on the Touch Book. -+ - config SND_OMAP_SOC_ZOOM2 - tristate "SoC Audio support for Zoom2" - depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2 -diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile -index 19283e5..e3f172f 100644 ---- a/sound/soc/omap/Makefile -+++ b/sound/soc/omap/Makefile -@@ -16,6 +16,7 @@ snd-soc-am3517evm-objs := am3517evm.o - snd-soc-sdp3430-objs := sdp3430.o - snd-soc-omap3pandora-objs := omap3pandora.o - snd-soc-omap3beagle-objs := omap3beagle.o -+snd-soc-omap3touchbook-objs := omap3touchbook.o - snd-soc-zoom2-objs := zoom2.o - snd-soc-igep0020-objs := igep0020.o - -@@ -29,5 +30,6 @@ obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o - obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o - obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o - obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o -+obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3touchbook.o - obj-$(CONFIG_SND_OMAP_SOC_ZOOM2) += snd-soc-zoom2.o - obj-$(CONFIG_SND_OMAP_SOC_IGEP0020) += snd-soc-igep0020.o -diff --git a/sound/soc/omap/omap3touchbook.c b/sound/soc/omap/omap3touchbook.c -new file mode 100644 -index 0000000..27924e0 ---- /dev/null -+++ b/sound/soc/omap/omap3touchbook.c -@@ -0,0 +1,281 @@ -+/* -+ * omap3touchbook.c -- SoC audio for Touch Book -+ * -+ * Copyright (C) 2009-2010 Always Innovating -+ * -+ * Author: Gregoire Gentil -+ * -+ * Based on: -+ * Author: Steve Sakoman -+ * Author: Misael Lopez Cruz -+ * -+ * 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 -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "omap-mcbsp.h" -+#include "omap-pcm.h" -+#include "../codecs/twl4030.h" -+ -+static struct snd_soc_card snd_soc_omap3touchbook; -+ -+static int omap3touchbook_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_dai *codec_dai = rtd->dai->codec_dai; -+ struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; -+ unsigned int fmt; -+ int ret; -+ -+ switch (params_channels(params)) { -+ case 2: /* Stereo I2S mode */ -+ fmt = SND_SOC_DAIFMT_I2S | -+ SND_SOC_DAIFMT_NB_NF | -+ SND_SOC_DAIFMT_CBM_CFM; -+ break; -+ case 4: /* Four channel TDM mode */ -+ fmt = SND_SOC_DAIFMT_DSP_A | -+ SND_SOC_DAIFMT_IB_NF | -+ SND_SOC_DAIFMT_CBM_CFM; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ /* Set codec DAI configuration */ -+ ret = snd_soc_dai_set_fmt(codec_dai, fmt); -+ if (ret < 0) { -+ printk(KERN_ERR "can't set codec DAI configuration\n"); -+ return ret; -+ } -+ -+ /* Set cpu DAI configuration */ -+ ret = snd_soc_dai_set_fmt(cpu_dai, fmt); -+ if (ret < 0) { -+ printk(KERN_ERR "can't set cpu DAI configuration\n"); -+ return ret; -+ } -+ -+ /* Set the codec system clock for DAC and ADC */ -+ ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000, -+ SND_SOC_CLOCK_IN); -+ if (ret < 0) { -+ printk(KERN_ERR "can't set codec system clock\n"); -+ return ret; -+ } -+ -+ return 0; -+} -+ -+static struct snd_soc_ops omap3touchbook_ops = { -+ .hw_params = omap3touchbook_hw_params, -+}; -+ -+/* Headset jack */ -+static struct snd_soc_jack hs_jack; -+ -+/* Headset jack detection DAPM pins */ -+static struct snd_soc_jack_pin hs_jack_pins[] = { -+ { -+ .pin = "External Speakers", -+ .mask = SND_JACK_HEADPHONE, -+ .invert = 1, -+ }, -+}; -+ -+/* Headset jack detection gpios */ -+static struct snd_soc_jack_gpio hs_jack_gpios[] = { -+ { -+ .gpio = 56, -+ .name = "hsdet-gpio", -+ .report = SND_JACK_HEADSET, -+ .debounce_time = 200, -+ }, -+}; -+ -+/* omap3touchbook machine DAPM */ -+static const struct snd_soc_dapm_widget omap3touchbook_twl4030_dapm_widgets[] = { -+ SND_SOC_DAPM_SPK("External Speakers", NULL), -+ SND_SOC_DAPM_HP("Headset Stereo", NULL), -+ SND_SOC_DAPM_MIC("Headset Micro", NULL), -+ SND_SOC_DAPM_LINE("Line In", NULL), -+}; -+ -+static const struct snd_soc_dapm_route audio_map[] = { -+ /* External Speakers: HFL, HFR */ -+ {"External Speakers", NULL, "HFL"}, -+ {"External Speakers", NULL, "HFR"}, -+ -+ /* Headset Stereo: HSOL, HSOR */ -+ {"Headset Stereo", NULL, "HSOL"}, -+ {"Headset Stereo", NULL, "HSOR"}, -+ -+ /* Headset Micro: MAINMICL */ -+ {"Headset Micro", NULL, "MAINMIC"}, -+ -+ /* Line In: AUXL, AUXR */ -+ {"Line In", NULL, "AUXL"}, -+ {"Line In", NULL, "AUXR"}, -+}; -+ -+static int omap3touchbook_twl4030_init(struct snd_soc_codec *codec) -+{ -+ int ret; -+ -+ /* Add omap3touchbook specific widgets */ -+ ret = snd_soc_dapm_new_controls(codec, omap3touchbook_twl4030_dapm_widgets, -+ ARRAY_SIZE(omap3touchbook_twl4030_dapm_widgets)); -+ if (ret) -+ return ret; -+ -+ /* Set up omap3touchbook specific audio path audio_map */ -+ snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map)); -+ -+ /* omap3touchbook connected pins */ -+ snd_soc_dapm_enable_pin(codec, "External Speakers"); -+ snd_soc_dapm_enable_pin(codec, "Headset Stereo"); -+ snd_soc_dapm_enable_pin(codec, "Headset Micro"); -+ snd_soc_dapm_enable_pin(codec, "Line In"); -+ -+ /* TWL4030 not connected pins */ -+ snd_soc_dapm_nc_pin(codec, "CARKITMIC"); -+ snd_soc_dapm_nc_pin(codec, "SUBMIC"); -+ snd_soc_dapm_nc_pin(codec, "DIGIMIC0"); -+ snd_soc_dapm_nc_pin(codec, "DIGIMIC1"); -+ snd_soc_dapm_nc_pin(codec, "OUTL"); -+ snd_soc_dapm_nc_pin(codec, "OUTR"); -+ snd_soc_dapm_nc_pin(codec, "EARPIECE"); -+ snd_soc_dapm_nc_pin(codec, "PREDRIVEL"); -+ snd_soc_dapm_nc_pin(codec, "PREDRIVER"); -+ snd_soc_dapm_nc_pin(codec, "CARKITL"); -+ snd_soc_dapm_nc_pin(codec, "CARKITR"); -+ snd_soc_dapm_nc_pin(codec, "VIBRA"); -+ -+ ret = snd_soc_dapm_sync(codec); -+ if (ret) -+ return ret; -+ -+ /* Headset jack detection */ -+ ret = snd_soc_jack_new(&snd_soc_omap3touchbook, "Headset Jack", -+ SND_JACK_HEADSET, &hs_jack); -+ if (ret) -+ return ret; -+ -+ ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins), -+ hs_jack_pins); -+ if (ret) -+ return ret; -+ -+ ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), -+ hs_jack_gpios); -+ -+ return ret; -+} -+ -+/* Digital audio interface glue - connects codec <--> CPU */ -+static struct snd_soc_dai_link omap3touchbook_dai = { -+ .name = "TWL4030 I2S", -+ .stream_name = "TWL4030 Audio", -+ .cpu_dai = &omap_mcbsp_dai[0], -+ .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI], -+ .init = omap3touchbook_twl4030_init, -+ .ops = &omap3touchbook_ops, -+}; -+ -+/* Audio machine driver */ -+static struct snd_soc_card snd_soc_omap3touchbook = { -+ .name = "omap3touchbook", -+ .platform = &omap_soc_platform, -+ .dai_link = &omap3touchbook_dai, -+ .num_links = 1, -+}; -+ -+/* twl4030 setup */ -+static struct twl4030_setup_data twl4030_setup = { -+ .ramp_delay_value = 3, -+ .sysclk = 26000, -+ .hs_extmute = 1, -+}; -+ -+/* Audio subsystem */ -+static struct snd_soc_device omap3touchbook_snd_devdata = { -+ .card = &snd_soc_omap3touchbook, -+ .codec_dev = &soc_codec_dev_twl4030, -+ .codec_data = &twl4030_setup, -+}; -+ -+static struct platform_device *omap3touchbook_snd_device; -+ -+static int __init omap3touchbook_soc_init(void) -+{ -+ int ret; -+ u8 pin_mux; -+ -+ if (!machine_is_touchbook()) { -+ pr_debug("Not Touch Book!\n"); -+ //return -ENODEV; -+ } -+ printk(KERN_INFO "Touch Book SoC init\n"); -+ -+ omap3touchbook_snd_device = platform_device_alloc("soc-audio", -1); -+ if (!omap3touchbook_snd_device) { -+ printk(KERN_ERR "Platform device allocation failed\n"); -+ return -ENOMEM; -+ } -+ -+ platform_set_drvdata(omap3touchbook_snd_device, &omap3touchbook_snd_devdata); -+ omap3touchbook_snd_devdata.dev = &omap3touchbook_snd_device->dev; -+ *(unsigned int *)omap3touchbook_dai.cpu_dai->private_data = 1; /* McBSP2 */ -+ -+ ret = platform_device_add(omap3touchbook_snd_device); -+ if (ret) -+ goto err1; -+ -+ return 0; -+ -+err1: -+ printk(KERN_ERR "Unable to add platform device\n"); -+ platform_device_put(omap3touchbook_snd_device); -+ -+ return ret; -+} -+module_init(omap3touchbook_soc_init); -+ -+static void __exit omap3touchbook_soc_exit(void) -+{ -+ snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), -+ hs_jack_gpios); -+ -+ platform_device_unregister(omap3touchbook_snd_device); -+} -+module_exit(omap3touchbook_soc_exit); -+ -+MODULE_AUTHOR("Gregoire Gentil "); -+MODULE_LICENSE("GPL"); --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch new file mode 100644 index 0000000000..d517f072b6 --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch @@ -0,0 +1,126 @@ +From cc8cb0d0731c7a0517653e65c754051a69f34c3e Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Wed, 31 Mar 2010 11:14:04 +0200 +Subject: [PATCH 14/17] backlight: add PWM support + +--- + drivers/video/backlight/backlight.c | 81 +++++++++++++++++++++++++++++++++++ + include/linux/backlight.h | 3 + + 2 files changed, 84 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c +index 7898707..615f40f 100644 +--- a/drivers/video/backlight/backlight.c ++++ b/drivers/video/backlight/backlight.c +@@ -226,6 +226,84 @@ static void bl_device_release(struct device *dev) + kfree(bd); + } + ++static ssize_t backlight_show_boost(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct backlight_device *bd = to_backlight_device(dev); ++ return sprintf(buf, "%u\n", bd->props.boost); ++} ++ ++static ssize_t backlight_store_boost(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long i; ++ struct backlight_device *bd = to_backlight_device(dev); ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ mutex_lock(&bd->ops_lock); ++ if (bd->ops) ++ { ++ if (i) ++ bd->props.boost = 1; ++ else ++ bd->props.boost = 0; ++ backlight_update_status(bd); ++ } ++ mutex_unlock(&bd->ops_lock); ++ ++ return count; ++} ++ ++static ssize_t backlight_show_pwm_fq(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct backlight_device *bd = to_backlight_device(dev); ++ return sprintf(buf, "%u\n", bd->props.pwm_fq); ++} ++ ++static ssize_t backlight_store_pwm_fq(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long i; ++ struct backlight_device *bd = to_backlight_device(dev); ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ mutex_lock(&bd->ops_lock); ++ if (bd->ops) ++ { ++ bd->props.pwm_fq = i; ++ backlight_update_status(bd); ++ } ++ mutex_unlock(&bd->ops_lock); ++ ++ return count; ++} ++ ++static ssize_t backlight_show_min_duty(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct backlight_device *bd = to_backlight_device(dev); ++ return sprintf(buf, "%u\n", bd->props.min_duty); ++} ++ ++static ssize_t backlight_store_min_duty(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long i; ++ struct backlight_device *bd = to_backlight_device(dev); ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ mutex_lock(&bd->ops_lock); ++ if (bd->ops) ++ { ++ bd->props.min_duty = i; ++ backlight_update_status(bd); ++ } ++ mutex_unlock(&bd->ops_lock); ++ ++ return count; ++} ++ + static struct device_attribute bl_device_attributes[] = { + __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), + __ATTR(brightness, 0666, backlight_show_brightness, +@@ -233,6 +311,9 @@ static struct device_attribute bl_device_attributes[] = { + __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, + NULL), + __ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL), ++ __ATTR(boost, 0666, backlight_show_boost, backlight_store_boost), ++ __ATTR(pwm_fq, 0666, backlight_show_pwm_fq, backlight_store_pwm_fq), ++ __ATTR(min_duty, 0666, backlight_show_min_duty, backlight_store_min_duty), + __ATTR_NULL, + }; + +diff --git a/include/linux/backlight.h b/include/linux/backlight.h +index 0f5f578..f3a9b9f 100644 +--- a/include/linux/backlight.h ++++ b/include/linux/backlight.h +@@ -64,6 +64,9 @@ struct backlight_properties { + int fb_blank; + /* Flags used to signal drivers of state changes */ + /* Upper 4 bits are reserved for driver internal use */ ++ int boost; ++ int pwm_fq; ++ int min_duty; + unsigned int state; + + #define BL_CORE_SUSPENDED (1 << 0) /* backlight is suspended */ +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch new file mode 100644 index 0000000000..562c459e1e --- /dev/null +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch @@ -0,0 +1,1367 @@ +From c3a08f3d696866508ef2b5e2fd065b8295b3e1a8 Mon Sep 17 00:00:00 2001 +From: Tim Yamin +Date: Sun, 9 May 2010 10:14:23 +0200 +Subject: [PATCH 15/17] Forward port TWL4030 BCI driver from 2.6.29 to 2.6.31 with AI enhancements. + +Signed-off-by: Tim Yamin +--- + drivers/power/Kconfig | 7 + + drivers/power/Makefile | 1 + + drivers/power/twl4030_bci_battery.c | 1307 +++++++++++++++++++++++++++++++++++ + include/linux/i2c/twl.h | 1 + + 4 files changed, 1316 insertions(+), 0 deletions(-) + create mode 100644 drivers/power/twl4030_bci_battery.c + +diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig +index d4b3d67..8345b3f 100644 +--- a/drivers/power/Kconfig ++++ b/drivers/power/Kconfig +@@ -124,4 +124,11 @@ config CHARGER_PCF50633 + help + Say Y to include support for NXP PCF50633 Main Battery Charger. + ++config TWL4030_BCI_BATTERY ++ tristate "OMAP TWL4030 BCI Battery driver" ++ depends on TWL4030_CORE && TWL4030_MADC ++ help ++ Support for OMAP TWL4030 BCI Battery driver. ++ This driver can give support for TWL4030 Battery Charge Interface. ++ + endif # POWER_SUPPLY +diff --git a/drivers/power/Makefile b/drivers/power/Makefile +index 573597c..7801da7 100644 +--- a/drivers/power/Makefile ++++ b/drivers/power/Makefile +@@ -31,3 +31,4 @@ obj-$(CONFIG_BATTERY_BQ27x00) += bq27x00_battery.o + obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o + obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o + obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o ++obj-$(CONFIG_TWL4030_BCI_BATTERY) += twl4030_bci_battery.o +diff --git a/drivers/power/twl4030_bci_battery.c b/drivers/power/twl4030_bci_battery.c +new file mode 100644 +index 0000000..0876fc3 +--- /dev/null ++++ b/drivers/power/twl4030_bci_battery.c +@@ -0,0 +1,1307 @@ ++/* ++ * linux/drivers/power/twl4030_bci_battery.c ++ * ++ * OMAP2430/3430 BCI battery driver for Linux ++ * ++ * Copyright (C) 2008 Texas Instruments, Inc. ++ * Author: Texas Instruments, Inc. ++ * ++ * Copyright (C) 2010 Always Innovating ++ * Author: Tim Yamin ++ * ++ * This package 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. ++ */ ++ ++/* Boot with automatic charge */ ++#define CHARGE_MODE 1 ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define T2_BATTERY_VOLT 0x04 ++#define T2_BATTERY_TEMP 0x06 ++#define T2_BATTERY_CUR 0x08 ++ ++/* charger constants */ ++#define NO_PW_CONN 0 ++#define AC_PW_CONN 0x01 ++#define USB_PW_CONN 0x02 ++ ++/* TWL4030_MODULE_USB */ ++#define REG_POWER_CTRL 0x0AC ++#define OTG_EN 0x020 ++#define REG_PHY_CLK_CTRL 0x0FE ++#define REG_PHY_CLK_CTRL_STS 0x0FF ++#define PHY_DPLL_CLK 0x01 ++ ++#define REG_BCICTL1 0x023 ++#define REG_BCICTL2 0x024 ++#define CGAIN 0x020 ++#define ITHEN 0x010 ++#define ITHSENS 0x007 ++ ++/* Boot BCI flag bits */ ++#define BCIAUTOWEN 0x020 ++#define CONFIG_DONE 0x010 ++#define CVENAC 0x004 ++#define BCIAUTOUSB 0x002 ++#define BCIAUTOAC 0x001 ++#define BCIMSTAT_MASK 0x03F ++ ++/* Boot BCI register */ ++#define REG_BOOT_BCI 0x007 ++#define REG_CTRL1 0x00 ++#define REG_SW1SELECT_MSB 0x07 ++#define SW1_CH9_SEL 0x02 ++#define REG_CTRL_SW1 0x012 ++#define SW1_TRIGGER 0x020 ++#define EOC_SW1 0x002 ++#define REG_GPCH9 0x049 ++#define REG_STS_HW_CONDITIONS 0x0F ++#define STS_VBUS 0x080 ++#define STS_CHG 0x02 ++#define REG_BCIMSTATEC 0x02 ++#define REG_BCIMFSTS4 0x010 ++#define REG_BCIMFSTS2 0x00E ++#define REG_BCIMFSTS3 0x00F ++#define REG_BCIMFSTS1 0x001 ++#define USBFASTMCHG 0x004 ++#define BATSTSPCHG 0x004 ++#define BATSTSMCHG 0x040 ++#define VBATOV4 0x020 ++#define VBATOV3 0x010 ++#define VBATOV2 0x008 ++#define VBATOV1 0x004 ++#define REG_BB_CFG 0x012 ++#define BBCHEN 0x010 ++ ++/* GPBR */ ++#define REG_GPBR1 0x0c ++#define MADC_HFCLK_EN 0x80 ++#define DEFAULT_MADC_CLK_EN 0x10 ++ ++/* Power supply charge interrupt */ ++#define REG_PWR_ISR1 0x00 ++#define REG_PWR_IMR1 0x01 ++#define REG_PWR_EDR1 0x05 ++#define REG_PWR_SIH_CTRL 0x007 ++ ++#define USB_PRES 0x004 ++#define CHG_PRES 0x002 ++ ++#define USB_PRES_RISING 0x020 ++#define USB_PRES_FALLING 0x010 ++#define CHG_PRES_RISING 0x008 ++#define CHG_PRES_FALLING 0x004 ++#define AC_STATEC 0x20 ++#define COR 0x004 ++ ++/* interrupt status registers */ ++#define REG_BCIISR1A 0x0 ++#define REG_BCIISR2A 0x01 ++ ++/* Interrupt flags bits BCIISR1 */ ++#define BATSTS_ISR1 0x080 ++#define VBATLVL_ISR1 0x001 ++ ++/* Interrupt mask registers for int1*/ ++#define REG_BCIIMR1A 0x002 ++#define REG_BCIIMR2A 0x003 ++ ++ /* Interrupt masks for BCIIMR1 */ ++#define BATSTS_IMR1 0x080 ++#define VBATLVL_IMR1 0x001 ++ ++/* Interrupt edge detection register */ ++#define REG_BCIEDR1 0x00A ++#define REG_BCIEDR2 0x00B ++#define REG_BCIEDR3 0x00C ++ ++/* BCIEDR2 */ ++#define BATSTS_EDRRISIN 0x080 ++#define BATSTS_EDRFALLING 0x040 ++ ++/* BCIEDR3 */ ++#define VBATLVL_EDRRISIN 0x02 ++ ++/* BCIIREF1 */ ++#define REG_BCIIREF1 0x027 ++#define REG_BCIIREF2 0x028 ++ ++/* BCIMFTH1 */ ++#define REG_BCIMFTH1 0x016 ++ ++/* Key */ ++#define KEY_IIREF 0xE7 ++#define KEY_FTH1 0xD2 ++#define REG_BCIMFKEY 0x011 ++ ++/* Step size and prescaler ratio */ ++#define TEMP_STEP_SIZE 147 ++#define TEMP_PSR_R 100 ++ ++#define VOLT_STEP_SIZE 588 ++#define VOLT_PSR_R 100 ++ ++#define CURR_STEP_SIZE 147 ++#define CURR_PSR_R1 44 ++#define CURR_PSR_R2 80 ++ ++#define BK_VOLT_STEP_SIZE 441 ++#define BK_VOLT_PSR_R 100 ++ ++#define ENABLE 1 ++#define DISABLE 1 ++ ++struct twl4030_bci_device_info { ++ struct device *dev; ++ ++ unsigned long update_time; ++ int voltage_uV; ++ int bk_voltage_uV; ++ int current_uA; ++ int temp_C; ++ int charge_rsoc; ++ int charge_status; ++ ++ struct power_supply bat; ++ struct power_supply bk_bat; ++ struct delayed_work twl4030_bci_monitor_work; ++ struct delayed_work twl4030_bk_bci_monitor_work; ++ ++ struct twl4030_bci_platform_data *pdata; ++}; ++ ++static int usb_charger_flag; ++static int LVL_1, LVL_2, LVL_3, LVL_4; ++ ++static int read_bci_val(u8 reg_1); ++static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg); ++static int twl4030charger_presence(void); ++ ++/* ++ * Report and clear the charger presence event. ++ */ ++static inline int twl4030charger_presence_evt(void) ++{ ++ int ret; ++ u8 chg_sts, set = 0, clear = 0; ++ ++ /* read charger power supply status */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &chg_sts, ++ REG_STS_HW_CONDITIONS); ++ if (ret) ++ return IRQ_NONE; ++ ++ if (chg_sts & STS_CHG) { /* If the AC charger have been connected */ ++ /* configuring falling edge detection for CHG_PRES */ ++ set = CHG_PRES_FALLING; ++ clear = CHG_PRES_RISING; ++ } else { /* If the AC charger have been disconnected */ ++ /* configuring rising edge detection for CHG_PRES */ ++ set = CHG_PRES_RISING; ++ clear = CHG_PRES_FALLING; ++ } ++ ++ /* Update the interrupt edge detection register */ ++ clear_n_set(TWL4030_MODULE_INT, clear, set, REG_PWR_EDR1); ++ ++ return 0; ++} ++ ++/* ++ * Interrupt service routine ++ * ++ * Attends to TWL 4030 power module interruptions events, specifically ++ * USB_PRES (USB charger presence) CHG_PRES (AC charger presence) events ++ * ++ */ ++static irqreturn_t twl4030charger_interrupt(int irq, void *_di) ++{ ++ struct twl4030_bci_device_info *di = _di; ++ ++#ifdef CONFIG_LOCKDEP ++ /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which ++ * we don't want and can't tolerate. Although it might be ++ * friendlier not to borrow this thread context... ++ */ ++ local_irq_enable(); ++#endif ++ ++ twl4030charger_presence_evt(); ++ power_supply_changed(&di->bat); ++ ++ return IRQ_HANDLED; ++} ++ ++/* ++ * This function handles the twl4030 battery presence interrupt ++ */ ++static int twl4030battery_presence_evt(void) ++{ ++ int ret; ++ u8 batstsmchg, batstspchg; ++ ++ /* check for the battery presence in main charge*/ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ &batstsmchg, REG_BCIMFSTS3); ++ if (ret) ++ return ret; ++ ++ /* check for the battery presence in precharge */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_PRECHARGE, ++ &batstspchg, REG_BCIMFSTS1); ++ if (ret) ++ return ret; ++ ++ /* ++ * REVISIT: Physically inserting/removing the batt ++ * does not seem to generate an int on 3430ES2 SDP. ++ */ ++ if ((batstspchg & BATSTSPCHG) || (batstsmchg & BATSTSMCHG)) { ++ /* In case of the battery insertion event */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRRISIN, ++ BATSTS_EDRFALLING, REG_BCIEDR2); ++ if (ret) ++ return ret; ++ } else { ++ /* In case of the battery removal event */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRFALLING, ++ BATSTS_EDRRISIN, REG_BCIEDR2); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/* ++ * This function handles the twl4030 battery voltage level interrupt. ++ */ ++static int twl4030battery_level_evt(void) ++{ ++ int ret; ++ u8 mfst; ++ ++ /* checking for threshold event */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ &mfst, REG_BCIMFSTS2); ++ if (ret) ++ return ret; ++ ++ /* REVISIT could use a bitmap */ ++ if (mfst & VBATOV4) { ++ LVL_4 = 1; ++ LVL_3 = 0; ++ LVL_2 = 0; ++ LVL_1 = 0; ++ } else if (mfst & VBATOV3) { ++ LVL_4 = 0; ++ LVL_3 = 1; ++ LVL_2 = 0; ++ LVL_1 = 0; ++ } else if (mfst & VBATOV2) { ++ LVL_4 = 0; ++ LVL_3 = 0; ++ LVL_2 = 1; ++ LVL_1 = 0; ++ } else { ++ LVL_4 = 0; ++ LVL_3 = 0; ++ LVL_2 = 0; ++ LVL_1 = 1; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Interrupt service routine ++ * ++ * Attends to BCI interruptions events, ++ * specifically BATSTS (battery connection and removal) ++ * VBATOV (main battery voltage threshold) events ++ * ++ */ ++static irqreturn_t twl4030battery_interrupt(int irq, void *_di) ++{ ++ u8 isr1a_val, isr2a_val, clear_2a, clear_1a; ++ int ret; ++ ++#ifdef CONFIG_LOCKDEP ++ /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which ++ * we don't want and can't tolerate. Although it might be ++ * friendlier not to borrow this thread context... ++ */ ++ local_irq_enable(); ++#endif ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr1a_val, ++ REG_BCIISR1A); ++ if (ret) ++ return IRQ_NONE; ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr2a_val, ++ REG_BCIISR2A); ++ if (ret) ++ return IRQ_NONE; ++ ++ clear_2a = (isr2a_val & VBATLVL_ISR1) ? (VBATLVL_ISR1) : 0; ++ clear_1a = (isr1a_val & BATSTS_ISR1) ? (BATSTS_ISR1) : 0; ++ ++ /* cleaning BCI interrupt status flags */ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, ++ clear_1a , REG_BCIISR1A); ++ if (ret) ++ return IRQ_NONE; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, ++ clear_2a , REG_BCIISR2A); ++ if (ret) ++ return IRQ_NONE; ++ ++ /* battery connetion or removal event */ ++ if (isr1a_val & BATSTS_ISR1) ++ twl4030battery_presence_evt(); ++ /* battery voltage threshold event*/ ++ else if (isr2a_val & VBATLVL_ISR1) ++ twl4030battery_level_evt(); ++ else ++ return IRQ_NONE; ++ ++ return IRQ_HANDLED; ++} ++ ++/* ++ * Enable/Disable hardware battery level event notifications. ++ */ ++static int twl4030battery_hw_level_en(int enable) ++{ ++ int ret; ++ ++ if (enable) { ++ /* unmask VBATOV interrupt for INT1 */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, VBATLVL_IMR1, ++ 0, REG_BCIIMR2A); ++ if (ret) ++ return ret; ++ ++ /* configuring interrupt edge detection for VBATOv */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, ++ VBATLVL_EDRRISIN, REG_BCIEDR3); ++ if (ret) ++ return ret; ++ } else { ++ /* mask VBATOV interrupt for INT1 */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, ++ VBATLVL_IMR1, REG_BCIIMR2A); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Enable/disable hardware battery presence event notifications. ++ */ ++static int twl4030battery_hw_presence_en(int enable) ++{ ++ int ret; ++ ++ if (enable) { ++ /* unmask BATSTS interrupt for INT1 */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_IMR1, ++ 0, REG_BCIIMR1A); ++ if (ret) ++ return ret; ++ ++ /* configuring interrupt edge for BATSTS */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, ++ BATSTS_EDRRISIN | BATSTS_EDRFALLING, REG_BCIEDR2); ++ if (ret) ++ return ret; ++ } else { ++ /* mask BATSTS interrupt for INT1 */ ++ ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, ++ BATSTS_IMR1, REG_BCIIMR1A); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Enable/Disable AC Charge funtionality. ++ */ ++static int twl4030charger_ac_en(int enable, int automatic) ++{ ++ int ret; ++ ++ if (enable) { ++ /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 1 */ ++ if(!automatic) { ++ ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC | CVENAC, ++ (CONFIG_DONE | BCIAUTOWEN), ++ REG_BOOT_BCI); ++ } else { ++ ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0, ++ (CONFIG_DONE | BCIAUTOWEN | BCIAUTOAC | CVENAC), ++ REG_BOOT_BCI); ++ } ++ if (ret) ++ return ret; ++ } else { ++ /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 0*/ ++ ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC, ++ (CONFIG_DONE | BCIAUTOWEN), ++ REG_BOOT_BCI); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Enable/Disable USB Charge funtionality. ++ */ ++int twl4030charger_usb_en(int enable) ++{ ++ u8 value; ++ int ret; ++ unsigned long timeout; ++ ++ if (enable) { ++ /* Check for USB charger conneted */ ++ ret = twl4030charger_presence(); ++ if (ret < 0) ++ return ret; ++ ++ if (!(ret & USB_PW_CONN)) ++ return -ENXIO; ++ ++ /* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */ ++ ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0, ++ (CONFIG_DONE | BCIAUTOWEN | BCIAUTOUSB), ++ REG_BOOT_BCI); ++ if (ret) ++ return ret; ++ ++ ret = clear_n_set(TWL4030_MODULE_USB, 0, PHY_DPLL_CLK, ++ REG_PHY_CLK_CTRL); ++ if (ret) ++ return ret; ++ ++ value = 0; ++ timeout = jiffies + msecs_to_jiffies(50); ++ ++ while ((!(value & PHY_DPLL_CLK)) && ++ time_before(jiffies, timeout)) { ++ udelay(10); ++ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, &value, ++ REG_PHY_CLK_CTRL_STS); ++ if (ret) ++ return ret; ++ } ++ ++ /* OTG_EN (POWER_CTRL[5]) to 1 */ ++ ret = clear_n_set(TWL4030_MODULE_USB, 0, OTG_EN, ++ REG_POWER_CTRL); ++ if (ret) ++ return ret; ++ ++ mdelay(50); ++ ++ /* forcing USBFASTMCHG(BCIMFSTS4[2]) to 1 */ ++ ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, ++ USBFASTMCHG, REG_BCIMFSTS4); ++ if (ret) ++ return ret; ++ } else { ++ twl4030charger_presence(); ++ ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOUSB, ++ (CONFIG_DONE | BCIAUTOWEN), REG_BOOT_BCI); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Return battery temperature ++ * Or < 0 on failure. ++ */ ++static int twl4030battery_temperature(struct twl4030_bci_device_info *di) ++{ ++ u8 val; ++ int temp, curr, volt, res, ret; ++ ++ /* Is a temperature table specified? */ ++ if (!di->pdata->tblsize) ++ return 0; ++ ++ /* Getting and calculating the thermistor voltage */ ++ ret = read_bci_val(T2_BATTERY_TEMP); ++ if (ret < 0) ++ return ret; ++ ++ volt = (ret * TEMP_STEP_SIZE) / TEMP_PSR_R; ++ ++ /* Getting and calculating the supply current in micro ampers */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, ++ REG_BCICTL2); ++ if (ret) ++ return 0; ++ ++ curr = ((val & ITHSENS) + 1) * 10; ++ ++ /* Getting and calculating the thermistor resistance in ohms*/ ++ res = volt * 1000 / curr; ++ ++ /*calculating temperature*/ ++ for (temp = 58; temp >= 0; temp--) { ++ int actual = di->pdata->battery_tmp_tbl[temp]; ++ if ((actual - res) >= 0) ++ break; ++ } ++ ++ /* Negative temperature */ ++ if (temp < 3) { ++ if (temp == 2) ++ temp = -1; ++ else if (temp == 1) ++ temp = -2; ++ else ++ temp = -3; ++ } ++ ++ return temp + 1; ++} ++ ++/* ++ * Return battery voltage ++ * Or < 0 on failure. ++ */ ++static int twl4030battery_voltage(void) ++{ ++ int volt = read_bci_val(T2_BATTERY_VOLT); ++ return (volt * VOLT_STEP_SIZE) / VOLT_PSR_R; ++} ++ ++/* ++ * Get latest battery voltage (using MADC) ++ * ++ * When the BCI is not charging, the BCI voltage registers are not ++ * updated and are 'frozen' but the data can be read through the ++ * MADC. ++ */ ++static int twl4030battery_voltage_madc(void) ++{ ++ struct twl4030_madc_request req; ++ ++ req.channels = (1 << 12); ++ req.do_avg = 0; ++ req.method = TWL4030_MADC_SW1; ++ req.active = 0; ++ req.func_cb = NULL; ++ twl4030_madc_conversion(&req); ++ ++ return (((int) req.rbuf[12]) * VOLT_STEP_SIZE) / VOLT_PSR_R; ++} ++ ++/* ++ * Return the battery current ++ * Or < 0 on failure. ++ */ ++static int twl4030battery_current(void) ++{ ++ int ret, curr = read_bci_val(T2_BATTERY_CUR); ++ u8 val; ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, ++ REG_BCICTL1); ++ if (ret) ++ return ret; ++ ++ if (val & CGAIN) /* slope of 0.44 mV/mA */ ++ return (curr * CURR_STEP_SIZE) / CURR_PSR_R1; ++ else /* slope of 0.88 mV/mA */ ++ return (curr * CURR_STEP_SIZE) / CURR_PSR_R2; ++} ++ ++/* ++ * Return the battery backup voltage ++ * Or < 0 on failure. ++ */ ++static int twl4030backupbatt_voltage(void) ++{ ++ struct twl4030_madc_request req; ++ int temp; ++ ++ req.channels = (1 << 9); ++ req.do_avg = 0; ++ req.method = TWL4030_MADC_SW1; ++ req.active = 0; ++ req.func_cb = NULL; ++ twl4030_madc_conversion(&req); ++ temp = (u16)req.rbuf[9]; ++ ++ return (temp * BK_VOLT_STEP_SIZE) / BK_VOLT_PSR_R; ++} ++ ++/* ++ * Returns an integer value, that means, ++ * NO_PW_CONN no power supply is connected ++ * AC_PW_CONN if the AC power supply is connected ++ * USB_PW_CONN if the USB power supply is connected ++ * AC_PW_CONN + USB_PW_CONN if USB and AC power supplies are both connected ++ * ++ * Or < 0 on failure. ++ */ ++static int twl4030charger_presence(void) ++{ ++ int ret; ++ u8 hwsts; ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &hwsts, ++ REG_STS_HW_CONDITIONS); ++ if (ret) { ++ pr_err("twl4030_bci: error reading STS_HW_CONDITIONS\n"); ++ return ret; ++ } ++ ++ ret = (hwsts & STS_CHG) ? AC_PW_CONN : NO_PW_CONN; ++ ret += (hwsts & STS_VBUS) ? USB_PW_CONN : NO_PW_CONN; ++ ++ if (ret & USB_PW_CONN) ++ usb_charger_flag = 1; ++ else ++ usb_charger_flag = 0; ++ ++ return ret; ++ ++} ++ ++/* ++ * Returns the main charge FSM status ++ * Or < 0 on failure. ++ */ ++static int twl4030bci_status(void) ++{ ++ int ret; ++ u8 status; ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ &status, REG_BCIMSTATEC); ++ if (ret) { ++ pr_err("twl4030_bci: error reading BCIMSTATEC\n"); ++ return ret; ++ } ++ ++#ifdef DEBUG ++ printk("BCI DEBUG: BCIMSTATEC Charge state is 0x%x\n", status); ++#endif ++ return (int) (status & BCIMSTAT_MASK); ++} ++ ++static int read_bci_val(u8 reg) ++{ ++ int ret, temp; ++ u8 val; ++ ++ /* reading MSB */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, ++ reg + 1); ++ if (ret) ++ return ret; ++ ++ temp = ((int)(val & 0x03)) << 8; ++ ++ /* reading LSB */ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, ++ reg); ++ if (ret) ++ return ret; ++ ++ return temp | val; ++} ++ ++/* ++ * Settup the twl4030 BCI module to enable backup ++ * battery charging. ++ */ ++static int twl4030backupbatt_voltage_setup(void) ++{ ++ int ret; ++ ++ /* Starting backup batery charge */ ++ ret = clear_n_set(TWL4030_MODULE_PM_RECEIVER, 0, BBCHEN, ++ REG_BB_CFG); ++ if (ret) ++ return ret; ++ ++ return 0; ++} ++ ++/* ++ * Settup the twl4030 BCI module to measure battery ++ * temperature ++ */ ++static int twl4030battery_temp_setup(void) ++{ ++#ifdef DEBUG ++ u8 i; ++#endif ++ u8 ret; ++ ++ /* Enabling thermistor current */ ++ ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, 0x1B, ++ REG_BCICTL1); ++ if (ret) ++ return ret; ++ ++#ifdef DEBUG ++ twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_BOOT_BCI); ++ printk("BCI DEBUG: BOOT_BCI Value is 0x%x\n", ret); ++ ++ twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_STS_HW_CONDITIONS); ++ printk("BCI DEBUG: STS_HW_CONDITIONS Value is 0x%x\n", ret); ++ ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL1); ++ printk("BCI DEBUG: BCICTL1 Value is 0x%x\n", ret); ++ ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL2); ++ printk("BCI DEBUG: BCICTL2 Value is 0x%x\n", ret); ++ ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, 0x0); ++ printk("BCI DEBUG: BCIMDEN Value is 0x%x\n", ret); ++ ++ twl_i2c_read_u8(TWL4030_MODULE_INTBR, &ret, REG_GPBR1); ++ printk("BCI DEBUG: GPBR1 Value is 0x%x\n", ret); ++ ++ for(i = 0x0; i <= 0x32; i++) ++ { ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, i); ++ printk("BCI DEBUG: BCI 0x%x Value is 0x%x\n", i, ret); ++ } ++#endif ++ ++ return 0; ++} ++ ++/* ++ * Sets and clears bits on an given register on a given module ++ */ ++static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg) ++{ ++ int ret; ++ u8 val = 0; ++ ++ /* Gets the initial register value */ ++ ret = twl_i2c_read_u8(mod_no, &val, reg); ++ if (ret) ++ return ret; ++ /* Clearing all those bits to clear */ ++ val &= ~(clear); ++ ++ /* Setting all those bits to set */ ++ val |= set; ++ ++ /* Update the register */ ++ ret = twl_i2c_write_u8(mod_no, val, reg); ++ if (ret) ++ return ret; ++ ++ return 0; ++} ++ ++static enum power_supply_property twl4030_bci_battery_props[] = { ++ POWER_SUPPLY_PROP_STATUS, ++ POWER_SUPPLY_PROP_ONLINE, ++ POWER_SUPPLY_PROP_VOLTAGE_NOW, ++ POWER_SUPPLY_PROP_CURRENT_NOW, ++ POWER_SUPPLY_PROP_CAPACITY, ++ POWER_SUPPLY_PROP_TEMP, ++}; ++ ++static enum power_supply_property twl4030_bk_bci_battery_props[] = { ++ POWER_SUPPLY_PROP_VOLTAGE_NOW, ++}; ++ ++static void ++twl4030_bk_bci_battery_read_status(struct twl4030_bci_device_info *di) ++{ ++ di->bk_voltage_uV = twl4030backupbatt_voltage(); ++} ++ ++static void twl4030_bk_bci_battery_work(struct work_struct *work) ++{ ++ struct twl4030_bci_device_info *di = container_of(work, ++ struct twl4030_bci_device_info, ++ twl4030_bk_bci_monitor_work.work); ++ ++ if(!di->pdata->no_backup_battery) ++ twl4030_bk_bci_battery_read_status(di); ++ schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500); ++} ++ ++static void twl4030_bci_battery_read_status(struct twl4030_bci_device_info *di) ++{ ++ if(di->charge_status != POWER_SUPPLY_STATUS_DISCHARGING) { ++ di->temp_C = twl4030battery_temperature(di); ++ di->voltage_uV = twl4030battery_voltage(); ++ di->current_uA = twl4030battery_current(); ++ } ++} ++ ++static void ++twl4030_bci_battery_update_status(struct twl4030_bci_device_info *di) ++{ ++ if (power_supply_am_i_supplied(&di->bat)) ++ di->charge_status = POWER_SUPPLY_STATUS_CHARGING; ++ else ++ di->charge_status = POWER_SUPPLY_STATUS_DISCHARGING; ++ twl4030_bci_battery_read_status(di); ++} ++ ++static void twl4030_bci_battery_work(struct work_struct *work) ++{ ++ struct twl4030_bci_device_info *di = container_of(work, ++ struct twl4030_bci_device_info, twl4030_bci_monitor_work.work); ++ ++ twl4030_bci_battery_update_status(di); ++ schedule_delayed_work(&di->twl4030_bci_monitor_work, 100); ++} ++ ++ ++#define to_twl4030_bci_device_info(x) container_of((x), \ ++ struct twl4030_bci_device_info, bat); ++ ++static void twl4030_bci_battery_external_power_changed(struct power_supply *psy) ++{ ++ struct twl4030_bci_device_info *di = to_twl4030_bci_device_info(psy); ++ ++ cancel_delayed_work(&di->twl4030_bci_monitor_work); ++ schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); ++} ++ ++#define to_twl4030_bk_bci_device_info(x) container_of((x), \ ++ struct twl4030_bci_device_info, bk_bat); ++ ++static ssize_t ++show_charge_current(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ u8 ctl; ++ int ret = read_bci_val(REG_BCIIREF1) & 0x1FF; ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ctl, REG_BCICTL1); ++ ++ if (ctl & CGAIN) ++ ret |= 0x200; ++ ++#ifdef DEBUG ++ /* Dump debug */ ++ twl4030battery_temp_setup(); ++#endif ++ ++ return sprintf(buf, "%d\n", ret); ++} ++ ++static ssize_t ++set_charge_current(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long newCurrent; ++ int ret; ++ ++ ret = strict_strtoul(buf, 10, &newCurrent); ++ if (ret) ++ return -EINVAL; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY); ++ if (ret) ++ return ret; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, newCurrent & 0xff, REG_BCIIREF1); ++ if (ret) ++ return ret; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY); ++ if (ret) ++ return ret; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, (newCurrent >> 8) & 0x1, REG_BCIIREF2); ++ if (ret) ++ return ret; ++ ++ /* Set software-controlled charge */ ++ twl4030charger_ac_en(ENABLE, 0); ++ ++ /* Set CGAIN = 0 or 1 */ ++ if(newCurrent > 511) { ++ u8 tmp; ++ ++ /* Set CGAIN = 1 -- need to wait until automatic charge turns off */ ++ while(!ret) { ++ clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, CGAIN | 0x1B, REG_BCICTL1); ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1); ++ ++ ret = tmp & CGAIN; ++ if(!ret) ++ mdelay(50); ++ } ++ } else { ++ u8 tmp; ++ ++ /* Set CGAIN = 0 -- need to wait until automatic charge turns off */ ++ while(!ret) { ++ clear_n_set(TWL4030_MODULE_MAIN_CHARGE, CGAIN, 0x1B, REG_BCICTL1); ++ twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1); ++ ++ ret = !(tmp & CGAIN); ++ if(!ret) ++ mdelay(50); ++ } ++ } ++ ++ /* Set automatic charge (CGAIN = 0/1 persists) */ ++ twl4030charger_ac_en(ENABLE, 1); ++ ++ return count; ++} ++ ++static ssize_t ++show_voltage(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ return sprintf(buf, "%d\n", twl4030battery_voltage_madc()); ++} ++ ++static DEVICE_ATTR(charge_current, S_IRUGO | S_IWUGO, show_charge_current, set_charge_current); ++static DEVICE_ATTR(voltage_now_madc, S_IRUGO, show_voltage, NULL); ++ ++static int twl4030_bk_bci_battery_get_property(struct power_supply *psy, ++ enum power_supply_property psp, ++ union power_supply_propval *val) ++{ ++ struct twl4030_bci_device_info *di = to_twl4030_bk_bci_device_info(psy); ++ ++ switch (psp) { ++ case POWER_SUPPLY_PROP_VOLTAGE_NOW: ++ val->intval = di->bk_voltage_uV; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++static int twl4030_bci_battery_get_property(struct power_supply *psy, ++ enum power_supply_property psp, ++ union power_supply_propval *val) ++{ ++ struct twl4030_bci_device_info *di; ++ int status = 0; ++ ++ di = to_twl4030_bci_device_info(psy); ++ ++ switch (psp) { ++ case POWER_SUPPLY_PROP_STATUS: ++ val->intval = di->charge_status; ++ return 0; ++ default: ++ break; ++ } ++ ++ switch (psp) { ++ case POWER_SUPPLY_PROP_VOLTAGE_NOW: ++ { ++ /* Get latest data from MADC -- not done periodically by ++ worker as this is more expensive, so only do it when we ++ are actually asked for the data... */ ++ if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) ++ val->intval = twl4030battery_voltage_madc(); ++ else ++ val->intval = di->voltage_uV; ++ ++ break; ++ } ++ case POWER_SUPPLY_PROP_CURRENT_NOW: ++ /* FIXME: Get from MADC */ ++ if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) ++ val->intval = 0; ++ else ++ val->intval = di->current_uA; ++ break; ++ case POWER_SUPPLY_PROP_TEMP: ++ val->intval = di->temp_C; ++ break; ++ case POWER_SUPPLY_PROP_ONLINE: ++ status = twl4030bci_status(); ++ if ((status & AC_STATEC) == AC_STATEC) ++ val->intval = POWER_SUPPLY_TYPE_MAINS; ++ else if (usb_charger_flag) ++ val->intval = POWER_SUPPLY_TYPE_USB; ++ else ++ val->intval = 0; ++ break; ++ case POWER_SUPPLY_PROP_CAPACITY: ++ /* Get latest data from MADC -- not done periodically by ++ worker as this is more expensive, so only do it when we ++ are actually asked for the data... */ ++ if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) ++ di->voltage_uV = twl4030battery_voltage_madc(); ++ ++ /* ++ * need to get the correct percentage value per the ++ * battery characteristics. Approx values for now. ++ */ ++ if (di->voltage_uV < 2894 || LVL_1) { ++ val->intval = 5; ++ LVL_1 = 0; ++ } else if ((di->voltage_uV < 3451 && di->voltage_uV > 2894) ++ || LVL_2) { ++ val->intval = 20; ++ LVL_2 = 0; ++ } else if ((di->voltage_uV < 3902 && di->voltage_uV > 3451) ++ || LVL_3) { ++ val->intval = 50; ++ LVL_3 = 0; ++ } else if ((di->voltage_uV < 3949 && di->voltage_uV > 3902) ++ || LVL_4) { ++ val->intval = 75; ++ LVL_4 = 0; ++ } else if (di->voltage_uV > 3949) ++ val->intval = 90; ++ break; ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static char *twl4030_bci_supplied_to[] = { ++ "twl4030_bci_battery", ++}; ++ ++static int __init twl4030_bci_battery_probe(struct platform_device *pdev) ++{ ++ struct twl4030_bci_platform_data *pdata = pdev->dev.platform_data; ++ struct twl4030_bci_device_info *di; ++ int irq; ++ int ret; ++ ++ di = kzalloc(sizeof(*di), GFP_KERNEL); ++ if (!di) ++ return -ENOMEM; ++ ++ di->dev = &pdev->dev; ++ di->bat.name = "twl4030_bci_battery"; ++ di->bat.supplied_to = twl4030_bci_supplied_to; ++ di->bat.num_supplicants = ARRAY_SIZE(twl4030_bci_supplied_to); ++ di->bat.type = POWER_SUPPLY_TYPE_BATTERY; ++ di->bat.properties = twl4030_bci_battery_props; ++ di->bat.num_properties = ARRAY_SIZE(twl4030_bci_battery_props); ++ di->bat.get_property = twl4030_bci_battery_get_property; ++ di->bat.external_power_changed = ++ twl4030_bci_battery_external_power_changed; ++ ++ di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN; ++ ++ di->bk_bat.name = "twl4030_bci_bk_battery"; ++ di->bk_bat.type = POWER_SUPPLY_TYPE_BATTERY; ++ di->bk_bat.properties = twl4030_bk_bci_battery_props; ++ di->bk_bat.num_properties = ARRAY_SIZE(twl4030_bk_bci_battery_props); ++ di->bk_bat.get_property = twl4030_bk_bci_battery_get_property; ++ di->bk_bat.external_power_changed = NULL; ++ di->pdata = pdata; ++ ++ /* Set up clocks */ ++ twl_i2c_write_u8(TWL4030_MODULE_INTBR, MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, REG_GPBR1); ++ ++ twl4030charger_ac_en(ENABLE, CHARGE_MODE); ++ twl4030charger_usb_en(ENABLE); ++ twl4030battery_hw_level_en(ENABLE); ++ twl4030battery_hw_presence_en(ENABLE); ++ ++ platform_set_drvdata(pdev, di); ++ ++ /* settings for temperature sensing */ ++ ret = twl4030battery_temp_setup(); ++ if (ret) ++ goto temp_setup_fail; ++ ++ /* enabling GPCH09 for read back battery voltage */ ++ if(!di->pdata->no_backup_battery) ++ { ++ ret = twl4030backupbatt_voltage_setup(); ++ if (ret) ++ goto voltage_setup_fail; ++ } ++ ++ /* REVISIT do we need to request both IRQs ?? */ ++ ++ /* request BCI interruption */ ++ irq = platform_get_irq(pdev, 1); ++ ret = request_irq(irq, twl4030battery_interrupt, ++ 0, pdev->name, NULL); ++ if (ret) { ++ dev_dbg(&pdev->dev, "could not request irq %d, status %d\n", ++ irq, ret); ++ goto batt_irq_fail; ++ } ++ ++ /* request Power interruption */ ++ irq = platform_get_irq(pdev, 0); ++ ret = request_irq(irq, twl4030charger_interrupt, ++ 0, pdev->name, di); ++ ++ if (ret) { ++ dev_dbg(&pdev->dev, "could not request irq %d, status %d\n", ++ irq, ret); ++ goto chg_irq_fail; ++ } ++ ++ ret = power_supply_register(&pdev->dev, &di->bat); ++ if (ret) { ++ dev_dbg(&pdev->dev, "failed to register main battery\n"); ++ goto batt_failed; ++ } ++ ++ INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bci_monitor_work, ++ twl4030_bci_battery_work); ++ schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); ++ ++ if(!pdata->no_backup_battery) ++ { ++ ret = power_supply_register(&pdev->dev, &di->bk_bat); ++ if (ret) { ++ dev_dbg(&pdev->dev, "failed to register backup battery\n"); ++ goto bk_batt_failed; ++ } ++ } ++ ++ ret = device_create_file(di->bat.dev, &dev_attr_voltage_now_madc); ++ ret = device_create_file(di->bat.dev, &dev_attr_charge_current); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to create sysfs entries\n"); ++ goto bk_batt_failed; ++ } ++ ++ INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bk_bci_monitor_work, ++ twl4030_bk_bci_battery_work); ++ schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500); ++ ++ set_charge_current (NULL, NULL, "1023", 4); ++ return 0; ++ ++bk_batt_failed: ++ if(!pdata->no_backup_battery) ++ power_supply_unregister(&di->bat); ++batt_failed: ++ free_irq(irq, di); ++chg_irq_fail: ++ irq = platform_get_irq(pdev, 1); ++ free_irq(irq, NULL); ++batt_irq_fail: ++voltage_setup_fail: ++temp_setup_fail: ++ twl4030charger_ac_en(DISABLE, CHARGE_MODE); ++ twl4030charger_usb_en(DISABLE); ++ twl4030battery_hw_level_en(DISABLE); ++ twl4030battery_hw_presence_en(DISABLE); ++ kfree(di); ++ ++ return ret; ++} ++ ++static int __exit twl4030_bci_battery_remove(struct platform_device *pdev) ++{ ++ struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); ++ int irq; ++ ++ twl4030charger_ac_en(DISABLE, CHARGE_MODE); ++ twl4030charger_usb_en(DISABLE); ++ twl4030battery_hw_level_en(DISABLE); ++ twl4030battery_hw_presence_en(DISABLE); ++ ++ irq = platform_get_irq(pdev, 0); ++ free_irq(irq, di); ++ ++ irq = platform_get_irq(pdev, 1); ++ free_irq(irq, NULL); ++ ++ flush_scheduled_work(); ++ power_supply_unregister(&di->bat); ++ power_supply_unregister(&di->bk_bat); ++ platform_set_drvdata(pdev, NULL); ++ kfree(di); ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int twl4030_bci_battery_suspend(struct platform_device *pdev, ++ pm_message_t state) ++{ ++ struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); ++ ++ di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN; ++ cancel_delayed_work(&di->twl4030_bci_monitor_work); ++ cancel_delayed_work(&di->twl4030_bk_bci_monitor_work); ++ return 0; ++} ++ ++static int twl4030_bci_battery_resume(struct platform_device *pdev) ++{ ++ struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); ++ ++ schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); ++ schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 50); ++ return 0; ++} ++#else ++#define twl4030_bci_battery_suspend NULL ++#define twl4030_bci_battery_resume NULL ++#endif /* CONFIG_PM */ ++ ++static struct platform_driver twl4030_bci_battery_driver = { ++ .probe = twl4030_bci_battery_probe, ++ .remove = __exit_p(twl4030_bci_battery_remove), ++ .suspend = twl4030_bci_battery_suspend, ++ .resume = twl4030_bci_battery_resume, ++ .driver = { ++ .name = "twl4030_bci", ++ }, ++}; ++ ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS("platform:twl4030_bci"); ++MODULE_AUTHOR("Texas Instruments Inc"); ++ ++static int __init twl4030_battery_init(void) ++{ ++ return platform_driver_register(&twl4030_bci_battery_driver); ++} ++module_init(twl4030_battery_init); ++ ++static void __exit twl4030_battery_exit(void) ++{ ++ platform_driver_unregister(&twl4030_bci_battery_driver); ++} ++module_exit(twl4030_battery_exit); ++ +diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h +index d975c5b..a3470ce 100644 +--- a/include/linux/i2c/twl.h ++++ b/include/linux/i2c/twl.h +@@ -442,6 +442,7 @@ struct twl4030_clock_init_data { + struct twl4030_bci_platform_data { + int *battery_tmp_tbl; + unsigned int tblsize; ++ bool no_backup_battery; + }; + + /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */ +-- +1.6.6.1 + diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch deleted file mode 100644 index 373ab7a443..0000000000 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch +++ /dev/null @@ -1,126 +0,0 @@ -From d24e10c10e57875a65451f46025623f0f77cefbe Mon Sep 17 00:00:00 2001 -From: Gregoire Gentil -Date: Wed, 31 Mar 2010 11:14:04 +0200 -Subject: [PATCH 15/16] backlight: add PWM support - ---- - drivers/video/backlight/backlight.c | 81 +++++++++++++++++++++++++++++++++++ - include/linux/backlight.h | 3 + - 2 files changed, 84 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c -index 7898707..615f40f 100644 ---- a/drivers/video/backlight/backlight.c -+++ b/drivers/video/backlight/backlight.c -@@ -226,6 +226,84 @@ static void bl_device_release(struct device *dev) - kfree(bd); - } - -+static ssize_t backlight_show_boost(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ struct backlight_device *bd = to_backlight_device(dev); -+ return sprintf(buf, "%u\n", bd->props.boost); -+} -+ -+static ssize_t backlight_store_boost(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) -+{ -+ unsigned long i; -+ struct backlight_device *bd = to_backlight_device(dev); -+ -+ if (strict_strtoul(buf, 10, &i)) -+ return -EINVAL; -+ -+ mutex_lock(&bd->ops_lock); -+ if (bd->ops) -+ { -+ if (i) -+ bd->props.boost = 1; -+ else -+ bd->props.boost = 0; -+ backlight_update_status(bd); -+ } -+ mutex_unlock(&bd->ops_lock); -+ -+ return count; -+} -+ -+static ssize_t backlight_show_pwm_fq(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ struct backlight_device *bd = to_backlight_device(dev); -+ return sprintf(buf, "%u\n", bd->props.pwm_fq); -+} -+ -+static ssize_t backlight_store_pwm_fq(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) -+{ -+ unsigned long i; -+ struct backlight_device *bd = to_backlight_device(dev); -+ -+ if (strict_strtoul(buf, 10, &i)) -+ return -EINVAL; -+ -+ mutex_lock(&bd->ops_lock); -+ if (bd->ops) -+ { -+ bd->props.pwm_fq = i; -+ backlight_update_status(bd); -+ } -+ mutex_unlock(&bd->ops_lock); -+ -+ return count; -+} -+ -+static ssize_t backlight_show_min_duty(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ struct backlight_device *bd = to_backlight_device(dev); -+ return sprintf(buf, "%u\n", bd->props.min_duty); -+} -+ -+static ssize_t backlight_store_min_duty(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) -+{ -+ unsigned long i; -+ struct backlight_device *bd = to_backlight_device(dev); -+ -+ if (strict_strtoul(buf, 10, &i)) -+ return -EINVAL; -+ -+ mutex_lock(&bd->ops_lock); -+ if (bd->ops) -+ { -+ bd->props.min_duty = i; -+ backlight_update_status(bd); -+ } -+ mutex_unlock(&bd->ops_lock); -+ -+ return count; -+} -+ - static struct device_attribute bl_device_attributes[] = { - __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), - __ATTR(brightness, 0666, backlight_show_brightness, -@@ -233,6 +311,9 @@ static struct device_attribute bl_device_attributes[] = { - __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, - NULL), - __ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL), -+ __ATTR(boost, 0666, backlight_show_boost, backlight_store_boost), -+ __ATTR(pwm_fq, 0666, backlight_show_pwm_fq, backlight_store_pwm_fq), -+ __ATTR(min_duty, 0666, backlight_show_min_duty, backlight_store_min_duty), - __ATTR_NULL, - }; - -diff --git a/include/linux/backlight.h b/include/linux/backlight.h -index 0f5f578..f3a9b9f 100644 ---- a/include/linux/backlight.h -+++ b/include/linux/backlight.h -@@ -64,6 +64,9 @@ struct backlight_properties { - int fb_blank; - /* Flags used to signal drivers of state changes */ - /* Upper 4 bits are reserved for driver internal use */ -+ int boost; -+ int pwm_fq; -+ int min_duty; - unsigned int state; - - #define BL_CORE_SUSPENDED (1 << 0) /* backlight is suspended */ --- -1.6.6.1 - diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch index 5c1fa3f962..0dc58abfc8 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch @@ -1,14 +1,14 @@ -From d0e8e774fdc82320822246fae3167302730bd7e8 Mon Sep 17 00:00:00 2001 +From 67a87638586acaf7907f94d2f0d3b09190c23880 Mon Sep 17 00:00:00 2001 From: Gregoire Gentil Date: Fri, 12 Mar 2010 11:49:16 +0100 -Subject: [PATCH 16/16] ARM: OMAP: omap3-touchbook: update boardfile +Subject: [PATCH 16/17] ARM: OMAP: omap3-touchbook: update boardfile --- - arch/arm/mach-omap2/board-omap3touchbook.c | 408 +++++++++++++++++++++------- - 1 files changed, 313 insertions(+), 95 deletions(-) + arch/arm/mach-omap2/board-omap3touchbook.c | 417 +++++++++++++++++++++------- + 1 files changed, 322 insertions(+), 95 deletions(-) diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c -index fc3e03c..ec7830e 100644 +index fc3e03c..c22a3e3 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c @@ -1,7 +1,7 @@ @@ -213,10 +213,15 @@ index fc3e03c..ec7830e 100644 /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ static struct regulator_init_data touchbook_vmmc1 = { .constraints = { -@@ -283,6 +369,10 @@ static struct twl4030_codec_data touchbook_codec_data = { +@@ -283,6 +369,15 @@ static struct twl4030_codec_data touchbook_codec_data = { .audio = &touchbook_audio_data, }; ++static struct twl4030_bci_platform_data touchbook_bci_data = { ++ .tblsize = 0, ++ .no_backup_battery = 1, ++}; ++ +static struct twl4030_madc_platform_data touchbook_madc_data = { + .irq_line = 1, +}; @@ -224,7 +229,7 @@ index fc3e03c..ec7830e 100644 static struct twl4030_platform_data touchbook_twldata = { .irq_base = TWL4030_IRQ_BASE, .irq_end = TWL4030_IRQ_END, -@@ -291,6 +381,7 @@ static struct twl4030_platform_data touchbook_twldata = { +@@ -291,10 +386,15 @@ static struct twl4030_platform_data touchbook_twldata = { .usb = &touchbook_usb_data, .gpio = &touchbook_gpio_data, .codec = &touchbook_codec_data, @@ -232,7 +237,15 @@ index fc3e03c..ec7830e 100644 .vmmc1 = &touchbook_vmmc1, .vsim = &touchbook_vsim, .vdac = &touchbook_vdac, -@@ -310,10 +401,18 @@ static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = { + .vpll2 = &touchbook_vpll2, ++ ++ /* TouchBook BCI */ ++ .bci = &touchbook_bci_data, ++ .madc = &touchbook_madc_data, + }; + + static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = { +@@ -310,10 +410,18 @@ static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = { { I2C_BOARD_INFO("bq27200", 0x55), }, @@ -251,7 +264,7 @@ index fc3e03c..ec7830e 100644 /* Standard TouchBook bus */ omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo, ARRAY_SIZE(touchbook_i2c_boardinfo)); -@@ -322,53 +421,16 @@ static int __init omap3_touchbook_i2c_init(void) +@@ -322,53 +430,16 @@ static int __init omap3_touchbook_i2c_init(void) omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo, ARRAY_SIZE(touchBook_i2c_boardinfo)); @@ -311,7 +324,7 @@ index fc3e03c..ec7830e 100644 static struct gpio_led gpio_leds[] = { { .name = "touchbook::usr0", -@@ -412,6 +474,7 @@ static struct gpio_keys_button gpio_buttons[] = { +@@ -412,6 +483,7 @@ static struct gpio_keys_button gpio_buttons[] = { .gpio = 183, .desc = "power", .wakeup = 1, @@ -319,7 +332,7 @@ index fc3e03c..ec7830e 100644 }, }; -@@ -428,23 +491,8 @@ static struct platform_device keys_gpio = { +@@ -428,23 +500,8 @@ static struct platform_device keys_gpio = { }, }; @@ -343,7 +356,7 @@ index fc3e03c..ec7830e 100644 omap2_init_common_hw(mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table, omap35x_dsp_rate_table, omap35x_l3_rate_table); -@@ -456,9 +504,9 @@ static void __init omap3_touchbook_init_irq(void) +@@ -456,9 +513,9 @@ static void __init omap3_touchbook_init_irq(void) } static struct platform_device *omap3_touchbook_devices[] __initdata = { @@ -354,7 +367,7 @@ index fc3e03c..ec7830e 100644 }; static void __init omap3touchbook_flash_init(void) -@@ -500,7 +548,7 @@ static void __init omap3touchbook_flash_init(void) +@@ -500,7 +557,7 @@ static void __init omap3touchbook_flash_init(void) } } @@ -363,7 +376,7 @@ index fc3e03c..ec7830e 100644 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, -@@ -512,6 +560,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { +@@ -512,6 +569,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { .reset_gpio_port[2] = -EINVAL }; @@ -534,7 +547,7 @@ index fc3e03c..ec7830e 100644 static void omap3_touchbook_poweroff(void) { int r; -@@ -525,33 +737,26 @@ static void omap3_touchbook_poweroff(void) +@@ -525,33 +746,26 @@ static void omap3_touchbook_poweroff(void) gpio_direction_output(TB_KILL_POWER_GPIO, 0); } @@ -575,7 +588,7 @@ index fc3e03c..ec7830e 100644 usb_musb_init(); usb_ehci_init(&ehci_pdata); omap3touchbook_flash_init(); -@@ -559,6 +764,17 @@ static void __init omap3_touchbook_init(void) +@@ -559,6 +773,17 @@ static void __init omap3_touchbook_init(void) /* Ensure SDRC pins are mux'd for self-refresh */ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); @@ -593,7 +606,7 @@ index fc3e03c..ec7830e 100644 } static void __init omap3_touchbook_map_io(void) -@@ -567,6 +783,8 @@ static void __init omap3_touchbook_map_io(void) +@@ -567,6 +792,8 @@ static void __init omap3_touchbook_map_io(void) omap2_map_common_io(); } diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch index 48f61b5e93..8a06ead440 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch @@ -1,4 +1,4 @@ -From 0e43db0084633476e60f686627594042ca5cfe3a Mon Sep 17 00:00:00 2001 +From 1f36c057ab83a5c5e8162094fb52022edd5ba9b8 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 4 May 2010 09:01:21 +0200 Subject: [PATCH 17/17] ARM: OMAP: add 800MHz OPP and remove 125MHz one diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig index 4165d4cf74..6f2b7bd989 100644 --- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig +++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32 -# Tue May 4 08:42:43 2010 +# Mon May 10 12:50:28 2010 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -1489,6 +1489,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_DS2782 is not set CONFIG_BATTERY_BQ27x00=y # CONFIG_BATTERY_MAX17040 is not set +CONFIG_TWL4030_BCI_BATTERY=y CONFIG_HWMON=y # CONFIG_HWMON_VID is not set # CONFIG_HWMON_DEBUG_CHIP is not set @@ -1598,7 +1599,7 @@ CONFIG_MFD_CORE=y CONFIG_TWL4030_CORE=y # CONFIG_TWL4030_POWER is not set CONFIG_TWL4030_CODEC=y -# CONFIG_TWL4030_MADC is not set +CONFIG_TWL4030_MADC=y # CONFIG_MFD_TMIO is not set # CONFIG_MFD_T7L66XB is not set # CONFIG_MFD_TC6387XB is not set diff --git a/recipes/linux/linux-omap-psp_2.6.32.bb b/recipes/linux/linux-omap-psp_2.6.32.bb index 007c119494..11e261b7e5 100644 --- a/recipes/linux/linux-omap-psp_2.6.32.bb +++ b/recipes/linux/linux-omap-psp_2.6.32.bb @@ -17,46 +17,44 @@ SRC_URI = "git://arago-project.org/git/people/sriram/ti-psp-omap.git;protocol=gi file://0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch;patch=1 \ file://0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch;patch=1 \ file://0005-board-omap3-beagle-add-DSS2-support.patch;patch=1 \ - file://0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch;patch=1 \ - file://0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch;patch=1 \ - file://0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch;patch=1 \ - file://0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch;patch=1 \ - file://0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch;patch=1 \ - file://0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch;patch=1 \ - file://0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch;patch=1 \ - file://0013-ISP-add-some-more-from-Leopard-imaging-patch.patch;patch=1 \ - file://0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch;patch=1 \ - file://0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch;patch=1 \ - file://0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch;patch=1 \ - file://0017-drivers-mfd-add-twl4030-madc-driver.patch;patch=1 \ - file://0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch;patch=1 \ - file://0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch;patch=1 \ - file://0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch;patch=1 \ - file://0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch;patch=1 \ - file://0022-mmc-don-t-display-single-block-read-console-messages.patch;patch=1 \ - file://0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch;patch=1 \ - file://0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch;patch=1 \ - file://0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch;patch=1 \ - file://0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch;patch=1 \ - file://0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch;patch=1 \ - file://0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch;patch=1 \ - file://0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch;patch=1 \ - file://0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch;patch=1 \ - file://0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch;patch=1 \ - file://0032-modedb.c-add-proper-720p60-mode.patch;patch=1 \ - file://0033-RTC-add-support-for-backup-battery-recharge.patch;patch=1 \ - file://0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch;patch=1 \ - file://0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch;patch=1 \ - file://0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch;patch=1 \ - file://0037-ARM-Add-option-to-allow-userspace-PLE-access.patch;patch=1 \ - file://0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch;patch=1 \ - file://0039-ARM-Expose-some-PMON-registers-through-sysfs.patch;patch=1 \ - file://0040-musb-allow-host-io-without-gadget-module.patch;patch=1 \ - file://0041-MTD-silence-ecc-errors-on-mtdblock0.patch;patch=1 \ - file://0042-ARM-OMAP-update-beagleboard-defconfig.patch;patch=1 \ - file://0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch;patch=1 \ - file://0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch;patch=1 \ - file://0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch;patch=1 \ + file://0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch;patch=1 \ + file://0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch;patch=1 \ + file://0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch;patch=1 \ + file://0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch;patch=1 \ + file://0010-ARM-OMAP-update-beagleboard-defconfig.patch;patch=1 \ + file://0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch;patch=1 \ + file://0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch;patch=1 \ + file://0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch;patch=1 \ + file://0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch;patch=1 \ + file://0015-ISP-add-some-more-from-Leopard-imaging-patch.patch;patch=1 \ + file://0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch;patch=1 \ + file://0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch;patch=1 \ + file://0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch;patch=1 \ + file://0019-drivers-mfd-add-twl4030-madc-driver.patch;patch=1 \ + file://0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch;patch=1 \ + file://0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch;patch=1 \ + file://0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch;patch=1 \ + file://0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch;patch=1 \ + file://0024-mmc-don-t-display-single-block-read-console-messages.patch;patch=1 \ + file://0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch;patch=1 \ + file://0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch;patch=1 \ + file://0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch;patch=1 \ + file://0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch;patch=1 \ + file://0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch;patch=1 \ + file://0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch;patch=1 \ + file://0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch;patch=1 \ + file://0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch;patch=1 \ + file://0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch;patch=1 \ + file://0034-modedb.c-add-proper-720p60-mode.patch;patch=1 \ + file://0035-RTC-add-support-for-backup-battery-recharge.patch;patch=1 \ + file://0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch;patch=1 \ + file://0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch;patch=1 \ + file://0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch;patch=1 \ + file://0039-ARM-Add-option-to-allow-userspace-PLE-access.patch;patch=1 \ + file://0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch;patch=1 \ + file://0041-ARM-Expose-some-PMON-registers-through-sysfs.patch;patch=1 \ + file://0042-musb-allow-host-io-without-gadget-module.patch;patch=1 \ + file://0043-MTD-silence-ecc-errors-on-mtdblock0.patch;patch=1 \ file://defconfig" SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ @@ -71,15 +69,15 @@ SRC_URI_append_omap3-touchbook = " \ file://0006-ads7846-read-max-mix-x-y-from-pdata.patch;patch=1 \ file://0007-ads7846-add-settling-delay-to-pdata.patch;patch=1 \ file://0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch;patch=1 \ - file://0009-DSS2-fix-rotation-offsets.patch;patch=1 \ - file://0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch;patch=1 \ - file://0011-add-touchbook-hid-driver.patch;patch=1 \ - file://0012-Make-backlight-controls-accessible-to-users.patch;patch=1 \ - file://0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch;patch=1 \ - file://0014-ASoC-add-driver-for-omap3-touchbook.patch;patch=1 \ - file://0015-backlight-add-PWM-support.patch;patch=1 \ + file://0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch;patch=1 \ + file://0010-add-touchbook-hid-driver.patch;patch=1 \ + file://0011-Make-backlight-controls-accessible-to-users.patch;patch=1 \ + file://0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch;patch=1 \ + file://0013-ASoC-add-driver-for-omap3-touchbook.patch;patch=1 \ + file://0014-backlight-add-PWM-support.patch;patch=1 \ + file://0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch;patch=1 \ file://0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch;patch=1 \ -# file://0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch;patch=1 \ +# file://0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch;patch=1 \ " addtask quiltfixup before do_patch after do_unpack -- cgit 1.2.3-korg