From 7d39ce1743e1a58c51b35f42fb70f9e31a4c8908 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 2 Jan 2011 16:45:43 +0100 Subject: [PATCH 1/1] BSP: rename beagleboard to TI linux-omap 2.6.37rc: sync with OE --- conf/layer.conf | 10 + conf/machine/beagleboard.conf | 44 + recipes-bsp/linux/files/configs/.empty | 0 ...n-EHCI-serial-camera-and-DVI-on-beag.patch | 55 + ...omap-Beagle-detect-new-xM-revision-B.patch | 43 + ...oard-Add-infrastructure-to-do-fixups.patch | 219 + ...oard-pre-export-GPIOs-to-userspace-w.patch | 57 + ...0005-modedb.c-add-proper-720p60-mode.patch | 28 + ...y-single-block-read-console-messages.patch | 28 + ...-MTD-silence-ecc-errors-on-mtdblock0.patch | 63 + .../0008-Miracle-patch.patch | 504 + .../0009-ARM-OMAP-add-omap_rev_-macros.patch | 81 + ...e-hsclk-in-dsi_pll_init-for-OMAP36XX.patch | 31 + ...d-add-WIP-support-for-beagleboardtoy.patch | 102 + ...911x-return-ENODEV-if-device-is-not-.patch | 29 + ...uchscreen-ads7846-return-ENODEV-if-d.patch | 47 + ...audio-capture-by-default-for-twl4030.patch | 27 + .../0015-MFD-enable-madc-clock.patch | 51 + .../0016-MFD-add-twl4030-madc-driver.patch | 740 + ...AP-Add-twl4030-madc-support-to-Overo.patch | 32 + ...P-Add-twl4030-madc-support-to-Beagle.patch | 35 + ...pport-for-Samsung-LTE430WQ-F0C-panel.patch | 173 + ...upport-for-LG-Philips-LB035Q02-panel.patch | 299 + ...otarg-for-selecting-svideo-or-compos.patch | 75 + ...l4030-move-clock-input-selection-pri.patch | 39 + ...-support-for-backup-battery-recharge.patch | 55 + ...ically-set-musb-mode-in-platform-dat.patch | 49 + ...for-both-cpu-type-and-revision-rathe.patch | 34 + ...OMAP-DSS2-Add-DSS2-support-for-Overo.patch | 355 + ...et-config-options-in-GPMC-per-CS-con.patch | 80 + ...-dma.c-to-set-address-and-length-for.patch | 83 + ...d-driver-for-USRP-Embedded-FPGA-inte.patch | 1889 + .../linux-omap-2.6.37rc/beagleboard/defconfig | 3373 + .../beagleboard/logo_linux_clut224.ppm | 73147 ++++++++++++++++ .../omap3-touchbook/defconfig | 1 + .../linux-omap-2.6.37rc/omap3evm/defconfig | 1 + .../linux/linux-omap-2.6.37rc/overo/defconfig | 1 + .../linux-omap-2.6.37rc/usrp-e1xx/defconfig | 1 + ...eBoard-Adjust-USER-button-pin-for-xM.patch | 28 + ...omap3-beagle-Fix-compile-time-errors.patch | 67 + ...book-make-it-build-against-TI-linux-.patch | 61 + ...port-for-TCT-Zippy-to-Beagle-board-f.patch | 135 + ...ake-beagle-u-boot-partition-writable.patch | 24 + ...-board-omap3-beagle-add-DSS2-support.patch | 200 + ...e-prepare-for-DM3730-based-Beagleboa.patch | 103 + ...oard-Add-infrastructure-to-do-fixups.patch | 172 + ...oard-pre-export-GPIOs-to-userspace-w.patch | 57 + ...oard-initialize-ds1307-and-eeprom-on.patch | 76 + ...RM-OMAP-update-beagleboard-defconfig.patch | 3323 + ...audio-capture-by-default-for-twl4030.patch | 27 + ...roper-fix-for-subpage-read-ECC-error.patch | 35 + ...-Enable-Pre-Multiplied-Alpha-Support.patch | 44 + ...-for-selecting-svideo-or-composite-f.patch | 75 + ...some-more-from-Leopard-imaging-patch.patch | 133 + ...Add-support-for-second-ethernet-port.patch | 110 + ...911x-return-ENODEV-if-device-is-not-.patch | 29 + ...uchscreen-ads7846-return-ENODEV-if-d.patch | 53 + ...-drivers-mfd-add-twl4030-madc-driver.patch | 601 + ...Add-missing-twl4030-madc-header-file.patch | 149 + ...AP-Add-twl4030-madc-support-to-Overo.patch | 32 + ...P-Add-twl4030-madc-support-to-Beagle.patch | 35 + ...dd-vendor-device-ID-for-Ceiva-Wirele.patch | 25 + ...y-single-block-read-console-messages.patch | 28 + ...l4030-move-clock-input-selection-pri.patch | 47 + ...PM-code-and-sync-with-http-www.sakom.patch | 373 + ...c-adjust-for-twl4030-twl-api-changes.patch | 85 + ...-support-for-Samsung-lte430wq-f0c-pa.patch | 161 + ...upport-for-LG-Philips-LB035Q02-panel.patch | 254 + ...h-which-improves-SD-card-s-peformanc.patch | 32 + ...ort-to-sync-the-VFP-state-of-the-cur.patch | 109 + ...-the-HW-context-when-calling-signal-.patch | 211 + ...-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch | 27 + ...0034-modedb.c-add-proper-720p60-mode.patch | 27 + ...-support-for-backup-battery-recharge.patch | 55 + ...Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch | 29 + ...ing-on-alignment-trap-in-kernel-mode.patch | 31 + ...some-CPU-control-registers-via-sysfs.patch | 202 + ...option-to-allow-userspace-PLE-access.patch | 48 + ...o-allow-userspace-access-to-performa.patch | 49 + ...se-some-PMON-registers-through-sysfs.patch | 41 + ...-allow-host-io-without-gadget-module.patch | 90 + ...-MTD-silence-ecc-errors-on-mtdblock0.patch | 59 + ...every-known-beagle-except-revB-uses-.patch | 34 + ...add-support-for-beagleFPGA-expansion.patch | 70 + ...rial-console-corruption-during-cpuid.patch | 57 + ...ry-to-idle-IVA-subsys-when-CONFIG_PM.patch | 37 + ...ACK-try-to-poweron-stuff-on-xM-rev-A.patch | 60 + .../am3517-evm/defconfig | 2140 + .../linux-omap-psp-2.6.32/am37x-evm/defconfig | 2024 + .../beagleboard/configs/cpuidle | 3053 + .../beagleboard/configs/cpuidle-gether | 3051 + .../beagleboard/defconfig | 3053 + .../beagleboard/logo_linux_clut224.ppm | 73147 ++++++++++++++++ ...ab-at-merging-sensor-driver-based-on.patch | 2394 + ...02-mt9t111-Fix-all-checkpatch-errors.patch | 398 + ...03-mt9t111-Pass-v4l2_int_device-data.patch | 40 + .../0004-omap3beagle-Add-camera-support.patch | 352 + ...EMP-omap3beagle-camera-Add-defconfig.patch | 3070 + ...le-camera-Add-support-for-regulators.patch | 238 + ...TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch | 37 + ...-camera-Fix-null-pointer-dereference.patch | 54 + ...TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch | 42 + ...gle-camera-Change-arch-late_initcall.patch | 25 + ...ra-Move-i2c-registration-to-the-main.patch | 107 + ...amera-code-build-if-MT9T111-is-built.patch | 38 + ...agle-camera-Force-mode0-in-cam_xclka.patch | 41 + ...capability-to-change-rate-of-dpll4_m.patch | 33 + ...p3beagle-camera-Force-mode0-in-cam_x.patch | 41 + ...gle-camera-Fix-wrong-XCLKA-selection.patch | 30 + ..._MCLK-to-172.8-MHz-allows-exact-9.6-.patch | 91 + ...Moved-MCLK-setting-to-the-board-file.patch | 209 + ...map3isp-core-Do-smarter-MCLK-setting.patch | 47 + ...p3beagle-camera-set-mclk-for-mt9t111.patch | 36 + .../0021-mt9t111-Fix-max-supported-xclk.patch | 28 + ...agle-camera-Clarify-regulators-names.patch | 103 + ...p3beagle-camera-Fix-powerup-sequence.patch | 103 + ...p3beagle-camera-Change-vaux4-to-1.8v.patch | 32 + ...ra-Rename-regulators-to-match-actual.patch | 110 + ...ra-Complement-remainig-sensor-hw-con.patch | 37 + ...ct-function-retval-and-cleanup-print.patch | 48 + ...era-Set-padconf-settings-in-cam-init.patch | 66 + ...ra-only-register-camera-driver-for-3.patch | 31 + ...rk-in-progress-for-camera-enablement.patch | 53 + ...m-Add-support-for-MT9V113-VGA-Sensor.patch | 2441 + ...13-Fixed-sensor-nitialization-issues.patch | 294 + ...0033-mt9v113-Fix-wrong-active-widths.patch | 29 + ...ng-check-on-non-interlaced-sensor-on.patch | 34 + ...bad-YUV_BT-checks-in-datapath_config.patch | 45 + ...-vd_pol-to-0-by-default-on-all-cases.patch | 35 + ...cdc-Set-datalines-to-10-for-YUV_SYNC.patch | 29 + ...gle-camera-Fix-parallel-i-f-settings.patch | 43 + ...ra-Clean-up-Remove-unneccessary-code.patch | 118 + ...n-Up-Remove-unneccessary-code-printf.patch | 390 + ...ax-clk-input-changed-as-per-the-spec.patch | 54 + ...3beagle-camera-Further-clode-cleanup.patch | 237 + ...ngs-from-Aptima-used-to-increase-FPS.patch | 135 + ...9v113-AE-param-tuned-to-get-28-30FPS.patch | 33 + ...p3beagle-camera-Cleanup-of-boardfile.patch | 161 + ...eagle-camera-Cleanup-regulator-usage.patch | 172 + ...le-camera-Bring-back-mt9t111-support.patch | 251 + ...VE-v4l2-Delete-MT9T111-sensor-driver.patch | 2402 + ...soc-camera-Add-mt9t112-camera-driver.patch | 1285 + ...12-modify-exiting-conditions-from-st.patch | 31 + ...e-from-soc_camera-to-v4l2-int-device.patch | 934 + ...9t112-Add-more-info-to-public-header.patch | 29 + ...-mt9t112-Fix-null-pointer-kernel-bug.patch | 84 + ...omap3beagle-Add-MT9T112-to-defconfig.patch | 26 + ...ra-Change-MT9T111-references-to-new-.patch | 207 + ...m-Fix-multi-pixel-format-negotiation.patch | 26 + ...le-camera-Bring-back-mt9t111-support.patch | 43 + ...mt9t112-Do-init_camera-every-powerup.patch | 57 + ...camera-Switch-flag-for-no-sensor-ISP.patch | 26 + .../0060-mt9t112-Add-back-3MP-basesize.patch | 37 + ...-Prepare-for-24MHz-EXTCLK-and-30-fps.patch | 63 + ...amera-Prepare-24MHz-xclk-for-mt9t112.patch | 62 + ...register-settings-for-mt9t111-sensor.patch | 109 + ...-mt9t112-Remove-smart-size-selection.patch | 188 + ...-bogus-Kconfig-depend-on-PCI-and-add.patch | 38 + ...d-Context-selection-to-configuration.patch | 96 + ...67-mt9t112-Disable-JPEG-in-Context-B.patch | 32 + ...ke-context-B-stream-unlimited-frames.patch | 30 + ...9t112-Fix-pll-p-dividers-abstraction.patch | 58 + ...2-Adjust-50-60Hz-flickering-settings.patch | 51 + ...autofocus-at-the-end-of-context-swit.patch | 35 + ...-camera-Fix-dual-sensor-registration.patch | 43 + ...-mt9v113-Fix-State-variable-handling.patch | 68 + ...-sensor-rest-to-after-applying-power.patch | 65 + .../0075-omap3beagle-Add-camera-bootarg.patch | 108 + .../linux-omap-psp-2.6.32/dm37x-evm/defconfig | 2024 + ...01-ARM-OMAP-add-spi-platform-devices.patch | 62 + .../0002-MMA7455L-accelerometer-driver.patch | 683 + ..._battery-remove-error-message-output.patch | 53 + ...004-bq27x00_battery-add-charged-gpio.patch | 65 + .../0005-adf7846-add-more-debugging.patch | 99 + ...-ads7846-read-max-mix-x-y-from-pdata.patch | 35 + ...-ads7846-add-settling-delay-to-pdata.patch | 59 + ...slate-X-Y-coordinates-for-the-video-.patch | 99 + ...-checks-when-rotation-is-90-or-270-d.patch | 52 + .../0010-add-touchbook-hid-driver.patch | 339 + ...cklight-controls-accessible-to-users.patch | 25 + ...ror-out-when-there-s-no-pendown-gpio.patch | 30 + ...-ASoC-add-driver-for-omap3-touchbook.patch | 350 + .../0014-backlight-add-PWM-support.patch | 126 + ...4030-BCI-driver-from-2.6.29-to-2.6.3.patch | 1367 + ...MAP-omap3-touchbook-update-boardfile.patch | 620 + ...add-800MHz-OPP-and-remove-125MHz-one.patch | 48 + .../omap3-touchbook/defconfig | 3043 + .../linux-omap-psp-2.6.32/omap3evm/defconfig | 3088 + .../linux-omap-psp-2.6.32/overo/defconfig | 2467 + .../linux/linux-omap-psp-2.6.32/porches.patch | 55 + recipes-bsp/linux/linux-omap-psp_2.6.32.bb | 176 + recipes-bsp/linux/linux-omap.inc | 7 + recipes-bsp/linux/linux-omap3.inc | 16 + recipes-bsp/linux/linux-omap_2.6.37rc.bb | 57 + recipes-bsp/linux/linux.inc | 257 + recipes-bsp/linux/multi-kernel.inc | 97 + recipes-bsp/u-boot/u-boot.inc | 67 + ...-BeagleBoard-move-ramdisk-parameters.patch | 38 + ...upport-for-second-and-third-mmc-chan.patch | 126 + ...nable-support-for-second-and-third-m.patch | 56 + ...c-bus-switching-for-Beagle-and-Overo.patch | 49 + ...d-board-revision-detection-for-Overo.patch | 187 + ...gle-revision-detection-to-recognize-.patch | 165 + ...to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch | 143 + ...for-rev-3.1.2-check-and-display-max-.patch | 105 + ...purate-boot-arg-for-overo-and-beagle.patch | 70 + ...ansion-board-type-version-using-eepr.patch | 129 + ...le-config-eeprom-to-set-u-boot-env-v.patch | 81 + ...le-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch | 34 + ...o-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch | 25 + ...xcessively-long-delays-in-i2c-driver.patch | 52 + ...w-expansion-boards-with-any-vendor-I.patch | 47 + ...ge-address-of-expansion-eeprom-to-0x.patch | 25 + ...n-t-attempt-to-set-up-second-RAM-ban.patch | 49 + ...015-OMAP3-mem.c-enhance-the-RAM-test.patch | 52 + ...ail-gracefully-if-no-nand-is-present.patch | 27 + ...tions-to-support-sysinfo-cpu-and-cpu.patch | 68 + ...o-update-cpu-detection-for-36XX-37XX.patch | 196 + ...cks-update-clock-setup-for-36XX-37XX.patch | 826 + ...AP3-beagle-add-support-for-Beagle-xM.patch | 137 + ...ro-remove-omapfb.debug-y-from-defaul.patch | 53 + ...lement-expansionboard-detection-base.patch | 157 + ...lay-message-about-I2C-errors-being-e.patch | 26 + ...agleboard-fix-TCT-expansionboard-IDs.patch | 27 + .../0025-Add-DSS-driver-for-OMAP3.patch | 353 + .../0026-Enable-DSS-driver-for-Beagle.patch | 158 + ...-don-t-set-mpurate-on-xM-in-bootargs.patch | 24 + ...ean-up-L2-cache-enable-disable-funct.patch | 112 + ...MAP3-convert-setup_auxcr-to-pure-asm.patch | 99 + ...ex-A8-errata-workarounds-only-on-aff.patch | 46 + ...-more-expansionboards-based-on-http-.patch | 61 + ...-mpurate-to-600-for-revB-and-revC1-3.patch | 29 + ...rettify-expansionboard-message-a-bit.patch | 25 + ...-pinmux-for-Tincantools-Trainer-expa.patch | 53 + ...P3-Beagle-set-mpurate-to-1000-for-xM.patch | 24 + ...rease-bootdelay-to-3-use-VGA-for-def.patch | 34 + ...pass-expansionboard-name-in-bootargs.patch | 87 + ...ed-configurations-for-xM-Rev-A-board.patch | 29 + .../0038-BeagleBoard-Added-LED-driver.patch | 164 + .../u-boot/u-boot/0039-Add-led-command.patch | 256 + ...env-beaglerev-for-AxBx-Cx-xMA-for-be.patch | 42 + .../0041-BeagleBoard-Enabled-LEDs.patch | 47 + ...ew-command-for-status-of-USER-button.patch | 97 + ...Board-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch | 35 + .../u-boot/0044-Beagleboard-Adjust-boot.patch | 115 + ...5-BeagleBoard-Enable-pullups-on-i2c2.patch | 46 + ...Board-Add-camera-to-default-bootargs.patch | 50 + recipes-bsp/u-boot/u-boot/fw_env.config | 8 + recipes-bsp/u-boot/u-boot_git.bb | 62 + recipes-bsp/x-load/signgp.bb | 19 + recipes-bsp/x-load/signgp/signGP.c | 108 + ...47fcbc54ecc7a75f9ad45a31042a04d8a2ce.patch | 35 + recipes-bsp/x-load/x-load-git/name.patch | 13 + recipes-bsp/x-load/x-load-git/xm-mem.patch | 237 + recipes-bsp/x-load/x-load.inc | 57 + recipes-bsp/x-load/x-load_git.bb | 22 + 256 files changed, 215790 insertions(+) create mode 100644 conf/layer.conf create mode 100644 conf/machine/beagleboard.conf create mode 100644 recipes-bsp/linux/files/configs/.empty create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0001-ARM-OMAP-Power-on-EHCI-serial-camera-and-DVI-on-beag.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0002-omap-Beagle-detect-new-xM-revision-B.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0003-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0004-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0005-modedb.c-add-proper-720p60-mode.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0006-mmc-don-t-display-single-block-read-console-messages.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0007-MTD-silence-ecc-errors-on-mtdblock0.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0008-Miracle-patch.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0009-ARM-OMAP-add-omap_rev_-macros.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0010-OMAP-DSS2-enable-hsclk-in-dsi_pll_init-for-OMAP36XX.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0011-omap3-beagleboard-add-WIP-support-for-beagleboardtoy.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0012-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0013-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0014-ASoC-enable-audio-capture-by-default-for-twl4030.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0015-MFD-enable-madc-clock.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0016-MFD-add-twl4030-madc-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0017-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0018-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0019-OMAP-DSS2-Add-support-for-Samsung-LTE430WQ-F0C-panel.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0020-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0021-OMAP-DSS2-add-bootarg-for-selecting-svideo-or-compos.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0022-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0023-RTC-add-support-for-backup-battery-recharge.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0024-ARM-OMAP-automatically-set-musb-mode-in-platform-dat.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0025-OMAP-DSS2-check-for-both-cpu-type-and-revision-rathe.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0026-OMAP-DSS2-Add-DSS2-support-for-Overo.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0027-Add-defines-to-set-config-options-in-GPMC-per-CS-con.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/0029-usrp-embedded-Add-driver-for-USRP-Embedded-FPGA-inte.patch create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/defconfig create mode 100644 recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/logo_linux_clut224.ppm create mode 120000 recipes-bsp/linux/linux-omap-2.6.37rc/omap3-touchbook/defconfig create mode 120000 recipes-bsp/linux/linux-omap-2.6.37rc/omap3evm/defconfig create mode 120000 recipes-bsp/linux/linux-omap-2.6.37rc/overo/defconfig create mode 120000 recipes-bsp/linux/linux-omap-2.6.37rc/usrp-e1xx/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0001-BeagleBoard-Adjust-USER-button-pin-for-xM.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagle-every-known-beagle-except-revB-uses-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagle-add-support-for-beagleFPGA-expansion.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0046-attemp-to-fix-serial-console-corruption-during-cpuid.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0047-clock34xx-only-try-to-idle-IVA-subsys-when-CONFIG_PM.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/0048-HACK-try-to-poweron-stuff-on-xM-rev-A.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/am3517-evm/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/am37x-evm/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle-gether create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/logo_linux_clut224.ppm create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0001-mt9t111-first-stab-at-merging-sensor-driver-based-on.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0002-mt9t111-Fix-all-checkpatch-errors.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0003-mt9t111-Pass-v4l2_int_device-data.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0004-omap3beagle-Add-camera-support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0005-TEMP-omap3beagle-camera-Add-defconfig.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0006-omap3beagle-camera-Add-support-for-regulators.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0007-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0008-omap3beagle-camera-Fix-null-pointer-dereference.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0009-Revert-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0010-omap3beagle-camera-Change-arch-late_initcall.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0011-omap3beagle-camera-Move-i2c-registration-to-the-main.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0012-ARM-OMAP3-make-camera-code-build-if-MT9T111-is-built.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0013-DEBUG-omap3beagle-camera-Force-mode0-in-cam_xclka.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0014-OMAP3-CLOCK-Add-capability-to-change-rate-of-dpll4_m.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0015-Revert-DEBUG-omap3beagle-camera-Force-mode0-in-cam_x.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0016-omap3beagle-camera-Fix-wrong-XCLKA-selection.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0018-Fix-Moved-MCLK-setting-to-the-board-file.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0020-omap3beagle-camera-set-mclk-for-mt9t111.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0021-mt9t111-Fix-max-supported-xclk.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0022-omap3beagle-camera-Clarify-regulators-names.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0023-omap3beagle-camera-Fix-powerup-sequence.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0024-omap3beagle-camera-Change-vaux4-to-1.8v.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0025-omap3beagle-camera-Rename-regulators-to-match-actual.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0026-omap3beagle-camera-Complement-remainig-sensor-hw-con.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0027-mt9t111-Fix-detect-function-retval-and-cleanup-print.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0028-omap3beagle-camera-Set-padconf-settings-in-cam-init.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0029-omap3beagle-camera-only-register-camera-driver-for-3.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0030-WIP-mt9t111-Work-in-progress-for-camera-enablement.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0031-BeagleXM-Cam-Add-support-for-MT9V113-VGA-Sensor.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0032-MT9V113-Fixed-sensor-nitialization-issues.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0033-mt9v113-Fix-wrong-active-widths.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0034-omap3isp-Fix-Wrong-check-on-non-interlaced-sensor-on.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0035-omap3isp-Fix-bad-YUV_BT-checks-in-datapath_config.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0036-omap3isp-Set-vd_pol-to-0-by-default-on-all-cases.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0037-omap3isp-ccdc-Set-datalines-to-10-for-YUV_SYNC.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0038-omap3beagle-camera-Fix-parallel-i-f-settings.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0039-omap3beagle-camera-Clean-up-Remove-unneccessary-code.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0040-mt9v113-Clean-Up-Remove-unneccessary-code-printf.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0041-MT9V113-Min-Max-clk-input-changed-as-per-the-spec.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0042-omap3beagle-camera-Further-clode-cleanup.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0043-mt9v113-Settings-from-Aptima-used-to-increase-FPS.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0044-mt9v113-AE-param-tuned-to-get-28-30FPS.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0045-omap3beagle-camera-Cleanup-of-boardfile.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0046-omap3beagle-camera-Cleanup-regulator-usage.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0047-omap3beagle-camera-Bring-back-mt9t111-support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0048-REMOVE-v4l2-Delete-MT9T111-sensor-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0049-V4L-DVB-13670-soc-camera-Add-mt9t112-camera-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0050-soc-camera-mt9t112-modify-exiting-conditions-from-st.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0051-mt9t112-Migrate-from-soc_camera-to-v4l2-int-device.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0052-mt9t112-Add-more-info-to-public-header.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0054-DEBUG-omap3beagle-Add-MT9T112-to-defconfig.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0055-omap3beagle-camera-Change-MT9T111-references-to-new-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0056-omap34xxcam-Fix-multi-pixel-format-negotiation.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0057-SQUASH-omap3beagle-camera-Bring-back-mt9t111-support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0058-mt9t112-Do-init_camera-every-powerup.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0059-omap3beagle-camera-Switch-flag-for-no-sensor-ISP.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0060-mt9t112-Add-back-3MP-basesize.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0061-mt9t112-Prepare-for-24MHz-EXTCLK-and-30-fps.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0062-omap3beagle-camera-Prepare-24MHz-xclk-for-mt9t112.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0064-mt9t112-Remove-smart-size-selection.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0065-rtl8192su-remove-bogus-Kconfig-depend-on-PCI-and-add.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0066-mt9t112-Add-Context-selection-to-configuration.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0067-mt9t112-Disable-JPEG-in-Context-B.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0068-mt9t112-Make-context-B-stream-unlimited-frames.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0069-mt9t112-Fix-pll-p-dividers-abstraction.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0070-mt9t112-Adjust-50-60Hz-flickering-settings.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0071-mt9t112-Trigger-autofocus-at-the-end-of-context-swit.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0072-omap3beagle-camera-Fix-dual-sensor-registration.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0074-Move-sensor-rest-to-after-applying-power.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0075-omap3beagle-Add-camera-bootarg.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/dm37x-evm/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch create mode 100644 recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/omap3evm/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/overo/defconfig create mode 100644 recipes-bsp/linux/linux-omap-psp-2.6.32/porches.patch create mode 100644 recipes-bsp/linux/linux-omap-psp_2.6.32.bb create mode 100644 recipes-bsp/linux/linux-omap.inc create mode 100644 recipes-bsp/linux/linux-omap3.inc create mode 100644 recipes-bsp/linux/linux-omap_2.6.37rc.bb create mode 100644 recipes-bsp/linux/linux.inc create mode 100644 recipes-bsp/linux/multi-kernel.inc create mode 100644 recipes-bsp/u-boot/u-boot.inc create mode 100644 recipes-bsp/u-boot/u-boot/0001-BeagleBoard-move-ramdisk-parameters.patch create mode 100644 recipes-bsp/u-boot/u-boot/0001-OMAP-mmc-add-support-for-second-and-third-mmc-chan.patch create mode 100644 recipes-bsp/u-boot/u-boot/0001-OMAP3-Beagle-enable-support-for-second-and-third-m.patch create mode 100644 recipes-bsp/u-boot/u-boot/0001-OMAP3-enable-i2c-bus-switching-for-Beagle-and-Overo.patch create mode 100644 recipes-bsp/u-boot/u-boot/0002-OMAP3-add-board-revision-detection-for-Overo.patch create mode 100644 recipes-bsp/u-boot/u-boot/0003-OMAP3-update-Beagle-revision-detection-to-recognize-.patch create mode 100644 recipes-bsp/u-boot/u-boot/0004-OMAP3-Set-VAUX2-to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch create mode 100644 recipes-bsp/u-boot/u-boot/0005-OMAP3-add-entry-for-rev-3.1.2-check-and-display-max-.patch create mode 100644 recipes-bsp/u-boot/u-boot/0006-OMAP3-add-mpurate-boot-arg-for-overo-and-beagle.patch create mode 100644 recipes-bsp/u-boot/u-boot/0007-OMAP3-detect-expansion-board-type-version-using-eepr.patch create mode 100644 recipes-bsp/u-boot/u-boot/0008-OMAP3-Overo-enable-config-eeprom-to-set-u-boot-env-v.patch create mode 100644 recipes-bsp/u-boot/u-boot/0009-OMAP3-Overo-enable-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch create mode 100644 recipes-bsp/u-boot/u-boot/0010-OMAP3-Overo-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch create mode 100644 recipes-bsp/u-boot/u-boot/0011-OMAP3-trim-excessively-long-delays-in-i2c-driver.patch create mode 100644 recipes-bsp/u-boot/u-boot/0012-OMAP3-Overo-allow-expansion-boards-with-any-vendor-I.patch create mode 100644 recipes-bsp/u-boot/u-boot/0013-OMAP3-Overo-change-address-of-expansion-eeprom-to-0x.patch create mode 100644 recipes-bsp/u-boot/u-boot/0014-OMAP3-board.c-don-t-attempt-to-set-up-second-RAM-ban.patch create mode 100644 recipes-bsp/u-boot/u-boot/0015-OMAP3-mem.c-enhance-the-RAM-test.patch create mode 100644 recipes-bsp/u-boot/u-boot/0016-env_nand.c-fail-gracefully-if-no-nand-is-present.patch create mode 100644 recipes-bsp/u-boot/u-boot/0017-OMAP3-add-definitions-to-support-sysinfo-cpu-and-cpu.patch create mode 100644 recipes-bsp/u-boot/u-boot/0018-OMAP3-sys_info-update-cpu-detection-for-36XX-37XX.patch create mode 100644 recipes-bsp/u-boot/u-boot/0019-OMAP3-clocks-update-clock-setup-for-36XX-37XX.patch create mode 100644 recipes-bsp/u-boot/u-boot/0020-OMAP3-beagle-add-support-for-Beagle-xM.patch create mode 100644 recipes-bsp/u-boot/u-boot/0021-OMAP3-Beagle-Overo-remove-omapfb.debug-y-from-defaul.patch create mode 100644 recipes-bsp/u-boot/u-boot/0022-OMAP3-beagle-implement-expansionboard-detection-base.patch create mode 100644 recipes-bsp/u-boot/u-boot/0023-beagleboard-display-message-about-I2C-errors-being-e.patch create mode 100644 recipes-bsp/u-boot/u-boot/0024-beagleboard-fix-TCT-expansionboard-IDs.patch create mode 100644 recipes-bsp/u-boot/u-boot/0025-Add-DSS-driver-for-OMAP3.patch create mode 100644 recipes-bsp/u-boot/u-boot/0026-Enable-DSS-driver-for-Beagle.patch create mode 100644 recipes-bsp/u-boot/u-boot/0027-beagleboardXM-don-t-set-mpurate-on-xM-in-bootargs.patch create mode 100644 recipes-bsp/u-boot/u-boot/0028-OMAP3-fix-and-clean-up-L2-cache-enable-disable-funct.patch create mode 100644 recipes-bsp/u-boot/u-boot/0029-OMAP3-convert-setup_auxcr-to-pure-asm.patch create mode 100644 recipes-bsp/u-boot/u-boot/0030-OMAP3-apply-Cortex-A8-errata-workarounds-only-on-aff.patch create mode 100644 recipes-bsp/u-boot/u-boot/0031-OMAP3-beagle-add-more-expansionboards-based-on-http-.patch create mode 100644 recipes-bsp/u-boot/u-boot/0032-OMAP3-beagle-set-mpurate-to-600-for-revB-and-revC1-3.patch create mode 100644 recipes-bsp/u-boot/u-boot/0033-OMAP3-beagle-prettify-expansionboard-message-a-bit.patch create mode 100644 recipes-bsp/u-boot/u-boot/0034-OMAP3-beagle-add-pinmux-for-Tincantools-Trainer-expa.patch create mode 100644 recipes-bsp/u-boot/u-boot/0035-OMAP3-Beagle-set-mpurate-to-1000-for-xM.patch create mode 100644 recipes-bsp/u-boot/u-boot/0036-OMAP3-Beagle-decrease-bootdelay-to-3-use-VGA-for-def.patch create mode 100644 recipes-bsp/u-boot/u-boot/0037-OMAP3-beagle-pass-expansionboard-name-in-bootargs.patch create mode 100644 recipes-bsp/u-boot/u-boot/0038-Added-configurations-for-xM-Rev-A-board.patch create mode 100644 recipes-bsp/u-boot/u-boot/0038-BeagleBoard-Added-LED-driver.patch create mode 100644 recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch create mode 100644 recipes-bsp/u-boot/u-boot/0039-OMAP3-beagle-setenv-beaglerev-for-AxBx-Cx-xMA-for-be.patch create mode 100644 recipes-bsp/u-boot/u-boot/0041-BeagleBoard-Enabled-LEDs.patch create mode 100644 recipes-bsp/u-boot/u-boot/0042-BeagleBoard-New-command-for-status-of-USER-button.patch create mode 100644 recipes-bsp/u-boot/u-boot/0043-BeagleBoard-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch create mode 100644 recipes-bsp/u-boot/u-boot/0044-Beagleboard-Adjust-boot.patch create mode 100644 recipes-bsp/u-boot/u-boot/0045-BeagleBoard-Enable-pullups-on-i2c2.patch create mode 100644 recipes-bsp/u-boot/u-boot/0046-BeagleBoard-Add-camera-to-default-bootargs.patch create mode 100644 recipes-bsp/u-boot/u-boot/fw_env.config create mode 100644 recipes-bsp/u-boot/u-boot_git.bb create mode 100644 recipes-bsp/x-load/signgp.bb create mode 100644 recipes-bsp/x-load/signgp/signGP.c create mode 100644 recipes-bsp/x-load/x-load-git/bb8547fcbc54ecc7a75f9ad45a31042a04d8a2ce.patch create mode 100644 recipes-bsp/x-load/x-load-git/name.patch create mode 100644 recipes-bsp/x-load/x-load-git/xm-mem.patch create mode 100644 recipes-bsp/x-load/x-load.inc create mode 100644 recipes-bsp/x-load/x-load_git.bb diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..a507cbc --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, prepend to BBPATH +BBPATH := "${LAYERDIR}:${BBPATH}" + +# We have a recipes directory, add to BBFILES +BBFILES := "${BBFILES} ${LAYERDIR}/recipes*/*/*.bb \ + ${LAYERDIR}/recipes*/*/*.bbappend" + +BBFILE_COLLECTIONS += "beagle-bsp" +BBFILE_PATTERN_beagle-bsp := "^${LAYERDIR}/" +BBFILE_PRIORITY_beagle-bsp = "10" diff --git a/conf/machine/beagleboard.conf b/conf/machine/beagleboard.conf new file mode 100644 index 0000000..ce48019 --- /dev/null +++ b/conf/machine/beagleboard.conf @@ -0,0 +1,44 @@ +#@TYPE: Machine +#@NAME: Beagleboard machine +#@DESCRIPTION: Machine configuration for the http://beagleboard.org/ board +TARGET_ARCH = "arm" + +PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg" +XSERVER = "xserver-xorg \ + xf86-input-evdev \ + xf86-input-mouse \ + xf86-video-omapfb \ + xf86-input-keyboard" + +# Only has DVI connector for external screen +GUI_MACHINE_CLASS = "bigscreen" + +require conf/machine/include/omap3.inc + +PREFERRED_PROVIDER_virtual/kernel = "linux-omap-psp" + +IMAGE_FSTYPES += "tar.bz2 ubi" +EXTRA_IMAGECMD_jffs2 = "-lnp " + +# Guesswork +SERIAL_CONSOLE = "115200 ttyS2" + +UBOOT_MACHINE = "omap3_beagle_config" + +# do ubiattach /dev/ubi_ctrl -m 4 +# From dmesg: +# UBI: smallest flash I/O unit: 2048 +# UBI: logical eraseblock size: 129024 bytes +# from ubiattach stdout: +# UBI device number 0, total 1996 LEBs +MKUBIFS_ARGS = "-m 2048 -e 129024 -c 1996" + +# do ubiattach /dev/ubi_ctrl -m 4 +# from dmesg: +# UBI: smallest flash I/O unit: 2048 +# UBI: physical eraseblock size: 131072 bytes (128 KiB) +# UBI: sub-page size: 512 +UBINIZE_ARGS = "-m 2048 -p 128KiB -s 512" + +# and sdio +MACHINE_FEATURES = "kernel26 screen apm usbgadget usbhost vfat alsa" diff --git a/recipes-bsp/linux/files/configs/.empty b/recipes-bsp/linux/files/configs/.empty new file mode 100644 index 0000000..e69de29 diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0001-ARM-OMAP-Power-on-EHCI-serial-camera-and-DVI-on-beag.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0001-ARM-OMAP-Power-on-EHCI-serial-camera-and-DVI-on-beag.patch new file mode 100644 index 0000000..ff2a1ce --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0001-ARM-OMAP-Power-on-EHCI-serial-camera-and-DVI-on-beag.patch @@ -0,0 +1,55 @@ +From 71b7d633e566195b065e09e97164bec046ca7b6d Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 7 Oct 2010 09:25:45 +0200 +Subject: [PATCH 01/29] ARM: OMAP: Power on EHCI, serial, camera and DVI on beagleboard-xM + +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle.c | 26 ++++++++++++++++++++++++-- + 1 files changed, 24 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 6c12760..6e8a1b9 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -297,13 +297,35 @@ static int beagle_twl_gpio_setup(struct device *dev, + gpio_request(gpio + 1, "EHCI_nOC"); + gpio_direction_input(gpio + 1); + +- /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ ++ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active ++ * high / others active low) */ + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); +- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); ++ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) ++ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); ++ else ++ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); ++ ++ /* DVI reset GPIO is different between revisions */ ++ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) ++ beagle_dvi_device.reset_gpio = 129; ++ else ++ beagle_dvi_device.reset_gpio = 170; ++ ++ /* Power on DVI, Serial and PWR led */ ++ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { ++ gpio_request(gpio + 1, "nDVI_PWR_EN"); ++ gpio_direction_output(gpio + 1, 0); ++ } + + /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ + gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; + ++ /* Power on camera interface on P7/P8 or DVI on A2 and beyond */ ++ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { ++ gpio_request(gpio + 2, "CAM_EN"); ++ gpio_direction_output(gpio + 2, 1); ++ } ++ + return 0; + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0002-omap-Beagle-detect-new-xM-revision-B.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0002-omap-Beagle-detect-new-xM-revision-B.patch new file mode 100644 index 0000000..93a792a --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0002-omap-Beagle-detect-new-xM-revision-B.patch @@ -0,0 +1,43 @@ +From 60e119550f5a782c512c19d86a08313ae2ffa876 Mon Sep 17 00:00:00 2001 +From: Robert Nelson +Date: Tue, 9 Nov 2010 08:34:55 -0600 +Subject: [PATCH 02/29] omap: Beagle: detect new xM revision B + +The xM B uses a DM3730 ES1.1 over the ES1.0 on xM A's, no other board changes. + +Signed-off-by: Robert Nelson +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 6e8a1b9..be8c4ec 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -58,7 +58,8 @@ + * AXBX = GPIO173, GPIO172, GPIO171: 1 1 1 + * C1_3 = GPIO173, GPIO172, GPIO171: 1 1 0 + * C4 = GPIO173, GPIO172, GPIO171: 1 0 1 +- * XM = GPIO173, GPIO172, GPIO171: 0 0 0 ++ * XMA = GPIO173, GPIO172, GPIO171: 0 0 0 ++ * XMB = GPIO173, GPIO172, GPIO171: 0 0 1 + */ + enum { + OMAP3BEAGLE_BOARD_UNKN = 0, +@@ -117,7 +118,11 @@ static void __init omap3_beagle_init_rev(void) + omap3_beagle_version = OMAP3BEAGLE_BOARD_C4; + break; + case 0: +- printk(KERN_INFO "OMAP3 Beagle Rev: xM\n"); ++ printk(KERN_INFO "OMAP3 Beagle Rev: xM A\n"); ++ omap3_beagle_version = OMAP3BEAGLE_BOARD_XM; ++ break; ++ case 1: ++ printk(KERN_INFO "OMAP3 Beagle Rev: xM B\n"); + omap3_beagle_version = OMAP3BEAGLE_BOARD_XM; + break; + default: +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0003-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0003-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch new file mode 100644 index 0000000..e56e8dc --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0003-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch @@ -0,0 +1,219 @@ +From 72657e1ec88da91b772c7158c4c987b29d274ece Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 6 Oct 2010 10:19:34 +0200 +Subject: [PATCH 03/29] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot + +Add support for Tincantools Zippy and Zippy2 expansionboards as well + +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle.c | 142 ++++++++++++++++++++++++++++++- + 1 files changed, 139 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index be8c4ec..495be15 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -143,6 +144,92 @@ fail0: + return; + } + ++char expansionboard_name[16]; ++ ++#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) ++ ++#include ++#include ++ ++#define OMAP3BEAGLE_GPIO_ENC28J60_IRQ 157 ++ ++static struct omap2_mcspi_device_config enc28j60_spi_chip_info = { ++ .turbo_mode = 0, ++ .single_channel = 1, /* 0: slave, 1: master */ ++}; ++ ++static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = { ++ { ++ .modalias = "enc28j60", ++ .bus_num = 4, ++ .chip_select = 0, ++ .max_speed_hz = 20000000, ++ .controller_data = &enc28j60_spi_chip_info, ++ }, ++}; ++ ++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_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_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 */ + { +@@ -262,6 +349,12 @@ static struct omap2_hsmmc_info mmc[] = { + .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, + .gpio_wp = 29, + }, ++ { ++ .mmc = 2, ++ .caps = MMC_CAP_4_BIT_DATA, ++ .transceiver = true, ++ .ocr_mask = 0x00100000, /* 3.3V */ ++ }, + {} /* Terminator */ + }; + +@@ -431,7 +524,7 @@ static struct twl4030_platform_data beagle_twldata = { + .vpll2 = &beagle_vpll2, + }; + +-static struct i2c_board_info __initdata beagle_i2c_boardinfo[] = { ++static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { + { + I2C_BOARD_INFO("twl4030", 0x48), + .flags = I2C_CLIENT_WAKE, +@@ -446,10 +539,24 @@ static struct i2c_board_info __initdata beagle_i2c_eeprom[] = { + }, + }; + ++#if defined(CONFIG_RTC_DRV_DS1307) || \ ++ defined(CONFIG_RTC_DRV_DS1307_MODULE) ++ ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++ { ++ I2C_BOARD_INFO("ds1307", 0x68), ++ }, ++}; ++#else ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; ++#endif ++ + static int __init omap3_beagle_i2c_init(void) + { +- omap_register_i2c_bus(1, 2600, beagle_i2c_boardinfo, +- ARRAY_SIZE(beagle_i2c_boardinfo)); ++ 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)); + /* 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, beagle_i2c_eeprom, ARRAY_SIZE(beagle_i2c_eeprom)); +@@ -583,6 +690,15 @@ static struct omap_musb_board_data musb_board_data = { + .power = 100, + }; + ++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); +@@ -597,6 +713,24 @@ static void __init omap3_beagle_init(void) + /* REVISIT leave DVI powered down until it's needed ... */ + gpio_direction_output(170, true); + ++ 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(&musb_board_data); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +@@ -608,6 +742,8 @@ static void __init omap3_beagle_init(void) + beagle_display_init(); + } + ++early_param("buddy", expansionboard_setup); ++ + MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") + /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */ + .boot_params = 0x80000100, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0004-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0004-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch new file mode 100644 index 0000000..c4b6f4c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0004-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch @@ -0,0 +1,57 @@ +From 6f80e6f5205a429951244e690952f192b78d15a8 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 5 Dec 2010 13:25:00 +0100 +Subject: [PATCH 04/29] ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard + +This really needs a for loop, patches welcome + +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle.c | 31 +++++++++++++++++++++++++++++++ + 1 files changed, 31 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 495be15..34f2132 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -731,6 +731,37 @@ static void __init omap3_beagle_init(void) + 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(&musb_board_data); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0005-modedb.c-add-proper-720p60-mode.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0005-modedb.c-add-proper-720p60-mode.patch new file mode 100644 index 0000000..dae9671 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0005-modedb.c-add-proper-720p60-mode.patch @@ -0,0 +1,28 @@ +From ea2b3d705162f8a1622e60da27b2b5b31ad3abe7 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 8 Mar 2010 14:38:31 +0100 +Subject: [PATCH 05/29] modedb.c: add proper 720p60 mode + +Signed-off-by: Koen Kooi +--- + 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 de450c1..1cd8153 100644 +--- a/drivers/video/modedb.c ++++ b/drivers/video/modedb.c +@@ -46,6 +46,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-bsp/linux/linux-omap-2.6.37rc/0006-mmc-don-t-display-single-block-read-console-messages.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0006-mmc-don-t-display-single-block-read-console-messages.patch new file mode 100644 index 0000000..0a2f0a1 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0006-mmc-don-t-display-single-block-read-console-messages.patch @@ -0,0 +1,28 @@ +From 2036f80d16c1df22b00953f4d2e2457eef00a82d Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 4 Jan 2010 19:20:25 -0800 +Subject: [PATCH 06/29] 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 217f820..b0b68cc 100644 +--- a/drivers/mmc/card/block.c ++++ b/drivers/mmc/card/block.c +@@ -434,8 +434,8 @@ static int mmc_blk_issue_rw_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-bsp/linux/linux-omap-2.6.37rc/0007-MTD-silence-ecc-errors-on-mtdblock0.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0007-MTD-silence-ecc-errors-on-mtdblock0.patch new file mode 100644 index 0000000..04de4e7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0007-MTD-silence-ecc-errors-on-mtdblock0.patch @@ -0,0 +1,63 @@ +From 793eb265af99817165bc03ae96adaaf6e4860dca Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 26 Apr 2010 11:17:26 -0700 +Subject: [PATCH 07/29] 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 | 7 ++++--- + drivers/mtd/nand/nand_ecc.c | 2 +- + fs/buffer.c | 3 ++- + 3 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/block/blk-core.c b/block/blk-core.c +index 4ce953f..1ef9a01 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -2028,9 +2028,10 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes) + + if (error && req->cmd_type == REQ_TYPE_FS && + !(req->cmd_flags & REQ_QUIET)) { +- 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)); ++ 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)); + } + + blk_account_io_completion(req, nr_bytes); +diff --git a/drivers/mtd/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c +index 271b8e7..5924ba7 100644 +--- a/drivers/mtd/nand/nand_ecc.c ++++ b/drivers/mtd/nand/nand_ecc.c +@@ -507,7 +507,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 5930e38..06a00d5 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-bsp/linux/linux-omap-2.6.37rc/0008-Miracle-patch.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0008-Miracle-patch.patch new file mode 100644 index 0000000..b76eb27 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0008-Miracle-patch.patch @@ -0,0 +1,504 @@ +From 31949867bace7945acd3ec10c822e6988613aed7 Mon Sep 17 00:00:00 2001 +From: Mike Galbraith +Date: Fri, 19 Nov 2010 12:52:42 +0100 +Subject: [PATCH 08/29] Miracle patch +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On Sun, 2010-11-14 at 16:26 -0800, Linus Torvalds wrote: +> On Sun, Nov 14, 2010 at 4:15 PM, Linus Torvalds +> wrote: +> > +> > THAT is why I think it's so silly to try to be so strict and walk over +> > all processes while holding a couple of spinlocks. +> +> Btw, let me say that I think the patch is great even with that thing +> in. It looks clean, the thing I'm complaining about is not a big deal, +> and it seems to perform very much as advertized. The difference with +> autogroup scheduling is very noticeable with a simple "make -j64" +> kernel compile. +> +> So I really don't think it's a big deal. The sysctl handler isn't even +> complicated. But boy does it hurt my eyes to see a spinlock held +> around a "do_each_thread()". And I do get the feeling that the +> simplest way to fix it would be to just remove the code entirely, and +> just say that "enabling/disabling may be delayed for old processes +> with existing autogroups". + +Which is what I just did. If the oddball case isn't a big deal, the +patch shrinks, which is a good thing. I just wanted to cover all bases. + +Patchlet with handler whacked: + +A recurring complaint from CFS users is that parallel kbuild has a negative +impact on desktop interactivity. This patch implements an idea from Linus, +to automatically create task groups. This patch only implements Linus' per +tty task group suggestion, and only for fair class tasks, but leaves the way +open for enhancement. + +Implementation: each task's signal struct contains an inherited pointer to a +refcounted autogroup struct containing a task group pointer, the default for +all tasks pointing to the init_task_group. When a task calls __proc_set_tty(), +the process wide reference to the default group is dropped, a new task group is +created, and the process is moved into the new task group. Children thereafter +inherit this task group, and increase it's refcount. On exit, a reference to the +current task group is dropped when the last reference to each signal struct is +dropped. The task group is destroyed when the last signal struct referencing +it is freed. At runqueue selection time, IFF a task has no cgroup assignment, +it's current autogroup is used. + +The feature is enabled from boot by default if CONFIG_SCHED_AUTOGROUP is +selected, but can be disabled via the boot option noautogroup, and can be +also be turned on/off on the fly via.. + echo [01] > /proc/sys/kernel/sched_autogroup_enabled. +..which will automatically move tasks to/from the root task group. + +Some numbers. + +A 100% hog overhead measurement proggy pinned to the same CPU as a make -j10 + +About measurement proggy: + pert/sec = perturbations/sec + min/max/avg = scheduler service latencies in usecs + sum/s = time accrued by the competition per sample period (1 sec here) + overhead = %CPU received by the competition per sample period + +pert/s: 31 >40475.37us: 3 min: 0.37 max:48103.60 avg:29573.74 sum/s:916786us overhead:90.24% +pert/s: 23 >41237.70us: 12 min: 0.36 max:56010.39 avg:40187.01 sum/s:924301us overhead:91.99% +pert/s: 24 >42150.22us: 12 min: 8.86 max:61265.91 avg:39459.91 sum/s:947038us overhead:92.20% +pert/s: 26 >42344.91us: 11 min: 3.83 max:52029.60 avg:36164.70 sum/s:940282us overhead:91.12% +pert/s: 24 >44262.90us: 14 min: 5.05 max:82735.15 avg:40314.33 sum/s:967544us overhead:92.22% + +Same load with this patch applied. + +pert/s: 229 >5484.43us: 41 min: 0.15 max:12069.42 avg:2193.81 sum/s:502382us overhead:50.24% +pert/s: 222 >5652.28us: 43 min: 0.46 max:12077.31 avg:2248.56 sum/s:499181us overhead:49.92% +pert/s: 211 >5809.38us: 43 min: 0.16 max:12064.78 avg:2381.70 sum/s:502538us overhead:50.25% +pert/s: 223 >6147.92us: 43 min: 0.15 max:16107.46 avg:2282.17 sum/s:508925us overhead:50.49% +pert/s: 218 >6252.64us: 43 min: 0.16 max:12066.13 avg:2324.11 sum/s:506656us overhead:50.27% + +Average service latency is an order of magnitude better with autogroup. +(Imagine that pert were Xorg or whatnot instead) + +Using Mathieu Desnoyers' wakeup-latency testcase: + +With taskset -c 3 make -j 10 running.. + +taskset -c 3 ./wakeup-latency& sleep 30;killall wakeup-latency + +without: +maximum latency: 42963.2 µs +average latency: 9077.0 µs +missed timer events: 0 + +with: +maximum latency: 4160.7 µs +average latency: 149.4 µs +missed timer events: 0 + +Signed-off-by: Mike Galbraith +--- + Documentation/kernel-parameters.txt | 2 + + drivers/tty/tty_io.c | 1 + + include/linux/sched.h | 19 +++++ + init/Kconfig | 12 +++ + kernel/fork.c | 5 +- + kernel/sched.c | 25 ++++-- + kernel/sched_autogroup.c | 140 +++++++++++++++++++++++++++++++++++ + kernel/sched_autogroup.h | 18 +++++ + kernel/sysctl.c | 11 +++ + 9 files changed, 224 insertions(+), 9 deletions(-) + create mode 100644 kernel/sched_autogroup.c + create mode 100644 kernel/sched_autogroup.h + +diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt +index 8b61c93..9408728 100644 +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -1622,6 +1622,8 @@ and is between 256 and 4096 characters. It is defined in the file + noapic [SMP,APIC] Tells the kernel to not make use of any + IOAPICs that may be present in the system. + ++ noautogroup Disable scheduler automatic task group creation. ++ + nobats [PPC] Do not use BATs for mapping kernel lowmem + on "Classic" PPC cores. + +diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c +index 35480dd..1849f4a 100644 +--- a/drivers/tty/tty_io.c ++++ b/drivers/tty/tty_io.c +@@ -3169,6 +3169,7 @@ static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty) + put_pid(tsk->signal->tty_old_pgrp); + tsk->signal->tty = tty_kref_get(tty); + tsk->signal->tty_old_pgrp = NULL; ++ sched_autogroup_create_attach(tsk); + } + + static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty) +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 2238745..3a775e3 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -509,6 +509,8 @@ struct thread_group_cputimer { + spinlock_t lock; + }; + ++struct autogroup; ++ + /* + * NOTE! "signal_struct" does not have it's own + * locking, because a shared signal_struct always +@@ -576,6 +578,9 @@ struct signal_struct { + + struct tty_struct *tty; /* NULL if no tty */ + ++#ifdef CONFIG_SCHED_AUTOGROUP ++ struct autogroup *autogroup; ++#endif + /* + * Cumulative resource counters for dead threads in the group, + * and for reaped dead child processes forked by this group. +@@ -1931,6 +1936,20 @@ int sched_rt_handler(struct ctl_table *table, int write, + + extern unsigned int sysctl_sched_compat_yield; + ++#ifdef CONFIG_SCHED_AUTOGROUP ++extern unsigned int sysctl_sched_autogroup_enabled; ++ ++extern void sched_autogroup_create_attach(struct task_struct *p); ++extern void sched_autogroup_detach(struct task_struct *p); ++extern void sched_autogroup_fork(struct signal_struct *sig); ++extern void sched_autogroup_exit(struct signal_struct *sig); ++#else ++static inline void sched_autogroup_create_attach(struct task_struct *p) { } ++static inline void sched_autogroup_detach(struct task_struct *p) { } ++static inline void sched_autogroup_fork(struct signal_struct *sig) { } ++static inline void sched_autogroup_exit(struct signal_struct *sig) { } ++#endif ++ + #ifdef CONFIG_RT_MUTEXES + extern int rt_mutex_getprio(struct task_struct *p); + extern void rt_mutex_setprio(struct task_struct *p, int prio); +diff --git a/init/Kconfig b/init/Kconfig +index c972899..a4985d9 100644 +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -741,6 +741,18 @@ config NET_NS + + endif # NAMESPACES + ++config SCHED_AUTOGROUP ++ bool "Automatic process group scheduling" ++ select CGROUPS ++ select CGROUP_SCHED ++ select FAIR_GROUP_SCHED ++ help ++ This option optimizes the scheduler for common desktop workloads by ++ automatically creating and populating task groups. This separation ++ of workloads isolates aggressive CPU burners (like build jobs) from ++ desktop applications. Task group autogeneration is currently based ++ upon task tty association. ++ + config MM_OWNER + bool + +diff --git a/kernel/fork.c b/kernel/fork.c +index 5447dc7..70ea75f 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -174,8 +174,10 @@ static inline void free_signal_struct(struct signal_struct *sig) + + static inline void put_signal_struct(struct signal_struct *sig) + { +- if (atomic_dec_and_test(&sig->sigcnt)) ++ if (atomic_dec_and_test(&sig->sigcnt)) { ++ sched_autogroup_exit(sig); + free_signal_struct(sig); ++ } + } + + void __put_task_struct(struct task_struct *tsk) +@@ -905,6 +907,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) + posix_cpu_timers_init_group(sig); + + tty_audit_fork(sig); ++ sched_autogroup_fork(sig); + + sig->oom_adj = current->signal->oom_adj; + sig->oom_score_adj = current->signal->oom_score_adj; +diff --git a/kernel/sched.c b/kernel/sched.c +index 297d1a0..53ff9a1 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -78,6 +78,7 @@ + + #include "sched_cpupri.h" + #include "workqueue_sched.h" ++#include "sched_autogroup.h" + + #define CREATE_TRACE_POINTS + #include +@@ -605,11 +606,14 @@ static inline int cpu_of(struct rq *rq) + */ + static inline struct task_group *task_group(struct task_struct *p) + { ++ struct task_group *tg; + struct cgroup_subsys_state *css; + + css = task_subsys_state_check(p, cpu_cgroup_subsys_id, + lockdep_is_held(&task_rq(p)->lock)); +- return container_of(css, struct task_group, css); ++ tg = container_of(css, struct task_group, css); ++ ++ return autogroup_task_group(p, tg); + } + + /* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */ +@@ -2063,6 +2067,7 @@ static void update_rq_clock_task(struct rq *rq, s64 delta) + #include "sched_idletask.c" + #include "sched_fair.c" + #include "sched_rt.c" ++#include "sched_autogroup.c" + #include "sched_stoptask.c" + #ifdef CONFIG_SCHED_DEBUG + # include "sched_debug.c" +@@ -8164,7 +8169,7 @@ void __init sched_init(void) + #ifdef CONFIG_CGROUP_SCHED + list_add(&init_task_group.list, &task_groups); + INIT_LIST_HEAD(&init_task_group.children); +- ++ autogroup_init(&init_task); + #endif /* CONFIG_CGROUP_SCHED */ + + #if defined CONFIG_FAIR_GROUP_SCHED && defined CONFIG_SMP +@@ -8694,15 +8699,11 @@ void sched_destroy_group(struct task_group *tg) + /* change task's runqueue when it moves between groups. + * The caller of this function should have put the task in its new group + * by now. This function just updates tsk->se.cfs_rq and tsk->se.parent to +- * reflect its new group. ++ * reflect its new group. Called with the runqueue lock held. + */ +-void sched_move_task(struct task_struct *tsk) ++void __sched_move_task(struct task_struct *tsk, struct rq *rq) + { + int on_rq, running; +- unsigned long flags; +- struct rq *rq; +- +- rq = task_rq_lock(tsk, &flags); + + running = task_current(rq, tsk); + on_rq = tsk->se.on_rq; +@@ -8723,7 +8724,15 @@ void sched_move_task(struct task_struct *tsk) + tsk->sched_class->set_curr_task(rq); + if (on_rq) + enqueue_task(rq, tsk, 0); ++} + ++void sched_move_task(struct task_struct *tsk) ++{ ++ struct rq *rq; ++ unsigned long flags; ++ ++ rq = task_rq_lock(tsk, &flags); ++ __sched_move_task(tsk, rq); + task_rq_unlock(rq, &flags); + } + #endif /* CONFIG_CGROUP_SCHED */ +diff --git a/kernel/sched_autogroup.c b/kernel/sched_autogroup.c +new file mode 100644 +index 0000000..62f1d0e +--- /dev/null ++++ b/kernel/sched_autogroup.c +@@ -0,0 +1,140 @@ ++#ifdef CONFIG_SCHED_AUTOGROUP ++ ++unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1; ++ ++struct autogroup { ++ struct kref kref; ++ struct task_group *tg; ++}; ++ ++static struct autogroup autogroup_default; ++ ++static void autogroup_init(struct task_struct *init_task) ++{ ++ autogroup_default.tg = &init_task_group; ++ kref_init(&autogroup_default.kref); ++ init_task->signal->autogroup = &autogroup_default; ++} ++ ++static inline void autogroup_destroy(struct kref *kref) ++{ ++ struct autogroup *ag = container_of(kref, struct autogroup, kref); ++ struct task_group *tg = ag->tg; ++ ++ kfree(ag); ++ sched_destroy_group(tg); ++} ++ ++static inline void autogroup_kref_put(struct autogroup *ag) ++{ ++ kref_put(&ag->kref, autogroup_destroy); ++} ++ ++static inline struct autogroup *autogroup_kref_get(struct autogroup *ag) ++{ ++ kref_get(&ag->kref); ++ return ag; ++} ++ ++static inline struct autogroup *autogroup_create(void) ++{ ++ struct autogroup *ag = kmalloc(sizeof(*ag), GFP_KERNEL); ++ ++ if (!ag) ++ goto out_fail; ++ ++ ag->tg = sched_create_group(&init_task_group); ++ kref_init(&ag->kref); ++ ++ if (!(IS_ERR(ag->tg))) ++ return ag; ++ ++out_fail: ++ if (ag) { ++ kfree(ag); ++ WARN_ON(1); ++ } else ++ WARN_ON(1); ++ ++ return autogroup_kref_get(&autogroup_default); ++} ++ ++static inline struct task_group * ++autogroup_task_group(struct task_struct *p, struct task_group *tg) ++{ ++ int enabled = ACCESS_ONCE(sysctl_sched_autogroup_enabled); ++ ++ enabled &= (tg == &root_task_group); ++ enabled &= (p->sched_class == &fair_sched_class); ++ enabled &= (!(p->flags & PF_EXITING)); ++ ++ if (enabled) ++ return p->signal->autogroup->tg; ++ ++ return tg; ++} ++ ++static void ++autogroup_move_group(struct task_struct *p, struct autogroup *ag) ++{ ++ struct autogroup *prev; ++ struct task_struct *t; ++ struct rq *rq; ++ unsigned long flags; ++ ++ rq = task_rq_lock(p, &flags); ++ prev = p->signal->autogroup; ++ if (prev == ag) { ++ task_rq_unlock(rq, &flags); ++ return; ++ } ++ ++ p->signal->autogroup = autogroup_kref_get(ag); ++ __sched_move_task(p, rq); ++ task_rq_unlock(rq, &flags); ++ ++ rcu_read_lock(); ++ list_for_each_entry_rcu(t, &p->thread_group, thread_group) { ++ sched_move_task(t); ++ } ++ rcu_read_unlock(); ++ ++ autogroup_kref_put(prev); ++} ++ ++void sched_autogroup_create_attach(struct task_struct *p) ++{ ++ struct autogroup *ag = autogroup_create(); ++ ++ autogroup_move_group(p, ag); ++ /* drop extra refrence added by autogroup_create() */ ++ autogroup_kref_put(ag); ++} ++EXPORT_SYMBOL(sched_autogroup_create_attach); ++ ++/* currently has no users */ ++void sched_autogroup_detach(struct task_struct *p) ++{ ++ autogroup_move_group(p, &autogroup_default); ++} ++EXPORT_SYMBOL(sched_autogroup_detach); ++ ++void sched_autogroup_fork(struct signal_struct *sig) ++{ ++ sig->autogroup = autogroup_kref_get(current->signal->autogroup); ++} ++ ++void sched_autogroup_exit(struct signal_struct *sig) ++{ ++ autogroup_kref_put(sig->autogroup); ++} ++ ++static int __init setup_autogroup(char *str) ++{ ++ sysctl_sched_autogroup_enabled = 0; ++ ++ return 1; ++} ++ ++__setup("noautogroup", setup_autogroup); ++#endif +diff --git a/kernel/sched_autogroup.h b/kernel/sched_autogroup.h +new file mode 100644 +index 0000000..6048f5d +--- /dev/null ++++ b/kernel/sched_autogroup.h +@@ -0,0 +1,18 @@ ++#ifdef CONFIG_SCHED_AUTOGROUP ++ ++static void __sched_move_task(struct task_struct *tsk, struct rq *rq); ++ ++static inline struct task_group * ++autogroup_task_group(struct task_struct *p, struct task_group *tg); ++ ++#else /* !CONFIG_SCHED_AUTOGROUP */ ++ ++static inline void autogroup_init(struct task_struct *init_task) { } ++ ++static inline struct task_group * ++autogroup_task_group(struct task_struct *p, struct task_group *tg) ++{ ++ return tg; ++} ++ ++#endif /* CONFIG_SCHED_AUTOGROUP */ +diff --git a/kernel/sysctl.c b/kernel/sysctl.c +index 5abfa15..b162f65 100644 +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -382,6 +382,17 @@ static struct ctl_table kern_table[] = { + .mode = 0644, + .proc_handler = proc_dointvec, + }, ++#ifdef CONFIG_SCHED_AUTOGROUP ++ { ++ .procname = "sched_autogroup_enabled", ++ .data = &sysctl_sched_autogroup_enabled, ++ .maxlen = sizeof(unsigned int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec, ++ .extra1 = &zero, ++ .extra2 = &one, ++ }, ++#endif + #ifdef CONFIG_PROVE_LOCKING + { + .procname = "prove_locking", +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0009-ARM-OMAP-add-omap_rev_-macros.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0009-ARM-OMAP-add-omap_rev_-macros.patch new file mode 100644 index 0000000..1c5d8df --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0009-ARM-OMAP-add-omap_rev_-macros.patch @@ -0,0 +1,81 @@ +From 1beed5ee3301a9756c8cd2672d487c568c562e81 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 23 Nov 2010 11:40:20 +0100 +Subject: [PATCH 09/29] ARM: OMAP: add omap_rev_* macros + +This is just to make the SGX modules build that depend on omap_rev_lt_3_0 + +Signed-off-by: Koen Kooi +--- + arch/arm/plat-omap/include/plat/cpu.h | 55 +++++++++++++++++++++++++++++++++ + 1 files changed, 55 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h +index 3fd8b40..1a8c347 100644 +--- a/arch/arm/plat-omap/include/plat/cpu.h ++++ b/arch/arm/plat-omap/include/plat/cpu.h +@@ -394,6 +394,61 @@ IS_OMAP_TYPE(3517, 0x3517) + #define OMAP4430_REV_ES2_0 0x44301044 + + /* ++ * Silicon revisions ++ */ ++#define OMAP_ES_1_0 0x00 ++#define OMAP_ES_2_0 0x10 ++#define OMAP_ES_2_1 0x20 ++#define OMAP_ES_3_0 0x30 ++#define OMAP_ES_3_1 0x40 ++ ++#define OMAP_REV_MASK 0x0000ff00 ++#define OMAP_REV_BITS ((omap_rev() & OMAP_REV_MASK) >> 8) ++ ++#define OMAP_REV_IS(revid) \ ++static inline u8 omap_rev_is_ ##revid (void) \ ++{ \ ++ return (OMAP_REV_BITS == OMAP_ES_ ##revid) ? 1 : 0; \ ++} ++ ++#define OMAP_REV_LT(revid) \ ++static inline u8 omap_rev_lt_ ##revid (void) \ ++{ \ ++ return (OMAP_REV_BITS < OMAP_ES_ ##revid) ? 1 : 0; \ ++} ++ ++#define OMAP_REV_LE(revid) \ ++static inline u8 omap_rev_le_ ##revid (void) \ ++{ \ ++ return (OMAP_REV_BITS <= OMAP_ES_ ##revid) ? 1 : 0; \ ++} ++ ++#define OMAP_REV_GT(revid) \ ++static inline u8 omap_rev_gt_ ##revid (void) \ ++{ \ ++ return (OMAP_REV_BITS > OMAP_ES_ ##revid) ? 1 : 0; \ ++} ++ ++#define OMAP_REV_GE(revid) \ ++static inline u8 omap_rev_ge_ ##revid (void) \ ++{ \ ++ return (OMAP_REV_BITS >= OMAP_ES_ ##revid) ? 1 : 0; \ ++} ++ ++#define OMAP_REV_FUNCTIONS(revid) \ ++ OMAP_REV_IS(revid) \ ++ OMAP_REV_LT(revid) \ ++ OMAP_REV_LE(revid) \ ++ OMAP_REV_GT(revid) \ ++ OMAP_REV_GE(revid) ++ ++OMAP_REV_FUNCTIONS(1_0) ++OMAP_REV_FUNCTIONS(2_0) ++OMAP_REV_FUNCTIONS(2_1) ++OMAP_REV_FUNCTIONS(3_0) ++OMAP_REV_FUNCTIONS(3_1) ++ ++/* + * omap_chip bits + * + * CHIP_IS_OMAP{2420,2430,3430} indicate that a particular structure is +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0010-OMAP-DSS2-enable-hsclk-in-dsi_pll_init-for-OMAP36XX.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0010-OMAP-DSS2-enable-hsclk-in-dsi_pll_init-for-OMAP36XX.patch new file mode 100644 index 0000000..d292e2f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0010-OMAP-DSS2-enable-hsclk-in-dsi_pll_init-for-OMAP36XX.patch @@ -0,0 +1,31 @@ +From f051874f829ed2e2462c0e64c28e28bd6f942f2d Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 10 May 2010 20:44:09 -0700 +Subject: [PATCH 10/29] OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + +Signed-off-by: Koen Kooi +--- + drivers/video/omap2/dss/dpi.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c +index 960e977..23047b6 100644 +--- a/drivers/video/omap2/dss/dpi.c ++++ b/drivers/video/omap2/dss/dpi.c +@@ -177,7 +177,12 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) + + #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL + dss_clk_enable(DSS_CLK_FCK2); +- r = dsi_pll_init(dssdev, 0, 1); ++ ++ if (cpu_is_omap3630()) ++ r = dsi_pll_init(dssdev, 1, 1); ++ else ++ r = dsi_pll_init(dssdev, 0, 1); ++ + if (r) + goto err3; + #endif +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0011-omap3-beagleboard-add-WIP-support-for-beagleboardtoy.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0011-omap3-beagleboard-add-WIP-support-for-beagleboardtoy.patch new file mode 100644 index 0000000..c800003 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0011-omap3-beagleboard-add-WIP-support-for-beagleboardtoy.patch @@ -0,0 +1,102 @@ +From 18333339fe5e104c2ddfb2688989a15df0e0f94c Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 20 Dec 2010 11:57:56 +0100 +Subject: [PATCH 11/29] omap3: beagleboard: add WIP support for beagleboardtoys WL12xx board + +Based on a patch by Luciano Coelho + +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle.c | 68 +++++++++++++++++++++++++++++++ + 1 files changed, 68 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 34f2132..073276b 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -146,6 +146,67 @@ fail0: + + char expansionboard_name[16]; + ++#if defined(CONFIG_WL1271) || defined(CONFIG_WL1271_MODULE) ++#include ++#include ++ ++#define OMAP_BEAGLE_WLAN_EN_GPIO (139) ++#define OMAP_BEAGLE_WLAN_IRQ_GPIO (137) ++ ++struct wl12xx_platform_data omap_beagle_wlan_data __initdata = { ++ .irq = OMAP_GPIO_IRQ(OMAP_BEAGLE_WLAN_IRQ_GPIO), ++ .board_ref_clock = 2, /* 38.4 MHz */ ++}; ++ ++ static struct omap2_hsmmc_info mmcbbt[] = { ++ { ++ .mmc = 1, ++ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, ++ .gpio_wp = 29, ++ }, ++ { ++ .name = "wl1271", ++ .mmc = 2, ++ .caps = MMC_CAP_4_BIT_DATA, ++ .gpio_wp = -EINVAL, ++ .gpio_cd = -EINVAL, ++ .nonremovable = true, ++ }, ++ {} /* Terminator */ ++ }; ++ ++static struct regulator_consumer_supply beagle_vmmc2_supply = { ++ .supply = "vmmc", ++ .dev_name = "mmci-omap-hs.1", ++}; ++ ++static struct regulator_init_data beagle_vmmc2 = { ++ .constraints = { ++ .valid_ops_mask = REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &beagle_vmmc2_supply, ++}; ++ ++static struct fixed_voltage_config beagle_vwlan = { ++ .supply_name = "vwl1271", ++ .microvolts = 1800000, /* 1.8V */ ++ .gpio = OMAP_BEAGLE_WLAN_EN_GPIO, ++ .startup_delay = 70000, /* 70ms */ ++ .enable_high = 1, ++ .enabled_at_boot = 0, ++ .init_data = &beagle_vmmc2, ++}; ++ ++static struct platform_device omap_vwlan_device = { ++ .name = "reg-fixed-voltage", ++ .id = 1, ++ .dev = { ++ .platform_data = &beagle_vwlan, ++ }, ++}; ++#endif ++ + #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) + + #include +@@ -382,7 +443,14 @@ static int beagle_twl_gpio_setup(struct device *dev, + } + /* gpio + 0 is "mmc0_cd" (input/IRQ) */ + mmc[0].gpio_cd = gpio + 0; ++#if defined(CONFIG_WL1271) || defined(CONFIG_WL1271_MODULE) ++ if(!strcmp(expansionboard_name, "fixme-beagletoy")) ++ omap2_hsmmc_init(mmcbbt); ++ else ++ omap2_hsmmc_init(mmc); ++#else + omap2_hsmmc_init(mmc); ++#endif + + /* link regulators to MMC adapters */ + beagle_vmmc1_supply.dev = mmc[0].dev; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0012-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0012-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch new file mode 100644 index 0000000..1bb4dda --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0012-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch @@ -0,0 +1,29 @@ +From 43b87f69e82217aff2a966559bdf28dcfedc2c8e Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:17:44 -0800 +Subject: [PATCH 12/29] 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 64bfdae..ba2a00e 100644 +--- a/drivers/net/smsc911x.c ++++ b/drivers/net/smsc911x.c +@@ -2019,8 +2019,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-bsp/linux/linux-omap-2.6.37rc/0013-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0013-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch new file mode 100644 index 0000000..efefda5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0013-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch @@ -0,0 +1,47 @@ +From 43b7984021e30a9aa9b97c2cf9a9ceb806372709 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:24:10 -0800 +Subject: [PATCH 13/29] 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 14ea54b..c775e38 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -1325,11 +1325,18 @@ static int __devinit ads7846_probe(struct spi_device *spi) + * the touchscreen, in case it's not connected. + */ + if (ts->model == 7845) +- ads7845_read12_ser(&spi->dev, PWRDOWN); ++ err = ads7845_read12_ser(&spi->dev, PWRDOWN); + else +- (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; +@@ -1353,7 +1360,7 @@ static int __devinit ads7846_probe(struct spi_device *spi) + err_put_regulator: + regulator_put(ts->reg); + 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) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0014-ASoC-enable-audio-capture-by-default-for-twl4030.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0014-ASoC-enable-audio-capture-by-default-for-twl4030.patch new file mode 100644 index 0000000..4ef7dd4 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0014-ASoC-enable-audio-capture-by-default-for-twl4030.patch @@ -0,0 +1,27 @@ +From ebb70888ec3601534601d7524212fbefa24d679e Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 12:45:20 -0800 +Subject: [PATCH 14/29] 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 cbebec6..430cd10 100644 +--- a/sound/soc/codecs/twl4030.c ++++ b/sound/soc/codecs/twl4030.c +@@ -56,8 +56,8 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = { + 0x00, /* REG_OPTION (0x2) */ + 0x00, /* REG_UNKNOWN (0x3) */ + 0x00, /* REG_MICBIAS_CTL (0x4) */ +- 0x00, /* 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-bsp/linux/linux-omap-2.6.37rc/0015-MFD-enable-madc-clock.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0015-MFD-enable-madc-clock.patch new file mode 100644 index 0000000..725881c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0015-MFD-enable-madc-clock.patch @@ -0,0 +1,51 @@ +From 0bedf8e81896a69ba77e9066ad9545412fd53cf8 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Sat, 23 Jan 2010 06:26:54 -0800 +Subject: [PATCH 15/29] MFD: enable madc clock + +--- + drivers/mfd/twl-core.c | 8 ++++++++ + include/linux/i2c/twl.h | 1 + + 2 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c +index 35275ba..5aa7358 100644 +--- a/drivers/mfd/twl-core.c ++++ b/drivers/mfd/twl-core.c +@@ -208,6 +208,11 @@ + + /* Few power values */ + #define R_CFG_BOOT 0x05 ++#define R_GPBR1 0x0C ++ ++/* MADC clock values for R_GPBR1 */ ++#define MADC_HFCLK_EN 0x80 ++#define DEFAULT_MADC_CLK_EN 0x10 + + /* some fields in R_CFG_BOOT */ + #define HFCLK_FREQ_19p2_MHZ (1 << 0) +@@ -929,6 +934,9 @@ static void clocks_init(struct device *dev, + + e |= unprotect_pm_master(); + /* effect->MADC+USB ck en */ ++ if (twl_has_madc()) ++ e |= twl_i2c_write_u8(TWL_MODULE_INTBR, ++ MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, R_GPBR1); + e |= twl_i2c_write_u8(TWL_MODULE_PM_MASTER, ctrl, R_CFG_BOOT); + e |= protect_pm_master(); + +diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h +index c760991..cfdfdd3 100644 +--- a/include/linux/i2c/twl.h ++++ b/include/linux/i2c/twl.h +@@ -74,6 +74,7 @@ + + #define TWL_MODULE_USB TWL4030_MODULE_USB + #define TWL_MODULE_AUDIO_VOICE TWL4030_MODULE_AUDIO_VOICE ++#define TWL_MODULE_INTBR TWL4030_MODULE_INTBR + #define TWL_MODULE_PIH TWL4030_MODULE_PIH + #define TWL_MODULE_MADC TWL4030_MODULE_MADC + #define TWL_MODULE_MAIN_CHARGE TWL4030_MODULE_MAIN_CHARGE +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0016-MFD-add-twl4030-madc-driver.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0016-MFD-add-twl4030-madc-driver.patch new file mode 100644 index 0000000..ae25ba3 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0016-MFD-add-twl4030-madc-driver.patch @@ -0,0 +1,740 @@ +From ea45cc880d407e9747dafa0efe5ab17ffb5e42d5 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:19:34 -0800 +Subject: [PATCH 16/29] MFD: add twl4030 madc driver + +--- + drivers/mfd/Kconfig | 21 ++ + drivers/mfd/Makefile | 1 + + drivers/mfd/twl4030-madc.c | 537 ++++++++++++++++++++++++++++++++++++++ + include/linux/i2c/twl4030-madc.h | 130 +++++++++ + 4 files changed, 689 insertions(+), 0 deletions(-) + create mode 100644 drivers/mfd/twl4030-madc.c + create mode 100644 include/linux/i2c/twl4030-madc.h + +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index 3a1493b..26ca160 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -186,6 +186,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 TWL6030_PWM + tristate "TWL6030 PWM (Pulse Width Modulator) Support" + depends on TWL4030_CORE +diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile +index f54b365..8c4ccb2 100644 +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -39,6 +39,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_TWL6030_PWM) += twl6030-pwm.o + + obj-$(CONFIG_MFD_MC13XXX) += mc13xxx-core.o +diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c +new file mode 100644 +index 0000000..4adf880 +--- /dev/null ++++ b/drivers/mfd/twl4030-madc.c +@@ -0,0 +1,537 @@ ++/* ++ * 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 ++ ++#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 = 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; ++ } ++ ++ return val; ++} ++ ++static void twl4030_madc_write(struct twl4030_madc_data *madc, u8 reg, u8 val) ++{ ++ int ret; ++ ++ ret = twl_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 = 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 = twl_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 = twl_i2c_read_u8(TWL4030_MODULE_USB, ++ ®val, TWL4030_USB_CARKIT_ANA_CTRL); ++ ++ regval |= TWL4030_USB_SEL_MADC_MCPC; ++ ++ ret = twl_i2c_write_u8(TWL4030_MODULE_USB, ++ regval, TWL4030_USB_CARKIT_ANA_CTRL); ++ ++ ++ ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ++ ®val, TWL4030_BCI_BCICTL1); ++ ++ regval |= TWL4030_BCI_MESBAT; ++ ++ 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, ++ 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"); ++ +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-bsp/linux/linux-omap-2.6.37rc/0017-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0017-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch new file mode 100644 index 0000000..19eec18 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0017-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch @@ -0,0 +1,32 @@ +From 3bc70a68d2cfd1d41995bb7f33f2e4005542f62b Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:27:15 -0800 +Subject: [PATCH 17/29] 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 cb26e5d..17f066a 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -369,10 +369,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-bsp/linux/linux-omap-2.6.37rc/0018-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0018-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch new file mode 100644 index 0000000..aeb4146 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0018-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch @@ -0,0 +1,35 @@ +From afa4132d5e29ed90154fec8cd97f891c86ce748c Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:32:36 -0800 +Subject: [PATCH 18/29] 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 073276b..781844c 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -578,6 +578,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, +@@ -586,6 +590,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-bsp/linux/linux-omap-2.6.37rc/0019-OMAP-DSS2-Add-support-for-Samsung-LTE430WQ-F0C-panel.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0019-OMAP-DSS2-Add-support-for-Samsung-LTE430WQ-F0C-panel.patch new file mode 100644 index 0000000..8607d71 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0019-OMAP-DSS2-Add-support-for-Samsung-LTE430WQ-F0C-panel.patch @@ -0,0 +1,173 @@ +From e6b15754a20c0306fb20d061358da67b5dd218cd Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Feb 2010 14:40:27 -0800 +Subject: [PATCH 19/29] OMAP: DSS2: Add support for Samsung LTE430WQ-F0C panel + +--- + .../omap2/displays/panel-samsung-lte430wq-f0c.c | 154 ++++++++++++++++++++ + 1 files changed, 154 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c + +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..6a29f9c +--- /dev/null ++++ b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c +@@ -0,0 +1,154 @@ ++/* ++ * 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_power_on(struct omap_dss_device *dssdev) ++{ ++ int r; ++ ++ if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) ++ return 0; ++ ++ r = omapdss_dpi_display_enable(dssdev); ++ if (r) ++ goto err0; ++ ++ if (dssdev->platform_enable) { ++ r = dssdev->platform_enable(dssdev); ++ if (r) ++ goto err1; ++ } ++ ++ return 0; ++err1: ++ omapdss_dpi_display_disable(dssdev); ++err0: ++ return r; ++} ++ ++static void samsung_lte_panel_power_off(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) ++ return; ++ ++ if (dssdev->platform_disable) ++ dssdev->platform_disable(dssdev); ++ ++ omapdss_dpi_display_disable(dssdev); ++} ++ ++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; ++ ++ r = samsung_lte_panel_power_on(dssdev); ++ if (r) ++ return r; ++ ++ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static void samsung_lte_panel_disable(struct omap_dss_device *dssdev) ++{ ++ samsung_lte_panel_power_off(dssdev); ++ ++ dssdev->state = OMAP_DSS_DISPLAY_DISABLED; ++} ++ ++static int samsung_lte_panel_suspend(struct omap_dss_device *dssdev) ++{ ++ samsung_lte_panel_disable(dssdev); ++ dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; ++ return 0; ++} ++ ++static int samsung_lte_panel_resume(struct omap_dss_device *dssdev) ++{ ++ int r; ++ ++ r = samsung_lte_panel_enable(dssdev); ++ if (r) ++ return r; ++ ++ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++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-bsp/linux/linux-omap-2.6.37rc/0020-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0020-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch new file mode 100644 index 0000000..ad148d0 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0020-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch @@ -0,0 +1,299 @@ +From 6861df53ce9212b348fba806f5a86404c1de8a95 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 15:05:30 -0800 +Subject: [PATCH 20/29] OMAP: DSS2: Add support for LG Philips LB035Q02 panel + +--- + drivers/video/omap2/displays/Kconfig | 12 + + drivers/video/omap2/displays/Makefile | 2 + + .../omap2/displays/panel-lgphilips-lb035q02.c | 244 ++++++++++++++++++++ + 3 files changed, 258 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 12327bb..48e872f 100644 +--- a/drivers/video/omap2/displays/Kconfig ++++ b/drivers/video/omap2/displays/Kconfig +@@ -7,6 +7,18 @@ 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 ++ 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 aa38609..2fb1a57 100644 +--- a/drivers/video/omap2/displays/Makefile ++++ b/drivers/video/omap2/displays/Makefile +@@ -1,4 +1,6 @@ + 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..4ad709d +--- /dev/null ++++ b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c +@@ -0,0 +1,244 @@ ++/* ++ * 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_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_power_on(struct omap_dss_device *dssdev) ++{ ++ int r; ++ ++ if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) ++ return 0; ++ ++ r = omapdss_dpi_display_enable(dssdev); ++ if (r) ++ goto err0; ++ ++ if (dssdev->platform_enable) { ++ r = dssdev->platform_enable(dssdev); ++ if (r) ++ goto err1; ++ } ++ ++ /* 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 0; ++err1: ++ omapdss_dpi_display_disable(dssdev); ++err0: ++ return r; ++} ++ ++static void lb035q02_panel_power_off(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) ++ return; ++ ++ if (dssdev->platform_disable) ++ dssdev->platform_disable(dssdev); ++ ++ omapdss_dpi_display_disable(dssdev); ++} ++ ++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_panel_enable(struct omap_dss_device *dssdev) ++{ ++ int r = 0; ++ ++ r = lb035q02_panel_power_on(dssdev); ++ if (r) ++ return r; ++ ++ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++static void lb035q02_panel_disable(struct omap_dss_device *dssdev) ++{ ++ lb035q02_panel_power_off(dssdev); ++ ++ dssdev->state = OMAP_DSS_DISPLAY_DISABLED; ++} ++ ++static int lb035q02_panel_suspend(struct omap_dss_device *dssdev) ++{ ++ lb035q02_panel_disable(dssdev); ++ dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; ++ return 0; ++} ++ ++static int lb035q02_panel_resume(struct omap_dss_device *dssdev) ++{ ++ int r; ++ ++ r = lb035q02_panel_power_on(dssdev); ++ if (r) ++ return r; ++ ++ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; ++ ++ return 0; ++} ++ ++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 r; ++ r = spi_register_driver(&lb035q02_spi_driver); ++ if (r != 0) ++ pr_err("lgphilips_lb035q02: Unable to register SPI driver: %d\n", r); ++ ++ r = omap_dss_register_driver(&lb035q02_driver); ++ if (r != 0) ++ pr_err("lgphilips_lb035q02: Unable to register panel driver: %d\n", r); ++ ++ return r; ++} ++ ++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-bsp/linux/linux-omap-2.6.37rc/0021-OMAP-DSS2-add-bootarg-for-selecting-svideo-or-compos.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0021-OMAP-DSS2-add-bootarg-for-selecting-svideo-or-compos.patch new file mode 100644 index 0000000..86e9c40 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0021-OMAP-DSS2-add-bootarg-for-selecting-svideo-or-compos.patch @@ -0,0 +1,75 @@ +From 9e206307dbd65d557a57563c086af5089e52b2c8 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 19 Jan 2010 21:19:15 -0800 +Subject: [PATCH 21/29] OMAP: 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 eff3505..e1f4aab 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; +@@ -459,6 +464,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 6a704f1..7ee833f 100644 +--- a/drivers/video/omap2/omapfb/omapfb-main.c ++++ b/drivers/video/omap2/omapfb/omapfb-main.c +@@ -2036,7 +2036,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 = 24; + return 0; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0022-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0022-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch new file mode 100644 index 0000000..ffa0a0e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0022-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch @@ -0,0 +1,39 @@ +From 3924e990868742c19e5cd3e84191a01b55249079 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Sun, 24 Jan 2010 09:33:56 -0800 +Subject: [PATCH 22/29] 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/hsmmc.c | 14 ++++++-------- + 1 files changed, 6 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c +index 34272e4..a74631d 100644 +--- a/arch/arm/mach-omap2/hsmmc.c ++++ b/arch/arm/mach-omap2/hsmmc.c +@@ -186,15 +186,13 @@ static void hsmmc23_before_set_reg(struct device *dev, int slot, + if (mmc->slots[0].remux) + mmc->slots[0].remux(dev, slot, power_on); + +- if (power_on) { +- /* Only MMC2 supports a CLKIN */ +- if (mmc->slots[0].internal_clock) { +- u32 reg; ++ /* 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); +- } ++ reg = omap_ctrl_readl(control_devconf1_offset); ++ reg |= OMAP2_MMCSDIO2ADPCLKISEL; ++ omap_ctrl_writel(reg, control_devconf1_offset); + } + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0023-RTC-add-support-for-backup-battery-recharge.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0023-RTC-add-support-for-backup-battery-recharge.patch new file mode 100644 index 0000000..a815311 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0023-RTC-add-support-for-backup-battery-recharge.patch @@ -0,0 +1,55 @@ +From ade216c2689a2dae645ca95fa443ee8eacfafb67 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 4 Feb 2010 12:26:22 -0800 +Subject: [PATCH 23/29] 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 ed1b868..33a8598 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-bsp/linux/linux-omap-2.6.37rc/0024-ARM-OMAP-automatically-set-musb-mode-in-platform-dat.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0024-ARM-OMAP-automatically-set-musb-mode-in-platform-dat.patch new file mode 100644 index 0000000..bd7b068 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0024-ARM-OMAP-automatically-set-musb-mode-in-platform-dat.patch @@ -0,0 +1,49 @@ +From 6a2f14bdd390695f5d88fb8ea18df8f80bddfc9d Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 24 Feb 2010 10:37:22 -0800 +Subject: [PATCH 24/29] ARM: OMAP: automatically set musb mode in platform data based on CONFIG options + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 6 ++++++ + arch/arm/mach-omap2/board-overo.c | 6 ++++++ + 2 files changed, 12 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 781844c..006dc26 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -759,7 +759,13 @@ static struct omap_board_mux board_mux[] __initdata = { + + static struct omap_musb_board_data musb_board_data = { + .interface_type = MUSB_INTERFACE_ULPI, ++#if defined(CONFIG_USB_MUSB_OTG) + .mode = MUSB_OTG, ++#elif defined(CONFIG_USB_GADGET_MUSB_HDRC) ++ .mode = MUSB_PERIPHERAL, ++#else ++ .mode = MUSB_HOST, ++#endif + .power = 100, + }; + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index 17f066a..b28a9d5 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -447,7 +447,13 @@ static struct omap_board_mux board_mux[] __initdata = { + + static struct omap_musb_board_data musb_board_data = { + .interface_type = MUSB_INTERFACE_ULPI, ++#if defined(CONFIG_USB_MUSB_OTG) + .mode = MUSB_OTG, ++#elif defined(CONFIG_USB_GADGET_MUSB_HDRC) ++ .mode = MUSB_PERIPHERAL, ++#else ++ .mode = MUSB_HOST, ++#endif + .power = 100, + }; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0025-OMAP-DSS2-check-for-both-cpu-type-and-revision-rathe.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0025-OMAP-DSS2-check-for-both-cpu-type-and-revision-rathe.patch new file mode 100644 index 0000000..1261c5b --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0025-OMAP-DSS2-check-for-both-cpu-type-and-revision-rathe.patch @@ -0,0 +1,34 @@ +From 6e383eb63993e011b6bdec84e3eb001e6b9e00a1 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 10 May 2010 13:59:14 -0700 +Subject: [PATCH 25/29] OMAP: DSS2: check for both cpu type and revision, rather than just revision + +--- + drivers/video/omap2/dss/dispc.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index fa40fa5..133916a 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -2101,7 +2101,7 @@ void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) + static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp, + int vsw, int vfp, int vbp) + { +- if (cpu_is_omap24xx() || omap_rev() < OMAP3430_REV_ES3_0) { ++ if (cpu_is_omap24xx() || (cpu_is_omap34xx() && omap_rev_lt_3_0())) { + if (hsw < 1 || hsw > 64 || + hfp < 1 || hfp > 256 || + hbp < 1 || hbp > 256 || +@@ -2134,7 +2134,7 @@ static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, + { + u32 timing_h, timing_v; + +- if (cpu_is_omap24xx() || omap_rev() < OMAP3430_REV_ES3_0) { ++ if (cpu_is_omap24xx() || (cpu_is_omap34xx() && omap_rev_lt_3_0())) { + timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | + FLD_VAL(hbp-1, 27, 20); + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0026-OMAP-DSS2-Add-DSS2-support-for-Overo.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0026-OMAP-DSS2-Add-DSS2-support-for-Overo.patch new file mode 100644 index 0000000..b31165c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0026-OMAP-DSS2-Add-DSS2-support-for-Overo.patch @@ -0,0 +1,355 @@ +From 66db8210263893e9ffd4478c36a3a1a89bdaff37 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Fri, 18 Dec 2009 06:39:24 -0800 +Subject: [PATCH 26/29] OMAP: DSS2: Add DSS2 support for Overo + +--- + arch/arm/mach-omap2/board-overo.c | 238 +++++++++++++++++++++++++++++++------ + 1 files changed, 204 insertions(+), 34 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index b28a9d5..8a44c17 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 +@@ -41,10 +42,13 @@ + + #include + #include ++#include + #include + #include + #include + #include ++#include ++#include + #include + + #include "mux.h" +@@ -68,8 +72,6 @@ + #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ + defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) + +-#include +-#include + #include + + static struct omap2_mcspi_device_config ads7846_mcspi_config = { +@@ -94,18 +96,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) && +@@ -115,9 +105,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 +@@ -233,6 +220,139 @@ 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 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, ++}; ++ ++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, ++ .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, ++ .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 = ++ REGULATOR_SUPPLY("vdda_dac", "omapdss"); ++ ++static struct regulator_consumer_supply overo_vdds_dsi_supply = ++ REGULATOR_SUPPLY("vdds_dsi", "omapdss"); ++ + static struct mtd_partition overo_nand_partitions[] = { + { + .name = "xloader", +@@ -358,6 +478,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, + }; +@@ -367,8 +518,6 @@ static struct twl4030_codec_data overo_codec_data = { + .audio = &overo_audio_data, + }; + +-/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ +- + static struct twl4030_madc_platform_data overo_madc_data = { + .irq_line = 1, + }; +@@ -381,6 +530,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[] = { +@@ -401,23 +552,41 @@ 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_infrastructure(); + omap2_init_common_devices(mt46h32m32lf6_sdrc_params, + mt46h32m32lf6_sdrc_params); +@@ -425,7 +594,7 @@ static void __init overo_init_irq(void) + } + + static struct platform_device *overo_devices[] __initdata = { +- &overo_lcd_device, ++ &overo_dss_device, + }; + + static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { +@@ -466,8 +635,9 @@ static void __init overo_init(void) + overo_flash_init(); + usb_musb_init(&musb_board_data); + 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); +@@ -510,7 +680,7 @@ static void __init overo_init(void) + "OVERO_GPIO_USBH_CPEN\n"); + } + +-MACHINE_START(OVERO, "Gumstix Overo") ++MACHINE_START(OVERO, "Gumstsix Overo") + .boot_params = 0x80000100, + .map_io = omap3_map_io, + .reserve = omap_reserve, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0027-Add-defines-to-set-config-options-in-GPMC-per-CS-con.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0027-Add-defines-to-set-config-options-in-GPMC-per-CS-con.patch new file mode 100644 index 0000000..6e9d3c0 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0027-Add-defines-to-set-config-options-in-GPMC-per-CS-con.patch @@ -0,0 +1,80 @@ +From 98d0c3ce9209fe34699ec99aa90efab39fe05c36 Mon Sep 17 00:00:00 2001 +From: Philip Balister +Date: Wed, 17 Feb 2010 14:51:39 -0800 +Subject: [PATCH 27/29] Add defines to set config options in GPMC per CS control registers. + +--- + arch/arm/plat-omap/include/plat/gpmc.h | 36 ++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/plat-omap/include/plat/gpmc.h b/arch/arm/plat-omap/include/plat/gpmc.h +index 85ded59..1a6c748 100644 +--- a/arch/arm/plat-omap/include/plat/gpmc.h ++++ b/arch/arm/plat-omap/include/plat/gpmc.h +@@ -46,6 +46,11 @@ + #define GPMC_ECC_WRITE 1 /* Reset Hardware ECC for write */ + #define GPMC_ECC_READSYN 2 /* Reset before syndrom is read back */ + ++#define GPMC_CONFIG 0x50 ++#define GPMC_STATUS 0x54 ++#define GPMC_CS0_BASE 0x60 ++#define GPMC_CS_SIZE 0x30 ++ + #define GPMC_CONFIG1_WRAPBURST_SUPP (1 << 31) + #define GPMC_CONFIG1_READMULTIPLE_SUPP (1 << 30) + #define GPMC_CONFIG1_READTYPE_ASYNC (0 << 29) +@@ -63,6 +68,7 @@ + #define GPMC_CONFIG1_DEVICESIZE_16 GPMC_CONFIG1_DEVICESIZE(1) + #define GPMC_CONFIG1_DEVICETYPE(val) ((val & 3) << 10) + #define GPMC_CONFIG1_DEVICETYPE_NOR GPMC_CONFIG1_DEVICETYPE(0) ++#define GPMC_CONFIG1_DEVICETYPE_NAND GPMC_CONFIG1_DEVICETYPE(2) + #define GPMC_CONFIG1_MUXADDDATA (1 << 9) + #define GPMC_CONFIG1_TIME_PARA_GRAN (1 << 4) + #define GPMC_CONFIG1_FCLK_DIV(val) (val & 3) +@@ -79,6 +85,35 @@ + #define GPMC_PREFETCH_STATUS_FIFO_CNT(val) ((val >> 24) & 0x7F) + #define GPMC_PREFETCH_STATUS_COUNT(val) (val & 0x00003fff) + ++#define GPMC_CONFIG2_CSWROFFTIME(val) ((val & 31) << 16) ++#define GPMC_CONFIG2_CSRDOFFTIME(val) ((val & 31) << 8) ++#define GPMC_CONFIG2_CSEXTRADELAY (1 << 7) ++#define GPMC_CONFIG2_CSONTIME(val) (val & 15) ++ ++#define GPMC_CONFIG3_ADVWROFFTIME(val) ((val & 31) << 16) ++#define GPMC_CONFIG3_ADVRDOFFTIME(val) ((val & 31) << 8) ++#define GPMC_CONFIG3_ADVEXTRADELAY (1 << 7) ++#define GPMC_CONFIG3_ADVONTIME(val) (val & 15) ++ ++#define GPMC_CONFIG4_WEOFFTIME(val) ((val & 31) << 24) ++#define GPMC_CONFIG4_WEEXTRADELAY (1 << 23) ++#define GPMC_CONFIG4_WEONTIME(val) ((val & 15) << 16) ++#define GPMC_CONFIG4_OEOFFTIME(val) ((val & 31) << 8) ++#define GPMC_CONFIG4_OEEXTRADELAY (1 << 7) ++#define GPMC_CONFIG4_OEONTIME(val) (val & 15) ++ ++#define GPMC_CONFIG5_PAGEBURSTACCESSTIME(val) ((val & 15) << 24) ++#define GPMC_CONFIG5_RDACCESSTIME(val) ((val & 31) << 16) ++#define GPMC_CONFIG5_WRCYCLETIME(val) ((val & 31) << 8) ++#define GPMC_CONFIG5_RDCYCLETIME(val) (val & 31) ++ ++#define GPMC_CONFIG6_WRACCESSTIME(val) ((val & 31) << 24) ++#define GPMC_CONFIG6_WRDATAONADMUXBUS(val) ((val & 15) << 16) ++#define GPMC_CONFIG6_CYCLE2CYCLEDELAY(val) ((val & 15) << 8) ++#define GPMC_CONFIG6_CYCLE2CYCLESAMECSEN (1 << 7) ++#define GPMC_CONFIG6_CYCLE2CYCLEDIFFCSEN (1 << 6) ++#define GPMC_CONFIG6_BUSTURNAROUND(val) (val & 15) ++ + /* + * Note that all values in this struct are in nanoseconds except sync_clk + * (which is in picoseconds), while the register values are in gpmc_fck cycles. +@@ -133,6 +168,7 @@ extern int gpmc_cs_reserved(int cs); + extern int gpmc_prefetch_enable(int cs, int dma_mode, + unsigned int u32_count, int is_write); + extern int gpmc_prefetch_reset(int cs); ++extern int gpmc_prefetch_status(void); + extern void omap3_gpmc_save_context(void); + extern void omap3_gpmc_restore_context(void); + extern void gpmc_init(void); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch new file mode 100644 index 0000000..0ae578d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch @@ -0,0 +1,83 @@ +From 5469329878e4bdb38fe39fc95676d9b752b1528f Mon Sep 17 00:00:00 2001 +From: Philip Balister +Date: Thu, 22 Apr 2010 19:41:58 -0700 +Subject: [PATCH 28/29] Add functions to dma.c to set address and length for src and dest. + +--- + arch/arm/plat-omap/dma.c | 30 ++++++++++++++++++++++++++++++ + arch/arm/plat-omap/include/plat/dma.h | 4 ++++ + 2 files changed, 34 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c +index c4b2b47..f28f756 100644 +--- a/arch/arm/plat-omap/dma.c ++++ b/arch/arm/plat-omap/dma.c +@@ -471,6 +471,21 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode) + } + EXPORT_SYMBOL(omap_set_dma_src_burst_mode); + ++void omap_set_dma_src_addr_size(int lch, unsigned int addr, int elem_count) ++{ ++ ++ if (cpu_class_is_omap1()) { ++ p->dma_write(addr >> 16, CSSA, lch); ++ //p->dma_write((u16)addr, CSSA_L, lch); ++ } ++ ++ if (cpu_class_is_omap2()) ++ p->dma_write(addr, CSSA, lch); ++ ++ p->dma_write(elem_count, CEN, lch); ++} ++EXPORT_SYMBOL_GPL(omap_set_dma_src_addr_size); ++ + /* Note that dest_port is only for OMAP1 */ + void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, + unsigned long dest_start, +@@ -561,6 +576,21 @@ void omap_set_dma_dest_burst_mode(int lch, enum omap_dma_burst_mode burst_mode) + } + EXPORT_SYMBOL(omap_set_dma_dest_burst_mode); + ++void omap_set_dma_dest_addr_size(int lch, unsigned int addr, int elem_count) ++{ ++ ++ if (cpu_class_is_omap1()) { ++ p->dma_write(addr >> 16, CDSA, lch); ++ //p->dma_write((u16)addr, CDSA_L, lch); ++ } ++ ++ if (cpu_class_is_omap2()) ++ p->dma_write(addr, CDSA, lch); ++ ++ p->dma_write(elem_count, CEN, lch); ++} ++EXPORT_SYMBOL_GPL(omap_set_dma_dest_addr_size); ++ + static inline void omap_enable_channel_irq(int lch) + { + u32 status; +diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h +index d1c916f..1e7243e 100644 +--- a/arch/arm/plat-omap/include/plat/dma.h ++++ b/arch/arm/plat-omap/include/plat/dma.h +@@ -462,6 +462,8 @@ extern void omap_set_dma_src_index(int lch, int eidx, int fidx); + extern void omap_set_dma_src_data_pack(int lch, int enable); + extern void omap_set_dma_src_burst_mode(int lch, + enum omap_dma_burst_mode burst_mode); ++extern void omap_set_dma_src_addr_size(int lch, unsigned int addr, ++ int elem_count); + + extern void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, + unsigned long dest_start, +@@ -470,6 +472,8 @@ extern void omap_set_dma_dest_index(int lch, int eidx, int fidx); + extern void omap_set_dma_dest_data_pack(int lch, int enable); + extern void omap_set_dma_dest_burst_mode(int lch, + enum omap_dma_burst_mode burst_mode); ++extern void omap_set_dma_dest_addr_size(int lch, unsigned int addr, ++ int elem_count); + + extern void omap_set_dma_params(int lch, + struct omap_dma_channel_params *params); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/0029-usrp-embedded-Add-driver-for-USRP-Embedded-FPGA-inte.patch b/recipes-bsp/linux/linux-omap-2.6.37rc/0029-usrp-embedded-Add-driver-for-USRP-Embedded-FPGA-inte.patch new file mode 100644 index 0000000..9a7133f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/0029-usrp-embedded-Add-driver-for-USRP-Embedded-FPGA-inte.patch @@ -0,0 +1,1889 @@ +From 511a2c7822e68d081de3cefa8a2a82815da6ce78 Mon Sep 17 00:00:00 2001 +From: Philip Balister +Date: Wed, 13 Jan 2010 14:35:39 -0500 +Subject: [PATCH 29/29] usrp-embedded : Add driver for USRP Embedded FPGA interface. + +--- + arch/arm/mach-omap2/board-overo.c | 176 +++++- + drivers/misc/Kconfig | 9 + + drivers/misc/Makefile | 1 + + drivers/misc/usrp_e.c | 1481 +++++++++++++++++++++++++++++++++++++ + include/linux/usrp_e.h | 87 +++ + 5 files changed, 1750 insertions(+), 4 deletions(-) + create mode 100644 drivers/misc/usrp_e.c + create mode 100644 include/linux/usrp_e.h + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index 8a44c17..8686015 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -35,6 +35,8 @@ + #include + #include + ++#include ++ + #include + #include + #include +@@ -63,6 +65,8 @@ + #define OVERO_GPIO_USBH_NRESET 183 + + #define NAND_BLOCK_SIZE SZ_128K ++#define GPMC_CS0_BASE 0x60 ++#define GPMC_CS_SIZE 0x30 + + #define OVERO_SMSC911X_CS 5 + #define OVERO_SMSC911X_GPIO 176 +@@ -164,7 +168,9 @@ static struct platform_device overo_smsc911x2_device = { + + static struct platform_device *smsc911x_devices[] = { + &overo_smsc911x_device, ++#if 0 + &overo_smsc911x2_device, ++#endif + }; + + static inline void __init overo_init_smsc911x(void) +@@ -194,6 +200,7 @@ static inline void __init overo_init_smsc911x(void) + + /* set up second smsc911x chip */ + ++#if 0 + 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; +@@ -213,6 +220,7 @@ static inline void __init overo_init_smsc911x(void) + overo_smsc911x2_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X2_GPIO); + overo_smsc911x2_resources[1].end = 0; + ++#endif + platform_add_devices(smsc911x_devices, ARRAY_SIZE(smsc911x_devices)); + } + +@@ -353,6 +361,16 @@ static struct regulator_consumer_supply overo_vdda_dac_supply = + static struct regulator_consumer_supply overo_vdds_dsi_supply = + REGULATOR_SUPPLY("vdds_dsi", "omapdss"); + ++static struct spi_board_info overo_mcspi_board_info[] = { ++ { ++ .modalias = "spidev", ++ .max_speed_hz = 12000000, // 12 MHz ++ .bus_num = 1, ++ .chip_select = 0, ++ .mode = SPI_MODE_1, ++ }, ++}; ++ + static struct mtd_partition overo_nand_partitions[] = { + { + .name = "xloader", +@@ -432,8 +450,8 @@ static struct omap2_hsmmc_info mmc[] = { + .mmc = 2, + .caps = MMC_CAP_4_BIT_DATA, + .gpio_cd = -EINVAL, +- .gpio_wp = -EINVAL, +- .transceiver = true, ++ .transceiver = true, ++ .gpio_wp = 150, + .ocr_mask = 0x00100000, /* 3.3V */ + }, + {} /* Terminator */ +@@ -612,6 +630,8 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { + static struct omap_board_mux board_mux[] __initdata = { + { .reg_offset = OMAP_MUX_TERMINATOR }, + }; ++#else ++#define board_mux NULL + #endif + + static struct omap_musb_board_data musb_board_data = { +@@ -626,6 +646,148 @@ static struct omap_musb_board_data musb_board_data = { + .power = 100, + }; + ++static void __init usrp1_e_init(void) ++{ ++ unsigned int tmp; ++ ++ printk("Setup up gpmc timing.\n"); ++ ++// Set up CS4, data read/write ++ ++#if 1 ++ // Signal control parameters per chip select ++ tmp = gpmc_cs_read_reg(4, GPMC_CS_CONFIG1); ++// tmp |= (GPMC_CONFIG1_MUXADDDATA); ++// tmp |= (GPMC_CONFIG1_WRITETYPE_SYNC); ++// tmp |= (GPMC_CONFIG1_READTYPE_SYNC); ++ tmp |= (GPMC_CONFIG1_FCLK_DIV(0)); ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG1, tmp); ++ printk("GPMC_CONFIG1 reg: %x\n", tmp); ++#endif ++ ++#if 1 ++ // CS signal timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG2_CSONTIME(1); /* 1 */ ++ tmp |= GPMC_CONFIG2_CSWROFFTIME(16); /* 16 */ ++ tmp |= GPMC_CONFIG2_CSRDOFFTIME(16); /* 16 */ ++ printk("GPMC_CONFIG2 reg: %x\n", tmp); ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG2, tmp); ++#endif ++ ++#if 0 ++ // nADV signal timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG3_ADVONTIME(1); ++ tmp |= GPMC_CONFIG3_ADVRDOFFTIME(2); ++ tmp |= GPMC_CONFIG3_ADVWROFFTIME(2); ++ printk("GPMC_CONFIG3 reg: %x\n", tmp); ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG3, tmp); ++#endif ++ ++#if 1 ++ // nWE and nOE signals timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG4_WEONTIME(3); /* 3 */ ++ tmp |= GPMC_CONFIG4_WEOFFTIME(16); /* 16 */ ++ tmp |= GPMC_CONFIG4_OEONTIME(3); /* 3 */ ++ tmp |= GPMC_CONFIG4_OEOFFTIME(16); /* 16 */ ++ printk("GPMC_CONFIG4 reg: %x\n", tmp); ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG4, tmp); ++#endif ++ ++#if 1 ++ // RdAccess time and Cycle time timing parameters configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG5_PAGEBURSTACCESSTIME(1); ++ tmp |= GPMC_CONFIG5_RDACCESSTIME(15); /* 15 */ ++ tmp |= GPMC_CONFIG5_WRCYCLETIME(17); /* 17 */ ++ tmp |= GPMC_CONFIG5_RDCYCLETIME(17); /* 17 */ ++ printk("GPMC_CONFIG5 reg: %x\n", tmp); ++ ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG5, tmp); ++#endif ++ ++#if 1 ++ // WrAccessTime WrDataOnADmuxBus, Cycle2Cycle, and BusTurnAround params ++ tmp = (1<<31); ++ tmp |= GPMC_CONFIG6_WRACCESSTIME(15); /* 15 */ ++ tmp |= GPMC_CONFIG6_WRDATAONADMUXBUS(3); ++ tmp |= GPMC_CONFIG6_CYCLE2CYCLEDELAY(0); ++ tmp |= GPMC_CONFIG6_BUSTURNAROUND(0); ++ printk("GPMC_CONFIG6 reg: %x\n", tmp); ++ gpmc_cs_write_reg(4, GPMC_CS_CONFIG6, tmp); ++#endif ++ ++// Configure timing for CS6, wishbone access ++ ++#if 1 ++ // Signal control parameters per chip select ++ tmp = gpmc_cs_read_reg(6, GPMC_CS_CONFIG1); ++// tmp |= (GPMC_CONFIG1_MUXADDDATA); ++ tmp |= (GPMC_CONFIG1_WRITETYPE_SYNC); ++ tmp |= (GPMC_CONFIG1_READTYPE_SYNC); ++ tmp |= (GPMC_CONFIG1_FCLK_DIV(0)); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG1, tmp); ++ printk("GPMC_CONFIG1 reg: %x\n", tmp); ++#endif ++ ++#if 1 ++ // CS signal timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG2_CSONTIME(1); ++ tmp |= GPMC_CONFIG2_CSWROFFTIME(17); ++ tmp |= GPMC_CONFIG2_CSRDOFFTIME(17); ++ printk("GPMC_CONFIG2 reg: %x\n", tmp); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG2, tmp); ++#endif ++ ++#if 0 ++ // nADV signal timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG3_ADVONTIME(1); ++ tmp |= GPMC_CONFIG3_ADVRDOFFTIME(2); ++ tmp |= GPMC_CONFIG3_ADVWROFFTIME(2); ++ printk("GPMC_CONFIG3 reg: %x\n", tmp); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG3, tmp); ++#endif ++ ++#if 0 ++ // nWE and nOE signals timing parameter configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG4_WEONTIME(3); ++ tmp |= GPMC_CONFIG4_WEOFFTIME(4); ++ tmp |= GPMC_CONFIG4_OEONTIME(3); ++ tmp |= GPMC_CONFIG4_OEOFFTIME(4); ++ printk("GPMC_CONFIG4 reg: %x\n", tmp); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG4, tmp); ++#endif ++ ++#if 0 ++ // RdAccess time and Cycle time timing paraters configuration ++ tmp = 0; ++ tmp |= GPMC_CONFIG5_PAGEBURSTACCESSTIME(1); ++ tmp |= GPMC_CONFIG5_RDACCESSTIME(4); ++ tmp |= GPMC_CONFIG5_WRCYCLETIME(5); ++ tmp |= GPMC_CONFIG5_RDCYCLETIME(5); ++ printk("GPMC_CONFIG5 reg: %x\n", tmp); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG5, tmp); ++#endif ++ ++#if 1 ++ // WrAccessTime WrDataOnADmuxBus, Cycle2Cycle, and BusTurnAround params ++ tmp = 0; ++ tmp |= GPMC_CONFIG6_WRACCESSTIME(15); ++ tmp |= GPMC_CONFIG6_WRDATAONADMUXBUS(3); ++ tmp |= GPMC_CONFIG6_CYCLE2CYCLEDELAY(3); ++ tmp |= GPMC_CONFIG6_CYCLE2CYCLESAMECSEN; ++ tmp |= GPMC_CONFIG6_BUSTURNAROUND(0); ++ printk("GPMC_CONFIG6 reg: %x\n", tmp); ++ gpmc_cs_write_reg(6, GPMC_CS_CONFIG6, tmp); ++#endif ++ ++} ++ + static void __init overo_init(void) + { + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); +@@ -637,8 +799,14 @@ static void __init overo_init(void) + usb_ehci_init(&ehci_pdata); + overo_spi_init(); + overo_init_smsc911x(); ++#if 0 + overo_display_init(); +- ++#endif ++ usrp1_e_init(); ++#if 1 ++ spi_register_board_info(overo_mcspi_board_info, ++ ARRAY_SIZE(overo_mcspi_board_info)); ++#endif + /* 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); +@@ -680,7 +848,7 @@ static void __init overo_init(void) + "OVERO_GPIO_USBH_CPEN\n"); + } + +-MACHINE_START(OVERO, "Gumstsix Overo") ++MACHINE_START(OVERO, "Gumstix Overo") + .boot_params = 0x80000100, + .map_io = omap3_map_io, + .reserve = omap_reserve, +diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig +index 4d073f1..8bd6dfb 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig +@@ -452,6 +452,15 @@ config PCH_PHUB + To compile this driver as a module, choose M here: the module will + be called pch_phub. + ++config USRP_E ++ tristate "USRP-E FPGA interface driver" ++ default n ++ help ++ This driver is for the Ettus Research USRP Embedded Software ++ Defined Radio platform. ++ ++ If you do not plan to run this kernel on that hardware choose N. ++ + source "drivers/misc/c2port/Kconfig" + source "drivers/misc/eeprom/Kconfig" + source "drivers/misc/cb710/Kconfig" +diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile +index 98009cc..f43483e 100644 +--- a/drivers/misc/Makefile ++++ b/drivers/misc/Makefile +@@ -35,6 +35,7 @@ obj-$(CONFIG_TI_DAC7512) += ti_dac7512.o + obj-$(CONFIG_C2PORT) += c2port/ + obj-$(CONFIG_IWMC3200TOP) += iwmc3200top/ + obj-$(CONFIG_HMC6352) += hmc6352.o ++obj-$(CONFIG_USRP_E) += usrp_e.o + obj-y += eeprom/ + obj-y += cb710/ + obj-$(CONFIG_VMWARE_BALLOON) += vmw_balloon.o +diff --git a/drivers/misc/usrp_e.c b/drivers/misc/usrp_e.c +new file mode 100644 +index 0000000..2923b14 +--- /dev/null ++++ b/drivers/misc/usrp_e.c +@@ -0,0 +1,1481 @@ ++/* ++ * -*- linux-c -*- ++ * Interface for USRP Embedded from Ettus Research, LLC. ++ * This driver uses the GPMC interface on the OMAP3 to pass data ++ * to/from a Spartan 3 FPGA. ++ * ++ * Copyright (C) Ettus Research, LLC ++ * ++ * Written by Philip Balister ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include "linux/fs.h" ++#include "linux/module.h" ++#include "linux/cdev.h" ++#include "linux/device.h" ++#include "linux/spinlock.h" ++#include "linux/errno.h" ++#include "linux/irq.h" ++#include "linux/interrupt.h" ++#include "linux/wait.h" ++#include "linux/sched.h" ++#include "linux/dma-mapping.h" ++#include "linux/semaphore.h" ++#include "linux/kthread.h" ++#include "linux/poll.h" ++#include "linux/slab.h" ++ ++#include "plat/gpmc.h" ++#include "plat/gpio.h" ++#include "plat/dma.h" ++ ++#include "asm/uaccess.h" ++#include "asm/io.h" ++#include "asm/atomic.h" ++ ++#include "linux/usrp_e.h" ++ ++#define TX_SPACE_AVAILABLE_GPIO 144 ++#define RX_DATA_READY_GPIO 146 ++ ++static atomic_t use_count = ATOMIC_INIT(0); ++static atomic_t mapped = ATOMIC_INIT(0); ++static int shutting_down; ++ ++struct spi_regs_wb; ++struct i2c_regs_wb; ++ ++struct usrp_e_dev { ++ struct cdev cdev; ++ unsigned long mem_base; ++ unsigned long control_mem_base; ++ u32 *ioaddr; ++ u8 *ctl_addr; ++ struct spi_regs_wb *ctl_spi; ++ struct i2c_regs_wb *ctl_i2c; ++ spinlock_t fpga_lock; ++ ++ atomic_t n_overruns; ++ atomic_t n_underruns; ++ ++} *usrp_e_devp; ++ ++struct dma_data { ++ int ch; ++ struct omap_dma_channel_params params; ++ ++ unsigned long virt_from; ++ unsigned long virt_to; ++ unsigned long phys_from; ++ unsigned long phys_to; ++}; ++ ++#define MISC_REGS_BASE 0x0 ++ ++#define UE_REG_MISC_LED (MISC_REGS_BASE + 0) ++ ++#define UE_REG_MISC_RX_LEN (MISC_REGS_BASE + 10) ++#define UE_REG_MISC_TX_LEN (MISC_REGS_BASE + 12) ++ ++#define UE_REG_SLAVE(n) ((n)<<7) ++#define UE_REG_SR_ADDR(n) ((UE_REG_SLAVE(5)) + (4*(n))) ++ ++#define UE_REG_CTRL_TX_CLEAR_UNDERRUN UE_REG_SR_ADDR(25) ++#define UE_SR_CLEAR_FIFO UE_REG_SR_ADDR(6) ++ ++#define CTL_SPI_BASE 0x100 ++ ++struct spi_regs_wb { ++ u32 txrx0; ++ u32 txrx1; ++ u32 txrx2; ++ u32 txrx3; ++ u32 ctrl; ++ u32 div; ++ u32 ss; ++}; ++ ++/* Defines for spi ctrl register */ ++#define UE_SPI_CTRL_ASS (BIT(13)) ++#define UE_SPI_CTRL_IE (BIT(12)) ++#define UE_SPI_CTRL_LSB (BIT(11)) ++/* defines for TXNEG and RXNEG in usrp_e.h so user can pass them to driver. */ ++#define UE_SPI_CTRL_GO_BSY (BIT(8)) ++#define UE_SPI_CTRL_CHAR_LEN_MASK 0x7f ++ ++ ++#define CTL_I2C_BASE 0x180 ++#if 1 ++struct i2c_regs_wb { ++ u8 prescalar_lo; ++ u8 dummy; ++ u8 dummy1; ++ u8 dummy2; ++ u8 prescalar_hi; ++ u8 dummy3; ++ u8 dummy4; ++ u8 dummy5; ++ u8 ctrl; ++ u8 dummy6; ++ u8 dummy7; ++ u8 dummy8; ++ u8 data; ++ u8 dummy9; ++ u8 dummy10; ++ u8 dummy11; ++ u8 cmd_status; ++}; ++#else ++struct i2c_regs_wb { ++ u16 prescalar_lo; ++ u16 dummy2; ++ u16 prescalar_hi; ++ u16 dummy3; ++ u16 ctrl; ++ u16 dummy6; ++ u16 data; ++ u16 dummy9; ++ u16 cmd_status; ++}; ++#endif ++ ++#define I2C_CTRL_EN (BIT(7)) /* core enable */ ++#define I2C_CTRL_IE (BIT(6)) /* interrupt enable */ ++ ++/* STA, STO, RD, WR, and IACK bits are cleared automatically */ ++ ++#define I2C_CMD_START (BIT(7)) ++#define I2C_CMD_STOP (BIT(6)) ++#define I2C_CMD_RD (BIT(5)) ++#define I2C_CMD_WR (BIT(4)) ++#define I2C_CMD_NACK (BIT(3)) ++#define I2C_CMD_RSVD_2 (BIT(2)) ++#define I2C_CMD_RSVD_1 (BIT(1)) ++#define I2C_CMD_IACK (BIT(0)) ++ ++#define I2C_ST_RXACK (BIT(7)) ++#define I2C_ST_BUSY (BIT(6)) ++#define I2C_ST_AL (BIT(5)) ++#define I2C_RSVD_4 (BIT(4)) ++#define I2C_RSVD_3 (BIT(3)) ++#define I2C_RSVD_2 (BIT(2)) ++#define I2C_ST_TIP (BIT(1)) ++#define I2C_ST_IP (BIT(0)) ++ ++#define MAX_WB_DIV 4 ++#define MASTER_CLK_RATE 64000000 ++#define PRESCALAR(wb_div) (((MASTER_CLK_RATE/(wb_div)) / (5 * 100000)) - 1) ++ ++static __u16 prescalar_values[MAX_WB_DIV+1] = { ++ 0xffff, ++ PRESCALAR(1), ++ PRESCALAR(2), ++ PRESCALAR(3), ++ PRESCALAR(4), ++}; ++ ++static struct dma_data *rx_dma; ++static struct dma_data *tx_dma; ++ ++struct ring_buffer_entry { ++ unsigned long dma_addr; ++ __u8 *frame_addr; ++}; ++ ++struct ring_buffer { ++ struct ring_buffer_info (*rbi)[]; ++ struct ring_buffer_entry (*rbe)[]; ++ int num_pages; ++ unsigned long (*pages)[]; ++}; ++ ++static struct ring_buffer tx_rb; ++static struct ring_buffer rx_rb; ++ ++static struct usrp_e_ring_buffer_size_t rb_size; ++ ++#define NUM_PAGES_RX_FLAGS 1 ++#define NUM_RX_FRAMES 100 ++#define NUM_PAGES_TX_FLAGS 1 ++#define NUM_TX_FRAMES 100 ++ ++static int tx_rb_write; ++static int tx_rb_read; ++static int rx_rb_write; ++static int rx_rb_read; ++ ++static int alloc_ring_buffer(struct ring_buffer *rb, ++ unsigned int num_bufs, enum dma_data_direction direction); ++static void delete_ring_buffer(struct ring_buffer *rb, ++ unsigned int num_bufs, enum dma_data_direction direction); ++static int alloc_ring_buffers(void); ++static void init_ring_buffer(struct ring_buffer *rb, int num_bufs, ++ int init_flags, enum dma_data_direction direction); ++ ++static dev_t usrp_e_dev_number; ++static struct class *usrp_e_class; ++ ++#define DEVICE_NAME "usrp_e" ++ ++static const struct file_operations usrp_e_fops; ++ ++static irqreturn_t space_available_irqhandler(int irq, void *dev_id); ++static irqreturn_t data_ready_irqhandler(int irq, void *dev_id); ++static void usrp_rx_dma_irq(int ch, u16 stat, void *data); ++static void usrp_tx_dma_irq(int ch, u16 stat, void *data); ++ ++static DECLARE_WAIT_QUEUE_HEAD(data_received_queue); ++static DECLARE_WAIT_QUEUE_HEAD(space_available_queue); ++static DECLARE_WAIT_QUEUE_HEAD(received_data_from_user); ++static DECLARE_WAIT_QUEUE_HEAD(tx_rb_space_available); ++ ++static int tx_dma_waiting_for_data; ++static int waiting_for_space_in_tx_rb; ++ ++#define DEBUG_RX 1 ++ ++static DEFINE_SEMAPHORE(dma_lock); ++ ++static void usrp_e_spi_init(void); ++static void usrp_e_i2c_init(void); ++ ++static int init_dma_controller(void); ++static void release_dma_controller(void); ++static int get_frame_from_fpga_start(void); ++static int get_frame_from_fpga_finish(void); ++static int send_frame_to_fpga_start(void); ++static int send_frame_to_fpga_finish(void); ++ ++static int rx_dma_active; ++static int tx_dma_active; ++ ++static int __init ++usrp_e_init(void) ++{ ++ int ret; ++ struct usrp_e_dev *p; ++ ++ printk(KERN_DEBUG "usrp_e entering driver initialization\n"); ++ ++ if (alloc_chrdev_region(&usrp_e_dev_number, 0, 1, DEVICE_NAME) < 0) { ++ printk(KERN_DEBUG "Can't register device\n"); ++ return -1; ++ } ++ ++ usrp_e_class = class_create(THIS_MODULE, DEVICE_NAME); ++ ++ usrp_e_devp = kzalloc(sizeof(struct usrp_e_dev), GFP_KERNEL); ++ if (!usrp_e_devp) { ++ printk(KERN_ERR "Bad kmalloc\n"); ++ return -ENOMEM; ++ } ++ ++ p = usrp_e_devp; /* Shorten var name so I stay sane. */ ++ ++ printk(KERN_DEBUG "usrp_e data struct malloc'd.\n"); ++ ++ atomic_set(&p->n_underruns, 0); ++ atomic_set(&p->n_overruns, 0); ++ ++ printk(KERN_DEBUG "usrp_e Data initialized..\n"); ++ ++ cdev_init(&p->cdev, &usrp_e_fops); ++ p->cdev.owner = THIS_MODULE; ++ ++ ret = cdev_add(&p->cdev, MKDEV(MAJOR(usrp_e_dev_number), 0), 1); ++ if (ret) { ++ printk(KERN_ERR "Bad cdev\n"); ++ return ret; ++ } ++ ++ printk(KERN_DEBUG "usrp_e major number : %d\n", ++ MAJOR(usrp_e_dev_number)); ++ device_create(usrp_e_class, NULL, MKDEV(MAJOR(usrp_e_dev_number), 0), ++ NULL, "usrp_e%d", 0); ++ ++ printk(KERN_DEBUG "Getting Chip Select\n"); ++ ++ if (gpmc_cs_request(4, SZ_2K, &p->mem_base) < 0) { ++ printk(KERN_ERR "Failed request for GPMC mem for usrp_e\n"); ++ return -1; ++ } ++ printk(KERN_DEBUG "Got CS4, address = %lx\n", p->mem_base); ++ ++ if (!request_mem_region(p->mem_base, SZ_2K, "usrp_e")) { ++ printk(KERN_ERR "Request_mem_region failed.\n"); ++ gpmc_cs_free(4); ++ return -1; ++ } ++ ++ p->ioaddr = ioremap(p->mem_base, SZ_2K); ++ spin_lock_init(&p->fpga_lock); ++ ++ if (gpmc_cs_request(6, SZ_2K, &p->control_mem_base) < 0) { ++ printk(KERN_ERR "Failed request for GPMC control mem for usrp_e\n"); ++ return -1; ++ } ++ printk(KERN_DEBUG "Got CS6, address = %lx\n", p->control_mem_base); ++ ++ if (!request_mem_region(p->control_mem_base, SZ_2K, "usrp_e_c")) { ++ printk(KERN_ERR "Request_mem_region failed.\n"); ++ gpmc_cs_free(6); ++ return -1; ++ } ++ ++ p->ctl_addr = ioremap_nocache(p->control_mem_base, SZ_2K); ++ ++ /* Initialize wishbone SPI and I2C interfaces */ ++ ++ usrp_e_spi_init(); ++ usrp_e_i2c_init(); ++ ++ /* Configure GPIO's */ ++ ++ if (!(((gpio_request(TX_SPACE_AVAILABLE_GPIO, ++ "TX_SPACE_AVAILABLE_GPIO") == 0) && ++ (gpio_direction_input(TX_SPACE_AVAILABLE_GPIO) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for TX_SPACE_AVAILABLE_GPIO\n"); ++ return -1; ++ } ++ ++ if (!(((gpio_request(RX_DATA_READY_GPIO, "RX_DATA_READY_GPIO") == 0) && ++ (gpio_direction_input(RX_DATA_READY_GPIO) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for RX_DATA_READY_GPIO\n"); ++ return -1; ++ } ++ ++ /* Debug gpios */ ++ if (!(((gpio_request(14, "Debug0") == 0) && ++ (gpio_direction_output(14, 0) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for Debug0\n"); ++ return -1; ++ } ++ ++ if (!(((gpio_request(21, "Debug1") == 0) && ++ (gpio_direction_output(21, 0) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for Debug1\n"); ++ return -1; ++ } ++ ++ if (!(((gpio_request(22, "Debug2") == 0) && ++ (gpio_direction_output(22, 0) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for Debug2\n"); ++ return -1; ++ } ++ ++ if (!(((gpio_request(23, "Debug3") == 0) && ++ (gpio_direction_output(23, 0) == 0)))) { ++ printk(KERN_ERR "Could not claim GPIO for Debug3\n"); ++ return -1; ++ } ++ ++ ++ rb_size.num_pages_rx_flags = NUM_PAGES_RX_FLAGS; ++ rb_size.num_rx_frames = NUM_RX_FRAMES; ++ rb_size.num_pages_tx_flags = NUM_PAGES_TX_FLAGS; ++ rb_size.num_tx_frames = NUM_TX_FRAMES; ++ ++ ret = alloc_ring_buffers(); ++ if (ret < 0) ++ return ret; ++ ++ /* Initialize various DMA related flags */ ++ rx_dma_active = 0; ++ tx_dma_active = 0; ++ shutting_down = 0; ++ ++ printk(KERN_DEBUG "usrp_e Driver Initialized.\n"); ++ ++ return 0; ++} ++ ++static void __exit ++usrp_e_cleanup(void) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ ++ unregister_chrdev_region(usrp_e_dev_number, 1); ++ ++ release_mem_region(p->mem_base, SZ_2K); ++ release_mem_region(p->control_mem_base, SZ_2K); ++ ++ device_destroy(usrp_e_class, MKDEV(MAJOR(usrp_e_dev_number), 0)); ++ cdev_del(&p->cdev); ++ ++ class_destroy(usrp_e_class); ++ ++ iounmap(p->ioaddr); ++ iounmap(p->ctl_addr); ++ ++ gpmc_cs_free(4); ++ gpmc_cs_free(6); ++ ++ printk(KERN_DEBUG "Freeing gpios\n"); ++ ++ gpio_free(TX_SPACE_AVAILABLE_GPIO); ++ gpio_free(RX_DATA_READY_GPIO); ++ ++ /* debug */ ++ gpio_free(14); ++ gpio_free(21); ++ gpio_free(22); ++ gpio_free(23); ++ ++ delete_ring_buffer(&tx_rb, rb_size.num_tx_frames, DMA_TO_DEVICE); ++ delete_ring_buffer(&rx_rb, rb_size.num_rx_frames, DMA_FROM_DEVICE); ++ ++ kfree(p); ++ ++ printk(KERN_DEBUG "Leaving cleanup\n"); ++} ++ ++static int ++usrp_e_open(struct inode *inode, struct file *file) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ int ret; ++ ++ printk(KERN_DEBUG "usrp_e open called, use_count = %d\n", ++ atomic_read(&use_count)); ++ if (atomic_add_return(1, &use_count) != 1) { ++ printk(KERN_ERR "use_count = %d\n", atomic_read(&use_count)); ++ atomic_dec(&use_count); ++ return -EBUSY; ++ } ++ ++ /* Clear rx and tx fifos in the fpga */ ++ writel(1, p->ctl_addr + UE_SR_CLEAR_FIFO); ++ writel(2, p->ctl_addr + UE_SR_CLEAR_FIFO); ++ ++#if 0 ++ usrp_e_devp = container_of(inode->i_cdev, struct usrp_e_dev, cdev); ++ ++ file->private_data = usrp_e_devp; ++#endif ++ ++ ret = init_dma_controller(); ++ if (ret < 0) ++ return ret; ++ ++ tx_rb_write = 0; ++ tx_rb_read = 0; ++ ++ rx_rb_write = 0; ++ rx_rb_read = 0; ++ ++ tx_dma_active = 0; ++ rx_dma_active = 0; ++ shutting_down = 0; ++ ++ init_ring_buffer(&rx_rb, rb_size.num_rx_frames, RB_KERNEL, DMA_FROM_DEVICE); ++ init_ring_buffer(&tx_rb, rb_size.num_tx_frames, RB_KERNEL, DMA_TO_DEVICE); ++ ++ /* Configure interrupts for GPIO pins */ ++ ++ ret = request_irq(gpio_to_irq(TX_SPACE_AVAILABLE_GPIO), ++ space_available_irqhandler, ++ IRQF_TRIGGER_RISING, "usrp_e_space_available", NULL); ++ ++ ret = request_irq(gpio_to_irq(RX_DATA_READY_GPIO), ++ data_ready_irqhandler, ++ IRQF_TRIGGER_RISING, "usrp_e_data_ready", NULL); ++ ++ printk(KERN_DEBUG "usrp: leaving open\n"); ++ return 0; ++} ++ ++static int ++usrp_e_release(struct inode *inode, struct file *file) ++{ ++ struct usrp_e_dev *usrp_e_devp = file->private_data; ++ ++ printk(KERN_DEBUG "usrp_e release called\n"); ++ ++ if (atomic_read(&use_count) != 1) { ++ printk(KERN_ERR "Attempt to close usrp_e driver that is not open"); ++ return -ENOENT; ++ } ++ ++ printk(KERN_DEBUG "Waiting for DMA to become inactive\n"); ++ shutting_down = 0; ++ while (tx_dma_active || rx_dma_active) ++ cpu_relax(); ++ ++ /* Freeing gpio irq's */ ++ printk(KERN_DEBUG "Freeing gpio irq's\n"); ++ ++ free_irq(gpio_to_irq(TX_SPACE_AVAILABLE_GPIO), NULL); ++ free_irq(gpio_to_irq(RX_DATA_READY_GPIO), NULL); ++ ++ printk(KERN_DEBUG "Freeing DMA channels\n"); ++ ++ release_dma_controller(); ++ ++ usrp_e_devp = 0; ++ ++ atomic_dec(&use_count); ++ ++ return 0; ++} ++ ++static ssize_t ++usrp_e_read(struct file *file, char *buf, size_t count, loff_t *ppos) ++{ ++ size_t ret; ++ int rx_pkt_len; ++ ++ if (count > SZ_2K) ++ return -EMSGSIZE; ++ ++ if (!((*rx_rb.rbi)[rx_rb_read].flags & RB_USER)) { ++ if (wait_event_interruptible(data_received_queue, ++ (((*rx_rb.rbi)[rx_rb_read].flags & RB_USER)))) ++ return -EINTR; ++ } ++ ++ rx_pkt_len = (*rx_rb.rbi)[rx_rb_read].len; ++ ret = copy_to_user(buf, (*rx_rb.rbe)[rx_rb_read].frame_addr, rx_pkt_len); ++ ++ (*rx_rb.rbi)[rx_rb_read].flags = RB_KERNEL; ++ ++ rx_rb_read++; ++ if (rx_rb_read == rb_size.num_rx_frames) ++ rx_rb_read = 0; ++ ++ get_frame_from_fpga_start(); ++ ++ return ((ret == 0) ? rx_pkt_len : -ret); ++} ++ ++static ssize_t ++usrp_e_write(struct file *file, const char *buf, size_t count, loff_t *ppos) ++{ ++ size_t ret; ++ ++#if 0 ++// printk("In write.\n"); ++ ++ /* Trigger a DMA transfer. Used to start transmit after writing */ ++ /* data into the transmit ring buffer from user space */ ++ if (count < 0) { ++ send_frame_to_fpga_start(); ++ return 0; ++ } ++ ++ if (count > SZ_2K) ++ return -EMSGSIZE; ++ ++// printk("Write flags: %d\n", (*tx_rb.rbe)[tx_rb_write].flags); ++ if (!((*tx_rb.rbi)[tx_rb_write].flags & RB_KERNEL)) { ++ waiting_for_space_in_tx_rb = 1; ++// printk("Sleeping\n"); ++ if (wait_event_interruptible(tx_rb_space_available, ++ ((*tx_rb.rbi)[tx_rb_write].flags & RB_KERNEL))) ++ return -EINTR; ++// printk("Waking\n"); ++ } ++ ++ ret = copy_from_user((*tx_rb.rbe)[tx_rb_write].frame_addr, buf, count); ++ if (ret) ++ return -ret; ++ ++ (*tx_rb.rbi)[tx_rb_write].len = count; ++ (*tx_rb.rbi)[tx_rb_write].flags = RB_USER; ++ ++ tx_rb_write++; ++ if (tx_rb_write == rb_size.num_tx_frames) ++ tx_rb_write = 0; ++ ++// printk("Calling send_to_fpga_start from write\n"); ++#endif ++ send_frame_to_fpga_start(); ++ ++ return count; ++} ++ ++static loff_t ++usrp_e_llseek(struct file *file, loff_t offest, int orig) ++{ ++ printk(KERN_DEBUG "usrp_e llseek called\n"); ++ ++ return 0; ++} ++ ++static int usrp_e_ctl16(unsigned long arg, int direction) ++{ ++ struct usrp_e_ctl16 __user *argp = (struct usrp_e_ctl16 __user *) arg; ++ int i; ++ struct usrp_e_ctl16 ctl; ++ ++ if (copy_from_user(&ctl, argp, sizeof(struct usrp_e_ctl16))) ++ return -EFAULT; ++ ++ if (ctl.count > 10) ++ return -EINVAL; ++ ++ if (direction == 0) { ++ for (i = 0; i < ctl.count; i++) ++ writew(ctl.buf[i], &usrp_e_devp->ctl_addr \ ++ [i + ctl.offset]); ++ } else if (direction == 1) { ++ for (i = 0; i < ctl.count; i++) ++ ctl.buf[i] = readw(&usrp_e_devp->ctl_addr \ ++ [i + ctl.offset]); ++ ++ if (copy_to_user(argp, &ctl, sizeof(struct usrp_e_ctl16))) ++ return -EFAULT; ++ } else ++ return -EFAULT; ++ ++ return 0; ++} ++ ++static int usrp_e_ctl32(unsigned long arg, int direction) ++{ ++ struct usrp_e_ctl32 __user *argp = (struct usrp_e_ctl32 __user *) arg; ++ int i; ++ struct usrp_e_ctl32 ctl; ++ ++ if (copy_from_user(&ctl, argp, sizeof(struct usrp_e_ctl32))) ++ return -EFAULT; ++ ++ if (ctl.count > 20) ++ return -EINVAL; ++ ++ if (direction == 0) { ++ for (i = 0; i < ctl.count; i++) ++ writel(ctl.buf[i], &usrp_e_devp->ctl_addr \ ++ [i + ctl.offset]); ++ } else if (direction == 1) { ++ for (i = 0; i < ctl.count; i++) ++ ctl.buf[i] = readl(&usrp_e_devp->ctl_addr \ ++ [i + ctl.offset]); ++ ++ if (copy_to_user(argp, &ctl, sizeof(struct usrp_e_ctl16))) ++ return -EFAULT; ++ ++ } else ++ return -EFAULT; ++ ++ return 0; ++} ++ ++static int usrp_e_get_rb_info(unsigned long arg) ++{ ++ struct usrp_e_ring_buffer_size_t __user *argp = (struct usrp_e_ring_buffer_size_t __user *) arg; ++ int i; ++ ++ if (copy_to_user(argp, &rb_size, sizeof(rb_size))) ++ return -EFAULT; ++ ++ return 0; ++} ++ ++static void usrp_e_spi_init() ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ ++ p->ctl_spi = (struct spi_regs_wb *)(p->ctl_addr + CTL_SPI_BASE); ++ p->ctl_spi->div = 64; /* 1 = Div by 4 (12.5 MHz) */ ++} ++ ++static int usrp_e_spi_wait(void) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ ++ while (p->ctl_spi->ctrl & UE_SPI_CTRL_GO_BSY) { ++ if (signal_pending(current)) { ++ printk(KERN_DEBUG "Signal received.\n"); ++ set_current_state(TASK_RUNNING); ++ return -EINTR; ++ } ++ schedule(); ++ } ++ ++ return 0; ++} ++ ++static int usrp_e_spi(unsigned long __user arg) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ struct usrp_e_spi __user *argp = (struct usrp_e_spi __user *) arg; ++ struct usrp_e_spi spi_cmd; ++ int ctrl, ret; ++ ++ if (copy_from_user(&spi_cmd, argp, sizeof(struct usrp_e_spi))) ++ return -EFAULT; ++ ++ spi_cmd.flags &= (UE_SPI_CTRL_TXNEG | UE_SPI_CTRL_RXNEG); ++ ctrl = UE_SPI_CTRL_ASS | (UE_SPI_CTRL_CHAR_LEN_MASK & spi_cmd.length) \ ++ | spi_cmd.flags; ++ ++ ret = usrp_e_spi_wait(); ++ if (ret < 0) ++ return ret; ++ ++ p->ctl_spi->ss = spi_cmd.slave & 0xff; ++ ++ p->ctl_spi->txrx0 = spi_cmd.data; ++ ++ p->ctl_spi->ctrl = ctrl; ++ p->ctl_spi->ctrl = ctrl | UE_SPI_CTRL_GO_BSY; ++ ++ if (spi_cmd.readback) { ++ usrp_e_spi_wait(); ++ if (copy_to_user(&argp->data, &p->ctl_spi->txrx0, ++ sizeof(__u32))) ++ return -EFAULT; ++ else ++ return 0; ++ } else ++ return 0; ++ ++} ++ ++static void usrp_e_i2c_init() ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ int wb_div; ++ ++ p->ctl_i2c = (struct i2c_regs_wb *)(p->ctl_addr + CTL_I2C_BASE); ++ ++ writeb(0, &p->ctl_i2c->ctrl); /* disable core */ ++ ++ /* Assume wb_div is 4, deal with this later */ ++ wb_div = 4; ++ if (wb_div > MAX_WB_DIV) ++ wb_div = MAX_WB_DIV; ++ ++ writeb((prescalar_values[wb_div] & 0xff), &p->ctl_i2c->prescalar_lo); ++ writeb(((prescalar_values[wb_div] >> 8) & 0xff), ++ &p->ctl_i2c->prescalar_hi); ++ writeb(I2C_CTRL_EN, &p->ctl_i2c->ctrl); /* enable core */ ++} ++ ++static int usrp_e_i2c_wait(__u32 mask, int chk_ack) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ ++ while (readb(&p->ctl_i2c->cmd_status) & mask) { ++ if (signal_pending(current)) { ++ printk(KERN_DEBUG "Signal received.\n"); ++ set_current_state(TASK_RUNNING); ++ return -EINTR; ++ } ++ schedule(); ++ } ++ ++ if (chk_ack) { ++ if ((readb(&p->ctl_i2c->cmd_status) & I2C_ST_RXACK) == 0) ++ return 1; ++ else ++ return 0; ++ } ++ ++ return 0; ++} ++ ++static int usrp_e_i2c(unsigned long arg, int direction) ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ struct usrp_e_i2c __user *argp = (struct usrp_e_i2c __user *) arg; ++ struct usrp_e_i2c tmp; ++ struct usrp_e_i2c *i2c_msg; ++ int ret, len, i; ++ ++ if (copy_from_user(&tmp, argp, sizeof(struct usrp_e_i2c))) ++ return -EFAULT; ++ ++ i2c_msg = kmalloc(sizeof(struct usrp_e_i2c) + tmp.len, GFP_KERNEL); ++ if (!i2c_msg) ++ return -ENOMEM; ++ ++ if (copy_from_user(i2c_msg, argp, ++ (sizeof(struct usrp_e_i2c) + tmp.len))) ++ return -EFAULT; ++ ++ if (direction) { ++ /* read */ ++ if (i2c_msg->len == 0) ++ return 1; ++ ++ usrp_e_i2c_wait(I2C_ST_BUSY, 0); ++ ++ writeb(((i2c_msg->addr << 1) | 1), &p->ctl_i2c->data); ++ writeb((I2C_CMD_WR | I2C_CMD_START), &p->ctl_i2c->cmd_status); ++ ret = usrp_e_i2c_wait(I2C_ST_TIP, 1); ++ if (ret < 0) { ++ return ret; ++ } else if (ret == 0) { ++ writeb(I2C_CMD_STOP, &p->ctl_i2c->cmd_status); ++ return 2; ++ } ++ ++ for (len = i2c_msg->len, i = 0; len > 0; i++, len--) { ++ writeb((I2C_CMD_RD | ((len == 1) ? ++ (I2C_CMD_NACK | I2C_CMD_STOP) : 0)), ++ &p->ctl_i2c->cmd_status); ++ usrp_e_i2c_wait(I2C_ST_TIP, 0); ++ i2c_msg->data[i] = readb(&p->ctl_i2c->data); ++ } ++ if (copy_to_user(argp, i2c_msg, (sizeof(struct usrp_e_i2c) + ++ tmp.len))) ++ return -EFAULT; ++ } else { ++ /* write */ ++ usrp_e_i2c_wait(I2C_ST_BUSY, 0); ++ writeb(((i2c_msg->addr << 1) | 0), &p->ctl_i2c->data); ++ writeb((I2C_CMD_WR | I2C_CMD_START | ++ (i2c_msg->len == 0 ? I2C_CMD_STOP : 0)), ++ &p->ctl_i2c->cmd_status); ++ ret = usrp_e_i2c_wait(I2C_ST_TIP, 1); ++ if (ret < 0) { ++ return ret; ++ } else if (ret == 0) { ++ writeb(I2C_CMD_STOP, &p->ctl_i2c->cmd_status); ++ return 2; ++ } ++ for (len = i2c_msg->len, i = 0; len > 0; i++, len--) { ++ writeb(i2c_msg->data[i], &p->ctl_i2c->data); ++ writeb((I2C_CMD_WR | (len == 1 ? I2C_CMD_STOP : 0)), ++ &p->ctl_i2c->cmd_status); ++ ret = usrp_e_i2c_wait(I2C_ST_TIP, 1); ++ if (ret < 0) { ++ return ret; ++ } else if (ret == 0) { ++ writeb(I2C_CMD_STOP, &p->ctl_i2c->cmd_status); ++ return 2; ++ } ++ } ++ ++ } ++ ++ ++ return 1; ++} ++ ++static int usrp_e_ioctl(struct file *file, ++ unsigned int cmd, unsigned long arg) ++{ ++ ++ switch (cmd) { ++ case USRP_E_WRITE_CTL16: ++ return usrp_e_ctl16(arg, 0); ++ ++ case USRP_E_READ_CTL16: ++ return usrp_e_ctl16(arg, 1); ++ ++ case USRP_E_WRITE_CTL32: ++ return usrp_e_ctl32(arg, 0); ++ ++ case USRP_E_READ_CTL32: ++ return usrp_e_ctl32(arg, 1); ++ ++ case USRP_E_SPI: ++ return usrp_e_spi(arg); ++ ++ case USRP_E_I2C_WRITE: ++ return usrp_e_i2c(arg, 0); ++ ++ case USRP_E_I2C_READ: ++ return usrp_e_i2c(arg, 1); ++ ++ case USRP_E_GET_RB_INFO: ++ return usrp_e_get_rb_info(arg); ++ ++ default: ++ return -ENOTTY; ++ } ++ ++ return 0; ++} ++ ++static unsigned int usrp_e_poll(struct file *filp, poll_table *wait) ++{ ++ unsigned int mask = 0; ++ ++ poll_wait(filp, &data_received_queue, wait); ++ poll_wait(filp, &tx_rb_space_available, wait); ++ ++ // Make sure write is active before sleeping ++ send_frame_to_fpga_start(); ++ ++ /* Make sure to read in case the rx ring buffer is full */ ++ get_frame_from_fpga_start(); ++ ++ // This likely needs some locking. The pointer is incremented ++ // before the flag state is updated. ++ ++ if (rx_rb_write == 0) { ++ if ((*rx_rb.rbi)[rb_size.num_rx_frames - 1].flags & RB_USER) ++ mask |= POLLIN | POLLRDNORM; ++ } else { ++ if ((*rx_rb.rbi)[rx_rb_write - 1].flags & RB_USER) ++ mask |= POLLIN | POLLRDNORM; ++ } ++ ++ if (tx_rb_read == 0) { ++ if ((*tx_rb.rbi)[rb_size.num_tx_frames - 1].flags & RB_KERNEL) ++ mask |= POLLOUT | POLLWRNORM; ++ } else { ++ if ((*tx_rb.rbi)[tx_rb_read - 1].flags & RB_KERNEL) ++ mask |= POLLOUT | POLLWRNORM; ++ } ++ ++ return mask; ++ ++} ++ ++/* The mmap code is based on code in af_packet.c */ ++ ++static void usrp_e_mm_open(struct vm_area_struct *vma) ++{ ++ ++ atomic_inc(&mapped); ++} ++ ++static void usrp_e_mm_close(struct vm_area_struct *vma) ++{ ++ ++ atomic_dec(&mapped); ++} ++ ++static const struct vm_operations_struct usrp_e_mmap_ops = { ++ .open = usrp_e_mm_open, ++ .close = usrp_e_mm_close, ++}; ++ ++static int usrp_e_mmap(struct file *filp, struct vm_area_struct *vma) ++{ ++ unsigned long size, expected_size; ++ unsigned int i; ++ unsigned long start; ++ int err; ++ struct page *page; ++ ++ printk("In mmap\n"); ++ ++ if (vma->vm_pgoff) ++ return -EINVAL; ++ ++ /* Verify the user will map the entire tx and rx ring buffer space */ ++ expected_size = (rb_size.num_rx_frames + rb_size.num_tx_frames) * (PAGE_SIZE >> 1) ++ + (rb_size.num_pages_rx_flags + rb_size.num_pages_tx_flags) * PAGE_SIZE; ++ ++ size = vma->vm_end - vma->vm_start; ++ printk(KERN_DEBUG "Size = %d, expected sixe = %d\n", size, expected_size); ++ ++ if (size != expected_size) ++ return -EINVAL; ++ ++ start = vma->vm_start; ++ ++ page = virt_to_page(rx_rb.rbi); ++ err = vm_insert_page(vma, start, page); ++ if (err) ++ return -EINVAL; ++ ++ start += PAGE_SIZE; ++ ++ for (i = 0; i < rx_rb.num_pages; ++i) { ++ struct page *page = virt_to_page((*rx_rb.pages)[i]); ++ err = vm_insert_page(vma, start, page); ++ if (err) ++ return -EINVAL; ++ ++ start += PAGE_SIZE; ++ } ++ ++ page = virt_to_page(tx_rb.rbi); ++ err = vm_insert_page(vma, start, page); ++ if (err) ++ return -EINVAL; ++ ++ start += PAGE_SIZE; ++ ++ for (i = 0; i < tx_rb.num_pages; ++i) { ++ struct page *page = virt_to_page((*tx_rb.pages)[i]); ++ ++ err = vm_insert_page(vma, start, page); ++ if (err) ++ return err; ++ ++ start += PAGE_SIZE; ++ } ++ ++ vma->vm_ops = &usrp_e_mmap_ops; ++ ++ return 0; ++} ++ ++static const struct file_operations usrp_e_fops = { ++ .owner = THIS_MODULE, ++ .open = usrp_e_open, ++ .release = usrp_e_release, ++ .read = usrp_e_read, ++ .write = usrp_e_write, ++ .llseek = usrp_e_llseek, ++ .unlocked_ioctl = usrp_e_ioctl, ++ .poll = usrp_e_poll, ++ .mmap = usrp_e_mmap, ++}; ++ ++MODULE_VERSION("0.1"); ++MODULE_ALIAS(DEVICE_NAME); ++MODULE_DESCRIPTION(DEVICE_NAME); ++MODULE_AUTHOR("Philip Balister "); ++MODULE_LICENSE("GPL v2"); ++ ++module_init(usrp_e_init); ++module_exit(usrp_e_cleanup); ++ ++static irqreturn_t space_available_irqhandler(int irq, void *dev_id) ++{ ++ int serviced = IRQ_NONE; ++ ++#ifdef DEBUG_TX ++ gpio_set_value(22, 1); ++#endif ++ ++// printk("Calling send_to_fpga_start from space_available irq\n"); ++ send_frame_to_fpga_start(); ++ ++ serviced = IRQ_HANDLED; ++ ++#ifdef DEBUG_TX ++ gpio_set_value(22, 0); ++#endif ++ ++ return serviced; ++} ++ ++static void usrp_rx_dma_irq(int ch, u16 stat, void *data) ++{ ++ ++#ifdef DEBUG_RX ++ gpio_set_value(23, 1); ++#endif ++ ++ rx_dma_active = 0; ++ ++ get_frame_from_fpga_finish(); ++ ++#ifdef DEBUG_RX ++ gpio_set_value(23, 0); ++#endif ++} ++ ++static void usrp_tx_dma_irq(int ch, u16 stat, void *data) ++{ ++ ++#ifdef DEBUG_TX ++ gpio_set_value(23, 1); ++#endif ++ tx_dma_active = 0; ++ ++ send_frame_to_fpga_finish(); ++ ++#ifdef DEBUG_TX ++ gpio_set_value(23, 0); ++#endif ++ ++/* Save ++ gpio_set_value(21, 1); ++ gpio_set_value(21, 0); ++*/ ++ ++} ++ ++static irqreturn_t data_ready_irqhandler(int irq, void *dev_id) ++{ ++ int serviced = IRQ_NONE; ++ ++#ifdef DEBUG_RX ++ gpio_set_value(22, 1); ++#endif ++ ++ get_frame_from_fpga_start(); ++ ++ serviced = IRQ_HANDLED; ++ ++#ifdef DEBUG_RX ++ gpio_set_value(22, 0); ++#endif ++ return serviced; ++} ++ ++static int init_dma_controller() ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ ++ rx_dma = kzalloc(sizeof(struct dma_data), GFP_KERNEL); ++ if (!rx_dma) { ++ printk(KERN_ERR "Failed to allocate memory for rx_dma struct."); ++ return -ENOMEM; ++ } ++ ++ if (omap_request_dma(OMAP_DMA_NO_DEVICE, "usrp-e-rx", ++ usrp_rx_dma_irq, (void *) rx_dma, &rx_dma->ch)) { ++ printk(KERN_ERR "Could not get rx DMA channel for usrp_e\n"); ++ return -ENOMEM; ++ } ++ printk(KERN_DEBUG "rx_dma->ch %d\n", rx_dma->ch); ++ ++ rx_dma->phys_from = p->mem_base; ++ ++ memset(&rx_dma->params, 0, sizeof(rx_dma->params)); ++ rx_dma->params.data_type = OMAP_DMA_DATA_TYPE_S16; ++ ++ rx_dma->params.src_amode = OMAP_DMA_AMODE_CONSTANT; ++ rx_dma->params.dst_amode = OMAP_DMA_AMODE_POST_INC; ++ ++ rx_dma->params.src_start = p->mem_base; ++ rx_dma->params.dst_start = rx_dma->phys_to; ++ ++ rx_dma->params.src_ei = 1; ++ rx_dma->params.src_fi = 1; ++ rx_dma->params.dst_ei = 1; ++ rx_dma->params.dst_fi = 1; ++ ++ rx_dma->params.elem_count = 1024; ++ rx_dma->params.frame_count = 1; ++ ++ rx_dma->params.read_prio = DMA_CH_PRIO_HIGH; ++ rx_dma->params.write_prio = DMA_CH_PRIO_LOW; ++ ++ omap_set_dma_params(rx_dma->ch, &rx_dma->params); ++ ++// Play with these with a real application ++//G omap_set_dma_src_burst_mode(rx_dma->ch, OMAP_DMA_DATA_BURST_16); ++// omap_set_dma_dest_burst_mode(rx_dma->ch, OMAP_DMA_DATA_BURST_16); ++ ++#if 0 // Need to find implentations of the endian calls ++ omap_set_dma_src_endian_type(rx_dma->ch, OMAP_DMA_BIG_ENDIAN); ++ omap_set_dma_dst_endian_type(rx_dma->ch, OMAP_DMA_LITTLE_ENDIAN); ++#endif ++ ++ tx_dma = kzalloc(sizeof(struct dma_data), GFP_KERNEL); ++ if (!tx_dma) { ++ printk(KERN_ERR "Failed to allocate memory for tx_dma struct."); ++ return -ENOMEM; ++ } ++ ++ if (omap_request_dma(OMAP_DMA_NO_DEVICE, "usrp-e-tx", ++ usrp_tx_dma_irq, (void *) tx_dma, &tx_dma->ch)) { ++ printk(KERN_ERR "Could not get tx DMA channel for usrp_e\n"); ++ return -ENOMEM; ++ } ++ ++ printk(KERN_DEBUG "tx_dma->ch %d\n", tx_dma->ch); ++ ++ tx_dma->phys_from = p->mem_base; ++ ++ memset(&tx_dma->params, 0, sizeof(tx_dma->params)); ++ tx_dma->params.data_type = OMAP_DMA_DATA_TYPE_S16; ++ ++ tx_dma->params.src_amode = OMAP_DMA_AMODE_POST_INC; ++ tx_dma->params.dst_amode = OMAP_DMA_AMODE_CONSTANT; ++ ++ tx_dma->params.src_start = tx_dma->phys_from; ++ tx_dma->params.dst_start = p->mem_base; ++ ++ tx_dma->params.src_ei = 1; ++ tx_dma->params.src_fi = 1; ++ tx_dma->params.dst_ei = 1; ++ tx_dma->params.dst_fi = 1; ++ ++ tx_dma->params.elem_count = 1024; ++ tx_dma->params.frame_count = 1; ++ ++ tx_dma->params.read_prio = DMA_CH_PRIO_LOW; ++ tx_dma->params.write_prio = DMA_CH_PRIO_HIGH; ++ ++ omap_set_dma_params(tx_dma->ch, &tx_dma->params); ++ ++// Play with these with a real application ++//G omap_set_dma_src_burst_mode(tx_dma->ch, OMAP_DMA_DATA_BURST_16); ++// omap_set_dma_dest_burst_mode(tx_dma->ch, OMAP_DMA_DATA_BURST_16); ++ ++ return 0; ++} ++ ++static void release_dma_controller() ++{ ++ ++ omap_free_dma(rx_dma->ch); ++ omap_free_dma(tx_dma->ch); ++ ++ kfree(rx_dma); ++ kfree(tx_dma); ++} ++ ++static int get_frame_from_fpga_start() ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ struct ring_buffer_info *rbi = &(*rx_rb.rbi)[rx_rb_write]; ++ struct ring_buffer_entry *rbe = &(*rx_rb.rbe)[rx_rb_write]; ++ u16 elements_to_read; ++ ++ /* Check for space available in the ring buffer */ ++ /* If no space, drop data. A read call will restart dma transfers. */ ++ if (((*rx_rb.rbi)[rx_rb_write].flags & RB_KERNEL) && (gpio_get_value(RX_DATA_READY_GPIO)) && !rx_dma_active && !shutting_down) { ++ ++ rx_dma_active = 1; ++#ifdef DEBUG_RX ++ gpio_set_value(14, 1); ++#endif ++ ++ elements_to_read = readw(p->ctl_addr + UE_REG_MISC_RX_LEN); ++ ++ rbi->flags = RB_DMA_ACTIVE; ++ ++ rbi->len = elements_to_read << 1; ++ ++ omap_set_dma_dest_addr_size(rx_dma->ch, rbe->dma_addr, ++ elements_to_read); ++ ++ dma_sync_single_for_device(NULL, rbe->dma_addr, SZ_2K, DMA_FROM_DEVICE); ++ ++ omap_start_dma(rx_dma->ch); ++ } ++ ++ return 0; ++} ++ ++ ++static int get_frame_from_fpga_finish() ++{ ++ dma_sync_single_for_cpu(NULL, (*rx_rb.rbe)[rx_rb_write].dma_addr, SZ_2K, DMA_FROM_DEVICE); ++ ++ (*rx_rb.rbi)[rx_rb_write].flags = RB_USER; ++ rx_rb_write++; ++ if (rx_rb_write == rb_size.num_rx_frames) ++ rx_rb_write = 0; ++ ++ wake_up_interruptible(&data_received_queue); ++ ++ rx_dma_active = 0; ++ ++ get_frame_from_fpga_start(); ++ ++#ifdef DEBUG_RX ++ gpio_set_value(14, 0); ++#endif ++ ++ return 0; ++} ++ ++static int send_frame_to_fpga_start() ++{ ++ struct usrp_e_dev *p = usrp_e_devp; ++ struct ring_buffer_info *rbi = &(*tx_rb.rbi)[tx_rb_read]; ++ struct ring_buffer_entry *rbe = &(*tx_rb.rbe)[tx_rb_read]; ++ u16 elements_to_write; ++ ++// printk("In send_frame_to_fpga_start.\n"); ++ ++ /* Check if there is data to write to the FPGA, if so send it */ ++ /* Otherwise, do nothing. Process is restarted by calls to write */ ++ if (((*tx_rb.rbi)[tx_rb_read].flags & RB_USER) && !tx_dma_active && (gpio_get_value(TX_SPACE_AVAILABLE_GPIO)) && !shutting_down) { ++// printk("In send_frame_to_fpga_start, past if.\n"); ++ tx_dma_active = 1; ++#ifdef DEBUG_TX ++ gpio_set_value(14, 1); ++#endif ++ ++ elements_to_write = ((rbi->len) >> 1); ++ ++ writew(elements_to_write, p->ctl_addr + UE_REG_MISC_TX_LEN); ++ ++ rbi->flags = RB_DMA_ACTIVE; ++ ++ omap_set_dma_src_addr_size(tx_dma->ch, rbe->dma_addr, ++ elements_to_write); ++ ++ dma_sync_single_for_device(NULL, rbe->dma_addr, SZ_2K, DMA_TO_DEVICE); ++ ++ omap_start_dma(tx_dma->ch); ++ } ++ ++ return 0; ++} ++ ++static int send_frame_to_fpga_finish() ++{ ++ ++ dma_sync_single_for_cpu(NULL, (*tx_rb.rbe)[tx_rb_read].dma_addr, SZ_2K, DMA_TO_DEVICE); ++ ++ (*tx_rb.rbi)[tx_rb_read].flags = RB_KERNEL; ++ ++ tx_rb_read++; ++ if (tx_rb_read == rb_size.num_tx_frames) ++ tx_rb_read = 0; ++ ++ wake_up_interruptible(&tx_rb_space_available); ++ ++ tx_dma_active = 0; ++ ++ send_frame_to_fpga_start(); ++ ++#ifdef DEBUG_TX ++ gpio_set_value(14, 0); ++#endif ++ ++ return 0; ++} ++ ++static int alloc_ring_buffer(struct ring_buffer *rb, ++ unsigned int num_bufs, enum dma_data_direction direction) ++{ ++ int i; ++ ++ rb->rbi = __get_free_page(GFP_KERNEL | __GFP_COMP | __GFP_ZERO | __GFP_NOWARN); ++ ++ rb->rbe = kzalloc(sizeof(struct ring_buffer_entry) * num_bufs, GFP_KERNEL); ++ if (!rb) { ++ printk(KERN_ERR "Failed to allocate memory for rb entries\n"); ++ return -ENOMEM; ++ } ++ ++ rb->num_pages = (num_bufs & 1) ? ((num_bufs + 1) / 2) : (num_bufs / 2); ++ ++ rb->pages = kzalloc(sizeof(unsigned long) * rb->num_pages, GFP_KERNEL); ++ if (!(rb->pages)) { ++ printk(KERN_ERR "Failed to allocate memory for rb page entries\n"); ++ return -ENOMEM; ++ } ++ ++ for (i = 0; i < rb->num_pages; i++) { ++ (*rb->pages)[i] = __get_free_page(GFP_KERNEL | __GFP_DMA | __GFP_COMP | __GFP_ZERO | __GFP_NOWARN); ++ ++ (*(rb->rbe))[i*2].frame_addr = ++ (*(rb->pages))[i]; ++ (*(rb->rbe))[i*2 + 1].frame_addr = ++ ((*(rb->pages))[i] + SZ_2K); ++ if (!(*(rb->rbe))[i*2].frame_addr || !(*(rb->rbe))[i*2 + 1].frame_addr) { ++ printk(KERN_ERR "Failed to allocate memory dma buf\n"); ++ return -ENOMEM; ++ } ++ ++ (*(rb->rbe))[i*2].dma_addr = dma_map_single(NULL, (*(rb->rbe))[i*2].frame_addr, SZ_2K, direction); ++ (*(rb->rbe))[i*2 + 1].dma_addr = dma_map_single(NULL, (*(rb->rbe))[i*2 + 1].frame_addr, SZ_2K, direction); ++ if (!(*(rb->rbe))[i*2].dma_addr || !(*(rb->rbe))[i*2 + 1].dma_addr) { ++ printk(KERN_ERR "Failed to get physical address for dma buf\n"); ++ return -ENOMEM; ++ } ++ } ++ ++ return 0; ++} ++ ++static void delete_ring_buffer(struct ring_buffer *rb, ++ unsigned int num_bufs, enum dma_data_direction direction) ++{ ++ unsigned int i; ++ unsigned int num_pages; ++ ++ printk(KERN_DEBUG "Entering delete_ring_buffer\n"); ++ ++ num_pages = (num_bufs & 1) ? ((num_bufs + 1) / 2) : (num_bufs / 2); ++ ++ for (i = 0; i < num_pages; i++) { ++ dma_unmap_single(NULL, (*rb->rbe)[i*2].dma_addr, SZ_2K, direction); ++ dma_unmap_single(NULL, (*rb->rbe)[i*2 + 1].dma_addr, SZ_2K, direction); ++ free_page((*rb->pages)[i]); ++ } ++ ++ free_page(rb->rbi); ++ ++ kfree(rb->pages); ++ kfree(rb->rbe); ++ ++ printk(KERN_DEBUG "Leaving delete_ring_buffer\n"); ++} ++ ++static int alloc_ring_buffers() ++{ ++ ++ if (alloc_ring_buffer(&tx_rb, rb_size.num_rx_frames, DMA_TO_DEVICE) < 0) ++ return -ENOMEM; ++ if (alloc_ring_buffer(&rx_rb, rb_size.num_tx_frames, DMA_FROM_DEVICE) < 0) ++ return -ENOMEM; ++ ++ return 0; ++} ++ ++static void init_ring_buffer(struct ring_buffer *rb, int num_bufs, ++ int initial_flags, enum dma_data_direction direction) ++{ ++ int i; ++ ++ for (i = 0; i < num_bufs; i++) { ++ dma_sync_single_for_device(NULL, (*rb->rbe)[i].dma_addr, ++ SZ_2K, direction); ++ dma_sync_single_for_cpu(NULL, (*rb->rbe)[i].dma_addr, ++ SZ_2K, direction); ++ (*rb->rbi)[i].flags = initial_flags; ++ } ++ ++} ++ ++#if 0 ++static int tx_dma_func(void *data) ++{ ++ int ret; ++ struct sched_param s = { .sched_priority = 1}; ++ ++ printk(KERN_DEBUG "In tx_dma_func\n"); ++ ++ allow_signal(SIGSTOP); ++ ++ sched_setscheduler(current, SCHED_FIFO, &s); ++ ++ while (!kthread_should_stop() && !closing_driver) { ++ ++ if (!((*tx_rb.rbe)[tx_rb_read].flags & RB_USER)) { ++ tx_dma_waiting_for_data = 1; ++ ret = wait_event_interruptible(received_data_from_user, ++ (*tx_rb.rbe)[tx_rb_read].flags & RB_USER); ++ if (ret) { ++ printk(KERN_DEBUG ++ "tx_dma_func received signal %d\n", ++ ret); ++ if (closing_driver) ++ break; ++ ++ } ++ tx_dma_waiting_for_data = 0; ++ } ++ ++ if (wait_event_interruptible(space_available_queue, ++ gpio_get_value(TX_SPACE_AVAILABLE_GPIO))) { ++ printk(KERN_DEBUG "tx_dma received signal waiting for space.\n"); ++ if (closing_driver) ++ break; ++ } ++ ++ if (send_frame_to_fpga(&(*tx_rb.rbe)[tx_rb_read]) != 0) { ++ printk(KERN_DEBUG "send_frame received signal.\n"); ++ if (closing_driver) ++ break; ++ } ++ ++ (*tx_rb.rbe)[tx_rb_read].flags = RB_KERNEL; ++ ++ tx_rb_read++; ++ if (tx_rb_read == RB_SIZE) ++ tx_rb_read = 0; ++ ++#if 0 ++ if (waiting_for_space_in_tx_rb) ++#endif ++ wake_up_interruptible(&tx_rb_space_queue); ++ ++ } ++ return 0; ++} ++#endif +diff --git a/include/linux/usrp_e.h b/include/linux/usrp_e.h +new file mode 100644 +index 0000000..e52f709 +--- /dev/null ++++ b/include/linux/usrp_e.h +@@ -0,0 +1,87 @@ ++ ++/* ++ * Copyright (C) 2010 Ettus Research, LLC ++ * ++ * Written by Philip Balister ++ * ++ * 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. ++ */ ++ ++#ifndef __USRP_E_H ++#define __USRP_E_H ++ ++#include ++#include ++ ++struct usrp_e_ctl16 { ++ __u32 offset; ++ __u32 count; ++ __u16 buf[20]; ++}; ++ ++struct usrp_e_ctl32 { ++ __u32 offset; ++ __u32 count; ++ __u32 buf[10]; ++}; ++ ++/* SPI interface */ ++ ++#define UE_SPI_TXONLY 0 ++#define UE_SPI_TXRX 1 ++ ++/* Defines for spi ctrl register */ ++#define UE_SPI_CTRL_TXNEG (BIT(10)) ++#define UE_SPI_CTRL_RXNEG (BIT(9)) ++ ++#define UE_SPI_PUSH_RISE 0 ++#define UE_SPI_PUSH_FALL UE_SPI_CTRL_TXNEG ++#define UE_SPI_LATCH_RISE 0 ++#define UE_SPI_LATCH_FALL UE_SPI_CTRL_RXNEG ++ ++struct usrp_e_spi { ++ __u8 readback; ++ __u32 slave; ++ __u32 data; ++ __u32 length; ++ __u32 flags; ++}; ++ ++struct usrp_e_i2c { ++ __u8 addr; ++ __u32 len; ++ __u8 data[]; ++}; ++ ++#define USRP_E_IOC_MAGIC 'u' ++#define USRP_E_WRITE_CTL16 _IOW(USRP_E_IOC_MAGIC, 0x20, struct usrp_e_ctl16) ++#define USRP_E_READ_CTL16 _IOWR(USRP_E_IOC_MAGIC, 0x21, struct usrp_e_ctl16) ++#define USRP_E_WRITE_CTL32 _IOW(USRP_E_IOC_MAGIC, 0x22, struct usrp_e_ctl32) ++#define USRP_E_READ_CTL32 _IOWR(USRP_E_IOC_MAGIC, 0x23, struct usrp_e_ctl32) ++#define USRP_E_SPI _IOWR(USRP_E_IOC_MAGIC, 0x24, struct usrp_e_spi) ++#define USRP_E_I2C_READ _IOWR(USRP_E_IOC_MAGIC, 0x25, struct usrp_e_i2c) ++#define USRP_E_I2C_WRITE _IOW(USRP_E_IOC_MAGIC, 0x26, struct usrp_e_i2c) ++#define USRP_E_GET_RB_INFO _IOR(USRP_E_IOC_MAGIC, 0x27, struct usrp_e_ring_buffer_size_t) ++ ++/* Flag defines */ ++#define RB_USER (BIT(0)) ++#define RB_KERNEL (BIT(1)) ++#define RB_OVERRUN (BIT(2)) ++#define RB_DMA_ACTIVE (BIT(3)) ++ ++struct ring_buffer_info { ++ int flags; ++ int len; ++}; ++ ++struct usrp_e_ring_buffer_size_t { ++ int num_pages_rx_flags; ++ int num_rx_frames; ++ int num_pages_tx_flags; ++ int num_tx_frames; ++}; ++ ++#endif +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/defconfig b/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/defconfig new file mode 100644 index 0000000..d6d7cb8 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/defconfig @@ -0,0 +1,3373 @@ +# +# Automatically generated make config: don't edit +# Linux/arm 2.6.37-rc7 Kernel Configuration +# Wed Dec 29 11:57:49 2010 +# +CONFIG_ARM=y +CONFIG_HAVE_PWM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +# CONFIG_ARCH_USES_GETTIMEOFFSET is not set +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_IRQ_WORK=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT is not set +# CONFIG_HAVE_GENERIC_HARDIRQS is not set +# CONFIG_SPARSE_IRQ is not set + +# +# RCU Subsystem +# +CONFIG_TREE_PREEMPT_RCU=y +# CONFIG_TINY_RCU is not set +# CONFIG_TINY_PREEMPT_RCU is not set +CONFIG_PREEMPT_RCU=y +# 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_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_NS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y +CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +# CONFIG_BLK_CGROUP is not set +# CONFIG_NAMESPACES is not set +CONFIG_SCHED_AUTOGROUP=y +CONFIG_MM_OWNER=y +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY 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_RD_LZO=y +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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +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=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_HW_BREAKPOINT=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_VEXPRESS is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCMRING is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX 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_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_MV78XX0 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_NUC93X is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_SHMOBILE 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_S5P64X0 is not set +# CONFIG_ARCH_S5P6442 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_S5PV310 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_TCC_926 is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ARCH_DAVINCI is not set +CONFIG_ARCH_OMAP=y +# CONFIG_PLAT_SPEAR is not set + +# +# TI OMAP Common Features +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +CONFIG_ARCH_OMAP2PLUS=y + +# +# OMAP Feature Selections +# +CONFIG_OMAP_SMARTREFLEX=y +CONFIG_OMAP_SMARTREFLEX_CLASS3=y +CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_MUX is not set +CONFIG_OMAP_MCBSP=y +CONFIG_OMAP_MBOX_FWK=m +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +# CONFIG_OMAP_MPU_TIMER is not set +CONFIG_OMAP_32K_TIMER=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +CONFIG_OMAP_32K_TIMER_HZ=128 +CONFIG_OMAP_DM_TIMER=y +# CONFIG_OMAP_PM_NONE is not set +CONFIG_OMAP_PM_NOOP=y + +# +# TI OMAP2/3/4 Specific Features +# +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set +CONFIG_ARCH_OMAP3430=y +CONFIG_OMAP_PACKAGE_CBB=y + +# +# OMAP Board Type +# +CONFIG_MACH_OMAP3_BEAGLE=y +# CONFIG_MACH_DEVKIT8000 is not set +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OMAP3530_LV_SOM is not set +# CONFIG_MACH_OMAP3_TORPEDO is not set +CONFIG_MACH_OVERO=y +CONFIG_MACH_OMAP3EVM=y +# CONFIG_MACH_OMAP3517EVM is not set +# CONFIG_MACH_CRANEBOARD is not set +# CONFIG_MACH_OMAP3_PANDORA is not set +CONFIG_MACH_OMAP3_TOUCHBOOK=y +# CONFIG_MACH_OMAP_3430SDP is not set +# CONFIG_MACH_NOKIA_RM680 is not set +# CONFIG_MACH_NOKIA_RX51 is not set +CONFIG_MACH_OMAP_ZOOM2=y +# CONFIG_MACH_OMAP_ZOOM3 is not set +# CONFIG_MACH_CM_T35 is not set +# CONFIG_MACH_CM_T3517 is not set +# CONFIG_MACH_IGEP0020 is not set +# CONFIG_MACH_IGEP0030 is not set +# CONFIG_MACH_SBC3530 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 +# +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +# CONFIG_ARM_ERRATA_743622 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# 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 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_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_NEED_PER_CPU_KM=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_LEDS=y +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_DEPRECATED_PARAM_STRUCT is not set + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" debug " +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y +# CONFIG_AUTO_ZRELADDR is not set + +# +# CPU Power Management +# +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=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_ADVANCED_DEBUG is not set +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND_NVS=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +CONFIG_PM_RUNTIME=y +CONFIG_PM_OPS=y +CONFIG_ARCH_HAS_OPP=y +CONFIG_PM_OPP=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=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 +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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_CUBIC=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=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_MROUTE_MULTIPLE_TABLES=y +# CONFIG_IPV6_PIMSM_V2 is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETWORK_PHY_TIMESTAMPING=y +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_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_ZONES=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 + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=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_TEE=m +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# 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_CPU=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_IPVS=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_OSF is not set +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_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_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 +# CONFIG_IP_VS_PROTO_SCTP is not set + +# +# 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 +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=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_DEFRAG_IPV6=m +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_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_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +# 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=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_CLS_CGROUP=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 +CONFIG_DNS_RESOLVER=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO 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_ATH3K=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_BT_ATH3K=m +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_CFG80211_INTERNAL_REGDB is not set +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_HAS_RC=y +CONFIG_MAC80211_RC_PID=y +# CONFIG_MAC80211_RC_MINSTREL is not set +CONFIG_MAC80211_RC_DEFAULT_PID=y +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 +# CONFIG_CAIF is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +CONFIG_SM_FTL=m +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_SM_COMMON 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=y +# CONFIG_MTD_ALAUDA is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR 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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_BLK_DEV_RBD 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_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +CONFIG_SENSORS_BH1780=m +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +CONFIG_HMC6352=m +# CONFIG_DS1682 is not set +# CONFIG_TI_DAC7512 is not set +CONFIG_BMP085=m +CONFIG_USRP_E=m +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +# 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 + +# +# Texas Instruments shared transport line discipline +# +CONFIG_TI_ST=m +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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 +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=m +CONFIG_ISCSI_BOOT_SYSFS=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=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_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=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +CONFIG_MII=y +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_BCM63XX_PHY=m +# 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_MICREL_PHY=m +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +# CONFIG_AX88796 is not set +CONFIG_SMC91X=y +# CONFIG_TI_DAVINCI_EMAC is not set +CONFIG_TI_DAVINCI_MDIO=m +CONFIG_TI_DAVINCI_CPDMA=m +# 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_SMSC911X_ARCH_HOOKS is not set +# 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_KS8851=y +# CONFIG_KS8851_MLL is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 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_PIO=y +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_LIBERTAS_MESH 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_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL12XX=m +CONFIG_WL1271=m +CONFIG_WL1271_SPI=m +CONFIG_WL1271_SDIO=m +CONFIG_WL12XX_PLATFORM_DATA=y +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=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 is not set +CONFIG_USB_NET_DM9601=y +CONFIG_USB_NET_SMSC75XX=m +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_NET_CX82310_ETH=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +# CONFIG_WAN is not set +CONFIG_ATM_DRIVERS=y +# CONFIG_ATM_DUMMY is not set +# CONFIG_ATM_TCP is not set + +# +# CAIF transport drivers +# +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_PPTP=m +# CONFIG_PPPOATM is not set +CONFIG_PPPOL2TP=m +# CONFIG_SLIP 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=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_QT2160=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=y +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# 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_MCS=m +# 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=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +# 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_TWL4030_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PWM_BEEPER=m +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m + +# +# Hardware I/O ports +# +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_SERIO_PS2MULT is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_N_GSM=m + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX3107 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_TTY_PRINTK=y +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# 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_RAMOOPS is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB 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_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 +# CONFIG_SPI_DESIGNWARE 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=y +CONFIG_GPIO_MAX730X=m + +# +# Memory mapped GPIO expanders: +# +# CONFIG_GPIO_BASIC_MMIO is not set +# CONFIG_GPIO_IT8761E is not set +# CONFIG_GPIO_VX855 is not set + +# +# I2C GPIO expanders: +# +CONFIG_GPIO_MAX7300=m +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_SX150X is not set +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_ADP5588=m + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_74X164 is not set + +# +# AC97 GPIO expanders: +# + +# +# MODULbus GPIO expanders: +# +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=m +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +CONFIG_TEST_POWER=m +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_BQ20Z75 is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_MAX17040 is not set +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_TWL4030=m +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_ADT7411=m +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +CONFIG_SENSORS_ASC7621=m +# 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_GPIO_FAN=m +# CONFIG_SENSORS_IT87 is not set +CONFIG_SENSORS_JC42=m +# 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_LTC4261 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_SMM665=m +# CONFIG_SENSORS_DME1737 is not set +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +# 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_ADS7871=m +CONFIG_SENSORS_AMC6821=m +# CONFIG_SENSORS_THMC50 is not set +CONFIG_SENSORS_TMP102=m +# 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_W83795 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_SENSORS_LIS3_I2C 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 +# CONFIG_MAX63XX_WATCHDOG is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +# CONFIG_SSB_SILENT is not set +# CONFIG_SSB_DEBUG is not set +CONFIG_MFD_SUPPORT=y +CONFIG_MFD_CORE=y +# CONFIG_MFD_88PM860X is not set +# 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_HTC_I2CPLD is not set +# CONFIG_TPS65010 is not set +CONFIG_TPS6507X=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_CODEC=y +CONFIG_TWL6030_PWM=m +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_TC35892 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 +# CONFIG_PMIC_DA903X is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_MC13XXX is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_EZX_PCAP is not set +CONFIG_MFD_TPS6586X=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_DUMMY=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# 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_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +CONFIG_REGULATOR_TWL4030=y +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_AD5398 is not set +CONFIG_REGULATOR_TPS6586X=m +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +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_IR_CORE=m +CONFIG_VIDEO_IR=m +CONFIG_LIRC=m +CONFIG_RC_MAP=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_RC5_SZ_DECODER=m +CONFIG_IR_LIRC_CODEC=m +# CONFIG_IR_IMON is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_STREAMZAP is not set +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_CUSTOMISE=y + +# +# Customize TV tuners +# +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_MEDIA_TUNER_TDA18218=m +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=y +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_MEM2MEM_DEV=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_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_TVP7002 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 +# CONFIG_VIDEO_AK881X is not set + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_VPFE_CAPTURE=y +# CONFIG_VIDEO_DM6446_CCDC is not set +CONFIG_VIDEO_OMAP2_VOUT=y +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_AU0828 is not set +CONFIG_VIDEO_SR030PC30=m +# 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_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +# CONFIG_USB_GSPCA_JEILINJ is not set +CONFIG_USB_GSPCA_KONICA=m +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_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +# CONFIG_USB_GSPCA_PAC7302 is not set +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C2028=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_SPCA1528=m +# CONFIG_USB_GSPCA_SQ905 is not set +# CONFIG_USB_GSPCA_SQ905C is not set +CONFIG_USB_GSPCA_SQ930X=m +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_XIRLINK_CIT=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_TLG2300=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_ET61X251=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=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_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_MEM2MEM_TESTDEV=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_SAA7706H=m +# 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_DVB_USB_AZ6027=m +CONFIG_DVB_USB_LME2510=m +# 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 + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV6110x is not set + +# +# DVB-S (satellite) frontends +# +# CONFIG_DVB_CX24110 is not set +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +# CONFIG_DVB_ZL10036 is not set +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +# CONFIG_DVB_TDA8083 is not set +CONFIG_DVB_TDA10086=m +# CONFIG_DVB_TDA8261 is not set +# CONFIG_DVB_VES1X93 is not set +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +# CONFIG_DVB_TUA6100 is not set +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_MB86A16 is not set + +# +# DVB-T (terrestrial) frontends +# +# CONFIG_DVB_SP8870 is not set +# CONFIG_DVB_SP887X is not set +# CONFIG_DVB_CX22700 is not set +CONFIG_DVB_CX22702=m +# CONFIG_DVB_S5H1432 is not set +# CONFIG_DVB_DRX397XD is not set +# CONFIG_DVB_L64781 is not set +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_EC100 is not set + +# +# DVB-C (cable) frontends +# +# CONFIG_DVB_VES1820 is not set +# CONFIG_DVB_TDA10021 is not set +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +# CONFIG_DVB_OR51211 is not set +# CONFIG_DVB_OR51132 is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_S5H1409=m +# CONFIG_DVB_AU8522 is not set +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +# CONFIG_DVB_ISL6405 is not set +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_ISL6423 is not set +# CONFIG_DVB_LGS8GL5 is not set +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +# CONFIG_DVB_TDA665x is not set +CONFIG_DVB_IX2505V=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +CONFIG_DRM=m +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=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_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_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_COLLECT_IRQ_STATS is not set +CONFIG_OMAP2_DSS_DPI=y +# CONFIG_OMAP2_DSS_RFBI is not set +CONFIG_OMAP2_DSS_VENC=y +# 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_NUM_FBS=2 + +# +# OMAP2/3 Display Device Drivers +# +CONFIG_PANEL_GENERIC=y +CONFIG_PANEL_SHARP_LS037V7DW01=y +# CONFIG_PANEL_SHARP_LQ043T1DG01 is not set +# CONFIG_PANEL_TAAL is not set +CONFIG_PANEL_TOPPOLY_TDO35S=m +CONFIG_PANEL_TPO_TD043MTEA1=m +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO 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=y +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_ALOOP=m +# 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_UA101=m +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_OVERO=y +CONFIG_SND_OMAP_SOC_OMAP3EVM=y +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y +CONFIG_SND_OMAP_SOC_ZOOM2=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_3M_PCT is not set +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACRUX_FF is not set +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +# CONFIG_HID_CANDO is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_PRODIKEYS is not set +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +CONFIG_HID_EGALAX=m +# CONFIG_HID_ELECOM is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_KYE is not set +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +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_LOGIG940_FF is not set +# CONFIG_LOGIWII_FF is not set +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=y +# CONFIG_HID_MOSART is not set +CONFIG_HID_MONTEREY=y +CONFIG_HID_NTRIG=y +# CONFIG_HID_ORTEK is not set +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=y +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_QUANTA=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_ROCCAT_KONE=m +# CONFIG_HID_ROCCAT_PYRA is not set +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_STANTUM=m +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_HID_ZYDACRON 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=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_AM35X is not set +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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_UAS=m +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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_QCAUX=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_SAMBA=m +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 is not set +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m +CONFIG_USB_SERIAL_ZIO=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR is not set +CONFIG_USB_TEST=m +# CONFIG_USB_ISIGHTFW is not set +CONFIG_USB_YUREX=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=480 +CONFIG_USB_GADGET_SELECTED=y +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_R8A66597 is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +CONFIG_USB_FUNCTIONFS=m +# CONFIG_USB_FUNCTIONFS_ETH is not set +CONFIG_USB_FUNCTIONFS_RNDIS=y +# CONFIG_USB_FUNCTIONFS_GENERIC is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_MASS_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_G_MULTI is not set +CONFIG_USB_G_HID=m +CONFIG_USB_G_DBGP=m +# CONFIG_USB_G_DBGP_PRINTK is not set +CONFIG_USB_G_DBGP_SERIAL=y +CONFIG_USB_G_WEBCAM=m + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +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=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_SPI=m +CONFIG_MMC_USHC=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_LP5521=m +CONFIG_LEDS_LP5523=m +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +CONFIG_LEDS_TRIGGERS=y + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_BQ32K=m +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_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +# CONFIG_VIDEO_TM6000 is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_USB_IP_COMMON is not set +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_BRCM80211=m +CONFIG_BRCMFMAC=y +CONFIG_RT2870=m +# CONFIG_COMEDI is not set +# CONFIG_ASUS_OLED is not set +CONFIG_R8712U=m +CONFIG_R8712_AP=y +# CONFIG_TRANZPORT is not set +# CONFIG_POHMELFS is not set +# CONFIG_AUTOFS_FS 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=m +# CONFIG_IIO is not set +CONFIG_ZRAM=m +# CONFIG_BATMAN_ADV is not set +# CONFIG_FB_SM7XX is not set + +# +# Texas Instruments shared transport line discipline +# +CONFIG_ST_BT=m +CONFIG_ADIS16255=m +# CONFIG_LIRC_STAGING is not set +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_EASYCAP is not set +# CONFIG_TIDSPBRIDGE is not set +# CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL is not set +CONFIG_MACH_NO_WESTBRIDGE=y +# CONFIG_ATH6K_LEGACY is not set +CONFIG_USB_ENESTORAGE=m +CONFIG_BCM_WIMAX=m +CONFIG_FT1000=m +CONFIG_FT1000_USB=m + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set + +# +# CBUS support +# +# CONFIG_CBUS is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR 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_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_BTRFS_FS=m +# CONFIG_BTRFS_FS_POSIX_ACL is not set +# CONFIG_NILFS2_FS is not set +CONFIG_EXPORTFS=m +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_QUOTA=y +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +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=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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_LOGFS=m +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_LZO=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_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_NEW_IDMAPPER is not set +CONFIG_NFSD=m +CONFIG_NFSD_DEPRECATED=y +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_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_RPCSEC_GSS_KRB5=y +CONFIG_CEPH_FS=m +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 +# CONFIG_9P_FS_POSIX_ACL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +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=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 +CONFIG_DEBUG_MUTEXES=y +CONFIG_BKL=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_DEBUG_SG is not set +# 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_LKDTM is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +# CONFIG_PAGE_POISONING is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=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_ENABLE_DEFAULT_TRACERS 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_BLK_DEV_IO_TRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_STRICT_DEVMEM 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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS 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_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_PCOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=y +# CONFIG_CRYPTO_ZLIB is not set +CONFIG_CRYPTO_LZO=y + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_OMAP_SHAM=m +CONFIG_CRYPTO_DEV_OMAP_AES=m +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/logo_linux_clut224.ppm b/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/logo_linux_clut224.ppm new file mode 100644 index 0000000..d29fc1c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/beagleboard/logo_linux_clut224.ppm @@ -0,0 +1,73147 @@ +P3 +# CREATOR: GIMP PNM Filter Version 1.1 +387 63 +255 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +248 +138 +64 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +247 +143 +74 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +248 +138 +64 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +130 +53 +247 +130 +60 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +152 +92 +249 +146 +83 +250 +139 +73 +247 +130 +60 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +247 +150 +84 +246 +156 +93 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +152 +92 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +250 +139 +73 +247 +150 +84 +249 +159 +103 +247 +165 +111 +249 +174 +124 +248 +180 +134 +252 +185 +144 +240 +181 +138 +219 +170 +138 +219 +170 +138 +230 +173 +136 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +159 +103 +214 +151 +109 +121 +100 +85 +65 +67 +64 +74 +68 +68 +129 +102 +78 +214 +151 +109 +246 +156 +93 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +204 +141 +99 +102 +91 +75 +65 +67 +64 +81 +77 +76 +146 +111 +88 +238 +159 +107 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +247 +150 +84 +245 +162 +103 +162 +125 +96 +81 +77 +76 +55 +66 +67 +99 +90 +79 +187 +140 +108 +249 +159 +103 +247 +150 +84 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +187 +140 +108 +102 +91 +75 +58 +69 +70 +76 +78 +76 +146 +111 +88 +238 +159 +107 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +159 +103 +251 +168 +115 +248 +180 +134 +239 +182 +144 +186 +157 +134 +124 +111 +99 +82 +69 +65 +65 +58 +56 +55 +48 +48 +65 +58 +56 +65 +58 +56 +65 +58 +56 +99 +90 +79 +158 +130 +108 +230 +173 +136 +250 +176 +132 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +214 +151 +109 +74 +68 +68 +56 +64 +60 +95 +87 +59 +88 +82 +59 +56 +64 +60 +81 +77 +76 +238 +159 +107 +249 +152 +92 +248 +138 +64 +247 +130 +53 +246 +116 +28 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +187 +140 +108 +51 +62 +63 +69 +69 +61 +95 +87 +59 +83 +78 +61 +48 +58 +59 +121 +100 +85 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +123 +41 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +247 +165 +111 +139 +115 +96 +48 +58 +59 +95 +78 +64 +118 +86 +65 +81 +73 +62 +48 +58 +59 +162 +125 +96 +249 +159 +103 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +187 +140 +108 +48 +58 +59 +76 +70 +64 +118 +86 +65 +95 +78 +64 +51 +62 +63 +121 +100 +85 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +152 +92 +247 +165 +111 +250 +176 +132 +251 +192 +154 +167 +142 +123 +65 +58 +56 +35 +31 +30 +71 +60 +43 +108 +87 +46 +129 +106 +52 +137 +110 +49 +156 +125 +62 +187 +166 +150 +129 +106 +52 +101 +83 +47 +59 +50 +39 +55 +48 +48 +139 +115 +96 +240 +181 +138 +249 +174 +124 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +247 +165 +111 +124 +111 +99 +56 +64 +60 +137 +110 +49 +171 +129 +45 +171 +129 +45 +129 +106 +52 +51 +62 +63 +162 +125 +96 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +245 +169 +119 +81 +77 +76 +69 +69 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +105 +93 +60 +48 +58 +59 +187 +140 +108 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +250 +139 +73 +249 +159 +103 +210 +156 +119 +51 +62 +63 +112 +85 +63 +234 +126 +45 +234 +126 +45 +225 +124 +48 +95 +78 +64 +63 +74 +74 +234 +168 +124 +246 +156 +93 +250 +139 +73 +247 +123 +41 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +245 +169 +119 +81 +77 +76 +81 +73 +62 +212 +120 +56 +234 +126 +45 +234 +126 +45 +135 +94 +64 +41 +58 +57 +187 +140 +108 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +249 +174 +124 +249 +189 +146 +236 +186 +153 +99 +90 +79 +47 +40 +38 +85 +71 +43 +145 +114 +49 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +160 +120 +43 +195 +167 +113 +216 +194 +154 +168 +127 +42 +168 +127 +42 +123 +102 +54 +59 +50 +39 +82 +69 +65 +230 +173 +136 +249 +174 +124 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +246 +156 +93 +245 +169 +119 +84 +85 +82 +83 +78 +61 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +101 +100 +92 +249 +174 +124 +246 +156 +93 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +210 +156 +119 +48 +58 +59 +105 +93 +60 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +62 +63 +61 +139 +115 +96 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +247 +165 +111 +158 +130 +108 +51 +62 +63 +188 +112 +56 +234 +125 +52 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +210 +156 +119 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +247 +165 +111 +210 +156 +119 +55 +66 +67 +146 +97 +64 +234 +126 +45 +224 +123 +55 +234 +125 +52 +199 +115 +54 +62 +63 +61 +139 +115 +96 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +250 +176 +132 +219 +170 +138 +150 +125 +114 +65 +58 +56 +24 +22 +23 +59 +50 +39 +152 +119 +47 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +158 +125 +46 +227 +196 +175 +192 +155 +91 +160 +120 +43 +171 +129 +45 +158 +125 +46 +85 +71 +43 +65 +58 +56 +219 +170 +138 +249 +174 +124 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +230 +173 +136 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +252 +185 +144 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +203 +161 +131 +43 +57 +62 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +133 +120 +107 +250 +176 +132 +246 +156 +93 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +154 +133 +118 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +186 +157 +134 +250 +176 +132 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +249 +174 +124 +209 +171 +139 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +133 +120 +107 +249 +174 +124 +246 +156 +93 +248 +138 +64 +247 +123 +41 +247 +111 +26 +246 +109 +10 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +158 +130 +108 +47 +40 +38 +59 +50 +39 +85 +71 +43 +85 +71 +43 +59 +50 +39 +35 +31 +30 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +192 +155 +91 +224 +207 +180 +158 +125 +46 +160 +120 +43 +168 +127 +42 +171 +129 +45 +71 +60 +43 +82 +69 +65 +239 +182 +144 +249 +174 +124 +249 +152 +92 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +247 +165 +111 +239 +182 +144 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +250 +197 +158 +250 +176 +132 +249 +159 +103 +247 +143 +74 +247 +130 +60 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +248 +180 +134 +212 +173 +150 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +248 +180 +134 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +249 +159 +103 +250 +176 +132 +167 +142 +123 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +249 +189 +146 +251 +168 +115 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +150 +84 +247 +165 +111 +252 +185 +144 +212 +173 +150 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +133 +120 +107 +248 +180 +134 +249 +159 +103 +250 +139 +73 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +249 +159 +103 +250 +176 +132 +167 +142 +123 +24 +22 +23 +85 +71 +43 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +85 +71 +43 +35 +31 +30 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +216 +194 +154 +195 +167 +113 +152 +119 +47 +158 +125 +46 +168 +127 +42 +158 +125 +46 +59 +50 +39 +139 +115 +96 +252 +185 +144 +247 +165 +111 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +251 +168 +115 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +251 +209 +178 +249 +189 +146 +249 +174 +124 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +248 +138 +64 +247 +143 +74 +246 +156 +93 +249 +174 +124 +251 +192 +154 +207 +178 +158 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +159 +103 +252 +185 +144 +167 +142 +123 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +51 +62 +63 +187 +166 +150 +250 +200 +166 +248 +180 +134 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +249 +152 +92 +247 +165 +111 +248 +180 +134 +250 +197 +158 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +252 +185 +144 +249 +159 +103 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +247 +150 +84 +251 +168 +115 +230 +173 +136 +47 +40 +38 +59 +50 +39 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +171 +129 +45 +59 +50 +39 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +170 +137 +67 +239 +227 +208 +170 +137 +67 +160 +120 +43 +158 +125 +46 +171 +129 +45 +123 +102 +54 +47 +40 +38 +209 +171 +139 +248 +180 +134 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +249 +174 +124 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +253 +204 +176 +249 +189 +146 +249 +174 +124 +247 +165 +111 +246 +156 +93 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +249 +146 +83 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +174 +124 +252 +185 +144 +250 +200 +166 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +251 +192 +154 +249 +174 +124 +246 +156 +93 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +249 +146 +83 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +150 +84 +251 +168 +115 +249 +189 +146 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +253 +212 +188 +250 +197 +158 +248 +180 +134 +251 +168 +115 +249 +159 +103 +247 +150 +84 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +247 +150 +84 +249 +146 +83 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +60 +248 +138 +64 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +250 +139 +73 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +250 +139 +73 +250 +139 +73 +250 +139 +73 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +150 +84 +249 +159 +103 +251 +168 +115 +248 +180 +134 +250 +197 +158 +253 +212 +188 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +247 +150 +84 +249 +146 +83 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +248 +138 +64 +248 +138 +64 +250 +139 +73 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +139 +115 +96 +35 +31 +30 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +35 +31 +30 +152 +119 +47 +168 +127 +42 +168 +127 +42 +160 +120 +43 +168 +127 +42 +171 +129 +45 +152 +119 +47 +216 +194 +154 +224 +207 +180 +160 +120 +43 +160 +120 +43 +137 +110 +49 +102 +91 +75 +35 +31 +30 +115 +102 +92 +250 +200 +166 +250 +176 +132 +249 +159 +103 +249 +146 +83 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +253 +204 +176 +250 +197 +158 +252 +185 +144 +249 +174 +124 +251 +168 +115 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +60 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +247 +165 +111 +251 +168 +115 +250 +176 +132 +252 +185 +144 +250 +200 +166 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +250 +200 +166 +250 +176 +132 +247 +165 +111 +249 +152 +92 +247 +150 +84 +249 +146 +83 +247 +150 +84 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +246 +156 +93 +247 +150 +84 +247 +143 +74 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +159 +103 +249 +174 +124 +251 +192 +154 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +187 +166 +150 +255 +215 +190 +253 +212 +188 +250 +200 +166 +249 +189 +146 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +246 +156 +93 +246 +156 +93 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +152 +92 +249 +152 +92 +247 +150 +84 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +150 +84 +249 +152 +92 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +250 +176 +132 +249 +189 +146 +250 +200 +166 +253 +212 +188 +255 +215 +190 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +249 +152 +92 +249 +146 +83 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +248 +138 +64 +247 +143 +74 +249 +146 +83 +249 +152 +92 +246 +156 +93 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +249 +152 +92 +247 +150 +84 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +249 +146 +83 +247 +150 +84 +246 +156 +93 +249 +159 +103 +247 +165 +111 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +236 +186 +153 +47 +40 +38 +59 +50 +39 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +47 +40 +38 +108 +87 +46 +168 +127 +42 +111 +94 +57 +76 +70 +64 +59 +50 +39 +101 +83 +47 +160 +120 +43 +170 +137 +67 +253 +255 +252 +195 +167 +113 +145 +114 +49 +69 +69 +61 +120 +114 +108 +35 +31 +30 +47 +40 +38 +217 +187 +166 +250 +197 +158 +250 +176 +132 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +250 +139 +73 +246 +156 +93 +250 +176 +132 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +245 +212 +186 +227 +196 +175 +212 +173 +150 +209 +171 +139 +219 +170 +138 +240 +181 +138 +250 +176 +132 +251 +168 +115 +249 +159 +103 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +248 +138 +64 +249 +146 +83 +246 +156 +93 +247 +165 +111 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +250 +176 +132 +249 +174 +124 +249 +159 +103 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +248 +138 +64 +249 +146 +83 +246 +156 +93 +247 +165 +111 +249 +174 +124 +245 +179 +138 +230 +173 +136 +203 +161 +131 +203 +161 +131 +219 +170 +138 +239 +182 +144 +251 +192 +154 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +245 +169 +119 +234 +168 +124 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +150 +84 +247 +150 +84 +247 +150 +84 +249 +152 +92 +249 +159 +103 +247 +165 +111 +249 +174 +124 +248 +180 +134 +230 +173 +136 +219 +170 +138 +203 +161 +131 +209 +171 +139 +239 +182 +144 +251 +192 +154 +249 +189 +146 +249 +189 +146 +252 +185 +144 +252 +185 +144 +249 +189 +146 +236 +186 +153 +250 +200 +166 +255 +215 +190 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +253 +204 +176 +252 +185 +144 +249 +174 +124 +247 +165 +111 +247 +165 +111 +247 +165 +111 +251 +168 +115 +249 +174 +124 +248 +180 +134 +230 +173 +136 +219 +170 +138 +203 +161 +131 +209 +171 +139 +230 +173 +136 +245 +179 +138 +250 +176 +132 +251 +168 +115 +249 +159 +103 +249 +159 +103 +246 +156 +93 +249 +159 +103 +251 +168 +115 +248 +180 +134 +250 +197 +158 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +187 +166 +150 +255 +215 +190 +255 +215 +190 +234 +204 +183 +207 +178 +158 +209 +171 +139 +209 +171 +139 +230 +173 +136 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +247 +165 +111 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +174 +124 +250 +176 +132 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +230 +173 +136 +251 +192 +154 +249 +189 +146 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +250 +176 +132 +248 +180 +134 +250 +176 +132 +250 +176 +132 +250 +176 +132 +248 +180 +134 +248 +180 +134 +230 +173 +136 +240 +181 +138 +252 +185 +144 +252 +185 +144 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +234 +168 +124 +249 +174 +124 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +251 +168 +115 +249 +174 +124 +250 +176 +132 +248 +180 +134 +230 +173 +136 +219 +170 +138 +209 +171 +139 +207 +178 +158 +227 +196 +175 +253 +212 +188 +255 +215 +190 +217 +187 +166 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +247 +150 +84 +249 +146 +83 +247 +143 +74 +247 +143 +74 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +234 +168 +124 +234 +168 +124 +248 +180 +134 +252 +185 +144 +252 +185 +144 +252 +185 +144 +248 +180 +134 +250 +176 +132 +234 +168 +124 +249 +174 +124 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +247 +165 +111 +251 +168 +115 +249 +174 +124 +250 +176 +132 +248 +180 +134 +230 +173 +136 +203 +161 +131 +203 +161 +131 +219 +170 +138 +239 +182 +144 +251 +192 +154 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +238 +159 +107 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +247 +143 +74 +247 +165 +111 +252 +185 +144 +154 +133 +118 +24 +22 +23 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +85 +71 +43 +101 +83 +47 +89 +84 +82 +152 +147 +147 +24 +22 +23 +24 +22 +23 +108 +87 +46 +168 +127 +42 +224 +207 +180 +253 +255 +252 +209 +171 +139 +101 +83 +47 +24 +22 +23 +35 +31 +30 +35 +31 +30 +167 +142 +123 +253 +212 +188 +250 +197 +158 +248 +180 +134 +247 +165 +111 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +60 +248 +138 +64 +249 +146 +83 +249 +159 +103 +250 +176 +132 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +217 +187 +166 +137 +127 +115 +91 +92 +89 +55 +66 +67 +48 +58 +59 +48 +58 +59 +55 +66 +67 +84 +85 +82 +133 +120 +107 +209 +171 +139 +248 +180 +134 +251 +168 +115 +249 +159 +103 +247 +150 +84 +247 +143 +74 +250 +139 +73 +250 +139 +73 +249 +146 +83 +249 +152 +92 +247 +165 +111 +249 +174 +124 +245 +179 +138 +178 +146 +122 +124 +111 +99 +76 +78 +76 +51 +62 +63 +48 +58 +59 +48 +58 +59 +58 +69 +70 +91 +92 +89 +144 +125 +110 +203 +161 +131 +248 +180 +134 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +248 +138 +64 +250 +139 +73 +249 +146 +83 +246 +156 +93 +247 +165 +111 +250 +176 +132 +230 +173 +136 +154 +133 +118 +101 +100 +92 +58 +69 +70 +48 +58 +59 +48 +58 +59 +51 +62 +63 +84 +85 +82 +137 +127 +115 +217 +187 +166 +253 +212 +188 +227 +196 +175 +144 +125 +110 +89 +84 +82 +81 +77 +76 +115 +102 +92 +210 +156 +119 +249 +174 +124 +251 +168 +115 +251 +168 +115 +251 +168 +115 +249 +174 +124 +250 +176 +132 +252 +185 +144 +195 +157 +134 +124 +111 +99 +76 +78 +76 +51 +62 +63 +48 +58 +59 +48 +58 +59 +70 +79 +77 +120 +114 +108 +187 +166 +150 +253 +212 +188 +253 +212 +188 +172 +150 +134 +101 +100 +92 +77 +85 +81 +101 +100 +92 +176 +156 +141 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +253 +212 +188 +250 +197 +158 +252 +185 +144 +248 +180 +134 +248 +180 +134 +252 +185 +144 +239 +182 +144 +167 +142 +123 +109 +106 +99 +70 +79 +77 +48 +58 +59 +48 +58 +59 +48 +58 +59 +58 +69 +70 +91 +92 +89 +150 +125 +114 +219 +170 +138 +248 +180 +134 +249 +174 +124 +249 +174 +124 +249 +174 +124 +250 +176 +132 +249 +189 +146 +253 +204 +176 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +176 +156 +141 +187 +166 +150 +109 +106 +99 +63 +74 +74 +43 +57 +62 +43 +57 +62 +43 +57 +62 +63 +74 +74 +109 +106 +99 +178 +146 +122 +245 +179 +138 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +248 +138 +64 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +174 +124 +252 +185 +144 +195 +157 +134 +124 +111 +99 +77 +85 +81 +51 +62 +63 +41 +58 +57 +43 +57 +62 +51 +62 +63 +77 +85 +81 +124 +111 +99 +195 +157 +134 +252 +185 +144 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +150 +84 +249 +159 +103 +251 +168 +115 +248 +180 +134 +203 +161 +131 +124 +111 +99 +77 +85 +81 +48 +58 +59 +43 +57 +62 +43 +57 +62 +63 +74 +74 +109 +106 +99 +187 +166 +150 +253 +212 +188 +253 +212 +188 +187 +166 +150 +109 +106 +99 +77 +85 +81 +84 +85 +82 +150 +125 +114 +232 +190 +161 +253 +204 +176 +253 +204 +176 +172 +150 +134 +101 +100 +92 +77 +85 +81 +91 +92 +89 +137 +127 +115 +227 +196 +175 +253 +212 +188 +186 +157 +134 +109 +106 +99 +77 +85 +81 +84 +85 +82 +124 +111 +99 +219 +170 +138 +249 +189 +146 +249 +189 +146 +249 +189 +146 +251 +192 +154 +250 +197 +158 +186 +157 +134 +109 +106 +99 +70 +79 +77 +43 +57 +62 +43 +57 +62 +41 +58 +57 +63 +74 +74 +101 +100 +92 +176 +156 +141 +194 +173 +157 +55 +66 +67 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +249 +174 +124 +252 +185 +144 +203 +161 +131 +133 +120 +107 +84 +85 +82 +55 +66 +67 +43 +57 +62 +41 +58 +57 +51 +62 +63 +77 +85 +81 +124 +111 +99 +178 +146 +122 +239 +182 +144 +250 +176 +132 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +210 +156 +119 +124 +111 +99 +77 +85 +81 +77 +85 +81 +109 +106 +99 +194 +173 +157 +253 +212 +188 +217 +187 +166 +133 +120 +107 +89 +84 +82 +76 +78 +76 +101 +100 +92 +178 +146 +122 +249 +189 +146 +252 +185 +144 +252 +185 +144 +252 +185 +144 +251 +192 +154 +236 +186 +153 +167 +142 +123 +101 +100 +92 +63 +74 +74 +41 +58 +57 +43 +57 +62 +51 +62 +63 +77 +85 +81 +137 +127 +115 +217 +187 +166 +253 +212 +188 +227 +196 +175 +144 +125 +110 +84 +85 +82 +76 +78 +76 +115 +102 +92 +204 +141 +99 +249 +159 +103 +247 +143 +74 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +250 +197 +158 +82 +69 +65 +47 +40 +38 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +101 +83 +47 +59 +50 +39 +101 +83 +47 +24 +22 +23 +35 +31 +30 +24 +22 +23 +24 +22 +23 +108 +87 +46 +168 +127 +42 +195 +167 +113 +253 +255 +252 +253 +255 +252 +239 +227 +208 +186 +157 +134 +162 +125 +96 +105 +93 +60 +47 +40 +38 +150 +125 +114 +217 +187 +166 +250 +200 +166 +252 +185 +144 +251 +168 +115 +246 +156 +93 +249 +146 +83 +247 +143 +74 +249 +146 +83 +249 +152 +92 +247 +165 +111 +252 +185 +144 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +58 +69 +70 +56 +64 +60 +83 +78 +61 +105 +93 +60 +117 +98 +55 +117 +98 +55 +105 +93 +60 +83 +78 +61 +56 +64 +60 +55 +66 +67 +144 +125 +110 +239 +182 +144 +250 +176 +132 +247 +165 +111 +249 +159 +103 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +252 +185 +144 +195 +157 +134 +89 +84 +82 +48 +58 +59 +63 +69 +60 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +105 +93 +60 +83 +78 +61 +56 +64 +60 +51 +62 +63 +124 +111 +99 +219 +170 +138 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +249 +152 +92 +246 +156 +93 +247 +165 +111 +249 +174 +124 +252 +185 +144 +167 +142 +123 +70 +79 +77 +51 +62 +63 +75 +74 +61 +100 +89 +56 +117 +98 +55 +123 +102 +54 +105 +93 +60 +83 +78 +61 +51 +62 +63 +63 +74 +74 +172 +150 +134 +109 +106 +99 +51 +62 +63 +83 +78 +61 +95 +87 +59 +65 +67 +64 +65 +67 +64 +209 +171 +139 +249 +189 +146 +249 +189 +146 +249 +189 +146 +250 +197 +158 +212 +173 +150 +109 +106 +99 +48 +58 +59 +63 +69 +60 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +95 +87 +59 +62 +63 +61 +48 +58 +59 +137 +127 +115 +146 +135 +124 +48 +58 +59 +75 +74 +61 +95 +87 +59 +75 +74 +61 +48 +58 +59 +161 +144 +134 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +250 +200 +166 +172 +150 +134 +77 +85 +81 +48 +58 +59 +69 +69 +61 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +100 +89 +56 +75 +74 +61 +56 +64 +60 +55 +66 +67 +133 +120 +107 +236 +186 +153 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +253 +212 +188 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +63 +74 +74 +48 +58 +59 +76 +70 +64 +118 +86 +65 +146 +97 +64 +155 +100 +63 +146 +97 +64 +118 +86 +65 +76 +70 +64 +43 +57 +62 +91 +92 +89 +203 +161 +131 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +247 +150 +84 +249 +152 +92 +249 +159 +103 +251 +168 +115 +248 +180 +134 +209 +171 +139 +101 +100 +92 +43 +57 +62 +69 +69 +61 +106 +82 +65 +135 +94 +64 +155 +100 +63 +155 +100 +63 +135 +94 +64 +106 +82 +65 +65 +67 +64 +43 +57 +62 +101 +100 +92 +209 +171 +139 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +247 +150 +84 +247 +150 +84 +246 +156 +93 +247 +165 +111 +250 +176 +132 +219 +170 +138 +124 +111 +99 +48 +58 +59 +62 +63 +61 +106 +82 +65 +139 +96 +61 +155 +100 +63 +146 +97 +64 +125 +90 +64 +76 +70 +64 +41 +58 +57 +120 +114 +108 +172 +150 +134 +51 +62 +63 +69 +69 +61 +112 +85 +63 +95 +78 +64 +51 +62 +63 +120 +114 +108 +245 +212 +186 +146 +135 +124 +43 +57 +62 +81 +73 +62 +118 +86 +65 +95 +78 +64 +56 +64 +60 +101 +100 +92 +133 +120 +107 +43 +57 +62 +76 +70 +64 +112 +85 +63 +106 +82 +65 +62 +63 +61 +77 +85 +81 +227 +196 +175 +253 +212 +188 +253 +212 +188 +217 +187 +166 +109 +106 +99 +41 +58 +57 +69 +69 +61 +112 +85 +63 +139 +96 +61 +155 +100 +63 +146 +97 +64 +118 +86 +65 +81 +73 +62 +48 +58 +59 +58 +69 +70 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +250 +176 +132 +219 +170 +138 +124 +111 +99 +43 +57 +62 +62 +63 +61 +106 +82 +65 +135 +94 +64 +155 +100 +63 +155 +100 +63 +139 +96 +61 +106 +82 +65 +69 +69 +61 +43 +57 +62 +91 +92 +89 +195 +157 +134 +251 +192 +154 +252 +185 +144 +248 +180 +134 +248 +180 +134 +252 +185 +144 +203 +161 +131 +63 +74 +74 +62 +63 +61 +106 +82 +65 +112 +85 +63 +69 +69 +61 +55 +66 +67 +146 +135 +124 +63 +74 +74 +56 +64 +60 +95 +78 +64 +112 +85 +63 +76 +70 +64 +48 +58 +59 +172 +150 +134 +253 +204 +176 +251 +209 +178 +251 +209 +178 +187 +166 +150 +77 +85 +81 +48 +58 +59 +81 +73 +62 +125 +90 +64 +146 +97 +64 +155 +100 +63 +139 +96 +61 +95 +78 +64 +56 +64 +60 +58 +69 +70 +161 +144 +134 +109 +106 +99 +51 +62 +63 +95 +78 +64 +112 +85 +63 +65 +67 +64 +65 +67 +64 +204 +141 +99 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +209 +171 +139 +24 +22 +23 +85 +71 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +47 +40 +38 +137 +110 +49 +101 +83 +47 +59 +50 +39 +59 +50 +39 +101 +83 +47 +158 +125 +46 +160 +120 +43 +192 +155 +91 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +152 +147 +147 +81 +77 +76 +55 +48 +48 +115 +102 +92 +212 +173 +150 +251 +192 +154 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +249 +189 +146 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +43 +57 +62 +95 +87 +59 +145 +114 +49 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +145 +114 +49 +95 +87 +59 +48 +58 +59 +109 +106 +99 +236 +186 +153 +252 +185 +144 +248 +180 +134 +250 +176 +132 +250 +176 +132 +252 +185 +144 +251 +192 +154 +150 +125 +114 +48 +58 +59 +69 +69 +61 +117 +98 +55 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +152 +119 +47 +100 +89 +56 +56 +64 +60 +63 +74 +74 +186 +157 +134 +249 +189 +146 +248 +180 +134 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +251 +192 +154 +133 +120 +107 +48 +58 +59 +75 +74 +61 +137 +110 +49 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +145 +114 +49 +75 +74 +61 +43 +57 +62 +51 +62 +63 +123 +102 +54 +171 +129 +45 +171 +129 +45 +145 +114 +49 +56 +64 +60 +133 +120 +107 +253 +212 +188 +251 +209 +178 +253 +212 +188 +194 +173 +157 +63 +74 +74 +56 +64 +60 +111 +94 +57 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +158 +125 +46 +105 +93 +60 +51 +62 +63 +43 +57 +62 +88 +82 +59 +168 +127 +42 +171 +129 +45 +168 +127 +42 +88 +82 +59 +63 +74 +74 +187 +166 +150 +55 +66 +67 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +133 +120 +107 +48 +58 +59 +75 +74 +61 +129 +106 +52 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +171 +129 +45 +168 +127 +42 +145 +114 +49 +95 +87 +59 +51 +62 +63 +77 +85 +81 +212 +173 +150 +253 +204 +176 +253 +204 +176 +251 +209 +178 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +41 +58 +57 +69 +69 +61 +155 +100 +63 +214 +121 +50 +234 +126 +45 +234 +126 +45 +234 +126 +45 +234 +126 +45 +234 +126 +45 +224 +123 +55 +155 +100 +63 +69 +69 +61 +51 +62 +63 +178 +146 +122 +249 +189 +146 +250 +176 +132 +251 +168 +115 +251 +168 +115 +249 +174 +124 +250 +176 +132 +249 +189 +146 +167 +142 +123 +55 +66 +67 +65 +67 +64 +146 +97 +64 +212 +120 +56 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +125 +52 +209 +117 +53 +146 +97 +64 +65 +67 +64 +55 +66 +67 +178 +146 +122 +249 +189 +146 +250 +176 +132 +251 +168 +115 +247 +165 +111 +251 +168 +115 +249 +174 +124 +252 +185 +144 +203 +161 +131 +63 +74 +74 +56 +64 +60 +125 +90 +64 +209 +117 +53 +234 +126 +45 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +126 +45 +214 +121 +50 +146 +97 +64 +56 +64 +60 +41 +58 +57 +81 +73 +62 +209 +117 +53 +234 +126 +45 +234 +126 +45 +125 +90 +64 +51 +62 +63 +176 +156 +141 +55 +66 +67 +106 +82 +65 +225 +124 +48 +234 +126 +45 +234 +126 +45 +146 +97 +64 +41 +58 +57 +43 +57 +62 +125 +90 +64 +214 +121 +50 +234 +126 +45 +234 +126 +45 +183 +110 +59 +56 +64 +60 +137 +127 +115 +255 +215 +190 +194 +173 +157 +63 +74 +74 +62 +63 +61 +146 +97 +64 +214 +121 +50 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +125 +52 +234 +126 +45 +225 +124 +48 +173 +106 +60 +81 +73 +62 +35 +56 +60 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +247 +165 +111 +248 +180 +134 +186 +157 +134 +58 +69 +70 +56 +64 +60 +135 +94 +64 +199 +115 +54 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +125 +52 +234 +126 +45 +234 +125 +52 +212 +120 +56 +155 +100 +63 +76 +70 +64 +51 +62 +63 +146 +135 +124 +251 +209 +178 +253 +204 +176 +250 +200 +166 +253 +204 +176 +101 +100 +92 +69 +69 +61 +194 +112 +58 +234 +126 +45 +234 +126 +45 +199 +115 +54 +65 +67 +64 +35 +56 +60 +81 +73 +62 +194 +112 +58 +234 +125 +52 +234 +126 +45 +214 +121 +50 +95 +78 +64 +63 +74 +74 +238 +205 +179 +255 +215 +190 +161 +144 +134 +43 +57 +62 +81 +73 +62 +173 +106 +60 +225 +124 +48 +234 +126 +45 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +126 +45 +194 +112 +58 +95 +78 +64 +41 +58 +57 +48 +58 +59 +155 +100 +63 +234 +126 +45 +234 +126 +45 +199 +115 +54 +69 +69 +61 +99 +90 +79 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +249 +174 +124 +251 +192 +154 +124 +111 +99 +35 +31 +30 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +47 +40 +38 +108 +87 +46 +175 +132 +40 +161 +127 +40 +168 +127 +42 +171 +129 +45 +158 +125 +46 +152 +119 +47 +203 +161 +131 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +89 +84 +82 +47 +40 +38 +139 +115 +96 +236 +186 +153 +252 +185 +144 +250 +176 +132 +249 +174 +124 +250 +176 +132 +252 +185 +144 +250 +197 +158 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +111 +94 +57 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +111 +94 +57 +48 +58 +59 +109 +106 +99 +253 +204 +176 +250 +200 +166 +250 +200 +166 +250 +200 +166 +253 +204 +176 +137 +127 +115 +43 +57 +62 +88 +82 +59 +158 +125 +46 +171 +129 +45 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +145 +114 +49 +69 +69 +61 +51 +62 +63 +187 +166 +150 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +253 +204 +176 +133 +120 +107 +48 +58 +59 +95 +87 +59 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +158 +125 +46 +75 +74 +61 +62 +63 +61 +168 +127 +42 +161 +127 +40 +158 +125 +46 +171 +129 +45 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +207 +178 +158 +58 +69 +70 +63 +69 +60 +145 +114 +49 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +105 +93 +60 +43 +57 +62 +137 +110 +49 +171 +129 +45 +158 +125 +46 +171 +129 +45 +137 +110 +49 +51 +62 +63 +146 +135 +124 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +65 +67 +64 +137 +127 +115 +255 +215 +190 +255 +215 +190 +245 +212 +186 +120 +114 +108 +48 +58 +59 +100 +89 +56 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +129 +106 +52 +61 +67 +58 +63 +74 +74 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +95 +78 +64 +209 +117 +53 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +209 +117 +53 +89 +75 +66 +51 +62 +63 +187 +166 +150 +250 +197 +158 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +161 +144 +134 +41 +58 +57 +95 +78 +64 +199 +115 +54 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +199 +115 +54 +89 +75 +66 +41 +58 +57 +167 +142 +123 +250 +200 +166 +251 +192 +154 +252 +185 +144 +249 +189 +146 +250 +197 +158 +212 +173 +150 +63 +74 +74 +69 +69 +61 +183 +110 +59 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +163 +104 +61 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +234 +125 +52 +188 +112 +56 +51 +62 +63 +109 +106 +99 +51 +62 +63 +188 +112 +56 +234 +126 +45 +224 +123 +55 +234 +125 +52 +188 +112 +56 +43 +57 +62 +112 +85 +63 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +95 +78 +64 +109 +106 +99 +217 +187 +166 +58 +69 +70 +69 +69 +61 +188 +112 +56 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +214 +121 +50 +95 +78 +64 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +186 +157 +134 +51 +62 +63 +81 +73 +62 +188 +112 +56 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +212 +120 +56 +106 +82 +65 +41 +58 +57 +146 +135 +124 +255 +215 +190 +255 +215 +190 +234 +204 +183 +63 +74 +74 +125 +90 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +234 +125 +52 +89 +75 +66 +62 +63 +61 +199 +115 +54 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +217 +187 +166 +172 +150 +134 +41 +58 +57 +106 +82 +65 +214 +121 +50 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +69 +69 +61 +227 +126 +50 +227 +126 +50 +224 +123 +55 +238 +123 +45 +125 +90 +64 +55 +66 +67 +250 +176 +132 +246 +156 +93 +250 +139 +73 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +248 +180 +134 +232 +190 +161 +47 +40 +38 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +170 +137 +67 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +74 +68 +68 +89 +75 +66 +212 +173 +150 +250 +197 +158 +251 +192 +154 +249 +189 +146 +251 +192 +154 +253 +204 +176 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +111 +94 +57 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +48 +58 +59 +95 +87 +59 +168 +127 +42 +168 +127 +42 +158 +125 +46 +161 +127 +40 +171 +129 +45 +158 +125 +46 +152 +119 +47 +152 +119 +47 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +69 +69 +61 +58 +69 +70 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +43 +57 +62 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +158 +125 +46 +168 +127 +42 +137 +110 +49 +83 +78 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +238 +205 +179 +84 +85 +82 +62 +63 +61 +145 +114 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +161 +127 +40 +158 +125 +46 +88 +82 +59 +152 +119 +47 +161 +127 +40 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +63 +69 +60 +137 +127 +115 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +105 +93 +60 +171 +129 +45 +161 +127 +40 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +152 +119 +47 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +145 +114 +49 +62 +63 +61 +70 +79 +77 +227 +196 +175 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +234 +126 +45 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +76 +70 +64 +70 +79 +77 +234 +204 +183 +253 +212 +188 +251 +209 +178 +253 +212 +188 +187 +166 +150 +43 +57 +62 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +95 +78 +64 +48 +58 +59 +194 +173 +157 +253 +212 +188 +251 +209 +178 +251 +209 +178 +245 +212 +186 +91 +92 +89 +62 +63 +61 +188 +112 +56 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +126 +45 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +212 +120 +56 +183 +110 +59 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +95 +78 +64 +84 +85 +82 +91 +92 +89 +62 +63 +61 +188 +112 +56 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +152 +92 +249 +174 +124 +209 +171 +139 +58 +69 +70 +81 +73 +62 +209 +117 +53 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +112 +85 +63 +41 +58 +57 +172 +150 +134 +255 +215 +190 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +194 +112 +58 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +238 +128 +40 +163 +104 +61 +55 +66 +67 +161 +144 +134 +58 +69 +70 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +126 +45 +234 +125 +52 +227 +126 +50 +234 +125 +52 +173 +106 +60 +118 +86 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +146 +97 +64 +51 +62 +63 +252 +185 +144 +249 +159 +103 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +251 +168 +115 +251 +192 +154 +154 +133 +118 +24 +22 +23 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +108 +87 +46 +47 +40 +38 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +156 +125 +62 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +152 +147 +147 +35 +31 +30 +55 +48 +48 +154 +133 +118 +217 +187 +166 +253 +204 +176 +253 +204 +176 +253 +212 +188 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +168 +127 +42 +158 +125 +46 +123 +102 +54 +105 +93 +60 +111 +94 +57 +129 +106 +52 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +83 +78 +61 +58 +69 +70 +227 +196 +175 +255 +215 +190 +217 +187 +166 +58 +69 +70 +75 +74 +61 +168 +127 +42 +161 +127 +40 +158 +125 +46 +168 +127 +42 +152 +119 +47 +105 +93 +60 +69 +69 +61 +62 +63 +61 +62 +63 +61 +75 +74 +61 +117 +98 +55 +161 +127 +40 +161 +127 +40 +158 +125 +46 +171 +129 +45 +145 +114 +49 +56 +64 +60 +97 +98 +96 +245 +212 +186 +255 +215 +190 +227 +196 +175 +63 +74 +74 +75 +74 +61 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +129 +106 +52 +111 +94 +57 +105 +93 +60 +129 +106 +52 +158 +125 +46 +168 +127 +42 +161 +127 +40 +152 +119 +47 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +84 +85 +82 +255 +215 +190 +161 +144 +134 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +117 +98 +55 +105 +93 +60 +117 +98 +55 +145 +114 +49 +171 +129 +45 +168 +127 +42 +152 +119 +47 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +194 +173 +157 +48 +58 +59 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +95 +87 +59 +69 +69 +61 +62 +63 +61 +62 +63 +61 +83 +78 +61 +123 +102 +54 +168 +127 +42 +161 +127 +40 +158 +125 +46 +171 +129 +45 +129 +106 +52 +51 +62 +63 +120 +114 +108 +255 +215 +190 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +188 +112 +56 +146 +97 +64 +135 +94 +64 +146 +97 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +173 +106 +60 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +76 +70 +64 +214 +121 +50 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +163 +104 +61 +135 +94 +64 +135 +94 +64 +163 +104 +61 +224 +123 +55 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +212 +120 +56 +76 +70 +64 +77 +85 +81 +238 +205 +179 +255 +215 +190 +255 +215 +190 +161 +144 +134 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +199 +115 +54 +155 +100 +63 +135 +94 +64 +146 +97 +64 +188 +112 +56 +227 +126 +50 +227 +126 +50 +214 +121 +50 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +199 +115 +54 +125 +90 +64 +51 +62 +63 +55 +66 +67 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +209 +117 +53 +155 +100 +63 +135 +94 +64 +139 +96 +61 +183 +110 +59 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +60 +249 +146 +83 +247 +165 +111 +252 +185 +144 +101 +100 +92 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +173 +106 +60 +135 +94 +64 +135 +94 +64 +163 +104 +61 +214 +121 +50 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +81 +73 +62 +58 +69 +70 +227 +196 +175 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +125 +52 +212 +120 +56 +155 +100 +63 +69 +69 +61 +76 +78 +76 +84 +85 +82 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +183 +110 +59 +139 +96 +61 +135 +94 +64 +155 +100 +63 +209 +117 +53 +234 +125 +52 +224 +123 +55 +212 +120 +56 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +251 +192 +154 +251 +168 +115 +249 +146 +83 +247 +130 +53 +247 +118 +39 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +250 +176 +132 +232 +190 +161 +65 +58 +56 +59 +50 +39 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +47 +40 +38 +129 +106 +52 +168 +127 +42 +160 +120 +43 +158 +125 +46 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +62 +63 +61 +35 +31 +30 +91 +92 +89 +164 +158 +157 +186 +181 +179 +82 +69 +65 +176 +156 +141 +255 +215 +190 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +65 +67 +64 +48 +58 +59 +55 +66 +67 +55 +66 +67 +48 +58 +59 +83 +78 +61 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +146 +135 +124 +255 +215 +190 +120 +114 +108 +56 +64 +60 +145 +114 +49 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +69 +69 +61 +43 +57 +62 +109 +106 +99 +146 +135 +124 +137 +127 +115 +91 +92 +89 +43 +57 +62 +88 +82 +59 +158 +125 +46 +161 +127 +40 +158 +125 +46 +171 +129 +45 +117 +98 +55 +48 +58 +59 +172 +150 +134 +255 +215 +190 +146 +135 +124 +51 +62 +63 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +75 +74 +61 +48 +58 +59 +55 +66 +67 +55 +66 +67 +48 +58 +59 +69 +69 +61 +137 +110 +49 +168 +127 +42 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +234 +204 +183 +70 +79 +77 +83 +78 +61 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +111 +94 +57 +56 +64 +60 +43 +57 +62 +58 +69 +70 +48 +58 +59 +56 +64 +60 +100 +89 +56 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +255 +215 +190 +97 +98 +96 +62 +63 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +137 +110 +49 +62 +63 +61 +51 +62 +63 +120 +114 +108 +146 +135 +124 +137 +127 +115 +84 +85 +82 +43 +57 +62 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +100 +89 +56 +43 +57 +62 +194 +173 +157 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +118 +86 +65 +51 +62 +63 +43 +57 +62 +58 +69 +70 +41 +58 +57 +56 +64 +60 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +106 +82 +65 +63 +74 +74 +234 +204 +183 +255 +215 +190 +161 +144 +134 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +183 +110 +59 +76 +70 +64 +43 +57 +62 +55 +66 +67 +55 +66 +67 +48 +58 +59 +81 +73 +62 +183 +110 +59 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +161 +144 +134 +255 +215 +190 +234 +204 +183 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +62 +63 +61 +43 +57 +62 +58 +69 +70 +43 +57 +62 +51 +62 +63 +125 +90 +64 +225 +124 +48 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +227 +126 +50 +173 +106 +60 +95 +78 +64 +56 +64 +60 +51 +62 +63 +120 +114 +108 +70 +79 +77 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +65 +67 +64 +41 +58 +57 +55 +66 +67 +51 +62 +63 +48 +58 +59 +106 +82 +65 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +130 +60 +250 +139 +73 +246 +156 +93 +250 +176 +132 +186 +157 +134 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +199 +115 +54 +89 +75 +66 +48 +58 +59 +51 +62 +63 +55 +66 +67 +43 +57 +62 +76 +70 +64 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +137 +127 +115 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +199 +115 +54 +125 +90 +64 +69 +69 +61 +41 +58 +57 +97 +98 +96 +146 +135 +124 +51 +62 +63 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +106 +82 +65 +48 +58 +59 +51 +62 +63 +55 +66 +67 +41 +58 +57 +65 +67 +64 +163 +104 +61 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +197 +158 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +154 +133 +118 +24 +22 +23 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +85 +71 +43 +171 +129 +45 +160 +120 +43 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +65 +58 +56 +62 +63 +61 +219 +212 +208 +253 +255 +252 +237 +233 +225 +120 +114 +108 +35 +31 +30 +55 +48 +48 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +84 +85 +82 +187 +166 +150 +227 +196 +175 +227 +196 +175 +161 +144 +134 +51 +62 +63 +69 +69 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +217 +187 +166 +55 +66 +67 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +58 +69 +70 +187 +166 +150 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +161 +144 +134 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +84 +85 +82 +234 +204 +183 +76 +78 +76 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +62 +63 +61 +63 +74 +74 +176 +156 +141 +227 +196 +175 +227 +196 +175 +176 +156 +141 +70 +79 +77 +62 +63 +61 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +172 +150 +134 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +43 +57 +62 +120 +114 +108 +207 +178 +158 +227 +196 +175 +217 +187 +166 +120 +114 +108 +41 +58 +57 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +146 +135 +124 +207 +178 +158 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +62 +63 +61 +70 +79 +77 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +238 +205 +179 +137 +127 +115 +43 +57 +62 +117 +98 +55 +168 +127 +42 +158 +125 +46 +168 +127 +42 +152 +119 +47 +62 +63 +61 +109 +106 +99 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +41 +58 +57 +137 +127 +115 +217 +187 +166 +227 +196 +175 +207 +178 +158 +109 +106 +99 +41 +58 +57 +146 +97 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +176 +156 +141 +245 +212 +186 +70 +79 +77 +95 +78 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +188 +112 +56 +56 +64 +60 +70 +79 +77 +176 +156 +141 +227 +196 +175 +227 +196 +175 +176 +156 +141 +63 +74 +74 +62 +63 +61 +194 +112 +58 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +77 +85 +81 +245 +212 +186 +172 +150 +134 +48 +58 +59 +173 +106 +60 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +135 +94 +64 +35 +56 +60 +120 +114 +108 +207 +178 +158 +227 +196 +175 +217 +187 +166 +133 +120 +107 +35 +56 +60 +118 +86 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +95 +78 +64 +48 +58 +59 +70 +79 +77 +146 +135 +124 +217 +187 +166 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +91 +92 +89 +194 +173 +157 +227 +196 +175 +217 +187 +166 +146 +135 +124 +43 +57 +62 +89 +75 +66 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +130 +60 +248 +138 +64 +249 +146 +83 +247 +165 +111 +239 +182 +144 +91 +92 +89 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +76 +70 +64 +55 +66 +67 +172 +150 +134 +227 +196 +175 +227 +196 +175 +187 +166 +150 +77 +85 +81 +51 +62 +63 +173 +106 +60 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +118 +86 +65 +58 +69 +70 +217 +187 +166 +70 +79 +77 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +125 +90 +64 +56 +64 +60 +55 +66 +67 +120 +114 +108 +187 +166 +150 +245 +212 +186 +120 +114 +108 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +225 +124 +48 +95 +78 +64 +43 +57 +62 +146 +135 +124 +217 +187 +166 +227 +196 +175 +194 +173 +157 +91 +92 +89 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +197 +158 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +251 +168 +115 +239 +182 +144 +65 +58 +56 +59 +50 +39 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +108 +87 +46 +47 +40 +38 +152 +119 +47 +170 +137 +67 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +174 +168 +167 +24 +22 +23 +109 +106 +99 +152 +147 +147 +97 +98 +96 +47 +40 +38 +24 +22 +23 +35 +31 +30 +35 +31 +30 +176 +156 +141 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +76 +78 +76 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +187 +166 +150 +51 +62 +63 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +55 +66 +67 +109 +106 +99 +48 +58 +59 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +117 +98 +55 +48 +58 +59 +187 +166 +150 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +171 +129 +45 +117 +98 +55 +55 +66 +67 +137 +127 +115 +55 +66 +67 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +58 +69 +70 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +91 +92 +89 +109 +106 +99 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +120 +114 +108 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +146 +135 +124 +146 +135 +124 +62 +63 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +100 +89 +56 +51 +62 +63 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +109 +106 +99 +63 +69 +60 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +100 +89 +56 +51 +62 +63 +227 +196 +175 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +41 +58 +57 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +109 +106 +99 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +76 +70 +64 +109 +106 +99 +194 +173 +157 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +225 +124 +48 +89 +75 +66 +63 +74 +74 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +58 +69 +70 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +43 +57 +62 +207 +178 +158 +109 +106 +99 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +120 +114 +108 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +188 +112 +56 +62 +63 +61 +58 +69 +70 +161 +144 +134 +234 +204 +183 +255 +215 +190 +255 +215 +190 +137 +127 +115 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +69 +69 +61 +77 +85 +81 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +176 +156 +141 +35 +56 +60 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +247 +150 +84 +250 +139 +73 +248 +138 +64 +250 +139 +73 +249 +152 +92 +249 +174 +124 +209 +171 +139 +43 +57 +62 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +112 +85 +63 +51 +62 +63 +194 +173 +157 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +227 +196 +175 +70 +79 +77 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +146 +135 +124 +77 +85 +81 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +95 +78 +64 +35 +56 +60 +120 +114 +108 +217 +187 +166 +255 +215 +190 +255 +215 +190 +227 +196 +175 +58 +69 +70 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +41 +58 +57 +172 +150 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +51 +62 +63 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +178 +146 +122 +24 +22 +23 +101 +83 +47 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +47 +40 +38 +123 +102 +54 +209 +171 +139 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +164 +158 +157 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +47 +40 +38 +194 +173 +157 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +176 +156 +141 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +120 +114 +108 +56 +64 +60 +152 +119 +47 +161 +127 +40 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +48 +58 +59 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +63 +74 +74 +194 +173 +157 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +172 +150 +134 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +51 +62 +63 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +70 +79 +77 +63 +74 +74 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +55 +66 +67 +227 +196 +175 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +234 +204 +183 +70 +79 +77 +88 +82 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +97 +98 +96 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +84 +85 +82 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +217 +187 +166 +146 +135 +124 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +187 +166 +150 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +70 +79 +77 +245 +212 +186 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +217 +187 +166 +43 +57 +62 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +106 +82 +65 +77 +85 +81 +133 +120 +107 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +48 +58 +59 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +77 +85 +81 +118 +86 +65 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +55 +66 +67 +227 +196 +175 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +234 +204 +183 +63 +74 +74 +106 +82 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +89 +75 +66 +63 +74 +74 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +91 +92 +89 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +146 +97 +64 +43 +57 +62 +187 +166 +150 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +101 +100 +92 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +247 +150 +84 +250 +139 +73 +250 +139 +73 +247 +143 +74 +249 +159 +103 +250 +176 +132 +154 +133 +118 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +176 +156 +141 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +91 +92 +89 +70 +79 +77 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +146 +97 +64 +35 +56 +60 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +97 +98 +96 +255 +215 +190 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +187 +166 +150 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +159 +103 +248 +180 +134 +124 +111 +99 +35 +31 +30 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +59 +50 +39 +85 +71 +43 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +207 +202 +200 +47 +40 +38 +24 +22 +23 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +65 +58 +56 +238 +205 +179 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +100 +89 +56 +63 +74 +74 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +194 +173 +157 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +43 +57 +62 +95 +87 +59 +168 +127 +42 +158 +125 +46 +161 +127 +40 +158 +125 +46 +63 +69 +60 +43 +57 +62 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +43 +57 +62 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +43 +57 +62 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +51 +62 +63 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +109 +106 +99 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +120 +114 +108 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +120 +114 +108 +70 +79 +77 +105 +93 +60 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +43 +57 +62 +111 +94 +57 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +62 +63 +61 +146 +135 +124 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +212 +188 +250 +200 +166 +250 +200 +166 +253 +204 +176 +253 +212 +188 +253 +212 +188 +97 +98 +96 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +63 +74 +74 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +135 +94 +64 +55 +66 +67 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +217 +187 +166 +51 +62 +63 +139 +96 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +58 +69 +70 +51 +62 +63 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +224 +123 +55 +81 +73 +62 +109 +106 +99 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +120 +114 +108 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +70 +79 +77 +118 +86 +65 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +77 +85 +81 +245 +212 +186 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +176 +156 +141 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +249 +152 +92 +247 +143 +74 +247 +143 +74 +247 +150 +84 +249 +159 +103 +248 +180 +134 +120 +114 +108 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +43 +57 +62 +194 +173 +157 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +234 +204 +183 +63 +74 +74 +112 +85 +63 +234 +125 +52 +227 +126 +50 +224 +123 +55 +234 +125 +52 +106 +82 +65 +58 +69 +70 +55 +66 +67 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +77 +85 +81 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +172 +150 +134 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +245 +212 +186 +63 +74 +74 +112 +85 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +252 +185 +144 +82 +69 +65 +47 +40 +38 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +85 +71 +43 +59 +50 +39 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +164 +158 +157 +47 +40 +38 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +65 +67 +64 +65 +58 +56 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +227 +196 +175 +58 +69 +70 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +41 +58 +57 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +137 +110 +49 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +41 +58 +57 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +70 +79 +77 +245 +212 +186 +253 +212 +188 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +238 +205 +179 +70 +79 +77 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +146 +135 +124 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +253 +204 +176 +255 +215 +190 +172 +150 +134 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +97 +98 +96 +55 +66 +67 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +117 +98 +55 +145 +114 +49 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +137 +127 +115 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +187 +166 +150 +255 +215 +190 +253 +204 +176 +251 +192 +154 +251 +192 +154 +250 +197 +158 +253 +204 +176 +255 +215 +190 +137 +127 +115 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +43 +57 +62 +41 +58 +57 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +77 +85 +81 +245 +212 +186 +251 +209 +178 +250 +197 +158 +249 +189 +146 +251 +192 +154 +250 +197 +158 +251 +209 +178 +238 +205 +179 +77 +85 +81 +112 +85 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +106 +82 +65 +41 +58 +57 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +253 +204 +176 +255 +215 +190 +176 +156 +141 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +176 +156 +141 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +227 +196 +175 +58 +69 +70 +139 +96 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +255 +215 +190 +207 +178 +158 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +249 +174 +124 +246 +156 +93 +247 +150 +84 +249 +146 +83 +249 +152 +92 +251 +168 +115 +249 +189 +146 +97 +98 +96 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +58 +69 +70 +227 +196 +175 +253 +212 +188 +250 +200 +166 +251 +192 +154 +249 +189 +146 +250 +197 +158 +251 +209 +178 +255 +215 +190 +97 +98 +96 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +43 +57 +62 +43 +57 +62 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +126 +45 +155 +100 +63 +43 +57 +62 +207 +178 +158 +255 +215 +190 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +197 +158 +251 +209 +178 +255 +215 +190 +109 +106 +99 +89 +75 +66 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +143 +74 +249 +159 +103 +252 +185 +144 +55 +48 +48 +59 +50 +39 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +101 +83 +47 +59 +50 +39 +209 +171 +139 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +137 +127 +115 +101 +100 +92 +120 +114 +108 +186 +181 +179 +152 +147 +147 +55 +48 +48 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +234 +204 +183 +70 +79 +77 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +41 +58 +57 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +75 +74 +61 +41 +58 +57 +88 +82 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +77 +85 +81 +245 +212 +186 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +245 +212 +186 +84 +85 +82 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +161 +144 +134 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +187 +166 +150 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +91 +92 +89 +55 +66 +67 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +63 +69 +60 +137 +127 +115 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +48 +58 +59 +187 +166 +150 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +41 +58 +57 +118 +86 +65 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +95 +78 +64 +91 +92 +89 +255 +215 +190 +253 +204 +176 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +253 +204 +176 +245 +212 +186 +91 +92 +89 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +41 +58 +57 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +227 +126 +50 +199 +115 +54 +56 +64 +60 +161 +144 +134 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +187 +166 +150 +48 +58 +59 +183 +110 +59 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +217 +187 +166 +55 +66 +67 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +69 +69 +61 +137 +127 +115 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +249 +189 +146 +250 +200 +166 +253 +212 +188 +217 +187 +166 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +250 +197 +158 +249 +174 +124 +249 +159 +103 +249 +152 +92 +249 +152 +92 +249 +159 +103 +249 +174 +124 +250 +197 +158 +91 +92 +89 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +125 +90 +64 +70 +79 +77 +234 +204 +183 +251 +209 +178 +250 +197 +158 +249 +189 +146 +252 +185 +144 +251 +192 +154 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +126 +45 +135 +94 +64 +41 +58 +57 +41 +58 +57 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +212 +188 +253 +212 +188 +251 +209 +178 +251 +209 +178 +255 +215 +190 +137 +127 +115 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +146 +97 +64 +51 +62 +63 +227 +196 +175 +253 +212 +188 +250 +197 +158 +249 +189 +146 +249 +189 +146 +251 +192 +154 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +252 +185 +144 +55 +48 +48 +59 +50 +39 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +154 +125 +71 +170 +137 +67 +108 +87 +46 +59 +50 +39 +192 +155 +91 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +47 +40 +38 +65 +58 +56 +245 +212 +186 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +253 +212 +188 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +234 +204 +183 +63 +74 +74 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +41 +58 +57 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +111 +94 +57 +56 +64 +60 +43 +57 +62 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +70 +79 +77 +245 +212 +186 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +197 +158 +251 +209 +178 +245 +212 +186 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +152 +119 +47 +56 +64 +60 +161 +144 +134 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +176 +156 +141 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +91 +92 +89 +55 +66 +67 +123 +102 +54 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +100 +89 +56 +48 +58 +59 +187 +166 +150 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +255 +215 +190 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +197 +158 +253 +204 +176 +255 +215 +190 +146 +135 +124 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +41 +58 +57 +112 +85 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +84 +85 +82 +255 +215 +190 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +238 +205 +179 +84 +85 +82 +106 +82 +65 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +41 +58 +57 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +176 +156 +141 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +253 +212 +188 +253 +204 +176 +250 +200 +166 +253 +204 +176 +217 +187 +166 +55 +66 +67 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +207 +178 +158 +48 +58 +59 +163 +104 +61 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +250 +200 +166 +248 +180 +134 +251 +168 +115 +247 +165 +111 +247 +165 +111 +251 +168 +115 +248 +180 +134 +250 +200 +166 +91 +92 +89 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +63 +74 +74 +227 +196 +175 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +253 +204 +176 +255 +215 +190 +109 +106 +99 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +125 +52 +125 +90 +64 +43 +57 +62 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +137 +127 +115 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +43 +57 +62 +217 +187 +166 +253 +212 +188 +250 +200 +166 +251 +192 +154 +249 +189 +146 +250 +197 +158 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +248 +180 +134 +76 +70 +64 +47 +40 +38 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +170 +137 +67 +101 +83 +47 +59 +50 +39 +170 +137 +67 +255 +238 +227 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +152 +147 +147 +35 +31 +30 +24 +22 +23 +115 +102 +92 +255 +215 +190 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +58 +69 +70 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +207 +178 +158 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +161 +127 +40 +158 +125 +46 +75 +74 +61 +48 +58 +59 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +48 +58 +59 +101 +100 +92 +91 +92 +89 +75 +74 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +111 +94 +57 +55 +66 +67 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +227 +196 +175 +51 +62 +63 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +48 +58 +59 +48 +58 +59 +123 +102 +54 +168 +127 +42 +158 +125 +46 +161 +127 +40 +158 +125 +46 +69 +69 +61 +120 +114 +108 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +251 +209 +178 +255 +215 +190 +146 +135 +124 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +109 +106 +99 +63 +74 +74 +111 +94 +57 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +69 +69 +61 +51 +62 +63 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +51 +62 +63 +48 +58 +59 +120 +114 +108 +245 +212 +186 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +137 +127 +115 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +109 +106 +99 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +48 +58 +59 +43 +57 +62 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +125 +90 +64 +63 +74 +74 +227 +196 +175 +253 +212 +188 +250 +200 +166 +250 +197 +158 +250 +197 +158 +253 +204 +176 +255 +215 +190 +227 +196 +175 +55 +66 +67 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +48 +58 +59 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +251 +209 +178 +255 +215 +190 +137 +127 +115 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +176 +156 +141 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +91 +92 +89 +253 +212 +188 +253 +212 +188 +250 +200 +166 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +172 +150 +134 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +209 +178 +251 +192 +154 +250 +176 +132 +249 +174 +124 +249 +174 +124 +248 +180 +134 +251 +192 +154 +251 +209 +178 +109 +106 +99 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +146 +97 +64 +43 +57 +62 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +197 +158 +250 +197 +158 +250 +200 +166 +253 +212 +188 +245 +212 +186 +70 +79 +77 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +51 +62 +63 +51 +62 +63 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +245 +212 +186 +250 +200 +166 +251 +192 +154 +250 +197 +158 +253 +204 +176 +146 +135 +124 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +197 +158 +250 +200 +166 +253 +212 +188 +255 +215 +190 +84 +85 +82 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +121 +100 +85 +35 +31 +30 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +171 +129 +45 +85 +71 +43 +71 +60 +43 +171 +129 +45 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +174 +168 +167 +81 +77 +76 +24 +22 +23 +35 +31 +30 +35 +31 +30 +187 +166 +150 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +176 +156 +141 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +152 +119 +47 +56 +64 +60 +43 +57 +62 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +146 +135 +124 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +172 +150 +134 +172 +150 +134 +146 +135 +124 +146 +135 +124 +194 +173 +157 +245 +212 +186 +137 +127 +115 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +161 +144 +134 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +161 +144 +134 +48 +58 +59 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +51 +62 +63 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +70 +79 +77 +245 +212 +186 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +255 +215 +190 +255 +215 +190 +91 +92 +89 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +133 +120 +107 +84 +85 +82 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +55 +66 +67 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +172 +150 +134 +172 +150 +134 +137 +127 +115 +146 +135 +124 +207 +178 +158 +245 +212 +186 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +76 +78 +76 +245 +212 +186 +255 +215 +190 +253 +212 +188 +253 +212 +188 +253 +212 +188 +255 +215 +190 +227 +196 +175 +58 +69 +70 +118 +86 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +125 +90 +64 +63 +74 +74 +97 +98 +96 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +187 +166 +150 +255 +215 +190 +255 +215 +190 +251 +209 +178 +251 +209 +178 +255 +215 +190 +255 +215 +190 +176 +156 +141 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +69 +69 +61 +101 +100 +92 +63 +74 +74 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +63 +74 +74 +234 +204 +183 +255 +215 +190 +253 +212 +188 +253 +212 +188 +253 +212 +188 +255 +215 +190 +245 +212 +186 +70 +79 +77 +89 +75 +66 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +176 +156 +141 +253 +204 +176 +251 +192 +154 +251 +192 +154 +251 +192 +154 +250 +200 +166 +77 +85 +81 +106 +82 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +135 +94 +64 +51 +62 +63 +217 +187 +166 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +109 +106 +99 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +250 +200 +166 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +250 +200 +166 +255 +215 +190 +146 +135 +124 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +251 +209 +178 +251 +209 +178 +253 +212 +188 +255 +215 +190 +194 +173 +157 +43 +57 +62 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +77 +85 +81 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +200 +166 +172 +150 +134 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +120 +114 +108 +255 +215 +190 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +255 +215 +190 +217 +187 +166 +51 +62 +63 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +251 +168 +115 +187 +140 +108 +24 +22 +23 +59 +50 +39 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +154 +125 +71 +156 +125 +62 +158 +125 +46 +47 +40 +38 +108 +87 +46 +158 +125 +46 +195 +167 +113 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +164 +158 +157 +109 +106 +99 +65 +58 +56 +24 +22 +23 +24 +22 +23 +94 +60 +47 +178 +86 +46 +59 +50 +39 +150 +125 +114 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +84 +85 +82 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +55 +66 +67 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +123 +102 +54 +51 +62 +63 +76 +78 +76 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +133 +120 +107 +77 +85 +81 +77 +85 +81 +146 +135 +124 +245 +212 +186 +176 +156 +141 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +63 +74 +74 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +77 +85 +81 +77 +85 +81 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +48 +58 +59 +117 +98 +55 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +120 +114 +108 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +111 +94 +57 +51 +62 +63 +176 +156 +141 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +120 +114 +108 +70 +79 +77 +84 +85 +82 +161 +144 +134 +255 +215 +190 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +41 +58 +57 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +183 +110 +59 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +97 +98 +96 +172 +150 +134 +48 +58 +59 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +84 +85 +82 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +176 +156 +141 +97 +98 +96 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +41 +58 +57 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +250 +200 +166 +249 +189 +146 +252 +185 +144 +249 +189 +146 +250 +200 +166 +120 +114 +108 +69 +69 +61 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +101 +100 +92 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +187 +166 +150 +43 +57 +62 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +253 +212 +188 +255 +215 +190 +187 +166 +150 +41 +58 +57 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +58 +69 +70 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +91 +92 +89 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +77 +85 +81 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +204 +176 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +212 +173 +150 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +118 +86 +65 +51 +62 +63 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +109 +106 +99 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +248 +180 +134 +89 +75 +66 +24 +22 +23 +85 +71 +43 +171 +129 +45 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +154 +125 +71 +156 +125 +62 +175 +132 +40 +85 +71 +43 +47 +40 +38 +158 +125 +46 +158 +125 +46 +170 +137 +67 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +207 +202 +200 +164 +158 +157 +146 +135 +124 +120 +114 +108 +89 +84 +82 +65 +58 +56 +47 +40 +38 +24 +22 +23 +24 +22 +23 +35 +31 +30 +94 +60 +47 +178 +86 +46 +226 +110 +35 +241 +100 +24 +144 +77 +47 +65 +58 +56 +253 +212 +188 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +129 +106 +52 +48 +58 +59 +101 +100 +92 +217 +187 +166 +245 +212 +186 +245 +212 +186 +194 +173 +157 +76 +78 +76 +56 +64 +60 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +77 +85 +81 +176 +156 +141 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +95 +87 +59 +41 +58 +57 +137 +127 +115 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +207 +178 +158 +120 +114 +108 +48 +58 +59 +62 +63 +61 +100 +89 +56 +95 +87 +59 +51 +62 +63 +120 +114 +108 +227 +196 +175 +55 +66 +67 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +84 +85 +82 +207 +178 +158 +245 +212 +186 +245 +212 +186 +207 +178 +158 +97 +98 +96 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +91 +92 +89 +120 +114 +108 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +161 +144 +134 +227 +196 +175 +253 +212 +188 +234 +204 +183 +161 +144 +134 +51 +62 +63 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +176 +156 +141 +48 +58 +59 +137 +110 +49 +171 +129 +45 +158 +125 +46 +161 +127 +40 +158 +125 +46 +75 +74 +61 +43 +57 +62 +161 +144 +134 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +194 +173 +157 +109 +106 +99 +43 +57 +62 +69 +69 +61 +105 +93 +60 +88 +82 +59 +48 +58 +59 +146 +135 +124 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +95 +78 +64 +43 +57 +62 +161 +144 +134 +234 +204 +183 +245 +212 +186 +227 +196 +175 +146 +135 +124 +35 +56 +60 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +188 +112 +56 +51 +62 +63 +161 +144 +134 +234 +204 +183 +51 +62 +63 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +163 +104 +61 +43 +57 +62 +97 +98 +96 +207 +178 +158 +245 +212 +186 +245 +212 +186 +207 +178 +158 +91 +92 +89 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +118 +86 +65 +55 +66 +67 +234 +204 +183 +146 +135 +124 +56 +64 +60 +194 +112 +58 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +35 +56 +60 +146 +135 +124 +227 +196 +175 +253 +212 +188 +234 +204 +183 +161 +144 +134 +43 +57 +62 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +250 +197 +158 +252 +185 +144 +248 +180 +134 +248 +180 +134 +251 +192 +154 +172 +150 +134 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +41 +58 +57 +120 +114 +108 +217 +187 +166 +245 +212 +186 +234 +204 +183 +176 +156 +141 +58 +69 +70 +81 +73 +62 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +255 +215 +190 +217 +187 +166 +133 +120 +107 +84 +85 +82 +91 +92 +89 +146 +135 +124 +234 +204 +183 +238 +205 +179 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +84 +85 +82 +194 +173 +157 +245 +212 +186 +245 +212 +186 +217 +187 +166 +109 +106 +99 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +146 +97 +64 +51 +62 +63 +187 +166 +150 +76 +78 +76 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +97 +98 +96 +250 +200 +166 +249 +189 +146 +248 +180 +134 +248 +180 +134 +252 +185 +144 +232 +190 +161 +70 +79 +77 +112 +85 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +199 +115 +54 +65 +67 +64 +70 +79 +77 +187 +166 +150 +238 +205 +179 +245 +212 +186 +217 +187 +166 +133 +120 +107 +35 +56 +60 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +251 +168 +115 +203 +161 +131 +55 +48 +48 +24 +22 +23 +71 +60 +43 +145 +114 +49 +171 +129 +45 +171 +129 +45 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +156 +125 +62 +156 +125 +62 +171 +129 +45 +171 +129 +45 +101 +83 +47 +35 +31 +30 +123 +102 +54 +171 +129 +45 +158 +125 +46 +160 +120 +43 +224 +207 +180 +253 +255 +252 +253 +255 +252 +219 +212 +208 +47 +40 +38 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +24 +22 +23 +47 +40 +38 +226 +110 +35 +241 +100 +24 +226 +110 +35 +226 +110 +35 +144 +77 +47 +55 +48 +48 +238 +205 +179 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +123 +102 +54 +56 +64 +60 +51 +62 +63 +84 +85 +82 +84 +85 +82 +48 +58 +59 +63 +69 +60 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +245 +212 +186 +84 +85 +82 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +95 +87 +59 +48 +58 +59 +63 +74 +74 +109 +106 +99 +133 +120 +107 +133 +120 +107 +91 +92 +89 +51 +62 +63 +56 +64 +60 +100 +89 +56 +152 +119 +47 +171 +129 +45 +175 +132 +40 +100 +89 +56 +48 +58 +59 +217 +187 +166 +120 +114 +108 +63 +69 +60 +152 +119 +47 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +61 +67 +58 +51 +62 +63 +84 +85 +82 +84 +85 +82 +51 +62 +63 +56 +64 +60 +123 +102 +54 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +187 +166 +150 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +83 +78 +61 +48 +58 +59 +63 +74 +74 +91 +92 +89 +70 +79 +77 +48 +58 +59 +75 +74 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +234 +204 +183 +63 +74 +74 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +83 +78 +61 +48 +58 +59 +70 +79 +77 +109 +106 +99 +133 +120 +107 +120 +114 +108 +84 +85 +82 +48 +58 +59 +61 +67 +58 +111 +94 +57 +158 +125 +46 +171 +129 +45 +171 +129 +45 +88 +82 +59 +58 +69 +70 +238 +205 +179 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +212 +120 +56 +95 +78 +64 +43 +57 +62 +70 +79 +77 +84 +85 +82 +63 +74 +74 +48 +58 +59 +118 +86 +65 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +112 +85 +63 +55 +66 +67 +227 +196 +175 +255 +215 +190 +120 +114 +108 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +155 +100 +63 +62 +63 +61 +51 +62 +63 +77 +85 +81 +77 +85 +81 +51 +62 +63 +62 +63 +61 +155 +100 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +199 +115 +54 +56 +64 +60 +120 +114 +108 +255 +215 +190 +217 +187 +166 +43 +57 +62 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +106 +82 +65 +48 +58 +59 +63 +74 +74 +84 +85 +82 +70 +79 +77 +43 +57 +62 +95 +78 +64 +212 +120 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +172 +150 +134 +251 +192 +154 +248 +180 +134 +249 +174 +124 +249 +174 +124 +248 +180 +134 +236 +186 +153 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +51 +62 +63 +55 +66 +67 +84 +85 +82 +70 +79 +77 +41 +58 +57 +81 +73 +62 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +194 +173 +157 +58 +69 +70 +62 +63 +61 +106 +82 +65 +95 +78 +64 +51 +62 +63 +91 +92 +89 +238 +205 +179 +161 +144 +134 +48 +58 +59 +183 +110 +59 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +173 +106 +60 +65 +67 +64 +48 +58 +59 +77 +85 +81 +84 +85 +82 +55 +66 +67 +56 +64 +60 +146 +97 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +69 +69 +61 +101 +100 +92 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +250 +197 +158 +252 +185 +144 +249 +174 +124 +249 +174 +124 +250 +176 +132 +251 +192 +154 +120 +114 +108 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +188 +112 +56 +76 +70 +64 +41 +58 +57 +77 +85 +81 +84 +85 +82 +58 +69 +70 +48 +58 +59 +125 +90 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +243 +101 +2 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +249 +174 +124 +203 +161 +131 +55 +48 +48 +24 +22 +23 +35 +31 +30 +85 +71 +43 +137 +110 +49 +152 +119 +47 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +152 +119 +47 +117 +98 +55 +59 +50 +39 +35 +31 +30 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +146 +135 +124 +65 +58 +56 +35 +31 +30 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +83 +53 +42 +236 +108 +29 +236 +108 +29 +226 +110 +35 +94 +60 +47 +65 +58 +56 +253 +212 +188 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +145 +114 +49 +105 +93 +60 +83 +78 +61 +83 +78 +61 +111 +94 +57 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +51 +62 +63 +217 +187 +166 +255 +215 +190 +176 +156 +141 +43 +57 +62 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +137 +110 +49 +88 +82 +59 +69 +69 +61 +62 +63 +61 +63 +69 +60 +75 +74 +61 +105 +93 +60 +152 +119 +47 +171 +129 +45 +168 +127 +42 +158 +125 +46 +171 +129 +45 +129 +106 +52 +48 +58 +59 +194 +173 +157 +207 +178 +158 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +111 +94 +57 +83 +78 +61 +83 +78 +61 +105 +93 +60 +145 +114 +49 +168 +127 +42 +161 +127 +40 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +245 +212 +186 +77 +85 +81 +75 +74 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +129 +106 +52 +95 +87 +59 +81 +73 +62 +95 +87 +59 +123 +102 +54 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +161 +144 +134 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +129 +106 +52 +88 +82 +59 +69 +69 +61 +62 +63 +61 +63 +69 +60 +75 +74 +61 +117 +98 +55 +152 +119 +47 +171 +129 +45 +161 +127 +40 +158 +125 +46 +171 +129 +45 +111 +94 +57 +48 +58 +59 +227 +196 +175 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +163 +104 +61 +112 +85 +63 +95 +78 +64 +118 +86 +65 +173 +106 +60 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +133 +120 +107 +255 +215 +190 +255 +215 +190 +217 +187 +166 +51 +62 +63 +106 +82 +65 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +199 +115 +54 +135 +94 +64 +95 +78 +64 +95 +78 +64 +135 +94 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +106 +82 +65 +51 +62 +63 +217 +187 +166 +255 +215 +190 +255 +215 +190 +120 +114 +108 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +173 +106 +60 +118 +86 +65 +95 +78 +64 +112 +85 +63 +163 +104 +61 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +172 +150 +134 +252 +185 +144 +249 +174 +124 +247 +165 +111 +247 +165 +111 +249 +174 +124 +252 +185 +144 +154 +133 +118 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +188 +112 +56 +125 +90 +64 +95 +78 +64 +106 +82 +65 +155 +100 +63 +224 +123 +55 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +253 +212 +188 +91 +92 +89 +69 +69 +61 +194 +112 +58 +234 +126 +45 +234 +126 +45 +163 +104 +61 +51 +62 +63 +137 +127 +115 +238 +205 +179 +63 +74 +74 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +146 +97 +64 +106 +82 +65 +95 +78 +64 +125 +90 +64 +194 +112 +58 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +125 +90 +64 +41 +58 +57 +194 +173 +157 +238 +205 +179 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +251 +192 +154 +250 +176 +132 +251 +168 +115 +247 +165 +111 +249 +174 +124 +245 +179 +138 +195 +157 +134 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +146 +97 +64 +106 +82 +65 +95 +78 +64 +125 +90 +64 +183 +110 +59 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +219 +170 +138 +115 +102 +92 +47 +40 +38 +24 +22 +23 +35 +31 +30 +47 +40 +38 +59 +50 +39 +59 +50 +39 +59 +50 +39 +59 +50 +39 +47 +40 +38 +47 +40 +38 +71 +60 +43 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +170 +137 +67 +219 +212 +208 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +152 +147 +147 +109 +106 +99 +65 +67 +64 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +94 +60 +47 +178 +86 +46 +109 +63 +45 +35 +31 +30 +124 +111 +99 +251 +209 +178 +251 +209 +178 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +117 +98 +55 +129 +106 +52 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +171 +129 +45 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +120 +114 +108 +51 +62 +63 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +152 +119 +47 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +81 +73 +62 +58 +69 +70 +227 +196 +175 +255 +215 +190 +120 +114 +108 +48 +58 +59 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +152 +119 +47 +117 +98 +55 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +176 +156 +141 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +145 +114 +49 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +238 +205 +179 +91 +92 +89 +56 +64 +60 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +158 +125 +46 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +152 +119 +47 +69 +69 +61 +84 +85 +82 +245 +212 +186 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +125 +90 +64 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +125 +52 +227 +126 +50 +234 +125 +52 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +81 +73 +62 +63 +74 +74 +227 +196 +175 +255 +215 +190 +253 +212 +188 +255 +215 +190 +146 +135 +124 +48 +58 +59 +146 +97 +64 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +139 +96 +61 +48 +58 +59 +146 +135 +124 +255 +215 +190 +253 +212 +188 +255 +215 +190 +217 +187 +166 +55 +66 +67 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +163 +104 +61 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +167 +142 +123 +248 +180 +134 +247 +165 +111 +249 +159 +103 +246 +156 +93 +249 +159 +103 +249 +174 +124 +239 +182 +144 +77 +85 +81 +65 +67 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +135 +94 +64 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +146 +135 +124 +227 +196 +175 +43 +57 +62 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +106 +82 +65 +70 +79 +77 +253 +212 +188 +176 +156 +141 +41 +58 +57 +125 +90 +64 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +227 +126 +50 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +155 +100 +63 +48 +58 +59 +120 +114 +108 +253 +212 +188 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +252 +185 +144 +245 +169 +119 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +251 +192 +154 +109 +106 +99 +62 +63 +61 +188 +112 +56 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +212 +120 +56 +199 +115 +54 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +243 +101 +2 +243 +101 +2 +247 +103 +7 +247 +111 +26 +247 +111 +26 +247 +123 +41 +247 +130 +60 +243 +141 +78 +249 +159 +103 +250 +176 +132 +251 +192 +154 +207 +178 +158 +154 +133 +118 +82 +69 +65 +24 +22 +23 +71 +60 +43 +101 +83 +47 +101 +83 +47 +101 +83 +47 +117 +98 +55 +145 +114 +49 +171 +129 +45 +168 +127 +42 +160 +120 +43 +160 +120 +43 +158 +125 +46 +192 +155 +91 +237 +233 +225 +81 +77 +76 +55 +48 +48 +74 +68 +68 +81 +77 +76 +89 +84 +82 +91 +92 +89 +89 +84 +82 +81 +77 +76 +65 +58 +56 +47 +40 +38 +35 +31 +30 +55 +48 +48 +115 +102 +92 +172 +150 +134 +55 +48 +48 +24 +22 +23 +24 +22 +23 +24 +22 +23 +65 +58 +56 +230 +173 +136 +251 +192 +154 +250 +197 +158 +250 +200 +166 +84 +85 +82 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +83 +78 +61 +69 +69 +61 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +117 +98 +55 +48 +58 +59 +101 +100 +92 +238 +205 +179 +253 +204 +176 +250 +200 +166 +253 +204 +176 +238 +205 +179 +91 +92 +89 +51 +62 +63 +117 +98 +55 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +145 +114 +49 +75 +74 +61 +48 +58 +59 +172 +150 +134 +253 +212 +188 +255 +215 +190 +234 +204 +183 +84 +85 +82 +56 +64 +60 +129 +106 +52 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +81 +73 +62 +63 +69 +60 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +84 +85 +82 +255 +215 +190 +245 +212 +186 +109 +106 +99 +51 +62 +63 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +171 +129 +45 +105 +93 +60 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +62 +63 +61 +137 +127 +115 +255 +215 +190 +255 +215 +190 +227 +196 +175 +77 +85 +81 +56 +64 +60 +129 +106 +52 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +137 +110 +49 +69 +69 +61 +51 +62 +63 +187 +166 +150 +255 +215 +190 +172 +150 +134 +51 +62 +63 +194 +112 +58 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +209 +117 +53 +89 +75 +66 +48 +58 +59 +187 +166 +150 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +109 +106 +99 +48 +58 +59 +135 +94 +64 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +43 +57 +62 +120 +114 +108 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +172 +150 +134 +41 +58 +57 +106 +82 +65 +214 +121 +50 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +183 +110 +59 +48 +58 +59 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +188 +112 +56 +51 +62 +63 +109 +106 +99 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +178 +146 +122 +245 +169 +119 +246 +156 +93 +247 +150 +84 +249 +146 +83 +247 +150 +84 +249 +159 +103 +249 +174 +124 +203 +161 +131 +58 +69 +70 +76 +70 +64 +194 +112 +58 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +183 +110 +59 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +146 +135 +124 +217 +187 +166 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +58 +69 +70 +234 +204 +183 +255 +215 +190 +137 +127 +115 +41 +58 +57 +118 +86 +65 +225 +124 +48 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +146 +97 +64 +51 +62 +63 +97 +98 +96 +238 +205 +179 +255 +215 +190 +234 +204 +183 +63 +74 +74 +118 +86 +65 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +81 +73 +62 +101 +100 +92 +250 +176 +132 +247 +165 +111 +246 +156 +93 +249 +152 +92 +249 +159 +103 +251 +168 +115 +252 +185 +144 +217 +187 +166 +58 +69 +70 +69 +69 +61 +199 +115 +54 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +197 +158 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +243 +101 +2 +247 +103 +7 +236 +102 +14 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +243 +141 +78 +249 +159 +103 +249 +174 +124 +249 +189 +146 +253 +204 +176 +124 +111 +99 +35 +31 +30 +145 +114 +49 +175 +132 +40 +171 +129 +45 +168 +127 +42 +192 +155 +91 +216 +194 +154 +224 +207 +180 +224 +207 +180 +216 +194 +154 +216 +194 +154 +239 +227 +208 +253 +255 +252 +253 +255 +252 +186 +181 +179 +146 +135 +124 +120 +114 +108 +109 +106 +99 +95 +78 +64 +71 +60 +43 +85 +71 +43 +101 +83 +47 +108 +87 +46 +35 +31 +30 +150 +125 +114 +227 +196 +175 +255 +215 +190 +253 +212 +188 +212 +173 +150 +121 +100 +85 +95 +78 +64 +129 +102 +78 +234 +168 +124 +250 +176 +132 +250 +176 +132 +248 +180 +134 +249 +189 +146 +124 +111 +99 +62 +63 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +145 +114 +49 +56 +64 +60 +43 +57 +62 +83 +78 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +152 +119 +47 +95 +87 +59 +48 +58 +59 +101 +100 +92 +236 +186 +153 +251 +192 +154 +252 +185 +144 +248 +180 +134 +245 +179 +138 +249 +189 +146 +236 +186 +153 +101 +100 +92 +48 +58 +59 +88 +82 +59 +137 +110 +49 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +145 +114 +49 +100 +89 +56 +56 +64 +60 +58 +69 +70 +172 +150 +134 +250 +200 +166 +251 +192 +154 +250 +197 +158 +250 +200 +166 +217 +187 +166 +84 +85 +82 +51 +62 +63 +105 +93 +60 +158 +125 +46 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +152 +119 +47 +83 +78 +61 +43 +57 +62 +48 +58 +59 +129 +106 +52 +175 +132 +40 +171 +129 +45 +158 +125 +46 +63 +69 +60 +120 +114 +108 +255 +215 +190 +255 +215 +190 +227 +196 +175 +84 +85 +82 +51 +62 +63 +105 +93 +60 +158 +125 +46 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +158 +125 +46 +105 +93 +60 +48 +58 +59 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +172 +150 +134 +91 +92 +89 +75 +74 +61 +168 +127 +42 +171 +129 +45 +175 +132 +40 +117 +98 +55 +48 +58 +59 +176 +156 +141 +253 +204 +176 +253 +204 +176 +253 +204 +176 +217 +187 +166 +84 +85 +82 +48 +58 +59 +95 +87 +59 +145 +114 +49 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +158 +125 +46 +137 +110 +49 +95 +87 +59 +51 +62 +63 +70 +79 +77 +187 +166 +150 +251 +209 +178 +251 +209 +178 +207 +178 +158 +43 +57 +62 +135 +94 +64 +238 +123 +45 +234 +126 +45 +234 +126 +45 +118 +86 +65 +35 +56 +60 +56 +64 +60 +155 +100 +63 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +126 +45 +227 +126 +50 +163 +104 +61 +76 +70 +64 +51 +62 +63 +167 +142 +123 +251 +192 +154 +248 +180 +134 +249 +174 +124 +249 +174 +124 +250 +176 +132 +245 +179 +138 +236 +186 +153 +109 +106 +99 +41 +58 +57 +95 +78 +64 +183 +110 +59 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +227 +126 +50 +183 +110 +59 +95 +78 +64 +43 +57 +62 +124 +111 +99 +236 +186 +153 +252 +185 +144 +250 +176 +132 +249 +174 +124 +249 +174 +124 +248 +180 +134 +251 +192 +154 +154 +133 +118 +43 +57 +62 +81 +73 +62 +173 +106 +60 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +125 +52 +155 +100 +63 +56 +64 +60 +35 +56 +60 +89 +75 +66 +227 +126 +50 +234 +126 +45 +238 +128 +40 +146 +97 +64 +43 +57 +62 +176 +156 +141 +58 +69 +70 +118 +86 +65 +234 +126 +45 +234 +126 +45 +234 +126 +45 +112 +85 +63 +43 +57 +62 +210 +156 +119 +245 +162 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +241 +138 +68 +249 +146 +83 +249 +159 +103 +250 +176 +132 +195 +157 +134 +58 +69 +70 +65 +67 +64 +155 +100 +63 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +173 +106 +60 +65 +67 +64 +35 +56 +60 +106 +82 +65 +234 +126 +45 +234 +126 +45 +238 +128 +40 +146 +97 +64 +43 +57 +62 +187 +166 +150 +234 +204 +183 +55 +66 +67 +106 +82 +65 +234 +126 +45 +234 +125 +52 +234 +125 +52 +224 +123 +55 +81 +73 +62 +91 +92 +89 +245 +212 +186 +253 +212 +188 +253 +212 +188 +137 +127 +115 +41 +58 +57 +89 +75 +66 +173 +106 +60 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +125 +52 +194 +112 +58 +106 +82 +65 +43 +57 +62 +101 +100 +92 +227 +196 +175 +251 +209 +178 +251 +209 +178 +253 +212 +188 +97 +98 +96 +69 +69 +61 +209 +117 +53 +234 +126 +45 +238 +128 +40 +173 +106 +60 +51 +62 +63 +139 +115 +96 +251 +168 +115 +246 +156 +93 +247 +150 +84 +249 +146 +83 +249 +152 +92 +247 +165 +111 +248 +180 +134 +250 +200 +166 +187 +166 +150 +55 +66 +67 +69 +69 +61 +163 +104 +61 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +126 +45 +199 +115 +54 +95 +78 +64 +35 +56 +60 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +250 +197 +158 +245 +169 +119 +247 +150 +84 +247 +130 +60 +247 +118 +39 +235 +107 +16 +243 +101 +2 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +246 +97 +3 +237 +95 +0 +243 +101 +2 +247 +103 +7 +236 +102 +14 +247 +111 +26 +246 +116 +28 +238 +123 +45 +241 +132 +59 +247 +143 +74 +246 +156 +93 +245 +169 +119 +230 +173 +136 +47 +40 +38 +59 +50 +39 +168 +127 +42 +161 +127 +40 +160 +120 +43 +192 +155 +91 +255 +238 +227 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +239 +227 +208 +170 +137 +67 +171 +129 +45 +171 +129 +45 +171 +129 +45 +59 +50 +39 +154 +133 +118 +250 +200 +166 +250 +197 +158 +249 +189 +146 +248 +180 +134 +249 +174 +124 +247 +165 +111 +247 +165 +111 +245 +162 +103 +249 +159 +103 +245 +162 +103 +247 +165 +111 +249 +174 +124 +203 +161 +131 +55 +66 +67 +69 +69 +61 +111 +94 +57 +105 +93 +60 +69 +69 +61 +63 +74 +74 +137 +127 +115 +51 +62 +63 +62 +63 +61 +95 +87 +59 +129 +106 +52 +137 +110 +49 +137 +110 +49 +123 +102 +54 +95 +87 +59 +62 +63 +61 +51 +62 +63 +133 +120 +107 +239 +182 +144 +248 +180 +134 +245 +169 +119 +247 +165 +111 +249 +159 +103 +245 +162 +103 +251 +168 +115 +250 +176 +132 +239 +182 +144 +154 +133 +118 +63 +74 +74 +51 +62 +63 +75 +74 +61 +105 +93 +60 +123 +102 +54 +137 +110 +49 +137 +110 +49 +137 +110 +49 +123 +102 +54 +100 +89 +56 +75 +74 +61 +56 +64 +60 +55 +66 +67 +124 +111 +99 +219 +170 +138 +252 +185 +144 +250 +176 +132 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +236 +186 +153 +124 +111 +99 +48 +58 +59 +63 +69 +60 +95 +87 +59 +123 +102 +54 +137 +110 +49 +137 +110 +49 +129 +106 +52 +95 +87 +59 +62 +63 +61 +55 +66 +67 +146 +135 +124 +77 +85 +81 +61 +67 +58 +105 +93 +60 +111 +94 +57 +75 +74 +61 +48 +58 +59 +194 +173 +157 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +120 +114 +108 +43 +57 +62 +69 +69 +61 +100 +89 +56 +129 +106 +52 +137 +110 +49 +137 +110 +49 +129 +106 +52 +105 +93 +60 +69 +69 +61 +48 +58 +59 +77 +85 +81 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +187 +166 +150 +187 +166 +150 +48 +58 +59 +75 +74 +61 +111 +94 +57 +95 +87 +59 +56 +64 +60 +99 +90 +79 +239 +182 +144 +252 +185 +144 +245 +179 +138 +252 +185 +144 +249 +189 +146 +236 +186 +153 +137 +127 +115 +55 +66 +67 +56 +64 +60 +83 +78 +61 +111 +94 +57 +129 +106 +52 +137 +110 +49 +137 +110 +49 +129 +106 +52 +117 +98 +55 +95 +87 +59 +69 +69 +61 +51 +62 +63 +63 +74 +74 +133 +120 +107 +236 +186 +153 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +197 +158 +124 +111 +99 +51 +62 +63 +112 +85 +63 +146 +97 +64 +106 +82 +65 +48 +58 +59 +120 +114 +108 +101 +100 +92 +48 +58 +59 +95 +78 +64 +146 +97 +64 +183 +110 +59 +188 +112 +56 +173 +106 +60 +139 +96 +61 +89 +75 +66 +48 +58 +59 +77 +85 +81 +186 +157 +134 +245 +179 +138 +245 +169 +119 +245 +162 +103 +246 +156 +93 +246 +156 +93 +246 +156 +93 +247 +165 +111 +249 +174 +124 +249 +189 +146 +154 +133 +118 +58 +69 +70 +51 +62 +63 +95 +78 +64 +139 +96 +61 +173 +106 +60 +183 +110 +59 +183 +110 +59 +173 +106 +60 +139 +96 +61 +95 +78 +64 +51 +62 +63 +63 +74 +74 +167 +142 +123 +249 +189 +146 +249 +174 +124 +247 +165 +111 +246 +156 +93 +246 +156 +93 +246 +156 +93 +245 +162 +103 +245 +169 +119 +245 +179 +138 +178 +146 +122 +70 +79 +77 +48 +58 +59 +89 +75 +66 +139 +96 +61 +173 +106 +60 +188 +112 +56 +183 +110 +59 +155 +100 +63 +95 +78 +64 +48 +58 +59 +101 +100 +92 +146 +135 +124 +48 +58 +59 +95 +78 +64 +146 +97 +64 +125 +90 +64 +62 +63 +61 +101 +100 +92 +245 +212 +186 +137 +127 +115 +48 +58 +59 +106 +82 +65 +146 +97 +64 +106 +82 +65 +48 +58 +59 +124 +111 +99 +247 +165 +111 +247 +150 +84 +241 +138 +68 +241 +132 +59 +247 +130 +53 +247 +130 +53 +242 +133 +67 +241 +145 +79 +245 +162 +103 +250 +176 +132 +203 +161 +131 +91 +92 +89 +43 +57 +62 +81 +73 +62 +135 +94 +64 +173 +106 +60 +188 +112 +56 +183 +110 +59 +155 +100 +63 +106 +82 +65 +51 +62 +63 +91 +92 +89 +133 +120 +107 +48 +58 +59 +95 +78 +64 +146 +97 +64 +118 +86 +65 +56 +64 +60 +101 +100 +92 +245 +212 +186 +253 +212 +188 +146 +135 +124 +48 +58 +59 +118 +86 +65 +183 +110 +59 +173 +106 +60 +95 +78 +64 +43 +57 +62 +186 +157 +134 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +172 +150 +134 +70 +79 +77 +48 +58 +59 +89 +75 +66 +135 +94 +64 +163 +104 +61 +183 +110 +59 +183 +110 +59 +173 +106 +60 +146 +97 +64 +95 +78 +64 +56 +64 +60 +55 +66 +67 +150 +125 +114 +236 +186 +153 +251 +192 +154 +249 +189 +146 +249 +189 +146 +251 +192 +154 +195 +157 +134 +51 +62 +63 +76 +70 +64 +139 +96 +61 +125 +90 +64 +65 +67 +64 +76 +78 +76 +234 +168 +124 +249 +159 +103 +247 +150 +84 +243 +141 +78 +247 +143 +74 +247 +150 +84 +249 +159 +103 +250 +176 +132 +250 +197 +158 +255 +215 +190 +207 +178 +158 +84 +85 +82 +48 +58 +59 +89 +75 +66 +146 +97 +64 +173 +106 +60 +183 +110 +59 +183 +110 +59 +163 +104 +61 +118 +86 +65 +62 +63 +61 +58 +69 +70 +63 +74 +74 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +135 +94 +64 +58 +69 +70 +251 +192 +154 +245 +169 +119 +249 +146 +83 +247 +130 +53 +238 +116 +34 +235 +107 +16 +243 +101 +2 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +243 +101 +2 +236 +102 +14 +236 +102 +14 +235 +107 +16 +246 +116 +28 +239 +117 +44 +241 +132 +59 +247 +143 +74 +249 +152 +92 +214 +151 +109 +118 +86 +65 +146 +111 +88 +192 +155 +91 +192 +155 +91 +195 +167 +113 +239 +227 +208 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +216 +194 +154 +192 +155 +91 +192 +155 +91 +192 +155 +91 +146 +111 +88 +162 +125 +96 +250 +176 +132 +245 +169 +119 +247 +165 +111 +249 +159 +103 +246 +156 +93 +247 +150 +84 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +145 +79 +247 +150 +84 +249 +159 +103 +245 +169 +119 +187 +140 +108 +89 +84 +82 +48 +58 +59 +48 +58 +59 +91 +92 +89 +194 +173 +157 +255 +215 +190 +207 +178 +158 +109 +106 +99 +51 +62 +63 +48 +58 +59 +51 +62 +63 +48 +58 +59 +48 +58 +59 +55 +66 +67 +124 +111 +99 +203 +161 +131 +248 +180 +134 +245 +169 +119 +249 +159 +103 +247 +150 +84 +243 +141 +78 +243 +141 +78 +243 +141 +78 +247 +150 +84 +249 +159 +103 +245 +169 +119 +248 +180 +134 +219 +170 +138 +154 +133 +118 +84 +85 +82 +51 +62 +63 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +48 +58 +59 +55 +66 +67 +91 +92 +89 +154 +133 +118 +209 +171 +139 +245 +179 +138 +249 +174 +124 +247 +165 +111 +249 +159 +103 +246 +156 +93 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +252 +185 +144 +195 +157 +134 +109 +106 +99 +55 +66 +67 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +51 +62 +63 +109 +106 +99 +207 +178 +158 +255 +215 +190 +217 +187 +166 +91 +92 +89 +51 +62 +63 +48 +58 +59 +76 +78 +76 +172 +150 +134 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +101 +100 +92 +51 +62 +63 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +48 +58 +59 +97 +98 +96 +194 +173 +157 +146 +135 +124 +56 +64 +60 +145 +114 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +194 +173 +157 +255 +215 +190 +176 +156 +141 +76 +78 +76 +48 +58 +59 +55 +66 +67 +115 +102 +92 +234 +168 +124 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +245 +179 +138 +209 +171 +139 +144 +125 +110 +76 +78 +76 +48 +58 +59 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +48 +58 +59 +58 +69 +70 +101 +100 +92 +154 +133 +118 +219 +170 +138 +252 +185 +144 +248 +180 +134 +249 +174 +124 +245 +169 +119 +249 +174 +124 +250 +176 +132 +230 +173 +136 +124 +111 +99 +55 +66 +67 +43 +57 +62 +58 +69 +70 +137 +127 +115 +245 +212 +186 +245 +212 +186 +161 +144 +134 +70 +79 +77 +43 +57 +62 +51 +62 +63 +51 +62 +63 +48 +58 +59 +43 +57 +62 +84 +85 +82 +154 +133 +118 +240 +181 +138 +249 +174 +124 +247 +165 +111 +249 +152 +92 +243 +141 +78 +241 +138 +68 +242 +133 +67 +241 +138 +68 +241 +145 +79 +246 +156 +93 +247 +165 +111 +250 +176 +132 +219 +170 +138 +144 +125 +110 +77 +85 +81 +43 +57 +62 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +77 +85 +81 +150 +125 +114 +219 +170 +138 +250 +176 +132 +247 +165 +111 +246 +156 +93 +241 +145 +79 +241 +138 +68 +241 +138 +68 +241 +138 +68 +243 +141 +78 +249 +152 +92 +247 +165 +111 +250 +176 +132 +230 +173 +136 +154 +133 +118 +77 +85 +81 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +70 +79 +77 +161 +144 +134 +245 +212 +186 +255 +215 +190 +161 +144 +134 +63 +74 +74 +43 +57 +62 +51 +62 +63 +109 +106 +99 +217 +187 +166 +251 +209 +178 +238 +205 +179 +137 +127 +115 +58 +69 +70 +43 +57 +62 +58 +69 +70 +139 +115 +96 +238 +159 +107 +249 +152 +92 +241 +138 +68 +247 +130 +53 +238 +123 +45 +239 +117 +44 +247 +118 +39 +238 +123 +45 +241 +132 +59 +241 +145 +79 +249 +159 +103 +249 +174 +124 +240 +181 +138 +167 +142 +123 +91 +92 +89 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +63 +74 +74 +137 +127 +115 +234 +204 +183 +255 +215 +190 +146 +135 +124 +63 +74 +74 +43 +57 +62 +51 +62 +63 +115 +102 +92 +236 +186 +153 +251 +192 +154 +251 +192 +154 +236 +186 +153 +133 +120 +107 +43 +57 +62 +48 +58 +59 +48 +58 +59 +55 +66 +67 +158 +130 +108 +248 +180 +134 +250 +176 +132 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +239 +182 +144 +154 +133 +118 +84 +85 +82 +43 +57 +62 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +70 +79 +77 +133 +120 +107 +219 +170 +138 +245 +179 +138 +250 +176 +132 +245 +169 +119 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +187 +140 +108 +81 +77 +76 +43 +57 +62 +43 +57 +62 +99 +90 +79 +214 +151 +109 +249 +159 +103 +247 +150 +84 +247 +143 +74 +241 +138 +68 +241 +138 +68 +249 +146 +83 +249 +159 +103 +250 +176 +132 +250 +197 +158 +255 +215 +190 +255 +215 +190 +245 +212 +186 +161 +144 +134 +77 +85 +81 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +41 +58 +57 +55 +66 +67 +120 +114 +108 +217 +187 +166 +97 +98 +96 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +70 +79 +77 +249 +189 +146 +247 +165 +111 +243 +141 +78 +247 +130 +53 +238 +116 +34 +236 +102 +14 +243 +101 +2 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +247 +165 +111 +249 +174 +124 +250 +176 +132 +245 +179 +138 +252 +185 +144 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +252 +185 +144 +245 +179 +138 +250 +176 +132 +249 +174 +124 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +242 +133 +67 +243 +141 +78 +241 +145 +86 +249 +159 +103 +238 +159 +107 +210 +156 +119 +210 +156 +119 +240 +181 +138 +249 +189 +146 +251 +192 +154 +251 +192 +154 +250 +197 +158 +212 +173 +150 +186 +157 +134 +167 +142 +123 +167 +142 +123 +195 +157 +134 +219 +170 +138 +248 +180 +134 +245 +169 +119 +245 +162 +103 +247 +150 +84 +243 +141 +78 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +138 +68 +247 +150 +84 +245 +162 +103 +245 +169 +119 +250 +176 +132 +239 +182 +144 +219 +170 +138 +186 +157 +134 +167 +142 +123 +167 +142 +123 +172 +150 +134 +195 +157 +134 +219 +170 +138 +239 +182 +144 +248 +180 +134 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +79 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +145 +79 +241 +153 +96 +247 +165 +111 +249 +174 +124 +245 +179 +138 +219 +170 +138 +186 +157 +134 +167 +142 +123 +167 +142 +123 +186 +157 +134 +212 +173 +150 +250 +197 +158 +251 +192 +154 +251 +192 +154 +249 +189 +146 +239 +182 +144 +219 +170 +138 +219 +170 +138 +239 +182 +144 +250 +197 +158 +250 +200 +166 +251 +209 +178 +238 +205 +179 +172 +150 +134 +137 +127 +115 +161 +144 +134 +217 +187 +166 +253 +212 +188 +227 +196 +175 +194 +173 +157 +176 +156 +141 +172 +150 +134 +187 +166 +150 +217 +187 +166 +255 +215 +190 +245 +212 +186 +76 +78 +76 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +58 +69 +70 +217 +187 +166 +255 +215 +190 +253 +204 +176 +236 +186 +153 +210 +156 +119 +210 +156 +119 +247 +165 +111 +249 +159 +103 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +145 +79 +247 +150 +84 +241 +153 +96 +245 +162 +103 +245 +169 +119 +248 +180 +134 +239 +182 +144 +209 +171 +139 +186 +157 +134 +167 +142 +123 +167 +142 +123 +178 +146 +122 +195 +157 +134 +230 +173 +136 +239 +182 +144 +250 +176 +132 +245 +169 +119 +247 +165 +111 +249 +159 +103 +241 +153 +96 +249 +152 +92 +249 +152 +92 +241 +153 +96 +245 +162 +103 +247 +165 +111 +210 +156 +119 +210 +156 +119 +230 +173 +136 +249 +189 +146 +249 +189 +146 +251 +192 +154 +250 +197 +158 +236 +186 +153 +203 +161 +131 +167 +142 +123 +167 +142 +123 +178 +146 +122 +203 +161 +131 +240 +181 +138 +249 +174 +124 +247 +165 +111 +241 +153 +96 +243 +141 +78 +242 +133 +67 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +249 +159 +103 +245 +169 +119 +250 +176 +132 +240 +181 +138 +209 +171 +139 +178 +146 +122 +167 +142 +123 +167 +142 +123 +186 +157 +134 +209 +171 +139 +240 +181 +138 +250 +176 +132 +245 +169 +119 +249 +159 +103 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +238 +123 +45 +238 +123 +45 +247 +130 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +247 +165 +111 +250 +176 +132 +240 +181 +138 +203 +161 +131 +178 +146 +122 +167 +142 +123 +167 +142 +123 +195 +157 +134 +236 +186 +153 +251 +192 +154 +251 +192 +154 +249 +189 +146 +249 +189 +146 +230 +173 +136 +203 +161 +131 +219 +170 +138 +245 +179 +138 +245 +179 +138 +245 +179 +138 +245 +179 +138 +248 +180 +134 +234 +168 +124 +214 +151 +109 +214 +151 +109 +245 +162 +103 +241 +145 +86 +241 +138 +68 +238 +123 +53 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +238 +116 +34 +238 +123 +45 +241 +132 +59 +243 +141 +78 +241 +153 +96 +247 +165 +111 +249 +174 +124 +240 +181 +138 +209 +171 +139 +178 +146 +122 +167 +142 +123 +167 +142 +123 +195 +157 +134 +236 +186 +153 +250 +197 +158 +251 +192 +154 +249 +189 +146 +249 +189 +146 +230 +173 +136 +210 +156 +119 +210 +156 +119 +250 +176 +132 +249 +174 +124 +249 +174 +124 +249 +174 +124 +249 +174 +124 +250 +176 +132 +210 +156 +119 +162 +125 +96 +162 +125 +96 +214 +151 +109 +247 +165 +111 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +159 +103 +247 +165 +111 +245 +169 +119 +250 +176 +132 +240 +181 +138 +209 +171 +139 +186 +157 +134 +167 +142 +123 +167 +142 +123 +178 +146 +122 +203 +161 +131 +239 +182 +144 +248 +180 +134 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +145 +86 +241 +145 +86 +247 +150 +84 +241 +153 +96 +245 +162 +103 +238 +159 +107 +204 +141 +99 +214 +151 +109 +241 +153 +96 +249 +152 +92 +243 +141 +78 +242 +133 +67 +241 +132 +59 +241 +132 +59 +241 +138 +68 +241 +145 +79 +245 +162 +103 +248 +180 +134 +212 +173 +150 +146 +135 +124 +137 +127 +115 +176 +156 +141 +234 +204 +183 +253 +212 +188 +217 +187 +166 +187 +166 +150 +172 +150 +134 +176 +156 +141 +194 +173 +157 +234 +204 +183 +255 +215 +190 +194 +173 +157 +43 +57 +62 +139 +96 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +245 +179 +138 +245 +162 +103 +241 +138 +68 +238 +123 +45 +236 +108 +29 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +79 +249 +152 +92 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +243 +141 +78 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +132 +59 +238 +123 +53 +239 +117 +44 +238 +116 +34 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +249 +174 +124 +250 +176 +132 +250 +176 +132 +250 +176 +132 +249 +174 +124 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +242 +133 +67 +241 +132 +59 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +241 +132 +59 +242 +133 +67 +243 +141 +78 +249 +152 +92 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +245 +179 +138 +251 +192 +154 +232 +190 +161 +101 +100 +92 +51 +62 +63 +63 +69 +60 +51 +62 +63 +55 +66 +67 +109 +106 +99 +176 +156 +141 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +207 +178 +158 +91 +92 +89 +51 +62 +63 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +91 +92 +89 +245 +212 +186 +250 +200 +166 +252 +185 +144 +249 +174 +124 +247 +165 +111 +241 +153 +96 +241 +145 +79 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +247 +165 +111 +245 +169 +119 +249 +174 +124 +250 +176 +132 +250 +176 +132 +249 +174 +124 +249 +174 +124 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +145 +79 +241 +138 +68 +242 +133 +67 +242 +133 +67 +242 +133 +67 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +245 +162 +103 +241 +153 +96 +241 +145 +79 +241 +138 +68 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +169 +119 +249 +174 +124 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +132 +59 +238 +123 +53 +239 +117 +44 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +169 +119 +249 +174 +124 +249 +174 +124 +249 +174 +124 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +79 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +242 +133 +67 +241 +145 +86 +247 +165 +111 +210 +156 +119 +63 +74 +74 +62 +63 +61 +69 +69 +61 +48 +58 +59 +63 +74 +74 +133 +120 +107 +194 +173 +157 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +176 +156 +141 +55 +66 +67 +76 +70 +64 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +194 +112 +58 +56 +64 +60 +154 +133 +118 +250 +176 +132 +241 +153 +96 +242 +133 +67 +239 +117 +44 +236 +108 +29 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +138 +68 +243 +141 +78 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +132 +59 +242 +133 +67 +241 +138 +68 +243 +141 +78 +243 +141 +78 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +249 +152 +92 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +179 +138 +144 +125 +110 +51 +62 +63 +117 +98 +55 +158 +125 +46 +145 +114 +49 +105 +93 +60 +69 +69 +61 +48 +58 +59 +58 +69 +70 +91 +92 +89 +120 +114 +108 +120 +114 +108 +91 +92 +89 +48 +58 +59 +56 +64 +60 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +48 +58 +59 +161 +144 +134 +250 +197 +158 +248 +180 +134 +247 +165 +111 +241 +153 +96 +241 +145 +79 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +249 +152 +92 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +123 +45 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +138 +68 +241 +138 +68 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +243 +141 +78 +242 +133 +67 +241 +132 +59 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +145 +86 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +45 +239 +117 +44 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +241 +132 +59 +242 +133 +67 +243 +141 +78 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +241 +145 +79 +243 +141 +78 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +238 +123 +45 +238 +123 +53 +242 +133 +67 +241 +138 +68 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +242 +133 +67 +242 +133 +67 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +145 +86 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +86 +238 +159 +107 +84 +85 +82 +69 +69 +61 +188 +112 +56 +214 +121 +50 +173 +106 +60 +112 +85 +63 +62 +63 +61 +41 +58 +57 +63 +74 +74 +97 +98 +96 +120 +114 +108 +109 +106 +99 +77 +85 +81 +41 +58 +57 +81 +73 +62 +194 +112 +58 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +51 +62 +63 +209 +171 +139 +245 +169 +119 +241 +145 +86 +241 +132 +59 +238 +116 +34 +235 +107 +16 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +145 +86 +238 +159 +107 +234 +168 +124 +84 +85 +82 +83 +78 +61 +171 +129 +45 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +129 +106 +52 +100 +89 +56 +83 +78 +61 +75 +74 +61 +69 +69 +61 +83 +78 +61 +105 +93 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +75 +74 +61 +63 +74 +74 +236 +186 +153 +245 +179 +138 +238 +159 +107 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +145 +86 +204 +141 +99 +41 +58 +57 +155 +100 +63 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +125 +52 +209 +117 +53 +155 +100 +63 +118 +86 +65 +89 +75 +66 +81 +73 +62 +81 +73 +62 +106 +82 +65 +155 +100 +63 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +109 +106 +99 +245 +179 +138 +245 +162 +103 +241 +138 +68 +238 +123 +45 +235 +113 +30 +236 +102 +14 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +138 +68 +241 +145 +86 +238 +159 +107 +89 +84 +82 +75 +74 +61 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +95 +87 +59 +48 +58 +59 +167 +142 +123 +245 +179 +138 +238 +159 +107 +241 +145 +86 +242 +133 +67 +238 +123 +45 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +241 +132 +59 +241 +145 +79 +204 +141 +99 +48 +58 +59 +139 +96 +61 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +81 +73 +62 +58 +69 +70 +219 +170 +138 +245 +169 +119 +241 +145 +86 +241 +132 +59 +239 +117 +44 +236 +108 +29 +236 +102 +14 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +229 +102 +7 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +224 +98 +18 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +229 +102 +7 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +236 +108 +29 +239 +117 +44 +234 +125 +52 +231 +136 +72 +241 +153 +96 +162 +125 +96 +48 +58 +59 +95 +87 +59 +158 +125 +46 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +158 +125 +46 +95 +87 +59 +48 +58 +59 +124 +111 +99 +245 +179 +138 +247 +165 +111 +241 +145 +86 +241 +132 +59 +238 +123 +45 +238 +116 +34 +236 +108 +29 +224 +98 +18 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +230 +97 +5 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +235 +94 +9 +235 +94 +9 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +235 +107 +16 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +236 +102 +14 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +235 +94 +9 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +224 +98 +18 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +230 +97 +5 +229 +102 +7 +224 +98 +18 +236 +108 +29 +238 +116 +34 +238 +123 +53 +243 +141 +78 +241 +153 +96 +99 +90 +79 +56 +64 +60 +155 +100 +63 +234 +126 +45 +234 +126 +45 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +194 +112 +58 +81 +73 +62 +48 +58 +59 +178 +146 +122 +249 +174 +124 +241 +153 +96 +231 +136 +72 +234 +125 +52 +238 +116 +34 +235 +107 +16 +229 +102 +7 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +235 +113 +30 +239 +117 +44 +230 +128 +60 +236 +147 +85 +238 +159 +107 +139 +115 +96 +48 +58 +59 +69 +69 +61 +111 +94 +57 +145 +114 +49 +158 +125 +46 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +152 +119 +47 +117 +98 +55 +69 +69 +61 +48 +58 +59 +144 +125 +110 +240 +181 +138 +247 +165 +111 +236 +147 +85 +242 +133 +67 +238 +123 +45 +235 +113 +30 +235 +107 +16 +236 +102 +14 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +235 +107 +16 +235 +113 +30 +238 +123 +45 +242 +133 +67 +241 +153 +96 +214 +151 +109 +99 +90 +79 +48 +58 +59 +95 +78 +64 +155 +100 +63 +209 +117 +53 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +194 +112 +58 +125 +90 +64 +56 +64 +60 +58 +69 +70 +178 +146 +122 +250 +176 +132 +238 +159 +107 +241 +145 +79 +234 +125 +52 +239 +117 +44 +236 +108 +29 +224 +98 +18 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +230 +97 +5 +229 +102 +7 +223 +103 +18 +226 +110 +35 +234 +125 +52 +231 +136 +72 +241 +153 +96 +245 +169 +119 +178 +146 +122 +101 +100 +92 +48 +58 +59 +56 +64 +60 +69 +69 +61 +95 +87 +59 +111 +94 +57 +123 +102 +54 +129 +106 +52 +129 +106 +52 +123 +102 +54 +105 +93 +60 +88 +82 +59 +62 +63 +61 +48 +58 +59 +91 +92 +89 +186 +157 +134 +245 +179 +138 +238 +159 +107 +236 +147 +85 +230 +128 +60 +234 +125 +52 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +224 +98 +18 +236 +108 +29 +239 +117 +44 +230 +123 +57 +243 +141 +78 +238 +159 +107 +234 +168 +124 +158 +130 +108 +76 +78 +76 +41 +58 +57 +62 +63 +61 +95 +78 +64 +125 +90 +64 +146 +97 +64 +163 +104 +61 +173 +106 +60 +163 +104 +61 +155 +100 +63 +125 +90 +64 +95 +78 +64 +56 +64 +60 +43 +57 +62 +124 +111 +99 +209 +171 +139 +234 +168 +124 +238 +159 +107 +241 +145 +79 +230 +128 +60 +239 +117 +44 +236 +108 +29 +236 +102 +14 +229 +102 +7 +230 +97 +5 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +230 +97 +5 +224 +98 +18 +236 +108 +29 +226 +110 +35 +230 +123 +57 +231 +136 +72 +241 +153 +96 +238 +159 +107 +240 +181 +138 +203 +161 +131 +150 +125 +114 +101 +100 +92 +76 +78 +76 +55 +66 +67 +48 +58 +59 +48 +58 +59 +48 +58 +59 +48 +58 +59 +58 +69 +70 +84 +85 +82 +124 +111 +99 +178 +146 +122 +240 +181 +138 +234 +168 +124 +238 +159 +107 +236 +147 +85 +230 +128 +60 +234 +125 +52 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +128 +60 +236 +147 +85 +241 +153 +96 +234 +168 +124 +230 +173 +136 +186 +157 +134 +133 +120 +107 +91 +92 +89 +63 +74 +74 +51 +62 +63 +48 +58 +59 +48 +58 +59 +48 +58 +59 +51 +62 +63 +63 +74 +74 +91 +92 +89 +144 +125 +110 +203 +161 +131 +240 +181 +138 +245 +169 +119 +241 +153 +96 +241 +145 +79 +230 +128 +60 +225 +124 +48 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +239 +117 +44 +230 +123 +57 +231 +136 +72 +236 +147 +85 +238 +159 +107 +245 +169 +119 +234 +168 +124 +240 +181 +138 +239 +182 +144 +236 +186 +153 +250 +197 +158 +250 +197 +158 +250 +197 +158 +251 +192 +154 +236 +186 +153 +239 +182 +144 +245 +179 +138 +234 +168 +124 +238 +159 +107 +241 +153 +96 +231 +136 +72 +230 +128 +60 +225 +124 +48 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +128 +60 +231 +136 +72 +241 +153 +96 +238 +159 +107 +234 +168 +124 +240 +181 +138 +239 +182 +144 +236 +186 +153 +251 +192 +154 +250 +197 +158 +250 +197 +158 +250 +197 +158 +236 +186 +153 +239 +182 +144 +240 +181 +138 +234 +168 +124 +245 +169 +119 +238 +159 +107 +236 +147 +85 +231 +136 +72 +230 +123 +57 +239 +117 +44 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +128 +60 +231 +136 +72 +236 +147 +85 +241 +153 +96 +238 +159 +107 +238 +159 +107 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +238 +159 +107 +238 +159 +107 +241 +153 +96 +236 +147 +85 +231 +136 +72 +230 +128 +60 +230 +123 +57 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +123 +57 +230 +128 +60 +231 +136 +72 +236 +147 +85 +241 +153 +96 +238 +159 +107 +238 +159 +107 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +238 +159 +107 +238 +159 +107 +241 +153 +96 +236 +147 +85 +231 +136 +72 +230 +128 +60 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +128 +60 +230 +128 +60 +231 +136 +72 +231 +136 +72 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +231 +136 +72 +231 +136 +72 +231 +136 +72 +230 +128 +60 +227 +126 +50 +225 +124 +48 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +123 +57 +230 +128 +60 +231 +136 +72 +231 +136 +72 +231 +136 +72 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +231 +136 +72 +231 +136 +72 +230 +128 +60 +230 +123 +57 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +225 +124 +48 +225 +124 +48 +224 +123 +55 +224 +123 +55 +224 +123 +55 +230 +123 +57 +224 +123 +55 +224 +123 +55 +225 +124 +48 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +225 +124 +48 +225 +124 +48 +224 +123 +55 +230 +123 +57 +230 +123 +57 +230 +123 +57 +230 +123 +57 +230 +123 +57 +225 +124 +48 +225 +124 +48 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +223 +103 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/omap3-touchbook/defconfig b/recipes-bsp/linux/linux-omap-2.6.37rc/omap3-touchbook/defconfig new file mode 120000 index 0000000..44e34a7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/omap3-touchbook/defconfig @@ -0,0 +1 @@ +../beagleboard/defconfig \ No newline at end of file diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/omap3evm/defconfig b/recipes-bsp/linux/linux-omap-2.6.37rc/omap3evm/defconfig new file mode 120000 index 0000000..44e34a7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/omap3evm/defconfig @@ -0,0 +1 @@ +../beagleboard/defconfig \ No newline at end of file diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/overo/defconfig b/recipes-bsp/linux/linux-omap-2.6.37rc/overo/defconfig new file mode 120000 index 0000000..44e34a7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/overo/defconfig @@ -0,0 +1 @@ +../beagleboard/defconfig \ No newline at end of file diff --git a/recipes-bsp/linux/linux-omap-2.6.37rc/usrp-e1xx/defconfig b/recipes-bsp/linux/linux-omap-2.6.37rc/usrp-e1xx/defconfig new file mode 120000 index 0000000..44e34a7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-2.6.37rc/usrp-e1xx/defconfig @@ -0,0 +1 @@ +../beagleboard/defconfig \ No newline at end of file diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-BeagleBoard-Adjust-USER-button-pin-for-xM.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-BeagleBoard-Adjust-USER-button-pin-for-xM.patch new file mode 100644 index 0000000..af6c024 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-BeagleBoard-Adjust-USER-button-pin-for-xM.patch @@ -0,0 +1,28 @@ +From 6fc2495bb9f1fa166f7f4190ecd0b988034f54ea Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Sat, 17 Jul 2010 14:28:22 -0500 +Subject: [PATCH] BeagleBoard: Adjust USER button pin for xM + +--- + 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 7c9e40a..f93616b 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -829,6 +829,11 @@ static void __init omap3_beagle_init(void) + { + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); + omap3_beagle_i2c_init(); ++ ++ if (cpu_is_omap3630()) { ++ gpio_buttons[0].gpio = 4; ++ } ++ + platform_add_devices(omap3_beagle_devices, + ARRAY_SIZE(omap3_beagle_devices)); + omap_serial_init(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch new file mode 100644 index 0000000..675501d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch @@ -0,0 +1,67 @@ +From aab782ab0942d6fd654311b937596b24a0ace3c6 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" + +This commit clashes with the other beagle patches we apply on top + +This reverts commit da5b291cba631d303cb137fa6a620c494d828197. +--- + arch/arm/mach-omap2/board-omap3beagle.c | 34 ++---------------------------- + 1 files changed, 3 insertions(+), 31 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 865a8d7..15e48f2 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -56,22 +56,6 @@ + + #define NAND_BLOCK_SIZE SZ_128K + +-#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 */ +- + static struct mtd_partition omap3beagle_nand_partitions[] = { + /* All the partition sizes are listed in terms of NAND block size */ + { +@@ -377,21 +361,9 @@ static void __init omap3_beagle_init_irq(void) + { + omap_board_config = omap3_beagle_config; + omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); +- +- if (cpu_is_omap3630()) { +- omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- mt46h32m32lf6_sdrc_params, +- _omap37x_mpu_rate_table, +- _omap37x_dsp_rate_table, +- _omap37x_l3_rate_table); +- } else { +- omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- mt46h32m32lf6_sdrc_params, +- _omap35x_mpu_rate_table, +- _omap35x_dsp_rate_table, +- _omap35x_l3_rate_table); +- } +- ++ omap2_init_common_hw(mt46h32m32lf6_sdrc_params, ++ mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table, ++ omap3_dsp_rate_table, omap3_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-bsp/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch new file mode 100644 index 0000000..d9fb77b --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch @@ -0,0 +1,61 @@ +From 06352060e3862e2c11719a6ef4ac0ae1b5f5fdf6 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 + +--- + arch/arm/mach-omap2/board-omap3touchbook.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c +index fe3d22c..fc3e03c 100644 +--- a/arch/arm/mach-omap2/board-omap3touchbook.c ++++ b/arch/arm/mach-omap2/board-omap3touchbook.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -48,12 +49,18 @@ + #include + #include + #include ++#include ++#include + + #include "mux.h" + #include "mmc-twl4030.h" + ++#include "pm.h" ++#include "omap3-opp.h" ++ + #include + ++ + #define GPMC_CS0_BASE 0x60 + #define GPMC_CS_SIZE 0x30 + +@@ -78,7 +85,6 @@ static struct mtd_partition omap3touchbook_nand_partitions[] = { + .name = "U-Boot", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ + .size = 15 * NAND_BLOCK_SIZE, +- .mask_flags = MTD_WRITEABLE, /* force read-only */ + }, + { + .name = "U-Boot Env", +@@ -440,7 +446,8 @@ static void __init omap3_touchbook_init_irq(void) + omap_board_config = omap3_touchbook_config; + omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config); + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- mt46h32m32lf6_sdrc_params); ++ 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-bsp/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch new file mode 100644 index 0000000..d2e6763 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch @@ -0,0 +1,135 @@ +From 4afa80923880088a3d6780257ccce72a88884e19 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 + +Signed-off-by: Steve Sakoman +--- + arch/arm/mach-omap2/board-omap3beagle.c | 74 +++++++++++++++++++++++++++++- + 1 files changed, 71 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 15e48f2..a4a793f 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -56,6 +57,49 @@ + + #define NAND_BLOCK_SIZE SZ_128K + ++#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) ++ ++#include ++#include ++ ++#define OMAP3BEAGLE_GPIO_ENC28J60_IRQ 157 ++ ++static struct omap2_mcspi_device_config enc28j60_spi_chip_info = { ++ .turbo_mode = 0, ++ .single_channel = 1, /* 0: slave, 1: master */ ++}; ++ ++static struct spi_board_info omap3beagle_spi_board_info[] __initdata = { ++ { ++ .modalias = "enc28j60", ++ .bus_num = 4, ++ .chip_select = 0, ++ .max_speed_hz = 20000000, ++ .controller_data = &enc28j60_spi_chip_info, ++ }, ++}; ++ ++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); ++ } 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)); ++} ++ ++#else ++static inline void __init omap3beagle_enc28j60_init(void) { return; } ++#endif ++ ++ + static struct mtd_partition omap3beagle_nand_partitions[] = { + /* All the partition sizes are listed in terms of NAND block size */ + { +@@ -118,6 +162,14 @@ static struct twl4030_hsmmc_info mmc[] = { + .wires = 8, + .gpio_wp = 29, + }, ++ { ++ .mmc = 2, ++ .wires = 4, ++ .gpio_wp = 141, ++ .gpio_cd = 162, ++ .transceiver = true, ++ .ocr_mask = 0x00100000, /* 3.3V */ ++ }, + {} /* Terminator */ + }; + +@@ -281,7 +333,7 @@ static struct twl4030_platform_data beagle_twldata = { + .vpll2 = &beagle_vpll2, + }; + +-static struct i2c_board_info __initdata beagle_i2c_boardinfo[] = { ++static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { + { + I2C_BOARD_INFO("twl4030", 0x48), + .flags = I2C_CLIENT_WAKE, +@@ -290,10 +342,24 @@ static struct i2c_board_info __initdata beagle_i2c_boardinfo[] = { + }, + }; + ++#if defined(CONFIG_RTC_DRV_DS1307) || \ ++ defined(CONFIG_RTC_DRV_DS1307_MODULE) ++ ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++ { ++ I2C_BOARD_INFO("ds1307", 0x68), ++ }, ++}; ++#else ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; ++#endif ++ + static int __init omap3_beagle_i2c_init(void) + { +- omap_register_i2c_bus(1, 2600, beagle_i2c_boardinfo, +- ARRAY_SIZE(beagle_i2c_boardinfo)); ++ 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)); + /* 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); +@@ -453,6 +519,8 @@ static void __init omap3_beagle_init(void) + /* REVISIT leave DVI powered down until it's needed ... */ + gpio_direction_output(170, true); + ++ omap3beagle_enc28j60_init(); ++ + usb_musb_init(); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch new file mode 100644 index 0000000..97439a0 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch @@ -0,0 +1,24 @@ +From ef987a45a496dad17bafb2dead78513a7f820dc8 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 + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index a4a793f..4b2dd65 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -112,7 +112,6 @@ static struct mtd_partition omap3beagle_nand_partitions[] = { + .name = "U-Boot", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ + .size = 15 * NAND_BLOCK_SIZE, +- .mask_flags = MTD_WRITEABLE, /* force read-only */ + }, + { + .name = "U-Boot Env", +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch new file mode 100644 index 0000000..02c3fba --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch @@ -0,0 +1,200 @@ +From 3915909dbac222212ee97bd6c8057df442a85bd3 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 + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 130 ++++++++++++++++++++++++------- + 1 files changed, 103 insertions(+), 27 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 4b2dd65..79d43d0 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -40,6 +40,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -153,6 +154,105 @@ static struct platform_device omap3beagle_nand_device = { + .resource = &omap3beagle_nand_resource, + }; + ++/* DSS */ ++ ++static int beagle_enable_dvi(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->reset_gpio != -1) ++ gpio_set_value(dssdev->reset_gpio, 1); ++ ++ return 0; ++} ++ ++static void beagle_disable_dvi(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->reset_gpio != -1) ++ gpio_set_value(dssdev->reset_gpio, 0); ++} ++ ++static struct omap_dss_device beagle_dvi_device = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .driver_name = "generic_panel", ++ .phy.dpi.data_lines = 24, ++ .reset_gpio = 170, ++ .platform_enable = beagle_enable_dvi, ++ .platform_disable = beagle_disable_dvi, ++}; ++ ++static int beagle_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 beagle_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 beagle_tv_device = { ++ .name = "tv", ++ .driver_name = "venc", ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .platform_enable = beagle_panel_enable_tv, ++ .platform_disable = beagle_panel_disable_tv, ++}; ++ ++static struct omap_dss_device *beagle_dss_devices[] = { ++ &beagle_dvi_device, ++ &beagle_tv_device, ++}; ++ ++static struct omap_dss_board_info beagle_dss_data = { ++ .num_devices = ARRAY_SIZE(beagle_dss_devices), ++ .devices = beagle_dss_devices, ++ .default_device = &beagle_dvi_device, ++}; ++ ++static struct platform_device beagle_dss_device = { ++ .name = "omapdss", ++ .id = -1, ++ .dev = { ++ .platform_data = &beagle_dss_data, ++ }, ++}; ++ ++static struct regulator_consumer_supply beagle_vdac_supply = { ++ .supply = "vdda_dac", ++ .dev = &beagle_dss_device.dev, ++}; ++ ++static struct regulator_consumer_supply beagle_vdvi_supply = { ++ .supply = "vdds_dsi", ++ .dev = &beagle_dss_device.dev, ++}; ++ ++static void __init beagle_display_init(void) ++{ ++ int r; ++ ++ r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); ++ if (r < 0) { ++ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); ++ return; ++ } ++ ++ gpio_direction_output(beagle_dvi_device.reset_gpio, 0); ++} ++ + #include "sdram-micron-mt46h32m32lf-6.h" + + static struct twl4030_hsmmc_info mmc[] = { +@@ -172,15 +272,6 @@ static struct twl4030_hsmmc_info mmc[] = { + {} /* Terminator */ + }; + +-static struct platform_device omap3_beagle_lcd_device = { +- .name = "omap3beagle_lcd", +- .id = -1, +-}; +- +-static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct regulator_consumer_supply beagle_vmmc1_supply = { + .supply = "vmmc", + }; +@@ -236,16 +327,6 @@ static struct twl4030_gpio_platform_data beagle_gpio_data = { + .setup = beagle_twl_gpio_setup, + }; + +-static struct regulator_consumer_supply beagle_vdac_supply = { +- .supply = "vdac", +- .dev = &omap3_beagle_lcd_device.dev, +-}; +- +-static struct regulator_consumer_supply beagle_vdvi_supply = { +- .supply = "vdvi", +- .dev = &omap3_beagle_lcd_device.dev, +-}; +- + /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ + static struct regulator_init_data beagle_vmmc1 = { + .constraints = { +@@ -418,14 +499,8 @@ static struct platform_device keys_gpio = { + }, + }; + +-static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { +- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, +-}; +- + static void __init omap3_beagle_init_irq(void) + { +- omap_board_config = omap3_beagle_config; +- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, + mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table, + omap3_dsp_rate_table, omap3_l3_rate_table); +@@ -437,9 +512,9 @@ static void __init omap3_beagle_init_irq(void) + } + + static struct platform_device *omap3_beagle_devices[] __initdata = { +- &omap3_beagle_lcd_device, + &leds_gpio, + &keys_gpio, ++ &beagle_dss_device, + }; + + static void __init omap3beagle_flash_init(void) +@@ -527,8 +602,9 @@ static void __init omap3_beagle_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); +-} + ++ beagle_display_init(); ++} + static void __init omap3_beagle_map_io(void) + { + omap2_set_globals_343x(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch new file mode 100644 index 0000000..10e728b --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch @@ -0,0 +1,103 @@ +From f8b1eeb8f3dc580f24b5d2a2b140c74cfa88c5eb Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 27 Jan 2010 21:57:13 +0100 +Subject: [PATCH 06/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 + * 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 79d43d0..b1e4d73 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-bsp/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch new file mode 100644 index 0000000..feea7fe --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch @@ -0,0 +1,172 @@ +From 902bf175d5050e9f9892b594bd6093b65c1be8cc Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 14:41:29 +0200 +Subject: [PATCH 07/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 b1e4d73..8223763 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); +@@ -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-bsp/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch new file mode 100644 index 0000000..3cf6d8d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch @@ -0,0 +1,57 @@ +From 35b951339ea47b542c548e102768817d4123a24b Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 21:38:34 +0200 +Subject: [PATCH 08/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 8223763..abbc1b2 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-bsp/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch new file mode 100644 index 0000000..3729aec --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch @@ -0,0 +1,76 @@ +From 9b98719bf7787f1ec8eef6b09cb5b94100de7d12 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 22:31:34 +0200 +Subject: [PATCH 09/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 abbc1b2..cb11b07 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-bsp/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch new file mode 100644 index 0000000..89bd4ee --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch @@ -0,0 +1,3323 @@ +From f1e6a762a7bf8d7ff7700011f60a005f28025239 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 27 Apr 2010 10:51:15 +0200 +Subject: [PATCH 10/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-bsp/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch new file mode 100644 index 0000000..75cbf5c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch @@ -0,0 +1,27 @@ +From d9b1154227bf4fde9b08d3d5d427ef6e56e9cae1 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 12:45:20 -0800 +Subject: [PATCH 11/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-bsp/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch new file mode 100644 index 0000000..0c75a14 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch @@ -0,0 +1,35 @@ +From 20276b3c5eb8dabc7169aee30ad38f9308a0572f Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 31 Dec 2009 07:05:02 -0800 +Subject: [PATCH 12/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-bsp/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch new file mode 100644 index 0000000..f89d8cb --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch @@ -0,0 +1,44 @@ +From 37bcddac7dbfe61576489e4c55b32d8b45eb1c5a Mon Sep 17 00:00:00 2001 +From: Sudeep Basavaraj +Date: Tue, 5 Jan 2010 18:58:18 +0530 +Subject: [PATCH 13/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-bsp/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch new file mode 100644 index 0000000..0f69e58 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch @@ -0,0 +1,75 @@ +From d03b9f3dc00274820bed99cc22d8425d6bf0e7b4 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 19 Jan 2010 21:19:15 -0800 +Subject: [PATCH 14/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 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 7f47a34..0fe87e0 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-bsp/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch new file mode 100644 index 0000000..ce57880 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch @@ -0,0 +1,133 @@ +From a30000387ff4ec1ab0ca46c2429bfd184210bb24 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 11 Feb 2010 21:34:00 +0100 +Subject: [PATCH 15/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-bsp/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch new file mode 100644 index 0000000..923efee --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch @@ -0,0 +1,110 @@ +From 0edbb992b0bc4e6a1b39d760695a4857b9b7ffa7 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 14:59:42 -0800 +Subject: [PATCH 16/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-bsp/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch new file mode 100644 index 0000000..89812cc --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch @@ -0,0 +1,29 @@ +From 5c527b02d8511b5210bdddc6fcfd009bfcaff3d7 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:17:44 -0800 +Subject: [PATCH 17/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-bsp/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch new file mode 100644 index 0000000..c8bfc34 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch @@ -0,0 +1,53 @@ +From 88b6ac2d3b90cc8eb8d130673c96645bb439e47c Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 15 Dec 2009 15:24:10 -0800 +Subject: [PATCH 18/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-bsp/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch new file mode 100644 index 0000000..51252a3 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch @@ -0,0 +1,601 @@ +From 0aee5eef478b55bf987c45ced3365099e28698cb Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:19:34 -0800 +Subject: [PATCH 19/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-bsp/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch new file mode 100644 index 0000000..87ce318 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch @@ -0,0 +1,149 @@ +From d93f9d5e636931519fb440cf8ad493c95bfaf5ca Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 15:54:58 -0800 +Subject: [PATCH 20/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-bsp/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch new file mode 100644 index 0000000..471d07d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch @@ -0,0 +1,32 @@ +From bdde1d2b9726ebf0dd74f6dad0dfc858333ca784 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:27:15 -0800 +Subject: [PATCH 21/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-bsp/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch new file mode 100644 index 0000000..be53fda --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch @@ -0,0 +1,35 @@ +From 7775140814ed11c0332a57ed30f69c6da0ab466d Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 14:32:36 -0800 +Subject: [PATCH 22/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 cb11b07..c4ebaab 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-bsp/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch new file mode 100644 index 0000000..ec26ee4 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch @@ -0,0 +1,25 @@ +From c59df25a1d1ad6c7fbb11fac6e7404d05639f4bd Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 19 Jan 2010 20:00:46 -0800 +Subject: [PATCH 23/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-bsp/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch new file mode 100644 index 0000000..10bdffa --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch @@ -0,0 +1,28 @@ +From 1af64d89d41aae6ab26b61c23060a02af72b6fb2 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 4 Jan 2010 19:20:25 -0800 +Subject: [PATCH 24/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-bsp/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch new file mode 100644 index 0000000..358ba72 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch @@ -0,0 +1,47 @@ +From 664b6e1a8f1bcd0bed227b367f7ed029a5be0fa7 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Sun, 24 Jan 2010 09:33:56 -0800 +Subject: [PATCH 25/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-bsp/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch b/recipes-bsp/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 0000000..41e3846 --- /dev/null +++ b/recipes-bsp/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 2b3cfbcd286a0c1b0df90b7af7982c772031abd8 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 14 Feb 2010 12:52:02 +0100 +Subject: [PATCH 26/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-bsp/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch new file mode 100644 index 0000000..3b741c0 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch @@ -0,0 +1,85 @@ +From ea14002af533b155db59e15b5bccc6374aa8a5d1 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 15 Feb 2010 14:20:51 +0100 +Subject: [PATCH 27/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-bsp/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch new file mode 100644 index 0000000..9857d61 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch @@ -0,0 +1,161 @@ +From fea02525d71cc64fb84f011768a5f5d0bb248dc7 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 15 Feb 2010 14:38:00 +0100 +Subject: [PATCH 28/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-bsp/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch new file mode 100644 index 0000000..e07a1ac --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch @@ -0,0 +1,254 @@ +From 528f8c676d21e4eea4599226168f25e684f99eae Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 17 Dec 2009 15:05:30 -0800 +Subject: [PATCH 29/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-bsp/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch new file mode 100644 index 0000000..a19b3be --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch @@ -0,0 +1,32 @@ +From 5615ccd89eb521c2365992bdb7c08879fe039daa Mon Sep 17 00:00:00 2001 +From: Kishore Kadiyala +Date: Wed, 17 Feb 2010 19:34:47 +0530 +Subject: [PATCH 30/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-bsp/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch b/recipes-bsp/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 0000000..85952f2 --- /dev/null +++ b/recipes-bsp/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 14b44ddc3119dc497b4d17901884af4f068c5ada Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Thu, 4 Feb 2010 21:38:02 +0200 +Subject: [PATCH 31/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-bsp/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch new file mode 100644 index 0000000..658c975 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch @@ -0,0 +1,211 @@ +From 7cdc806843b28f0f35dd41fb79aac815773a3550 Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Thu, 4 Feb 2010 21:38:30 +0200 +Subject: [PATCH 32/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-bsp/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch new file mode 100644 index 0000000..00e0b64 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch @@ -0,0 +1,27 @@ +From 19f0835c3c8fa52280ae74bbc23dce747708f4af Mon Sep 17 00:00:00 2001 +From: Prabindh Sundareson +Date: Wed, 3 Mar 2010 15:45:35 +0100 +Subject: [PATCH 33/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-bsp/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch new file mode 100644 index 0000000..d2298e0 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch @@ -0,0 +1,27 @@ +From 2f4193b92096394cfd56e3757c8d6ca8e13d5c4d Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 8 Mar 2010 14:38:31 +0100 +Subject: [PATCH 34/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-bsp/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch new file mode 100644 index 0000000..0f76d7a --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch @@ -0,0 +1,55 @@ +From 237492efd365a0f69d41d818fc368f5621aa8f3b Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 4 Feb 2010 12:26:22 -0800 +Subject: [PATCH 35/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-bsp/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch new file mode 100644 index 0000000..9e32d62 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch @@ -0,0 +1,29 @@ +From aa2753fcce815b4a86be5c95238cf029a948e5ff Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Mon, 13 Oct 2008 20:32:16 +0100 +Subject: [PATCH 36/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-bsp/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch new file mode 100644 index 0000000..5fb8b0d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch @@ -0,0 +1,31 @@ +From a265396d38d93b371dbba020fb64aee42b4d4905 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Sat, 28 Mar 2009 13:21:55 +0000 +Subject: [PATCH 37/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-bsp/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch new file mode 100644 index 0000000..0dc8ff6 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch @@ -0,0 +1,202 @@ +From b2792916bb10bdd3093bf88ca62064a3b10ad877 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:39:21 +0000 +Subject: [PATCH 38/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-bsp/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch new file mode 100644 index 0000000..fb6e86f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch @@ -0,0 +1,48 @@ +From f9ab0732a5302bd52026f92430c91b253aa4111b Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:41:54 +0000 +Subject: [PATCH 39/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-bsp/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch new file mode 100644 index 0000000..bcd9c9d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch @@ -0,0 +1,49 @@ +From 6efdc547be5f685b4f29b05eba73cb56441fd898 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Tue, 10 Nov 2009 00:52:56 +0000 +Subject: [PATCH 40/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-bsp/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch new file mode 100644 index 0000000..3ceac2f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch @@ -0,0 +1,41 @@ +From 51643be36a5b45636cd7208a81a09638d7913604 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Sat, 28 Mar 2009 13:05:02 +0000 +Subject: [PATCH 41/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-bsp/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch new file mode 100644 index 0000000..7a066d4 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch @@ -0,0 +1,90 @@ +From 38d07e3ffe848680df123f7422ec4b150bbc8f68 Mon Sep 17 00:00:00 2001 +From: Ajay Kumar Gupta +Date: Wed, 14 Apr 2010 16:08:37 +0530 +Subject: [PATCH 42/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 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 fd842af..b9ef9f3 100644 +--- a/drivers/usb/musb/musb_gadget.c ++++ b/drivers/usb/musb/musb_gadget.c +@@ -1768,24 +1768,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; +@@ -1881,14 +1863,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-bsp/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch new file mode 100644 index 0000000..6f210be --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch @@ -0,0 +1,59 @@ +From 089d3a51f0467d68c42b2df88a6f9a0488aada47 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Mon, 26 Apr 2010 11:17:26 -0700 +Subject: [PATCH 43/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-bsp/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagle-every-known-beagle-except-revB-uses-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagle-every-known-beagle-except-revB-uses-.patch new file mode 100644 index 0000000..a558fe3 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagle-every-known-beagle-except-revB-uses-.patch @@ -0,0 +1,34 @@ +From 2db9c35d01af6f4b3e44fac3466b5d6b62e52232 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 13 May 2010 21:43:08 +0200 +Subject: [PATCH 44/45] ARM: OMAP: beagle: every known beagle (except revB) uses 2 chipselects so don't use NULL for the second chipselect timings + +--- + 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 c4ebaab..4aa91cb 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -614,7 +614,7 @@ static void __init omap3_beagle_init_irq(void) + if (cpu_is_omap3630()) + { + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- NULL, ++ mt46h32m32lf6_sdrc_params, + _omap37x_mpu_rate_table, + _omap37x_dsp_rate_table, + _omap37x_l3_rate_table); +@@ -622,7 +622,7 @@ static void __init omap3_beagle_init_irq(void) + else + { + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, +- NULL, ++ mt46h32m32lf6_sdrc_params, + _omap35x_mpu_rate_table, + _omap35x_dsp_rate_table, + _omap35x_l3_rate_table); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagle-add-support-for-beagleFPGA-expansion.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagle-add-support-for-beagleFPGA-expansion.patch new file mode 100644 index 0000000..0278c4e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagle-add-support-for-beagleFPGA-expansion.patch @@ -0,0 +1,70 @@ +From 46df6bfeaff6f64bfae3fd9ac930bd6c768a352f Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sat, 15 May 2010 21:47:32 +0200 +Subject: [PATCH 45/45] ARM: OMAP: beagle: add support for beagleFPGA expansionboard: http://members.cox.net/ebrombaugh1/embedded/beagle/beagle_fpga.html + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 26 ++++++++++++++++++++++++++ + 1 files changed, 26 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 4aa91cb..93b9e5f 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -47,6 +48,7 @@ + #include + #include + #include ++#include + + #include "mux.h" + #include "mmc-twl4030.h" +@@ -609,6 +611,24 @@ static struct platform_device keys_gpio = { + }, + }; + ++static struct spi_board_info beaglefpga_mcspi_board_info[] = { ++ // spi 4.0 ++ { ++ .modalias = "spidev", ++ .max_speed_hz = 48000000, //48 Mbps ++ .bus_num = 4, ++ .chip_select = 0, ++ .mode = SPI_MODE_1, ++ }, ++}; ++ ++static void __init beaglefpga_init_spi(void) ++{ ++ /* hook the spi ports to the spidev driver */ ++ spi_register_board_info(beaglefpga_mcspi_board_info, ++ ARRAY_SIZE(beaglefpga_mcspi_board_info)); ++} ++ + static void __init omap3_beagle_init_irq(void) + { + if (cpu_is_omap3630()) +@@ -774,6 +794,12 @@ static void __init omap3_beagle_init(void) + gpio_export(162, 1); + } + ++ if(!strcmp(expansionboard_name, "beaglefpga")) ++ { ++ printk(KERN_INFO "Beagle expansionboard: Using McSPI for SPI\n"); ++ beaglefpga_init_spi(); ++ } ++ + usb_musb_init(); + usb_ehci_init(&ehci_pdata); + omap3beagle_flash_init(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0046-attemp-to-fix-serial-console-corruption-during-cpuid.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0046-attemp-to-fix-serial-console-corruption-during-cpuid.patch new file mode 100644 index 0000000..11f5226 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0046-attemp-to-fix-serial-console-corruption-during-cpuid.patch @@ -0,0 +1,57 @@ +From b0c673e40d40428a9bd05101d15d773cd4f4720c Mon Sep 17 00:00:00 2001 +From: Ranjith Lohithakshan +Date: Sat, 22 May 2010 18:32:24 +0200 +Subject: [PATCH 46/48] attemp to fix serial console corruption during cpuidle + +--- + arch/arm/mach-omap2/cpuidle34xx.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c +index f8aea56..35d1c3e 100644 +--- a/arch/arm/mach-omap2/cpuidle34xx.c ++++ b/arch/arm/mach-omap2/cpuidle34xx.c +@@ -60,7 +60,7 @@ struct omap3_processor_cx { + + struct omap3_processor_cx omap3_power_states[OMAP3_MAX_STATES]; + struct omap3_processor_cx current_cx_state; +-struct powerdomain *mpu_pd, *core_pd; ++struct powerdomain *mpu_pd, *per_pd, *core_pd; + + /* + * The latencies/thresholds for various C states have +@@ -131,6 +131,7 @@ static int omap3_enter_idle(struct cpuidle_device *dev, + local_fiq_disable(); + + pwrdm_set_next_pwrst(mpu_pd, mpu_state); ++ pwrdm_set_next_pwrst(per_pd, mpu_state); + pwrdm_set_next_pwrst(core_pd, core_state); + + if (omap_irq_pending() || need_resched()) +@@ -138,6 +139,7 @@ static int omap3_enter_idle(struct cpuidle_device *dev, + + if (cx->type == OMAP3_STATE_C1) { + pwrdm_for_each_clkdm(mpu_pd, _cpuidle_deny_idle); ++ pwrdm_for_each_clkdm(per_pd, _cpuidle_deny_idle); + pwrdm_for_each_clkdm(core_pd, _cpuidle_deny_idle); + } + +@@ -146,6 +148,7 @@ static int omap3_enter_idle(struct cpuidle_device *dev, + + if (cx->type == OMAP3_STATE_C1) { + pwrdm_for_each_clkdm(mpu_pd, _cpuidle_allow_idle); ++ pwrdm_for_each_clkdm(per_pd, _cpuidle_allow_idle); + pwrdm_for_each_clkdm(core_pd, _cpuidle_allow_idle); + } + +@@ -425,6 +428,7 @@ int __init omap3_idle_init(void) + struct cpuidle_device *dev; + + mpu_pd = pwrdm_lookup("mpu_pwrdm"); ++ per_pd = pwrdm_lookup("per_pwrdm"); + core_pd = pwrdm_lookup("core_pwrdm"); + + omap_init_power_states(); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0047-clock34xx-only-try-to-idle-IVA-subsys-when-CONFIG_PM.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0047-clock34xx-only-try-to-idle-IVA-subsys-when-CONFIG_PM.patch new file mode 100644 index 0000000..0db8bf7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0047-clock34xx-only-try-to-idle-IVA-subsys-when-CONFIG_PM.patch @@ -0,0 +1,37 @@ +From 4d5f88fca430ca38a35e60683dc301e80046b05d Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 23 May 2010 14:47:32 +0200 +Subject: [PATCH 47/48] clock34xx: only try to idle IVA subsys when CONFIG_PM is set + +--- + arch/arm/mach-omap2/clock34xx.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c +index 2bb7182..a323f9f 100644 +--- a/arch/arm/mach-omap2/clock34xx.c ++++ b/arch/arm/mach-omap2/clock34xx.c +@@ -407,7 +407,9 @@ void omap3_clk_lock_dpll5(void) + return; + } + ++#ifdef CONFIG_PM + extern void __init omap3_iva_idle(void); ++#endif + + /* + * Initialize IVA to a idle state. This is typically done by the +@@ -425,8 +427,9 @@ static void __init omap2_clk_iva_init_to_idle(void) + prm_write_mod_reg(0, CORE_MOD, OMAP3430ES2_PM_IVAGRPSEL3); + prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL); + ++#ifdef CONFIG_PM + omap3_iva_idle(); +- ++#endif + } + + /* REVISIT: Move this init stuff out into clock.c */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/0048-HACK-try-to-poweron-stuff-on-xM-rev-A.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/0048-HACK-try-to-poweron-stuff-on-xM-rev-A.patch new file mode 100644 index 0000000..19a235a --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/0048-HACK-try-to-poweron-stuff-on-xM-rev-A.patch @@ -0,0 +1,60 @@ +From 258a962bea2da43df6f70fd264a0e23b65669176 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 4 May 2010 17:04:27 +0200 +Subject: [PATCH 48/48] HACK: try to poweron stuff on xM rev A + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index b313350..7f0e241 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -237,7 +237,6 @@ static struct omap_dss_device beagle_dvi_device = { + .name = "dvi", + .driver_name = "generic_panel", + .phy.dpi.data_lines = 24, +- .reset_gpio = 170, + .platform_enable = beagle_enable_dvi, + .platform_disable = beagle_disable_dvi, + }; +@@ -364,6 +363,9 @@ static int beagle_twl_gpio_setup(struct device *dev, + */ + + if (cpu_is_omap3630()) { ++ /* DVI reset GPIO is different between revisions */ ++ beagle_dvi_device.reset_gpio = 129; ++ + /* Power on DVI, Serial and PWR led */ + gpio_request(gpio + 1, "nDVI_PWR_EN"); + gpio_direction_output(gpio + 1, 0); +@@ -374,9 +376,12 @@ static int beagle_twl_gpio_setup(struct device *dev, + + /* 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); ++ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); + } + else { ++ /* DVI reset GPIO is different between revisions */ ++ beagle_dvi_device.reset_gpio = 170; ++ + gpio_request(gpio + 1, "EHCI_nOC"); + gpio_direction_input(gpio + 1); + +@@ -735,11 +740,6 @@ static void __init omap3_beagle_init(void) + ARRAY_SIZE(omap3_beagle_devices)); + omap_serial_init(); + +- omap_mux_init_gpio(170, OMAP_PIN_INPUT); +- gpio_request(170, "DVI_nPD"); +- /* REVISIT leave DVI powered down until it's needed ... */ +- gpio_direction_output(170, true); +- + if(!strcmp(expansionboard_name, "zippy")) + { + printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n"); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/am3517-evm/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/am3517-evm/defconfig new file mode 100644 index 0000000..5073dc7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/am3517-evm/defconfig @@ -0,0 +1,2140 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Tue Mar 16 19:08:26 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=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_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# 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_AUDIT 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=14 +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_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_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# 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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_MCBSP=y +# CONFIG_OMAP_MBOX_FWK is not set +# CONFIG_OMAP_MPU_TIMER is not set +CONFIG_OMAP_32K_TIMER=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE 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=y +# CONFIG_OMAP_PM_SRF is not set +CONFIG_ARCH_OMAP34XX=y +CONFIG_ARCH_OMAP3430=y +CONFIG_OMAP_PACKAGE_CBB=y + +# +# OMAP Board Type +# +# CONFIG_MACH_OMAP3_BEAGLE is not set +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3EVM is not set +CONFIG_MACH_OMAP3517EVM=y +CONFIG_PMIC_TPS65023=y +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +# 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 + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_HZ=128 +# CONFIG_THUMB2_KERNEL is not set +CONFIG_AEABI=y +# 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" debug " +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# 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 + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 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_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +CONFIG_CAN=y +CONFIG_CAN_RAW=y +CONFIG_CAN_BCM=y + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=y +CONFIG_CAN_DEV=y +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_TI_HECC=y +# CONFIG_CAN_SJA1000 is not set + +# +# CAN USB interfaces +# +# CONFIG_CAN_EMS_USB is not set +CONFIG_CAN_DEBUG_DEVICES=y +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set +# CONFIG_LIB80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +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_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_CONNECTOR=m +CONFIG_MTD=y +# CONFIG_MTD_DEBUG 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=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_OMAP2=y +# CONFIG_MTD_NAND_OMAP_PREFETCH 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_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_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 + +# +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected +# +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_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_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=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=m +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=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_UEVENT=y +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_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=y +# CONFIG_DM9000 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +# CONFIG_SMSC911X is not set +# 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_MLL is not set +CONFIG_NETDEV_1000=y +CONFIG_NETDEV_10000=y +CONFIG_WLAN=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_HOSTAP is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# 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=y +# CONFIG_USB_NET_AX8817X is not set +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_DM9601=y +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# 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_SPARSEKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +CONFIG_KEYBOARD_TCA6416=y +# CONFIG_KEYBOARD_MATRIX 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_XTKBD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +CONFIG_TOUCHSCREEN_TSC2004=y +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# 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 is not set +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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 + +# +# PPS support +# +# CONFIG_PPS is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +# CONFIG_GPIO_PCF857X is not set + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# + +# +# 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_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_OMAP_WATCHDOG=y + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# 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 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 +# 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_AB3100_CORE is not set +# CONFIG_MFD_88PM8607 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_LP3971 is not set +CONFIG_REGULATOR_TPS65023=y +# CONFIG_REGULATOR_TPS6507X is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +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_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +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_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_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 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_MT9P012 is not set +# 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=y +# 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=y +# CONFIG_VIDEO_DM355_CCDC is not set +CONFIG_VIDEO_OMAP2_VOUT=y +# CONFIG_VIDEO_OMAP3 is not set +# CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER is not set +# CONFIG_VIDEO_OMAP34XX_ISP_RESIZER is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=y +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SN9C20X_EVDEV=y +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=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STV0680=m +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=m +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 is not set +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set +CONFIG_DVB_CAPTURE_DRIVERS=y +# CONFIG_TTPCI_EEPROM is not set + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +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=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_EC168=m +# CONFIG_SMS_SIANO_MDTV is not set + +# +# Supported FlexCopII (B2C2) Adapters +# +# CONFIG_DVB_B2C2_FLEXCOP is not set + +# +# Supported DVB Frontends +# +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10086=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_EC100=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=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_LGS8GL5=m +CONFIG_DAB=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_UVESA is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_VIRTUAL 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_OMAP2_VRAM=y +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_VRAM_SIZE=14 +# CONFIG_OMAP2_DSS_DEBUG_SUPPORT is not set +# 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=1 +CONFIG_FB_OMAP2=y +# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set +# 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 is not set +CONFIG_PANEL_SHARP_LQ043T1DG01=y +# CONFIG_PANEL_TAAL is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +# CONFIG_SOUND_OSS_CORE is not set +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 is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_HRTIMER=m +# 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 is not set +# 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 is not set +# CONFIG_SND_ARM is not set +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_AM3517EVM=y +CONFIG_SND_SOC_I2C_AND_SPI=y +# CONFIG_SND_SOC_ALL_CODECS is not set +CONFIG_SND_SOC_TLV320AIC23=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 is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER 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=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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_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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +# CONFIG_USB_TI_CPPI_DMA is not set +CONFIG_USB_TI_CPPI41_DMA=y +CONFIG_USB_MUSB_DEBUG=y + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_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_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +CONFIG_USB_TEST=y +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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_AUDIO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_MASS_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_G_MULTI is not set + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# 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_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_S35390A=y +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set + +# +# SPI RTC drivers +# + +# +# 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 is not set + +# +# TI VLYNQ +# +# CONFIG_STAGING 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_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS 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_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 + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS 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_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_LOCKD=y +CONFIG_LOCKD_V4=y +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 + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_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 is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_SYSCTL_SYSCALL_CHECK is not set +# CONFIG_PAGE_POISONING is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_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_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=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_OC_ETM is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY 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_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +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 + +# +# 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_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +# CONFIG_CRC16 is not set +CONFIG_CRC_T10DIF=y +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/am37x-evm/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/am37x-evm/defconfig new file mode 100644 index 0000000..8f1868d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/am37x-evm/defconfig @@ -0,0 +1,2024 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Fri Jul 9 10:08:46 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# 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_AUDIT 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=14 +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_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_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=m +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# 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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +CONFIG_OMAP_SMARTREFLEX=y +# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_MCBSP=y +# CONFIG_OMAP_MBOX_FWK is not set +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=y +# CONFIG_OMAP_LL_DEBUG_UART2 is not set +# CONFIG_OMAP_LL_DEBUG_UART3 is not set +# CONFIG_OMAP_LL_DEBUG_NONE is not set +# CONFIG_OMAP_PM_NONE is not set +CONFIG_OMAP_PM_NOOP=y +# CONFIG_OMAP_PM_SRF is not set +CONFIG_ARCH_OMAP34XX=y +CONFIG_ARCH_OMAP3430=y +CONFIG_OMAP_PACKAGE_CBB=y + +# +# OMAP Board Type +# +# CONFIG_MACH_OMAP3_BEAGLE is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +# CONFIG_USER_L2_PLE is not set +# CONFIG_USER_PMON is not set +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_HZ=128 +# CONFIG_THUMB2_KERNEL is not set +CONFIG_AEABI=y +# 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_LEDS is not set +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=" debug " +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Power Management +# +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 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_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# 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 +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set +# CONFIG_LIB80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +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_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_TESTS is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_OMAP_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_OMAP2=y +# CONFIG_MTD_NAND_OMAP_PREFETCH 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_ALAUDA is not set +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +CONFIG_MTD_ONENAND_OMAP2=y +# CONFIG_MTD_ONENAND_OTP is not set +# CONFIG_MTD_ONENAND_2X_PROGRAM is not set +# CONFIG_MTD_ONENAND_SIM is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set + +# +# 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=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_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_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_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_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 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +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 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_WLAN=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_HOSTAP is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# 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=y +# CONFIG_USB_NET_AX8817X is not set +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_DM9601=y +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# 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_SPARSEKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_MATRIX 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=y +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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 is not set +# 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 + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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_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 is not set + +# +# Multifunction device drivers +# +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_TWL4030_POWER is not set +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 +# 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=y +CONFIG_VIDEO_V4L2_COMMON=y +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +# CONFIG_DVB_CORE is not set +CONFIG_VIDEO_MEDIA=y + +# +# Multimedia drivers +# +# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_TUNER=y +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=y +CONFIG_MEDIA_TUNER_TDA8290=y +CONFIG_MEDIA_TUNER_TDA9887=y +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_TEA5767=y +CONFIG_MEDIA_TUNER_MT20XX=y +CONFIG_MEDIA_TUNER_XC2028=y +CONFIG_MEDIA_TUNER_XC5000=y +CONFIG_MEDIA_TUNER_MC44S803=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_SG=y +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 + +# +# 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 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_WM8775 is not set +# 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 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_MT9P012 is not set +# 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 is not set +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_SAA7191 is not set +CONFIG_VIDEO_TVP514X=y +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_CX25840 is not set + +# +# MPEG video encoders +# +# CONFIG_VIDEO_CX2341X is not set + +# +# 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 is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +CONFIG_TI_MEDIA=y +# CONFIG_VIDEO_VPSS_SYSTEM is not set +# CONFIG_VIDEO_VPFE_CAPTURE is not set +CONFIG_VIDEO_OMAP2_VOUT=y +CONFIG_VIDEO_OMAP3=y +CONFIG_VIDEO_OMAP3_ISP=y +# CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER is not set +CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=y +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_CX231XX is not set +# CONFIG_VIDEO_USBVISION is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_QUICKCAM_MESSENGER is not set +# CONFIG_USB_ET61X251 is not set +# CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_ZC0301 is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_PWC_INPUT_EVDEV is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +# CONFIG_RADIO_ADAPTERS is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=m +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 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_VIRTUAL 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_OMAP2_VRAM=y +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_VRAM_SIZE=4 +# CONFIG_OMAP2_DSS_DEBUG_SUPPORT is not set +# 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=1 +CONFIG_FB_OMAP2=y +# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set +# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set +CONFIG_FB_OMAP2_NUM_FBS=1 + +# +# 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 + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +# CONFIG_SOUND_OSS_CORE is not set +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 is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_HRTIMER is not set +# 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 is not set +# 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 is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_CAIAQ is not set +CONFIG_SND_SOC=y +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_OMAP3EVM=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 is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER 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=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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_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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +CONFIG_USB_MUSB_DEBUG=y + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_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_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +CONFIG_USB_TEST=y +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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_AUDIO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_MASS_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_G_MULTI is not set + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +# CONFIG_TWL4030_USB is not set +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# 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 is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=y +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# 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 is not set + +# +# TI VLYNQ +# +# CONFIG_STAGING 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_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS 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_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 + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS 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_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_LOCKD=y +CONFIG_LOCKD_V4=y +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 + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS 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 is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_SCHED_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=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_OC_ETM is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY 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_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +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 + +# +# 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_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +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_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle new file mode 100644 index 0000000..06e3879 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle @@ -0,0 +1,3053 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Thu Jul 22 14:16:08 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT 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_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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=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_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +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=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 +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3EVM is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_USER_L2_PLE=y +CONFIG_USER_PMON=y +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# 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 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +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=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +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 + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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=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=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=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=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 +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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=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=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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH 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=m +# 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=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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 +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=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=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=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 +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=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 is not set +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_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_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=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_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=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=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 + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=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=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=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_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 +# 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=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_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_MT9V113=m +# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_MT9P012=m +CONFIG_VIDEO_MT9T112=m +# 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 +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING 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_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_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=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO 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_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=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=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=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR 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=480 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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=m +CONFIG_USB_ZERO_HNPTEST=y +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# 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=y +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_TWL4030_USB=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_RTC_LIB=y +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=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 + +# +# TI VLYNQ +# +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_RTL8192SU=m +# 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_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_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=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=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=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=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 +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY 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_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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_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 diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle-gether b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle-gether new file mode 100644 index 0000000..7261927 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/configs/cpuidle-gether @@ -0,0 +1,3051 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Mon Jul 26 11:37:13 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT 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_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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=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_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +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=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 +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3EVM is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_USER_L2_PLE=y +CONFIG_USER_PMON=y +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# 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 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +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=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +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 + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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=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=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=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=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 +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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=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=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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH 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=m +# 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=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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 +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=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=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=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 +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=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 is not set +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_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_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=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_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=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=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 + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=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=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=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_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 +# 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=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_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_MT9V113=m +# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_MT9P012=m +CONFIG_VIDEO_MT9T112=m +# 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 +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING 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_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_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=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO 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_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=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=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=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR 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=480 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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_AUDIO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_MASS_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_G_MULTI is not set + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +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=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_RTC_LIB=y +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=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 + +# +# TI VLYNQ +# +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_RTL8192SU=m +# 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_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_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=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=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=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=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 +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY 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_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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_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 diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/defconfig new file mode 100644 index 0000000..eff98b4 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/defconfig @@ -0,0 +1,3053 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Wed Jul 21 12:01:38 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT 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_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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_ELF_CORE is not set +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=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_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +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=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 +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3EVM is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_USER_L2_PLE=y +CONFIG_USER_PMON=y +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# 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 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# 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 + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +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 + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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=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=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=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=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 +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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=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=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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH 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=m +# 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=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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 +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=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=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=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 +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=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 is not set +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_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_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=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_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=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=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 + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=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=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=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_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 +# 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=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_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_MT9V113=m +# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_MT9P012=m +CONFIG_VIDEO_MT9T112=m +# 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 +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING 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_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_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=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO 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_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=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=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=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR 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=480 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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=m +CONFIG_USB_ZERO_HNPTEST=y +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# 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=y +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_TWL4030_USB=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_RTC_LIB=y +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=m +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=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 + +# +# TI VLYNQ +# +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_RTL8192SU=m +# 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_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_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=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=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=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=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 +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY 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_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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_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 +CONFIG_ELF_CORE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/logo_linux_clut224.ppm b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/logo_linux_clut224.ppm new file mode 100644 index 0000000..d29fc1c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/beagleboard/logo_linux_clut224.ppm @@ -0,0 +1,73147 @@ +P3 +# CREATOR: GIMP PNM Filter Version 1.1 +387 63 +255 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +248 +138 +64 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +247 +143 +74 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +248 +138 +64 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +130 +53 +247 +130 +60 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +152 +92 +249 +146 +83 +250 +139 +73 +247 +130 +60 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +247 +150 +84 +246 +156 +93 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +123 +41 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +152 +92 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +60 +250 +139 +73 +247 +150 +84 +249 +159 +103 +247 +165 +111 +249 +174 +124 +248 +180 +134 +252 +185 +144 +240 +181 +138 +219 +170 +138 +219 +170 +138 +230 +173 +136 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +159 +103 +214 +151 +109 +121 +100 +85 +65 +67 +64 +74 +68 +68 +129 +102 +78 +214 +151 +109 +246 +156 +93 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +204 +141 +99 +102 +91 +75 +65 +67 +64 +81 +77 +76 +146 +111 +88 +238 +159 +107 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +248 +138 +64 +247 +150 +84 +245 +162 +103 +162 +125 +96 +81 +77 +76 +55 +66 +67 +99 +90 +79 +187 +140 +108 +249 +159 +103 +247 +150 +84 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +187 +140 +108 +102 +91 +75 +58 +69 +70 +76 +78 +76 +146 +111 +88 +238 +159 +107 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +159 +103 +251 +168 +115 +248 +180 +134 +239 +182 +144 +186 +157 +134 +124 +111 +99 +82 +69 +65 +65 +58 +56 +55 +48 +48 +65 +58 +56 +65 +58 +56 +65 +58 +56 +99 +90 +79 +158 +130 +108 +230 +173 +136 +250 +176 +132 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +214 +151 +109 +74 +68 +68 +56 +64 +60 +95 +87 +59 +88 +82 +59 +56 +64 +60 +81 +77 +76 +238 +159 +107 +249 +152 +92 +248 +138 +64 +247 +130 +53 +246 +116 +28 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +187 +140 +108 +51 +62 +63 +69 +69 +61 +95 +87 +59 +83 +78 +61 +48 +58 +59 +121 +100 +85 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +123 +41 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +247 +165 +111 +139 +115 +96 +48 +58 +59 +95 +78 +64 +118 +86 +65 +81 +73 +62 +48 +58 +59 +162 +125 +96 +249 +159 +103 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +187 +140 +108 +48 +58 +59 +76 +70 +64 +118 +86 +65 +95 +78 +64 +51 +62 +63 +121 +100 +85 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +152 +92 +247 +165 +111 +250 +176 +132 +251 +192 +154 +167 +142 +123 +65 +58 +56 +35 +31 +30 +71 +60 +43 +108 +87 +46 +129 +106 +52 +137 +110 +49 +156 +125 +62 +187 +166 +150 +129 +106 +52 +101 +83 +47 +59 +50 +39 +55 +48 +48 +139 +115 +96 +240 +181 +138 +249 +174 +124 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +247 +165 +111 +124 +111 +99 +56 +64 +60 +137 +110 +49 +171 +129 +45 +171 +129 +45 +129 +106 +52 +51 +62 +63 +162 +125 +96 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +245 +169 +119 +81 +77 +76 +69 +69 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +105 +93 +60 +48 +58 +59 +187 +140 +108 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +250 +139 +73 +249 +159 +103 +210 +156 +119 +51 +62 +63 +112 +85 +63 +234 +126 +45 +234 +126 +45 +225 +124 +48 +95 +78 +64 +63 +74 +74 +234 +168 +124 +246 +156 +93 +250 +139 +73 +247 +123 +41 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +245 +169 +119 +81 +77 +76 +81 +73 +62 +212 +120 +56 +234 +126 +45 +234 +126 +45 +135 +94 +64 +41 +58 +57 +187 +140 +108 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +249 +174 +124 +249 +189 +146 +236 +186 +153 +99 +90 +79 +47 +40 +38 +85 +71 +43 +145 +114 +49 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +160 +120 +43 +195 +167 +113 +216 +194 +154 +168 +127 +42 +168 +127 +42 +123 +102 +54 +59 +50 +39 +82 +69 +65 +230 +173 +136 +249 +174 +124 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +246 +156 +93 +245 +169 +119 +84 +85 +82 +83 +78 +61 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +101 +100 +92 +249 +174 +124 +246 +156 +93 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +210 +156 +119 +48 +58 +59 +105 +93 +60 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +62 +63 +61 +139 +115 +96 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +247 +165 +111 +158 +130 +108 +51 +62 +63 +188 +112 +56 +234 +125 +52 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +210 +156 +119 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +247 +165 +111 +210 +156 +119 +55 +66 +67 +146 +97 +64 +234 +126 +45 +224 +123 +55 +234 +125 +52 +199 +115 +54 +62 +63 +61 +139 +115 +96 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +250 +176 +132 +219 +170 +138 +150 +125 +114 +65 +58 +56 +24 +22 +23 +59 +50 +39 +152 +119 +47 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +158 +125 +46 +227 +196 +175 +192 +155 +91 +160 +120 +43 +171 +129 +45 +158 +125 +46 +85 +71 +43 +65 +58 +56 +219 +170 +138 +249 +174 +124 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +230 +173 +136 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +252 +185 +144 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +203 +161 +131 +43 +57 +62 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +133 +120 +107 +250 +176 +132 +246 +156 +93 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +154 +133 +118 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +186 +157 +134 +250 +176 +132 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +249 +174 +124 +209 +171 +139 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +133 +120 +107 +249 +174 +124 +246 +156 +93 +248 +138 +64 +247 +123 +41 +247 +111 +26 +246 +109 +10 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +158 +130 +108 +47 +40 +38 +59 +50 +39 +85 +71 +43 +85 +71 +43 +59 +50 +39 +35 +31 +30 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +192 +155 +91 +224 +207 +180 +158 +125 +46 +160 +120 +43 +168 +127 +42 +171 +129 +45 +71 +60 +43 +82 +69 +65 +239 +182 +144 +249 +174 +124 +249 +152 +92 +248 +138 +64 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +247 +165 +111 +239 +182 +144 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +250 +197 +158 +250 +176 +132 +249 +159 +103 +247 +143 +74 +247 +130 +60 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +248 +180 +134 +212 +173 +150 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +248 +180 +134 +249 +159 +103 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +249 +159 +103 +250 +176 +132 +167 +142 +123 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +249 +189 +146 +251 +168 +115 +249 +152 +92 +250 +139 +73 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +150 +84 +247 +165 +111 +252 +185 +144 +212 +173 +150 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +133 +120 +107 +248 +180 +134 +249 +159 +103 +250 +139 +73 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +103 +7 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +249 +159 +103 +250 +176 +132 +167 +142 +123 +24 +22 +23 +85 +71 +43 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +85 +71 +43 +35 +31 +30 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +216 +194 +154 +195 +167 +113 +152 +119 +47 +158 +125 +46 +168 +127 +42 +158 +125 +46 +59 +50 +39 +139 +115 +96 +252 +185 +144 +247 +165 +111 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +251 +168 +115 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +251 +209 +178 +249 +189 +146 +249 +174 +124 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +248 +138 +64 +247 +143 +74 +246 +156 +93 +249 +174 +124 +251 +192 +154 +207 +178 +158 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +159 +103 +252 +185 +144 +167 +142 +123 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +51 +62 +63 +187 +166 +150 +250 +200 +166 +248 +180 +134 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +249 +152 +92 +247 +165 +111 +248 +180 +134 +250 +197 +158 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +252 +185 +144 +249 +159 +103 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +247 +150 +84 +251 +168 +115 +230 +173 +136 +47 +40 +38 +59 +50 +39 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +171 +129 +45 +59 +50 +39 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +170 +137 +67 +239 +227 +208 +170 +137 +67 +160 +120 +43 +158 +125 +46 +171 +129 +45 +123 +102 +54 +47 +40 +38 +209 +171 +139 +248 +180 +134 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +249 +174 +124 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +253 +204 +176 +249 +189 +146 +249 +174 +124 +247 +165 +111 +246 +156 +93 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +246 +116 +28 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +249 +146 +83 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +174 +124 +252 +185 +144 +250 +200 +166 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +251 +192 +154 +249 +174 +124 +246 +156 +93 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +249 +146 +83 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +150 +84 +251 +168 +115 +249 +189 +146 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +253 +212 +188 +250 +197 +158 +248 +180 +134 +251 +168 +115 +249 +159 +103 +247 +150 +84 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +247 +150 +84 +249 +146 +83 +247 +143 +74 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +109 +10 +246 +109 +10 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +60 +248 +138 +64 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +250 +139 +73 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +248 +138 +64 +250 +139 +73 +250 +139 +73 +250 +139 +73 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +247 +150 +84 +249 +159 +103 +251 +168 +115 +248 +180 +134 +250 +197 +158 +253 +212 +188 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +111 +26 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +130 +60 +250 +139 +73 +247 +143 +74 +249 +146 +83 +247 +150 +84 +247 +150 +84 +249 +146 +83 +247 +143 +74 +250 +139 +73 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +118 +39 +247 +118 +39 +247 +118 +39 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +248 +138 +64 +248 +138 +64 +250 +139 +73 +250 +139 +73 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +143 +74 +247 +143 +74 +250 +139 +73 +250 +139 +73 +248 +138 +64 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +139 +115 +96 +35 +31 +30 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +35 +31 +30 +152 +119 +47 +168 +127 +42 +168 +127 +42 +160 +120 +43 +168 +127 +42 +171 +129 +45 +152 +119 +47 +216 +194 +154 +224 +207 +180 +160 +120 +43 +160 +120 +43 +137 +110 +49 +102 +91 +75 +35 +31 +30 +115 +102 +92 +250 +200 +166 +250 +176 +132 +249 +159 +103 +249 +146 +83 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +236 +186 +153 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +253 +204 +176 +250 +197 +158 +252 +185 +144 +249 +174 +124 +251 +168 +115 +249 +159 +103 +246 +156 +93 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +246 +116 +28 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +60 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +249 +146 +83 +247 +143 +74 +248 +138 +64 +247 +130 +60 +247 +130 +60 +247 +130 +60 +248 +138 +64 +250 +139 +73 +249 +146 +83 +249 +152 +92 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +247 +165 +111 +251 +168 +115 +250 +176 +132 +252 +185 +144 +250 +200 +166 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +250 +200 +166 +250 +176 +132 +247 +165 +111 +249 +152 +92 +247 +150 +84 +249 +146 +83 +247 +150 +84 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +246 +156 +93 +247 +150 +84 +247 +143 +74 +250 +139 +73 +247 +143 +74 +249 +146 +83 +249 +159 +103 +249 +174 +124 +251 +192 +154 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +187 +166 +150 +255 +215 +190 +253 +212 +188 +250 +200 +166 +249 +189 +146 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +246 +116 +28 +247 +111 +26 +246 +116 +28 +247 +118 +39 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +246 +156 +93 +246 +156 +93 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +152 +92 +249 +152 +92 +247 +150 +84 +249 +146 +83 +249 +146 +83 +249 +146 +83 +247 +150 +84 +249 +152 +92 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +250 +176 +132 +249 +189 +146 +250 +200 +166 +253 +212 +188 +255 +215 +190 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +249 +159 +103 +249 +152 +92 +249 +146 +83 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +60 +248 +138 +64 +247 +143 +74 +249 +146 +83 +249 +152 +92 +246 +156 +93 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +249 +159 +103 +246 +156 +93 +249 +152 +92 +247 +150 +84 +249 +146 +83 +247 +143 +74 +247 +143 +74 +247 +143 +74 +249 +146 +83 +247 +150 +84 +246 +156 +93 +249 +159 +103 +247 +165 +111 +247 +165 +111 +251 +168 +115 +251 +168 +115 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +249 +159 +103 +249 +159 +103 +246 +156 +93 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +103 +7 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +236 +186 +153 +47 +40 +38 +59 +50 +39 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +47 +40 +38 +108 +87 +46 +168 +127 +42 +111 +94 +57 +76 +70 +64 +59 +50 +39 +101 +83 +47 +160 +120 +43 +170 +137 +67 +253 +255 +252 +195 +167 +113 +145 +114 +49 +69 +69 +61 +120 +114 +108 +35 +31 +30 +47 +40 +38 +217 +187 +166 +250 +197 +158 +250 +176 +132 +249 +159 +103 +249 +146 +83 +248 +138 +64 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +250 +139 +73 +246 +156 +93 +250 +176 +132 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +245 +212 +186 +227 +196 +175 +212 +173 +150 +209 +171 +139 +219 +170 +138 +240 +181 +138 +250 +176 +132 +251 +168 +115 +249 +159 +103 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +53 +247 +130 +53 +248 +138 +64 +249 +146 +83 +246 +156 +93 +247 +165 +111 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +250 +176 +132 +249 +174 +124 +249 +159 +103 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +53 +248 +138 +64 +249 +146 +83 +246 +156 +93 +247 +165 +111 +249 +174 +124 +245 +179 +138 +230 +173 +136 +203 +161 +131 +203 +161 +131 +219 +170 +138 +239 +182 +144 +251 +192 +154 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +245 +169 +119 +234 +168 +124 +247 +165 +111 +249 +159 +103 +249 +152 +92 +247 +150 +84 +247 +150 +84 +247 +150 +84 +249 +152 +92 +249 +159 +103 +247 +165 +111 +249 +174 +124 +248 +180 +134 +230 +173 +136 +219 +170 +138 +203 +161 +131 +209 +171 +139 +239 +182 +144 +251 +192 +154 +249 +189 +146 +249 +189 +146 +252 +185 +144 +252 +185 +144 +249 +189 +146 +236 +186 +153 +250 +200 +166 +255 +215 +190 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +253 +204 +176 +252 +185 +144 +249 +174 +124 +247 +165 +111 +247 +165 +111 +247 +165 +111 +251 +168 +115 +249 +174 +124 +248 +180 +134 +230 +173 +136 +219 +170 +138 +203 +161 +131 +209 +171 +139 +230 +173 +136 +245 +179 +138 +250 +176 +132 +251 +168 +115 +249 +159 +103 +249 +159 +103 +246 +156 +93 +249 +159 +103 +251 +168 +115 +248 +180 +134 +250 +197 +158 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +187 +166 +150 +255 +215 +190 +255 +215 +190 +234 +204 +183 +207 +178 +158 +209 +171 +139 +209 +171 +139 +230 +173 +136 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +248 +138 +64 +247 +143 +74 +249 +152 +92 +247 +165 +111 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +152 +92 +247 +143 +74 +248 +138 +64 +247 +130 +53 +247 +123 +41 +247 +123 +41 +247 +123 +41 +247 +130 +53 +247 +130 +60 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +174 +124 +250 +176 +132 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +230 +173 +136 +251 +192 +154 +249 +189 +146 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +250 +176 +132 +248 +180 +134 +250 +176 +132 +250 +176 +132 +250 +176 +132 +248 +180 +134 +248 +180 +134 +230 +173 +136 +240 +181 +138 +252 +185 +144 +252 +185 +144 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +234 +168 +124 +249 +174 +124 +251 +168 +115 +247 +165 +111 +247 +165 +111 +247 +165 +111 +251 +168 +115 +249 +174 +124 +250 +176 +132 +248 +180 +134 +230 +173 +136 +219 +170 +138 +209 +171 +139 +207 +178 +158 +227 +196 +175 +253 +212 +188 +255 +215 +190 +217 +187 +166 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +246 +116 +28 +247 +111 +26 +246 +109 +10 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +247 +143 +74 +249 +152 +92 +249 +159 +103 +249 +174 +124 +248 +180 +134 +240 +181 +138 +219 +170 +138 +203 +161 +131 +203 +161 +131 +219 +170 +138 +240 +181 +138 +248 +180 +134 +249 +174 +124 +247 +165 +111 +249 +159 +103 +247 +150 +84 +249 +146 +83 +247 +143 +74 +247 +143 +74 +249 +146 +83 +249 +152 +92 +249 +159 +103 +247 +165 +111 +234 +168 +124 +234 +168 +124 +248 +180 +134 +252 +185 +144 +252 +185 +144 +252 +185 +144 +248 +180 +134 +250 +176 +132 +234 +168 +124 +249 +174 +124 +251 +168 +115 +247 +165 +111 +247 +165 +111 +249 +159 +103 +247 +165 +111 +251 +168 +115 +249 +174 +124 +250 +176 +132 +248 +180 +134 +230 +173 +136 +203 +161 +131 +203 +161 +131 +219 +170 +138 +239 +182 +144 +251 +192 +154 +249 +189 +146 +252 +185 +144 +252 +185 +144 +248 +180 +134 +234 +168 +124 +238 +159 +107 +247 +165 +111 +249 +152 +92 +247 +143 +74 +247 +130 +60 +247 +123 +41 +246 +116 +28 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +247 +143 +74 +247 +165 +111 +252 +185 +144 +154 +133 +118 +24 +22 +23 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +85 +71 +43 +101 +83 +47 +89 +84 +82 +152 +147 +147 +24 +22 +23 +24 +22 +23 +108 +87 +46 +168 +127 +42 +224 +207 +180 +253 +255 +252 +209 +171 +139 +101 +83 +47 +24 +22 +23 +35 +31 +30 +35 +31 +30 +167 +142 +123 +253 +212 +188 +250 +197 +158 +248 +180 +134 +247 +165 +111 +247 +150 +84 +250 +139 +73 +247 +130 +60 +247 +130 +60 +248 +138 +64 +249 +146 +83 +249 +159 +103 +250 +176 +132 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +217 +187 +166 +137 +127 +115 +91 +92 +89 +55 +66 +67 +48 +58 +59 +48 +58 +59 +55 +66 +67 +84 +85 +82 +133 +120 +107 +209 +171 +139 +248 +180 +134 +251 +168 +115 +249 +159 +103 +247 +150 +84 +247 +143 +74 +250 +139 +73 +250 +139 +73 +249 +146 +83 +249 +152 +92 +247 +165 +111 +249 +174 +124 +245 +179 +138 +178 +146 +122 +124 +111 +99 +76 +78 +76 +51 +62 +63 +48 +58 +59 +48 +58 +59 +58 +69 +70 +91 +92 +89 +144 +125 +110 +203 +161 +131 +248 +180 +134 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +248 +138 +64 +250 +139 +73 +249 +146 +83 +246 +156 +93 +247 +165 +111 +250 +176 +132 +230 +173 +136 +154 +133 +118 +101 +100 +92 +58 +69 +70 +48 +58 +59 +48 +58 +59 +51 +62 +63 +84 +85 +82 +137 +127 +115 +217 +187 +166 +253 +212 +188 +227 +196 +175 +144 +125 +110 +89 +84 +82 +81 +77 +76 +115 +102 +92 +210 +156 +119 +249 +174 +124 +251 +168 +115 +251 +168 +115 +251 +168 +115 +249 +174 +124 +250 +176 +132 +252 +185 +144 +195 +157 +134 +124 +111 +99 +76 +78 +76 +51 +62 +63 +48 +58 +59 +48 +58 +59 +70 +79 +77 +120 +114 +108 +187 +166 +150 +253 +212 +188 +253 +212 +188 +172 +150 +134 +101 +100 +92 +77 +85 +81 +101 +100 +92 +176 +156 +141 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +253 +212 +188 +250 +197 +158 +252 +185 +144 +248 +180 +134 +248 +180 +134 +252 +185 +144 +239 +182 +144 +167 +142 +123 +109 +106 +99 +70 +79 +77 +48 +58 +59 +48 +58 +59 +48 +58 +59 +58 +69 +70 +91 +92 +89 +150 +125 +114 +219 +170 +138 +248 +180 +134 +249 +174 +124 +249 +174 +124 +249 +174 +124 +250 +176 +132 +249 +189 +146 +253 +204 +176 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +176 +156 +141 +187 +166 +150 +109 +106 +99 +63 +74 +74 +43 +57 +62 +43 +57 +62 +43 +57 +62 +63 +74 +74 +109 +106 +99 +178 +146 +122 +245 +179 +138 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +248 +138 +64 +248 +138 +64 +247 +143 +74 +247 +150 +84 +249 +159 +103 +249 +174 +124 +252 +185 +144 +195 +157 +134 +124 +111 +99 +77 +85 +81 +51 +62 +63 +41 +58 +57 +43 +57 +62 +51 +62 +63 +77 +85 +81 +124 +111 +99 +195 +157 +134 +252 +185 +144 +249 +174 +124 +249 +159 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +247 +130 +60 +248 +138 +64 +250 +139 +73 +247 +150 +84 +249 +159 +103 +251 +168 +115 +248 +180 +134 +203 +161 +131 +124 +111 +99 +77 +85 +81 +48 +58 +59 +43 +57 +62 +43 +57 +62 +63 +74 +74 +109 +106 +99 +187 +166 +150 +253 +212 +188 +253 +212 +188 +187 +166 +150 +109 +106 +99 +77 +85 +81 +84 +85 +82 +150 +125 +114 +232 +190 +161 +253 +204 +176 +253 +204 +176 +172 +150 +134 +101 +100 +92 +77 +85 +81 +91 +92 +89 +137 +127 +115 +227 +196 +175 +253 +212 +188 +186 +157 +134 +109 +106 +99 +77 +85 +81 +84 +85 +82 +124 +111 +99 +219 +170 +138 +249 +189 +146 +249 +189 +146 +249 +189 +146 +251 +192 +154 +250 +197 +158 +186 +157 +134 +109 +106 +99 +70 +79 +77 +43 +57 +62 +43 +57 +62 +41 +58 +57 +63 +74 +74 +101 +100 +92 +176 +156 +141 +194 +173 +157 +55 +66 +67 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +249 +189 +146 +247 +165 +111 +247 +143 +74 +247 +130 +53 +247 +118 +39 +247 +111 +26 +246 +109 +10 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +249 +159 +103 +249 +174 +124 +252 +185 +144 +203 +161 +131 +133 +120 +107 +84 +85 +82 +55 +66 +67 +43 +57 +62 +41 +58 +57 +51 +62 +63 +77 +85 +81 +124 +111 +99 +178 +146 +122 +239 +182 +144 +250 +176 +132 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +210 +156 +119 +124 +111 +99 +77 +85 +81 +77 +85 +81 +109 +106 +99 +194 +173 +157 +253 +212 +188 +217 +187 +166 +133 +120 +107 +89 +84 +82 +76 +78 +76 +101 +100 +92 +178 +146 +122 +249 +189 +146 +252 +185 +144 +252 +185 +144 +252 +185 +144 +251 +192 +154 +236 +186 +153 +167 +142 +123 +101 +100 +92 +63 +74 +74 +41 +58 +57 +43 +57 +62 +51 +62 +63 +77 +85 +81 +137 +127 +115 +217 +187 +166 +253 +212 +188 +227 +196 +175 +144 +125 +110 +84 +85 +82 +76 +78 +76 +115 +102 +92 +204 +141 +99 +249 +159 +103 +247 +143 +74 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +250 +197 +158 +82 +69 +65 +47 +40 +38 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +101 +83 +47 +59 +50 +39 +101 +83 +47 +24 +22 +23 +35 +31 +30 +24 +22 +23 +24 +22 +23 +108 +87 +46 +168 +127 +42 +195 +167 +113 +253 +255 +252 +253 +255 +252 +239 +227 +208 +186 +157 +134 +162 +125 +96 +105 +93 +60 +47 +40 +38 +150 +125 +114 +217 +187 +166 +250 +200 +166 +252 +185 +144 +251 +168 +115 +246 +156 +93 +249 +146 +83 +247 +143 +74 +249 +146 +83 +249 +152 +92 +247 +165 +111 +252 +185 +144 +232 +190 +161 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +58 +69 +70 +56 +64 +60 +83 +78 +61 +105 +93 +60 +117 +98 +55 +117 +98 +55 +105 +93 +60 +83 +78 +61 +56 +64 +60 +55 +66 +67 +144 +125 +110 +239 +182 +144 +250 +176 +132 +247 +165 +111 +249 +159 +103 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +252 +185 +144 +195 +157 +134 +89 +84 +82 +48 +58 +59 +63 +69 +60 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +105 +93 +60 +83 +78 +61 +56 +64 +60 +51 +62 +63 +124 +111 +99 +219 +170 +138 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +249 +152 +92 +246 +156 +93 +247 +165 +111 +249 +174 +124 +252 +185 +144 +167 +142 +123 +70 +79 +77 +51 +62 +63 +75 +74 +61 +100 +89 +56 +117 +98 +55 +123 +102 +54 +105 +93 +60 +83 +78 +61 +51 +62 +63 +63 +74 +74 +172 +150 +134 +109 +106 +99 +51 +62 +63 +83 +78 +61 +95 +87 +59 +65 +67 +64 +65 +67 +64 +209 +171 +139 +249 +189 +146 +249 +189 +146 +249 +189 +146 +250 +197 +158 +212 +173 +150 +109 +106 +99 +48 +58 +59 +63 +69 +60 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +95 +87 +59 +62 +63 +61 +48 +58 +59 +137 +127 +115 +146 +135 +124 +48 +58 +59 +75 +74 +61 +95 +87 +59 +75 +74 +61 +48 +58 +59 +161 +144 +134 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +250 +200 +166 +172 +150 +134 +77 +85 +81 +48 +58 +59 +69 +69 +61 +95 +87 +59 +111 +94 +57 +123 +102 +54 +117 +98 +55 +100 +89 +56 +75 +74 +61 +56 +64 +60 +55 +66 +67 +133 +120 +107 +236 +186 +153 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +253 +212 +188 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +51 +62 +63 +63 +74 +74 +48 +58 +59 +76 +70 +64 +118 +86 +65 +146 +97 +64 +155 +100 +63 +146 +97 +64 +118 +86 +65 +76 +70 +64 +43 +57 +62 +91 +92 +89 +203 +161 +131 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +247 +150 +84 +249 +152 +92 +249 +159 +103 +251 +168 +115 +248 +180 +134 +209 +171 +139 +101 +100 +92 +43 +57 +62 +69 +69 +61 +106 +82 +65 +135 +94 +64 +155 +100 +63 +155 +100 +63 +135 +94 +64 +106 +82 +65 +65 +67 +64 +43 +57 +62 +101 +100 +92 +209 +171 +139 +248 +180 +134 +251 +168 +115 +249 +159 +103 +249 +152 +92 +247 +150 +84 +247 +150 +84 +246 +156 +93 +247 +165 +111 +250 +176 +132 +219 +170 +138 +124 +111 +99 +48 +58 +59 +62 +63 +61 +106 +82 +65 +139 +96 +61 +155 +100 +63 +146 +97 +64 +125 +90 +64 +76 +70 +64 +41 +58 +57 +120 +114 +108 +172 +150 +134 +51 +62 +63 +69 +69 +61 +112 +85 +63 +95 +78 +64 +51 +62 +63 +120 +114 +108 +245 +212 +186 +146 +135 +124 +43 +57 +62 +81 +73 +62 +118 +86 +65 +95 +78 +64 +56 +64 +60 +101 +100 +92 +133 +120 +107 +43 +57 +62 +76 +70 +64 +112 +85 +63 +106 +82 +65 +62 +63 +61 +77 +85 +81 +227 +196 +175 +253 +212 +188 +253 +212 +188 +217 +187 +166 +109 +106 +99 +41 +58 +57 +69 +69 +61 +112 +85 +63 +139 +96 +61 +155 +100 +63 +146 +97 +64 +118 +86 +65 +81 +73 +62 +48 +58 +59 +58 +69 +70 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +111 +26 +246 +116 +28 +247 +123 +41 +248 +138 +64 +249 +146 +83 +249 +159 +103 +250 +176 +132 +219 +170 +138 +124 +111 +99 +43 +57 +62 +62 +63 +61 +106 +82 +65 +135 +94 +64 +155 +100 +63 +155 +100 +63 +139 +96 +61 +106 +82 +65 +69 +69 +61 +43 +57 +62 +91 +92 +89 +195 +157 +134 +251 +192 +154 +252 +185 +144 +248 +180 +134 +248 +180 +134 +252 +185 +144 +203 +161 +131 +63 +74 +74 +62 +63 +61 +106 +82 +65 +112 +85 +63 +69 +69 +61 +55 +66 +67 +146 +135 +124 +63 +74 +74 +56 +64 +60 +95 +78 +64 +112 +85 +63 +76 +70 +64 +48 +58 +59 +172 +150 +134 +253 +204 +176 +251 +209 +178 +251 +209 +178 +187 +166 +150 +77 +85 +81 +48 +58 +59 +81 +73 +62 +125 +90 +64 +146 +97 +64 +155 +100 +63 +139 +96 +61 +95 +78 +64 +56 +64 +60 +58 +69 +70 +161 +144 +134 +109 +106 +99 +51 +62 +63 +95 +78 +64 +112 +85 +63 +65 +67 +64 +65 +67 +64 +204 +141 +99 +246 +156 +93 +250 +139 +73 +247 +130 +53 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +209 +171 +139 +24 +22 +23 +85 +71 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +47 +40 +38 +137 +110 +49 +101 +83 +47 +59 +50 +39 +59 +50 +39 +101 +83 +47 +158 +125 +46 +160 +120 +43 +192 +155 +91 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +152 +147 +147 +81 +77 +76 +55 +48 +48 +115 +102 +92 +212 +173 +150 +251 +192 +154 +249 +174 +124 +247 +165 +111 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +249 +189 +146 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +43 +57 +62 +95 +87 +59 +145 +114 +49 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +145 +114 +49 +95 +87 +59 +48 +58 +59 +109 +106 +99 +236 +186 +153 +252 +185 +144 +248 +180 +134 +250 +176 +132 +250 +176 +132 +252 +185 +144 +251 +192 +154 +150 +125 +114 +48 +58 +59 +69 +69 +61 +117 +98 +55 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +152 +119 +47 +100 +89 +56 +56 +64 +60 +63 +74 +74 +186 +157 +134 +249 +189 +146 +248 +180 +134 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +251 +192 +154 +133 +120 +107 +48 +58 +59 +75 +74 +61 +137 +110 +49 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +145 +114 +49 +75 +74 +61 +43 +57 +62 +51 +62 +63 +123 +102 +54 +171 +129 +45 +171 +129 +45 +145 +114 +49 +56 +64 +60 +133 +120 +107 +253 +212 +188 +251 +209 +178 +253 +212 +188 +194 +173 +157 +63 +74 +74 +56 +64 +60 +111 +94 +57 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +158 +125 +46 +105 +93 +60 +51 +62 +63 +43 +57 +62 +88 +82 +59 +168 +127 +42 +171 +129 +45 +168 +127 +42 +88 +82 +59 +63 +74 +74 +187 +166 +150 +55 +66 +67 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +133 +120 +107 +48 +58 +59 +75 +74 +61 +129 +106 +52 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +171 +129 +45 +168 +127 +42 +145 +114 +49 +95 +87 +59 +51 +62 +63 +77 +85 +81 +212 +173 +150 +253 +204 +176 +253 +204 +176 +251 +209 +178 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +41 +58 +57 +69 +69 +61 +155 +100 +63 +214 +121 +50 +234 +126 +45 +234 +126 +45 +234 +126 +45 +234 +126 +45 +234 +126 +45 +224 +123 +55 +155 +100 +63 +69 +69 +61 +51 +62 +63 +178 +146 +122 +249 +189 +146 +250 +176 +132 +251 +168 +115 +251 +168 +115 +249 +174 +124 +250 +176 +132 +249 +189 +146 +167 +142 +123 +55 +66 +67 +65 +67 +64 +146 +97 +64 +212 +120 +56 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +125 +52 +209 +117 +53 +146 +97 +64 +65 +67 +64 +55 +66 +67 +178 +146 +122 +249 +189 +146 +250 +176 +132 +251 +168 +115 +247 +165 +111 +251 +168 +115 +249 +174 +124 +252 +185 +144 +203 +161 +131 +63 +74 +74 +56 +64 +60 +125 +90 +64 +209 +117 +53 +234 +126 +45 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +126 +45 +214 +121 +50 +146 +97 +64 +56 +64 +60 +41 +58 +57 +81 +73 +62 +209 +117 +53 +234 +126 +45 +234 +126 +45 +125 +90 +64 +51 +62 +63 +176 +156 +141 +55 +66 +67 +106 +82 +65 +225 +124 +48 +234 +126 +45 +234 +126 +45 +146 +97 +64 +41 +58 +57 +43 +57 +62 +125 +90 +64 +214 +121 +50 +234 +126 +45 +234 +126 +45 +183 +110 +59 +56 +64 +60 +137 +127 +115 +255 +215 +190 +194 +173 +157 +63 +74 +74 +62 +63 +61 +146 +97 +64 +214 +121 +50 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +125 +52 +234 +126 +45 +225 +124 +48 +173 +106 +60 +81 +73 +62 +35 +56 +60 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +118 +39 +246 +116 +28 +246 +116 +28 +247 +123 +41 +247 +130 +60 +249 +146 +83 +247 +165 +111 +248 +180 +134 +186 +157 +134 +58 +69 +70 +56 +64 +60 +135 +94 +64 +199 +115 +54 +234 +125 +52 +234 +126 +45 +234 +125 +52 +234 +125 +52 +234 +126 +45 +234 +125 +52 +212 +120 +56 +155 +100 +63 +76 +70 +64 +51 +62 +63 +146 +135 +124 +251 +209 +178 +253 +204 +176 +250 +200 +166 +253 +204 +176 +101 +100 +92 +69 +69 +61 +194 +112 +58 +234 +126 +45 +234 +126 +45 +199 +115 +54 +65 +67 +64 +35 +56 +60 +81 +73 +62 +194 +112 +58 +234 +125 +52 +234 +126 +45 +214 +121 +50 +95 +78 +64 +63 +74 +74 +238 +205 +179 +255 +215 +190 +161 +144 +134 +43 +57 +62 +81 +73 +62 +173 +106 +60 +225 +124 +48 +234 +126 +45 +234 +126 +45 +234 +125 +52 +234 +126 +45 +234 +126 +45 +194 +112 +58 +95 +78 +64 +41 +58 +57 +48 +58 +59 +155 +100 +63 +234 +126 +45 +234 +126 +45 +199 +115 +54 +69 +69 +61 +99 +90 +79 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +249 +174 +124 +251 +192 +154 +124 +111 +99 +35 +31 +30 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +47 +40 +38 +108 +87 +46 +175 +132 +40 +161 +127 +40 +168 +127 +42 +171 +129 +45 +158 +125 +46 +152 +119 +47 +203 +161 +131 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +89 +84 +82 +47 +40 +38 +139 +115 +96 +236 +186 +153 +252 +185 +144 +250 +176 +132 +249 +174 +124 +250 +176 +132 +252 +185 +144 +250 +197 +158 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +111 +94 +57 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +111 +94 +57 +48 +58 +59 +109 +106 +99 +253 +204 +176 +250 +200 +166 +250 +200 +166 +250 +200 +166 +253 +204 +176 +137 +127 +115 +43 +57 +62 +88 +82 +59 +158 +125 +46 +171 +129 +45 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +145 +114 +49 +69 +69 +61 +51 +62 +63 +187 +166 +150 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +253 +204 +176 +133 +120 +107 +48 +58 +59 +95 +87 +59 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +158 +125 +46 +75 +74 +61 +62 +63 +61 +168 +127 +42 +161 +127 +40 +158 +125 +46 +171 +129 +45 +83 +78 +61 +91 +92 +89 +255 +215 +190 +255 +215 +190 +207 +178 +158 +58 +69 +70 +63 +69 +60 +145 +114 +49 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +105 +93 +60 +43 +57 +62 +137 +110 +49 +171 +129 +45 +158 +125 +46 +171 +129 +45 +137 +110 +49 +51 +62 +63 +146 +135 +124 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +65 +67 +64 +137 +127 +115 +255 +215 +190 +255 +215 +190 +245 +212 +186 +120 +114 +108 +48 +58 +59 +100 +89 +56 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +129 +106 +52 +61 +67 +58 +63 +74 +74 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +95 +78 +64 +209 +117 +53 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +209 +117 +53 +89 +75 +66 +51 +62 +63 +187 +166 +150 +250 +197 +158 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +161 +144 +134 +41 +58 +57 +95 +78 +64 +199 +115 +54 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +199 +115 +54 +89 +75 +66 +41 +58 +57 +167 +142 +123 +250 +200 +166 +251 +192 +154 +252 +185 +144 +249 +189 +146 +250 +197 +158 +212 +173 +150 +63 +74 +74 +69 +69 +61 +183 +110 +59 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +163 +104 +61 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +234 +125 +52 +188 +112 +56 +51 +62 +63 +109 +106 +99 +51 +62 +63 +188 +112 +56 +234 +126 +45 +224 +123 +55 +234 +125 +52 +188 +112 +56 +43 +57 +62 +112 +85 +63 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +95 +78 +64 +109 +106 +99 +217 +187 +166 +58 +69 +70 +69 +69 +61 +188 +112 +56 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +214 +121 +50 +95 +78 +64 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +53 +247 +123 +41 +247 +118 +39 +247 +123 +41 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +186 +157 +134 +51 +62 +63 +81 +73 +62 +188 +112 +56 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +212 +120 +56 +106 +82 +65 +41 +58 +57 +146 +135 +124 +255 +215 +190 +255 +215 +190 +234 +204 +183 +63 +74 +74 +125 +90 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +234 +125 +52 +89 +75 +66 +62 +63 +61 +199 +115 +54 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +217 +187 +166 +172 +150 +134 +41 +58 +57 +106 +82 +65 +214 +121 +50 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +69 +69 +61 +227 +126 +50 +227 +126 +50 +224 +123 +55 +238 +123 +45 +125 +90 +64 +55 +66 +67 +250 +176 +132 +246 +156 +93 +250 +139 +73 +247 +123 +41 +247 +111 +26 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +248 +180 +134 +232 +190 +161 +47 +40 +38 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +71 +60 +43 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +170 +137 +67 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +74 +68 +68 +89 +75 +66 +212 +173 +150 +250 +197 +158 +251 +192 +154 +249 +189 +146 +251 +192 +154 +253 +204 +176 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +111 +94 +57 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +48 +58 +59 +95 +87 +59 +168 +127 +42 +168 +127 +42 +158 +125 +46 +161 +127 +40 +171 +129 +45 +158 +125 +46 +152 +119 +47 +152 +119 +47 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +69 +69 +61 +58 +69 +70 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +43 +57 +62 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +158 +125 +46 +168 +127 +42 +137 +110 +49 +83 +78 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +238 +205 +179 +84 +85 +82 +62 +63 +61 +145 +114 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +161 +127 +40 +158 +125 +46 +88 +82 +59 +152 +119 +47 +161 +127 +40 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +63 +69 +60 +137 +127 +115 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +105 +93 +60 +171 +129 +45 +161 +127 +40 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +152 +119 +47 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +145 +114 +49 +62 +63 +61 +70 +79 +77 +227 +196 +175 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +234 +126 +45 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +76 +70 +64 +70 +79 +77 +234 +204 +183 +253 +212 +188 +251 +209 +178 +253 +212 +188 +187 +166 +150 +43 +57 +62 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +95 +78 +64 +48 +58 +59 +194 +173 +157 +253 +212 +188 +251 +209 +178 +251 +209 +178 +245 +212 +186 +91 +92 +89 +62 +63 +61 +188 +112 +56 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +126 +45 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +212 +120 +56 +183 +110 +59 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +95 +78 +64 +84 +85 +82 +91 +92 +89 +62 +63 +61 +188 +112 +56 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +123 +41 +247 +123 +41 +247 +130 +53 +248 +138 +64 +249 +152 +92 +249 +174 +124 +209 +171 +139 +58 +69 +70 +81 +73 +62 +209 +117 +53 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +112 +85 +63 +41 +58 +57 +172 +150 +134 +255 +215 +190 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +194 +112 +58 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +238 +128 +40 +163 +104 +61 +55 +66 +67 +161 +144 +134 +58 +69 +70 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +126 +45 +234 +125 +52 +227 +126 +50 +234 +125 +52 +173 +106 +60 +118 +86 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +146 +97 +64 +51 +62 +63 +252 +185 +144 +249 +159 +103 +247 +143 +74 +247 +130 +53 +246 +116 +28 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +251 +168 +115 +251 +192 +154 +154 +133 +118 +24 +22 +23 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +108 +87 +46 +47 +40 +38 +158 +125 +46 +158 +125 +46 +158 +125 +46 +160 +120 +43 +156 +125 +62 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +152 +147 +147 +35 +31 +30 +55 +48 +48 +154 +133 +118 +217 +187 +166 +253 +204 +176 +253 +204 +176 +253 +212 +188 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +168 +127 +42 +158 +125 +46 +123 +102 +54 +105 +93 +60 +111 +94 +57 +129 +106 +52 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +83 +78 +61 +58 +69 +70 +227 +196 +175 +255 +215 +190 +217 +187 +166 +58 +69 +70 +75 +74 +61 +168 +127 +42 +161 +127 +40 +158 +125 +46 +168 +127 +42 +152 +119 +47 +105 +93 +60 +69 +69 +61 +62 +63 +61 +62 +63 +61 +75 +74 +61 +117 +98 +55 +161 +127 +40 +161 +127 +40 +158 +125 +46 +171 +129 +45 +145 +114 +49 +56 +64 +60 +97 +98 +96 +245 +212 +186 +255 +215 +190 +227 +196 +175 +63 +74 +74 +75 +74 +61 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +129 +106 +52 +111 +94 +57 +105 +93 +60 +129 +106 +52 +158 +125 +46 +168 +127 +42 +161 +127 +40 +152 +119 +47 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +84 +85 +82 +255 +215 +190 +161 +144 +134 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +117 +98 +55 +105 +93 +60 +117 +98 +55 +145 +114 +49 +171 +129 +45 +168 +127 +42 +152 +119 +47 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +194 +173 +157 +48 +58 +59 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +95 +87 +59 +69 +69 +61 +62 +63 +61 +62 +63 +61 +83 +78 +61 +123 +102 +54 +168 +127 +42 +161 +127 +40 +158 +125 +46 +171 +129 +45 +129 +106 +52 +51 +62 +63 +120 +114 +108 +255 +215 +190 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +188 +112 +56 +146 +97 +64 +135 +94 +64 +146 +97 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +173 +106 +60 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +76 +70 +64 +214 +121 +50 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +163 +104 +61 +135 +94 +64 +135 +94 +64 +163 +104 +61 +224 +123 +55 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +212 +120 +56 +76 +70 +64 +77 +85 +81 +238 +205 +179 +255 +215 +190 +255 +215 +190 +161 +144 +134 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +199 +115 +54 +155 +100 +63 +135 +94 +64 +146 +97 +64 +188 +112 +56 +227 +126 +50 +227 +126 +50 +214 +121 +50 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +199 +115 +54 +125 +90 +64 +51 +62 +63 +55 +66 +67 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +209 +117 +53 +155 +100 +63 +135 +94 +64 +139 +96 +61 +183 +110 +59 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +247 +130 +60 +247 +130 +53 +247 +130 +53 +247 +130 +60 +249 +146 +83 +247 +165 +111 +252 +185 +144 +101 +100 +92 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +173 +106 +60 +135 +94 +64 +135 +94 +64 +163 +104 +61 +214 +121 +50 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +81 +73 +62 +58 +69 +70 +227 +196 +175 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +125 +52 +212 +120 +56 +155 +100 +63 +69 +69 +61 +76 +78 +76 +84 +85 +82 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +183 +110 +59 +139 +96 +61 +135 +94 +64 +155 +100 +63 +209 +117 +53 +234 +125 +52 +224 +123 +55 +212 +120 +56 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +251 +192 +154 +251 +168 +115 +249 +146 +83 +247 +130 +53 +247 +118 +39 +246 +109 +10 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +250 +176 +132 +232 +190 +161 +65 +58 +56 +59 +50 +39 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +47 +40 +38 +129 +106 +52 +168 +127 +42 +160 +120 +43 +158 +125 +46 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +62 +63 +61 +35 +31 +30 +91 +92 +89 +164 +158 +157 +186 +181 +179 +82 +69 +65 +176 +156 +141 +255 +215 +190 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +65 +67 +64 +48 +58 +59 +55 +66 +67 +55 +66 +67 +48 +58 +59 +83 +78 +61 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +146 +135 +124 +255 +215 +190 +120 +114 +108 +56 +64 +60 +145 +114 +49 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +69 +69 +61 +43 +57 +62 +109 +106 +99 +146 +135 +124 +137 +127 +115 +91 +92 +89 +43 +57 +62 +88 +82 +59 +158 +125 +46 +161 +127 +40 +158 +125 +46 +171 +129 +45 +117 +98 +55 +48 +58 +59 +172 +150 +134 +255 +215 +190 +146 +135 +124 +51 +62 +63 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +75 +74 +61 +48 +58 +59 +55 +66 +67 +55 +66 +67 +48 +58 +59 +69 +69 +61 +137 +110 +49 +168 +127 +42 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +234 +204 +183 +70 +79 +77 +83 +78 +61 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +111 +94 +57 +56 +64 +60 +43 +57 +62 +58 +69 +70 +48 +58 +59 +56 +64 +60 +100 +89 +56 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +137 +127 +115 +255 +215 +190 +97 +98 +96 +62 +63 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +137 +110 +49 +62 +63 +61 +51 +62 +63 +120 +114 +108 +146 +135 +124 +137 +127 +115 +84 +85 +82 +43 +57 +62 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +100 +89 +56 +43 +57 +62 +194 +173 +157 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +118 +86 +65 +51 +62 +63 +43 +57 +62 +58 +69 +70 +41 +58 +57 +56 +64 +60 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +106 +82 +65 +63 +74 +74 +234 +204 +183 +255 +215 +190 +161 +144 +134 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +183 +110 +59 +76 +70 +64 +43 +57 +62 +55 +66 +67 +55 +66 +67 +48 +58 +59 +81 +73 +62 +183 +110 +59 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +48 +58 +59 +161 +144 +134 +255 +215 +190 +234 +204 +183 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +62 +63 +61 +43 +57 +62 +58 +69 +70 +43 +57 +62 +51 +62 +63 +125 +90 +64 +225 +124 +48 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +227 +126 +50 +173 +106 +60 +95 +78 +64 +56 +64 +60 +51 +62 +63 +120 +114 +108 +70 +79 +77 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +163 +104 +61 +65 +67 +64 +41 +58 +57 +55 +66 +67 +51 +62 +63 +48 +58 +59 +106 +82 +65 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +249 +146 +83 +248 +138 +64 +247 +130 +53 +247 +130 +60 +250 +139 +73 +246 +156 +93 +250 +176 +132 +186 +157 +134 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +199 +115 +54 +89 +75 +66 +48 +58 +59 +51 +62 +63 +55 +66 +67 +43 +57 +62 +76 +70 +64 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +137 +127 +115 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +199 +115 +54 +125 +90 +64 +69 +69 +61 +41 +58 +57 +97 +98 +96 +146 +135 +124 +51 +62 +63 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +106 +82 +65 +48 +58 +59 +51 +62 +63 +55 +66 +67 +41 +58 +57 +65 +67 +64 +163 +104 +61 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +197 +158 +251 +168 +115 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +252 +185 +144 +154 +133 +118 +24 +22 +23 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +71 +60 +43 +85 +71 +43 +171 +129 +45 +160 +120 +43 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +65 +58 +56 +62 +63 +61 +219 +212 +208 +253 +255 +252 +237 +233 +225 +120 +114 +108 +35 +31 +30 +55 +48 +48 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +84 +85 +82 +187 +166 +150 +227 +196 +175 +227 +196 +175 +161 +144 +134 +51 +62 +63 +69 +69 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +91 +92 +89 +217 +187 +166 +55 +66 +67 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +58 +69 +70 +187 +166 +150 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +161 +144 +134 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +84 +85 +82 +234 +204 +183 +76 +78 +76 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +62 +63 +61 +63 +74 +74 +176 +156 +141 +227 +196 +175 +227 +196 +175 +176 +156 +141 +70 +79 +77 +62 +63 +61 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +172 +150 +134 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +43 +57 +62 +120 +114 +108 +207 +178 +158 +227 +196 +175 +217 +187 +166 +120 +114 +108 +41 +58 +57 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +146 +135 +124 +207 +178 +158 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +62 +63 +61 +70 +79 +77 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +238 +205 +179 +137 +127 +115 +43 +57 +62 +117 +98 +55 +168 +127 +42 +158 +125 +46 +168 +127 +42 +152 +119 +47 +62 +63 +61 +109 +106 +99 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +41 +58 +57 +137 +127 +115 +217 +187 +166 +227 +196 +175 +207 +178 +158 +109 +106 +99 +41 +58 +57 +146 +97 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +176 +156 +141 +245 +212 +186 +70 +79 +77 +95 +78 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +188 +112 +56 +56 +64 +60 +70 +79 +77 +176 +156 +141 +227 +196 +175 +227 +196 +175 +176 +156 +141 +63 +74 +74 +62 +63 +61 +194 +112 +58 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +77 +85 +81 +245 +212 +186 +172 +150 +134 +48 +58 +59 +173 +106 +60 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +135 +94 +64 +35 +56 +60 +120 +114 +108 +207 +178 +158 +227 +196 +175 +217 +187 +166 +133 +120 +107 +35 +56 +60 +118 +86 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +95 +78 +64 +48 +58 +59 +70 +79 +77 +146 +135 +124 +217 +187 +166 +207 +178 +158 +51 +62 +63 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +91 +92 +89 +194 +173 +157 +227 +196 +175 +217 +187 +166 +146 +135 +124 +43 +57 +62 +89 +75 +66 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +247 +165 +111 +247 +150 +84 +248 +138 +64 +247 +130 +60 +248 +138 +64 +249 +146 +83 +247 +165 +111 +239 +182 +144 +91 +92 +89 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +76 +70 +64 +55 +66 +67 +172 +150 +134 +227 +196 +175 +227 +196 +175 +187 +166 +150 +77 +85 +81 +51 +62 +63 +173 +106 +60 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +118 +86 +65 +58 +69 +70 +217 +187 +166 +70 +79 +77 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +125 +90 +64 +56 +64 +60 +55 +66 +67 +120 +114 +108 +187 +166 +150 +245 +212 +186 +120 +114 +108 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +225 +124 +48 +95 +78 +64 +43 +57 +62 +146 +135 +124 +217 +187 +166 +227 +196 +175 +194 +173 +157 +91 +92 +89 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +197 +158 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +249 +146 +83 +251 +168 +115 +239 +182 +144 +65 +58 +56 +59 +50 +39 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +108 +87 +46 +47 +40 +38 +152 +119 +47 +170 +137 +67 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +174 +168 +167 +24 +22 +23 +109 +106 +99 +152 +147 +147 +97 +98 +96 +47 +40 +38 +24 +22 +23 +35 +31 +30 +35 +31 +30 +176 +156 +141 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +76 +78 +76 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +187 +166 +150 +51 +62 +63 +95 +87 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +55 +66 +67 +109 +106 +99 +48 +58 +59 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +117 +98 +55 +48 +58 +59 +187 +166 +150 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +171 +129 +45 +117 +98 +55 +55 +66 +67 +137 +127 +115 +55 +66 +67 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +58 +69 +70 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +91 +92 +89 +109 +106 +99 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +120 +114 +108 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +146 +135 +124 +146 +135 +124 +62 +63 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +100 +89 +56 +51 +62 +63 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +109 +106 +99 +63 +69 +60 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +100 +89 +56 +51 +62 +63 +227 +196 +175 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +41 +58 +57 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +109 +106 +99 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +76 +70 +64 +109 +106 +99 +194 +173 +157 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +225 +124 +48 +89 +75 +66 +63 +74 +74 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +58 +69 +70 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +43 +57 +62 +207 +178 +158 +109 +106 +99 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +120 +114 +108 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +188 +112 +56 +62 +63 +61 +58 +69 +70 +161 +144 +134 +234 +204 +183 +255 +215 +190 +255 +215 +190 +137 +127 +115 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +69 +69 +61 +77 +85 +81 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +176 +156 +141 +35 +56 +60 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +247 +150 +84 +250 +139 +73 +248 +138 +64 +250 +139 +73 +249 +152 +92 +249 +174 +124 +209 +171 +139 +43 +57 +62 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +112 +85 +63 +51 +62 +63 +194 +173 +157 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +227 +196 +175 +70 +79 +77 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +146 +135 +124 +77 +85 +81 +135 +94 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +95 +78 +64 +35 +56 +60 +120 +114 +108 +217 +187 +166 +255 +215 +190 +255 +215 +190 +227 +196 +175 +58 +69 +70 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +41 +58 +57 +172 +150 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +51 +62 +63 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +178 +146 +122 +24 +22 +23 +101 +83 +47 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +47 +40 +38 +123 +102 +54 +209 +171 +139 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +164 +158 +157 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +47 +40 +38 +194 +173 +157 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +176 +156 +141 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +120 +114 +108 +56 +64 +60 +152 +119 +47 +161 +127 +40 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +48 +58 +59 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +63 +74 +74 +194 +173 +157 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +172 +150 +134 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +51 +62 +63 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +70 +79 +77 +63 +74 +74 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +55 +66 +67 +227 +196 +175 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +234 +204 +183 +70 +79 +77 +88 +82 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +97 +98 +96 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +84 +85 +82 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +207 +178 +158 +217 +187 +166 +146 +135 +124 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +187 +166 +150 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +70 +79 +77 +245 +212 +186 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +217 +187 +166 +43 +57 +62 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +106 +82 +65 +77 +85 +81 +133 +120 +107 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +48 +58 +59 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +77 +85 +81 +118 +86 +65 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +55 +66 +67 +227 +196 +175 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +234 +204 +183 +63 +74 +74 +106 +82 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +224 +123 +55 +89 +75 +66 +63 +74 +74 +217 +187 +166 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +91 +92 +89 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +146 +97 +64 +43 +57 +62 +187 +166 +150 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +101 +100 +92 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +247 +150 +84 +250 +139 +73 +250 +139 +73 +247 +143 +74 +249 +159 +103 +250 +176 +132 +154 +133 +118 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +176 +156 +141 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +91 +92 +89 +70 +79 +77 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +146 +97 +64 +35 +56 +60 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +97 +98 +96 +255 +215 +190 +255 +215 +190 +255 +215 +190 +253 +212 +188 +255 +215 +190 +255 +215 +190 +187 +166 +150 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +159 +103 +248 +180 +134 +124 +111 +99 +35 +31 +30 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +59 +50 +39 +85 +71 +43 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +207 +202 +200 +47 +40 +38 +24 +22 +23 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +65 +58 +56 +238 +205 +179 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +100 +89 +56 +63 +74 +74 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +194 +173 +157 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +43 +57 +62 +95 +87 +59 +168 +127 +42 +158 +125 +46 +161 +127 +40 +158 +125 +46 +63 +69 +60 +43 +57 +62 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +43 +57 +62 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +43 +57 +62 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +51 +62 +63 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +217 +187 +166 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +109 +106 +99 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +120 +114 +108 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +120 +114 +108 +70 +79 +77 +105 +93 +60 +171 +129 +45 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +51 +62 +63 +43 +57 +62 +111 +94 +57 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +62 +63 +61 +146 +135 +124 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +212 +188 +250 +200 +166 +250 +200 +166 +253 +204 +176 +253 +212 +188 +253 +212 +188 +97 +98 +96 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +63 +74 +74 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +135 +94 +64 +55 +66 +67 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +217 +187 +166 +51 +62 +63 +139 +96 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +58 +69 +70 +51 +62 +63 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +224 +123 +55 +81 +73 +62 +109 +106 +99 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +120 +114 +108 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +70 +79 +77 +118 +86 +65 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +77 +85 +81 +245 +212 +186 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +176 +156 +141 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +251 +168 +115 +249 +152 +92 +247 +143 +74 +247 +143 +74 +247 +150 +84 +249 +159 +103 +248 +180 +134 +120 +114 +108 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +43 +57 +62 +194 +173 +157 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +234 +204 +183 +63 +74 +74 +112 +85 +63 +234 +125 +52 +227 +126 +50 +224 +123 +55 +234 +125 +52 +106 +82 +65 +58 +69 +70 +55 +66 +67 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +77 +85 +81 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +172 +150 +134 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +245 +212 +186 +63 +74 +74 +112 +85 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +252 +185 +144 +82 +69 +65 +47 +40 +38 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +85 +71 +43 +59 +50 +39 +216 +194 +154 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +164 +158 +157 +47 +40 +38 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +65 +67 +64 +65 +58 +56 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +227 +196 +175 +58 +69 +70 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +41 +58 +57 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +137 +110 +49 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +41 +58 +57 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +70 +79 +77 +245 +212 +186 +253 +212 +188 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +238 +205 +179 +70 +79 +77 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +152 +119 +47 +56 +64 +60 +146 +135 +124 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +253 +204 +176 +255 +215 +190 +172 +150 +134 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +97 +98 +96 +55 +66 +67 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +123 +102 +54 +117 +98 +55 +145 +114 +49 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +137 +127 +115 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +187 +166 +150 +255 +215 +190 +253 +204 +176 +251 +192 +154 +251 +192 +154 +250 +197 +158 +253 +204 +176 +255 +215 +190 +137 +127 +115 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +43 +57 +62 +41 +58 +57 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +77 +85 +81 +245 +212 +186 +251 +209 +178 +250 +197 +158 +249 +189 +146 +251 +192 +154 +250 +197 +158 +251 +209 +178 +238 +205 +179 +77 +85 +81 +112 +85 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +106 +82 +65 +41 +58 +57 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +253 +204 +176 +255 +215 +190 +176 +156 +141 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +234 +125 +52 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +176 +156 +141 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +227 +196 +175 +58 +69 +70 +139 +96 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +255 +215 +190 +207 +178 +158 +48 +58 +59 +163 +104 +61 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +192 +154 +249 +174 +124 +246 +156 +93 +247 +150 +84 +249 +146 +83 +249 +152 +92 +251 +168 +115 +249 +189 +146 +97 +98 +96 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +58 +69 +70 +227 +196 +175 +253 +212 +188 +250 +200 +166 +251 +192 +154 +249 +189 +146 +250 +197 +158 +251 +209 +178 +255 +215 +190 +97 +98 +96 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +43 +57 +62 +43 +57 +62 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +69 +69 +61 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +126 +45 +155 +100 +63 +43 +57 +62 +207 +178 +158 +255 +215 +190 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +197 +158 +251 +209 +178 +255 +215 +190 +109 +106 +99 +89 +75 +66 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +143 +74 +249 +159 +103 +252 +185 +144 +55 +48 +48 +59 +50 +39 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +101 +83 +47 +59 +50 +39 +209 +171 +139 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +137 +127 +115 +101 +100 +92 +120 +114 +108 +186 +181 +179 +152 +147 +147 +55 +48 +48 +227 +196 +175 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +234 +204 +183 +70 +79 +77 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +41 +58 +57 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +75 +74 +61 +41 +58 +57 +88 +82 +59 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +77 +85 +81 +245 +212 +186 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +245 +212 +186 +84 +85 +82 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +161 +144 +134 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +187 +166 +150 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +65 +67 +64 +91 +92 +89 +55 +66 +67 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +63 +69 +60 +137 +127 +115 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +173 +106 +60 +48 +58 +59 +187 +166 +150 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +41 +58 +57 +118 +86 +65 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +95 +78 +64 +91 +92 +89 +255 +215 +190 +253 +204 +176 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +253 +204 +176 +245 +212 +186 +91 +92 +89 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +41 +58 +57 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +227 +126 +50 +199 +115 +54 +56 +64 +60 +161 +144 +134 +255 +215 +190 +250 +200 +166 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +187 +166 +150 +48 +58 +59 +183 +110 +59 +234 +125 +52 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +217 +187 +166 +55 +66 +67 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +69 +69 +61 +137 +127 +115 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +249 +189 +146 +250 +200 +166 +253 +212 +188 +217 +187 +166 +51 +62 +63 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +250 +197 +158 +249 +174 +124 +249 +159 +103 +249 +152 +92 +249 +152 +92 +249 +159 +103 +249 +174 +124 +250 +197 +158 +91 +92 +89 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +125 +90 +64 +70 +79 +77 +234 +204 +183 +251 +209 +178 +250 +197 +158 +249 +189 +146 +252 +185 +144 +251 +192 +154 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +126 +45 +135 +94 +64 +41 +58 +57 +41 +58 +57 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +212 +188 +253 +212 +188 +251 +209 +178 +251 +209 +178 +255 +215 +190 +137 +127 +115 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +146 +97 +64 +51 +62 +63 +227 +196 +175 +253 +212 +188 +250 +197 +158 +249 +189 +146 +249 +189 +146 +251 +192 +154 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +252 +185 +144 +55 +48 +48 +59 +50 +39 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +154 +125 +71 +170 +137 +67 +108 +87 +46 +59 +50 +39 +192 +155 +91 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +186 +181 +179 +47 +40 +38 +65 +58 +56 +245 +212 +186 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +253 +212 +188 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +234 +204 +183 +63 +74 +74 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +75 +74 +61 +41 +58 +57 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +111 +94 +57 +56 +64 +60 +43 +57 +62 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +95 +87 +59 +70 +79 +77 +245 +212 +186 +251 +209 +178 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +197 +158 +251 +209 +178 +245 +212 +186 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +152 +119 +47 +56 +64 +60 +161 +144 +134 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +176 +156 +141 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +91 +92 +89 +55 +66 +67 +123 +102 +54 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +145 +114 +49 +100 +89 +56 +48 +58 +59 +187 +166 +150 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +255 +215 +190 +250 +200 +166 +251 +192 +154 +251 +192 +154 +250 +197 +158 +253 +204 +176 +255 +215 +190 +146 +135 +124 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +41 +58 +57 +112 +85 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +84 +85 +82 +255 +215 +190 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +251 +209 +178 +238 +205 +179 +84 +85 +82 +106 +82 +65 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +106 +82 +65 +41 +58 +57 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +146 +135 +124 +255 +215 +190 +253 +204 +176 +251 +192 +154 +249 +189 +146 +251 +192 +154 +250 +200 +166 +255 +215 +190 +176 +156 +141 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +253 +212 +188 +253 +204 +176 +250 +200 +166 +253 +204 +176 +217 +187 +166 +55 +66 +67 +146 +97 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +253 +204 +176 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +200 +166 +253 +212 +188 +207 +178 +158 +48 +58 +59 +163 +104 +61 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +250 +200 +166 +248 +180 +134 +251 +168 +115 +247 +165 +111 +247 +165 +111 +251 +168 +115 +248 +180 +134 +250 +200 +166 +91 +92 +89 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +126 +45 +125 +90 +64 +63 +74 +74 +227 +196 +175 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +197 +158 +253 +204 +176 +255 +215 +190 +109 +106 +99 +89 +75 +66 +225 +124 +48 +227 +126 +50 +224 +123 +55 +234 +125 +52 +125 +90 +64 +43 +57 +62 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +251 +209 +178 +137 +127 +115 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +43 +57 +62 +217 +187 +166 +253 +212 +188 +250 +200 +166 +251 +192 +154 +249 +189 +146 +250 +197 +158 +253 +204 +176 +255 +215 +190 +120 +114 +108 +81 +73 +62 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +250 +139 +73 +249 +159 +103 +248 +180 +134 +76 +70 +64 +47 +40 +38 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +170 +137 +67 +101 +83 +47 +59 +50 +39 +170 +137 +67 +255 +238 +227 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +152 +147 +147 +35 +31 +30 +24 +22 +23 +115 +102 +92 +255 +215 +190 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +58 +69 +70 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +207 +178 +158 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +161 +127 +40 +158 +125 +46 +75 +74 +61 +48 +58 +59 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +48 +58 +59 +101 +100 +92 +91 +92 +89 +75 +74 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +111 +94 +57 +55 +66 +67 +227 +196 +175 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +255 +215 +190 +227 +196 +175 +51 +62 +63 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +48 +58 +59 +48 +58 +59 +123 +102 +54 +168 +127 +42 +158 +125 +46 +161 +127 +40 +158 +125 +46 +69 +69 +61 +120 +114 +108 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +251 +209 +178 +255 +215 +190 +146 +135 +124 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +109 +106 +99 +63 +74 +74 +111 +94 +57 +171 +129 +45 +158 +125 +46 +161 +127 +40 +152 +119 +47 +69 +69 +61 +51 +62 +63 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +56 +64 +60 +51 +62 +63 +48 +58 +59 +120 +114 +108 +245 +212 +186 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +137 +127 +115 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +200 +166 +250 +200 +166 +253 +212 +188 +255 +215 +190 +109 +106 +99 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +125 +52 +155 +100 +63 +48 +58 +59 +43 +57 +62 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +125 +90 +64 +63 +74 +74 +227 +196 +175 +253 +212 +188 +250 +200 +166 +250 +197 +158 +250 +197 +158 +253 +204 +176 +255 +215 +190 +227 +196 +175 +55 +66 +67 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +48 +58 +59 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +120 +114 +108 +255 +215 +190 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +251 +209 +178 +255 +215 +190 +137 +127 +115 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +48 +58 +59 +176 +156 +141 +251 +209 +178 +250 +200 +166 +250 +197 +158 +250 +200 +166 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +91 +92 +89 +253 +212 +188 +253 +212 +188 +250 +200 +166 +250 +200 +166 +250 +200 +166 +251 +209 +178 +255 +215 +190 +172 +150 +134 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +251 +209 +178 +251 +192 +154 +250 +176 +132 +249 +174 +124 +249 +174 +124 +248 +180 +134 +251 +192 +154 +251 +209 +178 +109 +106 +99 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +146 +97 +64 +43 +57 +62 +217 +187 +166 +255 +215 +190 +253 +204 +176 +250 +197 +158 +250 +197 +158 +250 +200 +166 +253 +212 +188 +245 +212 +186 +70 +79 +77 +106 +82 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +51 +62 +63 +51 +62 +63 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +245 +212 +186 +250 +200 +166 +251 +192 +154 +250 +197 +158 +253 +204 +176 +146 +135 +124 +65 +67 +64 +209 +117 +53 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +187 +166 +150 +255 +215 +190 +253 +204 +176 +250 +200 +166 +250 +197 +158 +250 +200 +166 +253 +212 +188 +255 +215 +190 +84 +85 +82 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +109 +10 +247 +111 +26 +247 +123 +41 +248 +138 +64 +249 +152 +92 +249 +174 +124 +121 +100 +85 +35 +31 +30 +108 +87 +46 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +171 +129 +45 +85 +71 +43 +71 +60 +43 +171 +129 +45 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +237 +233 +225 +174 +168 +167 +81 +77 +76 +24 +22 +23 +35 +31 +30 +35 +31 +30 +187 +166 +150 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +51 +62 +63 +176 +156 +141 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +146 +135 +124 +51 +62 +63 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +152 +119 +47 +56 +64 +60 +43 +57 +62 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +48 +58 +59 +146 +135 +124 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +172 +150 +134 +172 +150 +134 +146 +135 +124 +146 +135 +124 +194 +173 +157 +245 +212 +186 +137 +127 +115 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +161 +144 +134 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +161 +144 +134 +48 +58 +59 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +55 +66 +67 +51 +62 +63 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +70 +79 +77 +245 +212 +186 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +255 +215 +190 +255 +215 +190 +91 +92 +89 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +133 +120 +107 +84 +85 +82 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +55 +66 +67 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +161 +144 +134 +172 +150 +134 +172 +150 +134 +137 +127 +115 +146 +135 +124 +207 +178 +158 +245 +212 +186 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +76 +78 +76 +245 +212 +186 +255 +215 +190 +253 +212 +188 +253 +212 +188 +253 +212 +188 +255 +215 +190 +227 +196 +175 +58 +69 +70 +118 +86 +65 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +125 +90 +64 +63 +74 +74 +97 +98 +96 +76 +70 +64 +214 +121 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +163 +104 +61 +48 +58 +59 +187 +166 +150 +255 +215 +190 +255 +215 +190 +251 +209 +178 +251 +209 +178 +255 +215 +190 +255 +215 +190 +176 +156 +141 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +227 +126 +50 +212 +120 +56 +69 +69 +61 +101 +100 +92 +63 +74 +74 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +106 +82 +65 +63 +74 +74 +234 +204 +183 +255 +215 +190 +253 +212 +188 +253 +212 +188 +253 +212 +188 +255 +215 +190 +245 +212 +186 +70 +79 +77 +89 +75 +66 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +176 +156 +141 +253 +204 +176 +251 +192 +154 +251 +192 +154 +251 +192 +154 +250 +200 +166 +77 +85 +81 +106 +82 +65 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +135 +94 +64 +51 +62 +63 +217 +187 +166 +255 +215 +190 +255 +215 +190 +253 +212 +188 +253 +212 +188 +255 +215 +190 +255 +215 +190 +109 +106 +99 +76 +70 +64 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +250 +200 +166 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +250 +200 +166 +255 +215 +190 +146 +135 +124 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +51 +62 +63 +146 +135 +124 +255 +215 +190 +255 +215 +190 +251 +209 +178 +251 +209 +178 +253 +212 +188 +255 +215 +190 +194 +173 +157 +43 +57 +62 +146 +97 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +77 +85 +81 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +251 +209 +178 +250 +197 +158 +249 +189 +146 +249 +189 +146 +250 +200 +166 +172 +150 +134 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +120 +114 +108 +255 +215 +190 +255 +215 +190 +253 +212 +188 +251 +209 +178 +253 +212 +188 +255 +215 +190 +217 +187 +166 +51 +62 +63 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +60 +247 +150 +84 +251 +168 +115 +187 +140 +108 +24 +22 +23 +59 +50 +39 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +154 +125 +71 +156 +125 +62 +158 +125 +46 +47 +40 +38 +108 +87 +46 +158 +125 +46 +195 +167 +113 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +164 +158 +157 +109 +106 +99 +65 +58 +56 +24 +22 +23 +24 +22 +23 +94 +60 +47 +178 +86 +46 +59 +50 +39 +150 +125 +114 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +69 +69 +61 +84 +85 +82 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +55 +66 +67 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +123 +102 +54 +51 +62 +63 +76 +78 +76 +56 +64 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +217 +187 +166 +133 +120 +107 +77 +85 +81 +77 +85 +81 +146 +135 +124 +245 +212 +186 +176 +156 +141 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +75 +74 +61 +63 +74 +74 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +76 +78 +76 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +77 +85 +81 +77 +85 +81 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +172 +150 +134 +48 +58 +59 +117 +98 +55 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +120 +114 +108 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +111 +94 +57 +51 +62 +63 +176 +156 +141 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +120 +114 +108 +70 +79 +77 +84 +85 +82 +161 +144 +134 +255 +215 +190 +255 +215 +190 +161 +144 +134 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +155 +100 +63 +41 +58 +57 +161 +144 +134 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +137 +127 +115 +48 +58 +59 +183 +110 +59 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +89 +75 +66 +97 +98 +96 +172 +150 +134 +48 +58 +59 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +214 +121 +50 +76 +70 +64 +84 +85 +82 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +77 +85 +81 +81 +73 +62 +224 +123 +55 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +176 +156 +141 +97 +98 +96 +95 +78 +64 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +161 +144 +134 +41 +58 +57 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +250 +200 +166 +249 +189 +146 +252 +185 +144 +249 +189 +146 +250 +200 +166 +120 +114 +108 +69 +69 +61 +214 +121 +50 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +101 +100 +92 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +187 +166 +150 +43 +57 +62 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +253 +212 +188 +253 +204 +176 +250 +200 +166 +250 +200 +166 +253 +204 +176 +253 +212 +188 +255 +215 +190 +187 +166 +150 +41 +58 +57 +155 +100 +63 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +95 +78 +64 +58 +69 +70 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +91 +92 +89 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +62 +63 +61 +133 +120 +107 +77 +85 +81 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +253 +204 +176 +251 +192 +154 +252 +185 +144 +252 +185 +144 +251 +192 +154 +212 +173 +150 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +118 +86 +65 +51 +62 +63 +207 +178 +158 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +109 +106 +99 +56 +64 +60 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +247 +111 +26 +246 +116 +28 +247 +130 +53 +247 +143 +74 +249 +159 +103 +248 +180 +134 +89 +75 +66 +24 +22 +23 +85 +71 +43 +171 +129 +45 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +154 +125 +71 +156 +125 +62 +175 +132 +40 +85 +71 +43 +47 +40 +38 +158 +125 +46 +158 +125 +46 +170 +137 +67 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +207 +202 +200 +164 +158 +157 +146 +135 +124 +120 +114 +108 +89 +84 +82 +65 +58 +56 +47 +40 +38 +24 +22 +23 +24 +22 +23 +35 +31 +30 +94 +60 +47 +178 +86 +46 +226 +110 +35 +241 +100 +24 +144 +77 +47 +65 +58 +56 +253 +212 +188 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +129 +106 +52 +48 +58 +59 +101 +100 +92 +217 +187 +166 +245 +212 +186 +245 +212 +186 +194 +173 +157 +76 +78 +76 +56 +64 +60 +145 +114 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +77 +85 +81 +176 +156 +141 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +95 +87 +59 +41 +58 +57 +137 +127 +115 +227 +196 +175 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +207 +178 +158 +120 +114 +108 +48 +58 +59 +62 +63 +61 +100 +89 +56 +95 +87 +59 +51 +62 +63 +120 +114 +108 +227 +196 +175 +55 +66 +67 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +84 +85 +82 +207 +178 +158 +245 +212 +186 +245 +212 +186 +207 +178 +158 +97 +98 +96 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +91 +92 +89 +120 +114 +108 +63 +69 +60 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +43 +57 +62 +161 +144 +134 +227 +196 +175 +253 +212 +188 +234 +204 +183 +161 +144 +134 +51 +62 +63 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +176 +156 +141 +48 +58 +59 +137 +110 +49 +171 +129 +45 +158 +125 +46 +161 +127 +40 +158 +125 +46 +75 +74 +61 +43 +57 +62 +161 +144 +134 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +194 +173 +157 +109 +106 +99 +43 +57 +62 +69 +69 +61 +105 +93 +60 +88 +82 +59 +48 +58 +59 +146 +135 +124 +255 +215 +190 +161 +144 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +225 +124 +48 +95 +78 +64 +43 +57 +62 +161 +144 +134 +234 +204 +183 +245 +212 +186 +227 +196 +175 +146 +135 +124 +35 +56 +60 +125 +90 +64 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +188 +112 +56 +51 +62 +63 +161 +144 +134 +234 +204 +183 +51 +62 +63 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +125 +52 +163 +104 +61 +43 +57 +62 +97 +98 +96 +207 +178 +158 +245 +212 +186 +245 +212 +186 +207 +178 +158 +91 +92 +89 +48 +58 +59 +173 +106 +60 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +118 +86 +65 +55 +66 +67 +234 +204 +183 +146 +135 +124 +56 +64 +60 +194 +112 +58 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +35 +56 +60 +146 +135 +124 +227 +196 +175 +253 +212 +188 +234 +204 +183 +161 +144 +134 +43 +57 +62 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +176 +156 +141 +250 +197 +158 +252 +185 +144 +248 +180 +134 +248 +180 +134 +251 +192 +154 +172 +150 +134 +48 +58 +59 +173 +106 +60 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +41 +58 +57 +120 +114 +108 +217 +187 +166 +245 +212 +186 +234 +204 +183 +176 +156 +141 +58 +69 +70 +81 +73 +62 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +255 +215 +190 +217 +187 +166 +133 +120 +107 +84 +85 +82 +91 +92 +89 +146 +135 +124 +234 +204 +183 +238 +205 +179 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +84 +85 +82 +194 +173 +157 +245 +212 +186 +245 +212 +186 +217 +187 +166 +109 +106 +99 +41 +58 +57 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +146 +97 +64 +51 +62 +63 +187 +166 +150 +76 +78 +76 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +97 +98 +96 +250 +200 +166 +249 +189 +146 +248 +180 +134 +248 +180 +134 +252 +185 +144 +232 +190 +161 +70 +79 +77 +112 +85 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +199 +115 +54 +65 +67 +64 +70 +79 +77 +187 +166 +150 +238 +205 +179 +245 +212 +186 +217 +187 +166 +133 +120 +107 +35 +56 +60 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +123 +41 +247 +130 +60 +247 +150 +84 +251 +168 +115 +203 +161 +131 +55 +48 +48 +24 +22 +23 +71 +60 +43 +145 +114 +49 +171 +129 +45 +171 +129 +45 +158 +125 +46 +156 +125 +62 +154 +125 +71 +154 +125 +71 +156 +125 +62 +156 +125 +62 +171 +129 +45 +171 +129 +45 +101 +83 +47 +35 +31 +30 +123 +102 +54 +171 +129 +45 +158 +125 +46 +160 +120 +43 +224 +207 +180 +253 +255 +252 +253 +255 +252 +219 +212 +208 +47 +40 +38 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +24 +22 +23 +47 +40 +38 +226 +110 +35 +241 +100 +24 +226 +110 +35 +226 +110 +35 +144 +77 +47 +55 +48 +48 +238 +205 +179 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +123 +102 +54 +56 +64 +60 +51 +62 +63 +84 +85 +82 +84 +85 +82 +48 +58 +59 +63 +69 +60 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +245 +212 +186 +84 +85 +82 +69 +69 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +95 +87 +59 +48 +58 +59 +63 +74 +74 +109 +106 +99 +133 +120 +107 +133 +120 +107 +91 +92 +89 +51 +62 +63 +56 +64 +60 +100 +89 +56 +152 +119 +47 +171 +129 +45 +175 +132 +40 +100 +89 +56 +48 +58 +59 +217 +187 +166 +120 +114 +108 +63 +69 +60 +152 +119 +47 +161 +127 +40 +158 +125 +46 +158 +125 +46 +168 +127 +42 +129 +106 +52 +61 +67 +58 +51 +62 +63 +84 +85 +82 +84 +85 +82 +51 +62 +63 +56 +64 +60 +123 +102 +54 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +97 +98 +96 +187 +166 +150 +48 +58 +59 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +83 +78 +61 +48 +58 +59 +63 +74 +74 +91 +92 +89 +70 +79 +77 +48 +58 +59 +75 +74 +61 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +146 +135 +124 +234 +204 +183 +63 +74 +74 +83 +78 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +83 +78 +61 +48 +58 +59 +70 +79 +77 +109 +106 +99 +133 +120 +107 +120 +114 +108 +84 +85 +82 +48 +58 +59 +61 +67 +58 +111 +94 +57 +158 +125 +46 +171 +129 +45 +171 +129 +45 +88 +82 +59 +58 +69 +70 +238 +205 +179 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +212 +120 +56 +95 +78 +64 +43 +57 +62 +70 +79 +77 +84 +85 +82 +63 +74 +74 +48 +58 +59 +118 +86 +65 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +112 +85 +63 +55 +66 +67 +227 +196 +175 +255 +215 +190 +120 +114 +108 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +155 +100 +63 +62 +63 +61 +51 +62 +63 +77 +85 +81 +77 +85 +81 +51 +62 +63 +62 +63 +61 +155 +100 +63 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +199 +115 +54 +56 +64 +60 +120 +114 +108 +255 +215 +190 +217 +187 +166 +43 +57 +62 +125 +90 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +106 +82 +65 +48 +58 +59 +63 +74 +74 +84 +85 +82 +70 +79 +77 +43 +57 +62 +95 +78 +64 +212 +120 +56 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +172 +150 +134 +251 +192 +154 +248 +180 +134 +249 +174 +124 +249 +174 +124 +248 +180 +134 +236 +186 +153 +63 +74 +74 +95 +78 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +51 +62 +63 +55 +66 +67 +84 +85 +82 +70 +79 +77 +41 +58 +57 +81 +73 +62 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +255 +215 +190 +194 +173 +157 +58 +69 +70 +62 +63 +61 +106 +82 +65 +95 +78 +64 +51 +62 +63 +91 +92 +89 +238 +205 +179 +161 +144 +134 +48 +58 +59 +183 +110 +59 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +125 +52 +173 +106 +60 +65 +67 +64 +48 +58 +59 +77 +85 +81 +84 +85 +82 +55 +66 +67 +56 +64 +60 +146 +97 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +69 +69 +61 +101 +100 +92 +227 +196 +175 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +250 +197 +158 +252 +185 +144 +249 +174 +124 +249 +174 +124 +250 +176 +132 +251 +192 +154 +120 +114 +108 +62 +63 +61 +209 +117 +53 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +188 +112 +56 +76 +70 +64 +41 +58 +57 +77 +85 +81 +84 +85 +82 +58 +69 +70 +48 +58 +59 +125 +90 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +243 +101 +2 +247 +103 +7 +247 +103 +7 +247 +111 +26 +247 +118 +39 +247 +130 +53 +250 +139 +73 +246 +156 +93 +249 +174 +124 +203 +161 +131 +55 +48 +48 +24 +22 +23 +35 +31 +30 +85 +71 +43 +137 +110 +49 +152 +119 +47 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +152 +119 +47 +117 +98 +55 +59 +50 +39 +35 +31 +30 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +224 +207 +180 +253 +255 +252 +253 +255 +252 +253 +255 +252 +146 +135 +124 +65 +58 +56 +35 +31 +30 +24 +22 +23 +24 +22 +23 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +83 +53 +42 +236 +108 +29 +236 +108 +29 +226 +110 +35 +94 +60 +47 +65 +58 +56 +253 +212 +188 +255 +215 +190 +238 +205 +179 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +145 +114 +49 +105 +93 +60 +83 +78 +61 +83 +78 +61 +111 +94 +57 +158 +125 +46 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +88 +82 +59 +51 +62 +63 +217 +187 +166 +255 +215 +190 +176 +156 +141 +43 +57 +62 +105 +93 +60 +171 +129 +45 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +137 +110 +49 +88 +82 +59 +69 +69 +61 +62 +63 +61 +63 +69 +60 +75 +74 +61 +105 +93 +60 +152 +119 +47 +171 +129 +45 +168 +127 +42 +158 +125 +46 +171 +129 +45 +129 +106 +52 +48 +58 +59 +194 +173 +157 +207 +178 +158 +43 +57 +62 +100 +89 +56 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +152 +119 +47 +111 +94 +57 +83 +78 +61 +83 +78 +61 +105 +93 +60 +145 +114 +49 +168 +127 +42 +161 +127 +40 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +245 +212 +186 +77 +85 +81 +75 +74 +61 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +129 +106 +52 +95 +87 +59 +81 +73 +62 +95 +87 +59 +123 +102 +54 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +56 +64 +60 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +161 +144 +134 +48 +58 +59 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +129 +106 +52 +88 +82 +59 +69 +69 +61 +62 +63 +61 +63 +69 +60 +75 +74 +61 +117 +98 +55 +152 +119 +47 +171 +129 +45 +161 +127 +40 +158 +125 +46 +171 +129 +45 +111 +94 +57 +48 +58 +59 +227 +196 +175 +176 +156 +141 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +163 +104 +61 +112 +85 +63 +95 +78 +64 +118 +86 +65 +173 +106 +60 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +183 +110 +59 +51 +62 +63 +133 +120 +107 +255 +215 +190 +255 +215 +190 +217 +187 +166 +51 +62 +63 +106 +82 +65 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +199 +115 +54 +135 +94 +64 +95 +78 +64 +95 +78 +64 +135 +94 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +106 +82 +65 +51 +62 +63 +217 +187 +166 +255 +215 +190 +255 +215 +190 +120 +114 +108 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +173 +106 +60 +118 +86 +65 +95 +78 +64 +112 +85 +63 +163 +104 +61 +227 +126 +50 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +101 +100 +92 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +172 +150 +134 +252 +185 +144 +249 +174 +124 +247 +165 +111 +247 +165 +111 +249 +174 +124 +252 +185 +144 +154 +133 +118 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +188 +112 +56 +125 +90 +64 +95 +78 +64 +106 +82 +65 +155 +100 +63 +224 +123 +55 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +137 +127 +115 +253 +212 +188 +91 +92 +89 +69 +69 +61 +194 +112 +58 +234 +126 +45 +234 +126 +45 +163 +104 +61 +51 +62 +63 +137 +127 +115 +238 +205 +179 +63 +74 +74 +89 +75 +66 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +209 +117 +53 +146 +97 +64 +106 +82 +65 +95 +78 +64 +125 +90 +64 +194 +112 +58 +234 +126 +45 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +125 +90 +64 +41 +58 +57 +194 +173 +157 +238 +205 +179 +63 +74 +74 +135 +94 +64 +234 +125 +52 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +251 +192 +154 +250 +176 +132 +251 +168 +115 +247 +165 +111 +249 +174 +124 +245 +179 +138 +195 +157 +134 +41 +58 +57 +135 +94 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +146 +97 +64 +106 +82 +65 +95 +78 +64 +125 +90 +64 +183 +110 +59 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +125 +52 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +249 +152 +92 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +247 +103 +7 +246 +109 +10 +247 +111 +26 +247 +118 +39 +247 +130 +53 +247 +143 +74 +249 +159 +103 +250 +176 +132 +219 +170 +138 +115 +102 +92 +47 +40 +38 +24 +22 +23 +35 +31 +30 +47 +40 +38 +59 +50 +39 +59 +50 +39 +59 +50 +39 +59 +50 +39 +47 +40 +38 +47 +40 +38 +71 +60 +43 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +152 +119 +47 +170 +137 +67 +219 +212 +208 +237 +233 +225 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +219 +212 +208 +152 +147 +147 +109 +106 +99 +65 +67 +64 +35 +31 +30 +35 +31 +30 +35 +31 +30 +35 +31 +30 +24 +22 +23 +94 +60 +47 +178 +86 +46 +109 +63 +45 +35 +31 +30 +124 +111 +99 +251 +209 +178 +251 +209 +178 +234 +204 +183 +76 +78 +76 +95 +87 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +117 +98 +55 +129 +106 +52 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +171 +129 +45 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +117 +98 +55 +48 +58 +59 +146 +135 +124 +255 +215 +190 +255 +215 +190 +255 +215 +190 +120 +114 +108 +51 +62 +63 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +152 +119 +47 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +158 +125 +46 +81 +73 +62 +58 +69 +70 +227 +196 +175 +255 +215 +190 +120 +114 +108 +48 +58 +59 +129 +106 +52 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +152 +119 +47 +117 +98 +55 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +88 +82 +59 +84 +85 +82 +255 +215 +190 +176 +156 +141 +48 +58 +59 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +145 +114 +49 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +117 +98 +55 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +63 +69 +60 +137 +127 +115 +255 +215 +190 +238 +205 +179 +91 +92 +89 +56 +64 +60 +137 +110 +49 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +152 +119 +47 +158 +125 +46 +168 +127 +42 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +152 +119 +47 +69 +69 +61 +84 +85 +82 +245 +212 +186 +172 +150 +134 +62 +63 +61 +199 +115 +54 +227 +126 +50 +224 +123 +55 +227 +126 +50 +199 +115 +54 +125 +90 +64 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +125 +52 +227 +126 +50 +234 +125 +52 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +214 +121 +50 +81 +73 +62 +63 +74 +74 +227 +196 +175 +255 +215 +190 +253 +212 +188 +255 +215 +190 +146 +135 +124 +48 +58 +59 +146 +97 +64 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +139 +96 +61 +48 +58 +59 +146 +135 +124 +255 +215 +190 +253 +212 +188 +255 +215 +190 +217 +187 +166 +55 +66 +67 +95 +78 +64 +225 +124 +48 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +163 +104 +61 +183 +110 +59 +227 +126 +50 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +97 +98 +96 +56 +64 +60 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +183 +110 +59 +51 +62 +63 +167 +142 +123 +248 +180 +134 +247 +165 +111 +249 +159 +103 +246 +156 +93 +249 +159 +103 +249 +174 +124 +239 +182 +144 +77 +85 +81 +65 +67 +64 +199 +115 +54 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +135 +94 +64 +188 +112 +56 +227 +126 +50 +224 +123 +55 +227 +126 +50 +209 +117 +53 +65 +67 +64 +146 +135 +124 +227 +196 +175 +43 +57 +62 +146 +97 +64 +234 +126 +45 +224 +123 +55 +224 +123 +55 +234 +126 +45 +106 +82 +65 +70 +79 +77 +253 +212 +188 +176 +156 +141 +41 +58 +57 +125 +90 +64 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +227 +126 +50 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +155 +100 +63 +48 +58 +59 +120 +114 +108 +253 +212 +188 +234 +204 +183 +63 +74 +74 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +252 +185 +144 +245 +169 +119 +249 +159 +103 +249 +159 +103 +247 +165 +111 +249 +174 +124 +251 +192 +154 +109 +106 +99 +62 +63 +61 +188 +112 +56 +234 +125 +52 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +234 +125 +52 +227 +126 +50 +234 +125 +52 +227 +126 +50 +227 +126 +50 +212 +120 +56 +199 +115 +54 +224 +123 +55 +224 +123 +55 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +200 +166 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +243 +101 +2 +243 +101 +2 +247 +103 +7 +247 +111 +26 +247 +111 +26 +247 +123 +41 +247 +130 +60 +243 +141 +78 +249 +159 +103 +250 +176 +132 +251 +192 +154 +207 +178 +158 +154 +133 +118 +82 +69 +65 +24 +22 +23 +71 +60 +43 +101 +83 +47 +101 +83 +47 +101 +83 +47 +117 +98 +55 +145 +114 +49 +171 +129 +45 +168 +127 +42 +160 +120 +43 +160 +120 +43 +158 +125 +46 +192 +155 +91 +237 +233 +225 +81 +77 +76 +55 +48 +48 +74 +68 +68 +81 +77 +76 +89 +84 +82 +91 +92 +89 +89 +84 +82 +81 +77 +76 +65 +58 +56 +47 +40 +38 +35 +31 +30 +55 +48 +48 +115 +102 +92 +172 +150 +134 +55 +48 +48 +24 +22 +23 +24 +22 +23 +24 +22 +23 +65 +58 +56 +230 +173 +136 +251 +192 +154 +250 +197 +158 +250 +200 +166 +84 +85 +82 +88 +82 +59 +171 +129 +45 +158 +125 +46 +158 +125 +46 +171 +129 +45 +83 +78 +61 +69 +69 +61 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +117 +98 +55 +48 +58 +59 +101 +100 +92 +238 +205 +179 +253 +204 +176 +250 +200 +166 +253 +204 +176 +238 +205 +179 +91 +92 +89 +51 +62 +63 +117 +98 +55 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +145 +114 +49 +75 +74 +61 +48 +58 +59 +172 +150 +134 +253 +212 +188 +255 +215 +190 +234 +204 +183 +84 +85 +82 +56 +64 +60 +129 +106 +52 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +81 +73 +62 +63 +69 +60 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +83 +78 +61 +84 +85 +82 +255 +215 +190 +245 +212 +186 +109 +106 +99 +51 +62 +63 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +171 +129 +45 +105 +93 +60 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +137 +127 +115 +58 +69 +70 +111 +94 +57 +171 +129 +45 +158 +125 +46 +158 +125 +46 +158 +125 +46 +62 +63 +61 +137 +127 +115 +255 +215 +190 +255 +215 +190 +227 +196 +175 +77 +85 +81 +56 +64 +60 +129 +106 +52 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +161 +127 +40 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +168 +127 +42 +137 +110 +49 +69 +69 +61 +51 +62 +63 +187 +166 +150 +255 +215 +190 +172 +150 +134 +51 +62 +63 +194 +112 +58 +227 +126 +50 +224 +123 +55 +234 +125 +52 +183 +110 +59 +48 +58 +59 +155 +100 +63 +234 +126 +45 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +125 +52 +209 +117 +53 +89 +75 +66 +48 +58 +59 +187 +166 +150 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +109 +106 +99 +48 +58 +59 +135 +94 +64 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +135 +94 +64 +43 +57 +62 +120 +114 +108 +250 +200 +166 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +172 +150 +134 +41 +58 +57 +106 +82 +65 +214 +121 +50 +234 +125 +52 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +234 +126 +45 +183 +110 +59 +48 +58 +59 +135 +94 +64 +234 +126 +45 +224 +123 +55 +227 +126 +50 +188 +112 +56 +51 +62 +63 +109 +106 +99 +51 +62 +63 +183 +110 +59 +227 +126 +50 +224 +123 +55 +234 +125 +52 +173 +106 +60 +48 +58 +59 +178 +146 +122 +245 +169 +119 +246 +156 +93 +247 +150 +84 +249 +146 +83 +247 +150 +84 +249 +159 +103 +249 +174 +124 +203 +161 +131 +58 +69 +70 +76 +70 +64 +194 +112 +58 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +183 +110 +59 +48 +58 +59 +163 +104 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +209 +117 +53 +62 +63 +61 +146 +135 +124 +217 +187 +166 +43 +57 +62 +163 +104 +61 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +58 +69 +70 +234 +204 +183 +255 +215 +190 +137 +127 +115 +41 +58 +57 +118 +86 +65 +225 +124 +48 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +146 +97 +64 +51 +62 +63 +97 +98 +96 +238 +205 +179 +255 +215 +190 +234 +204 +183 +63 +74 +74 +118 +86 +65 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +81 +73 +62 +101 +100 +92 +250 +176 +132 +247 +165 +111 +246 +156 +93 +249 +152 +92 +249 +159 +103 +251 +168 +115 +252 +185 +144 +217 +187 +166 +58 +69 +70 +69 +69 +61 +199 +115 +54 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +224 +123 +55 +227 +126 +50 +225 +124 +48 +81 +73 +62 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +55 +66 +67 +250 +197 +158 +249 +174 +124 +247 +150 +84 +247 +130 +60 +247 +118 +39 +247 +111 +26 +247 +103 +7 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +243 +101 +2 +247 +103 +7 +236 +102 +14 +247 +111 +26 +246 +116 +28 +247 +123 +41 +247 +130 +60 +243 +141 +78 +249 +159 +103 +249 +174 +124 +249 +189 +146 +253 +204 +176 +124 +111 +99 +35 +31 +30 +145 +114 +49 +175 +132 +40 +171 +129 +45 +168 +127 +42 +192 +155 +91 +216 +194 +154 +224 +207 +180 +224 +207 +180 +216 +194 +154 +216 +194 +154 +239 +227 +208 +253 +255 +252 +253 +255 +252 +186 +181 +179 +146 +135 +124 +120 +114 +108 +109 +106 +99 +95 +78 +64 +71 +60 +43 +85 +71 +43 +101 +83 +47 +108 +87 +46 +35 +31 +30 +150 +125 +114 +227 +196 +175 +255 +215 +190 +253 +212 +188 +212 +173 +150 +121 +100 +85 +95 +78 +64 +129 +102 +78 +234 +168 +124 +250 +176 +132 +250 +176 +132 +248 +180 +134 +249 +189 +146 +124 +111 +99 +62 +63 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +145 +114 +49 +56 +64 +60 +43 +57 +62 +83 +78 +61 +152 +119 +47 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +152 +119 +47 +95 +87 +59 +48 +58 +59 +101 +100 +92 +236 +186 +153 +251 +192 +154 +252 +185 +144 +248 +180 +134 +245 +179 +138 +249 +189 +146 +236 +186 +153 +101 +100 +92 +48 +58 +59 +88 +82 +59 +137 +110 +49 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +168 +127 +42 +145 +114 +49 +100 +89 +56 +56 +64 +60 +58 +69 +70 +172 +150 +134 +250 +200 +166 +251 +192 +154 +250 +197 +158 +250 +200 +166 +217 +187 +166 +84 +85 +82 +51 +62 +63 +105 +93 +60 +158 +125 +46 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +152 +119 +47 +83 +78 +61 +43 +57 +62 +48 +58 +59 +129 +106 +52 +175 +132 +40 +171 +129 +45 +158 +125 +46 +63 +69 +60 +120 +114 +108 +255 +215 +190 +255 +215 +190 +227 +196 +175 +84 +85 +82 +51 +62 +63 +105 +93 +60 +158 +125 +46 +171 +129 +45 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +158 +125 +46 +105 +93 +60 +48 +58 +59 +48 +58 +59 +129 +106 +52 +168 +127 +42 +158 +125 +46 +168 +127 +42 +145 +114 +49 +51 +62 +63 +172 +150 +134 +91 +92 +89 +75 +74 +61 +168 +127 +42 +171 +129 +45 +175 +132 +40 +117 +98 +55 +48 +58 +59 +176 +156 +141 +253 +204 +176 +253 +204 +176 +253 +204 +176 +217 +187 +166 +84 +85 +82 +48 +58 +59 +95 +87 +59 +145 +114 +49 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +171 +129 +45 +158 +125 +46 +137 +110 +49 +95 +87 +59 +51 +62 +63 +70 +79 +77 +187 +166 +150 +251 +209 +178 +251 +209 +178 +207 +178 +158 +43 +57 +62 +135 +94 +64 +238 +123 +45 +234 +126 +45 +234 +126 +45 +118 +86 +65 +35 +56 +60 +56 +64 +60 +155 +100 +63 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +126 +45 +227 +126 +50 +163 +104 +61 +76 +70 +64 +51 +62 +63 +167 +142 +123 +251 +192 +154 +248 +180 +134 +249 +174 +124 +249 +174 +124 +250 +176 +132 +245 +179 +138 +236 +186 +153 +109 +106 +99 +41 +58 +57 +95 +78 +64 +183 +110 +59 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +227 +126 +50 +183 +110 +59 +95 +78 +64 +43 +57 +62 +124 +111 +99 +236 +186 +153 +252 +185 +144 +250 +176 +132 +249 +174 +124 +249 +174 +124 +248 +180 +134 +251 +192 +154 +154 +133 +118 +43 +57 +62 +81 +73 +62 +173 +106 +60 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +125 +52 +155 +100 +63 +56 +64 +60 +35 +56 +60 +89 +75 +66 +227 +126 +50 +234 +126 +45 +238 +128 +40 +146 +97 +64 +43 +57 +62 +176 +156 +141 +58 +69 +70 +118 +86 +65 +234 +126 +45 +234 +126 +45 +234 +126 +45 +112 +85 +63 +43 +57 +62 +210 +156 +119 +245 +162 +103 +247 +150 +84 +247 +143 +74 +248 +138 +64 +241 +138 +68 +249 +146 +83 +249 +159 +103 +250 +176 +132 +195 +157 +134 +58 +69 +70 +65 +67 +64 +155 +100 +63 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +126 +45 +173 +106 +60 +65 +67 +64 +35 +56 +60 +106 +82 +65 +234 +126 +45 +234 +126 +45 +238 +128 +40 +146 +97 +64 +43 +57 +62 +187 +166 +150 +234 +204 +183 +55 +66 +67 +106 +82 +65 +234 +126 +45 +234 +125 +52 +234 +125 +52 +224 +123 +55 +81 +73 +62 +91 +92 +89 +245 +212 +186 +253 +212 +188 +253 +212 +188 +137 +127 +115 +41 +58 +57 +89 +75 +66 +173 +106 +60 +227 +126 +50 +234 +126 +45 +227 +126 +50 +227 +126 +50 +227 +126 +50 +234 +125 +52 +234 +126 +45 +234 +125 +52 +194 +112 +58 +106 +82 +65 +43 +57 +62 +101 +100 +92 +227 +196 +175 +251 +209 +178 +251 +209 +178 +253 +212 +188 +97 +98 +96 +69 +69 +61 +209 +117 +53 +234 +126 +45 +238 +128 +40 +173 +106 +60 +51 +62 +63 +139 +115 +96 +251 +168 +115 +246 +156 +93 +247 +150 +84 +249 +146 +83 +249 +152 +92 +247 +165 +111 +248 +180 +134 +250 +200 +166 +187 +166 +150 +55 +66 +67 +69 +69 +61 +163 +104 +61 +234 +125 +52 +234 +126 +45 +234 +125 +52 +227 +126 +50 +227 +126 +50 +234 +126 +45 +234 +126 +45 +199 +115 +54 +95 +78 +64 +35 +56 +60 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +139 +96 +61 +51 +62 +63 +250 +197 +158 +245 +169 +119 +247 +150 +84 +247 +130 +60 +247 +118 +39 +235 +107 +16 +243 +101 +2 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +246 +97 +3 +237 +95 +0 +243 +101 +2 +247 +103 +7 +236 +102 +14 +247 +111 +26 +246 +116 +28 +238 +123 +45 +241 +132 +59 +247 +143 +74 +246 +156 +93 +245 +169 +119 +230 +173 +136 +47 +40 +38 +59 +50 +39 +168 +127 +42 +161 +127 +40 +160 +120 +43 +192 +155 +91 +255 +238 +227 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +253 +255 +252 +239 +227 +208 +170 +137 +67 +171 +129 +45 +171 +129 +45 +171 +129 +45 +59 +50 +39 +154 +133 +118 +250 +200 +166 +250 +197 +158 +249 +189 +146 +248 +180 +134 +249 +174 +124 +247 +165 +111 +247 +165 +111 +245 +162 +103 +249 +159 +103 +245 +162 +103 +247 +165 +111 +249 +174 +124 +203 +161 +131 +55 +66 +67 +69 +69 +61 +111 +94 +57 +105 +93 +60 +69 +69 +61 +63 +74 +74 +137 +127 +115 +51 +62 +63 +62 +63 +61 +95 +87 +59 +129 +106 +52 +137 +110 +49 +137 +110 +49 +123 +102 +54 +95 +87 +59 +62 +63 +61 +51 +62 +63 +133 +120 +107 +239 +182 +144 +248 +180 +134 +245 +169 +119 +247 +165 +111 +249 +159 +103 +245 +162 +103 +251 +168 +115 +250 +176 +132 +239 +182 +144 +154 +133 +118 +63 +74 +74 +51 +62 +63 +75 +74 +61 +105 +93 +60 +123 +102 +54 +137 +110 +49 +137 +110 +49 +137 +110 +49 +123 +102 +54 +100 +89 +56 +75 +74 +61 +56 +64 +60 +55 +66 +67 +124 +111 +99 +219 +170 +138 +252 +185 +144 +250 +176 +132 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +236 +186 +153 +124 +111 +99 +48 +58 +59 +63 +69 +60 +95 +87 +59 +123 +102 +54 +137 +110 +49 +137 +110 +49 +129 +106 +52 +95 +87 +59 +62 +63 +61 +55 +66 +67 +146 +135 +124 +77 +85 +81 +61 +67 +58 +105 +93 +60 +111 +94 +57 +75 +74 +61 +48 +58 +59 +194 +173 +157 +255 +215 +190 +255 +215 +190 +255 +215 +190 +234 +204 +183 +120 +114 +108 +43 +57 +62 +69 +69 +61 +100 +89 +56 +129 +106 +52 +137 +110 +49 +137 +110 +49 +129 +106 +52 +105 +93 +60 +69 +69 +61 +48 +58 +59 +77 +85 +81 +51 +62 +63 +137 +110 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +137 +110 +49 +51 +62 +63 +187 +166 +150 +187 +166 +150 +48 +58 +59 +75 +74 +61 +111 +94 +57 +95 +87 +59 +56 +64 +60 +99 +90 +79 +239 +182 +144 +252 +185 +144 +245 +179 +138 +252 +185 +144 +249 +189 +146 +236 +186 +153 +137 +127 +115 +55 +66 +67 +56 +64 +60 +83 +78 +61 +111 +94 +57 +129 +106 +52 +137 +110 +49 +137 +110 +49 +129 +106 +52 +117 +98 +55 +95 +87 +59 +69 +69 +61 +51 +62 +63 +63 +74 +74 +133 +120 +107 +236 +186 +153 +250 +197 +158 +251 +192 +154 +251 +192 +154 +250 +197 +158 +124 +111 +99 +51 +62 +63 +112 +85 +63 +146 +97 +64 +106 +82 +65 +48 +58 +59 +120 +114 +108 +101 +100 +92 +48 +58 +59 +95 +78 +64 +146 +97 +64 +183 +110 +59 +188 +112 +56 +173 +106 +60 +139 +96 +61 +89 +75 +66 +48 +58 +59 +77 +85 +81 +186 +157 +134 +245 +179 +138 +245 +169 +119 +245 +162 +103 +246 +156 +93 +246 +156 +93 +246 +156 +93 +247 +165 +111 +249 +174 +124 +249 +189 +146 +154 +133 +118 +58 +69 +70 +51 +62 +63 +95 +78 +64 +139 +96 +61 +173 +106 +60 +183 +110 +59 +183 +110 +59 +173 +106 +60 +139 +96 +61 +95 +78 +64 +51 +62 +63 +63 +74 +74 +167 +142 +123 +249 +189 +146 +249 +174 +124 +247 +165 +111 +246 +156 +93 +246 +156 +93 +246 +156 +93 +245 +162 +103 +245 +169 +119 +245 +179 +138 +178 +146 +122 +70 +79 +77 +48 +58 +59 +89 +75 +66 +139 +96 +61 +173 +106 +60 +188 +112 +56 +183 +110 +59 +155 +100 +63 +95 +78 +64 +48 +58 +59 +101 +100 +92 +146 +135 +124 +48 +58 +59 +95 +78 +64 +146 +97 +64 +125 +90 +64 +62 +63 +61 +101 +100 +92 +245 +212 +186 +137 +127 +115 +48 +58 +59 +106 +82 +65 +146 +97 +64 +106 +82 +65 +48 +58 +59 +124 +111 +99 +247 +165 +111 +247 +150 +84 +241 +138 +68 +241 +132 +59 +247 +130 +53 +247 +130 +53 +242 +133 +67 +241 +145 +79 +245 +162 +103 +250 +176 +132 +203 +161 +131 +91 +92 +89 +43 +57 +62 +81 +73 +62 +135 +94 +64 +173 +106 +60 +188 +112 +56 +183 +110 +59 +155 +100 +63 +106 +82 +65 +51 +62 +63 +91 +92 +89 +133 +120 +107 +48 +58 +59 +95 +78 +64 +146 +97 +64 +118 +86 +65 +56 +64 +60 +101 +100 +92 +245 +212 +186 +253 +212 +188 +146 +135 +124 +48 +58 +59 +118 +86 +65 +183 +110 +59 +173 +106 +60 +95 +78 +64 +43 +57 +62 +186 +157 +134 +250 +197 +158 +251 +192 +154 +250 +197 +158 +250 +200 +166 +172 +150 +134 +70 +79 +77 +48 +58 +59 +89 +75 +66 +135 +94 +64 +163 +104 +61 +183 +110 +59 +183 +110 +59 +173 +106 +60 +146 +97 +64 +95 +78 +64 +56 +64 +60 +55 +66 +67 +150 +125 +114 +236 +186 +153 +251 +192 +154 +249 +189 +146 +249 +189 +146 +251 +192 +154 +195 +157 +134 +51 +62 +63 +76 +70 +64 +139 +96 +61 +125 +90 +64 +65 +67 +64 +76 +78 +76 +234 +168 +124 +249 +159 +103 +247 +150 +84 +243 +141 +78 +247 +143 +74 +247 +150 +84 +249 +159 +103 +250 +176 +132 +250 +197 +158 +255 +215 +190 +207 +178 +158 +84 +85 +82 +48 +58 +59 +89 +75 +66 +146 +97 +64 +173 +106 +60 +183 +110 +59 +183 +110 +59 +163 +104 +61 +118 +86 +65 +62 +63 +61 +58 +69 +70 +63 +74 +74 +81 +73 +62 +227 +126 +50 +227 +126 +50 +224 +123 +55 +234 +126 +45 +135 +94 +64 +58 +69 +70 +251 +192 +154 +245 +169 +119 +249 +146 +83 +247 +130 +53 +238 +116 +34 +235 +107 +16 +243 +101 +2 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +246 +97 +3 +246 +97 +3 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +243 +101 +2 +236 +102 +14 +236 +102 +14 +235 +107 +16 +246 +116 +28 +239 +117 +44 +241 +132 +59 +247 +143 +74 +249 +152 +92 +214 +151 +109 +118 +86 +65 +146 +111 +88 +192 +155 +91 +192 +155 +91 +195 +167 +113 +239 +227 +208 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +255 +238 +227 +216 +194 +154 +192 +155 +91 +192 +155 +91 +192 +155 +91 +146 +111 +88 +162 +125 +96 +250 +176 +132 +245 +169 +119 +247 +165 +111 +249 +159 +103 +246 +156 +93 +247 +150 +84 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +145 +79 +247 +150 +84 +249 +159 +103 +245 +169 +119 +187 +140 +108 +89 +84 +82 +48 +58 +59 +48 +58 +59 +91 +92 +89 +194 +173 +157 +255 +215 +190 +207 +178 +158 +109 +106 +99 +51 +62 +63 +48 +58 +59 +51 +62 +63 +48 +58 +59 +48 +58 +59 +55 +66 +67 +124 +111 +99 +203 +161 +131 +248 +180 +134 +245 +169 +119 +249 +159 +103 +247 +150 +84 +243 +141 +78 +243 +141 +78 +243 +141 +78 +247 +150 +84 +249 +159 +103 +245 +169 +119 +248 +180 +134 +219 +170 +138 +154 +133 +118 +84 +85 +82 +51 +62 +63 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +48 +58 +59 +55 +66 +67 +91 +92 +89 +154 +133 +118 +209 +171 +139 +245 +179 +138 +249 +174 +124 +247 +165 +111 +249 +159 +103 +246 +156 +93 +246 +156 +93 +249 +159 +103 +247 +165 +111 +249 +174 +124 +252 +185 +144 +195 +157 +134 +109 +106 +99 +55 +66 +67 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +51 +62 +63 +109 +106 +99 +207 +178 +158 +255 +215 +190 +217 +187 +166 +91 +92 +89 +51 +62 +63 +48 +58 +59 +76 +78 +76 +172 +150 +134 +253 +212 +188 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +255 +215 +190 +194 +173 +157 +101 +100 +92 +51 +62 +63 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +48 +58 +59 +97 +98 +96 +194 +173 +157 +146 +135 +124 +56 +64 +60 +145 +114 +49 +168 +127 +42 +158 +125 +46 +168 +127 +42 +129 +106 +52 +48 +58 +59 +194 +173 +157 +255 +215 +190 +176 +156 +141 +76 +78 +76 +48 +58 +59 +55 +66 +67 +115 +102 +92 +234 +168 +124 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +245 +179 +138 +209 +171 +139 +144 +125 +110 +76 +78 +76 +48 +58 +59 +48 +58 +59 +51 +62 +63 +51 +62 +63 +48 +58 +59 +48 +58 +59 +58 +69 +70 +101 +100 +92 +154 +133 +118 +219 +170 +138 +252 +185 +144 +248 +180 +134 +249 +174 +124 +245 +169 +119 +249 +174 +124 +250 +176 +132 +230 +173 +136 +124 +111 +99 +55 +66 +67 +43 +57 +62 +58 +69 +70 +137 +127 +115 +245 +212 +186 +245 +212 +186 +161 +144 +134 +70 +79 +77 +43 +57 +62 +51 +62 +63 +51 +62 +63 +48 +58 +59 +43 +57 +62 +84 +85 +82 +154 +133 +118 +240 +181 +138 +249 +174 +124 +247 +165 +111 +249 +152 +92 +243 +141 +78 +241 +138 +68 +242 +133 +67 +241 +138 +68 +241 +145 +79 +246 +156 +93 +247 +165 +111 +250 +176 +132 +219 +170 +138 +144 +125 +110 +77 +85 +81 +43 +57 +62 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +77 +85 +81 +150 +125 +114 +219 +170 +138 +250 +176 +132 +247 +165 +111 +246 +156 +93 +241 +145 +79 +241 +138 +68 +241 +138 +68 +241 +138 +68 +243 +141 +78 +249 +152 +92 +247 +165 +111 +250 +176 +132 +230 +173 +136 +154 +133 +118 +77 +85 +81 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +70 +79 +77 +161 +144 +134 +245 +212 +186 +255 +215 +190 +161 +144 +134 +63 +74 +74 +43 +57 +62 +51 +62 +63 +109 +106 +99 +217 +187 +166 +251 +209 +178 +238 +205 +179 +137 +127 +115 +58 +69 +70 +43 +57 +62 +58 +69 +70 +139 +115 +96 +238 +159 +107 +249 +152 +92 +241 +138 +68 +247 +130 +53 +238 +123 +45 +239 +117 +44 +247 +118 +39 +238 +123 +45 +241 +132 +59 +241 +145 +79 +249 +159 +103 +249 +174 +124 +240 +181 +138 +167 +142 +123 +91 +92 +89 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +63 +74 +74 +137 +127 +115 +234 +204 +183 +255 +215 +190 +146 +135 +124 +63 +74 +74 +43 +57 +62 +51 +62 +63 +115 +102 +92 +236 +186 +153 +251 +192 +154 +251 +192 +154 +236 +186 +153 +133 +120 +107 +43 +57 +62 +48 +58 +59 +48 +58 +59 +55 +66 +67 +158 +130 +108 +248 +180 +134 +250 +176 +132 +249 +174 +124 +249 +174 +124 +250 +176 +132 +252 +185 +144 +239 +182 +144 +154 +133 +118 +84 +85 +82 +43 +57 +62 +48 +58 +59 +48 +58 +59 +51 +62 +63 +48 +58 +59 +43 +57 +62 +70 +79 +77 +133 +120 +107 +219 +170 +138 +245 +179 +138 +250 +176 +132 +245 +169 +119 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +187 +140 +108 +81 +77 +76 +43 +57 +62 +43 +57 +62 +99 +90 +79 +214 +151 +109 +249 +159 +103 +247 +150 +84 +247 +143 +74 +241 +138 +68 +241 +138 +68 +249 +146 +83 +249 +159 +103 +250 +176 +132 +250 +197 +158 +255 +215 +190 +255 +215 +190 +245 +212 +186 +161 +144 +134 +77 +85 +81 +43 +57 +62 +48 +58 +59 +51 +62 +63 +48 +58 +59 +41 +58 +57 +55 +66 +67 +120 +114 +108 +217 +187 +166 +97 +98 +96 +95 +78 +64 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +112 +85 +63 +70 +79 +77 +249 +189 +146 +247 +165 +111 +243 +141 +78 +247 +130 +53 +238 +116 +34 +236 +102 +14 +243 +101 +2 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +247 +165 +111 +249 +174 +124 +250 +176 +132 +245 +179 +138 +252 +185 +144 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +249 +189 +146 +252 +185 +144 +245 +179 +138 +250 +176 +132 +249 +174 +124 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +242 +133 +67 +243 +141 +78 +241 +145 +86 +249 +159 +103 +238 +159 +107 +210 +156 +119 +210 +156 +119 +240 +181 +138 +249 +189 +146 +251 +192 +154 +251 +192 +154 +250 +197 +158 +212 +173 +150 +186 +157 +134 +167 +142 +123 +167 +142 +123 +195 +157 +134 +219 +170 +138 +248 +180 +134 +245 +169 +119 +245 +162 +103 +247 +150 +84 +243 +141 +78 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +138 +68 +247 +150 +84 +245 +162 +103 +245 +169 +119 +250 +176 +132 +239 +182 +144 +219 +170 +138 +186 +157 +134 +167 +142 +123 +167 +142 +123 +172 +150 +134 +195 +157 +134 +219 +170 +138 +239 +182 +144 +248 +180 +134 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +79 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +145 +79 +241 +153 +96 +247 +165 +111 +249 +174 +124 +245 +179 +138 +219 +170 +138 +186 +157 +134 +167 +142 +123 +167 +142 +123 +186 +157 +134 +212 +173 +150 +250 +197 +158 +251 +192 +154 +251 +192 +154 +249 +189 +146 +239 +182 +144 +219 +170 +138 +219 +170 +138 +239 +182 +144 +250 +197 +158 +250 +200 +166 +251 +209 +178 +238 +205 +179 +172 +150 +134 +137 +127 +115 +161 +144 +134 +217 +187 +166 +253 +212 +188 +227 +196 +175 +194 +173 +157 +176 +156 +141 +172 +150 +134 +187 +166 +150 +217 +187 +166 +255 +215 +190 +245 +212 +186 +76 +78 +76 +75 +74 +61 +158 +125 +46 +158 +125 +46 +158 +125 +46 +171 +129 +45 +105 +93 +60 +58 +69 +70 +217 +187 +166 +255 +215 +190 +253 +204 +176 +236 +186 +153 +210 +156 +119 +210 +156 +119 +247 +165 +111 +249 +159 +103 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +145 +79 +247 +150 +84 +241 +153 +96 +245 +162 +103 +245 +169 +119 +248 +180 +134 +239 +182 +144 +209 +171 +139 +186 +157 +134 +167 +142 +123 +167 +142 +123 +178 +146 +122 +195 +157 +134 +230 +173 +136 +239 +182 +144 +250 +176 +132 +245 +169 +119 +247 +165 +111 +249 +159 +103 +241 +153 +96 +249 +152 +92 +249 +152 +92 +241 +153 +96 +245 +162 +103 +247 +165 +111 +210 +156 +119 +210 +156 +119 +230 +173 +136 +249 +189 +146 +249 +189 +146 +251 +192 +154 +250 +197 +158 +236 +186 +153 +203 +161 +131 +167 +142 +123 +167 +142 +123 +178 +146 +122 +203 +161 +131 +240 +181 +138 +249 +174 +124 +247 +165 +111 +241 +153 +96 +243 +141 +78 +242 +133 +67 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +249 +159 +103 +245 +169 +119 +250 +176 +132 +240 +181 +138 +209 +171 +139 +178 +146 +122 +167 +142 +123 +167 +142 +123 +186 +157 +134 +209 +171 +139 +240 +181 +138 +250 +176 +132 +245 +169 +119 +249 +159 +103 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +238 +123 +45 +238 +123 +45 +247 +130 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +247 +165 +111 +250 +176 +132 +240 +181 +138 +203 +161 +131 +178 +146 +122 +167 +142 +123 +167 +142 +123 +195 +157 +134 +236 +186 +153 +251 +192 +154 +251 +192 +154 +249 +189 +146 +249 +189 +146 +230 +173 +136 +203 +161 +131 +219 +170 +138 +245 +179 +138 +245 +179 +138 +245 +179 +138 +245 +179 +138 +248 +180 +134 +234 +168 +124 +214 +151 +109 +214 +151 +109 +245 +162 +103 +241 +145 +86 +241 +138 +68 +238 +123 +53 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +238 +116 +34 +238 +123 +45 +241 +132 +59 +243 +141 +78 +241 +153 +96 +247 +165 +111 +249 +174 +124 +240 +181 +138 +209 +171 +139 +178 +146 +122 +167 +142 +123 +167 +142 +123 +195 +157 +134 +236 +186 +153 +250 +197 +158 +251 +192 +154 +249 +189 +146 +249 +189 +146 +230 +173 +136 +210 +156 +119 +210 +156 +119 +250 +176 +132 +249 +174 +124 +249 +174 +124 +249 +174 +124 +249 +174 +124 +250 +176 +132 +210 +156 +119 +162 +125 +96 +162 +125 +96 +214 +151 +109 +247 +165 +111 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +159 +103 +247 +165 +111 +245 +169 +119 +250 +176 +132 +240 +181 +138 +209 +171 +139 +186 +157 +134 +167 +142 +123 +167 +142 +123 +178 +146 +122 +203 +161 +131 +239 +182 +144 +248 +180 +134 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +145 +86 +241 +145 +86 +247 +150 +84 +241 +153 +96 +245 +162 +103 +238 +159 +107 +204 +141 +99 +214 +151 +109 +241 +153 +96 +249 +152 +92 +243 +141 +78 +242 +133 +67 +241 +132 +59 +241 +132 +59 +241 +138 +68 +241 +145 +79 +245 +162 +103 +248 +180 +134 +212 +173 +150 +146 +135 +124 +137 +127 +115 +176 +156 +141 +234 +204 +183 +253 +212 +188 +217 +187 +166 +187 +166 +150 +172 +150 +134 +176 +156 +141 +194 +173 +157 +234 +204 +183 +255 +215 +190 +194 +173 +157 +43 +57 +62 +139 +96 +61 +234 +126 +45 +224 +123 +55 +227 +126 +50 +227 +126 +50 +89 +75 +66 +101 +100 +92 +245 +179 +138 +245 +162 +103 +241 +138 +68 +238 +123 +45 +236 +108 +29 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +79 +249 +152 +92 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +243 +141 +78 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +132 +59 +238 +123 +53 +239 +117 +44 +238 +116 +34 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +249 +174 +124 +250 +176 +132 +250 +176 +132 +250 +176 +132 +249 +174 +124 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +242 +133 +67 +241 +132 +59 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +241 +132 +59 +242 +133 +67 +243 +141 +78 +249 +152 +92 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +169 +119 +249 +174 +124 +245 +179 +138 +251 +192 +154 +232 +190 +161 +101 +100 +92 +51 +62 +63 +63 +69 +60 +51 +62 +63 +55 +66 +67 +109 +106 +99 +176 +156 +141 +234 +204 +183 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +207 +178 +158 +91 +92 +89 +51 +62 +63 +129 +106 +52 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +75 +74 +61 +91 +92 +89 +245 +212 +186 +250 +200 +166 +252 +185 +144 +249 +174 +124 +247 +165 +111 +241 +153 +96 +241 +145 +79 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +247 +165 +111 +245 +169 +119 +249 +174 +124 +250 +176 +132 +250 +176 +132 +249 +174 +124 +249 +174 +124 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +145 +79 +241 +138 +68 +242 +133 +67 +242 +133 +67 +242 +133 +67 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +241 +153 +96 +245 +162 +103 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +245 +162 +103 +241 +153 +96 +241 +145 +79 +241 +138 +68 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +169 +119 +249 +174 +124 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +162 +103 +241 +153 +96 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +138 +68 +241 +145 +86 +241 +153 +96 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +132 +59 +238 +123 +53 +239 +117 +44 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +79 +241 +153 +96 +245 +162 +103 +247 +165 +111 +245 +169 +119 +245 +169 +119 +249 +174 +124 +245 +169 +119 +245 +169 +119 +245 +169 +119 +245 +169 +119 +247 +165 +111 +247 +165 +111 +245 +162 +103 +245 +162 +103 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +169 +119 +249 +174 +124 +249 +174 +124 +249 +174 +124 +245 +169 +119 +247 +165 +111 +241 +153 +96 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +79 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +242 +133 +67 +241 +145 +86 +247 +165 +111 +210 +156 +119 +63 +74 +74 +62 +63 +61 +69 +69 +61 +48 +58 +59 +63 +74 +74 +133 +120 +107 +194 +173 +157 +245 +212 +186 +255 +215 +190 +255 +215 +190 +255 +215 +190 +245 +212 +186 +176 +156 +141 +55 +66 +67 +76 +70 +64 +212 +120 +56 +227 +126 +50 +224 +123 +55 +234 +125 +52 +194 +112 +58 +56 +64 +60 +154 +133 +118 +250 +176 +132 +241 +153 +96 +242 +133 +67 +239 +117 +44 +236 +108 +29 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +138 +68 +243 +141 +78 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +79 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +132 +59 +242 +133 +67 +241 +138 +68 +243 +141 +78 +243 +141 +78 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +249 +152 +92 +241 +153 +96 +241 +153 +96 +241 +153 +96 +249 +152 +92 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +241 +145 +79 +241 +145 +79 +241 +145 +86 +241 +153 +96 +245 +162 +103 +245 +169 +119 +245 +179 +138 +144 +125 +110 +51 +62 +63 +117 +98 +55 +158 +125 +46 +145 +114 +49 +105 +93 +60 +69 +69 +61 +48 +58 +59 +58 +69 +70 +91 +92 +89 +120 +114 +108 +120 +114 +108 +91 +92 +89 +48 +58 +59 +56 +64 +60 +123 +102 +54 +171 +129 +45 +158 +125 +46 +158 +125 +46 +168 +127 +42 +137 +110 +49 +48 +58 +59 +161 +144 +134 +250 +197 +158 +248 +180 +134 +247 +165 +111 +241 +153 +96 +241 +145 +79 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +249 +152 +92 +241 +153 +96 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +123 +45 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +138 +68 +241 +138 +68 +243 +141 +78 +241 +145 +79 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +243 +141 +78 +242 +133 +67 +241 +132 +59 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +145 +86 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +45 +239 +117 +44 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +238 +123 +45 +241 +132 +59 +242 +133 +67 +243 +141 +78 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +241 +145 +79 +243 +141 +78 +243 +141 +78 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +116 +34 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +238 +123 +45 +238 +123 +53 +242 +133 +67 +241 +138 +68 +241 +145 +79 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +86 +241 +145 +79 +243 +141 +78 +243 +141 +78 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +242 +133 +67 +242 +133 +67 +241 +138 +68 +241 +138 +68 +241 +138 +68 +241 +138 +68 +242 +133 +67 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +138 +68 +243 +141 +78 +241 +145 +86 +241 +145 +86 +241 +153 +96 +241 +153 +96 +241 +145 +86 +241 +145 +86 +243 +141 +78 +241 +138 +68 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +53 +242 +133 +67 +241 +145 +86 +238 +159 +107 +84 +85 +82 +69 +69 +61 +188 +112 +56 +214 +121 +50 +173 +106 +60 +112 +85 +63 +62 +63 +61 +41 +58 +57 +63 +74 +74 +97 +98 +96 +120 +114 +108 +109 +106 +99 +77 +85 +81 +41 +58 +57 +81 +73 +62 +194 +112 +58 +234 +125 +52 +224 +123 +55 +224 +123 +55 +234 +126 +45 +125 +90 +64 +51 +62 +63 +209 +171 +139 +245 +169 +119 +241 +145 +86 +241 +132 +59 +238 +116 +34 +235 +107 +16 +236 +102 +14 +235 +94 +9 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +237 +95 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +138 +68 +241 +145 +86 +238 +159 +107 +234 +168 +124 +84 +85 +82 +83 +78 +61 +171 +129 +45 +158 +125 +46 +168 +127 +42 +168 +127 +42 +158 +125 +46 +129 +106 +52 +100 +89 +56 +83 +78 +61 +75 +74 +61 +69 +69 +61 +83 +78 +61 +105 +93 +60 +152 +119 +47 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +75 +74 +61 +63 +74 +74 +236 +186 +153 +245 +179 +138 +238 +159 +107 +241 +145 +86 +241 +138 +68 +241 +132 +59 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +53 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +53 +238 +123 +53 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +238 +123 +45 +239 +117 +44 +239 +117 +44 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +239 +117 +44 +238 +123 +45 +238 +123 +53 +238 +123 +53 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +241 +132 +59 +238 +123 +53 +238 +123 +45 +239 +117 +44 +238 +116 +34 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +123 +45 +241 +132 +59 +241 +145 +86 +204 +141 +99 +41 +58 +57 +155 +100 +63 +234 +126 +45 +227 +126 +50 +227 +126 +50 +234 +125 +52 +209 +117 +53 +155 +100 +63 +118 +86 +65 +89 +75 +66 +81 +73 +62 +81 +73 +62 +106 +82 +65 +155 +100 +63 +214 +121 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +194 +112 +58 +56 +64 +60 +109 +106 +99 +245 +179 +138 +245 +162 +103 +241 +138 +68 +238 +123 +45 +235 +113 +30 +236 +102 +14 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +123 +45 +238 +123 +53 +241 +138 +68 +241 +145 +86 +238 +159 +107 +89 +84 +82 +75 +74 +61 +168 +127 +42 +168 +127 +42 +158 +125 +46 +158 +125 +46 +161 +127 +40 +168 +127 +42 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +95 +87 +59 +48 +58 +59 +167 +142 +123 +245 +179 +138 +238 +159 +107 +241 +145 +86 +242 +133 +67 +238 +123 +45 +238 +116 +34 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +239 +117 +44 +239 +117 +44 +239 +117 +44 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +113 +30 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +235 +113 +30 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +113 +30 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +238 +116 +34 +235 +113 +30 +236 +108 +29 +236 +108 +29 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +236 +108 +29 +236 +108 +29 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +108 +29 +235 +113 +30 +239 +117 +44 +241 +132 +59 +241 +145 +79 +204 +141 +99 +48 +58 +59 +139 +96 +61 +234 +126 +45 +224 +123 +55 +224 +123 +55 +224 +123 +55 +227 +126 +50 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +126 +45 +234 +126 +45 +227 +126 +50 +224 +123 +55 +224 +123 +55 +234 +125 +52 +214 +121 +50 +81 +73 +62 +58 +69 +70 +219 +170 +138 +245 +169 +119 +241 +145 +86 +241 +132 +59 +239 +117 +44 +236 +108 +29 +236 +102 +14 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +229 +102 +7 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +224 +98 +18 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +229 +102 +7 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +236 +108 +29 +239 +117 +44 +234 +125 +52 +231 +136 +72 +241 +153 +96 +162 +125 +96 +48 +58 +59 +95 +87 +59 +158 +125 +46 +171 +129 +45 +168 +127 +42 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +158 +125 +46 +168 +127 +42 +171 +129 +45 +158 +125 +46 +95 +87 +59 +48 +58 +59 +124 +111 +99 +245 +179 +138 +247 +165 +111 +241 +145 +86 +241 +132 +59 +238 +123 +45 +238 +116 +34 +236 +108 +29 +224 +98 +18 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +230 +97 +5 +230 +97 +5 +235 +94 +9 +230 +97 +5 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +224 +98 +18 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +235 +94 +9 +235 +94 +9 +229 +102 +7 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +235 +107 +16 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +224 +98 +18 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +236 +102 +14 +235 +94 +9 +230 +97 +5 +235 +94 +9 +235 +94 +9 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +235 +94 +9 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +224 +98 +18 +236 +102 +14 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +236 +102 +14 +224 +98 +18 +236 +102 +14 +236 +102 +14 +236 +102 +14 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +236 +102 +14 +236 +102 +14 +224 +98 +18 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +235 +107 +16 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +230 +97 +5 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +235 +94 +9 +230 +97 +5 +235 +94 +9 +236 +102 +14 +236 +102 +14 +236 +102 +14 +229 +102 +7 +230 +97 +5 +229 +102 +7 +224 +98 +18 +236 +108 +29 +238 +116 +34 +238 +123 +53 +243 +141 +78 +241 +153 +96 +99 +90 +79 +56 +64 +60 +155 +100 +63 +234 +126 +45 +234 +126 +45 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +227 +126 +50 +224 +123 +55 +224 +123 +55 +227 +126 +50 +227 +126 +50 +234 +126 +45 +194 +112 +58 +81 +73 +62 +48 +58 +59 +178 +146 +122 +249 +174 +124 +241 +153 +96 +231 +136 +72 +234 +125 +52 +238 +116 +34 +235 +107 +16 +229 +102 +7 +235 +94 +9 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +236 +102 +14 +235 +113 +30 +239 +117 +44 +230 +128 +60 +236 +147 +85 +238 +159 +107 +139 +115 +96 +48 +58 +59 +69 +69 +61 +111 +94 +57 +145 +114 +49 +158 +125 +46 +168 +127 +42 +171 +129 +45 +168 +127 +42 +168 +127 +42 +168 +127 +42 +168 +127 +42 +171 +129 +45 +168 +127 +42 +152 +119 +47 +117 +98 +55 +69 +69 +61 +48 +58 +59 +144 +125 +110 +240 +181 +138 +247 +165 +111 +236 +147 +85 +242 +133 +67 +238 +123 +45 +235 +113 +30 +235 +107 +16 +236 +102 +14 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +230 +97 +5 +229 +102 +7 +235 +107 +16 +235 +113 +30 +238 +123 +45 +242 +133 +67 +241 +153 +96 +214 +151 +109 +99 +90 +79 +48 +58 +59 +95 +78 +64 +155 +100 +63 +209 +117 +53 +227 +126 +50 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +125 +52 +234 +126 +45 +234 +126 +45 +227 +126 +50 +194 +112 +58 +125 +90 +64 +56 +64 +60 +58 +69 +70 +178 +146 +122 +250 +176 +132 +238 +159 +107 +241 +145 +79 +234 +125 +52 +239 +117 +44 +236 +108 +29 +224 +98 +18 +230 +97 +5 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +230 +97 +5 +229 +102 +7 +223 +103 +18 +226 +110 +35 +234 +125 +52 +231 +136 +72 +241 +153 +96 +245 +169 +119 +178 +146 +122 +101 +100 +92 +48 +58 +59 +56 +64 +60 +69 +69 +61 +95 +87 +59 +111 +94 +57 +123 +102 +54 +129 +106 +52 +129 +106 +52 +123 +102 +54 +105 +93 +60 +88 +82 +59 +62 +63 +61 +48 +58 +59 +91 +92 +89 +186 +157 +134 +245 +179 +138 +238 +159 +107 +236 +147 +85 +230 +128 +60 +234 +125 +52 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +230 +97 +5 +224 +98 +18 +236 +108 +29 +239 +117 +44 +230 +123 +57 +243 +141 +78 +238 +159 +107 +234 +168 +124 +158 +130 +108 +76 +78 +76 +41 +58 +57 +62 +63 +61 +95 +78 +64 +125 +90 +64 +146 +97 +64 +163 +104 +61 +173 +106 +60 +163 +104 +61 +155 +100 +63 +125 +90 +64 +95 +78 +64 +56 +64 +60 +43 +57 +62 +124 +111 +99 +209 +171 +139 +234 +168 +124 +238 +159 +107 +241 +145 +79 +230 +128 +60 +239 +117 +44 +236 +108 +29 +236 +102 +14 +229 +102 +7 +230 +97 +5 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +231 +91 +2 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +226 +93 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +230 +97 +5 +224 +98 +18 +236 +108 +29 +226 +110 +35 +230 +123 +57 +231 +136 +72 +241 +153 +96 +238 +159 +107 +240 +181 +138 +203 +161 +131 +150 +125 +114 +101 +100 +92 +76 +78 +76 +55 +66 +67 +48 +58 +59 +48 +58 +59 +48 +58 +59 +48 +58 +59 +58 +69 +70 +84 +85 +82 +124 +111 +99 +178 +146 +122 +240 +181 +138 +234 +168 +124 +238 +159 +107 +236 +147 +85 +230 +128 +60 +234 +125 +52 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +128 +60 +236 +147 +85 +241 +153 +96 +234 +168 +124 +230 +173 +136 +186 +157 +134 +133 +120 +107 +91 +92 +89 +63 +74 +74 +51 +62 +63 +48 +58 +59 +48 +58 +59 +48 +58 +59 +51 +62 +63 +63 +74 +74 +91 +92 +89 +144 +125 +110 +203 +161 +131 +240 +181 +138 +245 +169 +119 +241 +153 +96 +241 +145 +79 +230 +128 +60 +225 +124 +48 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +239 +117 +44 +230 +123 +57 +231 +136 +72 +236 +147 +85 +238 +159 +107 +245 +169 +119 +234 +168 +124 +240 +181 +138 +239 +182 +144 +236 +186 +153 +250 +197 +158 +250 +197 +158 +250 +197 +158 +251 +192 +154 +236 +186 +153 +239 +182 +144 +245 +179 +138 +234 +168 +124 +238 +159 +107 +241 +153 +96 +231 +136 +72 +230 +128 +60 +225 +124 +48 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +230 +97 +5 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +128 +60 +231 +136 +72 +241 +153 +96 +238 +159 +107 +234 +168 +124 +240 +181 +138 +239 +182 +144 +236 +186 +153 +251 +192 +154 +250 +197 +158 +250 +197 +158 +250 +197 +158 +236 +186 +153 +239 +182 +144 +240 +181 +138 +234 +168 +124 +245 +169 +119 +238 +159 +107 +236 +147 +85 +231 +136 +72 +230 +123 +57 +239 +117 +44 +226 +110 +35 +223 +103 +18 +224 +98 +18 +230 +97 +5 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +225 +92 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +128 +60 +231 +136 +72 +236 +147 +85 +241 +153 +96 +238 +159 +107 +238 +159 +107 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +238 +159 +107 +238 +159 +107 +241 +153 +96 +236 +147 +85 +231 +136 +72 +230 +128 +60 +230 +123 +57 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +225 +124 +48 +230 +123 +57 +230 +128 +60 +231 +136 +72 +236 +147 +85 +241 +153 +96 +238 +159 +107 +238 +159 +107 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +234 +168 +124 +238 +159 +107 +238 +159 +107 +241 +153 +96 +236 +147 +85 +231 +136 +72 +230 +128 +60 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +128 +60 +230 +128 +60 +231 +136 +72 +231 +136 +72 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +231 +136 +72 +231 +136 +72 +231 +136 +72 +230 +128 +60 +227 +126 +50 +225 +124 +48 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +230 +123 +57 +230 +128 +60 +231 +136 +72 +231 +136 +72 +231 +136 +72 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +236 +147 +85 +231 +136 +72 +231 +136 +72 +230 +128 +60 +230 +123 +57 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +225 +124 +48 +225 +124 +48 +225 +124 +48 +224 +123 +55 +224 +123 +55 +224 +123 +55 +230 +123 +57 +224 +123 +55 +224 +123 +55 +225 +124 +48 +225 +124 +48 +226 +110 +35 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +225 +124 +48 +225 +124 +48 +224 +123 +55 +230 +123 +57 +230 +123 +57 +230 +123 +57 +230 +123 +57 +230 +123 +57 +225 +124 +48 +225 +124 +48 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +221 +89 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +223 +103 +18 +223 +103 +18 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +226 +110 +35 +223 +103 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +224 +98 +18 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +220 +93 +11 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +218 +87 +5 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +217 +86 +3 +217 +86 +3 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 +214 +84 +0 diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0001-mt9t111-first-stab-at-merging-sensor-driver-based-on.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0001-mt9t111-first-stab-at-merging-sensor-driver-based-on.patch new file mode 100644 index 0000000..ccd979c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0001-mt9t111-first-stab-at-merging-sensor-driver-based-on.patch @@ -0,0 +1,2394 @@ +From a03a0f8d0c856a152f477efea64e7df1c927c9b1 Mon Sep 17 00:00:00 2001 +From: OpenEmbedded User +Date: Tue, 9 Feb 2010 17:16:13 +0100 +Subject: [PATCH 01/75] mt9t111: first stab at merging sensor driver based on a patch by Leopard Imaging + +--- + drivers/media/video/Kconfig | 8 + + drivers/media/video/Makefile | 1 + + drivers/media/video/mt9t111.c | 883 ++++++++++++++++++++++++ + drivers/media/video/mt9t111_reg.h | 1364 +++++++++++++++++++++++++++++++++++++ + include/media/mt9t111.h | 79 +++ + 5 files changed, 2335 insertions(+), 0 deletions(-) + create mode 100644 drivers/media/video/mt9t111.c + create mode 100644 drivers/media/video/mt9t111_reg.h + create mode 100644 include/media/mt9t111.h + +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index 41e39a7..f67ed46 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -344,6 +344,14 @@ config VIDEO_MT9P012 + MT9P012 camera. It is currently working with the TI OMAP3 + camera controller. + ++config VIDEO_MT9T111 ++ tristate "Micron MT9T111 raw sensor driver (3MP)" ++ depends on I2C && VIDEO_V4L2 ++ ---help--- ++ This is a Video4Linux2 sensor-level driver for the Micron ++ MT9T111 camera. It is currently working with the TI OMAP3 ++ camera controller. ++ + config VIDEO_DW9710 + tristate "Lens driver for DW9710" + depends on I2C && VIDEO_V4L2 +diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile +index 88e8ec1..31688bf 100644 +--- a/drivers/media/video/Makefile ++++ b/drivers/media/video/Makefile +@@ -127,6 +127,7 @@ obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o + obj-y += isp/ + obj-$(CONFIG_VIDEO_OMAP3) += omap34xxcam.o + obj-$(CONFIG_VIDEO_MT9P012) += mt9p012.o ++obj-$(CONFIG_VIDEO_MT9T111) += mt9t111.o + obj-$(CONFIG_VIDEO_DW9710) += dw9710.o + obj-$(CONFIG_VIDEO_TPS61059) += tps61059.o + obj-$(CONFIG_VIDEO_OV3640) += ov3640.o +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +new file mode 100644 +index 0000000..ecc5115 +--- /dev/null ++++ b/drivers/media/video/mt9t111.c +@@ -0,0 +1,883 @@ ++/* ++ * drivers/media/video/mt9t111.c ++ * ++ * mt9t111 sensor driver ++ * ++ * Copyright (C) 2009 Leopard Imaging ++ * ++ * This file is licensed under the terms of the GNU General Public License ++ * version 2. This program is licensed "as is" without any warranty of any ++ * kind, whether express or implied. ++ */ ++ ++#include ++#include ++#include ++ ++#include ++#include "mt9t111_reg.h" ++ ++#define USE_RAW // YCbCr mode does not work yet ++//#define COLOR_BAR // Create a Color bar test pattern, Blue, Green, Red, Grey ++ ++#define SENSOR_DETECTED 1 ++#define SENSOR_NOT_DETECTED 0 ++ ++static void mt9t111_loaddefault(struct i2c_client *client); ++ ++/* ++* as a place holder for further development ++*/ ++static void debug_dummy(char *in_msg) ++{ ++ ++} ++ ++/* list of image formats supported by mt9t111 sensor */ ++const static struct v4l2_fmtdesc mt9t111_formats[] = { ++#ifdef USE_RAW ++ { ++ .description = "RAW ", ++ .pixelformat = V4L2_PIX_FMT_SGRBG10, ++ }, ++#else ++ { ++ .description = "YUV 422 ", ++ .pixelformat = V4L2_PIX_FMT_YUYV, ++ }, ++#endif ++}; ++ ++#define NUM_CAPTURE_FORMATS ARRAY_SIZE(mt9t111_formats) ++ ++/* ++ * Array of image sizes supported by MT9T111. These must be ordered from ++ * smallest image size to largest. ++ */ ++const static struct capture_size mt9t111_sizes[] = { ++ { 640, 480 }, ++// { 2048, 1536} ++}; ++ ++#define NUM_CAPTURE_SIZE ARRAY_SIZE(mt9t111_sizes) ++ ++ ++const struct v4l2_fract mt9t111_frameintervals[] = { ++ { .numerator = 1, .denominator = 10 } ++}; ++ ++#define NUM_CAPTURE_FRAMEINTERVALS ARRAY_SIZE(mt9t111_frameintervals) ++ ++/** ++ * struct mt9t111_sensor - main structure for storage of sensor information ++ * @pdata: access functions and data for platform level information ++ * @v4l2_int_device: V4L2 device structure structure ++ * @i2c_client: iic client device structure ++ * @pix: V4L2 pixel format information structure ++ * @timeperframe: time per frame expressed as V4L fraction ++ * @scaler: ++ * @ver: mt9t111 chip version ++ * @fps: frames per second value ++ */ ++struct mt9t111_sensor { ++ const struct mt9t111_platform_data *pdata; ++ struct v4l2_int_device *v4l2_int_device; ++ struct i2c_client *i2c_client; ++ struct v4l2_pix_format pix; ++ struct v4l2_fract timeperframe; ++ int scaler; ++ int ver; ++ int fps; ++ int state; ++}; ++ ++static struct mt9t111_sensor mt9t111 = { ++ .timeperframe = { ++ .numerator = 1, ++ .denominator = 10, ++ }, ++ .state = SENSOR_NOT_DETECTED, ++}; ++ ++/** ++ * mt9t111_read_reg - Read a value from a register in an mt9t111 sensor device ++ * @client: i2c driver client structure ++ * @data_length: length of data to be read ++ * @reg: register address / offset ++ * @val: stores the value that gets read ++ * ++ * Read a value from a register in an mt9t111 sensor device. ++ * The value is returned in 'val'. ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int ++mt9t111_read_reg(struct i2c_client *client, u16 reg, u16 *val) ++{ ++ struct i2c_msg msg[1]; ++ u8 data[4]; ++ int err; ++ ++ msg->addr = client->addr; ++ msg->flags = 0; ++ msg->len = 2; ++ msg->buf = data; ++ data[0] = (reg & 0xff00) >> 8; ++ data[1] = (reg & 0x00ff); ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err >= 0) { ++ msg->flags = I2C_M_RD; ++ msg->len = 2; /* 2 byte read */ ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err >= 0) { ++ *val = ((data[0] & 0x00ff) << 8) ++ | (data[1] & 0x00ff); ++ return 0; ++ } ++ } ++ return err; ++} ++ ++/** ++ * mt9t111_write_reg - Write a value to a register in an mt9t111 sensor device ++ * @client: i2c driver client structure ++ * @data_length: length of data to be read ++ * @reg: register address / offset ++ * @val: value to be written to specified register ++ * ++ * Write a value to a register in an mt9t111 sensor device. ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int ++mt9t111_write_reg(struct i2c_client *client, u16 reg, u16 val) ++{ ++ struct i2c_msg msg[1]; ++ u8 data[20]; ++ int err; ++ ++ msg->addr = client->addr; ++ msg->flags = 0; ++ msg->len = 4; ++ msg->buf = data; ++ data[0] = (u8)((reg & 0xff00) >> 8); ++ data[1] = (u8)(reg & 0x00ff); ++ data[2] = (u8)((val & 0xff00) >> 8); ++ data[3] = (u8)(val & 0x00ff); ++ err = i2c_transfer(client->adapter, msg, 1); ++ ++ return err; ++} ++ ++/** ++ * mt9t111_write_regs - Write registers to an mt9t111 sensor device ++ * @client: i2c driver client structure ++ * @reg_in: pointer to registers to write ++ * @cnt: the number of registers ++ * ++ * Write registers . ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int ++mt9t111_write_regs(struct i2c_client *client, mt9t111_regs *reg_in, int cnt) ++{ ++ int err = 0; ++ int i; ++ mt9t111_regs *reg = reg_in; ++ ++ for (i=0;idelay_time == 0) { ++ err |= mt9t111_write_reg(client, reg->addr, reg->data); ++ } else if (reg->addr != 0 || reg->data != 0) { ++ err |= mt9t111_write_reg(client, reg->addr, reg->data); ++ mdelay(reg->delay_time); ++ } else ++ mdelay(reg->delay_time); ++ ++ if (err < 0) { ++ dev_warn(&client->dev, "write reg error, addr = 0x%x, data = 0x%x \n", \ ++ reg->addr, reg->data); ++ return err; ++ } ++ reg++; ++ } ++ return err; ++} ++ ++/** ++ * mt9t111_detect - Detect if an mt9t111 is present, and if so which revision ++ * @client: pointer to the i2c client driver structure ++ * ++ * Detect if an mt9t111 is present ++ * Returns a negative error number if no device is detected, or the ++ * non-negative value of the version ID register if a device is detected. ++ */ ++static int ++mt9t111_detect(struct i2c_client *client) ++{ ++ u16 val; ++ ++ /* chip ID is at address 0 */ ++ if (mt9t111_read_reg(client, MT9T111_CHIP_ID, &val) < 0) ++ return -ENODEV; ++ dev_info(&client->dev, "model id detected 0x%x\n", val); ++ ++ if (val != MT9T111_CHIP_ID_VALUE) { ++ dev_warn(&client->dev, "model id mismatch received 0x%x expecting 0x%x\n", ++ val, MT9T111_CHIP_ID_VALUE); ++ ++ return -ENODEV; ++ } ++ ++ return 0; ++ ++} ++ ++/** ++ * mt9t111_configure - Configure the mt9t111 for the specified image mode ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Configure the mt9t111 for a specified image size, pixel format, and frame ++ * period. xclk is the frequency (in Hz) of the xclk input to the mt9t111. ++ * fper is the frame period (in seconds) expressed as a fraction. ++ * Returns zero if successful, or non-zero otherwise. ++ * The actual frame period is returned in fper. ++ */ ++static int mt9t111_configure(struct v4l2_int_device *s) ++{ ++ debug_dummy("debug_dummy -- to set imager mode"); ++ ++ return 0; ++} ++ ++/** ++ * ioctl_enum_framesizes - V4L2 sensor if handler for vidioc_int_enum_framesizes ++ * @s: pointer to standard V4L2 device structure ++ * @frms: pointer to standard V4L2 framesizes enumeration structure ++ * ++ * Returns possible framesizes depending on choosen pixel format ++ **/ ++static int ioctl_enum_framesizes(struct v4l2_int_device *s, ++ struct v4l2_frmsizeenum *frms) ++{ ++ int ifmt; ++ ++ for (ifmt = 0; ifmt < NUM_CAPTURE_FORMATS; ifmt++) { ++ if (frms->pixel_format == mt9t111_formats[ifmt].pixelformat) ++ break; ++ } ++ /* Is requested pixelformat not found on sensor? */ ++ if (ifmt == NUM_CAPTURE_FORMATS) ++ return -EINVAL; ++ ++ /* Do we already reached all discrete framesizes? */ ++ if (frms->index >= NUM_CAPTURE_SIZE) ++ return -EINVAL; ++ ++ frms->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frms->discrete.width = mt9t111_sizes[frms->index].width; ++ frms->discrete.height = mt9t111_sizes[frms->index].height; ++ ++ return 0; ++ ++} ++ ++static int ioctl_enum_frameintervals(struct v4l2_int_device *s, ++ struct v4l2_frmivalenum *frmi) ++{ ++ int ifmt; ++ ++printk(KERN_INFO "entering ioctl_enum_frameintervals\n"); ++printk(KERN_INFO "index = %d, pixel_format = 0x%x, width = %d, height = %d\n", ++ frmi->index, frmi->pixel_format, frmi->width, frmi->height); ++printk(KERN_INFO "mt9t111 format = 0x%x\n", mt9t111_formats[0].pixelformat); ++ ++ if (frmi->index >= NUM_CAPTURE_FRAMEINTERVALS) ++ return -EINVAL; ++ ++ for (ifmt = 0; ifmt < NUM_CAPTURE_FORMATS; ifmt++) { ++ if (frmi->pixel_format == mt9t111_formats[ifmt].pixelformat) ++ break; ++ } ++ /* Is requested pixelformat not found on sensor? */ ++ if (ifmt == NUM_CAPTURE_FORMATS) ++ return -EINVAL; ++ ++ frmi->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frmi->discrete.numerator = ++ mt9t111_frameintervals[frmi->index].numerator; ++ frmi->discrete.denominator = ++ mt9t111_frameintervals[frmi->index].denominator; ++ return 0; ++} ++ ++/** ++ * ioctl_init - V4L2 sensor interface handler for VIDIOC_INT_INIT ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Initialize the sensor device (call mt9t111_configure()) ++ */ ++static int ioctl_init(struct v4l2_int_device *s) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_dev_exit - V4L2 sensor interface handler for vidioc_int_dev_exit_num ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Delinitialise the dev. at slave detach. The complement of ioctl_dev_init. ++ */ ++static int ioctl_dev_exit(struct v4l2_int_device *s) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_dev_init - V4L2 sensor interface handler for vidioc_int_dev_init_num ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Initialise the device when slave attaches to the master. Returns 0 if ++ * mt9t111 device could be found, otherwise returns appropriate error. ++ */ ++static int ioctl_dev_init(struct v4l2_int_device *s) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_s_power - V4L2 sensor interface handler for vidioc_int_s_power_num ++ * @s: pointer to standard V4L2 device structure ++ * @on: power state to which device is to be set ++ * ++ * Sets devices power state to requrested state, if possible. ++ */ ++static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ struct i2c_client *c = sensor->i2c_client; ++ int rval; ++ ++ if ((on == V4L2_POWER_STANDBY) && (sensor->state == SENSOR_DETECTED)) ++ debug_dummy("debug_dummy -- put to standby\n"); ++ ++ if (on != V4L2_POWER_ON) ++ debug_dummy("debug_dummy -- stop master clock\n"); ++ else ++ debug_dummy("debug_dummy -- enable clock\n");; ++ ++ rval = sensor->pdata->power_set(on); ++ if (rval < 0) { ++ dev_err(&c->dev, "Unable to set the power state: " "mt9t111" ++ " sensor\n"); ++ //sensor->pdata->set_xclk(0); ++ return rval; ++ } ++ ++ if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_DETECTED)) ++ mt9t111_configure(s); ++ ++ if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_NOT_DETECTED)) { ++ rval = mt9t111_detect(c); ++ if (rval < 0) { ++ dev_err(&c->dev, "Unable to detect " "mt9t111" ++ " sensor\n"); ++ sensor->state = SENSOR_NOT_DETECTED; ++ return rval; ++ } ++ mt9t111_loaddefault(c); ++ sensor->state = SENSOR_DETECTED; ++ sensor->ver = rval; ++ pr_info("mt9t111" " chip version 0x%02x detected\n", ++ sensor->ver); ++ } ++ return 0; ++} ++ ++/** ++ * ioctl_g_priv - V4L2 sensor interface handler for vidioc_int_g_priv_num ++ * @s: pointer to standard V4L2 device structure ++ * @p: void pointer to hold sensor's private data address ++ * ++ * Returns device's (sensor's) private data area address in p parameter ++ */ ++static int ioctl_g_priv(struct v4l2_int_device *s, void *p) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ ++ return sensor->pdata->priv_data_set(p); ++} ++ ++/** ++ * ioctl_s_parm - V4L2 sensor interface handler for VIDIOC_S_PARM ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @a: pointer to standard V4L2 VIDIOC_S_PARM ioctl structure ++ * ++ * Configures the sensor to use the input parameters, if possible. If ++ * not possible, reverts to the old parameters and returns the ++ * appropriate error code. ++ */ ++static int ioctl_s_parm(struct v4l2_int_device *s, ++ struct v4l2_streamparm *a) ++{ ++ //TODO: set paramters ++ debug_dummy("debug_dummy -- VIDIOC_S_PARM "); ++ return 0; ++} ++ ++/** ++ * ioctl_g_parm - V4L2 sensor interface handler for VIDIOC_G_PARM ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure ++ * ++ * Returns the sensor's video CAPTURE parameters. ++ */ ++static int ioctl_g_parm(struct v4l2_int_device *s, ++ struct v4l2_streamparm *a) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ struct v4l2_captureparm *cparm = &a->parm.capture; ++ ++ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; ++ ++ memset(a, 0, sizeof(*a)); ++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ ++ cparm->capability = V4L2_CAP_TIMEPERFRAME; ++ cparm->timeperframe = sensor->timeperframe; ++ ++ return 0; ++} ++ ++/** ++ * ioctl_g_fmt_cap - V4L2 sensor interface handler for ioctl_g_fmt_cap ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 v4l2_format structure ++ * ++ * Returns the sensor's current pixel format in the v4l2_format ++ * parameter. ++ */ ++static int ioctl_g_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ f->fmt.pix = sensor->pix; ++ ++ return 0; ++} ++ ++/** ++ * ioctl_try_fmt_cap - Implement the CAPTURE buffer VIDIOC_TRY_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure ++ * ++ * Implement the VIDIOC_TRY_FMT ioctl for the CAPTURE buffer type. This ++ * ioctl is used to negotiate the image capture size and pixel format ++ * without actually making it take effect. ++ */ ++static int ioctl_try_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) ++{ ++ struct v4l2_pix_format *pix = &f->fmt.pix; ++ struct mt9t111_sensor *sensor = s->priv; ++ struct v4l2_pix_format *pix2 = &sensor->pix; ++ ++ pix->width = 640; ++ pix->height = 480; ++#ifdef USE_RAW ++ pix->pixelformat = V4L2_PIX_FMT_SGRBG10; ++ pix->bytesperline = pix->width; ++ pix->colorspace = V4L2_COLORSPACE_SRGB; ++#else ++ pix->pixelformat = V4L2_PIX_FMT_YUYV; ++ pix->bytesperline = pix->width * 2; ++ pix->colorspace = V4L2_COLORSPACE_JPEG; ++#endif ++ pix->field = V4L2_FIELD_NONE; ++ ++ pix->sizeimage = pix->bytesperline * pix->height; ++ pix->priv = 0; ++ *pix2 = *pix; ++ return 0; ++} ++ ++/** ++ * ioctl_s_fmt_cap - V4L2 sensor interface handler for VIDIOC_S_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure ++ * ++ * If the requested format is supported, configures the HW to use that ++ * format, returns error code if format not supported or HW can't be ++ * correctly configured. ++ */ ++static int ioctl_s_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ struct v4l2_pix_format *pix = &f->fmt.pix; ++ int rval; ++ ++ rval = ioctl_try_fmt_cap(s, f); ++ if (!rval) ++ sensor->pix = *pix; ++ ++ return rval; ++} ++ ++/** ++ * ioctl_enum_fmt_cap - Implement the CAPTURE buffer VIDIOC_ENUM_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @fmt: standard V4L2 VIDIOC_ENUM_FMT ioctl structure ++ * ++ * Implement the VIDIOC_ENUM_FMT ioctl for the CAPTURE buffer type. ++ */ ++static int ioctl_enum_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_fmtdesc *fmt) ++{ ++ int index = fmt->index; ++ enum v4l2_buf_type type = fmt->type; ++ ++ memset(fmt, 0, sizeof(*fmt)); ++ fmt->index = index; ++ fmt->type = type; ++ ++ switch (fmt->type) { ++ case V4L2_BUF_TYPE_VIDEO_CAPTURE: ++ if (index >= NUM_CAPTURE_FORMATS) ++ return -EINVAL; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ fmt->flags = mt9t111_formats[index].flags; ++ strlcpy(fmt->description, mt9t111_formats[index].description, ++ sizeof(fmt->description)); ++ fmt->pixelformat = mt9t111_formats[index].pixelformat; ++ ++ return 0; ++} ++ ++/** ++ * ioctl_s_ctrl - V4L2 sensor interface handler for VIDIOC_S_CTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @vc: standard V4L2 VIDIOC_S_CTRL ioctl structure ++ * ++ * If the requested control is supported, sets the control's current ++ * value in HW (and updates the video_control[] array). Otherwise, ++ * returns -EINVAL if the control is not supported. ++ */ ++static int ioctl_s_ctrl(struct v4l2_int_device *s, ++ struct v4l2_control *vc) ++{ ++ debug_dummy("debug_dummy -- s ctrl\n"); ++ return 0; ++} ++ ++/** ++ * ioctl_g_ctrl - V4L2 sensor interface handler for VIDIOC_G_CTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @vc: standard V4L2 VIDIOC_G_CTRL ioctl structure ++ * ++ * If the requested control is supported, returns the control's current ++ * value from the video_control[] array. Otherwise, returns -EINVAL ++ * if the control is not supported. ++ */ ++static int ioctl_g_ctrl(struct v4l2_int_device *s, ++ struct v4l2_control *vc) ++{ ++ debug_dummy("debug_dummy -- g ctrl\n"); ++ return 0; ++} ++ ++/** ++ * ioctl_queryctrl - V4L2 sensor interface handler for VIDIOC_QUERYCTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @qc: standard V4L2 VIDIOC_QUERYCTRL ioctl structure ++ * ++ * If the requested control is supported, returns the control information ++ * from the video_control[] array. Otherwise, returns -EINVAL if the ++ * control is not supported. ++ */ ++static int ioctl_queryctrl(struct v4l2_int_device *s, ++ struct v4l2_queryctrl *qc) ++{ ++ debug_dummy("debug_dummy -- query ctrl\n"); ++ return-EINVAL; ++} ++ ++/** ++ * ioctl_s_routing - V4L2 decoder interface handler for VIDIOC_S_INPUT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @index: number of the input ++ * ++ * If index is valid, selects the requested input. Otherwise, returns -EINVAL if ++ * the input is not supported or there is no active signal present in the ++ * selected input. ++ */ ++static int ioctl_s_routing(struct v4l2_int_device *s, ++ struct v4l2_routing *route) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_g_ifparm - V4L2 decoder interface handler for vidioc_int_g_ifparm_num ++ * @s: pointer to standard V4L2 device structure ++ * @p: pointer to standard V4L2 vidioc_int_g_ifparm_num ioctl structure ++ * ++ * Gets slave interface parameters. ++ * Calculates the required xclk value to support the requested ++ * clock parameters in p. This value is returned in the p ++ * parameter. ++ */ ++static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) ++{ ++ struct mt9t111_sensor *sensor = s->priv; ++ int rval; ++ ++ if (p == NULL) ++ return -EINVAL; ++ ++ if (NULL == sensor->pdata->ifparm) ++ return -EINVAL; ++ ++ rval = sensor->pdata->ifparm(p); ++ if (rval) { ++ v4l_err(sensor->i2c_client, "g_ifparm.Err[%d]\n", rval); ++ return rval; ++ } ++ ++ p->u.ycbcr.clock_curr = 40*1000000; // temporal value ++ ++ return 0; ++} ++ ++ ++static struct v4l2_int_ioctl_desc mt9t111_ioctl_desc[] = { ++ { .num = vidioc_int_enum_framesizes_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_enum_framesizes }, ++ { .num = vidioc_int_enum_frameintervals_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_enum_frameintervals }, ++ { .num = vidioc_int_dev_init_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_dev_init }, ++ { .num = vidioc_int_dev_exit_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_dev_exit }, ++ { .num = vidioc_int_s_power_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_s_power }, ++ { .num = vidioc_int_g_priv_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_g_priv }, ++ {vidioc_int_g_ifparm_num, ++ .func = (v4l2_int_ioctl_func*) ioctl_g_ifparm}, ++ { .num = vidioc_int_init_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_init }, ++ { .num = vidioc_int_enum_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_enum_fmt_cap }, ++ { .num = vidioc_int_try_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_try_fmt_cap }, ++ { .num = vidioc_int_g_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_g_fmt_cap }, ++ { .num = vidioc_int_s_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_s_fmt_cap }, ++ { .num = vidioc_int_g_parm_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_g_parm }, ++ { .num = vidioc_int_s_parm_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_s_parm }, ++ { .num = vidioc_int_queryctrl_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_queryctrl }, ++ { .num = vidioc_int_g_ctrl_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_g_ctrl }, ++ { .num = vidioc_int_s_ctrl_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_s_ctrl }, ++ {.num = vidioc_int_s_video_routing_num, ++ .func = (v4l2_int_ioctl_func *) ioctl_s_routing}, ++}; ++ ++static void mt9t111_refresh(struct i2c_client *client){ ++ int i; ++ unsigned short value; ++ // MCU_ADDRESS [SEQ_CMD] -- refresh ++ mt9t111_write_reg(client, 0x098E, 0x8400); ++ mt9t111_write_reg(client, 0x0990, 0x0006); ++ for (i=0;i<100;i++){ ++ mt9t111_write_reg(client, 0x098E, 0x8400); ++ mt9t111_read_reg(client,0x0990,&value); ++ if ( value == 0) ++ break; ++ mdelay(5); ++ } ++} ++ ++#ifdef COLOR_BAR ++static void mt9t111_color_bar(struct i2c_client *client) ++{ ++ mt9t111_write_reg(client, 0x3210, 0x01B0); // disable lens correction ++ ++ mt9t111_write_reg(client, 0x098E, 0x6003); ++ mt9t111_write_reg(client, 0x0990, 0x0100); ++ mt9t111_write_reg(client, 0x098E, 0x6025); ++ mt9t111_write_reg(client, 0x0990, 0x0003); ++} ++#endif ++ ++static void mt9t111_bayer_format(struct i2c_client *client) ++{ ++ mt9t111_write_regs(client, bayer_pattern_regs, sizeof(bayer_pattern_regs)/sizeof(mt9t111_regs)); ++} ++ ++static void mt9t111_enable_pll(struct i2c_client *client) ++{ ++ int i; ++ unsigned short value; ++ ++ mt9t111_write_regs(client, pll_regs1, sizeof(pll_regs1)/sizeof(mt9t111_regs)); ++ for (i=0;i<100;i++){ ++ mt9t111_read_reg(client,0x0014,&value); ++ if (( value & 0x8000) != 0) ++ break; ++ mdelay(2); ++ } ++ mt9t111_write_regs(client, pll_regs2, sizeof(pll_regs2)/sizeof(mt9t111_regs)); ++} ++ ++ ++static void mt9t111_loaddefault(struct i2c_client *client) ++{ ++ mt9t111_write_reg(client, 0x001A, 0x0219); ++ mt9t111_write_reg(client, 0x001A, 0x0218); ++ ++ mt9t111_enable_pll(client); ++ mt9t111_write_regs(client, def_regs1, sizeof(def_regs1)/sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, patch_rev6, sizeof(patch_rev6)/sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, def_regs2, sizeof(def_regs2)/sizeof(mt9t111_regs)); ++ ++#ifdef USE_RAW ++ mt9t111_bayer_format(client); ++#endif ++ ++#ifdef COLOR_BAR ++ mt9t111_color_bar(client); ++#endif ++ ++ mt9t111_refresh(client); ++} ++ ++static struct v4l2_int_slave mt9t111_slave = { ++ .ioctls = mt9t111_ioctl_desc, ++ .num_ioctls = ARRAY_SIZE(mt9t111_ioctl_desc), ++}; ++ ++static struct v4l2_int_device mt9t111_int_device = { ++ .module = THIS_MODULE, ++ .name = "mt9t111", ++ .priv = &mt9t111, ++ .type = v4l2_int_type_slave, ++ .u = { ++ .slave = &mt9t111_slave, ++ }, ++}; ++ ++/** ++ * mt9t111_probe - sensor driver i2c probe handler ++ * @client: i2c driver client device structure ++ * ++ * Register sensor as an i2c client device and V4L2 ++ * device. ++ */ ++static int ++mt9t111_probe(struct i2c_client *client, const struct i2c_device_id *id) ++{ ++ struct mt9t111_sensor *sensor = &mt9t111; ++ int err; ++ ++ if (i2c_get_clientdata(client)) ++ return -EBUSY; ++ ++ sensor->pdata = client->dev.platform_data; ++ ++ if (!sensor->pdata) { ++ dev_err(&client->dev, "no platform data?\n"); ++ return -ENODEV; ++ } ++ ++ sensor->v4l2_int_device = &mt9t111_int_device; ++ sensor->i2c_client = client; ++ ++ i2c_set_clientdata(client, sensor); ++ ++ sensor->pix.width = 640; ++ sensor->pix.height = 480; ++#ifdef USE_RAW ++ sensor->pix.pixelformat = V4L2_PIX_FMT_SGRBG10; ++#else ++ sensor->pix.pixelformat = V4L2_PIX_FMT_YUYV; ++#endif ++ err = v4l2_int_device_register(sensor->v4l2_int_device); ++ if (err) ++ i2c_set_clientdata(client, NULL); ++ return err; ++} ++ ++/** ++ * mt9t111_remove - sensor driver i2c remove handler ++ * @client: i2c driver client device structure ++ * ++ * Unregister sensor as an i2c client device and V4L2 ++ * device. Complement of mt9t111_probe(). ++ */ ++static int __exit ++mt9t111_remove(struct i2c_client *client) ++{ ++ struct mt9t111_sensor *sensor = i2c_get_clientdata(client); ++ ++ if (!client->adapter) ++ return -ENODEV; /* our client isn't attached */ ++ ++ v4l2_int_device_unregister(sensor->v4l2_int_device); ++ i2c_set_clientdata(client, NULL); ++ ++ return 0; ++} ++ ++static const struct i2c_device_id mt9t111_id[] = { ++ { "mt9t111", 0 }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(i2c, mt9t111_id); ++ ++static struct i2c_driver mt9t111sensor_i2c_driver = { ++ .driver = { ++ .name = "mt9t111", ++ .owner = THIS_MODULE, ++ }, ++ .probe = mt9t111_probe, ++ .remove = __exit_p(mt9t111_remove), ++ .id_table = mt9t111_id, ++}; ++ ++/** ++ * mt9t111sensor_init - sensor driver module_init handler ++ * ++ * Registers driver as an i2c client driver. Returns 0 on success, ++ * error code otherwise. ++ */ ++static int __init mt9t111sensor_init(void) ++{ ++printk(KERN_INFO "entering mt9t111sensor_init\n"); ++ return i2c_add_driver(&mt9t111sensor_i2c_driver); ++} ++module_init(mt9t111sensor_init); ++ ++/** ++ * mt9t111sensor_cleanup - sensor driver module_exit handler ++ * ++ * Unregisters/deletes driver as an i2c client driver. ++ * Complement of mt9t111sensor_init. ++ */ ++static void __exit mt9t111sensor_cleanup(void) ++{ ++ i2c_del_driver(&mt9t111sensor_i2c_driver); ++} ++module_exit(mt9t111sensor_cleanup); ++ ++MODULE_LICENSE("GPL"); ++MODULE_DESCRIPTION("mt9t111 camera sensor driver"); +diff --git a/drivers/media/video/mt9t111_reg.h b/drivers/media/video/mt9t111_reg.h +new file mode 100644 +index 0000000..e012eeb +--- /dev/null ++++ b/drivers/media/video/mt9t111_reg.h +@@ -0,0 +1,1364 @@ ++/* ++ * drivers/media/video/mt9t111_reg.h ++ * ++ * mt9t111 sensor driver header file ++ * ++ * Copyright (C) 2009 Leopard Imaging ++ * ++ * This file is licensed under the terms of the GNU General Public License ++ * version 2. This program is licensed "as is" without any warranty of any ++ * kind, whether express or implied. ++ */ ++ ++#ifndef MT9T111_REG_H ++#define MT9T111_REG_H ++ ++/* register addr */ ++#define MT9T111_CHIP_ID (0x0000) ++ ++/* register value */ ++#define MT9T111_CHIP_ID_VALUE (0x2680) ++ ++typedef struct { ++ u16 delay_time; ++ u16 addr; ++ u16 data; ++} mt9t111_regs; ++ ++mt9t111_regs patch_rev6[] ={ ++ {0, 0x0982, 0x0}, ++ {0, 0x098A, 0xCE7}, ++ {0, 0x0990, 0x3C3C}, ++ {0, 0x0992, 0x3C3C}, ++ {0, 0x0994, 0x3C5F}, ++ {0, 0x0996, 0x4F30}, ++ {0, 0x0998, 0xED08}, ++ {0, 0x099a, 0xBD61}, ++ {0, 0x099c, 0xD5CE}, ++ {0, 0x099e, 0x4CD}, ++ {0, 0x098A, 0xCF7}, ++ {0, 0x0990, 0x1F17}, ++ {0, 0x0992, 0x211}, ++ {0, 0x0994, 0xCC33}, ++ {0, 0x0996, 0x2E30}, ++ {0, 0x0998, 0xED02}, ++ {0, 0x099a, 0xCCFF}, ++ {0, 0x099c, 0xFDED}, ++ {0, 0x099e, 0xCC}, ++ {0, 0x098A, 0xD07}, ++ {0, 0x0990, 0x2}, ++ {0, 0x0992, 0xBD70}, ++ {0, 0x0994, 0x6D18}, ++ {0, 0x0996, 0xDE1F}, ++ {0, 0x0998, 0x181F}, ++ {0, 0x099a, 0x8E01}, ++ {0, 0x099c, 0x10CC}, ++ {0, 0x099e, 0x3C52}, ++ {0, 0x098A, 0xD17}, ++ {0, 0x0990, 0x30ED}, ++ {0, 0x0992, 0x18}, ++ {0, 0x0994, 0xECA0}, ++ {0, 0x0996, 0xC4FD}, ++ {0, 0x0998, 0xBD70}, ++ {0, 0x099a, 0x2120}, ++ {0, 0x099c, 0x1ECC}, ++ {0, 0x099e, 0x3C52}, ++ {0, 0x098A, 0xD27}, ++ {0, 0x0990, 0x30ED}, ++ {0, 0x0992, 0xDE}, ++ {0, 0x0994, 0x1FEC}, ++ {0, 0x0996, 0xA0BD}, ++ {0, 0x0998, 0x7021}, ++ {0, 0x099a, 0xCC3C}, ++ {0, 0x099c, 0x5230}, ++ {0, 0x099e, 0xED02}, ++ {0, 0x098A, 0xD37}, ++ {0, 0x0990, 0xCCFF}, ++ {0, 0x0992, 0xFCED}, ++ {0, 0x0994, 0xCC}, ++ {0, 0x0996, 0x2}, ++ {0, 0x0998, 0xBD70}, ++ {0, 0x099a, 0x6DFC}, ++ {0, 0x099c, 0x4E1}, ++ {0, 0x099e, 0x1A83}, ++ {0, 0x098A, 0xD47}, ++ {0, 0x0990, 0x1}, ++ {0, 0x0992, 0x2720}, ++ {0, 0x0994, 0x1A83}, ++ {0, 0x0996, 0x4}, ++ {0, 0x0998, 0x271E}, ++ {0, 0x099a, 0x1A83}, ++ {0, 0x099c, 0x8}, ++ {0, 0x099e, 0x271C}, ++ {0, 0x098A, 0xD57}, ++ {0, 0x0990, 0x1A83}, ++ {0, 0x0992, 0x10}, ++ {0, 0x0994, 0x271A}, ++ {0, 0x0996, 0x1A83}, ++ {0, 0x0998, 0x20}, ++ {0, 0x099a, 0x2718}, ++ {0, 0x099c, 0x1A83}, ++ {0, 0x099e, 0x40}, ++ {0, 0x098A, 0xD67}, ++ {0, 0x0990, 0x2716}, ++ {0, 0x0992, 0x2019}, ++ {0, 0x0994, 0xC61E}, ++ {0, 0x0996, 0x2012}, ++ {0, 0x0998, 0xC622}, ++ {0, 0x099a, 0x200E}, ++ {0, 0x099c, 0xC621}, ++ {0, 0x099e, 0x200A}, ++ {0, 0x098A, 0xD77}, ++ {0, 0x0990, 0xC620}, ++ {0, 0x0992, 0x2006}, ++ {0, 0x0994, 0xC62A}, ++ {0, 0x0996, 0x2002}, ++ {0, 0x0998, 0xC62B}, ++ {0, 0x099a, 0x30ED}, ++ {0, 0x099c, 0x8CC}, ++ {0, 0x099e, 0x3400}, ++ {0, 0x098A, 0xD87}, ++ {0, 0x0990, 0x30ED}, ++ {0, 0x0992, 0x34}, ++ {0, 0x0994, 0xBD6F}, ++ {0, 0x0996, 0xD184}, ++ {0, 0x0998, 0x330}, ++ {0, 0x099a, 0xED07}, ++ {0, 0x099c, 0xA60A}, ++ {0, 0x099e, 0x4848}, ++ {0, 0x098A, 0xD97}, ++ {0, 0x0990, 0x5FED}, ++ {0, 0x0992, 0x5EA}, ++ {0, 0x0994, 0x8AA}, ++ {0, 0x0996, 0x731}, ++ {0, 0x0998, 0xBD70}, ++ {0, 0x099a, 0x2130}, ++ {0, 0x099c, 0xC60A}, ++ {0, 0x099e, 0x3A35}, ++ {0, 0x098A, 0xDA7}, ++ {0, 0x0990, 0x3937}, ++ {0, 0x0992, 0x3C3C}, ++ {0, 0x0994, 0x3C34}, ++ {0, 0x0996, 0xDE2F}, ++ {0, 0x0998, 0xEE0E}, ++ {0, 0x099a, 0xAD00}, ++ {0, 0x099c, 0x7D13}, ++ {0, 0x099e, 0xEF27}, ++ {0, 0x098A, 0xDB7}, ++ {0, 0x0990, 0x7CCE}, ++ {0, 0x0992, 0x13E0}, ++ {0, 0x0994, 0x1E05}, ++ {0, 0x0996, 0x1060}, ++ {0, 0x0998, 0xE60E}, ++ {0, 0x099a, 0x4FC3}, ++ {0, 0x099c, 0x13F0}, ++ {0, 0x099e, 0x8FE6}, ++ {0, 0x098A, 0xDC7}, ++ {0, 0x0990, 0x30}, ++ {0, 0x0992, 0xE107}, ++ {0, 0x0994, 0x2216}, ++ {0, 0x0996, 0xF613}, ++ {0, 0x0998, 0xEE4F}, ++ {0, 0x099a, 0xC313}, ++ {0, 0x099c, 0xF38F}, ++ {0, 0x099e, 0xE600}, ++ {0, 0x098A, 0xDD7}, ++ {0, 0x0990, 0x30E1}, ++ {0, 0x0992, 0x725}, ++ {0, 0x0994, 0x7F6}, ++ {0, 0x0996, 0x13EE}, ++ {0, 0x0998, 0xC103}, ++ {0, 0x099a, 0x253C}, ++ {0, 0x099c, 0x7F13}, ++ {0, 0x099e, 0xEEF6}, ++ {0, 0x098A, 0xDE7}, ++ {0, 0x0990, 0x13EF}, ++ {0, 0x0992, 0xE706}, ++ {0, 0x0994, 0xCC13}, ++ {0, 0x0996, 0xF0ED}, ++ {0, 0x0998, 0x4CC}, ++ {0, 0x099a, 0x13F3}, ++ {0, 0x099c, 0x200F}, ++ {0, 0x099e, 0x7C13}, ++ {0, 0x098A, 0xDF7}, ++ {0, 0x0990, 0xEEEC}, ++ {0, 0x0992, 0x4C3}, ++ {0, 0x0994, 0x1}, ++ {0, 0x0996, 0xED04}, ++ {0, 0x0998, 0xEC02}, ++ {0, 0x099a, 0xC300}, ++ {0, 0x099c, 0x1ED}, ++ {0, 0x099e, 0x2F6}, ++ {0, 0x098A, 0xE07}, ++ {0, 0x0990, 0x13EE}, ++ {0, 0x0992, 0xE106}, ++ {0, 0x0994, 0x2412}, ++ {0, 0x0996, 0xEE04}, ++ {0, 0x0998, 0xE600}, ++ {0, 0x099a, 0x30E1}, ++ {0, 0x099c, 0x722}, ++ {0, 0x099e, 0xDFEE}, ++ {0, 0x098A, 0xE17}, ++ {0, 0x0990, 0x2E6}, ++ {0, 0x0992, 0x30}, ++ {0, 0x0994, 0xE107}, ++ {0, 0x0996, 0x25D6}, ++ {0, 0x0998, 0xDE49}, ++ {0, 0x099a, 0xEE08}, ++ {0, 0x099c, 0xAD00}, ++ {0, 0x099e, 0xCC13}, ++ {0, 0x098A, 0xE27}, ++ {0, 0x0990, 0xF630}, ++ {0, 0x0992, 0xED00}, ++ {0, 0x0994, 0xDE2F}, ++ {0, 0x0996, 0xEE10}, ++ {0, 0x0998, 0xCC13}, ++ {0, 0x099a, 0xFAAD}, ++ {0, 0x099c, 0x38}, ++ {0, 0x099e, 0x3838}, ++ {0, 0x098A, 0xE37}, ++ {0, 0x0990, 0x3839}, ++ {0, 0x098A, 0x1000}, ++ {0, 0x0990, 0xCC10}, ++ {0, 0x0992, 0x9BD}, ++ {0, 0x0994, 0x4224}, ++ {0, 0x0996, 0x7E10}, ++ {0, 0x0998, 0x9C6}, ++ {0, 0x099a, 0x1F7}, ++ {0, 0x099c, 0x18A}, ++ {0, 0x099e, 0xC606}, ++ {0, 0x098A, 0x1010}, ++ {0, 0x0990, 0xF701}, ++ {0, 0x0992, 0x8BDE}, ++ {0, 0x0994, 0x3F18}, ++ {0, 0x0996, 0xCE0B}, ++ {0, 0x0998, 0xF1CC}, ++ {0, 0x099a, 0x11}, ++ {0, 0x099c, 0xBDD7}, ++ {0, 0x099e, 0xCC}, ++ {0, 0x098A, 0x1020}, ++ {0, 0x0990, 0xBF1}, ++ {0, 0x0992, 0xDD3F}, ++ {0, 0x0994, 0xDE35}, ++ {0, 0x0996, 0x18CE}, ++ {0, 0x0998, 0xC03}, ++ {0, 0x099a, 0xCC00}, ++ {0, 0x099c, 0x3FBD}, ++ {0, 0x099e, 0xD700}, ++ {0, 0x098A, 0x1030}, ++ {0, 0x0990, 0xCC0C}, ++ {0, 0x0992, 0x3DD}, ++ {0, 0x0994, 0x35DE}, ++ {0, 0x0996, 0x4718}, ++ {0, 0x0998, 0xCE0C}, ++ {0, 0x099a, 0x43CC}, ++ {0, 0x099c, 0x15}, ++ {0, 0x099e, 0xBDD7}, ++ {0, 0x098A, 0x1040}, ++ {0, 0x0990, 0xCC}, ++ {0, 0x0992, 0xC43}, ++ {0, 0x0994, 0xDD47}, ++ {0, 0x0996, 0xFE00}, ++ {0, 0x0998, 0x3318}, ++ {0, 0x099a, 0xCE0C}, ++ {0, 0x099c, 0x59CC}, ++ {0, 0x099e, 0x9}, ++ {0, 0x098A, 0x1050}, ++ {0, 0x0990, 0xBDD7}, ++ {0, 0x0992, 0xCC}, ++ {0, 0x0994, 0xC59}, ++ {0, 0x0996, 0xFD00}, ++ {0, 0x0998, 0x33DE}, ++ {0, 0x099a, 0x4118}, ++ {0, 0x099c, 0xCE0C}, ++ {0, 0x099e, 0x63CC}, ++ {0, 0x098A, 0x1060}, ++ {0, 0x0990, 0xD}, ++ {0, 0x0992, 0xBDD7}, ++ {0, 0x0994, 0xCC}, ++ {0, 0x0996, 0xC63}, ++ {0, 0x0998, 0xDD41}, ++ {0, 0x099a, 0xFE00}, ++ {0, 0x099c, 0x3118}, ++ {0, 0x099e, 0xCE0C}, ++ {0, 0x098A, 0x1070}, ++ {0, 0x0990, 0x71CC}, ++ {0, 0x0992, 0x29}, ++ {0, 0x0994, 0xBDD7}, ++ {0, 0x0996, 0xCC}, ++ {0, 0x0998, 0xC71}, ++ {0, 0x099a, 0xFD00}, ++ {0, 0x099c, 0x31DE}, ++ {0, 0x099e, 0x3918}, ++ {0, 0x098A, 0x1080}, ++ {0, 0x0990, 0xCE0C}, ++ {0, 0x0992, 0x9BCC}, ++ {0, 0x0994, 0x23}, ++ {0, 0x0996, 0xBDD7}, ++ {0, 0x0998, 0xCC}, ++ {0, 0x099a, 0xC9B}, ++ {0, 0x099c, 0xDD39}, ++ {0, 0x099e, 0xDE49}, ++ {0, 0x098A, 0x1090}, ++ {0, 0x0990, 0x18CE}, ++ {0, 0x0992, 0xCBF}, ++ {0, 0x0994, 0xCC00}, ++ {0, 0x0996, 0xDBD}, ++ {0, 0x0998, 0xD700}, ++ {0, 0x099a, 0xCC0C}, ++ {0, 0x099c, 0xBFDD}, ++ {0, 0x099e, 0x49CC}, ++ {0, 0x098A, 0x10A0}, ++ {0, 0x0990, 0x1162}, ++ {0, 0x0992, 0xFD0B}, ++ {0, 0x0994, 0xFDCC}, ++ {0, 0x0996, 0xCE7}, ++ {0, 0x0998, 0xFD0C}, ++ {0, 0x099a, 0x1FCC}, ++ {0, 0x099c, 0x1245}, ++ {0, 0x099e, 0xFD0C}, ++ {0, 0x098A, 0x10B0}, ++ {0, 0x0990, 0x51CC}, ++ {0, 0x0992, 0x110B}, ++ {0, 0x0994, 0xFD0C}, ++ {0, 0x0996, 0x5BCC}, ++ {0, 0x0998, 0x1108}, ++ {0, 0x099a, 0xFD0C}, ++ {0, 0x099c, 0x65CC}, ++ {0, 0x099e, 0x10D0}, ++ {0, 0x098A, 0x10C0}, ++ {0, 0x0990, 0xFD0C}, ++ {0, 0x0992, 0x7BCC}, ++ {0, 0x0994, 0x12DE}, ++ {0, 0x0996, 0xFD0C}, ++ {0, 0x0998, 0xA7CC}, ++ {0, 0x099a, 0xDA8}, ++ {0, 0x099c, 0xFD0C}, ++ {0, 0x099e, 0xCB39}, ++ {0, 0x098A, 0x10D0}, ++ {0, 0x0990, 0x37DE}, ++ {0, 0x0992, 0x1DEC}, ++ {0, 0x0994, 0xC5F}, ++ {0, 0x0996, 0x8402}, ++ {0, 0x0998, 0x4416}, ++ {0, 0x099a, 0x4FF7}, ++ {0, 0x099c, 0xCCD}, ++ {0, 0x099e, 0xE60B}, ++ {0, 0x098A, 0x10E0}, ++ {0, 0x0990, 0xC407}, ++ {0, 0x0992, 0xF70C}, ++ {0, 0x0994, 0xCE7F}, ++ {0, 0x0996, 0x30C4}, ++ {0, 0x0998, 0xEC25}, ++ {0, 0x099a, 0xFD30}, ++ {0, 0x099c, 0xC5FC}, ++ {0, 0x099e, 0x6D6}, ++ {0, 0x098A, 0x10F0}, ++ {0, 0x0990, 0xFD30}, ++ {0, 0x0992, 0xC701}, ++ {0, 0x0994, 0xFC30}, ++ {0, 0x0996, 0xC0FD}, ++ {0, 0x0998, 0xBED}, ++ {0, 0x099a, 0xFC30}, ++ {0, 0x099c, 0xC2FD}, ++ {0, 0x099e, 0xBEF}, ++ {0, 0x098A, 0x1100}, ++ {0, 0x0990, 0x30E6}, ++ {0, 0x0992, 0xBD}, ++ {0, 0x0994, 0x5203}, ++ {0, 0x0996, 0x3139}, ++ {0, 0x0998, 0x7E9E}, ++ {0, 0x099a, 0x143C}, ++ {0, 0x099c, 0x3C3C}, ++ {0, 0x099e, 0x2101}, ++ {0, 0x098A, 0x1110}, ++ {0, 0x0990, 0xCC00}, ++ {0, 0x0992, 0x18BD}, ++ {0, 0x0994, 0x6FD1}, ++ {0, 0x0996, 0xC504}, ++ {0, 0x0998, 0x26F5}, ++ {0, 0x099a, 0xDC25}, ++ {0, 0x099c, 0x30ED}, ++ {0, 0x099e, 0x420}, ++ {0, 0x098A, 0x1120}, ++ {0, 0x0990, 0x12EE}, ++ {0, 0x0992, 0x43C}, ++ {0, 0x0994, 0x1838}, ++ {0, 0x0996, 0xE621}, ++ {0, 0x0998, 0x18E7}, ++ {0, 0x099a, 0xBE30}, ++ {0, 0x099c, 0xEE04}, ++ {0, 0x099e, 0xEC1D}, ++ {0, 0x098A, 0x1130}, ++ {0, 0x0990, 0x30ED}, ++ {0, 0x0992, 0x4EC}, ++ {0, 0x0994, 0x426}, ++ {0, 0x0996, 0xEACC}, ++ {0, 0x0998, 0x1A}, ++ {0, 0x099a, 0xED02}, ++ {0, 0x099c, 0xCCFB}, ++ {0, 0x099e, 0xFFED}, ++ {0, 0x098A, 0x1140}, ++ {0, 0x0990, 0xCC}, ++ {0, 0x0992, 0x400}, ++ {0, 0x0994, 0xBD70}, ++ {0, 0x0996, 0x6DCC}, ++ {0, 0x0998, 0x1A}, ++ {0, 0x099a, 0x30ED}, ++ {0, 0x099c, 0x2CC}, ++ {0, 0x099e, 0xFBFF}, ++ {0, 0x098A, 0x1150}, ++ {0, 0x0990, 0xED00}, ++ {0, 0x0992, 0x5F4F}, ++ {0, 0x0994, 0xBD70}, ++ {0, 0x0996, 0x6D5F}, ++ {0, 0x0998, 0xBD5B}, ++ {0, 0x099a, 0x17BD}, ++ {0, 0x099c, 0x558B}, ++ {0, 0x099e, 0x3838}, ++ {0, 0x098A, 0x1160}, ++ {0, 0x0990, 0x3839}, ++ {0, 0x0992, 0x3C3C}, ++ {0, 0x0994, 0xC640}, ++ {0, 0x0996, 0xF730}, ++ {0, 0x0998, 0xC4FC}, ++ {0, 0x099a, 0xBED}, ++ {0, 0x099c, 0xFD30}, ++ {0, 0x099e, 0xC0FC}, ++ {0, 0x098A, 0x1170}, ++ {0, 0x0990, 0xBEF}, ++ {0, 0x0992, 0xFD30}, ++ {0, 0x0994, 0xC2DE}, ++ {0, 0x0996, 0x1DEC}, ++ {0, 0x0998, 0x25FD}, ++ {0, 0x099a, 0x30C5}, ++ {0, 0x099c, 0x101}, ++ {0, 0x099e, 0x1FC}, ++ {0, 0x098A, 0x1180}, ++ {0, 0x0990, 0x30C2}, ++ {0, 0x0992, 0xFD06}, ++ {0, 0x0994, 0xD6EC}, ++ {0, 0x0996, 0xC5F}, ++ {0, 0x0998, 0x8402}, ++ {0, 0x099a, 0x4416}, ++ {0, 0x099c, 0x4F30}, ++ {0, 0x099e, 0xE703}, ++ {0, 0x098A, 0x1190}, ++ {0, 0x0990, 0xF10C}, ++ {0, 0x0992, 0xCD27}, ++ {0, 0x0994, 0x15F1}, ++ {0, 0x0996, 0xCCD}, ++ {0, 0x0998, 0x2309}, ++ {0, 0x099a, 0xFC06}, ++ {0, 0x099c, 0xD604}, ++ {0, 0x099e, 0xFD06}, ++ {0, 0x098A, 0x11A0}, ++ {0, 0x0990, 0xD620}, ++ {0, 0x0992, 0x7FC}, ++ {0, 0x0994, 0x6D6}, ++ {0, 0x0996, 0x5FD}, ++ {0, 0x0998, 0x6D6}, ++ {0, 0x099a, 0xDE1D}, ++ {0, 0x099c, 0xE60B}, ++ {0, 0x099e, 0xC407}, ++ {0, 0x098A, 0x11B0}, ++ {0, 0x0990, 0x30E7}, ++ {0, 0x0992, 0x2F1}, ++ {0, 0x0994, 0xCCE}, ++ {0, 0x0996, 0x272C}, ++ {0, 0x0998, 0x7D0C}, ++ {0, 0x099a, 0xCE27}, ++ {0, 0x099c, 0x275D}, ++ {0, 0x099e, 0x2724}, ++ {0, 0x098A, 0x11C0}, ++ {0, 0x0990, 0x7F30}, ++ {0, 0x0992, 0xC4FC}, ++ {0, 0x0994, 0x6D6}, ++ {0, 0x0996, 0xFD30}, ++ {0, 0x0998, 0xC5F6}, ++ {0, 0x099a, 0xCCE}, ++ {0, 0x099c, 0x4FFD}, ++ {0, 0x099e, 0x30C7}, ++ {0, 0x098A, 0x11D0}, ++ {0, 0x0990, 0xC640}, ++ {0, 0x0992, 0xF730}, ++ {0, 0x0994, 0xC4E6}, ++ {0, 0x0996, 0x24F}, ++ {0, 0x0998, 0xFD30}, ++ {0, 0x099a, 0xC501}, ++ {0, 0x099c, 0x101}, ++ {0, 0x099e, 0xFC30}, ++ {0, 0x098A, 0x11E0}, ++ {0, 0x0990, 0xC2FD}, ++ {0, 0x0992, 0x6D6}, ++ {0, 0x0994, 0x7D06}, ++ {0, 0x0996, 0xCB27}, ++ {0, 0x0998, 0x2EC6}, ++ {0, 0x099a, 0x40F7}, ++ {0, 0x099c, 0x30C4}, ++ {0, 0x099e, 0xFC06}, ++ {0, 0x098A, 0x11F0}, ++ {0, 0x0990, 0xC104}, ++ {0, 0x0992, 0xF306}, ++ {0, 0x0994, 0xD6ED}, ++ {0, 0x0996, 0x5F}, ++ {0, 0x0998, 0x6D00}, ++ {0, 0x099a, 0x2A01}, ++ {0, 0x099c, 0x5317}, ++ {0, 0x099e, 0xFD30}, ++ {0, 0x098A, 0x1200}, ++ {0, 0x0990, 0xC0EC}, ++ {0, 0x0992, 0xFD}, ++ {0, 0x0994, 0x30C2}, ++ {0, 0x0996, 0xFC06}, ++ {0, 0x0998, 0xC1FD}, ++ {0, 0x099a, 0x30C5}, ++ {0, 0x099c, 0x101}, ++ {0, 0x099e, 0x1FC}, ++ {0, 0x098A, 0x1210}, ++ {0, 0x0990, 0x30C2}, ++ {0, 0x0992, 0xFD06}, ++ {0, 0x0994, 0xC720}, ++ {0, 0x0996, 0x227F}, ++ {0, 0x0998, 0x30C4}, ++ {0, 0x099a, 0xDE1D}, ++ {0, 0x099c, 0xEC25}, ++ {0, 0x099e, 0xFD30}, ++ {0, 0x098A, 0x1220}, ++ {0, 0x0990, 0xC5FC}, ++ {0, 0x0992, 0x6D6}, ++ {0, 0x0994, 0xFD30}, ++ {0, 0x0996, 0xC701}, ++ {0, 0x0998, 0xFC30}, ++ {0, 0x099a, 0xC0FD}, ++ {0, 0x099c, 0x6D0}, ++ {0, 0x099e, 0xFC30}, ++ {0, 0x098A, 0x1230}, ++ {0, 0x0990, 0xC2FD}, ++ {0, 0x0992, 0x6D2}, ++ {0, 0x0994, 0xEC25}, ++ {0, 0x0996, 0xFD06}, ++ {0, 0x0998, 0xC3BD}, ++ {0, 0x099a, 0x953C}, ++ {0, 0x099c, 0xDE3F}, ++ {0, 0x099e, 0xEE10}, ++ {0, 0x098A, 0x1240}, ++ {0, 0x0990, 0xAD00}, ++ {0, 0x0992, 0x3838}, ++ {0, 0x0994, 0x3930}, ++ {0, 0x0996, 0x8FC3}, ++ {0, 0x0998, 0xFFE9}, ++ {0, 0x099a, 0x8F35}, ++ {0, 0x099c, 0xBDAD}, ++ {0, 0x099e, 0x1530}, ++ {0, 0x098A, 0x1250}, ++ {0, 0x0990, 0x6F16}, ++ {0, 0x0992, 0x18DE}, ++ {0, 0x0994, 0x1918}, ++ {0, 0x0996, 0x8FC3}, ++ {0, 0x0998, 0x14B}, ++ {0, 0x099a, 0x188F}, ++ {0, 0x099c, 0x18EC}, ++ {0, 0x099e, 0xFD}, ++ {0, 0x098A, 0x1260}, ++ {0, 0x0990, 0x50E}, ++ {0, 0x0992, 0x18EC}, ++ {0, 0x0994, 0x2FD}, ++ {0, 0x0996, 0x510}, ++ {0, 0x0998, 0xE616}, ++ {0, 0x099a, 0x4FED}, ++ {0, 0x099c, 0x418}, ++ {0, 0x099e, 0x8FC3}, ++ {0, 0x098A, 0x1270}, ++ {0, 0x0990, 0xFFCB}, ++ {0, 0x0992, 0xE304}, ++ {0, 0x0994, 0x8FE6}, ++ {0, 0x0996, 0xF7}, ++ {0, 0x0998, 0x514}, ++ {0, 0x099a, 0x18DE}, ++ {0, 0x099c, 0x1930}, ++ {0, 0x099e, 0xE616}, ++ {0, 0x098A, 0x1280}, ++ {0, 0x0990, 0x4FED}, ++ {0, 0x0992, 0x418}, ++ {0, 0x0994, 0x8FC3}, ++ {0, 0x0996, 0x119}, ++ {0, 0x0998, 0xE304}, ++ {0, 0x099a, 0x8FE6}, ++ {0, 0x099c, 0xF7}, ++ {0, 0x099e, 0x515}, ++ {0, 0x098A, 0x1290}, ++ {0, 0x0990, 0xFC05}, ++ {0, 0x0992, 0x5BFD}, ++ {0, 0x0994, 0x512}, ++ {0, 0x0996, 0xDE37}, ++ {0, 0x0998, 0xEE08}, ++ {0, 0x099a, 0xAD00}, ++ {0, 0x099c, 0x30E6}, ++ {0, 0x099e, 0x164F}, ++ {0, 0x098A, 0x12A0}, ++ {0, 0x0990, 0x5ED}, ++ {0, 0x0992, 0x48F}, ++ {0, 0x0994, 0xC300}, ++ {0, 0x0996, 0x630}, ++ {0, 0x0998, 0xE304}, ++ {0, 0x099a, 0x8FF6}, ++ {0, 0x099c, 0x516}, ++ {0, 0x099e, 0x4FED}, ++ {0, 0x098A, 0x12B0}, ++ {0, 0x0990, 0x30}, ++ {0, 0x0992, 0x6C16}, ++ {0, 0x0994, 0xE616}, ++ {0, 0x0996, 0xC103}, ++ {0, 0x0998, 0x2598}, ++ {0, 0x099a, 0xCC32}, ++ {0, 0x099c, 0x8EED}, ++ {0, 0x099e, 0xEC}, ++ {0, 0x098A, 0x12C0}, ++ {0, 0x0990, 0x6BD}, ++ {0, 0x0992, 0x7021}, ++ {0, 0x0994, 0xCC32}, ++ {0, 0x0996, 0x6C30}, ++ {0, 0x0998, 0xED02}, ++ {0, 0x099a, 0xCCF8}, ++ {0, 0x099c, 0xED}, ++ {0, 0x099e, 0xA6}, ++ {0, 0x098A, 0x12D0}, ++ {0, 0x0990, 0x9E3}, ++ {0, 0x0992, 0xA84}, ++ {0, 0x0994, 0x7BD}, ++ {0, 0x0996, 0x706D}, ++ {0, 0x0998, 0x30C6}, ++ {0, 0x099a, 0x173A}, ++ {0, 0x099c, 0x3539}, ++ {0, 0x099e, 0x3CBD}, ++ {0, 0x098A, 0x12E0}, ++ {0, 0x0990, 0x776D}, ++ {0, 0x0992, 0xCC32}, ++ {0, 0x0994, 0x5C30}, ++ {0, 0x0996, 0xED00}, ++ {0, 0x0998, 0xFC13}, ++ {0, 0x099a, 0x8683}, ++ {0, 0x099c, 0x1}, ++ {0, 0x099e, 0xBD70}, ++ {0, 0x098A, 0x12F0}, ++ {0, 0x0990, 0x21CC}, ++ {0, 0x0992, 0x325E}, ++ {0, 0x0994, 0x30ED}, ++ {0, 0x0996, 0xFC}, ++ {0, 0x0998, 0x1388}, ++ {0, 0x099a, 0x8300}, ++ {0, 0x099c, 0x1BD}, ++ {0, 0x099e, 0x7021}, ++ {0, 0x098A, 0x1300}, ++ {0, 0x0990, 0x3839}, ++ {0, 0x098E, 0x0010}, ++ {0, 0x0990, 0x1000}, ++ {0, 0x098E, 0x0003}, ++ {100, 0x0990, 0x0004} ++}; ++ ++mt9t111_regs def_regs1[] ={ ++ {0, 0x001A, 0x0218}, ++ {0, 0x001E, 0x0777}, ++ {0, 0x3084, 0x2409}, ++ {0, 0x3092, 0x0A49}, ++ {0, 0x3094, 0x4949}, ++ {0, 0x3096, 0x4950}, ++ {0, 0x0018, 0x402D}, ++ {100, 0x0018, 0x402C}, ++ {0, 0x098E, 0x6800}, ++ {0, 0x0990, 0x0280}, ++ {0, 0x098E, 0x6802}, ++ {0, 0x0990, 0x01E0}, ++ {0, 0x098E, 0xE88E}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x68A0}, ++ {0, 0x0990, 0x082D}, ++ {0, 0x098E, 0x4802}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x4804}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x4806}, ++ {0, 0x0990, 0x060D}, ++ {0, 0x098E, 0x4808}, ++ {0, 0x0990, 0x080D}, ++ {0, 0x098E, 0x480A}, ++ {0, 0x0990, 0x0111}, ++ {0, 0x098E, 0x480C}, ++ {0, 0x0990, 0x046C}, ++ {0, 0x098E, 0x480F}, ++ {0, 0x0990, 0x00CC}, ++ {0, 0x098E, 0x4811}, ++ {0, 0x0990, 0x0381}, ++ {0, 0x098E, 0x4813}, ++ {0, 0x0990, 0x024F}, ++ {0, 0x098E, 0x481D}, ++ {0, 0x0990, 0x05AE}, ++ {0, 0x098E, 0x481F}, ++ {0, 0x0990, 0x05D0}, ++ {0, 0x098E, 0x4825}, ++ {0, 0x0990, 0x07AC}, ++ {0, 0x098E, 0x6C00}, ++ {0, 0x0990, 0x0800}, ++ {0, 0x098E, 0x6C02}, ++ {0, 0x0990, 0x0600}, ++ {0, 0x098E, 0xEC8E}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x6CA0}, ++ {0, 0x0990, 0x082D}, ++ {0, 0x098E, 0x484A}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x484C}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x484E}, ++ {0, 0x0990, 0x060D}, ++ {0, 0x098E, 0x4850}, ++ {0, 0x0990, 0x080D}, ++ {0, 0x098E, 0x4852}, ++ {0, 0x0990, 0x0111}, ++ {0, 0x098E, 0x4854}, ++ {0, 0x0990, 0x146C}, ++ {0, 0x098E, 0x4857}, ++ {0, 0x0990, 0x00CC}, ++ {0, 0x098E, 0x4859}, ++ {0, 0x0990, 0x0381}, ++ {0, 0x098E, 0x485B}, ++ {0, 0x0990, 0x024F}, ++ {0, 0x098E, 0x4865}, ++ {0, 0x0990, 0x05AE}, ++ {0, 0x098E, 0x4867}, ++ {0, 0x0990, 0x05D0}, ++ {0, 0x098E, 0x486D}, ++ {0, 0x0990, 0x07AC}, ++ {0, 0x098E, 0xC8A5}, ++ {0, 0x0990, 0x001D}, ++ {0, 0x098E, 0xC8A6}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xC8A7}, ++ {0, 0x0990, 0x0023}, ++ {0, 0x098E, 0xC8A8}, ++ {0, 0x0990, 0x0026}, ++ {0, 0x098E, 0xC844}, ++ {0, 0x0990, 0x0091}, ++ {0, 0x098E, 0xC92F}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xC845}, ++ {0, 0x0990, 0x0079}, ++ {0, 0x098E, 0xC92D}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xC88C}, ++ {0, 0x0990, 0x0091}, ++ {0, 0x098E, 0xC930}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xC88D}, ++ {0, 0x0990, 0x0079}, ++ {0, 0x098E, 0xC92E}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xA002}, ++ {0, 0x0990, 0x0010}, ++ {0, 0x098E, 0xA009}, ++ {0, 0x0990, 0x0002}, ++ {0, 0x098E, 0xA00A}, ++ {0, 0x0990, 0x0003}, ++ {0, 0x098E, 0xA00C}, ++ {0, 0x0990, 0x000A}, ++ {0, 0x098E, 0x4846}, ++ {0, 0x0990, 0x0014}, ++ {0, 0x098E, 0x68AA}, ++ {0, 0x0990, 0x0278}, ++ {0, 0x098E, 0x488E}, ++ {0, 0x0990, 0x0014}, ++ {0, 0x098E, 0x6CAA}, ++ {0, 0x0990, 0x0218}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0005}, ++ {0, 0x3C20, 0x0001}, ++ {0, 0x364A, 0x7D2F}, ++ {0, 0x364C, 0x79EB}, ++ {0, 0x364E, 0x18D2}, ++ {0, 0x3650, 0x9F8F}, ++ {0, 0x3652, 0xA7D2}, ++ {0, 0x368A, 0x460C}, ++ {0, 0x368C, 0x14F0}, ++ {0, 0x368E, 0x946F}, ++ {0, 0x3690, 0xC471}, ++ {0, 0x3692, 0x04B1}, ++ {0, 0x36CA, 0x0433}, ++ {0, 0x36CC, 0x680D}, ++ {0, 0x36CE, 0xEEF3}, ++ {0, 0x36D0, 0x4850}, ++ {0, 0x36D2, 0xF233}, ++ {0, 0x370A, 0xB2AF}, ++ {0, 0x370C, 0x2CF0}, ++ {0, 0x370E, 0x3F10}, ++ {0, 0x3710, 0xC673}, ++ {0, 0x3712, 0xA972}, ++ {0, 0x374A, 0x0590}, ++ {0, 0x374C, 0xAFB3}, ++ {0, 0x374E, 0x93D7}, ++ {0, 0x3750, 0x8D12}, ++ {0, 0x3752, 0x2539}, ++ {0, 0x3640, 0x0350}, ++ {0, 0x3642, 0x322C}, ++ {0, 0x3644, 0x77D1}, ++ {0, 0x3646, 0xA26F}, ++ {0, 0x3648, 0xC872}, ++ {0, 0x3680, 0x0C4C}, ++ {0, 0x3682, 0x9510}, ++ {0, 0x3684, 0x110E}, ++ {0, 0x3686, 0x4331}, ++ {0, 0x3688, 0xC1CF}, ++ {0, 0x36C0, 0x6152}, ++ {0, 0x36C2, 0x038E}, ++ {0, 0x36C4, 0x9AF4}, ++ {0, 0x36C6, 0xE12F}, ++ {0, 0x36C8, 0x09F3}, ++ {0, 0x3700, 0xC5AF}, ++ {0, 0x3702, 0xCA90}, ++ {0, 0x3704, 0x5D0F}, ++ {0, 0x3706, 0x3293}, ++ {0, 0x3708, 0x2B92}, ++ {0, 0x3740, 0xC590}, ++ {0, 0x3742, 0x8133}, ++ {0, 0x3744, 0xE0F6}, ++ {0, 0x3746, 0x0254}, ++ {0, 0x3748, 0x10B9}, ++ {0, 0x3654, 0x7F8F}, ++ {0, 0x3656, 0x6F6C}, ++ {0, 0x3658, 0x5971}, ++ {0, 0x365A, 0x9A0F}, ++ {0, 0x365C, 0xA1B2}, ++ {0, 0x3694, 0xB00C}, ++ {0, 0x3696, 0xEBCF}, ++ {0, 0x3698, 0x06AD}, ++ {0, 0x369A, 0x4D31}, ++ {0, 0x369C, 0x2A4E}, ++ {0, 0x36D4, 0x4752}, ++ {0, 0x36D6, 0x724D}, ++ {0, 0x36D8, 0xAD34}, ++ {0, 0x36DA, 0x1350}, ++ {0, 0x36DC, 0x4E94}, ++ {0, 0x3714, 0xA06E}, ++ {0, 0x3716, 0x9152}, ++ {0, 0x3718, 0x1F53}, ++ {0, 0x371A, 0x3933}, ++ {0, 0x371C, 0xBA94}, ++ {0, 0x3754, 0x1233}, ++ {0, 0x3756, 0xA032}, ++ {0, 0x3758, 0xE936}, ++ {0, 0x375A, 0xBE34}, ++ {0, 0x375C, 0x02D9}, ++ {0, 0x365E, 0x7DEF}, ++ {0, 0x3660, 0x434B}, ++ {0, 0x3662, 0x69F1}, ++ {0, 0x3664, 0x8A0F}, ++ {0, 0x3666, 0xBDB2}, ++ {0, 0x369E, 0x290D}, ++ {0, 0x36A0, 0x42CF}, ++ {0, 0x36A2, 0xDC6D}, ++ {0, 0x36A4, 0x91B1}, ++ {0, 0x36A6, 0x9DE9}, ++ {0, 0x36DE, 0x70B2}, ++ {0, 0x36E0, 0x02AC}, ++ {0, 0x36E2, 0x9714}, ++ {0, 0x36E4, 0xF3CF}, ++ {0, 0x36E6, 0x6BD1}, ++ {0, 0x371E, 0xE42E}, ++ {0, 0x3720, 0x1D32}, ++ {0, 0x3722, 0xCC31}, ++ {0, 0x3724, 0xAE94}, ++ {0, 0x3726, 0x6413}, ++ {0, 0x375E, 0xE290}, ++ {0, 0x3760, 0x8F53}, ++ {0, 0x3762, 0xF936}, ++ {0, 0x3764, 0x4614}, ++ {0, 0x3766, 0x1B59}, ++ {0, 0x3784, 0x0404}, ++ {0, 0x3782, 0x0304}, ++ {0, 0x3210, 0x01B8}, ++ {0, 0x098E, 0xC913}, ++ {0, 0x0990, 0x000A}, ++ {0, 0x098E, 0x686B}, ++ {0, 0x0990, 0x05DC}, ++ {0, 0x098E, 0x686D}, ++ {0, 0x0990, 0x0BB8}, ++ {0, 0x098E, 0x6C6B}, ++ {0, 0x0990, 0x05DC}, ++ {0, 0x098E, 0x6C6D}, ++ {0, 0x0990, 0x0BB8}, ++ {0, 0x098E, 0x3439}, ++ {0, 0x0990, 0x05DC}, ++ {0, 0x098E, 0x343B}, ++ {0, 0x0990, 0x0BB8}, ++ {0, 0x098E, 0x4926}, ++ {0, 0x0990, 0x0001}, ++ {0, 0x098E, 0x4928}, ++ {0, 0x0990, 0x0002}, ++ {0, 0x098E, 0x492A}, ++ {0, 0x0990, 0x0656}, ++ {0, 0x098E, 0x4D26}, ++ {0, 0x0990, 0x0001}, ++ {0, 0x098E, 0x4D28}, ++ {0, 0x0990, 0x0002}, ++ {0, 0x098E, 0x4D2A}, ++ {0, 0x0990, 0x0656}, ++ {0, 0x33F4, 0x040B}, ++ {0, 0x098E, 0xC916}, ++ {0, 0x0990, 0x0014}, ++ {0, 0x098E, 0xC919}, ++ {0, 0x0990, 0x0028}, ++ {0, 0x098E, 0xC917}, ++ {0, 0x0990, 0x0004}, ++ {0, 0x098E, 0xC918}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xC91A}, ++ {0, 0x0990, 0x0001}, ++ {0, 0x098E, 0xC91B}, ++ {0, 0x0990, 0x0009}, ++ {0, 0x326C, 0x0C00}, ++ {0, 0x098E, 0x494B}, ++ {0, 0x0990, 0x0042}, ++ {0, 0x098E, 0x494D}, ++ {0, 0x0990, 0x012C}, ++ {0, 0x098E, 0xC91E}, ++ {0, 0x0990, 0x0012}, ++ {0, 0x098E, 0xC91F}, ++ {0, 0x0990, 0x000A}, ++ {0, 0x098E, 0xC920}, ++ {0, 0x0990, 0x0012}, ++ {0, 0x098E, 0xC921}, ++ {0, 0x0990, 0x000A}, ++ {0, 0x098E, 0xC922}, ++ {0, 0x0990, 0x0026}, ++ {0, 0x098E, 0xC923}, ++ {0, 0x0990, 0x001E}, ++ {0, 0x098E, 0xC924}, ++ {0, 0x0990, 0x0026}, ++ {0, 0x098E, 0xC925}, ++ {0, 0x0990, 0x0026}, ++ {0, 0x098E, 0xBC02}, ++ {0, 0x0990, 0x0003}, ++ {0, 0x098E, 0xBC05}, ++ {0, 0x0990, 0x000E}, ++ {0, 0x098E, 0xC950}, ++ {0, 0x0990, 0x0064}, ++ {0, 0x098E, 0xC94F}, ++ {0, 0x0990, 0x0038}, ++ {0, 0x098E, 0xC952}, ++ {0, 0x0990, 0x0064}, ++ {0, 0x098E, 0xC951}, ++ {0, 0x0990, 0x0051}, ++ {0, 0x098E, 0xC954}, ++ {0, 0x0990, 0x0010}, ++ {0, 0x098E, 0xC953}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xC956}, ++ {0, 0x0990, 0x0010}, ++ {0, 0x098E, 0xC955}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xC958}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xC957}, ++ {0, 0x0990, 0x0014}, ++ {0, 0x098E, 0xC95A}, ++ {0, 0x0990, 0x001D}, ++ {0, 0x098E, 0xC959}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xC95C}, ++ {0, 0x0990, 0x000C}, ++ {0, 0x098E, 0xC95B}, ++ {0, 0x0990, 0x0008}, ++ {0, 0x098E, 0xC95E}, ++ {0, 0x0990, 0x000C}, ++ {0, 0x098E, 0xC95D}, ++ {0, 0x0990, 0x0008}, ++ {0, 0x098E, 0xC95F}, ++ {0, 0x0990, 0x0064}, ++ {0, 0x098E, 0x48DC}, ++ {0, 0x0990, 0x004D}, ++ {0, 0x098E, 0x48DE}, ++ {0, 0x0990, 0x0096}, ++ {0, 0x098E, 0x48E0}, ++ {0, 0x0990, 0x001D}, ++ {0, 0x098E, 0x48E2}, ++ {0, 0x0990, 0x004D}, ++ {0, 0x098E, 0x48E4}, ++ {0, 0x0990, 0x0096}, ++ {0, 0x098E, 0x48E6}, ++ {0, 0x0990, 0x001D}, ++ {0, 0x098E, 0x48E8}, ++ {0, 0x0990, 0x004D}, ++ {0, 0x098E, 0x48EA}, ++ {0, 0x0990, 0x0096}, ++ {0, 0x098E, 0x48EC}, ++ {0, 0x0990, 0x001D}, ++ {0, 0x098E, 0xDC2A}, ++ {0, 0x0990, 0x000B}, ++ {0, 0x098E, 0xDC2B}, ++ {0, 0x0990, 0x0017}, ++ {0, 0x098E, 0xBC0B}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xBC0C}, ++ {0, 0x0990, 0x001B}, ++ {0, 0x098E, 0xBC0D}, ++ {0, 0x0990, 0x002A}, ++ {0, 0x098E, 0xBC0E}, ++ {0, 0x0990, 0x003E}, ++ {0, 0x098E, 0xBC0F}, ++ {0, 0x0990, 0x005A}, ++ {0, 0x098E, 0xBC10}, ++ {0, 0x0990, 0x0070}, ++ {0, 0x098E, 0xBC11}, ++ {0, 0x0990, 0x0081}, ++ {0, 0x098E, 0xBC12}, ++ {0, 0x0990, 0x0090}, ++ {0, 0x098E, 0xBC13}, ++ {0, 0x0990, 0x009E}, ++ {0, 0x098E, 0xBC14}, ++ {0, 0x0990, 0x00AB}, ++ {0, 0x098E, 0xBC15}, ++ {0, 0x0990, 0x00B6}, ++ {0, 0x098E, 0xBC16}, ++ {0, 0x0990, 0x00C1}, ++ {0, 0x098E, 0xBC17}, ++ {0, 0x0990, 0x00CB}, ++ {0, 0x098E, 0xBC18}, ++ {0, 0x0990, 0x00D5}, ++ {0, 0x098E, 0xBC19}, ++ {0, 0x0990, 0x00DE}, ++ {0, 0x098E, 0xBC1A}, ++ {0, 0x0990, 0x00E7}, ++ {0, 0x098E, 0xBC1B}, ++ {0, 0x0990, 0x00EF}, ++ {0, 0x098E, 0xBC1C}, ++ {0, 0x0990, 0x00F7}, ++ {0, 0x098E, 0xBC1D}, ++ {0, 0x0990, 0x00FF}, ++ {0, 0x098E, 0xBC1E}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xBC1F}, ++ {0, 0x0990, 0x001B}, ++ {0, 0x098E, 0xBC20}, ++ {0, 0x0990, 0x002A}, ++ {0, 0x098E, 0xBC21}, ++ {0, 0x0990, 0x003E}, ++ {0, 0x098E, 0xBC22}, ++ {0, 0x0990, 0x005A}, ++ {0, 0x098E, 0xBC23}, ++ {0, 0x0990, 0x0070}, ++ {0, 0x098E, 0xBC24}, ++ {0, 0x0990, 0x0081}, ++ {0, 0x098E, 0xBC25}, ++ {0, 0x0990, 0x0090}, ++ {0, 0x098E, 0xBC26}, ++ {0, 0x0990, 0x009E}, ++ {0, 0x098E, 0xBC27}, ++ {0, 0x0990, 0x00AB}, ++ {0, 0x098E, 0xBC28}, ++ {0, 0x0990, 0x00B6}, ++ {0, 0x098E, 0xBC29}, ++ {0, 0x0990, 0x00C1}, ++ {0, 0x098E, 0xBC2A}, ++ {0, 0x0990, 0x00CB}, ++ {0, 0x098E, 0xBC2B}, ++ {0, 0x0990, 0x00D5}, ++ {0, 0x098E, 0xBC2C}, ++ {0, 0x0990, 0x00DE}, ++ {0, 0x098E, 0xBC2D}, ++ {0, 0x0990, 0x00E7}, ++ {0, 0x098E, 0xBC2E}, ++ {0, 0x0990, 0x00EF}, ++ {0, 0x098E, 0xBC2F}, ++ {0, 0x0990, 0x00F7}, ++ {0, 0x098E, 0xBC30}, ++ {0, 0x0990, 0x00FF}, ++ {0, 0x098E, 0xBC31}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xBC32}, ++ {0, 0x0990, 0x000D}, ++ {0, 0x098E, 0xBC33}, ++ {0, 0x0990, 0x0019}, ++ {0, 0x098E, 0xBC34}, ++ {0, 0x0990, 0x0030}, ++ {0, 0x098E, 0xBC35}, ++ {0, 0x0990, 0x0056}, ++ {0, 0x098E, 0xBC36}, ++ {0, 0x0990, 0x0070}, ++ {0, 0x098E, 0xBC37}, ++ {0, 0x0990, 0x0081}, ++ {0, 0x098E, 0xBC38}, ++ {0, 0x0990, 0x0090}, ++ {0, 0x098E, 0xBC39}, ++ {0, 0x0990, 0x009E}, ++ {0, 0x098E, 0xBC3A}, ++ {0, 0x0990, 0x00AB}, ++ {0, 0x098E, 0xBC3B}, ++ {0, 0x0990, 0x00B6}, ++ {0, 0x098E, 0xBC3C}, ++ {0, 0x0990, 0x00C1}, ++ {0, 0x098E, 0xBC3D}, ++ {0, 0x0990, 0x00CB}, ++ {0, 0x098E, 0xBC3E}, ++ {0, 0x0990, 0x00D5}, ++ {0, 0x098E, 0xBC3F}, ++ {0, 0x0990, 0x00DE}, ++ {0, 0x098E, 0xBC40}, ++ {0, 0x0990, 0x00E7}, ++ {0, 0x098E, 0xBC41}, ++ {0, 0x0990, 0x00EF}, ++ {0, 0x098E, 0xBC42}, ++ {0, 0x0990, 0x00F7}, ++ {0, 0x098E, 0xBC43}, ++ {0, 0x0990, 0x00FF}, ++ {0, 0x098E, 0x6865}, ++ {0, 0x0990, 0x00E0}, ++ {0, 0x098E, 0x6867}, ++ {0, 0x0990, 0x00F4}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0xBC4A}, ++ {0, 0x0990, 0x007F}, ++ {0, 0x098E, 0xBC4B}, ++ {0, 0x0990, 0x007F}, ++ {0, 0x098E, 0xBC4C}, ++ {0, 0x0990, 0x007F}, ++ {0, 0x3542, 0x0010}, ++ {0, 0x3544, 0x0030}, ++ {0, 0x3546, 0x0040}, ++ {0, 0x3548, 0x0080}, ++ {0, 0x354A, 0x0100}, ++ {0, 0x354C, 0x0200}, ++ {0, 0x354E, 0x0300}, ++ {0, 0x3550, 0x0010}, ++ {0, 0x3552, 0x0030}, ++ {0, 0x3554, 0x0040}, ++ {0, 0x3556, 0x0080}, ++ {0, 0x3558, 0x012C}, ++ {0, 0x355A, 0x0320}, ++ {0, 0x355C, 0x03E8}, ++ {0, 0x3560, 0x0040}, ++ {0, 0x3562, 0x0020}, ++ {0, 0x3564, 0x0040}, ++ {0, 0x3566, 0x0010}, ++ {0, 0x3568, 0x0008}, ++ {0, 0x356A, 0x0004}, ++ {0, 0x356C, 0x0004}, ++ {0, 0x356E, 0x0004}, ++ {0, 0x098E, 0x3C4D}, ++ {0, 0x0990, 0x0DAC}, ++ {0, 0x098E, 0x3C4F}, ++ {0, 0x0990, 0x148A}, ++ {0, 0x098E, 0xC911}, ++ {0, 0x0990, 0x00C8}, ++ {0, 0x098E, 0xC8F4}, ++ {0, 0x0990, 0x0004}, ++ {0, 0x098E, 0xC8F5}, ++ {0, 0x0990, 0x0002}, ++ {0, 0x098E, 0x48F6}, ++ {0, 0x0990, 0x3B4D}, ++ {0, 0x098E, 0x48F8}, ++ {0, 0x0990, 0x6380}, ++ {0, 0x098E, 0x48FA}, ++ {0, 0x0990, 0x9B18}, ++ {0, 0x098E, 0x48FC}, ++ {0, 0x0990, 0x5D51}, ++ {0, 0x098E, 0x48FE}, ++ {0, 0x0990, 0xEDE8}, ++ {0, 0x098E, 0x4900}, ++ {0, 0x0990, 0xE515}, ++ {0, 0x098E, 0x4902}, ++ {0, 0x0990, 0xBFF4}, ++ {0, 0x098E, 0x4904}, ++ {0, 0x0990, 0x001E}, ++ {0, 0x098E, 0x4906}, ++ {0, 0x0990, 0x0026}, ++ {0, 0x098E, 0x4908}, ++ {0, 0x0990, 0x0033}, ++ {0, 0x098E, 0xE84A}, ++ {0, 0x0990, 0x0083}, ++ {0, 0x098E, 0xE84D}, ++ {0, 0x0990, 0x0083}, ++ {0, 0x098E, 0xE84C}, ++ {0, 0x0990, 0x0080}, ++ {0, 0x098E, 0xE84F}, ++ {0, 0x0990, 0x0080}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0x48B0}, ++ {0, 0x0990, 0x0180}, ++ {0, 0x098E, 0x48B2}, ++ {0, 0x0990, 0xFF7A}, ++ {0, 0x098E, 0x48B4}, ++ {0, 0x0990, 0x0018}, ++ {0, 0x098E, 0x48B6}, ++ {0, 0x0990, 0xFFCA}, ++ {0, 0x098E, 0x48B8}, ++ {0, 0x0990, 0x017C}, ++ {0, 0x098E, 0x48BA}, ++ {0, 0x0990, 0xFFCC}, ++ {0, 0x098E, 0x48BC}, ++ {0, 0x0990, 0x000C}, ++ {0, 0x098E, 0x48BE}, ++ {0, 0x0990, 0xFF1F}, ++ {0, 0x098E, 0x48C0}, ++ {0, 0x0990, 0x01E8}, ++ {0, 0x098E, 0x48C2}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0x48C4}, ++ {0, 0x0990, 0x0044}, ++ {0, 0x098E, 0x48C6}, ++ {0, 0x0990, 0x0079}, ++ {0, 0x098E, 0x48C8}, ++ {0, 0x0990, 0xFFAD}, ++ {0, 0x098E, 0x48CA}, ++ {0, 0x0990, 0xFFE2}, ++ {0, 0x098E, 0x48CC}, ++ {0, 0x0990, 0x0033}, ++ {0, 0x098E, 0x48CE}, ++ {0, 0x0990, 0x002A}, ++ {0, 0x098E, 0x48D0}, ++ {0, 0x0990, 0xFFAA}, ++ {0, 0x098E, 0x48D2}, ++ {0, 0x0990, 0x0017}, ++ {0, 0x098E, 0x48D4}, ++ {0, 0x0990, 0x004B}, ++ {0, 0x098E, 0x48D6}, ++ {0, 0x0990, 0xFFA5}, ++ {0, 0x098E, 0x48D8}, ++ {0, 0x0990, 0x0015}, ++ {0, 0x098E, 0x48DA}, ++ {0, 0x0990, 0xFFE2}, ++ {0, 0x35A2, 0x0014}, ++ {0, 0x098E, 0xC949}, ++ {0, 0x0990, 0x0024}, ++ {0, 0x35A4, 0x0596}, ++ {0, 0x098E, 0xC94A}, ++ {0, 0x0990, 0x0062}, ++ {0, 0x098E, 0xC948}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0xC914}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xC915}, ++ {0, 0x0990, 0x00FF}, ++ {0, 0x098E, 0xE86F}, ++ {0, 0x0990, 0x0060}, ++ {0, 0x098E, 0xE870}, ++ {0, 0x0990, 0x003C}, ++ {0, 0x098E, 0xEC6F}, ++ {0, 0x0990, 0x0060}, ++ {0, 0x098E, 0xEC70}, ++ {0, 0x0990, 0x003C}, ++ {0, 0x098E, 0xE883}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xEC83}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0xE885}, ++ {0, 0x0990, 0x001E}, ++ {0, 0x098E, 0xE886}, ++ {0, 0x0990, 0x00D8}, ++ {0, 0x098E, 0xEC85}, ++ {0, 0x0990, 0x001E}, ++ {0, 0x098E, 0xEC86}, ++ {0, 0x0990, 0x00D8}, ++ {0, 0x098E, 0xE884}, ++ {0, 0x0990, 0x005C}, ++ {0, 0x098E, 0xEC84}, ++ {0, 0x0990, 0x005C}, ++ {0, 0x098E, 0x490A}, ++ {0, 0x0990, 0x0666}, ++ {0, 0x098E, 0x490C}, ++ {0, 0x0990, 0x0140}, ++ {0, 0x098E, 0x6857}, ++ {0, 0x0990, 0x0014}, ++ {0, 0x098E, 0x685C}, ++ {0, 0x0990, 0x0005}, ++ {0, 0x098E, 0x490E}, ++ {0, 0x0990, 0x00A4}, ++ {0, 0x098E, 0xB43D}, ++ {0, 0x0990, 0x0031}, ++ {0, 0x098E, 0xB43E}, ++ {0, 0x0990, 0x001B}, ++ {0, 0x098E, 0xB43F}, ++ {0, 0x0990, 0x0028}, ++ {0, 0x098E, 0xB440}, ++ {0, 0x0990, 0x0003}, ++ {0, 0x098E, 0xB441}, ++ {0, 0x0990, 0x00CD}, ++ {0, 0x098E, 0xB442}, ++ {0, 0x0990, 0x0064}, ++ {0, 0x098E, 0xB443}, ++ {0, 0x0990, 0x000F}, ++ {0, 0x098E, 0xB444}, ++ {0, 0x0990, 0x0007}, ++ {0, 0x098E, 0x300D}, ++ {0, 0x0990, 0x000F}, ++ {0, 0x098E, 0x3017}, ++ {0, 0x0990, 0x0F0F}, ++ {0, 0x098E, 0x8400}, ++ {0, 0x0990, 0x0006}, ++ {0, 0x098E, 0xE81F}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0x68A0}, ++ {0, 0x0990, 0x082E}, ++ {0, 0x098E, 0x6CA0}, ++ {0, 0x0990, 0x082E}, ++ {0, 0x098E, 0x70A0}, ++ {0, 0x0990, 0x082E}, ++ {0, 0x098E, 0x74A0}, ++ {0, 0x0990, 0x082E}, ++ {0, 0x3C52, 0x082E}, ++ {0, 0x098E, 0x488E}, ++ {0, 0x0990, 0x0020}, ++ {0, 0x098E, 0xECAC}, ++ {0, 0x0990, 0x0000} ++}; ++ ++mt9t111_regs def_regs2[] = { ++ {100, 0x0018, 0x0028}, ++ {0, 0x316C, 0x350F}, ++ {0, 0x098E, 0x6817}, ++ {0, 0x0990, 0x000C}, ++ {0, 0x0034, 0x0000} ++}; ++ ++mt9t111_regs pll_regs1[] = { ++ {0, 0x0014, 0x2425}, ++ {0, 0x0014, 0x2425}, ++ {0, 0x0014, 0x2145}, ++ {0, 0x0010, 0x0219}, ++ {0, 0x0012, 0x0090}, ++ {0, 0x002A, 0x79DD}, ++ {0, 0x0014, 0x2545}, ++ {0, 0x0014, 0x2547}, ++ {0, 0x0014, 0x3447}, ++ {0, 0x0014, 0x3047} ++}; ++ ++mt9t111_regs pll_regs2[] = { ++ {0, 0x0014, 0x3046}, ++ {0, 0x0022, 0x01E0}, ++ {0, 0x001E, 0x0707}, ++ {0, 0x3B84, 0x011D} ++}; ++ ++mt9t111_regs bayer_pattern_regs[] = { ++ {0, 0x098E, 0x6807}, ++ {0, 0x0990, 0x0100}, ++ {0, 0x098E, 0x6809}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xE88E}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0x6C07}, ++ {0, 0x0990, 0x0100}, ++ {0, 0x098E, 0x6C09}, ++ {0, 0x0990, 0x0000}, ++ {0, 0x098E, 0xEC8E}, ++ {0, 0x0990, 0x0000} ++}; ++ ++#endif +diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h +new file mode 100644 +index 0000000..7acbeed +--- /dev/null ++++ b/include/media/mt9t111.h +@@ -0,0 +1,79 @@ ++/* ++ * include/media/mt9t111.h ++ * ++ * mt9t111 sensor driver ++ * ++ * Copyright (C) 2009 Leopard Imaging ++ * ++ * This file is licensed under the terms of the GNU General Public License ++ * version 2. This program is licensed "as is" without any warranty of any ++ * kind, whether express or implied. ++ */ ++ ++#ifndef MT9T111_H ++#define MT9T111_H ++ ++/********************************* ++ * Defines and Macros and globals ++ ********************************/ ++ ++#ifdef TRUE ++#undef TRUE ++#endif ++ ++#ifdef FALSE ++#undef FALSE ++#endif ++ ++#define TRUE 1 ++#define FALSE 0 ++ ++#ifdef DEBUG ++#undef DEBUG ++#endif ++ ++#ifndef TYPES ++#define TYPES ++#endif ++ ++#define MT9T111_I2C_REGISTERED (1) ++#define MT9T111_I2C_UNREGISTERED (0) ++ ++/*i2c adress for MT9T111*/ ++#define MT9T111_I2C_ADDR (0x78 >>1) ++ ++#define MT9T111_CLK_MAX (75000000) /* 75MHz */ ++#define MT9T111_CLK_MIN (6000000) /* 6Mhz */ ++ ++#define MT9T111_I2C_CONFIG (1) ++#define I2C_ONE_BYTE_TRANSFER (1) ++#define I2C_TWO_BYTE_TRANSFER (2) ++#define I2C_THREE_BYTE_TRANSFER (3) ++#define I2C_FOUR_BYTE_TRANSFER (4) ++#define I2C_TXRX_DATA_MASK (0x00FF) ++#define I2C_TXRX_DATA_MASK_UPPER (0xFF00) ++#define I2C_TXRX_DATA_SHIFT (8) ++ ++struct mt9t111_platform_data { ++ char *master; ++ int (*power_set) (enum v4l2_power on); ++ int (*ifparm) (struct v4l2_ifparm *p); ++ int (*priv_data_set) (void *); ++ /* Interface control params */ ++ bool clk_polarity; ++ bool hs_polarity; ++ bool vs_polarity; ++}; ++ ++/** ++ * struct capture_size - image capture size information ++ * @width: image width in pixels ++ * @height: image height in pixels ++ */ ++struct capture_size { ++ unsigned long width; ++ unsigned long height; ++}; ++ ++#endif /*for ifndef MT9T111 */ ++ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0002-mt9t111-Fix-all-checkpatch-errors.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0002-mt9t111-Fix-all-checkpatch-errors.patch new file mode 100644 index 0000000..a44bd48 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0002-mt9t111-Fix-all-checkpatch-errors.patch @@ -0,0 +1,398 @@ +From 29157ffef7f3813c1ec23f9d11eb485242d53454 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 13:51:49 -0500 +Subject: [PATCH 02/75] mt9t111: Fix all checkpatch errors + +The code was plagued with checkpatch errors. Fix them! + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t111.c | 153 ++++++++++++++++++++----------------- + drivers/media/video/mt9t111_reg.h | 6 +- + include/media/mt9t111.h | 2 +- + 3 files changed, 87 insertions(+), 74 deletions(-) + +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +index ecc5115..95e1508 100644 +--- a/drivers/media/video/mt9t111.c ++++ b/drivers/media/video/mt9t111.c +@@ -17,20 +17,21 @@ + #include + #include "mt9t111_reg.h" + +-#define USE_RAW // YCbCr mode does not work yet +-//#define COLOR_BAR // Create a Color bar test pattern, Blue, Green, Red, Grey ++/* YCbCr mode does not work yet */ ++#define USE_RAW ++/* Create a Color bar test pattern, Blue, Green, Red, Grey */ ++/* #define COLOR_BAR */ + + #define SENSOR_DETECTED 1 + #define SENSOR_NOT_DETECTED 0 + + static void mt9t111_loaddefault(struct i2c_client *client); + +-/* +-* as a place holder for further development +-*/ ++/* ++ * as a place holder for further development ++ */ + static void debug_dummy(char *in_msg) + { +- + } + + /* list of image formats supported by mt9t111 sensor */ +@@ -55,8 +56,8 @@ const static struct v4l2_fmtdesc mt9t111_formats[] = { + * smallest image size to largest. + */ + const static struct capture_size mt9t111_sizes[] = { +- { 640, 480 }, +-// { 2048, 1536} ++ { 640, 480 }, ++ /* { 2048, 1536} */ + }; + + #define NUM_CAPTURE_SIZE ARRAY_SIZE(mt9t111_sizes) +@@ -120,17 +121,17 @@ mt9t111_read_reg(struct i2c_client *client, u16 reg, u16 *val) + msg->addr = client->addr; + msg->flags = 0; + msg->len = 2; +- msg->buf = data; ++ msg->buf = data; + data[0] = (reg & 0xff00) >> 8; + data[1] = (reg & 0x00ff); + err = i2c_transfer(client->adapter, msg, 1); +- if (err >= 0) { +- msg->flags = I2C_M_RD; +- msg->len = 2; /* 2 byte read */ +- err = i2c_transfer(client->adapter, msg, 1); +- if (err >= 0) { +- *val = ((data[0] & 0x00ff) << 8) +- | (data[1] & 0x00ff); ++ if (err >= 0) { ++ msg->flags = I2C_M_RD; ++ msg->len = 2; /* 2 byte read */ ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err >= 0) { ++ *val = ((data[0] & 0x00ff) << 8) ++ | (data[1] & 0x00ff); + return 0; + } + } +@@ -159,7 +160,7 @@ mt9t111_write_reg(struct i2c_client *client, u16 reg, u16 val) + msg->len = 4; + msg->buf = data; + data[0] = (u8)((reg & 0xff00) >> 8); +- data[1] = (u8)(reg & 0x00ff); ++ data[1] = (u8)(reg & 0x00ff); + data[2] = (u8)((val & 0xff00) >> 8); + data[3] = (u8)(val & 0x00ff); + err = i2c_transfer(client->adapter, msg, 1); +@@ -171,7 +172,7 @@ mt9t111_write_reg(struct i2c_client *client, u16 reg, u16 val) + * mt9t111_write_regs - Write registers to an mt9t111 sensor device + * @client: i2c driver client structure + * @reg_in: pointer to registers to write +- * @cnt: the number of registers ++ * @cnt: the number of registers + * + * Write registers . + * Returns zero if successful, or non-zero otherwise. +@@ -182,19 +183,21 @@ mt9t111_write_regs(struct i2c_client *client, mt9t111_regs *reg_in, int cnt) + int err = 0; + int i; + mt9t111_regs *reg = reg_in; +- +- for (i=0;idelay_time == 0) { + err |= mt9t111_write_reg(client, reg->addr, reg->data); + } else if (reg->addr != 0 || reg->data != 0) { + err |= mt9t111_write_reg(client, reg->addr, reg->data); + mdelay(reg->delay_time); +- } else ++ } else { + mdelay(reg->delay_time); +- ++ } ++ + if (err < 0) { +- dev_warn(&client->dev, "write reg error, addr = 0x%x, data = 0x%x \n", \ +- reg->addr, reg->data); ++ dev_warn(&client->dev, "write reg error, addr = 0x%x," ++ " data = 0x%x \n", ++ reg->addr, reg->data); + return err; + } + reg++; +@@ -219,10 +222,11 @@ mt9t111_detect(struct i2c_client *client) + if (mt9t111_read_reg(client, MT9T111_CHIP_ID, &val) < 0) + return -ENODEV; + dev_info(&client->dev, "model id detected 0x%x\n", val); +- ++ + if (val != MT9T111_CHIP_ID_VALUE) { +- dev_warn(&client->dev, "model id mismatch received 0x%x expecting 0x%x\n", +- val, MT9T111_CHIP_ID_VALUE); ++ dev_warn(&client->dev, "model id mismatch received 0x%x" ++ " expecting 0x%x\n", ++ val, MT9T111_CHIP_ID_VALUE); + + return -ENODEV; + } +@@ -285,14 +289,17 @@ static int ioctl_enum_frameintervals(struct v4l2_int_device *s, + { + int ifmt; + +-printk(KERN_INFO "entering ioctl_enum_frameintervals\n"); +-printk(KERN_INFO "index = %d, pixel_format = 0x%x, width = %d, height = %d\n", +- frmi->index, frmi->pixel_format, frmi->width, frmi->height); +-printk(KERN_INFO "mt9t111 format = 0x%x\n", mt9t111_formats[0].pixelformat); ++ printk(KERN_INFO "entering ioctl_enum_frameintervals\n"); ++ printk(KERN_INFO "index = %d, pixel_format = 0x%x," ++ " width = %d, height = %d\n", ++ frmi->index, frmi->pixel_format, ++ frmi->width, frmi->height); ++ printk(KERN_INFO "mt9t111 format = 0x%x\n", ++ mt9t111_formats[0].pixelformat); + + if (frmi->index >= NUM_CAPTURE_FRAMEINTERVALS) + return -EINVAL; +- ++ + for (ifmt = 0; ifmt < NUM_CAPTURE_FORMATS; ifmt++) { + if (frmi->pixel_format == mt9t111_formats[ifmt].pixelformat) + break; +@@ -368,7 +375,7 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + if (rval < 0) { + dev_err(&c->dev, "Unable to set the power state: " "mt9t111" + " sensor\n"); +- //sensor->pdata->set_xclk(0); ++ /* sensor->pdata->set_xclk(0); */ + return rval; + } + +@@ -418,7 +425,7 @@ static int ioctl_g_priv(struct v4l2_int_device *s, void *p) + static int ioctl_s_parm(struct v4l2_int_device *s, + struct v4l2_streamparm *a) + { +- //TODO: set paramters ++ /* TODO: set paramters */ + debug_dummy("debug_dummy -- VIDIOC_S_PARM "); + return 0; + } +@@ -483,13 +490,13 @@ static int ioctl_try_fmt_cap(struct v4l2_int_device *s, + + pix->width = 640; + pix->height = 480; +-#ifdef USE_RAW ++#ifdef USE_RAW + pix->pixelformat = V4L2_PIX_FMT_SGRBG10; +- pix->bytesperline = pix->width; ++ pix->bytesperline = pix->width; + pix->colorspace = V4L2_COLORSPACE_SRGB; + #else + pix->pixelformat = V4L2_PIX_FMT_YUYV; +- pix->bytesperline = pix->width * 2; ++ pix->bytesperline = pix->width * 2; + pix->colorspace = V4L2_COLORSPACE_JPEG; + #endif + pix->field = V4L2_FIELD_NONE; +@@ -585,7 +592,7 @@ static int ioctl_s_ctrl(struct v4l2_int_device *s, + static int ioctl_g_ctrl(struct v4l2_int_device *s, + struct v4l2_control *vc) + { +- debug_dummy("debug_dummy -- g ctrl\n"); ++ debug_dummy("debug_dummy -- g ctrl\n"); + return 0; + } + +@@ -601,8 +608,8 @@ static int ioctl_g_ctrl(struct v4l2_int_device *s, + static int ioctl_queryctrl(struct v4l2_int_device *s, + struct v4l2_queryctrl *qc) + { +- debug_dummy("debug_dummy -- query ctrl\n"); +- return-EINVAL; ++ debug_dummy("debug_dummy -- query ctrl\n"); ++ return -EINVAL; + } + + /** +@@ -647,12 +654,11 @@ static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) + return rval; + } + +- p->u.ycbcr.clock_curr = 40*1000000; // temporal value ++ p->u.ycbcr.clock_curr = 40 * 1000000; /* temporal value */ + + return 0; + } + +- + static struct v4l2_int_ioctl_desc mt9t111_ioctl_desc[] = { + { .num = vidioc_int_enum_framesizes_num, + .func = (v4l2_int_ioctl_func *)ioctl_enum_framesizes }, +@@ -666,8 +672,8 @@ static struct v4l2_int_ioctl_desc mt9t111_ioctl_desc[] = { + .func = (v4l2_int_ioctl_func *)ioctl_s_power }, + { .num = vidioc_int_g_priv_num, + .func = (v4l2_int_ioctl_func *)ioctl_g_priv }, +- {vidioc_int_g_ifparm_num, +- .func = (v4l2_int_ioctl_func*) ioctl_g_ifparm}, ++ { .num = vidioc_int_g_ifparm_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_g_ifparm }, + { .num = vidioc_int_init_num, + .func = (v4l2_int_ioctl_func *)ioctl_init }, + { .num = vidioc_int_enum_fmt_cap_num, +@@ -688,29 +694,30 @@ static struct v4l2_int_ioctl_desc mt9t111_ioctl_desc[] = { + .func = (v4l2_int_ioctl_func *)ioctl_g_ctrl }, + { .num = vidioc_int_s_ctrl_num, + .func = (v4l2_int_ioctl_func *)ioctl_s_ctrl }, +- {.num = vidioc_int_s_video_routing_num, +- .func = (v4l2_int_ioctl_func *) ioctl_s_routing}, ++ { .num = vidioc_int_s_video_routing_num, ++ .func = (v4l2_int_ioctl_func *)ioctl_s_routing }, + }; + +-static void mt9t111_refresh(struct i2c_client *client){ +- int i; +- unsigned short value; +- // MCU_ADDRESS [SEQ_CMD] -- refresh +- mt9t111_write_reg(client, 0x098E, 0x8400); +- mt9t111_write_reg(client, 0x0990, 0x0006); +- for (i=0;i<100;i++){ +- mt9t111_write_reg(client, 0x098E, 0x8400); +- mt9t111_read_reg(client,0x0990,&value); +- if ( value == 0) +- break; +- mdelay(5); ++static void mt9t111_refresh(struct i2c_client *client) ++{ ++ int i; ++ unsigned short value; ++ /* MCU_ADDRESS [SEQ_CMD] -- refresh */ ++ mt9t111_write_reg(client, 0x098E, 0x8400); ++ mt9t111_write_reg(client, 0x0990, 0x0006); ++ for (i = 0; i < 100; i++) { ++ mt9t111_write_reg(client, 0x098E, 0x8400); ++ mt9t111_read_reg(client, 0x0990, &value); ++ if (value == 0) ++ break; ++ mdelay(5); + } + } + + #ifdef COLOR_BAR + static void mt9t111_color_bar(struct i2c_client *client) + { +- mt9t111_write_reg(client, 0x3210, 0x01B0); // disable lens correction ++ mt9t111_write_reg(client, 0x3210, 0x01B0); /* disable lens correction */ + + mt9t111_write_reg(client, 0x098E, 0x6003); + mt9t111_write_reg(client, 0x0990, 0x0100); +@@ -721,22 +728,25 @@ static void mt9t111_color_bar(struct i2c_client *client) + + static void mt9t111_bayer_format(struct i2c_client *client) + { +- mt9t111_write_regs(client, bayer_pattern_regs, sizeof(bayer_pattern_regs)/sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, bayer_pattern_regs, ++ sizeof(bayer_pattern_regs) / sizeof(mt9t111_regs)); + } + + static void mt9t111_enable_pll(struct i2c_client *client) + { + int i; +- unsigned short value; ++ unsigned short value; + +- mt9t111_write_regs(client, pll_regs1, sizeof(pll_regs1)/sizeof(mt9t111_regs)); +- for (i=0;i<100;i++){ +- mt9t111_read_reg(client,0x0014,&value); +- if (( value & 0x8000) != 0) ++ mt9t111_write_regs(client, pll_regs1, ++ sizeof(pll_regs1) / sizeof(mt9t111_regs)); ++ for (i = 0; i < 100; i++) { ++ mt9t111_read_reg(client, 0x0014, &value); ++ if ((value & 0x8000) != 0) + break; + mdelay(2); + } +- mt9t111_write_regs(client, pll_regs2, sizeof(pll_regs2)/sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, pll_regs2, ++ sizeof(pll_regs2) / sizeof(mt9t111_regs)); + } + + +@@ -746,9 +756,12 @@ static void mt9t111_loaddefault(struct i2c_client *client) + mt9t111_write_reg(client, 0x001A, 0x0218); + + mt9t111_enable_pll(client); +- mt9t111_write_regs(client, def_regs1, sizeof(def_regs1)/sizeof(mt9t111_regs)); +- mt9t111_write_regs(client, patch_rev6, sizeof(patch_rev6)/sizeof(mt9t111_regs)); +- mt9t111_write_regs(client, def_regs2, sizeof(def_regs2)/sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, def_regs1, ++ sizeof(def_regs1) / sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, patch_rev6, ++ sizeof(patch_rev6) / sizeof(mt9t111_regs)); ++ mt9t111_write_regs(client, def_regs2, ++ sizeof(def_regs2) / sizeof(mt9t111_regs)); + + #ifdef USE_RAW + mt9t111_bayer_format(client); +@@ -806,7 +819,7 @@ mt9t111_probe(struct i2c_client *client, const struct i2c_device_id *id) + + sensor->pix.width = 640; + sensor->pix.height = 480; +-#ifdef USE_RAW ++#ifdef USE_RAW + sensor->pix.pixelformat = V4L2_PIX_FMT_SGRBG10; + #else + sensor->pix.pixelformat = V4L2_PIX_FMT_YUYV; +diff --git a/drivers/media/video/mt9t111_reg.h b/drivers/media/video/mt9t111_reg.h +index e012eeb..e226c37 100644 +--- a/drivers/media/video/mt9t111_reg.h ++++ b/drivers/media/video/mt9t111_reg.h +@@ -25,7 +25,7 @@ typedef struct { + u16 data; + } mt9t111_regs; + +-mt9t111_regs patch_rev6[] ={ ++mt9t111_regs patch_rev6[] = { + {0, 0x0982, 0x0}, + {0, 0x098A, 0xCE7}, + {0, 0x0990, 0x3C3C}, +@@ -658,7 +658,7 @@ mt9t111_regs patch_rev6[] ={ + {100, 0x0990, 0x0004} + }; + +-mt9t111_regs def_regs1[] ={ ++mt9t111_regs def_regs1[] = { + {0, 0x001A, 0x0218}, + {0, 0x001E, 0x0777}, + {0, 0x3084, 0x2409}, +@@ -1343,7 +1343,7 @@ mt9t111_regs pll_regs2[] = { + {0, 0x0014, 0x3046}, + {0, 0x0022, 0x01E0}, + {0, 0x001E, 0x0707}, +- {0, 0x3B84, 0x011D} ++ {0, 0x3B84, 0x011D} + }; + + mt9t111_regs bayer_pattern_regs[] = { +diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h +index 7acbeed..0a5161a 100644 +--- a/include/media/mt9t111.h ++++ b/include/media/mt9t111.h +@@ -40,7 +40,7 @@ + #define MT9T111_I2C_UNREGISTERED (0) + + /*i2c adress for MT9T111*/ +-#define MT9T111_I2C_ADDR (0x78 >>1) ++#define MT9T111_I2C_ADDR (0x78 >> 1) + + #define MT9T111_CLK_MAX (75000000) /* 75MHz */ + #define MT9T111_CLK_MIN (6000000) /* 6Mhz */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0003-mt9t111-Pass-v4l2_int_device-data.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0003-mt9t111-Pass-v4l2_int_device-data.patch new file mode 100644 index 0000000..a54aeb7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0003-mt9t111-Pass-v4l2_int_device-data.patch @@ -0,0 +1,40 @@ +From e6af1e25ce53f1011fe6a1920cc9877ae51d2e95 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 16:17:56 -0500 +Subject: [PATCH 03/75] mt9t111: Pass v4l2_int_device data + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t111.c | 2 +- + include/media/mt9t111.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +index 95e1508..6a7b2c0 100644 +--- a/drivers/media/video/mt9t111.c ++++ b/drivers/media/video/mt9t111.c +@@ -371,7 +371,7 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + else + debug_dummy("debug_dummy -- enable clock\n");; + +- rval = sensor->pdata->power_set(on); ++ rval = sensor->pdata->power_set(s, on); + if (rval < 0) { + dev_err(&c->dev, "Unable to set the power state: " "mt9t111" + " sensor\n"); +diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h +index 0a5161a..aae3f99 100644 +--- a/include/media/mt9t111.h ++++ b/include/media/mt9t111.h +@@ -56,7 +56,7 @@ + + struct mt9t111_platform_data { + char *master; +- int (*power_set) (enum v4l2_power on); ++ int (*power_set) (struct v4l2_int_device *s, enum v4l2_power on); + int (*ifparm) (struct v4l2_ifparm *p); + int (*priv_data_set) (void *); + /* Interface control params */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0004-omap3beagle-Add-camera-support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0004-omap3beagle-Add-camera-support.patch new file mode 100644 index 0000000..1f28b22 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0004-omap3beagle-Add-camera-support.patch @@ -0,0 +1,352 @@ +From e91589e4c2736495be6f1252599d5115b33ac8c8 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 16:15:58 -0500 +Subject: [PATCH 04/75] omap3beagle: Add camera support + +This is tested with the xM + Leopard imaging module camera, which +has a MT9T111. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/Makefile | 3 +- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 228 ++++++++++++++++++++++++ + arch/arm/mach-omap2/board-omap3beagle-camera.h | 41 +++++ + arch/arm/mach-omap2/board-omap3beagle.c | 25 +++ + 4 files changed, 296 insertions(+), 1 deletions(-) + create mode 100644 arch/arm/mach-omap2/board-omap3beagle-camera.c + create mode 100644 arch/arm/mach-omap2/board-omap3beagle-camera.h + +diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile +index fa01859..4d9dcdd 100644 +--- a/arch/arm/mach-omap2/Makefile ++++ b/arch/arm/mach-omap2/Makefile +@@ -87,7 +87,8 @@ obj-$(CONFIG_MACH_OMAP_2430SDP) += board-2430sdp.o \ + mmc-twl4030.o + obj-$(CONFIG_MACH_OMAP_APOLLON) += board-apollon.o + obj-$(CONFIG_MACH_OMAP3_BEAGLE) += board-omap3beagle.o \ +- mmc-twl4030.o ++ mmc-twl4030.o \ ++ board-omap3beagle-camera.o + obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o \ + mmc-twl4030.o \ + board-ldp-camera.o +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +new file mode 100644 +index 0000000..e93437f +--- /dev/null ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -0,0 +1,228 @@ ++/* ++ * Driver for Leopard Module Board used in Beagleboard (xM) ++ * ++ * Copyright (C) 2010 Texas Instruments Inc ++ * Author: Sergio Aguirre ++ * ++ * Based on work done by: ++ * Vaibhav Hiremath ++ * Anuj Aggarwal ++ * Sivaraj R ++ * ++ * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include ++ ++/* Include V4L2 ISP-Camera driver related header file */ ++#include <../drivers/media/video/omap34xxcam.h> ++#include <../drivers/media/video/isp/ispreg.h> ++ ++#include "mux.h" ++#include "board-omap3beagle-camera.h" ++ ++#define MODULE_NAME "omap3beaglelmb" ++ ++#define MT9T111_I2C_BUSNUM (2) ++ ++#define CAM_USE_XCLKA 1 ++ ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++static struct isp_interface_config mt9t111_if_config = { ++ .ccdc_par_ser = ISP_PARLL, ++ .dataline_shift = 0x0, ++ .hsvs_syncdetect = ISPCTRL_SYNC_DETECT_VSRISE, ++ .strobe = 0x0, ++ .prestrobe = 0x0, ++ .shutter = 0x0, ++ .u.par.par_bridge = 0x1, ++ .u.par.par_clk_pol = 0x0, ++}; ++ ++static struct v4l2_ifparm mt9t111_ifparm_s = { ++#if 1 ++ .if_type = V4L2_IF_TYPE_RAW, ++ .u = { ++ .raw = { ++ .frame_start_on_rising_vs = 1, ++ .bt_sync_correct = 0, ++ .swap = 0, ++ .latch_clk_inv = 0, ++ .nobt_hs_inv = 0, /* active high */ ++ .nobt_vs_inv = 0, /* active high */ ++ .clock_min = MT9T111_CLK_MIN, ++ .clock_max = MT9T111_CLK_MAX, ++ }, ++ }, ++#else ++ .if_type = V4L2_IF_TYPE_YCbCr, ++ .u = { ++ .ycbcr = { ++ .frame_start_on_rising_vs = 1, ++ .bt_sync_correct = 0, ++ .swap = 0, ++ .latch_clk_inv = 0, ++ .nobt_hs_inv = 0, /* active high */ ++ .nobt_vs_inv = 0, /* active high */ ++ .clock_min = MT9T111_CLK_MIN, ++ .clock_max = MT9T111_CLK_MAX, ++ }, ++ }, ++#endif ++}; ++ ++/** ++ * @brief mt9t111_ifparm - Returns the mt9t111 interface parameters ++ * ++ * @param p - pointer to v4l2_ifparm structure ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_ifparm(struct v4l2_ifparm *p) ++{ ++ if (p == NULL) ++ return -EINVAL; ++ ++ *p = mt9t111_ifparm_s; ++ return 0; ++} ++ ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++static struct omap34xxcam_hw_config mt9t111_hwc = { ++ .dev_index = 0, ++ .dev_minor = 0, ++ .dev_type = OMAP34XXCAM_SLAVE_SENSOR, ++ .u.sensor.sensor_isp = 1, ++}; ++#endif ++ ++/** ++ * @brief mt9t111_set_prv_data - Returns mt9t111 omap34xx driver private data ++ * ++ * @param priv - pointer to omap34xxcam_hw_config structure ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_set_prv_data(void *priv) ++{ ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++ struct omap34xxcam_hw_config *hwc = priv; ++ ++ if (priv == NULL) ++ return -EINVAL; ++ ++ hwc->u.sensor = mt9t111_hwc.u.sensor; ++ hwc->dev_index = mt9t111_hwc.dev_index; ++ hwc->dev_minor = mt9t111_hwc.dev_minor; ++ hwc->dev_type = mt9t111_hwc.dev_type; ++ return 0; ++#else ++ return -EINVAL; ++#endif ++} ++ ++/** ++ * @brief mt9t111_power_set - Power-on or power-off TVP5146 device ++ * ++ * @param power - enum, Power on/off, resume/standby ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) ++{ ++ struct omap34xxcam_videodev *vdev = s->u.slave->master->priv; ++ ++ switch (power) { ++ case V4L2_POWER_OFF: ++ isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); ++ break; ++ ++ case V4L2_POWER_STANDBY: ++ break; ++ ++ case V4L2_POWER_ON: ++ isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); ++ ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++ isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); ++#endif ++ break; ++ ++ default: ++ return -ENODEV; ++ break; ++ } ++ return 0; ++} ++ ++static struct mt9t111_platform_data mt9t111_pdata = { ++ .master = "omap34xxcam", ++ .power_set = mt9t111_power_set, ++ .priv_data_set = mt9t111_set_prv_data, ++ .ifparm = mt9t111_ifparm, ++ /* Some interface dependent params */ ++ .clk_polarity = 0, /* data clocked out on falling edge */ ++ .hs_polarity = 1, /* 0 - Active low, 1- Active high */ ++ .vs_polarity = 1, /* 0 - Active low, 1- Active high */ ++}; ++ ++static struct i2c_board_info __initdata mt9t111_i2c_board_info = { ++ I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), ++ .platform_data = &mt9t111_pdata, ++}; ++ ++#endif /* #ifdef CONFIG_VIDEO_MT9T111 */ ++ ++/** ++ * @brief omap3beaglelmb_init - module init function. Should be called before any ++ * client driver init call ++ * ++ * @return result of operation - 0 is success ++ */ ++int __init omap3beaglelmb_init(void) ++{ ++ int err; ++ ++ /* ++ * Register the I2C devices present in the board to the I2C ++ * framework. ++ * If more I2C devices are added, then each device information should ++ * be registered with I2C using i2c_register_board_info(). ++ */ ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++ err = i2c_register_board_info(MT9T111_I2C_BUSNUM, ++ &mt9t111_i2c_board_info, 1); ++ if (err) { ++ printk(KERN_ERR MODULE_NAME \ ++ ": MT9T111 I2C Board Registration failed \n"); ++ return err; ++ } ++#endif ++ printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); ++ ++ return 0; ++} ++arch_initcall(omap3beaglelmb_init); +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.h b/arch/arm/mach-omap2/board-omap3beagle-camera.h +new file mode 100644 +index 0000000..1026aeb +--- /dev/null ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.h +@@ -0,0 +1,41 @@ ++/* ++ * Copyright (C) 2010 Texas Instruments Inc ++ * Author: Sergio Aguirre ++ * ++ * Based on work done by: ++ * Vaibhav Hiremath ++ * Anuj Aggarwal ++ * Sivaraj R ++ * ++ * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef __BOARD_OMAP3BEAGLE_LMB_H_ ++#define __BOARD_OMAP3BEAGLE_LMB_H_ ++ ++/* mux id to enable/disable signal routing to different peripherals */ ++enum omap3beaglelmb_mux { ++ MUX_TVP5146 = 0, ++ MUX_CAMERA_SENSOR, ++ MUX_EXP_CAMERA_SENSOR, ++ NUM_MUX ++}; ++ ++/* enum to enable or disable mux */ ++enum config_mux { ++ DISABLE_MUX, ++ ENABLE_MUX ++}; ++ ++#endif /* __BOARD_OMAP3BEAGLE_LMB_H_ */ +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 93b9e5f..31de2f9 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -712,6 +712,31 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { + + #ifdef CONFIG_OMAP_MUX + static struct omap_board_mux board_mux[] __initdata = { ++ /* Camera - Parallel Data */ ++ OMAP3_MUX(CAM_D0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D8, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D9, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D10, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_D11, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ ++ /* Camera - HS/VS signals */ ++ OMAP3_MUX(CAM_HS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ OMAP3_MUX(CAM_VS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), ++ ++ /* Camera - Reset GPIO 98 */ ++ OMAP3_MUX(CAM_FLD, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), ++ ++ /* Camera - XCLK */ ++ OMAP3_MUX(CAM_XCLKA, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), ++ + { .reg_offset = OMAP_MUX_TERMINATOR }, + }; + #else +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0005-TEMP-omap3beagle-camera-Add-defconfig.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0005-TEMP-omap3beagle-camera-Add-defconfig.patch new file mode 100644 index 0000000..17f8f58 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0005-TEMP-omap3beagle-camera-Add-defconfig.patch @@ -0,0 +1,3070 @@ +From 1f6871f7ea78c182ebc1ac4b743485b1d48f2882 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 16:18:30 -0500 +Subject: [PATCH 05/75] TEMP: omap3beagle: camera: Add defconfig + +Signed-off-by: Sergio Aguirre +--- + arch/arm/configs/omap3_beagle_cam_defconfig | 3050 +++++++++++++++++++++++++++ + 1 files changed, 3050 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/configs/omap3_beagle_cam_defconfig + +diff --git a/arch/arm/configs/omap3_beagle_cam_defconfig b/arch/arm/configs/omap3_beagle_cam_defconfig +new file mode 100644 +index 0000000..0ea8300 +--- /dev/null ++++ b/arch/arm/configs/omap3_beagle_cam_defconfig +@@ -0,0 +1,3050 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.32 ++# Fri Jun 11 14:25:23 2010 ++# ++CONFIG_ARM=y ++CONFIG_SYS_SUPPORTS_APM_EMULATION=y ++CONFIG_GENERIC_GPIO=y ++CONFIG_GENERIC_TIME=y ++CONFIG_GENERIC_CLOCKEVENTS=y ++CONFIG_GENERIC_HARDIRQS=y ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_HAVE_LATENCYTOP_SUPPORT=y ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++CONFIG_ARCH_HAS_CPUFREQ=y ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++# CONFIG_AUDIT 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_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 is not set ++CONFIG_HOTPLUG=y ++CONFIG_PRINTK=y ++CONFIG_BUG=y ++# CONFIG_ELF_CORE is not set ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=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=y ++CONFIG_TRACEPOINTS=y ++CONFIG_OPROFILE=y ++CONFIG_HAVE_OPROFILE=y ++# CONFIG_KPROBES is not set ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_HAVE_CLK=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_BASE_SMALL=0 ++CONFIG_MODULES=y ++CONFIG_MODULE_FORCE_LOAD=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODULE_FORCE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_BLOCK=y ++CONFIG_LBDAF=y ++CONFIG_BLK_DEV_BSG=y ++# CONFIG_BLK_DEV_INTEGRITY is not set ++ ++# ++# IO Schedulers ++# ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_DEADLINE=y ++CONFIG_IOSCHED_CFQ=y ++# CONFIG_DEFAULT_DEADLINE is not set ++CONFIG_DEFAULT_CFQ=y ++# CONFIG_DEFAULT_NOOP is not set ++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_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_NOMADIK is not set ++# CONFIG_ARCH_IOP13XX is not set ++# CONFIG_ARCH_IOP32X is not set ++# CONFIG_ARCH_IOP33X is not set ++# CONFIG_ARCH_IXP23XX is not set ++# CONFIG_ARCH_IXP2000 is not set ++# CONFIG_ARCH_IXP4XX is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_DOVE is not set ++# CONFIG_ARCH_KIRKWOOD is not set ++# CONFIG_ARCH_LOKI is not set ++# CONFIG_ARCH_MV78XX0 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_BCMRING is not set ++# CONFIG_ARCH_U8500 is not set ++ ++# ++# TI OMAP Implementations ++# ++CONFIG_ARCH_OMAP_OTG=y ++# CONFIG_ARCH_OMAP1 is not set ++# CONFIG_ARCH_OMAP2 is not set ++CONFIG_ARCH_OMAP3=y ++# CONFIG_ARCH_OMAP4 is not set ++ ++# ++# OMAP Feature Selections ++# ++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=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 ++# 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 ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_32v6K=y ++CONFIG_CPU_V7=y ++CONFIG_CPU_32v7=y ++CONFIG_CPU_ABRT_EV7=y ++CONFIG_CPU_PABRT_V7=y ++CONFIG_CPU_CACHE_V7=y ++CONFIG_CPU_CACHE_VIPT=y ++CONFIG_CPU_COPY_V6=y ++CONFIG_CPU_TLB_V7=y ++CONFIG_CPU_HAS_ASID=y ++CONFIG_CPU_CP15=y ++CONFIG_CPU_CP15_MMU=y ++ ++# ++# Processor Features ++# ++CONFIG_ARM_THUMB=y ++CONFIG_ARM_THUMBEE=y ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++# CONFIG_CPU_BPREDICT_DISABLE is not set ++CONFIG_HAS_TLS_REG=y ++CONFIG_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 ++ ++# ++# Bus support ++# ++# CONFIG_PCI_SYSCALL is not set ++# CONFIG_ARCH_SUPPORTS_MSI is not set ++# CONFIG_PCCARD is not set ++ ++# ++# Kernel Features ++# ++CONFIG_TICK_ONESHOT=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_GENERIC_CLOCKEVENTS_BUILD=y ++CONFIG_VMSPLIT_3G=y ++# CONFIG_VMSPLIT_2G is not set ++# CONFIG_VMSPLIT_1G is not set ++CONFIG_PAGE_OFFSET=0xC0000000 ++# 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 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_PAGEFLAGS_EXTENDED=y ++CONFIG_SPLIT_PTLOCK_CPUS=4 ++# CONFIG_PHYS_ADDR_T_64BIT is not set ++CONFIG_ZONE_DMA_FLAG=0 ++CONFIG_VIRT_TO_BUS=y ++# 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=" debug " ++# CONFIG_XIP_KERNEL is not set ++CONFIG_KEXEC=y ++CONFIG_ATAGS_PROC=y ++ ++# ++# CPU Power Management ++# ++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 ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++CONFIG_VFP=y ++CONFIG_VFPv3=y ++CONFIG_NEON=y ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_HAVE_AOUT=y ++CONFIG_BINFMT_AOUT=m ++CONFIG_BINFMT_MISC=y ++ ++# ++# Power management options ++# ++CONFIG_PM=y ++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 ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_MMAP=y ++CONFIG_UNIX=y ++CONFIG_XFRM=y ++# CONFIG_XFRM_USER is not set ++# CONFIG_XFRM_SUB_POLICY is not set ++# CONFIG_XFRM_MIGRATE is not set ++# CONFIG_XFRM_STATISTICS is not set ++CONFIG_XFRM_IPCOMP=m ++CONFIG_NET_KEY=y ++# CONFIG_NET_KEY_MIGRATE is not set ++CONFIG_INET=y ++# CONFIG_IP_MULTICAST is not set ++# CONFIG_IP_ADVANCED_ROUTER is not set ++CONFIG_IP_FIB_HASH=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_BOOTP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE=m ++# CONFIG_ARPD is not set ++# CONFIG_SYN_COOKIES 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=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=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=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=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=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 ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER_PATH="" ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++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_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 ++# CONFIG_MTD_AFS_PARTS is not set ++# CONFIG_MTD_AR7_PARTS is not set ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLKDEVS=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_MTD_OOPS is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++# CONFIG_MTD_JEDECPROBE is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_I4 is not set ++# CONFIG_MTD_CFI_I8 is not set ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set ++# CONFIG_MTD_PLATRAM is not set ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_M25P80 is not set ++# CONFIG_MTD_SST25L is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOC2000 is not set ++# CONFIG_MTD_DOC2001 is not set ++# CONFIG_MTD_DOC2001PLUS is not set ++CONFIG_MTD_NAND=y ++# CONFIG_MTD_NAND_VERIFY_WRITE is not set ++# CONFIG_MTD_NAND_ECC_SMC is not set ++# CONFIG_MTD_NAND_MUSEUM_IDS is not set ++# CONFIG_MTD_NAND_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=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=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=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=m ++CONFIG_CDROM_PKTCDVD_BUFFERS=8 ++# CONFIG_CDROM_PKTCDVD_WCACHE is not set ++# CONFIG_ATA_OVER_ETH 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=m ++CONFIG_SCSI=y ++CONFIG_SCSI_DMA=y ++# CONFIG_SCSI_TGT is not set ++# CONFIG_SCSI_NETLINK is not set ++CONFIG_SCSI_PROC_FS=y ++ ++# ++# SCSI support type (disk, tape, CD-ROM) ++# ++CONFIG_BLK_DEV_SD=y ++# CONFIG_CHR_DEV_ST is not set ++# CONFIG_CHR_DEV_OSST is not set ++CONFIG_BLK_DEV_SR=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 ++CONFIG_SCSI_WAIT_SCAN=m ++ ++# ++# SCSI Transports ++# ++# CONFIG_SCSI_SPI_ATTRS is not set ++# CONFIG_SCSI_FC_ATTRS is not set ++CONFIG_SCSI_ISCSI_ATTRS=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=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=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=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 ++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=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_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_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=y ++CONFIG_INPUT_POLLDEV=y ++# CONFIG_INPUT_SPARSEKMAP is not set ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++CONFIG_INPUT_MOUSEDEV_PSAUX=y ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++# CONFIG_KEYBOARD_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=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=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 ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_CONSOLE_TRANSLATIONS=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++CONFIG_DEVKMEM=y ++# CONFIG_SERIAL_NONSTANDARD is not set ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=32 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=4 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_MANY_PORTS=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_DETECT_IRQ=y ++CONFIG_SERIAL_8250_RSA=y ++ ++# ++# Non-8250 serial port support ++# ++# CONFIG_SERIAL_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_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 ++ ++# ++# I2C Hardware Bus support ++# ++ ++# ++# 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 ++# CONFIG_I2C_SIMTEC is not set ++ ++# ++# External I2C/SMBus adapter drivers ++# ++# CONFIG_I2C_PARPORT_LIGHT is not set ++# CONFIG_I2C_TAOS_EVM is not set ++# CONFIG_I2C_TINY_USB is not set ++ ++# ++# Other I2C/SMBus bus drivers ++# ++# CONFIG_I2C_PCA_PLATFORM is not set ++# CONFIG_I2C_STUB is not set ++ ++# ++# Miscellaneous I2C Chip support ++# ++# 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=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=y ++ ++# ++# Memory mapped GPIO expanders: ++# ++ ++# ++# I2C GPIO expanders: ++# ++# CONFIG_GPIO_MAX732X is not set ++# CONFIG_GPIO_PCA953X is not set ++# CONFIG_GPIO_PCF857X is not set ++CONFIG_GPIO_TWL4030=y ++ ++# ++# PCI GPIO expanders: ++# ++ ++# ++# 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=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=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=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_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 ++# 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=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_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=y ++# 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 ++# ++# CONFIG_VGASTATE is not set ++# CONFIG_VIDEO_OUTPUT_CONTROL is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_FOREIGN_ENDIAN is not set ++# CONFIG_FB_SYS_FOPS is not set ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++CONFIG_FB_MODE_HELPERS=y ++# CONFIG_FB_TILEBLITTING 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_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_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=y ++ ++# ++# Display hardware drivers ++# ++ ++# ++# Console display driver support ++# ++# CONFIG_VGA_CONSOLE is not set ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++# CONFIG_FONTS is not set ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO 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=y ++ ++# ++# Miscellaneous USB options ++# ++CONFIG_USB_DEVICEFS=y ++CONFIG_USB_DEVICE_CLASS=y ++# CONFIG_USB_DYNAMIC_MINORS is not set ++CONFIG_USB_SUSPEND=y ++CONFIG_USB_OTG=y ++# CONFIG_USB_OTG_WHITELIST is not set ++# CONFIG_USB_OTG_BLACKLIST_HUB is not set ++CONFIG_USB_MON=y ++# CONFIG_USB_WUSB is not set ++# CONFIG_USB_WUSB_CBAF is not set ++ ++# ++# USB Host Controller Drivers ++# ++# 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 ++ ++# ++# OMAP 343x high speed USB support ++# ++# CONFIG_USB_MUSB_HOST is not set ++# CONFIG_USB_MUSB_PERIPHERAL is not set ++CONFIG_USB_MUSB_OTG=y ++CONFIG_USB_GADGET_MUSB_HDRC=y ++CONFIG_USB_MUSB_HDRC_HCD=y ++# CONFIG_MUSB_PIO_ONLY is not set ++CONFIG_USB_INVENTRA_DMA=y ++CONFIG_MUSB_USE_SYSTEM_DMA_RX=y ++# CONFIG_USB_TI_CPPI_DMA is not set ++# CONFIG_USB_TI_CPPI41_DMA is not set ++# CONFIG_USB_MUSB_DEBUG is not set ++ ++# ++# USB Device Class drivers ++# ++CONFIG_USB_ACM=m ++CONFIG_USB_PRINTER=m ++CONFIG_USB_WDM=m ++CONFIG_USB_TMC=m ++ ++# ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ++# ++ ++# ++# also be needed; see USB_STORAGE Help for more info ++# ++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 ++ ++# ++# USB Imaging devices ++# ++# CONFIG_USB_MDC800 is not set ++# CONFIG_USB_MICROTEK is not set ++ ++# ++# USB port drivers ++# ++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=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=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_SISUSBVGA=m ++CONFIG_USB_SISUSBVGA_CON=y ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++# CONFIG_USB_IOWARRIOR 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_AT91 is not set ++# CONFIG_USB_GADGET_ATMEL_USBA is not set ++# CONFIG_USB_GADGET_FSL_USB2 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_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=m ++CONFIG_USB_ZERO_HNPTEST=y ++# CONFIG_USB_AUDIO is not set ++CONFIG_USB_ETH=m ++CONFIG_USB_ETH_RNDIS=y ++# 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=y ++# CONFIG_ISP1301_OMAP is not set ++# CONFIG_USB_ULPI is not set ++CONFIG_TWL4030_USB=y ++CONFIG_NOP_USB_XCEIV=y ++CONFIG_MMC=y ++# CONFIG_MMC_DEBUG is not set ++CONFIG_MMC_UNSAFE_RESUME=y ++ ++# ++# MMC/SD/SDIO Card Drivers ++# ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BOUNCE=y ++CONFIG_SDIO_UART=y ++# CONFIG_MMC_TEST is not set ++ ++# ++# 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_RTC_LIB=y ++CONFIG_RTC_CLASS=m ++ ++# ++# RTC interfaces ++# ++CONFIG_RTC_INTF_SYSFS=y ++CONFIG_RTC_INTF_PROC=y ++CONFIG_RTC_INTF_DEV=y ++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set ++# CONFIG_RTC_DRV_TEST is not set ++ ++# ++# I2C RTC drivers ++# ++# CONFIG_RTC_DRV_DS1307 is not set ++# CONFIG_RTC_DRV_DS1374 is not set ++# CONFIG_RTC_DRV_DS1672 is not set ++# CONFIG_RTC_DRV_MAX6900 is not set ++# CONFIG_RTC_DRV_RS5C372 is not set ++# CONFIG_RTC_DRV_ISL1208 is not set ++# CONFIG_RTC_DRV_X1205 is not set ++# CONFIG_RTC_DRV_PCF8563 is not set ++# CONFIG_RTC_DRV_PCF8583 is not set ++# CONFIG_RTC_DRV_M41T80 is not set ++CONFIG_RTC_DRV_TWL4030=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 ++ ++# ++# TI VLYNQ ++# ++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_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_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=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=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_UDF_NLS=y ++ ++# ++# DOS/FAT/NT Filesystems ++# ++CONFIG_FAT_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_CODEPAGE=437 ++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" ++CONFIG_NTFS_FS=m ++# CONFIG_NTFS_DEBUG is not set ++CONFIG_NTFS_RW=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=y ++# CONFIG_HUGETLB_PAGE 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=y ++CONFIG_JFFS2_FS_XATTR=y ++CONFIG_JFFS2_FS_POSIX_ACL=y ++CONFIG_JFFS2_FS_SECURITY=y ++CONFIG_JFFS2_COMPRESSION_OPTIONS=y ++CONFIG_JFFS2_ZLIB=y ++CONFIG_JFFS2_LZO=y ++CONFIG_JFFS2_RTIME=y ++CONFIG_JFFS2_RUBIN=y ++# CONFIG_JFFS2_CMODE_NONE is not set ++# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 ++# ++CONFIG_PARTITION_ADVANCED=y ++# CONFIG_ACORN_PARTITION is not set ++# CONFIG_OSF_PARTITION is not set ++# CONFIG_AMIGA_PARTITION is not set ++# CONFIG_ATARI_PARTITION is not set ++CONFIG_MAC_PARTITION=y ++CONFIG_MSDOS_PARTITION=y ++CONFIG_BSD_DISKLABEL=y ++CONFIG_MINIX_SUBPARTITION=y ++CONFIG_SOLARIS_X86_PARTITION=y ++# CONFIG_UNIXWARE_DISKLABEL 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=y ++# CONFIG_SYSV68_PARTITION is not set ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++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=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=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=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=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 ++CONFIG_DEBUG_MUTEXES=y ++# CONFIG_DEBUG_LOCK_ALLOC is not set ++# CONFIG_PROVE_LOCKING is not set ++# CONFIG_LOCK_STAT is not set ++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++CONFIG_STACKTRACE=y ++# CONFIG_DEBUG_KOBJECT is not set ++# CONFIG_DEBUG_BUGVERBOSE is not set ++# CONFIG_DEBUG_INFO is not set ++# CONFIG_DEBUG_VM is not set ++# CONFIG_DEBUG_WRITECOUNT is not set ++# CONFIG_DEBUG_MEMORY_INIT is not set ++# CONFIG_DEBUG_LIST is not set ++# CONFIG_DEBUG_SG is not set ++# 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_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_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=y ++# CONFIG_KEYS_DEBUG_PROC_KEYS is not set ++# CONFIG_SECURITY 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_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=m ++CONFIG_CRYPTO_GCM=m ++CONFIG_CRYPTO_SEQIV=m ++ ++# ++# Block modes ++# ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTR=m ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_ECB=y ++CONFIG_CRYPTO_LRW=m ++CONFIG_CRYPTO_PCBC=m ++CONFIG_CRYPTO_XTS=m ++ ++# ++# Hash modes ++# ++CONFIG_CRYPTO_HMAC=m ++CONFIG_CRYPTO_XCBC=m ++# CONFIG_CRYPTO_VMAC is not set ++ ++# ++# Digest ++# ++CONFIG_CRYPTO_CRC32C=y ++CONFIG_CRYPTO_GHASH=m ++CONFIG_CRYPTO_MD4=m ++CONFIG_CRYPTO_MD5=y ++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=y ++CONFIG_CRYPTO_ANUBIS=m ++CONFIG_CRYPTO_ARC4=y ++CONFIG_CRYPTO_BLOWFISH=m ++CONFIG_CRYPTO_CAMELLIA=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_CAST6=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_FCRYPT=m ++CONFIG_CRYPTO_KHAZAD=m ++CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y ++CONFIG_CRC_CCITT=y ++CONFIG_CRC16=y ++CONFIG_CRC_T10DIF=y ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++CONFIG_CRC7=y ++CONFIG_LIBCRC32C=y ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_LZO_COMPRESS=y ++CONFIG_LZO_DECOMPRESS=y ++CONFIG_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-bsp/linux/linux-omap-psp-2.6.32/cam/0006-omap3beagle-camera-Add-support-for-regulators.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0006-omap3beagle-camera-Add-support-for-regulators.patch new file mode 100644 index 0000000..3a44521 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0006-omap3beagle-camera-Add-support-for-regulators.patch @@ -0,0 +1,238 @@ +From 0f967d630fb4b3e55f202b91cbabbd631107923d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 16:50:39 -0500 +Subject: [PATCH 06/75] omap3beagle: camera: Add support for regulators + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 92 +++++++++++++++++++++--- + arch/arm/mach-omap2/board-omap3beagle.c | 53 ++++++++++++++ + 2 files changed, 135 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index e93437f..af8581a 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -28,8 +28,9 @@ + #include + #include + #include +-#include ++#include + #include ++#include + + #include + #include +@@ -50,6 +51,11 @@ + + #define CAM_USE_XCLKA 1 + ++static struct regulator *beagle_mt9t111_reg1; ++static struct regulator *beagle_mt9t111_reg2; ++ ++static struct device *beaglecam_dev; ++ + #if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + static struct isp_interface_config mt9t111_if_config = { + .ccdc_par_ser = ISP_PARLL, +@@ -157,10 +163,13 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + + switch (power) { + case V4L2_POWER_OFF: ++ case V4L2_POWER_STANDBY: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); +- break; + +- case V4L2_POWER_STANDBY: ++ if (regulator_is_enabled(beagle_mt9t111_reg1)) ++ regulator_disable(beagle_mt9t111_reg1); ++ if (regulator_is_enabled(beagle_mt9t111_reg2)) ++ regulator_disable(beagle_mt9t111_reg2); + break; + + case V4L2_POWER_ON: +@@ -169,6 +178,12 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); + #endif ++ ++ /* turn on analog power */ ++ regulator_enable(beagle_mt9t111_reg1); ++ regulator_enable(beagle_mt9t111_reg2); ++ udelay(100); ++ + break; + + default: +@@ -196,16 +211,22 @@ static struct i2c_board_info __initdata mt9t111_i2c_board_info = { + + #endif /* #ifdef CONFIG_VIDEO_MT9T111 */ + +-/** +- * @brief omap3beaglelmb_init - module init function. Should be called before any +- * client driver init call +- * +- * @return result of operation - 0 is success +- */ +-int __init omap3beaglelmb_init(void) ++ ++static int beagle_cam_probe(struct platform_device *pdev) + { + int err; + ++ beagle_mt9t111_reg1 = regulator_get(beaglecam_dev, "vaux3_1"); ++ if (IS_ERR(beagle_mt9t111_reg1)) { ++ dev_err(beaglecam_dev, "vaux3_1 regulator missing\n"); ++ return PTR_ERR(beagle_mt9t111_reg1); ++ } ++ beagle_mt9t111_reg2 = regulator_get(beaglecam_dev, "vaux4_1"); ++ if (IS_ERR(beagle_mt9t111_reg2)) { ++ dev_err(beaglecam_dev, "vaux4_1 regulator missing\n"); ++ regulator_put(beagle_mt9t111_reg1); ++ return PTR_ERR(beagle_mt9t111_reg2); ++ } + /* + * Register the I2C devices present in the board to the I2C + * framework. +@@ -221,8 +242,59 @@ int __init omap3beaglelmb_init(void) + return err; + } + #endif ++ ++ beaglecam_dev = &pdev->dev; ++ + printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); + + return 0; + } ++ ++static int beagle_cam_remove(struct platform_device *pdev) ++{ ++ if (regulator_is_enabled(beagle_mt9t111_reg1)) ++ regulator_disable(beagle_mt9t111_reg1); ++ regulator_put(beagle_mt9t111_reg1); ++ if (regulator_is_enabled(beagle_mt9t111_reg2)) ++ regulator_disable(beagle_mt9t111_reg2); ++ regulator_put(beagle_mt9t111_reg2); ++ ++ return 0; ++} ++ ++static int beagle_cam_suspend(struct device *dev) ++{ ++ return 0; ++} ++ ++static int beagle_cam_resume(struct device *dev) ++{ ++ return 0; ++} ++ ++static struct dev_pm_ops beagle_cam_pm_ops = { ++ .suspend = beagle_cam_suspend, ++ .resume = beagle_cam_resume, ++}; ++ ++static struct platform_driver beagle_cam_driver = { ++ .probe = beagle_cam_probe, ++ .remove = beagle_cam_remove, ++ .driver = { ++ .name = "beagle_cam", ++ .pm = &beagle_cam_pm_ops, ++ }, ++}; ++ ++/** ++ * @brief omap3beaglelmb_init - module init function. Should be called before any ++ * client driver init call ++ * ++ * @return result of operation - 0 is success ++ */ ++int __init omap3beaglelmb_init(void) ++{ ++ platform_driver_register(&beagle_cam_driver); ++ return 0; ++} + arch_initcall(omap3beaglelmb_init); +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 31de2f9..448ab23 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -403,6 +403,56 @@ static struct twl4030_gpio_platform_data beagle_gpio_data = { + .setup = beagle_twl_gpio_setup, + }; + ++ ++static struct platform_device beagle_cam_device = { ++ .name = "beagle_cam", ++ .id = -1, ++}; ++ ++static struct regulator_consumer_supply beagle_vaux3_supplies[] = { ++ { ++ .supply = "vaux3_1", ++ .dev = &beagle_cam_device.dev, ++ }, ++}; ++ ++static struct regulator_consumer_supply beagle_vaux4_supplies[] = { ++ { ++ .supply = "vaux4_1", ++ .dev = &beagle_cam_device.dev, ++ }, ++}; ++ ++/* VAUX3 for CAM_1V8 */ ++static struct regulator_init_data beagle_vaux3 = { ++ .constraints = { ++ .min_uV = 1800000, ++ .max_uV = 1800000, ++ .apply_uV = true, ++ .valid_modes_mask = REGULATOR_MODE_NORMAL ++ | REGULATOR_MODE_STANDBY, ++ .valid_ops_mask = REGULATOR_CHANGE_MODE ++ | REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = ARRAY_SIZE(beagle_vaux3_supplies), ++ .consumer_supplies = beagle_vaux3_supplies, ++}; ++ ++/* VAUX4 for CAM_2V8 */ ++static struct regulator_init_data beagle_vaux4 = { ++ .constraints = { ++ .min_uV = 2800000, ++ .max_uV = 2800000, ++ .apply_uV = true, ++ .valid_modes_mask = REGULATOR_MODE_NORMAL ++ | REGULATOR_MODE_STANDBY, ++ .valid_ops_mask = REGULATOR_CHANGE_MODE ++ | REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = ARRAY_SIZE(beagle_vaux4_supplies), ++ .consumer_supplies = beagle_vaux4_supplies, ++}; ++ + /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ + static struct regulator_init_data beagle_vmmc1 = { + .constraints = { +@@ -492,6 +542,8 @@ static struct twl4030_platform_data beagle_twldata = { + .vsim = &beagle_vsim, + .vdac = &beagle_vdac, + .vpll2 = &beagle_vpll2, ++ .vaux3 = &beagle_vaux3, ++ .vaux4 = &beagle_vaux4, + }; + + static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { +@@ -658,6 +710,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = { + &leds_gpio, + &keys_gpio, + &beagle_dss_device, ++ &beagle_cam_device, + }; + + static void __init omap3beagle_flash_init(void) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0007-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0007-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch new file mode 100644 index 0000000..232835d9d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0007-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch @@ -0,0 +1,37 @@ +From 4b111d4e4f4050db9fcca746f9b8a893d3d60f98 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 16:52:25 -0500 +Subject: [PATCH 07/75] TEMP: omap3beagle: cam: Enable OMAP_MUX + +Signed-off-by: Sergio Aguirre +--- + arch/arm/configs/omap3_beagle_cam_defconfig | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/configs/omap3_beagle_cam_defconfig b/arch/arm/configs/omap3_beagle_cam_defconfig +index 0ea8300..bcd9418 100644 +--- a/arch/arm/configs/omap3_beagle_cam_defconfig ++++ b/arch/arm/configs/omap3_beagle_cam_defconfig +@@ -1,7 +1,7 @@ + # + # Automatically generated make config: don't edit + # Linux kernel version: 2.6.32 +-# Fri Jun 11 14:25:23 2010 ++# Fri Jun 11 16:51:42 2010 + # + CONFIG_ARM=y + CONFIG_SYS_SUPPORTS_APM_EMULATION=y +@@ -240,7 +240,9 @@ CONFIG_ARCH_OMAP3=y + CONFIG_OMAP_SMARTREFLEX=y + # CONFIG_OMAP_SMARTREFLEX_TESTING is not set + CONFIG_OMAP_RESET_CLOCKS=y +-# CONFIG_OMAP_MUX is not set ++CONFIG_OMAP_MUX=y ++# CONFIG_OMAP_MUX_DEBUG is not set ++CONFIG_OMAP_MUX_WARNINGS=y + CONFIG_OMAP_MCBSP=y + CONFIG_OMAP_MBOX_FWK=m + CONFIG_OMAP_IOMMU=y +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0008-omap3beagle-camera-Fix-null-pointer-dereference.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0008-omap3beagle-camera-Fix-null-pointer-dereference.patch new file mode 100644 index 0000000..2232f94 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0008-omap3beagle-camera-Fix-null-pointer-dereference.patch @@ -0,0 +1,54 @@ +From e5dc69cd15b96c2ffc5807a4127a94a32c9b4242 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 11 Jun 2010 17:53:50 -0500 +Subject: [PATCH 08/75] omap3beagle: camera: Fix null pointer dereference + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index af8581a..20174a7 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -54,8 +54,6 @@ + static struct regulator *beagle_mt9t111_reg1; + static struct regulator *beagle_mt9t111_reg2; + +-static struct device *beaglecam_dev; +- + #if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + static struct isp_interface_config mt9t111_if_config = { + .ccdc_par_ser = ISP_PARLL, +@@ -216,14 +214,14 @@ static int beagle_cam_probe(struct platform_device *pdev) + { + int err; + +- beagle_mt9t111_reg1 = regulator_get(beaglecam_dev, "vaux3_1"); ++ beagle_mt9t111_reg1 = regulator_get(&pdev->dev, "vaux3_1"); + if (IS_ERR(beagle_mt9t111_reg1)) { +- dev_err(beaglecam_dev, "vaux3_1 regulator missing\n"); ++ dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); + return PTR_ERR(beagle_mt9t111_reg1); + } +- beagle_mt9t111_reg2 = regulator_get(beaglecam_dev, "vaux4_1"); ++ beagle_mt9t111_reg2 = regulator_get(&pdev->dev, "vaux4_1"); + if (IS_ERR(beagle_mt9t111_reg2)) { +- dev_err(beaglecam_dev, "vaux4_1 regulator missing\n"); ++ dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); + regulator_put(beagle_mt9t111_reg1); + return PTR_ERR(beagle_mt9t111_reg2); + } +@@ -243,8 +241,6 @@ static int beagle_cam_probe(struct platform_device *pdev) + } + #endif + +- beaglecam_dev = &pdev->dev; +- + printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); + + return 0; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0009-Revert-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0009-Revert-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch new file mode 100644 index 0000000..4bdf466 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0009-Revert-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch @@ -0,0 +1,42 @@ +From 0c7579c682c3eb3dc5190e1b28743be0b33571e3 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Wed, 16 Jun 2010 03:23:57 +0300 +Subject: [PATCH 09/75] Revert "TEMP: omap3beagle: cam: Enable OMAP_MUX" + +This reverts commit 7d5f49845f06feadb9bc97d458d1ce03814ff5f4. + +Reason? + +Kernel panic on MMC partition mount, so probably muxing is broken +somewhere. +--- + arch/arm/configs/omap3_beagle_cam_defconfig | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/configs/omap3_beagle_cam_defconfig b/arch/arm/configs/omap3_beagle_cam_defconfig +index bcd9418..0ea8300 100644 +--- a/arch/arm/configs/omap3_beagle_cam_defconfig ++++ b/arch/arm/configs/omap3_beagle_cam_defconfig +@@ -1,7 +1,7 @@ + # + # Automatically generated make config: don't edit + # Linux kernel version: 2.6.32 +-# Fri Jun 11 16:51:42 2010 ++# Fri Jun 11 14:25:23 2010 + # + CONFIG_ARM=y + CONFIG_SYS_SUPPORTS_APM_EMULATION=y +@@ -240,9 +240,7 @@ CONFIG_ARCH_OMAP3=y + CONFIG_OMAP_SMARTREFLEX=y + # CONFIG_OMAP_SMARTREFLEX_TESTING is not set + CONFIG_OMAP_RESET_CLOCKS=y +-CONFIG_OMAP_MUX=y +-# CONFIG_OMAP_MUX_DEBUG is not set +-CONFIG_OMAP_MUX_WARNINGS=y ++# CONFIG_OMAP_MUX is not set + CONFIG_OMAP_MCBSP=y + CONFIG_OMAP_MBOX_FWK=m + CONFIG_OMAP_IOMMU=y +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0010-omap3beagle-camera-Change-arch-late_initcall.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0010-omap3beagle-camera-Change-arch-late_initcall.patch new file mode 100644 index 0000000..9854403 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0010-omap3beagle-camera-Change-arch-late_initcall.patch @@ -0,0 +1,25 @@ +From d14c2924e8bb7d9a864dfeb0aca37ef9fc913f7d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Wed, 16 Jun 2010 04:28:06 +0300 +Subject: [PATCH 10/75] omap3beagle: camera: Change arch -> late_initcall + +This is for ensuring that the regulators are initialized already. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 20174a7..55a113c 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -293,4 +293,4 @@ int __init omap3beaglelmb_init(void) + platform_driver_register(&beagle_cam_driver); + return 0; + } +-arch_initcall(omap3beaglelmb_init); ++late_initcall(omap3beaglelmb_init); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0011-omap3beagle-camera-Move-i2c-registration-to-the-main.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0011-omap3beagle-camera-Move-i2c-registration-to-the-main.patch new file mode 100644 index 0000000..c61ad08 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0011-omap3beagle-camera-Move-i2c-registration-to-the-main.patch @@ -0,0 +1,107 @@ +From 527c026c03e34471e34a731322422eacbb30fb35 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Wed, 16 Jun 2010 04:58:46 +0300 +Subject: [PATCH 11/75] omap3beagle: camera: Move i2c registration to the main board + +This is because the board-omap3beagle-camera.c file now is +late_initcall, and the i2c bus registration needed to be before +i2c host init. + +So, in order to have the i2c init, meanwhile having late_initcall, +this is so far the best solution. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 24 +----------------------- + arch/arm/mach-omap2/board-omap3beagle.c | 12 +++++++++++- + 2 files changed, 12 insertions(+), 24 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 55a113c..1652f15 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -47,8 +47,6 @@ + + #define MODULE_NAME "omap3beaglelmb" + +-#define MT9T111_I2C_BUSNUM (2) +- + #define CAM_USE_XCLKA 1 + + static struct regulator *beagle_mt9t111_reg1; +@@ -191,7 +189,7 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + return 0; + } + +-static struct mt9t111_platform_data mt9t111_pdata = { ++struct mt9t111_platform_data mt9t111_pdata = { + .master = "omap34xxcam", + .power_set = mt9t111_power_set, + .priv_data_set = mt9t111_set_prv_data, +@@ -202,11 +200,6 @@ static struct mt9t111_platform_data mt9t111_pdata = { + .vs_polarity = 1, /* 0 - Active low, 1- Active high */ + }; + +-static struct i2c_board_info __initdata mt9t111_i2c_board_info = { +- I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), +- .platform_data = &mt9t111_pdata, +-}; +- + #endif /* #ifdef CONFIG_VIDEO_MT9T111 */ + + +@@ -225,21 +218,6 @@ static int beagle_cam_probe(struct platform_device *pdev) + regulator_put(beagle_mt9t111_reg1); + return PTR_ERR(beagle_mt9t111_reg2); + } +- /* +- * Register the I2C devices present in the board to the I2C +- * framework. +- * If more I2C devices are added, then each device information should +- * be registered with I2C using i2c_register_board_info(). +- */ +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) +- err = i2c_register_board_info(MT9T111_I2C_BUSNUM, +- &mt9t111_i2c_board_info, 1); +- if (err) { +- printk(KERN_ERR MODULE_NAME \ +- ": MT9T111 I2C Board Registration failed \n"); +- return err; +- } +-#endif + + printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 448ab23..97ccf04 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -71,6 +71,11 @@ static struct omap_opp * _omap35x_l3_rate_table = NULL; + static struct omap_opp * _omap37x_l3_rate_table = NULL; + #endif /* CONFIG_PM */ + ++#ifdef CONFIG_VIDEO_MT9T111 ++#include ++#include ++extern struct mt9t111_platform_data mt9t111_pdata; ++#endif + + #define GPMC_CS0_BASE 0x60 + #define GPMC_CS_SIZE 0x30 +@@ -588,7 +593,12 @@ static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { + static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; + #endif + +-static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {}; ++static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++ { ++ I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), ++ .platform_data = &mt9t111_pdata, ++ }, ++}; + + static int __init omap3_beagle_i2c_init(void) + { +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0012-ARM-OMAP3-make-camera-code-build-if-MT9T111-is-built.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0012-ARM-OMAP3-make-camera-code-build-if-MT9T111-is-built.patch new file mode 100644 index 0000000..e83b078 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0012-ARM-OMAP3-make-camera-code-build-if-MT9T111-is-built.patch @@ -0,0 +1,38 @@ +From 860ff4be70242f2d2964e0d431d09231cbf6bfde Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 16 Jun 2010 09:45:46 +0200 +Subject: [PATCH 12/75] ARM: OMAP3: make camera code build if MT9T111 is built as module or disabled + +--- + arch/arm/mach-omap2/board-omap3beagle.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 97ccf04..3d4b0bc 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -71,7 +71,7 @@ static struct omap_opp * _omap35x_l3_rate_table = NULL; + static struct omap_opp * _omap37x_l3_rate_table = NULL; + #endif /* CONFIG_PM */ + +-#ifdef CONFIG_VIDEO_MT9T111 ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + #include + #include + extern struct mt9t111_platform_data mt9t111_pdata; +@@ -594,10 +594,12 @@ static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; + #endif + + static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + { + I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), + .platform_data = &mt9t111_pdata, + }, ++#endif + }; + + static int __init omap3_beagle_i2c_init(void) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0013-DEBUG-omap3beagle-camera-Force-mode0-in-cam_xclka.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0013-DEBUG-omap3beagle-camera-Force-mode0-in-cam_xclka.patch new file mode 100644 index 0000000..f2d6a25 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0013-DEBUG-omap3beagle-camera-Force-mode0-in-cam_xclka.patch @@ -0,0 +1,41 @@ +From 1326478d7bdb80f9d7d791e54eeead48ece93bff Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Wed, 23 Jun 2010 15:03:24 -0500 +Subject: [PATCH 13/75] DEBUG: omap3beagle: camera: Force mode0 in cam_xclka + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 1652f15..77f9469 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -34,6 +34,7 @@ + + #include + #include ++#include + + #include + #include +@@ -160,6 +161,7 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + switch (power) { + case V4L2_POWER_OFF: + case V4L2_POWER_STANDBY: ++ omap_ctrl_writew(0x0, 0x110); /* Control XCLKA output mux */ + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + + if (regulator_is_enabled(beagle_mt9t111_reg1)) +@@ -169,6 +171,7 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + break; + + case V4L2_POWER_ON: ++ omap_ctrl_writew(0x0, 0x110); /* Control XCLKA output mux */ + isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); + + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0014-OMAP3-CLOCK-Add-capability-to-change-rate-of-dpll4_m.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0014-OMAP3-CLOCK-Add-capability-to-change-rate-of-dpll4_m.patch new file mode 100644 index 0000000..c396856 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0014-OMAP3-CLOCK-Add-capability-to-change-rate-of-dpll4_m.patch @@ -0,0 +1,33 @@ +From 484186abcf6d44cc690c73d68148edde8b0b365b Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 4 Feb 2010 18:12:37 -0600 +Subject: [PATCH 14/75] OMAP3: CLOCK: Add capability to change rate of dpll4_m5_ck_3630 + +Add necessary clk_sel definitions to clock framework to allow changing +dpll4_m5_ck_3630 rate. + +Based on patch by Tuukka Toivonen with subject: + + OMAP3: CLOCK: Add capability to change rate of dpll4_m5_ck + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/clock34xx_data.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c +index 89e2f61..8d101ef 100644 +--- a/arch/arm/mach-omap2/clock34xx_data.c ++++ b/arch/arm/mach-omap2/clock34xx_data.c +@@ -934,6 +934,8 @@ static struct clk dpll4_m5_ck_3630 __initdata = { + .clksel = div32_dpll4_clksel, + .clkdm_name = "dpll4_clkdm", + .recalc = &omap2_clksel_recalc, ++ .set_rate = &omap2_clksel_set_rate, ++ .round_rate = &omap2_clksel_round_rate, + }; + + /* The PWRDN bit is apparently only available on 3430ES2 and above */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0015-Revert-DEBUG-omap3beagle-camera-Force-mode0-in-cam_x.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0015-Revert-DEBUG-omap3beagle-camera-Force-mode0-in-cam_x.patch new file mode 100644 index 0000000..a6a42a7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0015-Revert-DEBUG-omap3beagle-camera-Force-mode0-in-cam_x.patch @@ -0,0 +1,41 @@ +From 327cb4ef7120d00bcc6a725375f2eb6aa02de899 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 14:27:39 -0500 +Subject: [PATCH 15/75] Revert "DEBUG: omap3beagle: camera: Force mode0 in cam_xclka" + +This reverts commit 158e14b3d449dde2c6aa9f8cddb86fbbee2d2cd7. +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 77f9469..1652f15 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -34,7 +34,6 @@ + + #include + #include +-#include + + #include + #include +@@ -161,7 +160,6 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + switch (power) { + case V4L2_POWER_OFF: + case V4L2_POWER_STANDBY: +- omap_ctrl_writew(0x0, 0x110); /* Control XCLKA output mux */ + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + + if (regulator_is_enabled(beagle_mt9t111_reg1)) +@@ -171,7 +169,6 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + break; + + case V4L2_POWER_ON: +- omap_ctrl_writew(0x0, 0x110); /* Control XCLKA output mux */ + isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); + + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0016-omap3beagle-camera-Fix-wrong-XCLKA-selection.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0016-omap3beagle-camera-Fix-wrong-XCLKA-selection.patch new file mode 100644 index 0000000..f562273 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0016-omap3beagle-camera-Fix-wrong-XCLKA-selection.patch @@ -0,0 +1,30 @@ +From eb9738897009bea572be12bfb812c9a5ad8ef293 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 17:31:49 -0500 +Subject: [PATCH 16/75] omap3beagle: camera: Fix wrong XCLKA selection + +The CAM_USE_XCLKA should have been 0 instead of 1. + +Otherwise it was activating XCLKB instead! + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 1652f15..75c8345 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -47,7 +47,7 @@ + + #define MODULE_NAME "omap3beaglelmb" + +-#define CAM_USE_XCLKA 1 ++#define CAM_USE_XCLKA 0 + + static struct regulator *beagle_mt9t111_reg1; + static struct regulator *beagle_mt9t111_reg2; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch new file mode 100644 index 0000000..0582172 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch @@ -0,0 +1,91 @@ +From 26b873e74231529962132d9d80c8921b584f6e84 Mon Sep 17 00:00:00 2001 +From: Tuukka Toivonen +Date: Thu, 2 Jul 2009 16:17:55 +0200 +Subject: [PATCH 17/75] omap3isp: set CAM_MCLK to 172.8 MHz, allows exact 9.6 MHz for camera xclka/b + +Camera cam_xclka and cam_xclkb clocks are generated by dividing +CAM_MCLK with an integer. We want to use 9.6 MHz for cameras, +so CAM_MCLK should be multiple of it. Otherwise the generated +frequency is slightly off due to rounding. + +Signed-off-by: Tuukka Toivonen +--- + drivers/media/video/isp/isp.c | 14 ++++++++++++++ + drivers/media/video/isp/isp.h | 1 + + drivers/media/video/isp/ispreg.h | 2 +- + 3 files changed, 16 insertions(+), 1 deletions(-) + +diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c +index ceed870..9d46c01 100644 +--- a/drivers/media/video/isp/isp.c ++++ b/drivers/media/video/isp/isp.c +@@ -2333,6 +2333,11 @@ static int isp_enable_clocks(struct device *dev) + dev_err(dev, "clk_enable cam_ick failed\n"); + goto out_clk_enable_ick; + } ++ r = clk_set_rate(isp->dpll4_m5_ck, CM_CAM_MCLK_HZ/2); ++ if (r) { ++ dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n"); ++ goto out_clk_enable_mclk; ++ } + r = clk_enable(isp->cam_mclk); + if (r) { + dev_err(dev, "clk_enable cam_mclk failed\n"); +@@ -2499,6 +2504,7 @@ static int isp_remove(struct platform_device *pdev) + + clk_put(isp->cam_ick); + clk_put(isp->cam_mclk); ++ clk_put(isp->dpll4_m5_ck); + clk_put(isp->csi2_fck); + clk_put(isp->l3_ick); + +@@ -2674,6 +2680,12 @@ static int isp_probe(struct platform_device *pdev) + ret_err = PTR_ERR(isp->cam_mclk); + goto out_clk_get_mclk; + } ++ isp->dpll4_m5_ck = clk_get(&camera_dev, "dpll4_m5_ck"); ++ if (IS_ERR(isp->dpll4_m5_ck)) { ++ dev_err(isp->dev, "clk_get dpll4_m5_ck failed\n"); ++ ret_err = PTR_ERR(isp->dpll4_m5_ck); ++ goto out_clk_get_dpll4_m5_ck; ++ } + isp->csi2_fck = clk_get(&camera_dev, "csi2_96m_fck"); + if (IS_ERR(isp->csi2_fck)) { + dev_err(isp->dev, "clk_get csi2_96m_fck failed\n"); +@@ -2734,6 +2746,8 @@ out_request_irq: + out_clk_get_l3_ick: + clk_put(isp->csi2_fck); + out_clk_get_csi2_fclk: ++ clk_put(isp->dpll4_m5_ck); ++out_clk_get_dpll4_m5_ck: + clk_put(isp->cam_mclk); + out_clk_get_mclk: + clk_put(isp->cam_ick); +diff --git a/drivers/media/video/isp/isp.h b/drivers/media/video/isp/isp.h +index dc85d61..6b100b6 100644 +--- a/drivers/media/video/isp/isp.h ++++ b/drivers/media/video/isp/isp.h +@@ -414,6 +414,7 @@ struct isp_device { + int ref_count; + struct clk *cam_ick; + struct clk *cam_mclk; ++ struct clk *dpll4_m5_ck; + struct clk *csi2_fck; + struct clk *l3_ick; + struct isp_interface_config *config; +diff --git a/drivers/media/video/isp/ispreg.h b/drivers/media/video/isp/ispreg.h +index 676a33d..1240e0e 100644 +--- a/drivers/media/video/isp/ispreg.h ++++ b/drivers/media/video/isp/ispreg.h +@@ -116,7 +116,7 @@ + #define ISP_32B_BOUNDARY_BUF 0xFFFFFFE0 + #define ISP_32B_BOUNDARY_OFFSET 0x0000FFE0 + +-#define CM_CAM_MCLK_HZ 216000000 ++#define CM_CAM_MCLK_HZ 172800000 /* Hz */ + + /* ISP Submodules offset */ + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0018-Fix-Moved-MCLK-setting-to-the-board-file.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0018-Fix-Moved-MCLK-setting-to-the-board-file.patch new file mode 100644 index 0000000..978ae22 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0018-Fix-Moved-MCLK-setting-to-the-board-file.patch @@ -0,0 +1,209 @@ +From 1156c4406ff37b425c596804624ad6014006fcc1 Mon Sep 17 00:00:00 2001 +From: Penda, Naveen +Date: Thu, 22 Oct 2009 06:07:01 +0530 +Subject: [PATCH 18/75] Fix: Moved MCLK setting to the board file + +This patch provides the flexibility to set the MCLK frequency + from the board file + +Signed-off-by: Naveen Penda +Signed-off-by: Curran, Dominic +--- + arch/arm/mach-omap2/board-zoom2-camera.c | 10 ++++++ + drivers/media/video/isp/isp.c | 51 +++++++++++++++++++---------- + drivers/media/video/isp/isp.h | 6 +++ + 3 files changed, 49 insertions(+), 18 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-zoom2-camera.c b/arch/arm/mach-omap2/board-zoom2-camera.c +index 1ba2982..8c035c4 100644 +--- a/arch/arm/mach-omap2/board-zoom2-camera.c ++++ b/arch/arm/mach-omap2/board-zoom2-camera.c +@@ -41,6 +41,8 @@ static struct device *zoom2cam_dev; + + #define CAMZOOM2_USE_XCLKB 1 + ++#define ISP_IMX046_MCLK 216000000 ++ + /* Sensor specific GPIO signals */ + #define IMX046_RESET_GPIO 98 + #define IMX046_STANDBY_GPIO 58 +@@ -148,6 +150,7 @@ static struct isp_interface_config imx046_if_config = { + .shutter = 0x0, + .wenlog = ISPCCDC_CFG_WENLOG_AND, + .wait_hs_vs = 2, ++ .cam_mclk = ISP_IMX046_MCLK, + .u.csi.crc = 0x0, + .u.csi.mode = 0x0, + .u.csi.edge = 0x0, +@@ -264,6 +267,8 @@ static int imx046_sensor_power_set(struct v4l2_int_device *s, enum v4l2_power po + #ifdef CONFIG_OMAP_PM_SRF + omap_pm_set_min_bus_tput(vdev->cam->isp, OCP_INITIATOR_AGENT, 0); + #endif ++ if (previous_power != V4L2_POWER_OFF) ++ isp_disable_mclk(isp); + break; + case V4L2_POWER_STANDBY: + printk(KERN_DEBUG "imx046_sensor_power_set(STANDBY)\n"); +@@ -272,9 +277,14 @@ static int imx046_sensor_power_set(struct v4l2_int_device *s, enum v4l2_power po + #ifdef CONFIG_OMAP_PM_SRF + omap_pm_set_min_bus_tput(vdev->cam->isp, OCP_INITIATOR_AGENT, 0); + #endif ++ ++ ++ isp_disable_mclk(isp); ++ + break; + } + ++ + /* Save powerstate to know what was before calling POWER_ON. */ + previous_power = power; + return err; +diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c +index 9d46c01..cf68720 100644 +--- a/drivers/media/video/isp/isp.c ++++ b/drivers/media/video/isp/isp.c +@@ -552,7 +552,7 @@ EXPORT_SYMBOL(isp_unset_callback); + * Configures the specified MCLK divisor in the ISP timing control register + * (TCTRL_CTRL) to generate the desired xclk clock value. + * +- * Divisor = CM_CAM_MCLK_HZ / xclk ++ * Divisor = mclk / xclk + * + * Returns the final frequency that is actually being generated + **/ +@@ -560,15 +560,16 @@ u32 isp_set_xclk(struct device *dev, u32 xclk, u8 xclksel) + { + u32 divisor; + u32 currentxclk; ++ struct isp_device *isp = dev_get_drvdata(dev); + +- if (xclk >= CM_CAM_MCLK_HZ) { ++ if (xclk >= isp->mclk) { + divisor = ISPTCTRL_CTRL_DIV_BYPASS; +- currentxclk = CM_CAM_MCLK_HZ; ++ currentxclk = isp->mclk; + } else if (xclk >= 2) { +- divisor = CM_CAM_MCLK_HZ / xclk; ++ divisor = isp->mclk / xclk; + if (divisor >= ISPTCTRL_CTRL_DIV_BYPASS) + divisor = ISPTCTRL_CTRL_DIV_BYPASS - 1; +- currentxclk = CM_CAM_MCLK_HZ / divisor; ++ currentxclk = isp->mclk / divisor; + } else { + divisor = xclk; + currentxclk = 0; +@@ -874,6 +875,8 @@ int isp_configure_interface(struct device *dev, + /* Set sensor specific fields in CCDC and Previewer module. */ + ispccdc_set_wenlog(&isp->isp_ccdc, config->wenlog); + ++ isp->mclk = config->cam_mclk; ++ isp_enable_mclk(dev); + /* FIXME: this should be set in ispccdc_config_vp() */ + fmtcfg = isp_reg_readl(dev, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_FMTCFG); + fmtcfg &= ISPCCDC_FMTCFG_VPIF_FRQ_MASK; +@@ -2333,16 +2336,6 @@ static int isp_enable_clocks(struct device *dev) + dev_err(dev, "clk_enable cam_ick failed\n"); + goto out_clk_enable_ick; + } +- r = clk_set_rate(isp->dpll4_m5_ck, CM_CAM_MCLK_HZ/2); +- if (r) { +- dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n"); +- goto out_clk_enable_mclk; +- } +- r = clk_enable(isp->cam_mclk); +- if (r) { +- dev_err(dev, "clk_enable cam_mclk failed\n"); +- goto out_clk_enable_mclk; +- } + r = clk_enable(isp->csi2_fck); + if (r) { + dev_err(dev, "clk_enable csi2_fck failed\n"); +@@ -2351,13 +2344,34 @@ static int isp_enable_clocks(struct device *dev) + return 0; + + out_clk_enable_csi2_fclk: +- clk_disable(isp->cam_mclk); +-out_clk_enable_mclk: + clk_disable(isp->cam_ick); + out_clk_enable_ick: + return r; + } + ++int isp_enable_mclk(struct device *dev) ++{ ++ struct isp_device *isp = dev_get_drvdata(dev); ++ int r; ++ ++ r = clk_set_rate(isp->dpll4_m5_ck, isp->mclk); ++ if (r) { ++ dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n"); ++ return r; ++ } ++ r = clk_enable(isp->cam_mclk); ++ if (r) { ++ dev_err(dev, "clk_enable cam_mclk failed\n"); ++ return r; ++ } ++ return 0; ++} ++ ++void isp_disable_mclk(struct isp_device *isp) ++{ ++ clk_disable(isp->cam_mclk); ++} ++ + /** + * isp_disable_clocks - Disable ISP clocks + * @dev: Device pointer specific to the OMAP3 ISP. +@@ -2367,7 +2381,6 @@ static void isp_disable_clocks(struct device *dev) + struct isp_device *isp = dev_get_drvdata(dev); + + clk_disable(isp->cam_ick); +- clk_disable(isp->cam_mclk); + clk_disable(isp->csi2_fck); + } + +@@ -2668,6 +2681,8 @@ static int isp_probe(struct platform_device *pdev) + goto out_free_mmio; + } + ++ isp->mclk = CM_CAM_MCLK_HZ / 2; ++ + isp->cam_ick = clk_get(&camera_dev, "cam_ick"); + if (IS_ERR(isp->cam_ick)) { + dev_err(isp->dev, "clk_get cam_ick failed\n"); +diff --git a/drivers/media/video/isp/isp.h b/drivers/media/video/isp/isp.h +index 6b100b6..85c3fa9 100644 +--- a/drivers/media/video/isp/isp.h ++++ b/drivers/media/video/isp/isp.h +@@ -199,6 +199,7 @@ struct isp_interface_config { + u32 prev_slv; + u32 wenlog; + int wait_hs_vs; ++ u32 cam_mclk; + unsigned int pixelclk; + union { + struct par { +@@ -425,6 +426,7 @@ struct isp_device { + struct isp_irq irq; + struct isp_pipeline pipeline; + u32 interrupts; ++ u32 mclk; + enum isp_running running; + int current_field; + int bt656ifen; +@@ -489,6 +491,10 @@ struct device *isp_get(void); + + int isp_put(void); + ++int isp_enable_mclk(struct device *dev); ++ ++void isp_disable_mclk(struct isp_device *dev); ++ + int isp_queryctrl(struct v4l2_queryctrl *a); + + int isp_querymenu(struct v4l2_querymenu *a); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch new file mode 100644 index 0000000..8a16d66 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch @@ -0,0 +1,47 @@ +From 3da817ad292e1414b175484cf384f1fcca351493 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Wed, 25 Nov 2009 12:30:46 -0600 +Subject: [PATCH 19/75] omap3isp: core: Do smarter MCLK setting + +Since the ratio between MCLK and DPLL4_M5 could not be 1:1 +(i.e. on 3430 its 2:1), it's necessary to check ratio +between those 2 first. + +This should make MCLK setting more adequate to different +chipsets. + +Tested on Zoom2 (3430 ES3.1) + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/isp/isp.c | 13 ++++++++++++- + 1 files changed, 12 insertions(+), 1 deletions(-) + +diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c +index cf68720..29dd005 100644 +--- a/drivers/media/video/isp/isp.c ++++ b/drivers/media/video/isp/isp.c +@@ -2353,8 +2353,19 @@ int isp_enable_mclk(struct device *dev) + { + struct isp_device *isp = dev_get_drvdata(dev); + int r; ++ unsigned long curr_mclk, curr_dpll4_m5, ratio; + +- r = clk_set_rate(isp->dpll4_m5_ck, isp->mclk); ++ /* Check ratio between DPLL4_M5 and CAM_MCLK */ ++ curr_mclk = clk_get_rate(isp->cam_mclk); ++ curr_dpll4_m5 = clk_get_rate(isp->dpll4_m5_ck); ++ ++ /* Protection for potential Zero division, or zero-ratio result */ ++ if (!curr_mclk || !curr_dpll4_m5) ++ BUG(); ++ ++ ratio = curr_mclk / curr_dpll4_m5; ++ ++ r = clk_set_rate(isp->dpll4_m5_ck, isp->mclk / ratio); + if (r) { + dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n"); + return r; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0020-omap3beagle-camera-set-mclk-for-mt9t111.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0020-omap3beagle-camera-set-mclk-for-mt9t111.patch new file mode 100644 index 0000000..6beeac8 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0020-omap3beagle-camera-set-mclk-for-mt9t111.patch @@ -0,0 +1,36 @@ +From 434ac18f2ac9969570dd9347f9933f4ed5147749 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 16:34:13 -0500 +Subject: [PATCH 20/75] omap3beagle: camera: set mclk for mt9t111 + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 75c8345..529a6be 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -49,6 +49,8 @@ + + #define CAM_USE_XCLKA 0 + ++#define ISP_MT9T111_MCLK 216000000 ++ + static struct regulator *beagle_mt9t111_reg1; + static struct regulator *beagle_mt9t111_reg2; + +@@ -60,6 +62,9 @@ static struct isp_interface_config mt9t111_if_config = { + .strobe = 0x0, + .prestrobe = 0x0, + .shutter = 0x0, ++ .cam_mclk = ISP_MT9T111_MCLK, ++ .wenlog = ISPCCDC_CFG_WENLOG_AND, ++ .wait_hs_vs = 2, + .u.par.par_bridge = 0x1, + .u.par.par_clk_pol = 0x0, + }; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0021-mt9t111-Fix-max-supported-xclk.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0021-mt9t111-Fix-max-supported-xclk.patch new file mode 100644 index 0000000..04ae8e5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0021-mt9t111-Fix-max-supported-xclk.patch @@ -0,0 +1,28 @@ +From f32acfd90df92c93328c093c2414f6a11b98ce57 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 17:43:23 -0500 +Subject: [PATCH 21/75] mt9t111: Fix max supported xclk + +According to Aptina documentation, the max should be 54 MHz, not 75 MHz. + +Signed-off-by: Sergio Aguirre +--- + include/media/mt9t111.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h +index aae3f99..cd34885 100644 +--- a/include/media/mt9t111.h ++++ b/include/media/mt9t111.h +@@ -42,7 +42,7 @@ + /*i2c adress for MT9T111*/ + #define MT9T111_I2C_ADDR (0x78 >> 1) + +-#define MT9T111_CLK_MAX (75000000) /* 75MHz */ ++#define MT9T111_CLK_MAX (54000000) /* 54MHz */ + #define MT9T111_CLK_MIN (6000000) /* 6Mhz */ + + #define MT9T111_I2C_CONFIG (1) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0022-omap3beagle-camera-Clarify-regulators-names.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0022-omap3beagle-camera-Clarify-regulators-names.patch new file mode 100644 index 0000000..056295c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0022-omap3beagle-camera-Clarify-regulators-names.patch @@ -0,0 +1,103 @@ +From b5058c1ca4af6076dff7e1f592f871030ba31a95 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 17:53:55 -0500 +Subject: [PATCH 22/75] omap3beagle: camera: Clarify regulators names + +Changed: + - beagle_mt9t111_reg1 -> beagle_mt9t111_1_8v + - beagle_mt9t111_reg2 -> beagle_mt9t111_2_8v + +To help clarify sequence. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 42 ++++++++++++------------ + 1 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 529a6be..6babaf3 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -51,8 +51,8 @@ + + #define ISP_MT9T111_MCLK 216000000 + +-static struct regulator *beagle_mt9t111_reg1; +-static struct regulator *beagle_mt9t111_reg2; ++static struct regulator *beagle_mt9t111_1_8v; ++static struct regulator *beagle_mt9t111_2_8v; + + #if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + static struct isp_interface_config mt9t111_if_config = { +@@ -167,10 +167,10 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + case V4L2_POWER_STANDBY: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + +- if (regulator_is_enabled(beagle_mt9t111_reg1)) +- regulator_disable(beagle_mt9t111_reg1); +- if (regulator_is_enabled(beagle_mt9t111_reg2)) +- regulator_disable(beagle_mt9t111_reg2); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v)) ++ regulator_disable(beagle_mt9t111_1_8v); ++ if (regulator_is_enabled(beagle_mt9t111_2_8v)) ++ regulator_disable(beagle_mt9t111_2_8v); + break; + + case V4L2_POWER_ON: +@@ -181,8 +181,8 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + #endif + + /* turn on analog power */ +- regulator_enable(beagle_mt9t111_reg1); +- regulator_enable(beagle_mt9t111_reg2); ++ regulator_enable(beagle_mt9t111_1_8v); ++ regulator_enable(beagle_mt9t111_2_8v); + udelay(100); + + break; +@@ -212,16 +212,16 @@ static int beagle_cam_probe(struct platform_device *pdev) + { + int err; + +- beagle_mt9t111_reg1 = regulator_get(&pdev->dev, "vaux3_1"); +- if (IS_ERR(beagle_mt9t111_reg1)) { ++ beagle_mt9t111_1_8v = regulator_get(&pdev->dev, "vaux3_1"); ++ if (IS_ERR(beagle_mt9t111_1_8v)) { + dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); +- return PTR_ERR(beagle_mt9t111_reg1); ++ return PTR_ERR(beagle_mt9t111_1_8v); + } +- beagle_mt9t111_reg2 = regulator_get(&pdev->dev, "vaux4_1"); +- if (IS_ERR(beagle_mt9t111_reg2)) { ++ beagle_mt9t111_2_8v = regulator_get(&pdev->dev, "vaux4_1"); ++ if (IS_ERR(beagle_mt9t111_2_8v)) { + dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +- regulator_put(beagle_mt9t111_reg1); +- return PTR_ERR(beagle_mt9t111_reg2); ++ regulator_put(beagle_mt9t111_1_8v); ++ return PTR_ERR(beagle_mt9t111_2_8v); + } + + printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); +@@ -231,12 +231,12 @@ static int beagle_cam_probe(struct platform_device *pdev) + + static int beagle_cam_remove(struct platform_device *pdev) + { +- if (regulator_is_enabled(beagle_mt9t111_reg1)) +- regulator_disable(beagle_mt9t111_reg1); +- regulator_put(beagle_mt9t111_reg1); +- if (regulator_is_enabled(beagle_mt9t111_reg2)) +- regulator_disable(beagle_mt9t111_reg2); +- regulator_put(beagle_mt9t111_reg2); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v)) ++ regulator_disable(beagle_mt9t111_1_8v); ++ regulator_put(beagle_mt9t111_1_8v); ++ if (regulator_is_enabled(beagle_mt9t111_2_8v)) ++ regulator_disable(beagle_mt9t111_2_8v); ++ regulator_put(beagle_mt9t111_2_8v); + + return 0; + } +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0023-omap3beagle-camera-Fix-powerup-sequence.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0023-omap3beagle-camera-Fix-powerup-sequence.patch new file mode 100644 index 0000000..085c80c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0023-omap3beagle-camera-Fix-powerup-sequence.patch @@ -0,0 +1,103 @@ +From 294459d9500c75256cff282f441b6cf68077a3e9 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 24 Jun 2010 18:21:52 -0500 +Subject: [PATCH 23/75] omap3beagle: camera: Fix powerup sequence + +The powerup sequence was very incomplete. After revisiting the +Aptina developer's guide, the resulting powerup sequence is followed. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 49 ++++++++++++++++++++++-- + 1 files changed, 45 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 6babaf3..792c48d 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -51,6 +51,8 @@ + + #define ISP_MT9T111_MCLK 216000000 + ++#define LEOPARD_RESET_GPIO 98 ++ + static struct regulator *beagle_mt9t111_1_8v; + static struct regulator *beagle_mt9t111_2_8v; + +@@ -174,16 +176,42 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + break; + + case V4L2_POWER_ON: +- isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); +- + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); + #endif + +- /* turn on analog power */ ++ /* Set RESET_BAR to 0 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 0); ++ ++ /* turn on VDD */ + regulator_enable(beagle_mt9t111_1_8v); ++ ++ mdelay(1); ++ ++ /* turn on VDD_IO */ + regulator_enable(beagle_mt9t111_2_8v); +- udelay(100); ++ ++ mdelay(50); ++ ++ /* Enable EXTCLK */ ++ isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); ++ ++ /* ++ * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): ++ * ((1000000 * 70) / 6000000) = aprox 12 us. ++ */ ++ ++ udelay(12); ++ ++ /* Set RESET_BAR to 1 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 1); ++ ++ /* ++ * Wait at least 100 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): ++ * ((1000000 * 100) / 6000000) = aprox 17 us. ++ */ ++ ++ udelay(17); + + break; + +@@ -224,6 +252,17 @@ static int beagle_cam_probe(struct platform_device *pdev) + return PTR_ERR(beagle_mt9t111_2_8v); + } + ++ if (gpio_request(LEOPARD_RESET_GPIO, "cam_rst") != 0) { ++ dev_err(&pdev->dev, "Could not request GPIO %d", ++ LEOPARD_RESET_GPIO); ++ regulator_put(beagle_mt9t111_2_8v); ++ regulator_put(beagle_mt9t111_1_8v); ++ return -ENODEV; ++ } ++ ++ /* set to output mode, default value 0 */ ++ gpio_direction_output(LEOPARD_RESET_GPIO, 0); ++ + printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); + + return 0; +@@ -238,6 +277,8 @@ static int beagle_cam_remove(struct platform_device *pdev) + regulator_disable(beagle_mt9t111_2_8v); + regulator_put(beagle_mt9t111_2_8v); + ++ gpio_free(LEOPARD_RESET_GPIO); ++ + return 0; + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0024-omap3beagle-camera-Change-vaux4-to-1.8v.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0024-omap3beagle-camera-Change-vaux4-to-1.8v.patch new file mode 100644 index 0000000..5897545 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0024-omap3beagle-camera-Change-vaux4-to-1.8v.patch @@ -0,0 +1,32 @@ +From 967227a235ddafbc5a5391093e95a12972e93e9d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 11:24:07 -0500 +Subject: [PATCH 24/75] omap3beagle: camera: Change vaux4 to 1.8v + +Both voltage sources seem to need 1.8v. + +After this, sensor is detected :) + +Signed-off-by: Sergio Aguirre +--- + 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 3d4b0bc..09e8459 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -446,8 +446,8 @@ static struct regulator_init_data beagle_vaux3 = { + /* VAUX4 for CAM_2V8 */ + static struct regulator_init_data beagle_vaux4 = { + .constraints = { +- .min_uV = 2800000, +- .max_uV = 2800000, ++ .min_uV = 1800000, ++ .max_uV = 1800000, + .apply_uV = true, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0025-omap3beagle-camera-Rename-regulators-to-match-actual.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0025-omap3beagle-camera-Rename-regulators-to-match-actual.patch new file mode 100644 index 0000000..0f930f5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0025-omap3beagle-camera-Rename-regulators-to-match-actual.patch @@ -0,0 +1,110 @@ +From f5bc21e02cfc66734591104ec1b58556dccfed70 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 12:03:59 -0500 +Subject: [PATCH 25/75] omap3beagle: camera: Rename regulators to match actual voltage levels + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 46 ++++++++++++------------ + 1 files changed, 23 insertions(+), 23 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 792c48d..8a4b7bc 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -53,8 +53,8 @@ + + #define LEOPARD_RESET_GPIO 98 + +-static struct regulator *beagle_mt9t111_1_8v; +-static struct regulator *beagle_mt9t111_2_8v; ++static struct regulator *beagle_mt9t111_1_8v1; ++static struct regulator *beagle_mt9t111_1_8v2; + + #if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) + static struct isp_interface_config mt9t111_if_config = { +@@ -169,10 +169,10 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + case V4L2_POWER_STANDBY: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + +- if (regulator_is_enabled(beagle_mt9t111_1_8v)) +- regulator_disable(beagle_mt9t111_1_8v); +- if (regulator_is_enabled(beagle_mt9t111_2_8v)) +- regulator_disable(beagle_mt9t111_2_8v); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v1)) ++ regulator_disable(beagle_mt9t111_1_8v1); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v2)) ++ regulator_disable(beagle_mt9t111_1_8v2); + break; + + case V4L2_POWER_ON: +@@ -184,12 +184,12 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + gpio_set_value(LEOPARD_RESET_GPIO, 0); + + /* turn on VDD */ +- regulator_enable(beagle_mt9t111_1_8v); ++ regulator_enable(beagle_mt9t111_1_8v1); + + mdelay(1); + + /* turn on VDD_IO */ +- regulator_enable(beagle_mt9t111_2_8v); ++ regulator_enable(beagle_mt9t111_1_8v2); + + mdelay(50); + +@@ -240,23 +240,23 @@ static int beagle_cam_probe(struct platform_device *pdev) + { + int err; + +- beagle_mt9t111_1_8v = regulator_get(&pdev->dev, "vaux3_1"); +- if (IS_ERR(beagle_mt9t111_1_8v)) { ++ beagle_mt9t111_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); ++ if (IS_ERR(beagle_mt9t111_1_8v1)) { + dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); +- return PTR_ERR(beagle_mt9t111_1_8v); ++ return PTR_ERR(beagle_mt9t111_1_8v1); + } +- beagle_mt9t111_2_8v = regulator_get(&pdev->dev, "vaux4_1"); +- if (IS_ERR(beagle_mt9t111_2_8v)) { ++ beagle_mt9t111_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); ++ if (IS_ERR(beagle_mt9t111_1_8v2)) { + dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +- regulator_put(beagle_mt9t111_1_8v); +- return PTR_ERR(beagle_mt9t111_2_8v); ++ regulator_put(beagle_mt9t111_1_8v1); ++ return PTR_ERR(beagle_mt9t111_1_8v2); + } + + if (gpio_request(LEOPARD_RESET_GPIO, "cam_rst") != 0) { + dev_err(&pdev->dev, "Could not request GPIO %d", + LEOPARD_RESET_GPIO); +- regulator_put(beagle_mt9t111_2_8v); +- regulator_put(beagle_mt9t111_1_8v); ++ regulator_put(beagle_mt9t111_1_8v2); ++ regulator_put(beagle_mt9t111_1_8v1); + return -ENODEV; + } + +@@ -270,12 +270,12 @@ static int beagle_cam_probe(struct platform_device *pdev) + + static int beagle_cam_remove(struct platform_device *pdev) + { +- if (regulator_is_enabled(beagle_mt9t111_1_8v)) +- regulator_disable(beagle_mt9t111_1_8v); +- regulator_put(beagle_mt9t111_1_8v); +- if (regulator_is_enabled(beagle_mt9t111_2_8v)) +- regulator_disable(beagle_mt9t111_2_8v); +- regulator_put(beagle_mt9t111_2_8v); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v1)) ++ regulator_disable(beagle_mt9t111_1_8v1); ++ regulator_put(beagle_mt9t111_1_8v1); ++ if (regulator_is_enabled(beagle_mt9t111_1_8v2)) ++ regulator_disable(beagle_mt9t111_1_8v2); ++ regulator_put(beagle_mt9t111_1_8v2); + + gpio_free(LEOPARD_RESET_GPIO); + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0026-omap3beagle-camera-Complement-remainig-sensor-hw-con.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0026-omap3beagle-camera-Complement-remainig-sensor-hw-con.patch new file mode 100644 index 0000000..b4357a5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0026-omap3beagle-camera-Complement-remainig-sensor-hw-con.patch @@ -0,0 +1,37 @@ +From 871c9ac8687787ff29c5445325acf1ca388b9563 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 12:04:48 -0500 +Subject: [PATCH 26/75] omap3beagle: camera: Complement remainig sensor hw config settings + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 8a4b7bc..b0148d6 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -57,6 +57,10 @@ static struct regulator *beagle_mt9t111_1_8v1; + static struct regulator *beagle_mt9t111_1_8v2; + + #if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++ ++/* Arbitrary memory handling limit */ ++#define MT9T111_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN(2048 * 1536 * 4) ++ + static struct isp_interface_config mt9t111_if_config = { + .ccdc_par_ser = ISP_PARLL, + .dataline_shift = 0x0, +@@ -125,6 +129,8 @@ static struct omap34xxcam_hw_config mt9t111_hwc = { + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 1, ++ .u.sensor.capture_mem = MT9T111_BIGGEST_FRAME_BYTE_SIZE * 2, ++ .u.sensor.ival_default = { 1, 10 }, + }; + #endif + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0027-mt9t111-Fix-detect-function-retval-and-cleanup-print.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0027-mt9t111-Fix-detect-function-retval-and-cleanup-print.patch new file mode 100644 index 0000000..537628a --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0027-mt9t111-Fix-detect-function-retval-and-cleanup-print.patch @@ -0,0 +1,48 @@ +From a5693b7d9b22036323edf1e4200e6e59f67e8f9d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 13:43:54 -0500 +Subject: [PATCH 27/75] mt9t111: Fix detect function retval and cleanup prints + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t111.c | 8 +++----- + 1 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +index 6a7b2c0..08122ff 100644 +--- a/drivers/media/video/mt9t111.c ++++ b/drivers/media/video/mt9t111.c +@@ -221,7 +221,6 @@ mt9t111_detect(struct i2c_client *client) + /* chip ID is at address 0 */ + if (mt9t111_read_reg(client, MT9T111_CHIP_ID, &val) < 0) + return -ENODEV; +- dev_info(&client->dev, "model id detected 0x%x\n", val); + + if (val != MT9T111_CHIP_ID_VALUE) { + dev_warn(&client->dev, "model id mismatch received 0x%x" +@@ -231,7 +230,7 @@ mt9t111_detect(struct i2c_client *client) + return -ENODEV; + } + +- return 0; ++ return (int)val; + + } + +@@ -390,11 +389,10 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + sensor->state = SENSOR_NOT_DETECTED; + return rval; + } +- mt9t111_loaddefault(c); ++ dev_info(&c->dev, "chip version 0x%02x detected\n", rval); + sensor->state = SENSOR_DETECTED; + sensor->ver = rval; +- pr_info("mt9t111" " chip version 0x%02x detected\n", +- sensor->ver); ++ mt9t111_loaddefault(c); + } + return 0; + } +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0028-omap3beagle-camera-Set-padconf-settings-in-cam-init.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0028-omap3beagle-camera-Set-padconf-settings-in-cam-init.patch new file mode 100644 index 0000000..6e77bfd --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0028-omap3beagle-camera-Set-padconf-settings-in-cam-init.patch @@ -0,0 +1,66 @@ +From 7417633c6dbf657cf3778800d59e94a9b7bf6942 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 16:01:00 -0500 +Subject: [PATCH 28/75] omap3beagle: camera: Set padconf settings in cam init + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 35 ++++++++++++++++++++++++ + 1 files changed, 35 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index b0148d6..75471f2 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -34,6 +34,7 @@ + + #include + #include ++#include + + #include + #include +@@ -285,6 +286,40 @@ static int beagle_cam_remove(struct platform_device *pdev) + + gpio_free(LEOPARD_RESET_GPIO); + ++ /* MUX init */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x10C); /* CAM_HS */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x10E); /* CAM_VS */ ++ omap_ctrl_writew(OMAP_PIN_OUTPUT | OMAP_MUX_MODE0, ++ 0x110); /* CAM_XCLKA */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x112); /* CAM_PCLK */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x116); /* CAM_D0 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x118); /* CAM_D1 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11A); /* CAM_D2 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11C); /* CAM_D3 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11E); /* CAM_D4 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x120); /* CAM_D5 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x122); /* CAM_D6 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x124); /* CAM_D7 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x126); /* CAM_D8 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x128); /* CAM_D9 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x12A); /* CAM_D10 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x12C); /* CAM_D11 */ ++ + return 0; + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0029-omap3beagle-camera-only-register-camera-driver-for-3.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0029-omap3beagle-camera-only-register-camera-driver-for-3.patch new file mode 100644 index 0000000..4b25b59 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0029-omap3beagle-camera-only-register-camera-driver-for-3.patch @@ -0,0 +1,31 @@ +From 6cce810371e763a367b69a38e53635657804694c Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 27 Jun 2010 16:11:39 +0200 +Subject: [PATCH 29/75] omap3beagle: camera: only register camera driver for 36xx based SoCs + +This is a workaround for the bootcrash when used on 35xx based beagleboards. + +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 75471f2..8faa437 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -355,7 +355,9 @@ static struct platform_driver beagle_cam_driver = { + */ + int __init omap3beaglelmb_init(void) + { +- platform_driver_register(&beagle_cam_driver); +- return 0; ++ if (cpu_is_omap3630()) { ++ platform_driver_register(&beagle_cam_driver); ++ } ++ return 0; + } + late_initcall(omap3beaglelmb_init); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0030-WIP-mt9t111-Work-in-progress-for-camera-enablement.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0030-WIP-mt9t111-Work-in-progress-for-camera-enablement.patch new file mode 100644 index 0000000..c223696 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0030-WIP-mt9t111-Work-in-progress-for-camera-enablement.patch @@ -0,0 +1,53 @@ +From 05232a5ba68cab14877a4032cc7995c15254195d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 25 Jun 2010 16:01:47 -0500 +Subject: [PATCH 30/75] WIP: mt9t111: Work in progress for camera enablement + +This is changing so far: +- Remove useless printk's in enum_frameinterval calls. +- Call mt9t111_loaddefault instead of mt9t111_configure dummy function. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t111.c | 11 +---------- + 1 files changed, 1 insertions(+), 10 deletions(-) + +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +index 08122ff..10080af 100644 +--- a/drivers/media/video/mt9t111.c ++++ b/drivers/media/video/mt9t111.c +@@ -288,14 +288,6 @@ static int ioctl_enum_frameintervals(struct v4l2_int_device *s, + { + int ifmt; + +- printk(KERN_INFO "entering ioctl_enum_frameintervals\n"); +- printk(KERN_INFO "index = %d, pixel_format = 0x%x," +- " width = %d, height = %d\n", +- frmi->index, frmi->pixel_format, +- frmi->width, frmi->height); +- printk(KERN_INFO "mt9t111 format = 0x%x\n", +- mt9t111_formats[0].pixelformat); +- + if (frmi->index >= NUM_CAPTURE_FRAMEINTERVALS) + return -EINVAL; + +@@ -379,7 +371,7 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + } + + if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_DETECTED)) +- mt9t111_configure(s); ++ mt9t111_loaddefault(c); + + if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_NOT_DETECTED)) { + rval = mt9t111_detect(c); +@@ -392,7 +384,6 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + dev_info(&c->dev, "chip version 0x%02x detected\n", rval); + sensor->state = SENSOR_DETECTED; + sensor->ver = rval; +- mt9t111_loaddefault(c); + } + return 0; + } +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0031-BeagleXM-Cam-Add-support-for-MT9V113-VGA-Sensor.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0031-BeagleXM-Cam-Add-support-for-MT9V113-VGA-Sensor.patch new file mode 100644 index 0000000..1c19b77 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0031-BeagleXM-Cam-Add-support-for-MT9V113-VGA-Sensor.patch @@ -0,0 +1,2441 @@ +From 4080bcdb05f5fdb51a16faa011a68205f0cb7482 Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Wed, 7 Jul 2010 11:55:43 +0530 +Subject: [PATCH 31/75] BeagleXM:Cam: Add support for MT9V113 VGA Sensor + +This patch replaces the MT9T111 to MT9V113 sensor. +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 132 ++- + arch/arm/mach-omap2/board-omap3beagle.c | 32 +- + drivers/media/video/Kconfig | 10 + + drivers/media/video/Makefile | 1 + + drivers/media/video/mt9v113.c | 1522 ++++++++++++++++++++++++ + drivers/media/video/mt9v113_regs.h | 294 +++++ + include/media/mt9v113.h | 83 ++ + include/media/v4l2-int-device.h | 27 + + 8 files changed, 2023 insertions(+), 78 deletions(-) + create mode 100644 drivers/media/video/mt9v113.c + create mode 100644 drivers/media/video/mt9v113_regs.h + create mode 100644 include/media/mt9v113.h + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 8faa437..6c06265 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -37,7 +37,7 @@ + #include + + #include +-#include ++#include + + /* Include V4L2 ISP-Camera driver related header file */ + #include <../drivers/media/video/omap34xxcam.h> +@@ -50,99 +50,99 @@ + + #define CAM_USE_XCLKA 0 + +-#define ISP_MT9T111_MCLK 216000000 ++#define ISP_MT9V113_MCLK 216000000 + + #define LEOPARD_RESET_GPIO 98 + +-static struct regulator *beagle_mt9t111_1_8v1; +-static struct regulator *beagle_mt9t111_1_8v2; ++static struct regulator *beagle_mt9v113_1_8v1; ++static struct regulator *beagle_mt9v113_1_8v2; + +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) + + /* Arbitrary memory handling limit */ +-#define MT9T111_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN(2048 * 1536 * 4) ++#define MT9V113_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN(2048 * 1536 * 4) + +-static struct isp_interface_config mt9t111_if_config = { +- .ccdc_par_ser = ISP_PARLL, ++static struct isp_interface_config mt9v113_if_config = { ++ .ccdc_par_ser = ISP_PARLL, + .dataline_shift = 0x0, + .hsvs_syncdetect = ISPCTRL_SYNC_DETECT_VSRISE, + .strobe = 0x0, + .prestrobe = 0x0, + .shutter = 0x0, +- .cam_mclk = ISP_MT9T111_MCLK, ++ .cam_mclk = ISP_MT9V113_MCLK, + .wenlog = ISPCCDC_CFG_WENLOG_AND, + .wait_hs_vs = 2, + .u.par.par_bridge = 0x1, + .u.par.par_clk_pol = 0x0, + }; + +-static struct v4l2_ifparm mt9t111_ifparm_s = { ++static struct v4l2_ifparm mt9v113_ifparm_s = { + #if 1 +- .if_type = V4L2_IF_TYPE_RAW, ++ .if_type = V4L2_IF_TYPE_RAW, + .u = { +- .raw = { ++ .raw = { + .frame_start_on_rising_vs = 1, + .bt_sync_correct = 0, + .swap = 0, + .latch_clk_inv = 0, + .nobt_hs_inv = 0, /* active high */ + .nobt_vs_inv = 0, /* active high */ +- .clock_min = MT9T111_CLK_MIN, +- .clock_max = MT9T111_CLK_MAX, ++ .clock_min = MT9V113_CLK_MIN, ++ .clock_max = MT9V113_CLK_MAX, + }, + }, +-#else +- .if_type = V4L2_IF_TYPE_YCbCr, ++#else ++ .if_type = V4L2_IF_TYPE_YCbCr, + .u = { +- .ycbcr = { ++ .ycbcr = { + .frame_start_on_rising_vs = 1, + .bt_sync_correct = 0, + .swap = 0, + .latch_clk_inv = 0, + .nobt_hs_inv = 0, /* active high */ + .nobt_vs_inv = 0, /* active high */ +- .clock_min = MT9T111_CLK_MIN, +- .clock_max = MT9T111_CLK_MAX, ++ .clock_min = MT9V113_CLK_MIN, ++ .clock_max = MT9V113_CLK_MAX, + }, + }, + #endif + }; + + /** +- * @brief mt9t111_ifparm - Returns the mt9t111 interface parameters ++ * @brief mt9v113_ifparm - Returns the mt9v113 interface parameters + * + * @param p - pointer to v4l2_ifparm structure + * + * @return result of operation - 0 is success + */ +-static int mt9t111_ifparm(struct v4l2_ifparm *p) ++static int mt9v113_ifparm(struct v4l2_ifparm *p) + { + if (p == NULL) + return -EINVAL; + +- *p = mt9t111_ifparm_s; ++ *p = mt9v113_ifparm_s; + return 0; + } + + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +-static struct omap34xxcam_hw_config mt9t111_hwc = { ++static struct omap34xxcam_hw_config mt9v113_hwc = { + .dev_index = 0, + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 1, +- .u.sensor.capture_mem = MT9T111_BIGGEST_FRAME_BYTE_SIZE * 2, ++ .u.sensor.capture_mem = MT9V113_BIGGEST_FRAME_BYTE_SIZE * 2, + .u.sensor.ival_default = { 1, 10 }, + }; + #endif + + /** +- * @brief mt9t111_set_prv_data - Returns mt9t111 omap34xx driver private data ++ * @brief mt9v113_set_prv_data - Returns mt9v113 omap34xx driver private data + * + * @param priv - pointer to omap34xxcam_hw_config structure + * + * @return result of operation - 0 is success + */ +-static int mt9t111_set_prv_data(void *priv) ++static int mt9v113_set_prv_data(void *priv) + { + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + struct omap34xxcam_hw_config *hwc = priv; +@@ -150,10 +150,10 @@ static int mt9t111_set_prv_data(void *priv) + if (priv == NULL) + return -EINVAL; + +- hwc->u.sensor = mt9t111_hwc.u.sensor; +- hwc->dev_index = mt9t111_hwc.dev_index; +- hwc->dev_minor = mt9t111_hwc.dev_minor; +- hwc->dev_type = mt9t111_hwc.dev_type; ++ hwc->u.sensor = mt9v113_hwc.u.sensor; ++ hwc->dev_index = mt9v113_hwc.dev_index; ++ hwc->dev_minor = mt9v113_hwc.dev_minor; ++ hwc->dev_type = mt9v113_hwc.dev_type; + return 0; + #else + return -EINVAL; +@@ -161,13 +161,13 @@ static int mt9t111_set_prv_data(void *priv) + } + + /** +- * @brief mt9t111_power_set - Power-on or power-off TVP5146 device ++ * @brief mt9v113_power_set - Power-on or power-off TVP5146 device + * + * @param power - enum, Power on/off, resume/standby + * + * @return result of operation - 0 is success + */ +-static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) ++static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + { + struct omap34xxcam_videodev *vdev = s->u.slave->master->priv; + +@@ -176,32 +176,32 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + case V4L2_POWER_STANDBY: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + +- if (regulator_is_enabled(beagle_mt9t111_1_8v1)) +- regulator_disable(beagle_mt9t111_1_8v1); +- if (regulator_is_enabled(beagle_mt9t111_1_8v2)) +- regulator_disable(beagle_mt9t111_1_8v2); ++ if (regulator_is_enabled(beagle_mt9v113_1_8v1)) ++ regulator_disable(beagle_mt9v113_1_8v1); ++ if (regulator_is_enabled(beagle_mt9v113_1_8v2)) ++ regulator_disable(beagle_mt9v113_1_8v2); + break; + + case V4L2_POWER_ON: + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +- isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); ++ isp_configure_interface(vdev->cam->isp, &mt9v113_if_config); + #endif + + /* Set RESET_BAR to 0 */ + gpio_set_value(LEOPARD_RESET_GPIO, 0); + + /* turn on VDD */ +- regulator_enable(beagle_mt9t111_1_8v1); ++ regulator_enable(beagle_mt9v113_1_8v1); + + mdelay(1); + + /* turn on VDD_IO */ +- regulator_enable(beagle_mt9t111_1_8v2); ++ regulator_enable(beagle_mt9v113_1_8v2); + + mdelay(50); + + /* Enable EXTCLK */ +- isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); ++ isp_set_xclk(vdev->cam->isp, MT9V113_CLK_MIN, CAM_USE_XCLKA); + + /* + * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): +@@ -229,44 +229,48 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + return 0; + } + +-struct mt9t111_platform_data mt9t111_pdata = { ++struct mt9v113_platform_data mt9v113_pdata = { + .master = "omap34xxcam", +- .power_set = mt9t111_power_set, +- .priv_data_set = mt9t111_set_prv_data, +- .ifparm = mt9t111_ifparm, ++ .power_set = mt9v113_power_set, ++ .priv_data_set = mt9v113_set_prv_data, ++ .ifparm = mt9v113_ifparm, + /* Some interface dependent params */ + .clk_polarity = 0, /* data clocked out on falling edge */ + .hs_polarity = 1, /* 0 - Active low, 1- Active high */ + .vs_polarity = 1, /* 0 - Active low, 1- Active high */ + }; + +-#endif /* #ifdef CONFIG_VIDEO_MT9T111 */ ++#endif /* #ifdef CONFIG_VIDEO_MT9V113 */ + + + static int beagle_cam_probe(struct platform_device *pdev) + { + int err; + +- beagle_mt9t111_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); +- if (IS_ERR(beagle_mt9t111_1_8v1)) { ++ printk("%s:%d\n", __func__, __LINE__); ++ beagle_mt9v113_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); ++ if (IS_ERR(beagle_mt9v113_1_8v1)) { + dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); +- return PTR_ERR(beagle_mt9t111_1_8v1); ++ return PTR_ERR(beagle_mt9v113_1_8v1); + } +- beagle_mt9t111_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); +- if (IS_ERR(beagle_mt9t111_1_8v2)) { ++ printk("%s:%d\n", __func__, __LINE__); ++ beagle_mt9v113_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); ++ if (IS_ERR(beagle_mt9v113_1_8v2)) { + dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +- regulator_put(beagle_mt9t111_1_8v1); +- return PTR_ERR(beagle_mt9t111_1_8v2); ++ regulator_put(beagle_mt9v113_1_8v1); ++ return PTR_ERR(beagle_mt9v113_1_8v2); + } + ++ printk("%s:%d\n", __func__, __LINE__); + if (gpio_request(LEOPARD_RESET_GPIO, "cam_rst") != 0) { + dev_err(&pdev->dev, "Could not request GPIO %d", + LEOPARD_RESET_GPIO); +- regulator_put(beagle_mt9t111_1_8v2); +- regulator_put(beagle_mt9t111_1_8v1); ++ regulator_put(beagle_mt9v113_1_8v2); ++ regulator_put(beagle_mt9v113_1_8v1); + return -ENODEV; + } + ++ printk("%s:%d\n", __func__, __LINE__); + /* set to output mode, default value 0 */ + gpio_direction_output(LEOPARD_RESET_GPIO, 0); + +@@ -277,12 +281,13 @@ static int beagle_cam_probe(struct platform_device *pdev) + + static int beagle_cam_remove(struct platform_device *pdev) + { +- if (regulator_is_enabled(beagle_mt9t111_1_8v1)) +- regulator_disable(beagle_mt9t111_1_8v1); +- regulator_put(beagle_mt9t111_1_8v1); +- if (regulator_is_enabled(beagle_mt9t111_1_8v2)) +- regulator_disable(beagle_mt9t111_1_8v2); +- regulator_put(beagle_mt9t111_1_8v2); ++ printk("%s:%d\n", __func__, __LINE__); ++ if (regulator_is_enabled(beagle_mt9v113_1_8v1)) ++ regulator_disable(beagle_mt9v113_1_8v1); ++ regulator_put(beagle_mt9v113_1_8v1); ++ if (regulator_is_enabled(beagle_mt9v113_1_8v2)) ++ regulator_disable(beagle_mt9v113_1_8v2); ++ regulator_put(beagle_mt9v113_1_8v2); + + gpio_free(LEOPARD_RESET_GPIO); + +@@ -355,9 +360,12 @@ static struct platform_driver beagle_cam_driver = { + */ + int __init omap3beaglelmb_init(void) + { ++ printk("%s:%d\n", __func__, __LINE__); + if (cpu_is_omap3630()) { +- platform_driver_register(&beagle_cam_driver); ++ printk("%s:%d\n", __func__, __LINE__); ++ platform_driver_register(&beagle_cam_driver); + } +- return 0; ++ printk("%s:%d\n", __func__, __LINE__); ++ return 0; + } + late_initcall(omap3beaglelmb_init); +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 09e8459..6835c1a 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -71,10 +71,10 @@ static struct omap_opp * _omap35x_l3_rate_table = NULL; + static struct omap_opp * _omap37x_l3_rate_table = NULL; + #endif /* CONFIG_PM */ + +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) + #include +-#include +-extern struct mt9t111_platform_data mt9t111_pdata; ++#include ++extern struct mt9v113_platform_data mt9v113_pdata; + #endif + + #define GPMC_CS0_BASE 0x60 +@@ -159,7 +159,7 @@ static void __init omap3beagle_ks8851_init(void) + 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)); + } +@@ -369,9 +369,9 @@ static int beagle_twl_gpio_setup(struct device *dev, + */ + + if (cpu_is_omap3630()) { +- /* Power on DVI, Serial and PWR led */ ++ /* Power on DVI, Serial and PWR led */ + gpio_request(gpio + 1, "nDVI_PWR_EN"); +- gpio_direction_output(gpio + 1, 0); ++ gpio_direction_output(gpio + 1, 0); + + /* Power on camera interface */ + gpio_request(gpio + 2, "CAM_EN"); +@@ -560,7 +560,7 @@ static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { + }, + }; + +- ++ + #if defined(CONFIG_EEPROM_AT24) || defined(CONFIG_EEPROM_AT24_MODULE) + #include + +@@ -594,10 +594,10 @@ static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; + #endif + + static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) + { +- I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), +- .platform_data = &mt9t111_pdata, ++ I2C_BOARD_INFO("mt9v113", MT9V113_I2C_ADDR), ++ .platform_data = &mt9v113_pdata, + }, + #endif + }; +@@ -606,7 +606,7 @@ static int __init omap3_beagle_i2c_init(void) + { + omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo, + ARRAY_SIZE(beagle_i2c1_boardinfo)); +- if(!strcmp(expansionboard_name, "zippy") || !strcmp(expansionboard_name, "zippy2")) ++ 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, +@@ -681,7 +681,7 @@ static struct spi_board_info beaglefpga_mcspi_board_info[] = { + .modalias = "spidev", + .max_speed_hz = 48000000, //48 Mbps + .bus_num = 4, +- .chip_select = 0, ++ .chip_select = 0, + .mode = SPI_MODE_1, + }, + }; +@@ -835,7 +835,7 @@ static void __init omap3_beagle_init(void) + /* REVISIT leave DVI powered down until it's needed ... */ + gpio_direction_output(170, true); + +- if(!strcmp(expansionboard_name, "zippy")) ++ if(!strcmp(expansionboard_name, "zippy")) + { + printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n"); + omap3beagle_enc28j60_init(); +@@ -843,8 +843,8 @@ static void __init omap3_beagle_init(void) + mmc[1].gpio_wp = 141; + mmc[1].gpio_cd = 162; + } +- +- if(!strcmp(expansionboard_name, "zippy2")) ++ ++ if(!strcmp(expansionboard_name, "zippy2")) + { + printk(KERN_INFO "Beagle expansionboard: initializing ks_8851\n"); + omap3beagle_ks8851_init(); +@@ -885,7 +885,7 @@ static void __init omap3_beagle_init(void) + } + + if(!strcmp(expansionboard_name, "beaglefpga")) +- { ++ { + printk(KERN_INFO "Beagle expansionboard: Using McSPI for SPI\n"); + beaglefpga_init_spi(); + } +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index f67ed46..c14d758 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -329,6 +329,16 @@ config VIDEO_MT9V011 + mt0v011 1.3 Mpixel camera. It currently only works with the + em28xx driver. + ++config VIDEO_MT9V113 ++ tristate "Aptina MT9V113 VGA CMOS IMAGE SENSOR" ++ depends on VIDEO_V4L2 && I2C ++ ---help--- ++ This is a Video4Linux2 sensor-level driver for the Aptina MT9V113 ++ image sensor. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called mt9v113. ++ + config VIDEO_TCM825X + tristate "TCM825x camera sensor support" + depends on I2C && VIDEO_V4L2 +diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile +index 31688bf..763c157 100644 +--- a/drivers/media/video/Makefile ++++ b/drivers/media/video/Makefile +@@ -75,6 +75,7 @@ obj-$(CONFIG_VIDEO_OV7670) += ov7670.o + obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o + obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o + obj-$(CONFIG_VIDEO_MT9V011) += mt9v011.o ++obj-$(CONFIG_VIDEO_MT9V113) += mt9v113.o + + obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o + obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +new file mode 100644 +index 0000000..755a88a +--- /dev/null ++++ b/drivers/media/video/mt9v113.c +@@ -0,0 +1,1522 @@ ++/* ++ * drivers/media/video/mt9v113.c ++ * ++ * Based on TI TVP5146/47 decoder driver ++ * ++ * ++ * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "mt9v113_regs.h" ++ ++/* Module Name */ ++#define MT9V113_MODULE_NAME "mt9v113" ++ ++/* Private macros for TVP */ ++#define I2C_RETRY_COUNT (5) ++#define LOCK_RETRY_COUNT (5) ++#define LOCK_RETRY_DELAY (200) ++ ++/* Debug functions */ ++static int debug = 1; ++module_param(debug, bool, 0644); ++MODULE_PARM_DESC(debug, "Debug level (0-1)"); ++ ++#define dump_reg(client, reg, val) \ ++ do { \ ++ val = mt9v113_read_reg(client, reg); \ ++ v4l_info(client, "Reg(0x%.2X): 0x%.2X\n", reg, val); \ ++ } while (0) ++ ++/** ++ * enum mt9v113_std - enum for supported standards ++ */ ++enum mt9v113_std { ++ MT9V113_STD_VGA = 0, ++ MT9V113_STD_QVGA, ++ MT9V113_STD_INVALID ++}; ++ ++/** ++ * enum mt9v113_state - enum for different decoder states ++ */ ++enum mt9v113_state { ++ STATE_NOT_DETECTED, ++ STATE_DETECTED ++}; ++ ++/** ++ * struct mt9v113_std_info - Structure to store standard informations ++ * @width: Line width in pixels ++ * @height:Number of active lines ++ * @video_std: Value to write in REG_VIDEO_STD register ++ * @standard: v4l2 standard structure information ++ */ ++struct mt9v113_std_info { ++ unsigned long width; ++ unsigned long height; ++ u8 video_std; ++ struct v4l2_standard standard; ++}; ++ ++/** ++ * struct mt9v113_decoded - decoder object ++ * @v4l2_int_device: Slave handle ++ * @pdata: Board specific ++ * @client: I2C client data ++ * @id: Entry from I2C table ++ * @ver: Chip version ++ * @state: decoder state - detected or not-detected ++ * @pix: Current pixel format ++ * @num_fmts: Number of formats ++ * @fmt_list: Format list ++ * @current_std: Current standard ++ * @num_stds: Number of standards ++ * @std_list: Standards list ++ * @route: input and output routing at chip level ++ */ ++struct mt9v113_decoder { ++ struct v4l2_int_device *v4l2_int_device; ++ const struct mt9v113_platform_data *pdata; ++ struct i2c_client *client; ++ ++ struct i2c_device_id *id; ++ ++ int ver; ++ enum mt9v113_state state; ++ ++ struct v4l2_pix_format pix; ++ int num_fmts; ++ const struct v4l2_fmtdesc *fmt_list; ++ ++ enum mt9v113_std current_std; ++ int num_stds; ++ struct mt9v113_std_info *std_list; ++ ++ struct v4l2_routing route; ++}; ++ ++/* MT9V113 register set for VGA mode */ ++static struct mt9v113_reg mt9v113_vga_reg[] = { ++ {TOK_WRITE, 0x098C, 0x2739}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0x273B}, ++ {TOK_WRITE, 0x0990, 0x027F}, ++ {TOK_WRITE, 0x098C, 0x273D}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0x273F}, ++ {TOK_WRITE, 0x0990, 0x01DF}, ++ {TOK_WRITE, 0x098C, 0x2703}, ++ {TOK_WRITE, 0x0990, 0x0280}, ++ {TOK_WRITE, 0x098C, 0x2705}, ++ {TOK_WRITE, 0x0990, 0x01E0}, ++ {TOK_WRITE, 0x098C, 0xA103}, ++ {TOK_WRITE, 0x0990, 0x0005}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_TERM, 0, 0}, ++}; ++ ++/* MT9V113 default register values */ ++static struct mt9v113_reg mt9v113_reg_list[] = { ++ {TOK_WRITE, 0x0018, 0x4028}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_WRITE, 0x001A, 0x0011}, ++ {TOK_WRITE, 0x001A, 0x0010}, ++ {TOK_WRITE, 0x0018, 0x4028}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_WRITE, 0x098C, 0x02F0}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0x02F2}, ++ {TOK_WRITE, 0x0990, 0x0210}, ++ {TOK_WRITE, 0x098C, 0x02F4}, ++ {TOK_WRITE, 0x0990, 0x001A}, ++ {TOK_WRITE, 0x098C, 0x2145}, ++ {TOK_WRITE, 0x0990, 0x02F4}, ++ {TOK_WRITE, 0x098C, 0xA134}, ++ {TOK_WRITE, 0x0990, 0x0001}, ++ {TOK_WRITE, 0x31E0, 0x0001}, ++ {TOK_WRITE, 0x001A, 0x0210}, ++ {TOK_WRITE, 0x001E, 0x0777}, ++ {TOK_WRITE, 0x0016, 0x42DF}, ++ {TOK_WRITE, 0x0014, 0x2145}, ++ {TOK_WRITE, 0x0014, 0x2145}, ++ {TOK_WRITE, 0x0010, 0x0431}, ++ {TOK_WRITE, 0x0012, 0x0000}, ++ {TOK_WRITE, 0x0014, 0x244B}, ++ {TOK_WRITE, 0x0014, 0x304B}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_WRITE, 0x0014, 0xB04A}, ++ {TOK_WRITE, 0x098C, 0xAB1F}, ++ {TOK_WRITE, 0x0990, 0x00C7}, ++ {TOK_WRITE, 0x098C, 0xAB31}, ++ {TOK_WRITE, 0x0990, 0x001E}, ++ {TOK_WRITE, 0x098C, 0x274F}, ++ {TOK_WRITE, 0x0990, 0x0004}, ++ {TOK_WRITE, 0x098C, 0x2741}, ++ {TOK_WRITE, 0x0990, 0x0004}, ++ {TOK_WRITE, 0x098C, 0xAB20}, ++ {TOK_WRITE, 0x0990, 0x0054}, ++ {TOK_WRITE, 0x098C, 0xAB21}, ++ {TOK_WRITE, 0x0990, 0x0046}, ++ {TOK_WRITE, 0x098C, 0xAB22}, ++ {TOK_WRITE, 0x0990, 0x0002}, ++ {TOK_WRITE, 0x098C, 0xAB24}, ++ {TOK_WRITE, 0x0990, 0x0005}, ++ {TOK_WRITE, 0x098C, 0x2B28}, ++ {TOK_WRITE, 0x0990, 0x170C}, ++ {TOK_WRITE, 0x098C, 0x2B2A}, ++ {TOK_WRITE, 0x0990, 0x3E80}, ++ {TOK_WRITE, 0x3210, 0x09A8}, ++ {TOK_WRITE, 0x098C, 0x2306}, ++ {TOK_WRITE, 0x0990, 0x0315}, ++ {TOK_WRITE, 0x098C, 0x2308}, ++ {TOK_WRITE, 0x0990, 0xFDDC}, ++ {TOK_WRITE, 0x098C, 0x230A}, ++ {TOK_WRITE, 0x0990, 0x003A}, ++ {TOK_WRITE, 0x098C, 0x230C}, ++ {TOK_WRITE, 0x0990, 0xFF58}, ++ {TOK_WRITE, 0x098C, 0x230E}, ++ {TOK_WRITE, 0x0990, 0x02B7}, ++ {TOK_WRITE, 0x098C, 0x2310}, ++ {TOK_WRITE, 0x0990, 0xFF31}, ++ {TOK_WRITE, 0x098C, 0x2312}, ++ {TOK_WRITE, 0x0990, 0xFF4C}, ++ {TOK_WRITE, 0x098C, 0x2314}, ++ {TOK_WRITE, 0x0990, 0xFE4C}, ++ {TOK_WRITE, 0x098C, 0x2316}, ++ {TOK_WRITE, 0x0990, 0x039E}, ++ {TOK_WRITE, 0x098C, 0x2318}, ++ {TOK_WRITE, 0x0990, 0x001C}, ++ {TOK_WRITE, 0x098C, 0x231A}, ++ {TOK_WRITE, 0x0990, 0x0039}, ++ {TOK_WRITE, 0x098C, 0x231C}, ++ {TOK_WRITE, 0x0990, 0x007F}, ++ {TOK_WRITE, 0x098C, 0x231E}, ++ {TOK_WRITE, 0x0990, 0xFF77}, ++ {TOK_WRITE, 0x098C, 0x2320}, ++ {TOK_WRITE, 0x0990, 0x000A}, ++ {TOK_WRITE, 0x098C, 0x2322}, ++ {TOK_WRITE, 0x0990, 0x0020}, ++ {TOK_WRITE, 0x098C, 0x2324}, ++ {TOK_WRITE, 0x0990, 0x001B}, ++ {TOK_WRITE, 0x098C, 0x2326}, ++ {TOK_WRITE, 0x0990, 0xFFC6}, ++ {TOK_WRITE, 0x098C, 0x2328}, ++ {TOK_WRITE, 0x0990, 0x0086}, ++ {TOK_WRITE, 0x098C, 0x232A}, ++ {TOK_WRITE, 0x0990, 0x00B5}, ++ {TOK_WRITE, 0x098C, 0x232C}, ++ {TOK_WRITE, 0x0990, 0xFEC3}, ++ {TOK_WRITE, 0x098C, 0x232E}, ++ {TOK_WRITE, 0x0990, 0x0001}, ++ {TOK_WRITE, 0x098C, 0x2330}, ++ {TOK_WRITE, 0x0990, 0xFFEF}, ++ {TOK_WRITE, 0x098C, 0xA348}, ++ {TOK_WRITE, 0x0990, 0x0008}, ++ {TOK_WRITE, 0x098C, 0xA349}, ++ {TOK_WRITE, 0x0990, 0x0002}, ++ {TOK_WRITE, 0x098C, 0xA34A}, ++ {TOK_WRITE, 0x0990, 0x0090}, ++ {TOK_WRITE, 0x098C, 0xA34B}, ++ {TOK_WRITE, 0x0990, 0x00FF}, ++ {TOK_WRITE, 0x098C, 0xA34C}, ++ {TOK_WRITE, 0x0990, 0x0075}, ++ {TOK_WRITE, 0x098C, 0xA34D}, ++ {TOK_WRITE, 0x0990, 0x00EF}, ++ {TOK_WRITE, 0x098C, 0xA351}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0xA352}, ++ {TOK_WRITE, 0x0990, 0x007F}, ++ {TOK_WRITE, 0x098C, 0xA354}, ++ {TOK_WRITE, 0x0990, 0x0043}, ++ {TOK_WRITE, 0x098C, 0xA355}, ++ {TOK_WRITE, 0x0990, 0x0001}, ++ {TOK_WRITE, 0x098C, 0xA35D}, ++ {TOK_WRITE, 0x0990, 0x0078}, ++ {TOK_WRITE, 0x098C, 0xA35E}, ++ {TOK_WRITE, 0x0990, 0x0086}, ++ {TOK_WRITE, 0x098C, 0xA35F}, ++ {TOK_WRITE, 0x0990, 0x007E}, ++ {TOK_WRITE, 0x098C, 0xA360}, ++ {TOK_WRITE, 0x0990, 0x0082}, ++ {TOK_WRITE, 0x098C, 0x2361}, ++ {TOK_WRITE, 0x0990, 0x0040}, ++ {TOK_WRITE, 0x098C, 0xA363}, ++ {TOK_WRITE, 0x0990, 0x00D2}, ++ {TOK_WRITE, 0x098C, 0xA364}, ++ {TOK_WRITE, 0x0990, 0x00F6}, ++ {TOK_WRITE, 0x098C, 0xA302}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0xA303}, ++ {TOK_WRITE, 0x0990, 0x00EF}, ++ {TOK_WRITE, 0x098C, 0xAB20}, ++ {TOK_WRITE, 0x0990, 0x0024}, ++ {TOK_WRITE, 0x098C, 0xA103}, ++ {TOK_WRITE, 0x0990, 0x0006}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_WRITE, 0x098C, 0xA103}, ++ {TOK_WRITE, 0x0990, 0x0005}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_WRITE, 0x098C, 0x222D}, ++ {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x098C, 0xA408}, ++ {TOK_WRITE, 0x0990, 0x0020}, ++ {TOK_WRITE, 0x098C, 0xA409}, ++ {TOK_WRITE, 0x0990, 0x0023}, ++ {TOK_WRITE, 0x098C, 0xA40A}, ++ {TOK_WRITE, 0x0990, 0x0027}, ++ {TOK_WRITE, 0x098C, 0xA40B}, ++ {TOK_WRITE, 0x0990, 0x002A}, ++ {TOK_WRITE, 0x098C, 0x2411}, ++ {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x098C, 0x2413}, ++ {TOK_WRITE, 0x0990, 0x00A4}, ++ {TOK_WRITE, 0x098C, 0x2415}, ++ {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x098C, 0x2417}, ++ {TOK_WRITE, 0x0990, 0x00A4}, ++ {TOK_WRITE, 0x098C, 0xA404}, ++ {TOK_WRITE, 0x0990, 0x0010}, ++ {TOK_WRITE, 0x098C, 0xA40D}, ++ {TOK_WRITE, 0x0990, 0x0002}, ++ {TOK_WRITE, 0x098C, 0xA40E}, ++ {TOK_WRITE, 0x0990, 0x0003}, ++ {TOK_WRITE, 0x098C, 0xA103}, ++ {TOK_WRITE, 0x0990, 0x0006}, ++ {TOK_DELAY, 0, 100}, ++ /* test pattern all white*/ ++ /* {TOK_WRITE, 0x098C, 0xA766}, ++ {TOK_WRITE, 0x0990, 0x0001}, ++ */ ++ {TOK_WRITE, 0x098C, 0xA103}, ++ {TOK_WRITE, 0x0990, 0x0005}, ++ {TOK_DELAY, 0, 100}, ++ {TOK_TERM, 0, 0}, ++}; ++ ++/* List of image formats supported by mt9v113 ++ * Currently we are using 8 bit mode only, but can be ++ * extended to 10/20 bit mode. ++ */ ++static const struct v4l2_fmtdesc mt9v113_fmt_list[] = { ++ { ++ .index = 0, ++ .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, ++ .flags = 0, ++ .description = "8-bit UYVY 4:2:2 Format", ++ .pixelformat = V4L2_PIX_FMT_UYVY, ++ }, ++}; ++ ++/* ++ * Supported standards - ++ * ++ * Currently supports two standards only, need to add support for rest of the ++ * modes, like SECAM, etc... ++ */ ++static struct mt9v113_std_info mt9v113_std_list[] = { ++ /* Standard: STD_NTSC_MJ */ ++ [MT9V113_STD_VGA] = { ++ .width = VGA_NUM_ACTIVE_PIXELS, ++ .height = VGA_NUM_ACTIVE_LINES, ++ .video_std = MT9V113_IMAGE_STD_VGA, ++ .standard = { ++ .index = 0, ++ .id = MT9V113_IMAGE_STD_VGA, ++ .name = "VGA", ++ .frameperiod = {1001, 30000}, ++ .framelines = 480 ++ }, ++ /* Standard: STD_PAL_BDGHIN */ ++ }, ++ [MT9V113_STD_QVGA] = { ++ .width = QVGA_NUM_ACTIVE_PIXELS, ++ .height = QVGA_NUM_ACTIVE_LINES, ++ .video_std = MT9V113_IMAGE_STD_QVGA, ++ .standard = { ++ .index = 1, ++ .id = MT9V113_IMAGE_STD_QVGA, ++ .name = "QVGA", ++ .frameperiod = {1001, 30000}, ++ .framelines = 320 ++ }, ++ }, ++ /* Standard: need to add for additional standard */ ++}; ++/* ++ * Control structure for Auto Gain ++ * This is temporary data, will get replaced once ++ * v4l2_ctrl_query_fill supports it. ++ */ ++static const struct v4l2_queryctrl mt9v113_autogain_ctrl = { ++ .id = V4L2_CID_AUTOGAIN, ++ .name = "Gain, Automatic", ++ .type = V4L2_CTRL_TYPE_BOOLEAN, ++ .minimum = 0, ++ .maximum = 1, ++ .step = 1, ++ .default_value = 1, ++}; ++ ++static int mt9v113_read_reg(struct i2c_client *client, unsigned short reg) ++{ ++ int err = 0; ++ struct i2c_msg msg[1]; ++ unsigned char data[2]; ++ unsigned short val = 0; ++ ++ if (!client->adapter) { ++ err = -ENODEV; ++ return err; ++ }else { ++ // TODO: addr should be set up where else ++ msg->addr = MT9V113_I2C_ADDR;//client->addr; ++ msg->flags = 0; ++ msg->len = I2C_TWO_BYTE_TRANSFER; ++ msg->buf = data; ++ data[0] = (reg & I2C_TXRX_DATA_MASK_UPPER) >> ++ I2C_TXRX_DATA_SHIFT; ++ data[1] = (reg & I2C_TXRX_DATA_MASK); ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err >= 0) { ++ msg->flags = I2C_M_RD; ++ msg->len = I2C_TWO_BYTE_TRANSFER; /* 2 byte read */ ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err >= 0) { ++ val = ((data[0] & I2C_TXRX_DATA_MASK) ++ << I2C_TXRX_DATA_SHIFT) ++ | (data[1] & I2C_TXRX_DATA_MASK); ++ } ++ } ++ } ++ return (int)(0x0000ffff & val); ++} ++ ++ ++ ++static int mt9v113_write_reg(struct i2c_client *client, unsigned short reg, unsigned short val) ++{ ++ int err = 0; ++ int trycnt = 0; ++ ++ struct i2c_msg msg[1]; ++ unsigned char data[4]; ++ err = -1; ++ ++ v4l_dbg(1, debug, client, ++ "mt9v113_write_reg reg=0x%x, val=0x%x\n", ++ reg,val); ++ ++ while ((err < 0) && (trycnt < I2C_RETRY_COUNT)) { ++ trycnt++; ++ if (!client->adapter) { ++ err = -ENODEV; ++ } else { ++ // TODO: addr should be set up where else ++ msg->addr = MT9V113_I2C_ADDR;//client->addr; ++ msg->flags = 0; ++ msg->len = I2C_FOUR_BYTE_TRANSFER; ++ msg->buf = data; ++ data[0] = (reg & I2C_TXRX_DATA_MASK_UPPER) >> ++ I2C_TXRX_DATA_SHIFT; ++ data[1] = (reg & I2C_TXRX_DATA_MASK); ++ data[2] = (val & I2C_TXRX_DATA_MASK_UPPER) >> ++ I2C_TXRX_DATA_SHIFT; ++ data[3] = (val & I2C_TXRX_DATA_MASK); ++ err = i2c_transfer(client->adapter, msg, 1); ++ } ++ } ++ if (err < 0) { ++ printk(KERN_INFO "\n I2C write failed"); ++ } ++ return err; ++} ++ ++/* configure mux, for DM355 EVM only */ ++#ifndef CONFIG_MACH_DM355_LEOPARD ++static int mt9v113_en_mux(struct i2c_client *client) ++{ ++ int err = 0; ++ int trycnt = 0; ++ /* unsigned short readval = 0;*/ ++ ++ struct i2c_msg msg[1]; ++ unsigned char data[4]; ++ err = -1; ++ printk(KERN_INFO ++ "\n entering mt9v113_en_mux \n"); ++ ++ while ((err < 0) && (trycnt < 5)) { ++ trycnt++; ++ if (!client->adapter) { ++ err = -ENODEV; ++ } else { ++ msg->addr = 0x25; ++ msg->flags = 0; ++ msg->len = I2C_TWO_BYTE_TRANSFER; ++ msg->buf = data; ++ data[0] = (unsigned char)(0x08 & I2C_TXRX_DATA_MASK); ++ data[1] = (unsigned char)(0x80 & I2C_TXRX_DATA_MASK); ++ ++ err = i2c_transfer(client->adapter, msg, 1); ++ if (err < 0) { ++ printk(KERN_INFO ++ "\n ERROR in ECP register write\n"); ++ } ++ } ++ } ++ if (err < 0) { ++ printk(KERN_INFO "\n I2C write failed"); ++ } ++ return err; ++} ++#endif ++ ++/* ++ * mt9v113_write_regs : Initializes a list of registers ++ * if token is TOK_TERM, then entire write operation terminates ++ * if token is TOK_DELAY, then a delay of 'val' msec is introduced ++ * if token is TOK_SKIP, then the register write is skipped ++ * if token is TOK_WRITE, then the register write is performed ++ * ++ * reglist - list of registers to be written ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int mt9v113_write_regs(struct i2c_client *client, ++ const struct mt9v113_reg reglist[]) ++{ ++ int err; ++ const struct mt9v113_reg *next = reglist; ++ ++ for (; next->token != TOK_TERM; next++) { ++ if (next->token == TOK_DELAY) { ++ msleep(next->val); ++ continue; ++ } ++ ++ if (next->token == TOK_SKIP) ++ continue; ++ ++ err = mt9v113_write_reg(client, next->reg, next->val); ++ if (err < 0) { ++ v4l_err(client, "Write failed. Err[%d]\n", err); ++ return err; ++ } ++ } ++ return 0; ++} ++ ++/* ++ * mt9v113_get_current_std: ++ * Returns the current standard ++ */ ++static enum mt9v113_std mt9v113_get_current_std(struct mt9v113_decoder ++ *decoder) ++{ ++ return MT9V113_STD_VGA; ++} ++ ++/* ++ * Configure the mt9v113 with the current register settings ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int mt9v113_configure(struct mt9v113_decoder *decoder) ++{ ++ int err; ++ ++ /* common register initialization */ ++ err = ++ mt9v113_write_regs(decoder->client, mt9v113_reg_list); ++ if (err) ++ return err; ++ ++// if (debug) ++// mt9v113_reg_dump(decoder); ++ ++ return 0; ++} ++ ++/* ++ * Configure the MT9V113 to VGA mode ++ * Returns zero if successful, or non-zero otherwise. ++ */ ++static int mt9v113_vga_mode(struct mt9v113_decoder *decoder) ++{ ++ int err; ++ ++ err = ++ mt9v113_write_regs(decoder->client, mt9v113_vga_reg); ++ if (err) ++ return err; ++ ++ return 0; ++} ++ ++ ++/* ++ * Detect if an mt9v113 is present, and if so which revision. ++ * A device is considered to be detected if the chip ID (LSB and MSB) ++ * registers match the expected values. ++ * Any value of the rom version register is accepted. ++ * Returns ENODEV error number if no device is detected, or zero ++ * if a device is detected. ++ */ ++static int mt9v113_detect(struct mt9v113_decoder *decoder) ++{ ++ unsigned short val=0; ++ ++#ifndef CONFIG_MACH_DM355_LEOPARD ++// mt9v113_en_mux(decoder->client); ++#endif ++ ++ val = mt9v113_read_reg(decoder->client, REG_CHIP_ID); ++ ++ v4l_dbg(1, debug, decoder->client, ++ "chip id detected 0x%x\n", ++ val); ++ ++ if (MT9V113_CHIP_ID != val) { ++ /* We didn't read the values we expected, so this must not be ++ * MT9V113. ++ */ ++ v4l_err(decoder->client, ++ "chip id mismatch read 0x%x, expecting 0x%x\n", val, MT9V113_CHIP_ID); ++ return -ENODEV; ++ } ++ ++ decoder->ver = val; ++ decoder->state = STATE_DETECTED; ++ ++ v4l_info(decoder->client, ++ "%s found at 0x%x (%s)\n", decoder->client->name, ++ decoder->client->addr << 1, ++ decoder->client->adapter->name); ++ ++ return 0; ++} ++ ++/* ++ * Following are decoder interface functions implemented by ++ * mt9v113 decoder driver. ++ */ ++ ++/** ++ * ioctl_querystd - V4L2 decoder interface handler for VIDIOC_QUERYSTD ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @std_id: standard V4L2 std_id ioctl enum ++ * ++ * Returns the current standard detected by mt9v113. If no active input is ++ * detected, returns -EINVAL ++ */ ++static int ioctl_querystd(struct v4l2_int_device *s, v4l2_std_id *std_id) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ enum mt9v113_std current_std; ++ ++ if (std_id == NULL) ++ return -EINVAL; ++ ++ /* get the current standard */ ++ current_std = mt9v113_get_current_std(decoder); ++ if (current_std == MT9V113_IMAGE_STD_INVALID) ++ return -EINVAL; ++ ++ decoder->current_std = current_std; ++ *std_id = decoder->std_list[current_std].standard.id; ++ ++ v4l_dbg(1, debug, decoder->client, "Current STD: %s", ++ decoder->std_list[current_std].standard.name); ++ return 0; ++} ++ ++/** ++ * ioctl_s_std - V4L2 decoder interface handler for VIDIOC_S_STD ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @std_id: standard V4L2 v4l2_std_id ioctl enum ++ * ++ * If std_id is supported, sets the requested standard. Otherwise, returns ++ * -EINVAL ++ */ ++static int ioctl_s_std(struct v4l2_int_device *s, v4l2_std_id *std_id) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int err, i; ++ ++ if (std_id == NULL) ++ return -EINVAL; ++ ++ for (i = 0; i < decoder->num_stds; i++) ++ if (*std_id & decoder->std_list[i].standard.id) ++ break; ++ ++ if ((i == decoder->num_stds) || (i == MT9V113_STD_INVALID)) ++ return -EINVAL; ++ ++ err = mt9v113_write_reg(decoder->client, REG_VIDEO_STD, ++ decoder->std_list[i].video_std); ++ if (err) ++ return err; ++ ++ decoder->current_std = i; ++ mt9v113_reg_list[REG_VIDEO_STD].val = decoder->std_list[i].video_std; ++ ++ v4l_dbg(1, debug, decoder->client, "Standard set to: %s", ++ decoder->std_list[i].standard.name); ++ return 0; ++} ++ ++/** ++ * ioctl_s_routing - V4L2 decoder interface handler for VIDIOC_S_INPUT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @index: number of the input ++ * ++ * If index is valid, selects the requested input. Otherwise, returns -EINVAL if ++ * the input is not supported or there is no active signal present in the ++ * selected input. ++ */ ++static int ioctl_s_routing(struct v4l2_int_device *s, ++ struct v4l2_routing *route) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_queryctrl - V4L2 decoder interface handler for VIDIOC_QUERYCTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @qctrl: standard V4L2 v4l2_queryctrl structure ++ * ++ * If the requested control is supported, returns the control information. ++ * Otherwise, returns -EINVAL if the control is not supported. ++ */ ++static int ++ioctl_queryctrl(struct v4l2_int_device *s, struct v4l2_queryctrl *qctrl) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int err = -EINVAL; ++ ++ if (qctrl == NULL) ++ return err; ++ ++ switch (qctrl->id) { ++ case V4L2_CID_BRIGHTNESS: ++ /* Brightness supported is same as standard one (0-255), ++ * so make use of standard API provided. ++ */ ++ err = v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 128); ++ break; ++ case V4L2_CID_CONTRAST: ++ case V4L2_CID_SATURATION: ++ /* Saturation and Contrast supported is - ++ * Contrast: 0 - 255 (Default - 128) ++ * Saturation: 0 - 255 (Default - 128) ++ */ ++ err = v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 128); ++ break; ++ case V4L2_CID_HUE: ++ /* Hue Supported is - ++ * Hue - -180 - +180 (Default - 0, Step - +180) ++ */ ++ err = v4l2_ctrl_query_fill(qctrl, -180, 180, 180, 0); ++ break; ++ case V4L2_CID_AUTOGAIN: ++ /* Autogain is either 0 or 1*/ ++ memcpy(qctrl, &mt9v113_autogain_ctrl, ++ sizeof(struct v4l2_queryctrl)); ++ err = 0; ++ break; ++ default: ++ v4l_err(decoder->client, ++ "invalid control id %d\n", qctrl->id); ++ return err; ++ } ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Query Control: %s : Min - %d, Max - %d, Def - %d", ++ qctrl->name, ++ qctrl->minimum, ++ qctrl->maximum, ++ qctrl->default_value); ++ ++ return err; ++} ++ ++/** ++ * ioctl_g_ctrl - V4L2 decoder interface handler for VIDIOC_G_CTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @ctrl: pointer to v4l2_control structure ++ * ++ * If the requested control is supported, returns the control's current ++ * value from the decoder. Otherwise, returns -EINVAL if the control is not ++ * supported. ++ */ ++static int ++ioctl_g_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ ++ if (ctrl == NULL) ++ return -EINVAL; ++ ++ switch (ctrl->id) { ++ case V4L2_CID_BRIGHTNESS: ++ ctrl->value = mt9v113_reg_list[REG_BRIGHTNESS].val; ++ break; ++ case V4L2_CID_CONTRAST: ++ ctrl->value = mt9v113_reg_list[REG_CONTRAST].val; ++ break; ++ case V4L2_CID_SATURATION: ++ ctrl->value = mt9v113_reg_list[REG_SATURATION].val; ++ break; ++ case V4L2_CID_HUE: ++ ctrl->value = mt9v113_reg_list[REG_HUE].val; ++ if (ctrl->value == 0x7F) ++ ctrl->value = 180; ++ else if (ctrl->value == 0x80) ++ ctrl->value = -180; ++ else ++ ctrl->value = 0; ++ ++ break; ++ case V4L2_CID_AUTOGAIN: ++ ctrl->value = mt9v113_reg_list[REG_AFE_GAIN_CTRL].val; ++ if ((ctrl->value & 0x3) == 3) ++ ctrl->value = 1; ++ else ++ ctrl->value = 0; ++ ++ break; ++ default: ++ v4l_err(decoder->client, ++ "invalid control id %d\n", ctrl->id); ++ return -EINVAL; ++ } ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Get Control: ID - %d - %d", ++ ctrl->id, ctrl->value); ++ return 0; ++} ++ ++/** ++ * ioctl_s_ctrl - V4L2 decoder interface handler for VIDIOC_S_CTRL ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @ctrl: pointer to v4l2_control structure ++ * ++ * If the requested control is supported, sets the control's current ++ * value in HW. Otherwise, returns -EINVAL if the control is not supported. ++ */ ++static int ++ioctl_s_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int err = -EINVAL, value; ++ ++ if (ctrl == NULL) ++ return err; ++ ++ value = (__s32) ctrl->value; ++ ++ switch (ctrl->id) { ++ case V4L2_CID_BRIGHTNESS: ++ if (ctrl->value < 0 || ctrl->value > 255) { ++ v4l_err(decoder->client, ++ "invalid brightness setting %d\n", ++ ctrl->value); ++ return -ERANGE; ++ } ++ err = mt9v113_write_reg(decoder->client, REG_BRIGHTNESS, ++ value); ++ if (err) ++ return err; ++ mt9v113_reg_list[REG_BRIGHTNESS].val = value; ++ break; ++ case V4L2_CID_CONTRAST: ++ if (ctrl->value < 0 || ctrl->value > 255) { ++ v4l_err(decoder->client, ++ "invalid contrast setting %d\n", ++ ctrl->value); ++ return -ERANGE; ++ } ++ err = mt9v113_write_reg(decoder->client, REG_CONTRAST, ++ value); ++ if (err) ++ return err; ++ mt9v113_reg_list[REG_CONTRAST].val = value; ++ break; ++ case V4L2_CID_SATURATION: ++ if (ctrl->value < 0 || ctrl->value > 255) { ++ v4l_err(decoder->client, ++ "invalid saturation setting %d\n", ++ ctrl->value); ++ return -ERANGE; ++ } ++ err = mt9v113_write_reg(decoder->client, REG_SATURATION, ++ value); ++ if (err) ++ return err; ++ mt9v113_reg_list[REG_SATURATION].val = value; ++ break; ++ case V4L2_CID_HUE: ++ if (value == 180) ++ value = 0x7F; ++ else if (value == -180) ++ value = 0x80; ++ else if (value == 0) ++ value = 0; ++ else { ++ v4l_err(decoder->client, ++ "invalid hue setting %d\n", ++ ctrl->value); ++ return -ERANGE; ++ } ++ err = mt9v113_write_reg(decoder->client, REG_HUE, ++ value); ++ if (err) ++ return err; ++ mt9v113_reg_list[REG_HUE].val = value; ++ break; ++ case V4L2_CID_AUTOGAIN: ++ if (value == 1) ++ value = 0x0F; ++ else if (value == 0) ++ value = 0x0C; ++ else { ++ v4l_err(decoder->client, ++ "invalid auto gain setting %d\n", ++ ctrl->value); ++ return -ERANGE; ++ } ++ err = mt9v113_write_reg(decoder->client, REG_AFE_GAIN_CTRL, ++ value); ++ if (err) ++ return err; ++ mt9v113_reg_list[REG_AFE_GAIN_CTRL].val = value; ++ break; ++ default: ++ v4l_err(decoder->client, ++ "invalid control id %d\n", ctrl->id); ++ return err; ++ } ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Set Control: ID - %d - %d", ++ ctrl->id, ctrl->value); ++ ++ return err; ++} ++ ++/** ++ * ioctl_enum_fmt_cap - Implement the CAPTURE buffer VIDIOC_ENUM_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @fmt: standard V4L2 VIDIOC_ENUM_FMT ioctl structure ++ * ++ * Implement the VIDIOC_ENUM_FMT ioctl to enumerate supported formats ++ */ ++static int ++ioctl_enum_fmt_cap(struct v4l2_int_device *s, struct v4l2_fmtdesc *fmt) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int index; ++ ++ if (fmt == NULL) ++ return -EINVAL; ++ ++ index = fmt->index; ++ if ((index >= decoder->num_fmts) || (index < 0)) ++ return -EINVAL; /* Index out of bound */ ++ ++ if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; /* only capture is supported */ ++ ++ memcpy(fmt, &decoder->fmt_list[index], ++ sizeof(struct v4l2_fmtdesc)); ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Current FMT: index - %d (%s)", ++ decoder->fmt_list[index].index, ++ decoder->fmt_list[index].description); ++ return 0; ++} ++ ++/** ++ * ioctl_try_fmt_cap - Implement the CAPTURE buffer VIDIOC_TRY_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure ++ * ++ * Implement the VIDIOC_TRY_FMT ioctl for the CAPTURE buffer type. This ++ * ioctl is used to negotiate the image capture size and pixel format ++ * without actually making it take effect. ++ */ ++static int ++ioctl_try_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int ifmt; ++ struct v4l2_pix_format *pix; ++ enum mt9v113_std current_std; ++ ++ if (f == NULL) ++ return -EINVAL; ++ ++ if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ ++ pix = &f->fmt.pix; ++ ++ /* Calculate height and width based on current standard */ ++ current_std = mt9v113_get_current_std(decoder); ++ if (current_std == MT9V113_STD_INVALID) ++ return -EINVAL; ++ ++ decoder->current_std = current_std; ++ pix->width = decoder->std_list[current_std].width; ++ pix->height = decoder->std_list[current_std].height; ++ ++ for (ifmt = 0; ifmt < decoder->num_fmts; ifmt++) { ++ if (pix->pixelformat == ++ decoder->fmt_list[ifmt].pixelformat) ++ break; ++ } ++ if (ifmt == decoder->num_fmts) ++ ifmt = 0; /* None of the format matched, select default */ ++ pix->pixelformat = decoder->fmt_list[ifmt].pixelformat; ++ ++ pix->field = V4L2_FIELD_NONE; ++ pix->bytesperline = pix->width * 2; ++ pix->sizeimage = pix->bytesperline * pix->height; ++ pix->colorspace = V4L2_COLORSPACE_SMPTE170M; ++ pix->priv = 0; ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Try FMT: pixelformat - %s, bytesperline - %d" ++ "Width - %d, Height - %d", ++ decoder->fmt_list[ifmt].description, pix->bytesperline, ++ pix->width, pix->height); ++ return 0; ++} ++ ++/** ++ * ioctl_s_fmt_cap - V4L2 decoder interface handler for VIDIOC_S_FMT ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure ++ * ++ * If the requested format is supported, configures the HW to use that ++ * format, returns error code if format not supported or HW can't be ++ * correctly configured. ++ */ ++static int ++ioctl_s_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ struct v4l2_pix_format *pix; ++ int rval; ++ ++ if (f == NULL) ++ return -EINVAL; ++ ++ if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; /* only capture is supported */ ++ ++ pix = &f->fmt.pix; ++ rval = ioctl_try_fmt_cap(s, f); ++ if (rval) ++ return rval; ++ ++ decoder->pix = *pix; ++ ++ return rval; ++} ++ ++/** ++ * ioctl_g_fmt_cap - V4L2 decoder interface handler for ioctl_g_fmt_cap ++ * @s: pointer to standard V4L2 device structure ++ * @f: pointer to standard V4L2 v4l2_format structure ++ * ++ * Returns the decoder's current pixel format in the v4l2_format ++ * parameter. ++ */ ++static int ++ioctl_g_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ ++ if (f == NULL) ++ return -EINVAL; ++ ++ if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; /* only capture is supported */ ++ ++ f->fmt.pix = decoder->pix; ++ ++ v4l_dbg(1, debug, decoder->client, ++ "Current FMT: bytesperline - %d" ++ "Width - %d, Height - %d", ++ decoder->pix.bytesperline, ++ decoder->pix.width, decoder->pix.height); ++ return 0; ++} ++ ++/** ++ * ioctl_g_parm - V4L2 decoder interface handler for VIDIOC_G_PARM ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure ++ * ++ * Returns the decoder's video CAPTURE parameters. ++ */ ++static int ++ioctl_g_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ struct v4l2_captureparm *cparm; ++ enum mt9v113_std current_std; ++ ++ if (a == NULL) ++ return -EINVAL; ++ ++ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; /* only capture is supported */ ++ ++ memset(a, 0, sizeof(*a)); ++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ ++ /* get the current standard */ ++ current_std = mt9v113_get_current_std(decoder); ++ if (current_std == MT9V113_STD_INVALID) ++ return -EINVAL; ++ ++ decoder->current_std = current_std; ++ ++ cparm = &a->parm.capture; ++ cparm->capability = V4L2_CAP_TIMEPERFRAME; ++ cparm->timeperframe = ++ decoder->std_list[current_std].standard.frameperiod; ++ ++ return 0; ++} ++ ++/** ++ * ioctl_s_parm - V4L2 decoder interface handler for VIDIOC_S_PARM ioctl ++ * @s: pointer to standard V4L2 device structure ++ * @a: pointer to standard V4L2 VIDIOC_S_PARM ioctl structure ++ * ++ * Configures the decoder to use the input parameters, if possible. If ++ * not possible, returns the appropriate error code. ++ */ ++static int ++ioctl_s_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ struct v4l2_fract *timeperframe; ++ enum mt9v113_std current_std; ++ ++ if (a == NULL) ++ return -EINVAL; ++ ++ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; /* only capture is supported */ ++ ++ timeperframe = &a->parm.capture.timeperframe; ++ ++ /* get the current standard */ ++ current_std = mt9v113_get_current_std(decoder); ++ if (current_std == MT9V113_STD_INVALID) ++ return -EINVAL; ++ ++ decoder->current_std = current_std; ++ ++ *timeperframe = ++ decoder->std_list[current_std].standard.frameperiod; ++ ++ return 0; ++} ++ ++/** ++ * ioctl_g_ifparm - V4L2 decoder interface handler for vidioc_int_g_ifparm_num ++ * @s: pointer to standard V4L2 device structure ++ * @p: pointer to standard V4L2 vidioc_int_g_ifparm_num ioctl structure ++ * ++ * Gets slave interface parameters. ++ * Calculates the required xclk value to support the requested ++ * clock parameters in p. This value is returned in the p ++ * parameter. ++ */ ++static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int rval; ++ ++ if (p == NULL) ++ return -EINVAL; ++ ++ if (NULL == decoder->pdata->ifparm) ++ return -EINVAL; ++ ++ rval = decoder->pdata->ifparm(p); ++ if (rval) { ++ v4l_err(decoder->client, "g_ifparm.Err[%d]\n", rval); ++ return rval; ++ } ++ ++ p->u.bt656.clock_curr = 27000000; // TODO: read clock rate from sensor ++ ++ return 0; ++} ++ ++/** ++ * ioctl_g_priv - V4L2 decoder interface handler for vidioc_int_g_priv_num ++ * @s: pointer to standard V4L2 device structure ++ * @p: void pointer to hold decoder's private data address ++ * ++ * Returns device's (decoder's) private data area address in p parameter ++ */ ++static int ioctl_g_priv(struct v4l2_int_device *s, void *p) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ ++ if (NULL == decoder->pdata->priv_data_set) ++ return -EINVAL; ++ ++ return decoder->pdata->priv_data_set(p); ++} ++ ++/** ++ * ioctl_s_power - V4L2 decoder interface handler for vidioc_int_s_power_num ++ * @s: pointer to standard V4L2 device structure ++ * @on: power state to which device is to be set ++ * ++ * Sets devices power state to requrested state, if possible. ++ */ ++static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int err = 0; ++ ++ switch (on) { ++ case V4L2_POWER_OFF: ++ /* Power Down Sequence */ ++ err = ++ mt9v113_write_reg(decoder->client, REG_OPERATION_MODE, ++ 0x01); ++ /* Disable mux for mt9v113 data path */ ++ if (decoder->pdata->power_set) ++ err |= decoder->pdata->power_set(s, on); ++ decoder->state = STATE_NOT_DETECTED; ++ break; ++ ++ case V4L2_POWER_STANDBY: ++ if (decoder->pdata->power_set) ++ err = decoder->pdata->power_set(s, on); ++ break; ++ ++ case V4L2_POWER_ON: ++ /* Enable mux for mt9v113 data path */ ++ if ((decoder->pdata->power_set) && ++ (decoder->state == STATE_NOT_DETECTED)) { ++ ++ err = decoder->pdata->power_set(s, on); ++ ++ /* Detect the sensor is not already detected */ ++ err |= mt9v113_detect(decoder); ++ if (err) { ++ v4l_err(decoder->client, ++ "Unable to detect decoder\n"); ++ return err; ++ } ++ } ++ // Only VGA mode for now ++ err |= mt9v113_vga_mode(decoder); ++ break; ++ ++ default: ++ err = -ENODEV; ++ break; ++ } ++ ++ return err; ++} ++ ++/** ++ * ioctl_init - V4L2 decoder interface handler for VIDIOC_INT_INIT ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Initialize the decoder device (calls mt9v113_configure()) ++ */ ++static int ioctl_init(struct v4l2_int_device *s) ++{ ++// struct mt9v113_decoder *decoder = s->priv; ++ int err = 0; ++ ++ /* Set default standard to auto */ ++ //mt9v113_reg_list[REG_VIDEO_STD].val = ++ // VIDEO_STD_AUTO_SWITCH_BIT; ++// err |= mt9v113_configure(decoder); ++// err |= mt9v113_vga_mode(decoder); ++ ++ return err; ++} ++ ++/** ++ * ioctl_dev_exit - V4L2 decoder interface handler for vidioc_int_dev_exit_num ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Delinitialise the dev. at slave detach. The complement of ioctl_dev_init. ++ */ ++static int ioctl_dev_exit(struct v4l2_int_device *s) ++{ ++ return 0; ++} ++ ++/** ++ * ioctl_dev_init - V4L2 decoder interface handler for vidioc_int_dev_init_num ++ * @s: pointer to standard V4L2 device structure ++ * ++ * Initialise the device when slave attaches to the master. Returns 0 if ++ * mt9v113 device could be found, otherwise returns appropriate error. ++ */ ++static int ioctl_dev_init(struct v4l2_int_device *s) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int err; ++ ++ printk("%s: %d\n", __func__, __LINE__); ++ err = mt9v113_detect(decoder); ++ if (err < 0) { ++ v4l_err(decoder->client, ++ "Unable to detect decoder\n"); ++ return err; ++ } ++ ++ v4l_info(decoder->client, ++ "chip version 0x%.2x detected\n", decoder->ver); ++ ++ err |= mt9v113_configure(decoder); ++ err |= mt9v113_vga_mode(decoder); ++ ++ return 0; ++} ++ ++static struct v4l2_int_ioctl_desc mt9v113_ioctl_desc[] = { ++ {vidioc_int_dev_init_num, (v4l2_int_ioctl_func*) ioctl_dev_init}, ++ {vidioc_int_dev_exit_num, (v4l2_int_ioctl_func*) ioctl_dev_exit}, ++ {vidioc_int_s_power_num, (v4l2_int_ioctl_func*) ioctl_s_power}, ++ {vidioc_int_g_priv_num, (v4l2_int_ioctl_func*) ioctl_g_priv}, ++ {vidioc_int_g_ifparm_num, (v4l2_int_ioctl_func*) ioctl_g_ifparm}, ++ {vidioc_int_init_num, (v4l2_int_ioctl_func*) ioctl_init}, ++ {vidioc_int_enum_fmt_cap_num, ++ (v4l2_int_ioctl_func *) ioctl_enum_fmt_cap}, ++ {vidioc_int_try_fmt_cap_num, ++ (v4l2_int_ioctl_func *) ioctl_try_fmt_cap}, ++ {vidioc_int_g_fmt_cap_num, ++ (v4l2_int_ioctl_func *) ioctl_g_fmt_cap}, ++ {vidioc_int_s_fmt_cap_num, ++ (v4l2_int_ioctl_func *) ioctl_s_fmt_cap}, ++ {vidioc_int_g_parm_num, (v4l2_int_ioctl_func *) ioctl_g_parm}, ++ {vidioc_int_s_parm_num, (v4l2_int_ioctl_func *) ioctl_s_parm}, ++ {vidioc_int_queryctrl_num, ++ (v4l2_int_ioctl_func *) ioctl_queryctrl}, ++ {vidioc_int_g_ctrl_num, (v4l2_int_ioctl_func *) ioctl_g_ctrl}, ++ {vidioc_int_s_ctrl_num, (v4l2_int_ioctl_func *) ioctl_s_ctrl}, ++ {vidioc_int_querystd_num, (v4l2_int_ioctl_func *) ioctl_querystd}, ++ {vidioc_int_s_std_num, (v4l2_int_ioctl_func *) ioctl_s_std}, ++ {vidioc_int_s_video_routing_num, ++ (v4l2_int_ioctl_func *) ioctl_s_routing}, ++}; ++ ++static struct v4l2_int_slave mt9v113_slave = { ++ .ioctls = mt9v113_ioctl_desc, ++ .num_ioctls = ARRAY_SIZE(mt9v113_ioctl_desc), ++}; ++ ++static struct mt9v113_decoder mt9v113_dev = { ++ .state = STATE_NOT_DETECTED, ++ ++ .fmt_list = mt9v113_fmt_list, ++ .num_fmts = ARRAY_SIZE(mt9v113_fmt_list), ++ ++ .pix = { /* Default to 8-bit YUV 422 */ ++ .width = VGA_NUM_ACTIVE_PIXELS, ++ .height = VGA_NUM_ACTIVE_LINES, ++ .pixelformat = V4L2_PIX_FMT_UYVY, ++ .field = V4L2_FIELD_NONE, ++ .bytesperline = VGA_NUM_ACTIVE_PIXELS * 2, ++ .sizeimage = ++ VGA_NUM_ACTIVE_PIXELS * 2 * VGA_NUM_ACTIVE_LINES, ++ .colorspace = V4L2_COLORSPACE_SMPTE170M, ++ }, ++ ++ .current_std = MT9V113_STD_VGA, ++ .std_list = mt9v113_std_list, ++ .num_stds = ARRAY_SIZE(mt9v113_std_list), ++ ++}; ++ ++static struct v4l2_int_device mt9v113_int_device = { ++ .module = THIS_MODULE, ++ .name = MT9V113_MODULE_NAME, ++ .priv = &mt9v113_dev, ++ .type = v4l2_int_type_slave, ++ .u = { ++ .slave = &mt9v113_slave, ++ }, ++}; ++ ++/** ++ * mt9v113_probe - decoder driver i2c probe handler ++ * @client: i2c driver client device structure ++ * ++ * Register decoder as an i2c client device and V4L2 ++ * device. ++ */ ++static int ++mt9v113_probe(struct i2c_client *client, const struct i2c_device_id *id) ++{ ++ struct mt9v113_decoder *decoder = &mt9v113_dev; ++ int err; ++ ++ printk("%s: %d\n", __func__, __LINE__); ++ /* Check if the adapter supports the needed features */ ++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) ++ return -EIO; ++ ++ printk("%s: %d\n", __func__, __LINE__); ++ decoder->pdata = client->dev.platform_data; ++ if (!decoder->pdata) { ++ v4l_err(client, "No platform data!!\n"); ++ return -ENODEV; ++ } ++ printk("%s: %d\n", __func__, __LINE__); ++ /* ++ * Fetch platform specific data, and configure the ++ * mt9v113_reg_list[] accordingly. Since this is one ++ * time configuration, no need to preserve. ++ */ ++ ++ /*mt9v113_reg_list[REG_OUTPUT_FORMATTER2].val |= ++ (decoder->pdata->clk_polarity << 1); ++ mt9v113_reg_list[REG_SYNC_CONTROL].val |= ++ ((decoder->pdata->hs_polarity << 2) | ++ (decoder->pdata->vs_polarity << 3)); ++ */ ++ /* ++ * Save the id data, required for power up sequence ++ */ ++ decoder->id = (struct i2c_device_id *)id; ++ /* Attach to Master */ ++ strcpy(mt9v113_int_device.u.slave->attach_to, decoder->pdata->master); ++ decoder->v4l2_int_device = &mt9v113_int_device; ++ decoder->client = client; ++ i2c_set_clientdata(client, decoder); ++ ++ /* Register with V4L2 layer as slave device */ ++ err = v4l2_int_device_register(decoder->v4l2_int_device); ++ if (err) { ++ i2c_set_clientdata(client, NULL); ++ v4l_err(client, ++ "Unable to register to v4l2. Err[%d]\n", err); ++ ++ } else ++ v4l_info(client, "Registered to v4l2 master %s!!\n", ++ decoder->pdata->master); ++ ++ return 0; ++} ++ ++/** ++ * mt9v113_remove - decoder driver i2c remove handler ++ * @client: i2c driver client device structure ++ * ++ * Unregister decoder as an i2c client device and V4L2 ++ * device. Complement of mt9v113_probe(). ++ */ ++static int __exit mt9v113_remove(struct i2c_client *client) ++{ ++ struct mt9v113_decoder *decoder = i2c_get_clientdata(client); ++ ++ if (!client->adapter) ++ return -ENODEV; /* our client isn't attached */ ++ ++ v4l2_int_device_unregister(decoder->v4l2_int_device); ++ i2c_set_clientdata(client, NULL); ++ ++ return 0; ++} ++/* ++ * mt9v113 Init/Power on Sequence ++ */ ++static const struct mt9v113_reg mt9v113m_init_reg_seq[] = { ++ {TOK_WRITE, REG_OPERATION_MODE, 0x01}, ++ {TOK_WRITE, REG_OPERATION_MODE, 0x00}, ++}; ++static const struct mt9v113_init_seq mt9v113m_init = { ++ .no_regs = ARRAY_SIZE(mt9v113m_init_reg_seq), ++ .init_reg_seq = mt9v113m_init_reg_seq, ++}; ++/* ++ * I2C Device Table - ++ * ++ * name - Name of the actual device/chip. ++ * driver_data - Driver data ++ */ ++static const struct i2c_device_id mt9v113_id[] = { ++ {"mt9v113", (unsigned long)&mt9v113m_init}, ++ {}, ++}; ++ ++MODULE_DEVICE_TABLE(i2c, mt9v113_id); ++ ++static struct i2c_driver mt9v113_i2c_driver = { ++ .driver = { ++ .name = MT9V113_MODULE_NAME, ++ .owner = THIS_MODULE, ++ }, ++ .probe = mt9v113_probe, ++ .remove = __exit_p(mt9v113_remove), ++ .id_table = mt9v113_id, ++}; ++ ++/** ++ * mt9v113_init ++ * ++ * Module init function ++ */ ++static int __init mt9v113_init(void) ++{ ++ return i2c_add_driver(&mt9v113_i2c_driver); ++} ++ ++/** ++ * mt9v113_cleanup ++ * ++ * Module exit function ++ */ ++static void __exit mt9v113_cleanup(void) ++{ ++ i2c_del_driver(&mt9v113_i2c_driver); ++} ++ ++module_init(mt9v113_init); ++module_exit(mt9v113_cleanup); ++ ++MODULE_AUTHOR("Texas Instruments"); ++MODULE_DESCRIPTION("MT9V113 linux decoder driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/media/video/mt9v113_regs.h b/drivers/media/video/mt9v113_regs.h +new file mode 100644 +index 0000000..64b065f +--- /dev/null ++++ b/drivers/media/video/mt9v113_regs.h +@@ -0,0 +1,294 @@ ++/* ++ * drivers/media/video/mt9v113_regs.h ++ * ++ * Copyright (C) 2008 Texas Instruments Inc ++ * Author: Vaibhav Hiremath ++ * ++ * Contributors: ++ * Sivaraj R ++ * Brijesh R Jadav ++ * Hardik Shah ++ * Manjunath Hadli ++ * Karicheri Muralidharan ++ * ++ * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++#ifndef _MT9V113_REGS_H ++#define _MT9V113_REGS_H ++ ++/* ++ * MT9V113 registers ++ */ ++#define REG_CHIP_ID (0x00) ++ ++/* ++ * MT9V113 registers ++ */ ++#define REG_INPUT_SEL (0x00) ++#define REG_AFE_GAIN_CTRL (0x01) ++#define REG_VIDEO_STD (0x02) ++#define REG_OPERATION_MODE (0x03) ++#define REG_AUTOSWITCH_MASK (0x04) ++ ++#define REG_COLOR_KILLER (0x05) ++#define REG_LUMA_CONTROL1 (0x06) ++#define REG_LUMA_CONTROL2 (0x07) ++#define REG_LUMA_CONTROL3 (0x08) ++ ++#define REG_BRIGHTNESS (0x09) ++#define REG_CONTRAST (0x0A) ++#define REG_SATURATION (0x0B) ++#define REG_HUE (0x0C) ++ ++#define REG_CHROMA_CONTROL1 (0x0D) ++#define REG_CHROMA_CONTROL2 (0x0E) ++ ++/* 0x0F Reserved */ ++ ++#define REG_COMP_PR_SATURATION (0x10) ++#define REG_COMP_Y_CONTRAST (0x11) ++#define REG_COMP_PB_SATURATION (0x12) ++ ++/* 0x13 Reserved */ ++ ++#define REG_COMP_Y_BRIGHTNESS (0x14) ++ ++/* 0x15 Reserved */ ++ ++#define REG_AVID_START_PIXEL_LSB (0x16) ++#define REG_AVID_START_PIXEL_MSB (0x17) ++#define REG_AVID_STOP_PIXEL_LSB (0x18) ++#define REG_AVID_STOP_PIXEL_MSB (0x19) ++ ++#define REG_HSYNC_START_PIXEL_LSB (0x1A) ++#define REG_HSYNC_START_PIXEL_MSB (0x1B) ++#define REG_HSYNC_STOP_PIXEL_LSB (0x1C) ++#define REG_HSYNC_STOP_PIXEL_MSB (0x1D) ++ ++#define REG_VSYNC_START_LINE_LSB (0x1E) ++#define REG_VSYNC_START_LINE_MSB (0x1F) ++#define REG_VSYNC_STOP_LINE_LSB (0x20) ++#define REG_VSYNC_STOP_LINE_MSB (0x21) ++ ++#define REG_VBLK_START_LINE_LSB (0x22) ++#define REG_VBLK_START_LINE_MSB (0x23) ++#define REG_VBLK_STOP_LINE_LSB (0x24) ++#define REG_VBLK_STOP_LINE_MSB (0x25) ++ ++/* 0x26 - 0x27 Reserved */ ++ ++#define REG_FAST_SWTICH_CONTROL (0x28) ++ ++/* 0x29 Reserved */ ++ ++#define REG_FAST_SWTICH_SCART_DELAY (0x2A) ++ ++/* 0x2B Reserved */ ++ ++#define REG_SCART_DELAY (0x2C) ++#define REG_CTI_DELAY (0x2D) ++#define REG_CTI_CONTROL (0x2E) ++ ++/* 0x2F - 0x31 Reserved */ ++ ++#define REG_SYNC_CONTROL (0x32) ++#define REG_OUTPUT_FORMATTER1 (0x33) ++#define REG_OUTPUT_FORMATTER2 (0x34) ++#define REG_OUTPUT_FORMATTER3 (0x35) ++#define REG_OUTPUT_FORMATTER4 (0x36) ++#define REG_OUTPUT_FORMATTER5 (0x37) ++#define REG_OUTPUT_FORMATTER6 (0x38) ++#define REG_CLEAR_LOST_LOCK (0x39) ++ ++#define REG_STATUS1 (0x3A) ++#define REG_STATUS2 (0x3B) ++ ++#define REG_AGC_GAIN_STATUS_LSB (0x3C) ++#define REG_AGC_GAIN_STATUS_MSB (0x3D) ++ ++/* 0x3E Reserved */ ++ ++#define REG_VIDEO_STD_STATUS (0x3F) ++#define REG_GPIO_INPUT1 (0x40) ++#define REG_GPIO_INPUT2 (0x41) ++ ++/* 0x42 - 0x45 Reserved */ ++ ++#define REG_AFE_COARSE_GAIN_CH1 (0x46) ++#define REG_AFE_COARSE_GAIN_CH2 (0x47) ++#define REG_AFE_COARSE_GAIN_CH3 (0x48) ++#define REG_AFE_COARSE_GAIN_CH4 (0x49) ++ ++#define REG_AFE_FINE_GAIN_PB_B_LSB (0x4A) ++#define REG_AFE_FINE_GAIN_PB_B_MSB (0x4B) ++#define REG_AFE_FINE_GAIN_Y_G_CHROMA_LSB (0x4C) ++#define REG_AFE_FINE_GAIN_Y_G_CHROMA_MSB (0x4D) ++#define REG_AFE_FINE_GAIN_PR_R_LSB (0x4E) ++#define REG_AFE_FINE_GAIN_PR_R_MSB (0x4F) ++#define REG_AFE_FINE_GAIN_CVBS_LUMA_LSB (0x50) ++#define REG_AFE_FINE_GAIN_CVBS_LUMA_MSB (0x51) ++ ++/* 0x52 - 0x68 Reserved */ ++ ++#define REG_FBIT_VBIT_CONTROL1 (0x69) ++ ++/* 0x6A - 0x6B Reserved */ ++ ++#define REG_BACKEND_AGC_CONTROL (0x6C) ++ ++/* 0x6D - 0x6E Reserved */ ++ ++#define REG_AGC_DECREMENT_SPEED_CONTROL (0x6F) ++#define REG_ROM_VERSION (0x70) ++ ++/* 0x71 - 0x73 Reserved */ ++ ++#define REG_AGC_WHITE_PEAK_PROCESSING (0x74) ++#define REG_FBIT_VBIT_CONTROL2 (0x75) ++#define REG_VCR_TRICK_MODE_CONTROL (0x76) ++#define REG_HORIZONTAL_SHAKE_INCREMENT (0x77) ++#define REG_AGC_INCREMENT_SPEED (0x78) ++#define REG_AGC_INCREMENT_DELAY (0x79) ++ ++/* 0x7A - 0x7F Reserved */ ++ ++#define REG_CHIP_ID_MSB (0x80) ++#define REG_CHIP_ID_LSB (0x81) ++ ++/* 0x82 Reserved */ ++ ++#define REG_CPLL_SPEED_CONTROL (0x83) ++ ++/* 0x84 - 0x96 Reserved */ ++ ++#define REG_STATUS_REQUEST (0x97) ++ ++/* 0x98 - 0x99 Reserved */ ++ ++#define REG_VERTICAL_LINE_COUNT_LSB (0x9A) ++#define REG_VERTICAL_LINE_COUNT_MSB (0x9B) ++ ++/* 0x9C - 0x9D Reserved */ ++ ++#define REG_AGC_DECREMENT_DELAY (0x9E) ++ ++/* 0x9F - 0xB0 Reserved */ ++ ++#define REG_VDP_TTX_FILTER_1_MASK1 (0xB1) ++#define REG_VDP_TTX_FILTER_1_MASK2 (0xB2) ++#define REG_VDP_TTX_FILTER_1_MASK3 (0xB3) ++#define REG_VDP_TTX_FILTER_1_MASK4 (0xB4) ++#define REG_VDP_TTX_FILTER_1_MASK5 (0xB5) ++#define REG_VDP_TTX_FILTER_2_MASK1 (0xB6) ++#define REG_VDP_TTX_FILTER_2_MASK2 (0xB7) ++#define REG_VDP_TTX_FILTER_2_MASK3 (0xB8) ++#define REG_VDP_TTX_FILTER_2_MASK4 (0xB9) ++#define REG_VDP_TTX_FILTER_2_MASK5 (0xBA) ++#define REG_VDP_TTX_FILTER_CONTROL (0xBB) ++#define REG_VDP_FIFO_WORD_COUNT (0xBC) ++#define REG_VDP_FIFO_INTERRUPT_THRLD (0xBD) ++ ++/* 0xBE Reserved */ ++ ++#define REG_VDP_FIFO_RESET (0xBF) ++#define REG_VDP_FIFO_OUTPUT_CONTROL (0xC0) ++#define REG_VDP_LINE_NUMBER_INTERRUPT (0xC1) ++#define REG_VDP_PIXEL_ALIGNMENT_LSB (0xC2) ++#define REG_VDP_PIXEL_ALIGNMENT_MSB (0xC3) ++ ++/* 0xC4 - 0xD5 Reserved */ ++ ++#define REG_VDP_LINE_START (0xD6) ++#define REG_VDP_LINE_STOP (0xD7) ++#define REG_VDP_GLOBAL_LINE_MODE (0xD8) ++#define REG_VDP_FULL_FIELD_ENABLE (0xD9) ++#define REG_VDP_FULL_FIELD_MODE (0xDA) ++ ++/* 0xDB - 0xDF Reserved */ ++ ++#define REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR (0xE0) ++#define REG_VBUS_DATA_ACCESS_VBUS_ADDR_INCR (0xE1) ++#define REG_FIFO_READ_DATA (0xE2) ++ ++/* 0xE3 - 0xE7 Reserved */ ++ ++#define REG_VBUS_ADDRESS_ACCESS1 (0xE8) ++#define REG_VBUS_ADDRESS_ACCESS2 (0xE9) ++#define REG_VBUS_ADDRESS_ACCESS3 (0xEA) ++ ++/* 0xEB - 0xEF Reserved */ ++ ++#define REG_INTERRUPT_RAW_STATUS0 (0xF0) ++#define REG_INTERRUPT_RAW_STATUS1 (0xF1) ++#define REG_INTERRUPT_STATUS0 (0xF2) ++#define REG_INTERRUPT_STATUS1 (0xF3) ++#define REG_INTERRUPT_MASK0 (0xF4) ++#define REG_INTERRUPT_MASK1 (0xF5) ++#define REG_INTERRUPT_CLEAR0 (0xF6) ++#define REG_INTERRUPT_CLEAR1 (0xF7) ++ ++/* 0xF8 - 0xFF Reserved */ ++ ++/* The ID values we are looking for */ ++#define MT9V113_CHIP_ID_MSB (0x51) ++ ++#define MT9V113_IMAGE_STD_VGA (0x01) ++#define MT9V113_IMAGE_STD_QVGA (0x02) ++#define MT9V113_IMAGE_STD_INVALID (0xFF) ++ ++/* ++ * Status bit ++ */ ++#define STATUS_TV_VCR_BIT (1<<0) ++#define STATUS_HORZ_SYNC_LOCK_BIT (1<<1) ++#define STATUS_VIRT_SYNC_LOCK_BIT (1<<2) ++#define STATUS_CLR_SUBCAR_LOCK_BIT (1<<3) ++#define STATUS_LOST_LOCK_DETECT_BIT (1<<4) ++#define STATUS_FEILD_RATE_BIT (1<<5) ++#define STATUS_LINE_ALTERNATING_BIT (1<<6) ++#define STATUS_PEAK_WHITE_DETECT_BIT (1<<7) ++ ++/* Tokens for register write */ ++#define TOK_WRITE (0) /* token for write operation */ ++#define TOK_TERM (1) /* terminating token */ ++#define TOK_DELAY (2) /* delay token for reg list */ ++#define TOK_SKIP (3) /* token to skip a register */ ++/** ++ * struct mt9v113_reg - Structure for TVP5146/47 register initialization values ++ * @token - Token: TOK_WRITE, TOK_TERM etc.. ++ * @reg - Register offset ++ * @val - Register Value for TOK_WRITE or delay in ms for TOK_DELAY ++ */ ++struct mt9v113_reg { ++ unsigned short token; ++ unsigned short reg; ++ unsigned short val; ++}; ++ ++/** ++ * struct mt9v113_init_seq - Structure for TVP5146/47/46M2/47M1 power up ++ * Sequence. ++ * @ no_regs - Number of registers to write for power up sequence. ++ * @ init_reg_seq - Array of registers and respective value to write. ++ */ ++struct mt9v113_init_seq { ++ unsigned int no_regs; ++ const struct mt9v113_reg *init_reg_seq; ++}; ++ ++#define MT9V113_CHIP_ID (0x2280) ++ ++#endif /* ifndef _MT9V113_REGS_H */ +diff --git a/include/media/mt9v113.h b/include/media/mt9v113.h +new file mode 100644 +index 0000000..c7ad362 +--- /dev/null ++++ b/include/media/mt9v113.h +@@ -0,0 +1,83 @@ ++/* ++ * drivers/media/video/mt9v113.h ++ * ++ * Copyright (C) 2008 Texas Instruments Inc ++ * Author: Vaibhav Hiremath ++ * ++ * Contributors: ++ * Sivaraj R ++ * Brijesh R Jadav ++ * Hardik Shah ++ * Manjunath Hadli ++ * Karicheri Muralidharan ++ * ++ * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++#ifndef _MT9V113_H ++#define _MT9V113_H ++ ++/* ++ * Other macros ++ */ ++#define MT9V113_MODULE_NAME "mt9v113" ++ ++/* Number of pixels and number of lines per frame for different standards */ ++#define VGA_NUM_ACTIVE_PIXELS (640*2) ++#define VGA_NUM_ACTIVE_LINES (480) ++#define QVGA_NUM_ACTIVE_PIXELS (320*2) ++#define QVGA_NUM_ACTIVE_LINES (240) ++ ++/** ++ * struct mt9v113_platform_data - Platform data values and access functions. ++ * @power_set: Power state access function, zero is off, non-zero is on. ++ * @ifparm: Interface parameters access function. ++ * @priv_data_set: Device private data (pointer) access function. ++ * @clk_polarity: Clock polarity of the current interface. ++ * @ hs_polarity: HSYNC Polarity configuration for current interface. ++ * @ vs_polarity: VSYNC Polarity configuration for current interface. ++ */ ++struct mt9v113_platform_data { ++ char *master; ++ int (*power_set) (struct v4l2_int_device *s, enum v4l2_power on); ++ int (*ifparm) (struct v4l2_ifparm *p); ++ int (*priv_data_set) (void *); ++ /* Interface control params */ ++ bool clk_polarity; ++ bool hs_polarity; ++ bool vs_polarity; ++}; ++ ++// new ++ ++/*i2c adress for MT9V113*/ ++#define MT9V113_I2C_ADDR (0x78 >>1) ++ ++#define I2C_ONE_BYTE_TRANSFER (1) ++#define I2C_TWO_BYTE_TRANSFER (2) ++#define I2C_THREE_BYTE_TRANSFER (3) ++#define I2C_FOUR_BYTE_TRANSFER (4) ++#define I2C_TXRX_DATA_MASK (0x00FF) ++#define I2C_TXRX_DATA_MASK_UPPER (0xFF00) ++#define I2C_TXRX_DATA_SHIFT (8) ++ ++#define MT9V113_VGA_30FPS (1130) ++#define MT9V113_QVGA_30FPS (1131) ++ ++#define MT9V113_CLK_MAX (54000000) /* 54MHz */ ++#define MT9V113_CLK_MIN (6000000) /* 6Mhz */ ++ ++#endif /* ifndef _MT9V113_H */ ++ +diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-int-device.h +index ce415ec..7827575 100644 +--- a/include/media/v4l2-int-device.h ++++ b/include/media/v4l2-int-device.h +@@ -115,6 +115,7 @@ enum v4l2_if_type { + V4L2_IF_TYPE_BT656, + V4L2_IF_TYPE_YCbCr, + V4L2_IF_TYPE_RAW, ++ V4L2_IF_TYPE_PARALLEL, + }; + + enum v4l2_if_type_bt656_mode { +@@ -215,12 +216,38 @@ struct v4l2_if_type_raw { + u32 clock_curr; + }; + ++struct v4l2_if_type_parallel { ++ /* ++ * 0: Frame begins when vsync is high. ++ * 1: Frame begins when vsync changes from low to high. ++ */ ++ unsigned frame_start_on_rising_vs: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 no_hs_inv:1; ++ /* Vs polarity. 0 is active high, 1 active low. */ ++ unsigned no_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; ++ struct v4l2_if_type_parallel parallel; + } u; + }; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0032-MT9V113-Fixed-sensor-nitialization-issues.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0032-MT9V113-Fixed-sensor-nitialization-issues.patch new file mode 100644 index 0000000..ffb1e6b --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0032-MT9V113-Fixed-sensor-nitialization-issues.patch @@ -0,0 +1,294 @@ +From b4d9f3d3f45b3f47ec243df170381b0c2d1049e7 Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Fri, 9 Jul 2010 17:38:09 +0530 +Subject: [PATCH 32/75] MT9V113: Fixed sensor nitialization issues + +With this patch sensor is now able to generate HS, VS and pixel clock, also +CCDC is able to generate HS/VS, VD0, VD1 interrupts. + +There are some issues with Buffer processing in ISR routine because of which +DQBUF still hangs. +--- + drivers/media/video/mt9v113.c | 155 ++++++++++++++++++++---------------- + drivers/media/video/omap34xxcam.c | 2 +- + 2 files changed, 87 insertions(+), 70 deletions(-) + +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +index 755a88a..8f8ba35 100644 +--- a/drivers/media/video/mt9v113.c ++++ b/drivers/media/video/mt9v113.c +@@ -389,8 +389,8 @@ static int mt9v113_read_reg(struct i2c_client *client, unsigned short reg) + err = -ENODEV; + return err; + }else { +- // TODO: addr should be set up where else +- msg->addr = MT9V113_I2C_ADDR;//client->addr; ++ /* TODO: addr should be set up where else client->addr */ ++ msg->addr = MT9V113_I2C_ADDR; + msg->flags = 0; + msg->len = I2C_TWO_BYTE_TRANSFER; + msg->buf = data; +@@ -432,8 +432,8 @@ static int mt9v113_write_reg(struct i2c_client *client, unsigned short reg, unsi + if (!client->adapter) { + err = -ENODEV; + } else { +- // TODO: addr should be set up where else +- msg->addr = MT9V113_I2C_ADDR;//client->addr; ++ /* TODO:addr should be set up where else client->addr */ ++ msg->addr = MT9V113_I2C_ADDR; + msg->flags = 0; + msg->len = I2C_FOUR_BYTE_TRANSFER; + msg->buf = data; +@@ -446,51 +446,11 @@ static int mt9v113_write_reg(struct i2c_client *client, unsigned short reg, unsi + err = i2c_transfer(client->adapter, msg, 1); + } + } +- if (err < 0) { ++ if (err < 0) + printk(KERN_INFO "\n I2C write failed"); +- } +- return err; +-} +- +-/* configure mux, for DM355 EVM only */ +-#ifndef CONFIG_MACH_DM355_LEOPARD +-static int mt9v113_en_mux(struct i2c_client *client) +-{ +- int err = 0; +- int trycnt = 0; +- /* unsigned short readval = 0;*/ +- +- struct i2c_msg msg[1]; +- unsigned char data[4]; +- err = -1; +- printk(KERN_INFO +- "\n entering mt9v113_en_mux \n"); +- +- while ((err < 0) && (trycnt < 5)) { +- trycnt++; +- if (!client->adapter) { +- err = -ENODEV; +- } else { +- msg->addr = 0x25; +- msg->flags = 0; +- msg->len = I2C_TWO_BYTE_TRANSFER; +- msg->buf = data; +- data[0] = (unsigned char)(0x08 & I2C_TXRX_DATA_MASK); +- data[1] = (unsigned char)(0x80 & I2C_TXRX_DATA_MASK); + +- err = i2c_transfer(client->adapter, msg, 1); +- if (err < 0) { +- printk(KERN_INFO +- "\n ERROR in ECP register write\n"); +- } +- } +- } +- if (err < 0) { +- printk(KERN_INFO "\n I2C write failed"); +- } + return err; + } +-#endif + + /* + * mt9v113_write_regs : Initializes a list of registers +@@ -550,9 +510,10 @@ static int mt9v113_configure(struct mt9v113_decoder *decoder) + if (err) + return err; + +-// if (debug) +-// mt9v113_reg_dump(decoder); +- ++#if 0 ++ if (debug) ++ mt9v113_reg_dump(decoder); ++#endif + return 0; + } + +@@ -573,6 +534,62 @@ static int mt9v113_vga_mode(struct mt9v113_decoder *decoder) + } + + ++/** ++ * ioctl_enum_framesizes - V4L2 sensor if handler for vidioc_int_enum_framesizes ++ * @s: pointer to standard V4L2 device structure ++ * @frms: pointer to standard V4L2 framesizes enumeration structure ++ * ++ * Returns possible framesizes depending on choosen pixel format ++ **/ ++static int ioctl_enum_framesizes(struct v4l2_int_device *s, ++ struct v4l2_frmsizeenum *frms) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int ifmt; ++ ++ for (ifmt = 0; ifmt < decoder->num_fmts; ifmt++) { ++ if (frms->pixel_format == decoder->fmt_list[ifmt].pixelformat) ++ break; ++ } ++ /* Is requested pixelformat not found on sensor? */ ++ if (ifmt == decoder->num_fmts) ++ return -EINVAL; ++ ++ /* Do we already reached all discrete framesizes? */ ++ if (frms->index >= decoder->num_stds) ++ return -EINVAL; ++ ++ frms->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frms->discrete.width = decoder->std_list[frms->index].width; ++ frms->discrete.height = decoder->std_list[frms->index].height; ++ ++ return 0; ++ ++} ++ ++static int ioctl_enum_frameintervals(struct v4l2_int_device *s, ++ struct v4l2_frmivalenum *frmi) ++{ ++ struct mt9v113_decoder *decoder = s->priv; ++ int ifmt; ++ ++ if (frmi->index >= 1) ++ return -EINVAL; ++ ++ for (ifmt = 0; ifmt < decoder->num_fmts; ifmt++) { ++ if (frmi->pixel_format == decoder->fmt_list[ifmt].pixelformat) ++ break; ++ } ++ /* Is requested pixelformat not found on sensor? */ ++ if (ifmt == decoder->num_fmts) ++ return -EINVAL; ++ ++ frmi->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frmi->discrete.numerator = 1; ++ frmi->discrete.denominator = 10; ++ return 0; ++} ++ + /* + * Detect if an mt9v113 is present, and if so which revision. + * A device is considered to be detected if the chip ID (LSB and MSB) +@@ -585,15 +602,9 @@ static int mt9v113_detect(struct mt9v113_decoder *decoder) + { + unsigned short val=0; + +-#ifndef CONFIG_MACH_DM355_LEOPARD +-// mt9v113_en_mux(decoder->client); +-#endif +- + val = mt9v113_read_reg(decoder->client, REG_CHIP_ID); + +- v4l_dbg(1, debug, decoder->client, +- "chip id detected 0x%x\n", +- val); ++ v4l_dbg(1, debug, decoder->client, "chip id detected 0x%x\n", val); + + if (MT9V113_CHIP_ID != val) { + /* We didn't read the values we expected, so this must not be +@@ -1042,7 +1053,7 @@ ioctl_s_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) + if (rval) + return rval; + +- decoder->pix = *pix; ++ decoder->pix = *pix; + + return rval; + } +@@ -1177,7 +1188,7 @@ static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) + return rval; + } + +- p->u.bt656.clock_curr = 27000000; // TODO: read clock rate from sensor ++ p->u.bt656.clock_curr = 27000000; /* TODO:read clock rate from sensor */ + + return 0; + } +@@ -1211,12 +1222,17 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + struct mt9v113_decoder *decoder = s->priv; + int err = 0; + ++ if (decoder->state == STATE_DETECTED) ++ return 0; ++ + switch (on) { + case V4L2_POWER_OFF: + /* Power Down Sequence */ +- err = +- mt9v113_write_reg(decoder->client, REG_OPERATION_MODE, +- 0x01); ++/* TODO: FIXME: implement proper OFF and Standby code here */ ++#if 0 ++ err = mt9v113_write_reg(decoder->client, REG_OPERATION_MODE, ++ 0x01); ++#endif + /* Disable mux for mt9v113 data path */ + if (decoder->pdata->power_set) + err |= decoder->pdata->power_set(s, on); +@@ -1242,9 +1258,10 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + "Unable to detect decoder\n"); + return err; + } ++ /* Only VGA mode for now */ ++ err |= mt9v113_configure(decoder); ++ err |= mt9v113_vga_mode(decoder); + } +- // Only VGA mode for now +- err |= mt9v113_vga_mode(decoder); + break; + + default: +@@ -1263,14 +1280,11 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + */ + static int ioctl_init(struct v4l2_int_device *s) + { +-// struct mt9v113_decoder *decoder = s->priv; ++ struct mt9v113_decoder *decoder = s->priv; + int err = 0; + +- /* Set default standard to auto */ +- //mt9v113_reg_list[REG_VIDEO_STD].val = +- // VIDEO_STD_AUTO_SWITCH_BIT; +-// err |= mt9v113_configure(decoder); +-// err |= mt9v113_vga_mode(decoder); ++ err |= mt9v113_configure(decoder); ++ err |= mt9v113_vga_mode(decoder); + + return err; + } +@@ -1298,7 +1312,6 @@ static int ioctl_dev_init(struct v4l2_int_device *s) + struct mt9v113_decoder *decoder = s->priv; + int err; + +- printk("%s: %d\n", __func__, __LINE__); + err = mt9v113_detect(decoder); + if (err < 0) { + v4l_err(decoder->client, +@@ -1340,6 +1353,10 @@ static struct v4l2_int_ioctl_desc mt9v113_ioctl_desc[] = { + {vidioc_int_s_std_num, (v4l2_int_ioctl_func *) ioctl_s_std}, + {vidioc_int_s_video_routing_num, + (v4l2_int_ioctl_func *) ioctl_s_routing}, ++ {vidioc_int_enum_framesizes_num, ++ (v4l2_int_ioctl_func *)ioctl_enum_framesizes}, ++ {vidioc_int_enum_frameintervals_num, ++ (v4l2_int_ioctl_func *)ioctl_enum_frameintervals}, + }; + + static struct v4l2_int_slave mt9v113_slave = { +diff --git a/drivers/media/video/omap34xxcam.c b/drivers/media/video/omap34xxcam.c +index 6301ed3..2e8153b 100644 +--- a/drivers/media/video/omap34xxcam.c ++++ b/drivers/media/video/omap34xxcam.c +@@ -1852,8 +1852,8 @@ static int omap34xxcam_open(struct file *file) + vdev->slave_config[OMAP34XXCAM_SLAVE_SENSOR] + .cur_input = route.input; + } +- sensor_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + } ++ sensor_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + /* Get the format the sensor is using. */ + rval = vidioc_int_g_fmt_cap(vdev->vdev_sensor, &sensor_format); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0033-mt9v113-Fix-wrong-active-widths.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0033-mt9v113-Fix-wrong-active-widths.patch new file mode 100644 index 0000000..c436b91 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0033-mt9v113-Fix-wrong-active-widths.patch @@ -0,0 +1,29 @@ +From 77361cf426202a92395921c25e77190b8fb0cdd6 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 9 Jul 2010 16:22:38 -0500 +Subject: [PATCH 33/75] mt9v113: Fix wrong active widths + +Signed-off-by: Sergio Aguirre +--- + include/media/mt9v113.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/media/mt9v113.h b/include/media/mt9v113.h +index c7ad362..0a30f4c 100644 +--- a/include/media/mt9v113.h ++++ b/include/media/mt9v113.h +@@ -35,9 +35,9 @@ + #define MT9V113_MODULE_NAME "mt9v113" + + /* Number of pixels and number of lines per frame for different standards */ +-#define VGA_NUM_ACTIVE_PIXELS (640*2) ++#define VGA_NUM_ACTIVE_PIXELS (640) + #define VGA_NUM_ACTIVE_LINES (480) +-#define QVGA_NUM_ACTIVE_PIXELS (320*2) ++#define QVGA_NUM_ACTIVE_PIXELS (320) + #define QVGA_NUM_ACTIVE_LINES (240) + + /** +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0034-omap3isp-Fix-Wrong-check-on-non-interlaced-sensor-on.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0034-omap3isp-Fix-Wrong-check-on-non-interlaced-sensor-on.patch new file mode 100644 index 0000000..72af379 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0034-omap3isp-Fix-Wrong-check-on-non-interlaced-sensor-on.patch @@ -0,0 +1,34 @@ +From d6e6a76aa9d842ed9f8963ed10fc884cff3af5dd Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 9 Jul 2010 16:56:18 -0500 +Subject: [PATCH 34/75] omap3isp: Fix Wrong check on non-interlaced sensor on isr + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/isp/isp.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c +index 29dd005..2ef2d58 100644 +--- a/drivers/media/video/isp/isp.c ++++ b/drivers/media/video/isp/isp.c +@@ -978,11 +978,12 @@ static irqreturn_t omap34xx_isp_isr(int irq, void *_pdev) + } + + if (irqstatus & CCDC_VD0) { +- if (isp->pipeline.pix.field == V4L2_FIELD_INTERLACED) { ++ if (((isp->pipeline.pix.field == V4L2_FIELD_INTERLACED) && ++ (isp->current_field != 0)) || ++ (isp->pipeline.pix.field != V4L2_FIELD_INTERLACED)) { + /* Skip even fields, and process only odd fields */ +- if (isp->current_field != 0) +- if (RAW_CAPTURE(isp)) +- isp_buf_process(dev, bufs); ++ if (RAW_CAPTURE(isp)) ++ isp_buf_process(dev, bufs); + } + if (!ispccdc_busy(&isp->isp_ccdc)) + ispccdc_config_shadow_registers(&isp->isp_ccdc); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0035-omap3isp-Fix-bad-YUV_BT-checks-in-datapath_config.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0035-omap3isp-Fix-bad-YUV_BT-checks-in-datapath_config.patch new file mode 100644 index 0000000..bb2a7f1 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0035-omap3isp-Fix-bad-YUV_BT-checks-in-datapath_config.patch @@ -0,0 +1,45 @@ +From e069619a821aca3569440a4d8ccf3727ebe80ddd Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Sat, 10 Jul 2010 09:51:16 -0500 +Subject: [PATCH 35/75] omap3isp: Fix bad YUV_BT checks in datapath_config + +The use of an external write enable signals (from ISP point of +view) shouldn't depend on the sensor parallel interface type. + +Also, the bit shift selection should NOT be other than 9_0 by +default (i.e. No shift). + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/isp/ispccdc.c | 15 +++++---------- + 1 files changed, 5 insertions(+), 10 deletions(-) + +diff --git a/drivers/media/video/isp/ispccdc.c b/drivers/media/video/isp/ispccdc.c +index 137a5e6..ea6d87c 100644 +--- a/drivers/media/video/isp/ispccdc.c ++++ b/drivers/media/video/isp/ispccdc.c +@@ -602,16 +602,11 @@ static int ispccdc_config_datapath(struct isp_ccdc_device *isp_ccdc, + syn_mode &= ~ISPCCDC_SYN_MODE_VP2SDR; + syn_mode &= ~ISPCCDC_SYN_MODE_SDR2RSZ; + syn_mode |= ISPCCDC_SYN_MODE_WEN; +- if (pipe->ccdc_in == CCDC_YUV_BT) { +- syn_mode &= ~ISPCCDC_SYN_MODE_EXWEN; +- isp_reg_and(isp_ccdc->dev, OMAP3_ISP_IOMEM_CCDC, +- ISPCCDC_CFG, ~ISPCCDC_CFG_WENLOG); +- } else { +- syn_mode |= ISPCCDC_SYN_MODE_EXWEN; +- isp_reg_or(isp_ccdc->dev, OMAP3_ISP_IOMEM_CCDC, +- ISPCCDC_CFG, ISPCCDC_CFG_WENLOG); +- } +- vpcfg.bitshift_sel = BIT11_2; ++ syn_mode &= ~ISPCCDC_SYN_MODE_EXWEN; ++ ++ isp_reg_and(isp_ccdc->dev, OMAP3_ISP_IOMEM_CCDC, ++ ISPCCDC_CFG, ~ISPCCDC_CFG_WENLOG); ++ vpcfg.bitshift_sel = BIT9_0; + vpcfg.freq_sel = PIXCLKBY2; + ispccdc_config_vp(isp_ccdc, vpcfg); + ispccdc_enable_vp(isp_ccdc, 0); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0036-omap3isp-Set-vd_pol-to-0-by-default-on-all-cases.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0036-omap3isp-Set-vd_pol-to-0-by-default-on-all-cases.patch new file mode 100644 index 0000000..6a43782 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0036-omap3isp-Set-vd_pol-to-0-by-default-on-all-cases.patch @@ -0,0 +1,35 @@ +From 2f4a4612cd2fa21468f708a9c981e39a3927611f Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Sat, 10 Jul 2010 09:57:40 -0500 +Subject: [PATCH 36/75] omap3isp: Set vd_pol to 0 by default on all cases + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/isp/ispccdc.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/video/isp/ispccdc.c b/drivers/media/video/isp/ispccdc.c +index ea6d87c..b4691c0 100644 +--- a/drivers/media/video/isp/ispccdc.c ++++ b/drivers/media/video/isp/ispccdc.c +@@ -671,7 +671,7 @@ static int ispccdc_config_datapath(struct isp_ccdc_device *isp_ccdc, + syncif.fldstat = 0; + syncif.hdpol = 0; + syncif.ipmod = YUV16; +- syncif.vdpol = 1; ++ syncif.vdpol = 0; + syncif.bt_r656_en = 0; + ispccdc_config_imgattr(isp_ccdc, 0); + ispccdc_config_sync_if(isp_ccdc, syncif); +@@ -688,7 +688,7 @@ static int ispccdc_config_datapath(struct isp_ccdc_device *isp_ccdc, + syncif.fldstat = 0; + syncif.hdpol = 0; + syncif.ipmod = YUV8; +- syncif.vdpol = 1; ++ syncif.vdpol = 0; + syncif.bt_r656_en = 1; + ispccdc_config_imgattr(isp_ccdc, 0); + ispccdc_config_sync_if(isp_ccdc, syncif); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0037-omap3isp-ccdc-Set-datalines-to-10-for-YUV_SYNC.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0037-omap3isp-ccdc-Set-datalines-to-10-for-YUV_SYNC.patch new file mode 100644 index 0000000..ebb3686 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0037-omap3isp-ccdc-Set-datalines-to-10-for-YUV_SYNC.patch @@ -0,0 +1,29 @@ +From 67e3840b98c88da4417e386d3e955385a120138e Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 12 Jul 2010 14:09:38 -0500 +Subject: [PATCH 37/75] omap3isp: ccdc: Set datalines to 10 for YUV_SYNC + +Most of the sensors we use are 10 bits, so set this as +default. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/isp/ispccdc.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/media/video/isp/ispccdc.c b/drivers/media/video/isp/ispccdc.c +index b4691c0..280a721 100644 +--- a/drivers/media/video/isp/ispccdc.c ++++ b/drivers/media/video/isp/ispccdc.c +@@ -664,7 +664,7 @@ static int ispccdc_config_datapath(struct isp_ccdc_device *isp_ccdc, + case CCDC_YUV_SYNC: + syncif.ccdc_mastermode = 0; + syncif.datapol = 0; +- syncif.datsz = DAT8; ++ syncif.datsz = DAT10; + syncif.fldmode = 0; + syncif.fldout = 0; + syncif.fldpol = 0; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0038-omap3beagle-camera-Fix-parallel-i-f-settings.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0038-omap3beagle-camera-Fix-parallel-i-f-settings.patch new file mode 100644 index 0000000..456c4d2 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0038-omap3beagle-camera-Fix-parallel-i-f-settings.patch @@ -0,0 +1,43 @@ +From efa8018485d29f3545e174dc10af0d01b9197077 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 12 Jul 2010 14:11:44 -0500 +Subject: [PATCH 38/75] omap3beagle: camera: Fix parallel i/f settings + +This makes the sensor input be shifted from 13:4 -> 9:0, as +in YUV streaming, the 8 least significant pins are used. + +Also, activate the 8 to 16 bit conversion bridge in ISP, in +big endian mode. + +This makes the ISP interpret the data correctly now. ;) + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 6c06265..0a591a1 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -64,7 +64,7 @@ static struct regulator *beagle_mt9v113_1_8v2; + + static struct isp_interface_config mt9v113_if_config = { + .ccdc_par_ser = ISP_PARLL, +- .dataline_shift = 0x0, ++ .dataline_shift = 0x2, + .hsvs_syncdetect = ISPCTRL_SYNC_DETECT_VSRISE, + .strobe = 0x0, + .prestrobe = 0x0, +@@ -72,7 +72,7 @@ static struct isp_interface_config mt9v113_if_config = { + .cam_mclk = ISP_MT9V113_MCLK, + .wenlog = ISPCCDC_CFG_WENLOG_AND, + .wait_hs_vs = 2, +- .u.par.par_bridge = 0x1, ++ .u.par.par_bridge = 0x3, + .u.par.par_clk_pol = 0x0, + }; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0039-omap3beagle-camera-Clean-up-Remove-unneccessary-code.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0039-omap3beagle-camera-Clean-up-Remove-unneccessary-code.patch new file mode 100644 index 0000000..0c836db --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0039-omap3beagle-camera-Clean-up-Remove-unneccessary-code.patch @@ -0,0 +1,118 @@ +From 9f2341ea93de0e76d71c075791cdada7b9ce163b Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Tue, 13 Jul 2010 19:38:51 +0530 +Subject: [PATCH 39/75] omap3beagle-camera:Clean up: Remove unneccessary code/printf + +Signed-off-by: Vaibhav Hiremath +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 25 +++-------------------- + 1 files changed, 4 insertions(+), 21 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 0a591a1..be59040 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -77,7 +77,7 @@ static struct isp_interface_config mt9v113_if_config = { + }; + + static struct v4l2_ifparm mt9v113_ifparm_s = { +-#if 1 ++#if 0 + .if_type = V4L2_IF_TYPE_RAW, + .u = { + .raw = { +@@ -192,32 +192,24 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + + /* turn on VDD */ + regulator_enable(beagle_mt9v113_1_8v1); +- + mdelay(1); +- + /* turn on VDD_IO */ + regulator_enable(beagle_mt9v113_1_8v2); +- + mdelay(50); + + /* Enable EXTCLK */ + isp_set_xclk(vdev->cam->isp, MT9V113_CLK_MIN, CAM_USE_XCLKA); +- + /* + * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): + * ((1000000 * 70) / 6000000) = aprox 12 us. + */ +- + udelay(12); +- + /* Set RESET_BAR to 1 */ + gpio_set_value(LEOPARD_RESET_GPIO, 1); +- + /* + * Wait at least 100 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): + * ((1000000 * 100) / 6000000) = aprox 17 us. + */ +- + udelay(17); + + break; +@@ -245,15 +237,11 @@ struct mt9v113_platform_data mt9v113_pdata = { + + static int beagle_cam_probe(struct platform_device *pdev) + { +- int err; +- +- printk("%s:%d\n", __func__, __LINE__); + beagle_mt9v113_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); + if (IS_ERR(beagle_mt9v113_1_8v1)) { + dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); + return PTR_ERR(beagle_mt9v113_1_8v1); + } +- printk("%s:%d\n", __func__, __LINE__); + beagle_mt9v113_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); + if (IS_ERR(beagle_mt9v113_1_8v2)) { + dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +@@ -261,7 +249,6 @@ static int beagle_cam_probe(struct platform_device *pdev) + return PTR_ERR(beagle_mt9v113_1_8v2); + } + +- printk("%s:%d\n", __func__, __LINE__); + if (gpio_request(LEOPARD_RESET_GPIO, "cam_rst") != 0) { + dev_err(&pdev->dev, "Could not request GPIO %d", + LEOPARD_RESET_GPIO); +@@ -270,7 +257,6 @@ static int beagle_cam_probe(struct platform_device *pdev) + return -ENODEV; + } + +- printk("%s:%d\n", __func__, __LINE__); + /* set to output mode, default value 0 */ + gpio_direction_output(LEOPARD_RESET_GPIO, 0); + +@@ -281,10 +267,10 @@ static int beagle_cam_probe(struct platform_device *pdev) + + static int beagle_cam_remove(struct platform_device *pdev) + { +- printk("%s:%d\n", __func__, __LINE__); + if (regulator_is_enabled(beagle_mt9v113_1_8v1)) + regulator_disable(beagle_mt9v113_1_8v1); + regulator_put(beagle_mt9v113_1_8v1); ++ + if (regulator_is_enabled(beagle_mt9v113_1_8v2)) + regulator_disable(beagle_mt9v113_1_8v2); + regulator_put(beagle_mt9v113_1_8v2); +@@ -360,12 +346,9 @@ static struct platform_driver beagle_cam_driver = { + */ + int __init omap3beaglelmb_init(void) + { +- printk("%s:%d\n", __func__, __LINE__); +- if (cpu_is_omap3630()) { +- printk("%s:%d\n", __func__, __LINE__); ++ if (cpu_is_omap3630()) + platform_driver_register(&beagle_cam_driver); +- } +- printk("%s:%d\n", __func__, __LINE__); ++ + return 0; + } + late_initcall(omap3beaglelmb_init); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0040-mt9v113-Clean-Up-Remove-unneccessary-code-printf.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0040-mt9v113-Clean-Up-Remove-unneccessary-code-printf.patch new file mode 100644 index 0000000..9e0361d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0040-mt9v113-Clean-Up-Remove-unneccessary-code-printf.patch @@ -0,0 +1,390 @@ +From c0b564c145013ca024787702dc9f43c56016c5ec Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Tue, 13 Jul 2010 19:39:34 +0530 +Subject: [PATCH 40/75] mt9v113:Clean Up: Remove unneccessary code/printf + +Signed-off-by: Vaibhav Hiremath +--- + drivers/media/video/mt9v113.c | 105 ++++++++++++++++------------------------ + 1 files changed, 42 insertions(+), 63 deletions(-) + +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +index 8f8ba35..9a86cce 100644 +--- a/drivers/media/video/mt9v113.c ++++ b/drivers/media/video/mt9v113.c +@@ -22,10 +22,10 @@ + #include + #include + #include ++#include ++ + #include + #include +-#include +-#include + + #include "mt9v113_regs.h" + +@@ -34,21 +34,13 @@ + + /* Private macros for TVP */ + #define I2C_RETRY_COUNT (5) +-#define LOCK_RETRY_COUNT (5) +-#define LOCK_RETRY_DELAY (200) + + /* Debug functions */ + static int debug = 1; + module_param(debug, bool, 0644); + MODULE_PARM_DESC(debug, "Debug level (0-1)"); + +-#define dump_reg(client, reg, val) \ +- do { \ +- val = mt9v113_read_reg(client, reg); \ +- v4l_info(client, "Reg(0x%.2X): 0x%.2X\n", reg, val); \ +- } while (0) +- +-/** ++/* + * enum mt9v113_std - enum for supported standards + */ + enum mt9v113_std { +@@ -57,7 +49,7 @@ enum mt9v113_std { + MT9V113_STD_INVALID + }; + +-/** ++/* + * enum mt9v113_state - enum for different decoder states + */ + enum mt9v113_state { +@@ -65,7 +57,7 @@ enum mt9v113_state { + STATE_DETECTED + }; + +-/** ++/* + * struct mt9v113_std_info - Structure to store standard informations + * @width: Line width in pixels + * @height:Number of active lines +@@ -79,7 +71,7 @@ struct mt9v113_std_info { + struct v4l2_standard standard; + }; + +-/** ++/* + * struct mt9v113_decoded - decoder object + * @v4l2_int_device: Slave handle + * @pdata: Board specific +@@ -93,7 +85,6 @@ struct mt9v113_std_info { + * @current_std: Current standard + * @num_stds: Number of standards + * @std_list: Standards list +- * @route: input and output routing at chip level + */ + struct mt9v113_decoder { + struct v4l2_int_device *v4l2_int_device; +@@ -112,8 +103,6 @@ struct mt9v113_decoder { + enum mt9v113_std current_std; + int num_stds; + struct mt9v113_std_info *std_list; +- +- struct v4l2_routing route; + }; + + /* MT9V113 register set for VGA mode */ +@@ -160,7 +149,7 @@ static struct mt9v113_reg mt9v113_reg_list[] = { + {TOK_WRITE, 0x0016, 0x42DF}, + {TOK_WRITE, 0x0014, 0x2145}, + {TOK_WRITE, 0x0014, 0x2145}, +- {TOK_WRITE, 0x0010, 0x0431}, ++ {TOK_WRITE, 0x0010, 0x0231}, + {TOK_WRITE, 0x0012, 0x0000}, + {TOK_WRITE, 0x0014, 0x244B}, + {TOK_WRITE, 0x0014, 0x304B}, +@@ -378,6 +367,10 @@ static const struct v4l2_queryctrl mt9v113_autogain_ctrl = { + .default_value = 1, + }; + ++const struct v4l2_fract mt9v113_frameintervals[] = { ++ { .numerator = 1, .denominator = 10 } ++}; ++ + static int mt9v113_read_reg(struct i2c_client *client, unsigned short reg) + { + int err = 0; +@@ -510,10 +503,6 @@ static int mt9v113_configure(struct mt9v113_decoder *decoder) + if (err) + return err; + +-#if 0 +- if (debug) +- mt9v113_reg_dump(decoder); +-#endif + return 0; + } + +@@ -534,13 +523,13 @@ static int mt9v113_vga_mode(struct mt9v113_decoder *decoder) + } + + +-/** ++/* + * ioctl_enum_framesizes - V4L2 sensor if handler for vidioc_int_enum_framesizes + * @s: pointer to standard V4L2 device structure + * @frms: pointer to standard V4L2 framesizes enumeration structure + * + * Returns possible framesizes depending on choosen pixel format +- **/ ++ */ + static int ioctl_enum_framesizes(struct v4l2_int_device *s, + struct v4l2_frmsizeenum *frms) + { +@@ -584,9 +573,14 @@ static int ioctl_enum_frameintervals(struct v4l2_int_device *s, + if (ifmt == decoder->num_fmts) + return -EINVAL; + ++ if (frmi->index >= ARRAY_SIZE(mt9v113_frameintervals)) ++ return -EINVAL; ++ + frmi->type = V4L2_FRMSIZE_TYPE_DISCRETE; +- frmi->discrete.numerator = 1; +- frmi->discrete.denominator = 10; ++ frmi->discrete.numerator = ++ mt9v113_frameintervals[frmi->index].numerator; ++ frmi->discrete.denominator = ++ mt9v113_frameintervals[frmi->index].denominator; + return 0; + } + +@@ -631,7 +625,7 @@ static int mt9v113_detect(struct mt9v113_decoder *decoder) + * mt9v113 decoder driver. + */ + +-/** ++/* + * ioctl_querystd - V4L2 decoder interface handler for VIDIOC_QUERYSTD ioctl + * @s: pointer to standard V4L2 device structure + * @std_id: standard V4L2 std_id ioctl enum +@@ -660,7 +654,7 @@ static int ioctl_querystd(struct v4l2_int_device *s, v4l2_std_id *std_id) + return 0; + } + +-/** ++/* + * ioctl_s_std - V4L2 decoder interface handler for VIDIOC_S_STD ioctl + * @s: pointer to standard V4L2 device structure + * @std_id: standard V4L2 v4l2_std_id ioctl enum +@@ -696,7 +690,7 @@ static int ioctl_s_std(struct v4l2_int_device *s, v4l2_std_id *std_id) + return 0; + } + +-/** ++/* + * ioctl_s_routing - V4L2 decoder interface handler for VIDIOC_S_INPUT ioctl + * @s: pointer to standard V4L2 device structure + * @index: number of the input +@@ -711,7 +705,7 @@ static int ioctl_s_routing(struct v4l2_int_device *s, + return 0; + } + +-/** ++/* + * ioctl_queryctrl - V4L2 decoder interface handler for VIDIOC_QUERYCTRL ioctl + * @s: pointer to standard V4L2 device structure + * @qctrl: standard V4L2 v4l2_queryctrl structure +@@ -771,7 +765,7 @@ ioctl_queryctrl(struct v4l2_int_device *s, struct v4l2_queryctrl *qctrl) + return err; + } + +-/** ++/* + * ioctl_g_ctrl - V4L2 decoder interface handler for VIDIOC_G_CTRL ioctl + * @s: pointer to standard V4L2 device structure + * @ctrl: pointer to v4l2_control structure +@@ -828,7 +822,7 @@ ioctl_g_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl) + return 0; + } + +-/** ++/* + * ioctl_s_ctrl - V4L2 decoder interface handler for VIDIOC_S_CTRL ioctl + * @s: pointer to standard V4L2 device structure + * @ctrl: pointer to v4l2_control structure +@@ -936,7 +930,7 @@ ioctl_s_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl) + return err; + } + +-/** ++/* + * ioctl_enum_fmt_cap - Implement the CAPTURE buffer VIDIOC_ENUM_FMT ioctl + * @s: pointer to standard V4L2 device structure + * @fmt: standard V4L2 VIDIOC_ENUM_FMT ioctl structure +@@ -969,7 +963,7 @@ ioctl_enum_fmt_cap(struct v4l2_int_device *s, struct v4l2_fmtdesc *fmt) + return 0; + } + +-/** ++/* + * ioctl_try_fmt_cap - Implement the CAPTURE buffer VIDIOC_TRY_FMT ioctl + * @s: pointer to standard V4L2 device structure + * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure +@@ -1026,7 +1020,7 @@ ioctl_try_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) + return 0; + } + +-/** ++/* + * ioctl_s_fmt_cap - V4L2 decoder interface handler for VIDIOC_S_FMT ioctl + * @s: pointer to standard V4L2 device structure + * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure +@@ -1058,7 +1052,7 @@ ioctl_s_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) + return rval; + } + +-/** ++/* + * ioctl_g_fmt_cap - V4L2 decoder interface handler for ioctl_g_fmt_cap + * @s: pointer to standard V4L2 device structure + * @f: pointer to standard V4L2 v4l2_format structure +@@ -1087,7 +1081,7 @@ ioctl_g_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f) + return 0; + } + +-/** ++/* + * ioctl_g_parm - V4L2 decoder interface handler for VIDIOC_G_PARM ioctl + * @s: pointer to standard V4L2 device structure + * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure +@@ -1125,7 +1119,7 @@ ioctl_g_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) + return 0; + } + +-/** ++/* + * ioctl_s_parm - V4L2 decoder interface handler for VIDIOC_S_PARM ioctl + * @s: pointer to standard V4L2 device structure + * @a: pointer to standard V4L2 VIDIOC_S_PARM ioctl structure +@@ -1161,7 +1155,7 @@ ioctl_s_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) + return 0; + } + +-/** ++/* + * ioctl_g_ifparm - V4L2 decoder interface handler for vidioc_int_g_ifparm_num + * @s: pointer to standard V4L2 device structure + * @p: pointer to standard V4L2 vidioc_int_g_ifparm_num ioctl structure +@@ -1193,7 +1187,7 @@ static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) + return 0; + } + +-/** ++/* + * ioctl_g_priv - V4L2 decoder interface handler for vidioc_int_g_priv_num + * @s: pointer to standard V4L2 device structure + * @p: void pointer to hold decoder's private data address +@@ -1210,7 +1204,7 @@ static int ioctl_g_priv(struct v4l2_int_device *s, void *p) + return decoder->pdata->priv_data_set(p); + } + +-/** ++/* + * ioctl_s_power - V4L2 decoder interface handler for vidioc_int_s_power_num + * @s: pointer to standard V4L2 device structure + * @on: power state to which device is to be set +@@ -1272,7 +1266,7 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + return err; + } + +-/** ++/* + * ioctl_init - V4L2 decoder interface handler for VIDIOC_INT_INIT + * @s: pointer to standard V4L2 device structure + * +@@ -1289,7 +1283,7 @@ static int ioctl_init(struct v4l2_int_device *s) + return err; + } + +-/** ++/* + * ioctl_dev_exit - V4L2 decoder interface handler for vidioc_int_dev_exit_num + * @s: pointer to standard V4L2 device structure + * +@@ -1300,7 +1294,7 @@ static int ioctl_dev_exit(struct v4l2_int_device *s) + return 0; + } + +-/** ++/* + * ioctl_dev_init - V4L2 decoder interface handler for vidioc_int_dev_init_num + * @s: pointer to standard V4L2 device structure + * +@@ -1397,7 +1391,7 @@ static struct v4l2_int_device mt9v113_int_device = { + }, + }; + +-/** ++/* + * mt9v113_probe - decoder driver i2c probe handler + * @client: i2c driver client device structure + * +@@ -1410,30 +1404,15 @@ mt9v113_probe(struct i2c_client *client, const struct i2c_device_id *id) + struct mt9v113_decoder *decoder = &mt9v113_dev; + int err; + +- printk("%s: %d\n", __func__, __LINE__); + /* Check if the adapter supports the needed features */ + if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) + return -EIO; + +- printk("%s: %d\n", __func__, __LINE__); + decoder->pdata = client->dev.platform_data; + if (!decoder->pdata) { + v4l_err(client, "No platform data!!\n"); + return -ENODEV; + } +- printk("%s: %d\n", __func__, __LINE__); +- /* +- * Fetch platform specific data, and configure the +- * mt9v113_reg_list[] accordingly. Since this is one +- * time configuration, no need to preserve. +- */ +- +- /*mt9v113_reg_list[REG_OUTPUT_FORMATTER2].val |= +- (decoder->pdata->clk_polarity << 1); +- mt9v113_reg_list[REG_SYNC_CONTROL].val |= +- ((decoder->pdata->hs_polarity << 2) | +- (decoder->pdata->vs_polarity << 3)); +- */ + /* + * Save the id data, required for power up sequence + */ +@@ -1458,7 +1437,7 @@ mt9v113_probe(struct i2c_client *client, const struct i2c_device_id *id) + return 0; + } + +-/** ++/* + * mt9v113_remove - decoder driver i2c remove handler + * @client: i2c driver client device structure + * +@@ -1511,7 +1490,7 @@ static struct i2c_driver mt9v113_i2c_driver = { + .id_table = mt9v113_id, + }; + +-/** ++/* + * mt9v113_init + * + * Module init function +@@ -1521,7 +1500,7 @@ static int __init mt9v113_init(void) + return i2c_add_driver(&mt9v113_i2c_driver); + } + +-/** ++/* + * mt9v113_cleanup + * + * Module exit function +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0041-MT9V113-Min-Max-clk-input-changed-as-per-the-spec.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0041-MT9V113-Min-Max-clk-input-changed-as-per-the-spec.patch new file mode 100644 index 0000000..a9cac28 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0041-MT9V113-Min-Max-clk-input-changed-as-per-the-spec.patch @@ -0,0 +1,54 @@ +From b174adfdb2836b01f8306f6112b7a8c36540f7d2 Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Tue, 13 Jul 2010 19:40:39 +0530 +Subject: [PATCH 41/75] MT9V113: Min, Max clk input changed as per the spec + +Signed-off-by: Vaibhav Hiremath +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 2 +- + drivers/media/video/isp/ispreg.h | 2 +- + include/media/mt9v113.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index be59040..8d4e5ab 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -198,7 +198,7 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + mdelay(50); + + /* Enable EXTCLK */ +- isp_set_xclk(vdev->cam->isp, MT9V113_CLK_MIN, CAM_USE_XCLKA); ++ isp_set_xclk(vdev->cam->isp, MT9V113_CLK_MIN*2, CAM_USE_XCLKA); + /* + * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): + * ((1000000 * 70) / 6000000) = aprox 12 us. +diff --git a/drivers/media/video/isp/ispreg.h b/drivers/media/video/isp/ispreg.h +index 1240e0e..098713e 100644 +--- a/drivers/media/video/isp/ispreg.h ++++ b/drivers/media/video/isp/ispreg.h +@@ -116,7 +116,7 @@ + #define ISP_32B_BOUNDARY_BUF 0xFFFFFFE0 + #define ISP_32B_BOUNDARY_OFFSET 0x0000FFE0 + +-#define CM_CAM_MCLK_HZ 172800000 /* Hz */ ++#define CM_CAM_MCLK_HZ 216000000 /* Hz */ + + /* ISP Submodules offset */ + +diff --git a/include/media/mt9v113.h b/include/media/mt9v113.h +index 0a30f4c..4504f26 100644 +--- a/include/media/mt9v113.h ++++ b/include/media/mt9v113.h +@@ -76,7 +76,7 @@ struct mt9v113_platform_data { + #define MT9V113_VGA_30FPS (1130) + #define MT9V113_QVGA_30FPS (1131) + +-#define MT9V113_CLK_MAX (54000000) /* 54MHz */ ++#define MT9V113_CLK_MAX (48000000) /* 48MHz */ + #define MT9V113_CLK_MIN (6000000) /* 6Mhz */ + + #endif /* ifndef _MT9V113_H */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0042-omap3beagle-camera-Further-clode-cleanup.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0042-omap3beagle-camera-Further-clode-cleanup.patch new file mode 100644 index 0000000..19fb41e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0042-omap3beagle-camera-Further-clode-cleanup.patch @@ -0,0 +1,237 @@ +From a23ae536374534ed021479b63ec093d5e58a9186 Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Wed, 14 Jul 2010 19:07:06 +0530 +Subject: [PATCH 42/75] omap3beagle-camera: Further clode cleanup + +Signed-off-by: Vaibhav Hiremath +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 89 ++++-------------------- + drivers/media/video/isp/isp.h | 13 ++++ + 2 files changed, 28 insertions(+), 74 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 8d4e5ab..90eadd0 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -46,21 +46,19 @@ + #include "mux.h" + #include "board-omap3beagle-camera.h" + +-#define MODULE_NAME "omap3beaglelmb" ++#define MODULE_NAME "omap3beaglelmb" + +-#define CAM_USE_XCLKA 0 ++#define CAM_USE_XCLKA 0 + +-#define ISP_MT9V113_MCLK 216000000 ++#define ISP_MT9V113_MCLK 216000000 + +-#define LEOPARD_RESET_GPIO 98 ++#define LEOPARD_RESET_GPIO 98 + + static struct regulator *beagle_mt9v113_1_8v1; + static struct regulator *beagle_mt9v113_1_8v2; + +-#if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) +- + /* Arbitrary memory handling limit */ +-#define MT9V113_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN(2048 * 1536 * 4) ++#define MT9V113_MAX_FRAME_SIZE PAGE_ALIGN(640 * 480 * 4) + + static struct isp_interface_config mt9v113_if_config = { + .ccdc_par_ser = ISP_PARLL, +@@ -77,21 +75,6 @@ static struct isp_interface_config mt9v113_if_config = { + }; + + static struct v4l2_ifparm mt9v113_ifparm_s = { +-#if 0 +- .if_type = V4L2_IF_TYPE_RAW, +- .u = { +- .raw = { +- .frame_start_on_rising_vs = 1, +- .bt_sync_correct = 0, +- .swap = 0, +- .latch_clk_inv = 0, +- .nobt_hs_inv = 0, /* active high */ +- .nobt_vs_inv = 0, /* active high */ +- .clock_min = MT9V113_CLK_MIN, +- .clock_max = MT9V113_CLK_MAX, +- }, +- }, +-#else + .if_type = V4L2_IF_TYPE_YCbCr, + .u = { + .ycbcr = { +@@ -99,13 +82,12 @@ static struct v4l2_ifparm mt9v113_ifparm_s = { + .bt_sync_correct = 0, + .swap = 0, + .latch_clk_inv = 0, +- .nobt_hs_inv = 0, /* active high */ +- .nobt_vs_inv = 0, /* active high */ ++ .nobt_hs_inv = 0, ++ .nobt_vs_inv = 0, + .clock_min = MT9V113_CLK_MIN, + .clock_max = MT9V113_CLK_MAX, + }, + }, +-#endif + }; + + /** +@@ -124,16 +106,14 @@ static int mt9v113_ifparm(struct v4l2_ifparm *p) + return 0; + } + +-#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + static struct omap34xxcam_hw_config mt9v113_hwc = { + .dev_index = 0, + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 1, +- .u.sensor.capture_mem = MT9V113_BIGGEST_FRAME_BYTE_SIZE * 2, ++ .u.sensor.capture_mem = MT9V113_MAX_FRAME_SIZE * 2, + .u.sensor.ival_default = { 1, 10 }, + }; +-#endif + + /** + * @brief mt9v113_set_prv_data - Returns mt9v113 omap34xx driver private data +@@ -144,7 +124,6 @@ static struct omap34xxcam_hw_config mt9v113_hwc = { + */ + static int mt9v113_set_prv_data(void *priv) + { +-#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + struct omap34xxcam_hw_config *hwc = priv; + + if (priv == NULL) +@@ -154,10 +133,8 @@ static int mt9v113_set_prv_data(void *priv) + hwc->dev_index = mt9v113_hwc.dev_index; + hwc->dev_minor = mt9v113_hwc.dev_minor; + hwc->dev_type = mt9v113_hwc.dev_type; ++ + return 0; +-#else +- return -EINVAL; +-#endif + } + + /** +@@ -172,21 +149,22 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + struct omap34xxcam_videodev *vdev = s->u.slave->master->priv; + + switch (power) { +- case V4L2_POWER_OFF: + case V4L2_POWER_STANDBY: ++ break; ++ ++ case V4L2_POWER_OFF: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + + if (regulator_is_enabled(beagle_mt9v113_1_8v1)) + regulator_disable(beagle_mt9v113_1_8v1); + if (regulator_is_enabled(beagle_mt9v113_1_8v2)) + regulator_disable(beagle_mt9v113_1_8v2); ++ + break; + + case V4L2_POWER_ON: +-#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +- isp_configure_interface(vdev->cam->isp, &mt9v113_if_config); +-#endif + ++ isp_configure_interface(vdev->cam->isp, &mt9v113_if_config); + /* Set RESET_BAR to 0 */ + gpio_set_value(LEOPARD_RESET_GPIO, 0); + +@@ -216,8 +194,8 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + + default: + return -ENODEV; +- break; + } ++ + return 0; + } + +@@ -232,9 +210,6 @@ struct mt9v113_platform_data mt9v113_pdata = { + .vs_polarity = 1, /* 0 - Active low, 1- Active high */ + }; + +-#endif /* #ifdef CONFIG_VIDEO_MT9V113 */ +- +- + static int beagle_cam_probe(struct platform_device *pdev) + { + beagle_mt9v113_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); +@@ -277,40 +252,6 @@ static int beagle_cam_remove(struct platform_device *pdev) + + gpio_free(LEOPARD_RESET_GPIO); + +- /* MUX init */ +- omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, +- 0x10C); /* CAM_HS */ +- omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, +- 0x10E); /* CAM_VS */ +- omap_ctrl_writew(OMAP_PIN_OUTPUT | OMAP_MUX_MODE0, +- 0x110); /* CAM_XCLKA */ +- omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, +- 0x112); /* CAM_PCLK */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x116); /* CAM_D0 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x118); /* CAM_D1 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x11A); /* CAM_D2 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x11C); /* CAM_D3 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x11E); /* CAM_D4 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x120); /* CAM_D5 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x122); /* CAM_D6 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x124); /* CAM_D7 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x126); /* CAM_D8 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x128); /* CAM_D9 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x12A); /* CAM_D10 */ +- omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, +- 0x12C); /* CAM_D11 */ +- + return 0; + } + +diff --git a/drivers/media/video/isp/isp.h b/drivers/media/video/isp/isp.h +index 85c3fa9..4929fad 100644 +--- a/drivers/media/video/isp/isp.h ++++ b/drivers/media/video/isp/isp.h +@@ -482,10 +482,23 @@ int isp_set_callback(struct device *dev, enum isp_callback_type type, + + int isp_unset_callback(struct device *dev, enum isp_callback_type type); + ++#if defined(CONFIG_VIDEO_OMAP3_ISP) + u32 isp_set_xclk(struct device *dev, u32 xclk, u8 xclksel); + + int isp_configure_interface(struct device *dev, + struct isp_interface_config *config); ++#else ++static inline u32 isp_set_xclk(struct device *dev, u32 xclk, u8 xclksel) ++{ ++ return 0; ++} ++static inline int isp_configure_interface(struct device *dev, ++ struct isp_interface_config *config) ++{ ++ return 0; ++} ++ ++#endif + + struct device *isp_get(void); + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0043-mt9v113-Settings-from-Aptima-used-to-increase-FPS.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0043-mt9v113-Settings-from-Aptima-used-to-increase-FPS.patch new file mode 100644 index 0000000..262bd30 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0043-mt9v113-Settings-from-Aptima-used-to-increase-FPS.patch @@ -0,0 +1,135 @@ +From 3f7280192c69d6437c5d0e7c46ab2de345b52e5d Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Wed, 14 Jul 2010 19:07:34 +0530 +Subject: [PATCH 43/75] mt9v113: Settings from Aptima used to increase FPS + +The FPS is still low at around ~15FPS, expected one is 30FPS. + +Signed-off-by: Vaibhav Hiremath +--- + drivers/media/video/mt9v113.c | 55 +++++++++++++++++++++++++--------------- + 1 files changed, 34 insertions(+), 21 deletions(-) + +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +index 9a86cce..466702e 100644 +--- a/drivers/media/video/mt9v113.c ++++ b/drivers/media/video/mt9v113.c +@@ -119,6 +119,21 @@ static struct mt9v113_reg mt9v113_vga_reg[] = { + {TOK_WRITE, 0x0990, 0x0280}, + {TOK_WRITE, 0x098C, 0x2705}, + {TOK_WRITE, 0x0990, 0x01E0}, ++ {TOK_WRITE, 0x098C, 0x2715}, ++ {TOK_WRITE, 0x0990, 0x0001}, ++ {TOK_WRITE, 0x098C, 0x2717}, ++ {TOK_WRITE, 0x0990, 0x0026}, ++ {TOK_WRITE, 0x098C, 0x2719}, ++ {TOK_WRITE, 0x0990, 0x001A}, ++ {TOK_WRITE, 0x098C, 0x271B}, ++ {TOK_WRITE, 0x0990, 0x006B}, ++ {TOK_WRITE, 0x098C, 0x271D}, ++ {TOK_WRITE, 0x0990, 0x006B}, ++ {TOK_WRITE, 0x098C, 0x271F}, ++ {TOK_WRITE, 0x0990, 0x0202}, ++ {TOK_WRITE, 0x098C, 0x2721}, ++ {TOK_WRITE, 0x0990, 0x034A}, ++ + {TOK_WRITE, 0x098C, 0xA103}, + {TOK_WRITE, 0x0990, 0x0005}, + {TOK_DELAY, 0, 100}, +@@ -148,8 +163,7 @@ static struct mt9v113_reg mt9v113_reg_list[] = { + {TOK_WRITE, 0x001E, 0x0777}, + {TOK_WRITE, 0x0016, 0x42DF}, + {TOK_WRITE, 0x0014, 0x2145}, +- {TOK_WRITE, 0x0014, 0x2145}, +- {TOK_WRITE, 0x0010, 0x0231}, ++ {TOK_WRITE, 0x0010, 0x0234}, + {TOK_WRITE, 0x0012, 0x0000}, + {TOK_WRITE, 0x0014, 0x244B}, + {TOK_WRITE, 0x0014, 0x304B}, +@@ -267,29 +281,31 @@ static struct mt9v113_reg mt9v113_reg_list[] = { + {TOK_WRITE, 0x0990, 0x0005}, + {TOK_DELAY, 0, 100}, + {TOK_WRITE, 0x098C, 0x222D}, +- {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x0990, 0x0081}, + {TOK_WRITE, 0x098C, 0xA408}, +- {TOK_WRITE, 0x0990, 0x0020}, ++ {TOK_WRITE, 0x0990, 0x001F}, + {TOK_WRITE, 0x098C, 0xA409}, +- {TOK_WRITE, 0x0990, 0x0023}, ++ {TOK_WRITE, 0x0990, 0x0021}, + {TOK_WRITE, 0x098C, 0xA40A}, +- {TOK_WRITE, 0x0990, 0x0027}, ++ {TOK_WRITE, 0x0990, 0x0025}, + {TOK_WRITE, 0x098C, 0xA40B}, +- {TOK_WRITE, 0x0990, 0x002A}, ++ {TOK_WRITE, 0x0990, 0x0027}, + {TOK_WRITE, 0x098C, 0x2411}, +- {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x0990, 0x0081}, + {TOK_WRITE, 0x098C, 0x2413}, +- {TOK_WRITE, 0x0990, 0x00A4}, ++ {TOK_WRITE, 0x0990, 0x009A}, + {TOK_WRITE, 0x098C, 0x2415}, +- {TOK_WRITE, 0x0990, 0x0088}, ++ {TOK_WRITE, 0x0990, 0x0081}, + {TOK_WRITE, 0x098C, 0x2417}, +- {TOK_WRITE, 0x0990, 0x00A4}, ++ {TOK_WRITE, 0x0990, 0x009A}, + {TOK_WRITE, 0x098C, 0xA404}, + {TOK_WRITE, 0x0990, 0x0010}, + {TOK_WRITE, 0x098C, 0xA40D}, + {TOK_WRITE, 0x0990, 0x0002}, + {TOK_WRITE, 0x098C, 0xA40E}, + {TOK_WRITE, 0x0990, 0x0003}, ++ {TOK_WRITE, 0x098C, 0xA410}, ++ {TOK_WRITE, 0x0990, 0x000A}, + {TOK_WRITE, 0x098C, 0xA103}, + {TOK_WRITE, 0x0990, 0x0006}, + {TOK_DELAY, 0, 100}, +@@ -1216,13 +1232,10 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + struct mt9v113_decoder *decoder = s->priv; + int err = 0; + +- if (decoder->state == STATE_DETECTED) +- return 0; +- + switch (on) { + case V4L2_POWER_OFF: + /* Power Down Sequence */ +-/* TODO: FIXME: implement proper OFF and Standby code here */ ++ /* TODO: FIXME: implement proper OFF and Standby code here */ + #if 0 + err = mt9v113_write_reg(decoder->client, REG_OPERATION_MODE, + 0x01); +@@ -1240,10 +1253,10 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + + case V4L2_POWER_ON: + /* Enable mux for mt9v113 data path */ +- if ((decoder->pdata->power_set) && +- (decoder->state == STATE_NOT_DETECTED)) { ++ if (decoder->state == STATE_NOT_DETECTED) { + +- err = decoder->pdata->power_set(s, on); ++ if (decoder->pdata->power_set) ++ err = decoder->pdata->power_set(s, on); + + /* Detect the sensor is not already detected */ + err |= mt9v113_detect(decoder); +@@ -1252,10 +1265,10 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + "Unable to detect decoder\n"); + return err; + } +- /* Only VGA mode for now */ +- err |= mt9v113_configure(decoder); +- err |= mt9v113_vga_mode(decoder); + } ++ /* Only VGA mode for now */ ++ err |= mt9v113_configure(decoder); ++ err |= mt9v113_vga_mode(decoder); + break; + + default: +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0044-mt9v113-AE-param-tuned-to-get-28-30FPS.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0044-mt9v113-AE-param-tuned-to-get-28-30FPS.patch new file mode 100644 index 0000000..24e36fc --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0044-mt9v113-AE-param-tuned-to-get-28-30FPS.patch @@ -0,0 +1,33 @@ +From f33e1a25ca1d7e8418f076a9aead8fa66341f964 Mon Sep 17 00:00:00 2001 +From: Vaibhav Hiremath +Date: Thu, 15 Jul 2010 13:53:03 +0530 +Subject: [PATCH 44/75] mt9v113: AE param tuned to get 28~30FPS + +Please note that with this change we are compromising with +image quality, so should be used only in case of high FPS use-case. +--- + drivers/media/video/mt9v113.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +index 466702e..6714240 100644 +--- a/drivers/media/video/mt9v113.c ++++ b/drivers/media/video/mt9v113.c +@@ -306,6 +306,14 @@ static struct mt9v113_reg mt9v113_reg_list[] = { + {TOK_WRITE, 0x0990, 0x0003}, + {TOK_WRITE, 0x098C, 0xA410}, + {TOK_WRITE, 0x0990, 0x000A}, ++ ++ {TOK_WRITE, 0x098C, 0xA20C}, ++ {TOK_WRITE, 0x0990, 0x0003}, ++ {TOK_WRITE, 0x098C, 0xA20B}, ++ {TOK_WRITE, 0x0990, 0x0000}, ++ {TOK_WRITE, 0x098C, 0xA215}, ++ {TOK_WRITE, 0x0990, 0x0004}, ++ + {TOK_WRITE, 0x098C, 0xA103}, + {TOK_WRITE, 0x0990, 0x0006}, + {TOK_DELAY, 0, 100}, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0045-omap3beagle-camera-Cleanup-of-boardfile.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0045-omap3beagle-camera-Cleanup-of-boardfile.patch new file mode 100644 index 0000000..6e60351 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0045-omap3beagle-camera-Cleanup-of-boardfile.patch @@ -0,0 +1,161 @@ +From c442dbd71313f119dce989b0b8d5ebaca9296863 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 12 Jul 2010 15:44:18 -0500 +Subject: [PATCH 45/75] omap3beagle: camera: Cleanup of boardfile + +This removes a lot of dead code. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 51 ++++++++++++++++++------ + arch/arm/mach-omap2/board-omap3beagle-camera.h | 41 ------------------- + 2 files changed, 38 insertions(+), 54 deletions(-) + delete mode 100644 arch/arm/mach-omap2/board-omap3beagle-camera.h + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 90eadd0..befa7d4 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -44,9 +44,6 @@ + #include <../drivers/media/video/isp/ispreg.h> + + #include "mux.h" +-#include "board-omap3beagle-camera.h" +- +-#define MODULE_NAME "omap3beaglelmb" + + #define CAM_USE_XCLKA 0 + +@@ -129,11 +126,7 @@ static int mt9v113_set_prv_data(void *priv) + if (priv == NULL) + return -EINVAL; + +- hwc->u.sensor = mt9v113_hwc.u.sensor; +- hwc->dev_index = mt9v113_hwc.dev_index; +- hwc->dev_minor = mt9v113_hwc.dev_minor; +- hwc->dev_type = mt9v113_hwc.dev_type; +- ++ *hwc = mt9v113_hwc; + return 0; + } + +@@ -204,10 +197,6 @@ struct mt9v113_platform_data mt9v113_pdata = { + .power_set = mt9v113_power_set, + .priv_data_set = mt9v113_set_prv_data, + .ifparm = mt9v113_ifparm, +- /* Some interface dependent params */ +- .clk_polarity = 0, /* data clocked out on falling edge */ +- .hs_polarity = 1, /* 0 - Active low, 1- Active high */ +- .vs_polarity = 1, /* 0 - Active low, 1- Active high */ + }; + + static int beagle_cam_probe(struct platform_device *pdev) +@@ -217,6 +206,7 @@ static int beagle_cam_probe(struct platform_device *pdev) + dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); + return PTR_ERR(beagle_mt9v113_1_8v1); + } ++ + beagle_mt9v113_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); + if (IS_ERR(beagle_mt9v113_1_8v2)) { + dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +@@ -235,7 +225,41 @@ static int beagle_cam_probe(struct platform_device *pdev) + /* set to output mode, default value 0 */ + gpio_direction_output(LEOPARD_RESET_GPIO, 0); + +- printk(KERN_INFO MODULE_NAME ": Driver registration complete \n"); ++ /* MUX init */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x10C); /* CAM_HS */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x10E); /* CAM_VS */ ++ omap_ctrl_writew(OMAP_PIN_OUTPUT | OMAP_MUX_MODE0, ++ 0x110); /* CAM_XCLKA */ ++ omap_ctrl_writew(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0, ++ 0x112); /* CAM_PCLK */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x116); /* CAM_D0 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x118); /* CAM_D1 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11A); /* CAM_D2 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11C); /* CAM_D3 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x11E); /* CAM_D4 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x120); /* CAM_D5 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x122); /* CAM_D6 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x124); /* CAM_D7 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x126); /* CAM_D8 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x128); /* CAM_D9 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x12A); /* CAM_D10 */ ++ omap_ctrl_writew(OMAP_PIN_INPUT | OMAP_MUX_MODE0, ++ 0x12C); /* CAM_D11 */ ++ ++ printk(KERN_INFO "omap3beaglelmb: Driver registration complete\n"); + + return 0; + } +@@ -287,6 +311,7 @@ static struct platform_driver beagle_cam_driver = { + */ + int __init omap3beaglelmb_init(void) + { ++ /* NOTE: Beagle xM boards are the only ones with camera interface */ + if (cpu_is_omap3630()) + platform_driver_register(&beagle_cam_driver); + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.h b/arch/arm/mach-omap2/board-omap3beagle-camera.h +deleted file mode 100644 +index 1026aeb..0000000 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.h ++++ /dev/null +@@ -1,41 +0,0 @@ +-/* +- * Copyright (C) 2010 Texas Instruments Inc +- * Author: Sergio Aguirre +- * +- * Based on work done by: +- * Vaibhav Hiremath +- * Anuj Aggarwal +- * Sivaraj R +- * +- * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. +- */ +- +-#ifndef __BOARD_OMAP3BEAGLE_LMB_H_ +-#define __BOARD_OMAP3BEAGLE_LMB_H_ +- +-/* mux id to enable/disable signal routing to different peripherals */ +-enum omap3beaglelmb_mux { +- MUX_TVP5146 = 0, +- MUX_CAMERA_SENSOR, +- MUX_EXP_CAMERA_SENSOR, +- NUM_MUX +-}; +- +-/* enum to enable or disable mux */ +-enum config_mux { +- DISABLE_MUX, +- ENABLE_MUX +-}; +- +-#endif /* __BOARD_OMAP3BEAGLE_LMB_H_ */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0046-omap3beagle-camera-Cleanup-regulator-usage.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0046-omap3beagle-camera-Cleanup-regulator-usage.patch new file mode 100644 index 0000000..cca3262 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0046-omap3beagle-camera-Cleanup-regulator-usage.patch @@ -0,0 +1,172 @@ +From 240def7eda2939e944ab70726cdecf270865553d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 12 Jul 2010 15:53:44 -0500 +Subject: [PATCH 46/75] omap3beagle: camera: Cleanup regulator usage + +We were missing the point of regulator abstraction layer. + +Camera board file shouldn't be aware of what vaux is using, but +just asking for a specific power supply (for cam_1v8 and cam_2v8). + +How is that mapped before, is something that the regulator machine +should figure out. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 50 ++++++++++++------------ + arch/arm/mach-omap2/board-omap3beagle.c | 24 +++++------- + 2 files changed, 35 insertions(+), 39 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index befa7d4..c91529d 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -51,8 +51,8 @@ + + #define LEOPARD_RESET_GPIO 98 + +-static struct regulator *beagle_mt9v113_1_8v1; +-static struct regulator *beagle_mt9v113_1_8v2; ++static struct regulator *cam_1v8_reg; ++static struct regulator *cam_2v8_reg; + + /* Arbitrary memory handling limit */ + #define MT9V113_MAX_FRAME_SIZE PAGE_ALIGN(640 * 480 * 4) +@@ -148,10 +148,10 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + case V4L2_POWER_OFF: + isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); + +- if (regulator_is_enabled(beagle_mt9v113_1_8v1)) +- regulator_disable(beagle_mt9v113_1_8v1); +- if (regulator_is_enabled(beagle_mt9v113_1_8v2)) +- regulator_disable(beagle_mt9v113_1_8v2); ++ if (regulator_is_enabled(cam_1v8_reg)) ++ regulator_disable(cam_1v8_reg); ++ if (regulator_is_enabled(cam_2v8_reg)) ++ regulator_disable(cam_2v8_reg); + + break; + +@@ -162,10 +162,10 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + gpio_set_value(LEOPARD_RESET_GPIO, 0); + + /* turn on VDD */ +- regulator_enable(beagle_mt9v113_1_8v1); ++ regulator_enable(cam_1v8_reg); + mdelay(1); + /* turn on VDD_IO */ +- regulator_enable(beagle_mt9v113_1_8v2); ++ regulator_enable(cam_2v8_reg); + mdelay(50); + + /* Enable EXTCLK */ +@@ -201,24 +201,24 @@ struct mt9v113_platform_data mt9v113_pdata = { + + static int beagle_cam_probe(struct platform_device *pdev) + { +- beagle_mt9v113_1_8v1 = regulator_get(&pdev->dev, "vaux3_1"); +- if (IS_ERR(beagle_mt9v113_1_8v1)) { +- dev_err(&pdev->dev, "vaux3_1 regulator missing\n"); +- return PTR_ERR(beagle_mt9v113_1_8v1); ++ cam_1v8_reg = regulator_get(&pdev->dev, "cam_1v8"); ++ if (IS_ERR(cam_1v8_reg)) { ++ dev_err(&pdev->dev, "cam_1v8 regulator missing\n"); ++ return PTR_ERR(cam_1v8_reg); + } + +- beagle_mt9v113_1_8v2 = regulator_get(&pdev->dev, "vaux4_1"); +- if (IS_ERR(beagle_mt9v113_1_8v2)) { +- dev_err(&pdev->dev, "vaux4_1 regulator missing\n"); +- regulator_put(beagle_mt9v113_1_8v1); +- return PTR_ERR(beagle_mt9v113_1_8v2); ++ cam_2v8_reg = regulator_get(&pdev->dev, "cam_2v8"); ++ if (IS_ERR(cam_2v8_reg)) { ++ dev_err(&pdev->dev, "cam_2v8 regulator missing\n"); ++ regulator_put(cam_1v8_reg); ++ return PTR_ERR(cam_2v8_reg); + } + + if (gpio_request(LEOPARD_RESET_GPIO, "cam_rst") != 0) { + dev_err(&pdev->dev, "Could not request GPIO %d", + LEOPARD_RESET_GPIO); +- regulator_put(beagle_mt9v113_1_8v2); +- regulator_put(beagle_mt9v113_1_8v1); ++ regulator_put(cam_2v8_reg); ++ regulator_put(cam_1v8_reg); + return -ENODEV; + } + +@@ -266,13 +266,13 @@ static int beagle_cam_probe(struct platform_device *pdev) + + static int beagle_cam_remove(struct platform_device *pdev) + { +- if (regulator_is_enabled(beagle_mt9v113_1_8v1)) +- regulator_disable(beagle_mt9v113_1_8v1); +- regulator_put(beagle_mt9v113_1_8v1); ++ if (regulator_is_enabled(cam_1v8_reg)) ++ regulator_disable(cam_1v8_reg); ++ regulator_put(cam_1v8_reg); + +- if (regulator_is_enabled(beagle_mt9v113_1_8v2)) +- regulator_disable(beagle_mt9v113_1_8v2); +- regulator_put(beagle_mt9v113_1_8v2); ++ if (regulator_is_enabled(cam_2v8_reg)) ++ regulator_disable(cam_2v8_reg); ++ regulator_put(cam_2v8_reg); + + gpio_free(LEOPARD_RESET_GPIO); + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 6835c1a..a1535ca 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -414,18 +414,14 @@ static struct platform_device beagle_cam_device = { + .id = -1, + }; + +-static struct regulator_consumer_supply beagle_vaux3_supplies[] = { +- { +- .supply = "vaux3_1", +- .dev = &beagle_cam_device.dev, +- }, ++static struct regulator_consumer_supply beagle_vaux3_supply = { ++ .supply = "cam_1v8", ++ .dev = &beagle_cam_device.dev, + }; + +-static struct regulator_consumer_supply beagle_vaux4_supplies[] = { +- { +- .supply = "vaux4_1", +- .dev = &beagle_cam_device.dev, +- }, ++static struct regulator_consumer_supply beagle_vaux4_supply = { ++ .supply = "cam_2v8", ++ .dev = &beagle_cam_device.dev, + }; + + /* VAUX3 for CAM_1V8 */ +@@ -439,8 +435,8 @@ static struct regulator_init_data beagle_vaux3 = { + .valid_ops_mask = REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, +- .num_consumer_supplies = ARRAY_SIZE(beagle_vaux3_supplies), +- .consumer_supplies = beagle_vaux3_supplies, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &beagle_vaux3_supply, + }; + + /* VAUX4 for CAM_2V8 */ +@@ -454,8 +450,8 @@ static struct regulator_init_data beagle_vaux4 = { + .valid_ops_mask = REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, +- .num_consumer_supplies = ARRAY_SIZE(beagle_vaux4_supplies), +- .consumer_supplies = beagle_vaux4_supplies, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &beagle_vaux4_supply, + }; + + /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0047-omap3beagle-camera-Bring-back-mt9t111-support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0047-omap3beagle-camera-Bring-back-mt9t111-support.patch new file mode 100644 index 0000000..b058200 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0047-omap3beagle-camera-Bring-back-mt9t111-support.patch @@ -0,0 +1,251 @@ +From 046dac666301c0df22679424169675045c70defd Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 12 Jul 2010 16:42:41 -0500 +Subject: [PATCH 47/75] omap3beagle: camera: Bring back mt9t111 support + +Restore MT9T111 sensor support. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 175 +++++++++++++++++++++++- + arch/arm/mach-omap2/board-omap3beagle.c | 12 ++ + 2 files changed, 184 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index c91529d..2e49158 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -37,7 +37,6 @@ + #include + + #include +-#include + + /* Include V4L2 ISP-Camera driver related header file */ + #include <../drivers/media/video/omap34xxcam.h> +@@ -47,13 +46,16 @@ + + #define CAM_USE_XCLKA 0 + +-#define ISP_MT9V113_MCLK 216000000 +- + #define LEOPARD_RESET_GPIO 98 + + static struct regulator *cam_1v8_reg; + static struct regulator *cam_2v8_reg; + ++#if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) ++#include ++ ++#define ISP_MT9V113_MCLK 216000000 ++ + /* Arbitrary memory handling limit */ + #define MT9V113_MAX_FRAME_SIZE PAGE_ALIGN(640 * 480 * 4) + +@@ -199,6 +201,173 @@ struct mt9v113_platform_data mt9v113_pdata = { + .ifparm = mt9v113_ifparm, + }; + ++#endif /* #ifdef CONFIG_VIDEO_MT9V113 */ ++ ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#include ++ ++#define ISP_MT9T111_MCLK 216000000 ++ ++/* Arbitrary memory handling limit */ ++#define MT9T111_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN((2048 * 2) * 1536 * 4) ++ ++static struct isp_interface_config mt9t111_if_config = { ++ .ccdc_par_ser = ISP_PARLL, ++ .dataline_shift = 0x2, ++ .hsvs_syncdetect = ISPCTRL_SYNC_DETECT_VSRISE, ++ .strobe = 0x0, ++ .prestrobe = 0x0, ++ .shutter = 0x0, ++ .cam_mclk = ISP_MT9T111_MCLK, ++ .wenlog = ISPCCDC_CFG_WENLOG_AND, ++ .wait_hs_vs = 2, ++ .u.par.par_bridge = 0x3, ++ .u.par.par_clk_pol = 0x0, ++}; ++ ++static struct v4l2_ifparm mt9t111_ifparm_s = { ++ .if_type = V4L2_IF_TYPE_RAW, ++ .u = { ++ .raw = { ++ .frame_start_on_rising_vs = 1, ++ .bt_sync_correct = 0, ++ .swap = 0, ++ .latch_clk_inv = 0, ++ .nobt_hs_inv = 0, /* active high */ ++ .nobt_vs_inv = 0, /* active high */ ++ .clock_min = MT9T111_CLK_MIN, ++ .clock_max = MT9T111_CLK_MAX, ++ }, ++ }, ++}; ++ ++/** ++ * @brief mt9t111_ifparm - Returns the mt9t111 interface parameters ++ * ++ * @param p - pointer to v4l2_ifparm structure ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_ifparm(struct v4l2_ifparm *p) ++{ ++ if (p == NULL) ++ return -EINVAL; ++ ++ *p = mt9t111_ifparm_s; ++ return 0; ++} ++ ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++static struct omap34xxcam_hw_config mt9t111_hwc = { ++ .dev_index = 0, ++ .dev_minor = 0, ++ .dev_type = OMAP34XXCAM_SLAVE_SENSOR, ++ .u.sensor.sensor_isp = 0, ++ .u.sensor.capture_mem = MT9T111_BIGGEST_FRAME_BYTE_SIZE, ++ .u.sensor.ival_default = { 1, 10 }, ++}; ++#endif ++ ++/** ++ * @brief mt9t111_set_prv_data - Returns mt9t111 omap34xx driver private data ++ * ++ * @param priv - pointer to omap34xxcam_hw_config structure ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_set_prv_data(void *priv) ++{ ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++ struct omap34xxcam_hw_config *hwc = priv; ++ ++ if (priv == NULL) ++ return -EINVAL; ++ ++ *hwc = mt9t111_hwc; ++ return 0; ++#else ++ return -EINVAL; ++#endif ++} ++ ++/** ++ * @brief mt9t111_power_set - Power-on or power-off TVP5146 device ++ * ++ * @param power - enum, Power on/off, resume/standby ++ * ++ * @return result of operation - 0 is success ++ */ ++static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) ++{ ++ struct omap34xxcam_videodev *vdev = s->u.slave->master->priv; ++ ++ switch (power) { ++ case V4L2_POWER_OFF: ++ case V4L2_POWER_STANDBY: ++ isp_set_xclk(vdev->cam->isp, 0, CAM_USE_XCLKA); ++ ++ if (regulator_is_enabled(cam_1v8_reg)) ++ regulator_disable(cam_1v8_reg); ++ if (regulator_is_enabled(cam_2v8_reg)) ++ regulator_disable(cam_2v8_reg); ++ break; ++ ++ case V4L2_POWER_ON: ++#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) ++ isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); ++#endif ++ ++ /* Set RESET_BAR to 0 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 0); ++ ++ /* turn on VDD */ ++ regulator_enable(cam_1v8_reg); ++ ++ mdelay(1); ++ ++ /* turn on VDD_IO */ ++ regulator_enable(cam_2v8_reg); ++ ++ mdelay(50); ++ ++ /* Enable EXTCLK */ ++ isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); ++ ++ /* ++ * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): ++ * ((1000000 * 70) / 6000000) = aprox 12 us. ++ */ ++ ++ udelay(12); ++ ++ /* Set RESET_BAR to 1 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 1); ++ ++ /* ++ * Wait at least 100 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): ++ * ((1000000 * 100) / 6000000) = aprox 17 us. ++ */ ++ ++ udelay(17); ++ ++ break; ++ ++ default: ++ return -ENODEV; ++ break; ++ } ++ return 0; ++} ++ ++struct mt9t111_platform_data mt9t111_pdata = { ++ .master = "omap34xxcam", ++ .power_set = mt9t111_power_set, ++ .priv_data_set = mt9t111_set_prv_data, ++ .ifparm = mt9t111_ifparm, ++}; ++ ++#endif /* #ifdef CONFIG_VIDEO_MT9T111 */ ++ + static int beagle_cam_probe(struct platform_device *pdev) + { + cam_1v8_reg = regulator_get(&pdev->dev, "cam_1v8"); +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index a1535ca..239bd44 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -77,6 +77,12 @@ static struct omap_opp * _omap37x_l3_rate_table = NULL; + extern struct mt9v113_platform_data mt9v113_pdata; + #endif + ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#include ++#include ++extern struct mt9t111_platform_data mt9t111_pdata; ++#endif ++ + #define GPMC_CS0_BASE 0x60 + #define GPMC_CS_SIZE 0x30 + +@@ -596,6 +602,12 @@ static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { + .platform_data = &mt9v113_pdata, + }, + #endif ++#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++ { ++ I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), ++ .platform_data = &mt9t111_pdata, ++ }, ++#endif + }; + + static int __init omap3_beagle_i2c_init(void) +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0048-REMOVE-v4l2-Delete-MT9T111-sensor-driver.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0048-REMOVE-v4l2-Delete-MT9T111-sensor-driver.patch new file mode 100644 index 0000000..6a9919f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0048-REMOVE-v4l2-Delete-MT9T111-sensor-driver.patch @@ -0,0 +1,2402 @@ +From 682012ca5bc9b6e3dc2536736d3eedbad3598d64 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 00:50:07 -0500 +Subject: [PATCH 48/75] REMOVE: v4l2: Delete MT9T111 sensor driver + +This removes MT9T111 support from the kernel. + +Reason? Driver already exists in open source, and we're going to +reuse that one instead. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/Kconfig | 8 - + drivers/media/video/Makefile | 1 - + drivers/media/video/mt9t111.c | 885 ------------------------ + drivers/media/video/mt9t111_reg.h | 1364 ------------------------------------- + include/media/mt9t111.h | 79 --- + 5 files changed, 0 insertions(+), 2337 deletions(-) + delete mode 100644 drivers/media/video/mt9t111.c + delete mode 100644 drivers/media/video/mt9t111_reg.h + delete mode 100644 include/media/mt9t111.h + +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index c14d758..780b246 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -354,14 +354,6 @@ config VIDEO_MT9P012 + MT9P012 camera. It is currently working with the TI OMAP3 + camera controller. + +-config VIDEO_MT9T111 +- tristate "Micron MT9T111 raw sensor driver (3MP)" +- depends on I2C && VIDEO_V4L2 +- ---help--- +- This is a Video4Linux2 sensor-level driver for the Micron +- MT9T111 camera. It is currently working with the TI OMAP3 +- camera controller. +- + config VIDEO_DW9710 + tristate "Lens driver for DW9710" + depends on I2C && VIDEO_V4L2 +diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile +index 763c157..3828723 100644 +--- a/drivers/media/video/Makefile ++++ b/drivers/media/video/Makefile +@@ -128,7 +128,6 @@ obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o + obj-y += isp/ + obj-$(CONFIG_VIDEO_OMAP3) += omap34xxcam.o + obj-$(CONFIG_VIDEO_MT9P012) += mt9p012.o +-obj-$(CONFIG_VIDEO_MT9T111) += mt9t111.o + obj-$(CONFIG_VIDEO_DW9710) += dw9710.o + obj-$(CONFIG_VIDEO_TPS61059) += tps61059.o + obj-$(CONFIG_VIDEO_OV3640) += ov3640.o +diff --git a/drivers/media/video/mt9t111.c b/drivers/media/video/mt9t111.c +deleted file mode 100644 +index 10080af..0000000 +--- a/drivers/media/video/mt9t111.c ++++ /dev/null +@@ -1,885 +0,0 @@ +-/* +- * drivers/media/video/mt9t111.c +- * +- * mt9t111 sensor driver +- * +- * Copyright (C) 2009 Leopard Imaging +- * +- * This file is licensed under the terms of the GNU General Public License +- * version 2. This program is licensed "as is" without any warranty of any +- * kind, whether express or implied. +- */ +- +-#include +-#include +-#include +- +-#include +-#include "mt9t111_reg.h" +- +-/* YCbCr mode does not work yet */ +-#define USE_RAW +-/* Create a Color bar test pattern, Blue, Green, Red, Grey */ +-/* #define COLOR_BAR */ +- +-#define SENSOR_DETECTED 1 +-#define SENSOR_NOT_DETECTED 0 +- +-static void mt9t111_loaddefault(struct i2c_client *client); +- +-/* +- * as a place holder for further development +- */ +-static void debug_dummy(char *in_msg) +-{ +-} +- +-/* list of image formats supported by mt9t111 sensor */ +-const static struct v4l2_fmtdesc mt9t111_formats[] = { +-#ifdef USE_RAW +- { +- .description = "RAW ", +- .pixelformat = V4L2_PIX_FMT_SGRBG10, +- }, +-#else +- { +- .description = "YUV 422 ", +- .pixelformat = V4L2_PIX_FMT_YUYV, +- }, +-#endif +-}; +- +-#define NUM_CAPTURE_FORMATS ARRAY_SIZE(mt9t111_formats) +- +-/* +- * Array of image sizes supported by MT9T111. These must be ordered from +- * smallest image size to largest. +- */ +-const static struct capture_size mt9t111_sizes[] = { +- { 640, 480 }, +- /* { 2048, 1536} */ +-}; +- +-#define NUM_CAPTURE_SIZE ARRAY_SIZE(mt9t111_sizes) +- +- +-const struct v4l2_fract mt9t111_frameintervals[] = { +- { .numerator = 1, .denominator = 10 } +-}; +- +-#define NUM_CAPTURE_FRAMEINTERVALS ARRAY_SIZE(mt9t111_frameintervals) +- +-/** +- * struct mt9t111_sensor - main structure for storage of sensor information +- * @pdata: access functions and data for platform level information +- * @v4l2_int_device: V4L2 device structure structure +- * @i2c_client: iic client device structure +- * @pix: V4L2 pixel format information structure +- * @timeperframe: time per frame expressed as V4L fraction +- * @scaler: +- * @ver: mt9t111 chip version +- * @fps: frames per second value +- */ +-struct mt9t111_sensor { +- const struct mt9t111_platform_data *pdata; +- struct v4l2_int_device *v4l2_int_device; +- struct i2c_client *i2c_client; +- struct v4l2_pix_format pix; +- struct v4l2_fract timeperframe; +- int scaler; +- int ver; +- int fps; +- int state; +-}; +- +-static struct mt9t111_sensor mt9t111 = { +- .timeperframe = { +- .numerator = 1, +- .denominator = 10, +- }, +- .state = SENSOR_NOT_DETECTED, +-}; +- +-/** +- * mt9t111_read_reg - Read a value from a register in an mt9t111 sensor device +- * @client: i2c driver client structure +- * @data_length: length of data to be read +- * @reg: register address / offset +- * @val: stores the value that gets read +- * +- * Read a value from a register in an mt9t111 sensor device. +- * The value is returned in 'val'. +- * Returns zero if successful, or non-zero otherwise. +- */ +-static int +-mt9t111_read_reg(struct i2c_client *client, u16 reg, u16 *val) +-{ +- struct i2c_msg msg[1]; +- u8 data[4]; +- int err; +- +- msg->addr = client->addr; +- msg->flags = 0; +- msg->len = 2; +- msg->buf = data; +- data[0] = (reg & 0xff00) >> 8; +- data[1] = (reg & 0x00ff); +- err = i2c_transfer(client->adapter, msg, 1); +- if (err >= 0) { +- msg->flags = I2C_M_RD; +- msg->len = 2; /* 2 byte read */ +- err = i2c_transfer(client->adapter, msg, 1); +- if (err >= 0) { +- *val = ((data[0] & 0x00ff) << 8) +- | (data[1] & 0x00ff); +- return 0; +- } +- } +- return err; +-} +- +-/** +- * mt9t111_write_reg - Write a value to a register in an mt9t111 sensor device +- * @client: i2c driver client structure +- * @data_length: length of data to be read +- * @reg: register address / offset +- * @val: value to be written to specified register +- * +- * Write a value to a register in an mt9t111 sensor device. +- * Returns zero if successful, or non-zero otherwise. +- */ +-static int +-mt9t111_write_reg(struct i2c_client *client, u16 reg, u16 val) +-{ +- struct i2c_msg msg[1]; +- u8 data[20]; +- int err; +- +- msg->addr = client->addr; +- msg->flags = 0; +- msg->len = 4; +- msg->buf = data; +- data[0] = (u8)((reg & 0xff00) >> 8); +- data[1] = (u8)(reg & 0x00ff); +- data[2] = (u8)((val & 0xff00) >> 8); +- data[3] = (u8)(val & 0x00ff); +- err = i2c_transfer(client->adapter, msg, 1); +- +- return err; +-} +- +-/** +- * mt9t111_write_regs - Write registers to an mt9t111 sensor device +- * @client: i2c driver client structure +- * @reg_in: pointer to registers to write +- * @cnt: the number of registers +- * +- * Write registers . +- * Returns zero if successful, or non-zero otherwise. +- */ +-static int +-mt9t111_write_regs(struct i2c_client *client, mt9t111_regs *reg_in, int cnt) +-{ +- int err = 0; +- int i; +- mt9t111_regs *reg = reg_in; +- +- for (i = 0; i < cnt; i++) { +- if (reg->delay_time == 0) { +- err |= mt9t111_write_reg(client, reg->addr, reg->data); +- } else if (reg->addr != 0 || reg->data != 0) { +- err |= mt9t111_write_reg(client, reg->addr, reg->data); +- mdelay(reg->delay_time); +- } else { +- mdelay(reg->delay_time); +- } +- +- if (err < 0) { +- dev_warn(&client->dev, "write reg error, addr = 0x%x," +- " data = 0x%x \n", +- reg->addr, reg->data); +- return err; +- } +- reg++; +- } +- return err; +-} +- +-/** +- * mt9t111_detect - Detect if an mt9t111 is present, and if so which revision +- * @client: pointer to the i2c client driver structure +- * +- * Detect if an mt9t111 is present +- * Returns a negative error number if no device is detected, or the +- * non-negative value of the version ID register if a device is detected. +- */ +-static int +-mt9t111_detect(struct i2c_client *client) +-{ +- u16 val; +- +- /* chip ID is at address 0 */ +- if (mt9t111_read_reg(client, MT9T111_CHIP_ID, &val) < 0) +- return -ENODEV; +- +- if (val != MT9T111_CHIP_ID_VALUE) { +- dev_warn(&client->dev, "model id mismatch received 0x%x" +- " expecting 0x%x\n", +- val, MT9T111_CHIP_ID_VALUE); +- +- return -ENODEV; +- } +- +- return (int)val; +- +-} +- +-/** +- * mt9t111_configure - Configure the mt9t111 for the specified image mode +- * @s: pointer to standard V4L2 device structure +- * +- * Configure the mt9t111 for a specified image size, pixel format, and frame +- * period. xclk is the frequency (in Hz) of the xclk input to the mt9t111. +- * fper is the frame period (in seconds) expressed as a fraction. +- * Returns zero if successful, or non-zero otherwise. +- * The actual frame period is returned in fper. +- */ +-static int mt9t111_configure(struct v4l2_int_device *s) +-{ +- debug_dummy("debug_dummy -- to set imager mode"); +- +- return 0; +-} +- +-/** +- * ioctl_enum_framesizes - V4L2 sensor if handler for vidioc_int_enum_framesizes +- * @s: pointer to standard V4L2 device structure +- * @frms: pointer to standard V4L2 framesizes enumeration structure +- * +- * Returns possible framesizes depending on choosen pixel format +- **/ +-static int ioctl_enum_framesizes(struct v4l2_int_device *s, +- struct v4l2_frmsizeenum *frms) +-{ +- int ifmt; +- +- for (ifmt = 0; ifmt < NUM_CAPTURE_FORMATS; ifmt++) { +- if (frms->pixel_format == mt9t111_formats[ifmt].pixelformat) +- break; +- } +- /* Is requested pixelformat not found on sensor? */ +- if (ifmt == NUM_CAPTURE_FORMATS) +- return -EINVAL; +- +- /* Do we already reached all discrete framesizes? */ +- if (frms->index >= NUM_CAPTURE_SIZE) +- return -EINVAL; +- +- frms->type = V4L2_FRMSIZE_TYPE_DISCRETE; +- frms->discrete.width = mt9t111_sizes[frms->index].width; +- frms->discrete.height = mt9t111_sizes[frms->index].height; +- +- return 0; +- +-} +- +-static int ioctl_enum_frameintervals(struct v4l2_int_device *s, +- struct v4l2_frmivalenum *frmi) +-{ +- int ifmt; +- +- if (frmi->index >= NUM_CAPTURE_FRAMEINTERVALS) +- return -EINVAL; +- +- for (ifmt = 0; ifmt < NUM_CAPTURE_FORMATS; ifmt++) { +- if (frmi->pixel_format == mt9t111_formats[ifmt].pixelformat) +- break; +- } +- /* Is requested pixelformat not found on sensor? */ +- if (ifmt == NUM_CAPTURE_FORMATS) +- return -EINVAL; +- +- frmi->type = V4L2_FRMSIZE_TYPE_DISCRETE; +- frmi->discrete.numerator = +- mt9t111_frameintervals[frmi->index].numerator; +- frmi->discrete.denominator = +- mt9t111_frameintervals[frmi->index].denominator; +- return 0; +-} +- +-/** +- * ioctl_init - V4L2 sensor interface handler for VIDIOC_INT_INIT +- * @s: pointer to standard V4L2 device structure +- * +- * Initialize the sensor device (call mt9t111_configure()) +- */ +-static int ioctl_init(struct v4l2_int_device *s) +-{ +- return 0; +-} +- +-/** +- * ioctl_dev_exit - V4L2 sensor interface handler for vidioc_int_dev_exit_num +- * @s: pointer to standard V4L2 device structure +- * +- * Delinitialise the dev. at slave detach. The complement of ioctl_dev_init. +- */ +-static int ioctl_dev_exit(struct v4l2_int_device *s) +-{ +- return 0; +-} +- +-/** +- * ioctl_dev_init - V4L2 sensor interface handler for vidioc_int_dev_init_num +- * @s: pointer to standard V4L2 device structure +- * +- * Initialise the device when slave attaches to the master. Returns 0 if +- * mt9t111 device could be found, otherwise returns appropriate error. +- */ +-static int ioctl_dev_init(struct v4l2_int_device *s) +-{ +- return 0; +-} +- +-/** +- * ioctl_s_power - V4L2 sensor interface handler for vidioc_int_s_power_num +- * @s: pointer to standard V4L2 device structure +- * @on: power state to which device is to be set +- * +- * Sets devices power state to requrested state, if possible. +- */ +-static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- struct i2c_client *c = sensor->i2c_client; +- int rval; +- +- if ((on == V4L2_POWER_STANDBY) && (sensor->state == SENSOR_DETECTED)) +- debug_dummy("debug_dummy -- put to standby\n"); +- +- if (on != V4L2_POWER_ON) +- debug_dummy("debug_dummy -- stop master clock\n"); +- else +- debug_dummy("debug_dummy -- enable clock\n");; +- +- rval = sensor->pdata->power_set(s, on); +- if (rval < 0) { +- dev_err(&c->dev, "Unable to set the power state: " "mt9t111" +- " sensor\n"); +- /* sensor->pdata->set_xclk(0); */ +- return rval; +- } +- +- if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_DETECTED)) +- mt9t111_loaddefault(c); +- +- if ((on == V4L2_POWER_ON) && (sensor->state == SENSOR_NOT_DETECTED)) { +- rval = mt9t111_detect(c); +- if (rval < 0) { +- dev_err(&c->dev, "Unable to detect " "mt9t111" +- " sensor\n"); +- sensor->state = SENSOR_NOT_DETECTED; +- return rval; +- } +- dev_info(&c->dev, "chip version 0x%02x detected\n", rval); +- sensor->state = SENSOR_DETECTED; +- sensor->ver = rval; +- } +- return 0; +-} +- +-/** +- * ioctl_g_priv - V4L2 sensor interface handler for vidioc_int_g_priv_num +- * @s: pointer to standard V4L2 device structure +- * @p: void pointer to hold sensor's private data address +- * +- * Returns device's (sensor's) private data area address in p parameter +- */ +-static int ioctl_g_priv(struct v4l2_int_device *s, void *p) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- +- return sensor->pdata->priv_data_set(p); +-} +- +-/** +- * ioctl_s_parm - V4L2 sensor interface handler for VIDIOC_S_PARM ioctl +- * @s: pointer to standard V4L2 device structure +- * @a: pointer to standard V4L2 VIDIOC_S_PARM ioctl structure +- * +- * Configures the sensor to use the input parameters, if possible. If +- * not possible, reverts to the old parameters and returns the +- * appropriate error code. +- */ +-static int ioctl_s_parm(struct v4l2_int_device *s, +- struct v4l2_streamparm *a) +-{ +- /* TODO: set paramters */ +- debug_dummy("debug_dummy -- VIDIOC_S_PARM "); +- return 0; +-} +- +-/** +- * ioctl_g_parm - V4L2 sensor interface handler for VIDIOC_G_PARM ioctl +- * @s: pointer to standard V4L2 device structure +- * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure +- * +- * Returns the sensor's video CAPTURE parameters. +- */ +-static int ioctl_g_parm(struct v4l2_int_device *s, +- struct v4l2_streamparm *a) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- struct v4l2_captureparm *cparm = &a->parm.capture; +- +- if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) +- return -EINVAL; +- +- memset(a, 0, sizeof(*a)); +- a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +- +- cparm->capability = V4L2_CAP_TIMEPERFRAME; +- cparm->timeperframe = sensor->timeperframe; +- +- return 0; +-} +- +-/** +- * ioctl_g_fmt_cap - V4L2 sensor interface handler for ioctl_g_fmt_cap +- * @s: pointer to standard V4L2 device structure +- * @f: pointer to standard V4L2 v4l2_format structure +- * +- * Returns the sensor's current pixel format in the v4l2_format +- * parameter. +- */ +-static int ioctl_g_fmt_cap(struct v4l2_int_device *s, +- struct v4l2_format *f) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- f->fmt.pix = sensor->pix; +- +- return 0; +-} +- +-/** +- * ioctl_try_fmt_cap - Implement the CAPTURE buffer VIDIOC_TRY_FMT ioctl +- * @s: pointer to standard V4L2 device structure +- * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure +- * +- * Implement the VIDIOC_TRY_FMT ioctl for the CAPTURE buffer type. This +- * ioctl is used to negotiate the image capture size and pixel format +- * without actually making it take effect. +- */ +-static int ioctl_try_fmt_cap(struct v4l2_int_device *s, +- struct v4l2_format *f) +-{ +- struct v4l2_pix_format *pix = &f->fmt.pix; +- struct mt9t111_sensor *sensor = s->priv; +- struct v4l2_pix_format *pix2 = &sensor->pix; +- +- pix->width = 640; +- pix->height = 480; +-#ifdef USE_RAW +- pix->pixelformat = V4L2_PIX_FMT_SGRBG10; +- pix->bytesperline = pix->width; +- pix->colorspace = V4L2_COLORSPACE_SRGB; +-#else +- pix->pixelformat = V4L2_PIX_FMT_YUYV; +- pix->bytesperline = pix->width * 2; +- pix->colorspace = V4L2_COLORSPACE_JPEG; +-#endif +- pix->field = V4L2_FIELD_NONE; +- +- pix->sizeimage = pix->bytesperline * pix->height; +- pix->priv = 0; +- *pix2 = *pix; +- return 0; +-} +- +-/** +- * ioctl_s_fmt_cap - V4L2 sensor interface handler for VIDIOC_S_FMT ioctl +- * @s: pointer to standard V4L2 device structure +- * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure +- * +- * If the requested format is supported, configures the HW to use that +- * format, returns error code if format not supported or HW can't be +- * correctly configured. +- */ +-static int ioctl_s_fmt_cap(struct v4l2_int_device *s, +- struct v4l2_format *f) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- struct v4l2_pix_format *pix = &f->fmt.pix; +- int rval; +- +- rval = ioctl_try_fmt_cap(s, f); +- if (!rval) +- sensor->pix = *pix; +- +- return rval; +-} +- +-/** +- * ioctl_enum_fmt_cap - Implement the CAPTURE buffer VIDIOC_ENUM_FMT ioctl +- * @s: pointer to standard V4L2 device structure +- * @fmt: standard V4L2 VIDIOC_ENUM_FMT ioctl structure +- * +- * Implement the VIDIOC_ENUM_FMT ioctl for the CAPTURE buffer type. +- */ +-static int ioctl_enum_fmt_cap(struct v4l2_int_device *s, +- struct v4l2_fmtdesc *fmt) +-{ +- int index = fmt->index; +- enum v4l2_buf_type type = fmt->type; +- +- memset(fmt, 0, sizeof(*fmt)); +- fmt->index = index; +- fmt->type = type; +- +- switch (fmt->type) { +- case V4L2_BUF_TYPE_VIDEO_CAPTURE: +- if (index >= NUM_CAPTURE_FORMATS) +- return -EINVAL; +- break; +- default: +- return -EINVAL; +- } +- +- fmt->flags = mt9t111_formats[index].flags; +- strlcpy(fmt->description, mt9t111_formats[index].description, +- sizeof(fmt->description)); +- fmt->pixelformat = mt9t111_formats[index].pixelformat; +- +- return 0; +-} +- +-/** +- * ioctl_s_ctrl - V4L2 sensor interface handler for VIDIOC_S_CTRL ioctl +- * @s: pointer to standard V4L2 device structure +- * @vc: standard V4L2 VIDIOC_S_CTRL ioctl structure +- * +- * If the requested control is supported, sets the control's current +- * value in HW (and updates the video_control[] array). Otherwise, +- * returns -EINVAL if the control is not supported. +- */ +-static int ioctl_s_ctrl(struct v4l2_int_device *s, +- struct v4l2_control *vc) +-{ +- debug_dummy("debug_dummy -- s ctrl\n"); +- return 0; +-} +- +-/** +- * ioctl_g_ctrl - V4L2 sensor interface handler for VIDIOC_G_CTRL ioctl +- * @s: pointer to standard V4L2 device structure +- * @vc: standard V4L2 VIDIOC_G_CTRL ioctl structure +- * +- * If the requested control is supported, returns the control's current +- * value from the video_control[] array. Otherwise, returns -EINVAL +- * if the control is not supported. +- */ +-static int ioctl_g_ctrl(struct v4l2_int_device *s, +- struct v4l2_control *vc) +-{ +- debug_dummy("debug_dummy -- g ctrl\n"); +- return 0; +-} +- +-/** +- * ioctl_queryctrl - V4L2 sensor interface handler for VIDIOC_QUERYCTRL ioctl +- * @s: pointer to standard V4L2 device structure +- * @qc: standard V4L2 VIDIOC_QUERYCTRL ioctl structure +- * +- * If the requested control is supported, returns the control information +- * from the video_control[] array. Otherwise, returns -EINVAL if the +- * control is not supported. +- */ +-static int ioctl_queryctrl(struct v4l2_int_device *s, +- struct v4l2_queryctrl *qc) +-{ +- debug_dummy("debug_dummy -- query ctrl\n"); +- return -EINVAL; +-} +- +-/** +- * ioctl_s_routing - V4L2 decoder interface handler for VIDIOC_S_INPUT ioctl +- * @s: pointer to standard V4L2 device structure +- * @index: number of the input +- * +- * If index is valid, selects the requested input. Otherwise, returns -EINVAL if +- * the input is not supported or there is no active signal present in the +- * selected input. +- */ +-static int ioctl_s_routing(struct v4l2_int_device *s, +- struct v4l2_routing *route) +-{ +- return 0; +-} +- +-/** +- * ioctl_g_ifparm - V4L2 decoder interface handler for vidioc_int_g_ifparm_num +- * @s: pointer to standard V4L2 device structure +- * @p: pointer to standard V4L2 vidioc_int_g_ifparm_num ioctl structure +- * +- * Gets slave interface parameters. +- * Calculates the required xclk value to support the requested +- * clock parameters in p. This value is returned in the p +- * parameter. +- */ +-static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p) +-{ +- struct mt9t111_sensor *sensor = s->priv; +- int rval; +- +- if (p == NULL) +- return -EINVAL; +- +- if (NULL == sensor->pdata->ifparm) +- return -EINVAL; +- +- rval = sensor->pdata->ifparm(p); +- if (rval) { +- v4l_err(sensor->i2c_client, "g_ifparm.Err[%d]\n", rval); +- return rval; +- } +- +- p->u.ycbcr.clock_curr = 40 * 1000000; /* temporal value */ +- +- return 0; +-} +- +-static struct v4l2_int_ioctl_desc mt9t111_ioctl_desc[] = { +- { .num = vidioc_int_enum_framesizes_num, +- .func = (v4l2_int_ioctl_func *)ioctl_enum_framesizes }, +- { .num = vidioc_int_enum_frameintervals_num, +- .func = (v4l2_int_ioctl_func *)ioctl_enum_frameintervals }, +- { .num = vidioc_int_dev_init_num, +- .func = (v4l2_int_ioctl_func *)ioctl_dev_init }, +- { .num = vidioc_int_dev_exit_num, +- .func = (v4l2_int_ioctl_func *)ioctl_dev_exit }, +- { .num = vidioc_int_s_power_num, +- .func = (v4l2_int_ioctl_func *)ioctl_s_power }, +- { .num = vidioc_int_g_priv_num, +- .func = (v4l2_int_ioctl_func *)ioctl_g_priv }, +- { .num = vidioc_int_g_ifparm_num, +- .func = (v4l2_int_ioctl_func *)ioctl_g_ifparm }, +- { .num = vidioc_int_init_num, +- .func = (v4l2_int_ioctl_func *)ioctl_init }, +- { .num = vidioc_int_enum_fmt_cap_num, +- .func = (v4l2_int_ioctl_func *)ioctl_enum_fmt_cap }, +- { .num = vidioc_int_try_fmt_cap_num, +- .func = (v4l2_int_ioctl_func *)ioctl_try_fmt_cap }, +- { .num = vidioc_int_g_fmt_cap_num, +- .func = (v4l2_int_ioctl_func *)ioctl_g_fmt_cap }, +- { .num = vidioc_int_s_fmt_cap_num, +- .func = (v4l2_int_ioctl_func *)ioctl_s_fmt_cap }, +- { .num = vidioc_int_g_parm_num, +- .func = (v4l2_int_ioctl_func *)ioctl_g_parm }, +- { .num = vidioc_int_s_parm_num, +- .func = (v4l2_int_ioctl_func *)ioctl_s_parm }, +- { .num = vidioc_int_queryctrl_num, +- .func = (v4l2_int_ioctl_func *)ioctl_queryctrl }, +- { .num = vidioc_int_g_ctrl_num, +- .func = (v4l2_int_ioctl_func *)ioctl_g_ctrl }, +- { .num = vidioc_int_s_ctrl_num, +- .func = (v4l2_int_ioctl_func *)ioctl_s_ctrl }, +- { .num = vidioc_int_s_video_routing_num, +- .func = (v4l2_int_ioctl_func *)ioctl_s_routing }, +-}; +- +-static void mt9t111_refresh(struct i2c_client *client) +-{ +- int i; +- unsigned short value; +- /* MCU_ADDRESS [SEQ_CMD] -- refresh */ +- mt9t111_write_reg(client, 0x098E, 0x8400); +- mt9t111_write_reg(client, 0x0990, 0x0006); +- for (i = 0; i < 100; i++) { +- mt9t111_write_reg(client, 0x098E, 0x8400); +- mt9t111_read_reg(client, 0x0990, &value); +- if (value == 0) +- break; +- mdelay(5); +- } +-} +- +-#ifdef COLOR_BAR +-static void mt9t111_color_bar(struct i2c_client *client) +-{ +- mt9t111_write_reg(client, 0x3210, 0x01B0); /* disable lens correction */ +- +- mt9t111_write_reg(client, 0x098E, 0x6003); +- mt9t111_write_reg(client, 0x0990, 0x0100); +- mt9t111_write_reg(client, 0x098E, 0x6025); +- mt9t111_write_reg(client, 0x0990, 0x0003); +-} +-#endif +- +-static void mt9t111_bayer_format(struct i2c_client *client) +-{ +- mt9t111_write_regs(client, bayer_pattern_regs, +- sizeof(bayer_pattern_regs) / sizeof(mt9t111_regs)); +-} +- +-static void mt9t111_enable_pll(struct i2c_client *client) +-{ +- int i; +- unsigned short value; +- +- mt9t111_write_regs(client, pll_regs1, +- sizeof(pll_regs1) / sizeof(mt9t111_regs)); +- for (i = 0; i < 100; i++) { +- mt9t111_read_reg(client, 0x0014, &value); +- if ((value & 0x8000) != 0) +- break; +- mdelay(2); +- } +- mt9t111_write_regs(client, pll_regs2, +- sizeof(pll_regs2) / sizeof(mt9t111_regs)); +-} +- +- +-static void mt9t111_loaddefault(struct i2c_client *client) +-{ +- mt9t111_write_reg(client, 0x001A, 0x0219); +- mt9t111_write_reg(client, 0x001A, 0x0218); +- +- mt9t111_enable_pll(client); +- mt9t111_write_regs(client, def_regs1, +- sizeof(def_regs1) / sizeof(mt9t111_regs)); +- mt9t111_write_regs(client, patch_rev6, +- sizeof(patch_rev6) / sizeof(mt9t111_regs)); +- mt9t111_write_regs(client, def_regs2, +- sizeof(def_regs2) / sizeof(mt9t111_regs)); +- +-#ifdef USE_RAW +- mt9t111_bayer_format(client); +-#endif +- +-#ifdef COLOR_BAR +- mt9t111_color_bar(client); +-#endif +- +- mt9t111_refresh(client); +-} +- +-static struct v4l2_int_slave mt9t111_slave = { +- .ioctls = mt9t111_ioctl_desc, +- .num_ioctls = ARRAY_SIZE(mt9t111_ioctl_desc), +-}; +- +-static struct v4l2_int_device mt9t111_int_device = { +- .module = THIS_MODULE, +- .name = "mt9t111", +- .priv = &mt9t111, +- .type = v4l2_int_type_slave, +- .u = { +- .slave = &mt9t111_slave, +- }, +-}; +- +-/** +- * mt9t111_probe - sensor driver i2c probe handler +- * @client: i2c driver client device structure +- * +- * Register sensor as an i2c client device and V4L2 +- * device. +- */ +-static int +-mt9t111_probe(struct i2c_client *client, const struct i2c_device_id *id) +-{ +- struct mt9t111_sensor *sensor = &mt9t111; +- int err; +- +- if (i2c_get_clientdata(client)) +- return -EBUSY; +- +- sensor->pdata = client->dev.platform_data; +- +- if (!sensor->pdata) { +- dev_err(&client->dev, "no platform data?\n"); +- return -ENODEV; +- } +- +- sensor->v4l2_int_device = &mt9t111_int_device; +- sensor->i2c_client = client; +- +- i2c_set_clientdata(client, sensor); +- +- sensor->pix.width = 640; +- sensor->pix.height = 480; +-#ifdef USE_RAW +- sensor->pix.pixelformat = V4L2_PIX_FMT_SGRBG10; +-#else +- sensor->pix.pixelformat = V4L2_PIX_FMT_YUYV; +-#endif +- err = v4l2_int_device_register(sensor->v4l2_int_device); +- if (err) +- i2c_set_clientdata(client, NULL); +- return err; +-} +- +-/** +- * mt9t111_remove - sensor driver i2c remove handler +- * @client: i2c driver client device structure +- * +- * Unregister sensor as an i2c client device and V4L2 +- * device. Complement of mt9t111_probe(). +- */ +-static int __exit +-mt9t111_remove(struct i2c_client *client) +-{ +- struct mt9t111_sensor *sensor = i2c_get_clientdata(client); +- +- if (!client->adapter) +- return -ENODEV; /* our client isn't attached */ +- +- v4l2_int_device_unregister(sensor->v4l2_int_device); +- i2c_set_clientdata(client, NULL); +- +- return 0; +-} +- +-static const struct i2c_device_id mt9t111_id[] = { +- { "mt9t111", 0 }, +- { }, +-}; +-MODULE_DEVICE_TABLE(i2c, mt9t111_id); +- +-static struct i2c_driver mt9t111sensor_i2c_driver = { +- .driver = { +- .name = "mt9t111", +- .owner = THIS_MODULE, +- }, +- .probe = mt9t111_probe, +- .remove = __exit_p(mt9t111_remove), +- .id_table = mt9t111_id, +-}; +- +-/** +- * mt9t111sensor_init - sensor driver module_init handler +- * +- * Registers driver as an i2c client driver. Returns 0 on success, +- * error code otherwise. +- */ +-static int __init mt9t111sensor_init(void) +-{ +-printk(KERN_INFO "entering mt9t111sensor_init\n"); +- return i2c_add_driver(&mt9t111sensor_i2c_driver); +-} +-module_init(mt9t111sensor_init); +- +-/** +- * mt9t111sensor_cleanup - sensor driver module_exit handler +- * +- * Unregisters/deletes driver as an i2c client driver. +- * Complement of mt9t111sensor_init. +- */ +-static void __exit mt9t111sensor_cleanup(void) +-{ +- i2c_del_driver(&mt9t111sensor_i2c_driver); +-} +-module_exit(mt9t111sensor_cleanup); +- +-MODULE_LICENSE("GPL"); +-MODULE_DESCRIPTION("mt9t111 camera sensor driver"); +diff --git a/drivers/media/video/mt9t111_reg.h b/drivers/media/video/mt9t111_reg.h +deleted file mode 100644 +index e226c37..0000000 +--- a/drivers/media/video/mt9t111_reg.h ++++ /dev/null +@@ -1,1364 +0,0 @@ +-/* +- * drivers/media/video/mt9t111_reg.h +- * +- * mt9t111 sensor driver header file +- * +- * Copyright (C) 2009 Leopard Imaging +- * +- * This file is licensed under the terms of the GNU General Public License +- * version 2. This program is licensed "as is" without any warranty of any +- * kind, whether express or implied. +- */ +- +-#ifndef MT9T111_REG_H +-#define MT9T111_REG_H +- +-/* register addr */ +-#define MT9T111_CHIP_ID (0x0000) +- +-/* register value */ +-#define MT9T111_CHIP_ID_VALUE (0x2680) +- +-typedef struct { +- u16 delay_time; +- u16 addr; +- u16 data; +-} mt9t111_regs; +- +-mt9t111_regs patch_rev6[] = { +- {0, 0x0982, 0x0}, +- {0, 0x098A, 0xCE7}, +- {0, 0x0990, 0x3C3C}, +- {0, 0x0992, 0x3C3C}, +- {0, 0x0994, 0x3C5F}, +- {0, 0x0996, 0x4F30}, +- {0, 0x0998, 0xED08}, +- {0, 0x099a, 0xBD61}, +- {0, 0x099c, 0xD5CE}, +- {0, 0x099e, 0x4CD}, +- {0, 0x098A, 0xCF7}, +- {0, 0x0990, 0x1F17}, +- {0, 0x0992, 0x211}, +- {0, 0x0994, 0xCC33}, +- {0, 0x0996, 0x2E30}, +- {0, 0x0998, 0xED02}, +- {0, 0x099a, 0xCCFF}, +- {0, 0x099c, 0xFDED}, +- {0, 0x099e, 0xCC}, +- {0, 0x098A, 0xD07}, +- {0, 0x0990, 0x2}, +- {0, 0x0992, 0xBD70}, +- {0, 0x0994, 0x6D18}, +- {0, 0x0996, 0xDE1F}, +- {0, 0x0998, 0x181F}, +- {0, 0x099a, 0x8E01}, +- {0, 0x099c, 0x10CC}, +- {0, 0x099e, 0x3C52}, +- {0, 0x098A, 0xD17}, +- {0, 0x0990, 0x30ED}, +- {0, 0x0992, 0x18}, +- {0, 0x0994, 0xECA0}, +- {0, 0x0996, 0xC4FD}, +- {0, 0x0998, 0xBD70}, +- {0, 0x099a, 0x2120}, +- {0, 0x099c, 0x1ECC}, +- {0, 0x099e, 0x3C52}, +- {0, 0x098A, 0xD27}, +- {0, 0x0990, 0x30ED}, +- {0, 0x0992, 0xDE}, +- {0, 0x0994, 0x1FEC}, +- {0, 0x0996, 0xA0BD}, +- {0, 0x0998, 0x7021}, +- {0, 0x099a, 0xCC3C}, +- {0, 0x099c, 0x5230}, +- {0, 0x099e, 0xED02}, +- {0, 0x098A, 0xD37}, +- {0, 0x0990, 0xCCFF}, +- {0, 0x0992, 0xFCED}, +- {0, 0x0994, 0xCC}, +- {0, 0x0996, 0x2}, +- {0, 0x0998, 0xBD70}, +- {0, 0x099a, 0x6DFC}, +- {0, 0x099c, 0x4E1}, +- {0, 0x099e, 0x1A83}, +- {0, 0x098A, 0xD47}, +- {0, 0x0990, 0x1}, +- {0, 0x0992, 0x2720}, +- {0, 0x0994, 0x1A83}, +- {0, 0x0996, 0x4}, +- {0, 0x0998, 0x271E}, +- {0, 0x099a, 0x1A83}, +- {0, 0x099c, 0x8}, +- {0, 0x099e, 0x271C}, +- {0, 0x098A, 0xD57}, +- {0, 0x0990, 0x1A83}, +- {0, 0x0992, 0x10}, +- {0, 0x0994, 0x271A}, +- {0, 0x0996, 0x1A83}, +- {0, 0x0998, 0x20}, +- {0, 0x099a, 0x2718}, +- {0, 0x099c, 0x1A83}, +- {0, 0x099e, 0x40}, +- {0, 0x098A, 0xD67}, +- {0, 0x0990, 0x2716}, +- {0, 0x0992, 0x2019}, +- {0, 0x0994, 0xC61E}, +- {0, 0x0996, 0x2012}, +- {0, 0x0998, 0xC622}, +- {0, 0x099a, 0x200E}, +- {0, 0x099c, 0xC621}, +- {0, 0x099e, 0x200A}, +- {0, 0x098A, 0xD77}, +- {0, 0x0990, 0xC620}, +- {0, 0x0992, 0x2006}, +- {0, 0x0994, 0xC62A}, +- {0, 0x0996, 0x2002}, +- {0, 0x0998, 0xC62B}, +- {0, 0x099a, 0x30ED}, +- {0, 0x099c, 0x8CC}, +- {0, 0x099e, 0x3400}, +- {0, 0x098A, 0xD87}, +- {0, 0x0990, 0x30ED}, +- {0, 0x0992, 0x34}, +- {0, 0x0994, 0xBD6F}, +- {0, 0x0996, 0xD184}, +- {0, 0x0998, 0x330}, +- {0, 0x099a, 0xED07}, +- {0, 0x099c, 0xA60A}, +- {0, 0x099e, 0x4848}, +- {0, 0x098A, 0xD97}, +- {0, 0x0990, 0x5FED}, +- {0, 0x0992, 0x5EA}, +- {0, 0x0994, 0x8AA}, +- {0, 0x0996, 0x731}, +- {0, 0x0998, 0xBD70}, +- {0, 0x099a, 0x2130}, +- {0, 0x099c, 0xC60A}, +- {0, 0x099e, 0x3A35}, +- {0, 0x098A, 0xDA7}, +- {0, 0x0990, 0x3937}, +- {0, 0x0992, 0x3C3C}, +- {0, 0x0994, 0x3C34}, +- {0, 0x0996, 0xDE2F}, +- {0, 0x0998, 0xEE0E}, +- {0, 0x099a, 0xAD00}, +- {0, 0x099c, 0x7D13}, +- {0, 0x099e, 0xEF27}, +- {0, 0x098A, 0xDB7}, +- {0, 0x0990, 0x7CCE}, +- {0, 0x0992, 0x13E0}, +- {0, 0x0994, 0x1E05}, +- {0, 0x0996, 0x1060}, +- {0, 0x0998, 0xE60E}, +- {0, 0x099a, 0x4FC3}, +- {0, 0x099c, 0x13F0}, +- {0, 0x099e, 0x8FE6}, +- {0, 0x098A, 0xDC7}, +- {0, 0x0990, 0x30}, +- {0, 0x0992, 0xE107}, +- {0, 0x0994, 0x2216}, +- {0, 0x0996, 0xF613}, +- {0, 0x0998, 0xEE4F}, +- {0, 0x099a, 0xC313}, +- {0, 0x099c, 0xF38F}, +- {0, 0x099e, 0xE600}, +- {0, 0x098A, 0xDD7}, +- {0, 0x0990, 0x30E1}, +- {0, 0x0992, 0x725}, +- {0, 0x0994, 0x7F6}, +- {0, 0x0996, 0x13EE}, +- {0, 0x0998, 0xC103}, +- {0, 0x099a, 0x253C}, +- {0, 0x099c, 0x7F13}, +- {0, 0x099e, 0xEEF6}, +- {0, 0x098A, 0xDE7}, +- {0, 0x0990, 0x13EF}, +- {0, 0x0992, 0xE706}, +- {0, 0x0994, 0xCC13}, +- {0, 0x0996, 0xF0ED}, +- {0, 0x0998, 0x4CC}, +- {0, 0x099a, 0x13F3}, +- {0, 0x099c, 0x200F}, +- {0, 0x099e, 0x7C13}, +- {0, 0x098A, 0xDF7}, +- {0, 0x0990, 0xEEEC}, +- {0, 0x0992, 0x4C3}, +- {0, 0x0994, 0x1}, +- {0, 0x0996, 0xED04}, +- {0, 0x0998, 0xEC02}, +- {0, 0x099a, 0xC300}, +- {0, 0x099c, 0x1ED}, +- {0, 0x099e, 0x2F6}, +- {0, 0x098A, 0xE07}, +- {0, 0x0990, 0x13EE}, +- {0, 0x0992, 0xE106}, +- {0, 0x0994, 0x2412}, +- {0, 0x0996, 0xEE04}, +- {0, 0x0998, 0xE600}, +- {0, 0x099a, 0x30E1}, +- {0, 0x099c, 0x722}, +- {0, 0x099e, 0xDFEE}, +- {0, 0x098A, 0xE17}, +- {0, 0x0990, 0x2E6}, +- {0, 0x0992, 0x30}, +- {0, 0x0994, 0xE107}, +- {0, 0x0996, 0x25D6}, +- {0, 0x0998, 0xDE49}, +- {0, 0x099a, 0xEE08}, +- {0, 0x099c, 0xAD00}, +- {0, 0x099e, 0xCC13}, +- {0, 0x098A, 0xE27}, +- {0, 0x0990, 0xF630}, +- {0, 0x0992, 0xED00}, +- {0, 0x0994, 0xDE2F}, +- {0, 0x0996, 0xEE10}, +- {0, 0x0998, 0xCC13}, +- {0, 0x099a, 0xFAAD}, +- {0, 0x099c, 0x38}, +- {0, 0x099e, 0x3838}, +- {0, 0x098A, 0xE37}, +- {0, 0x0990, 0x3839}, +- {0, 0x098A, 0x1000}, +- {0, 0x0990, 0xCC10}, +- {0, 0x0992, 0x9BD}, +- {0, 0x0994, 0x4224}, +- {0, 0x0996, 0x7E10}, +- {0, 0x0998, 0x9C6}, +- {0, 0x099a, 0x1F7}, +- {0, 0x099c, 0x18A}, +- {0, 0x099e, 0xC606}, +- {0, 0x098A, 0x1010}, +- {0, 0x0990, 0xF701}, +- {0, 0x0992, 0x8BDE}, +- {0, 0x0994, 0x3F18}, +- {0, 0x0996, 0xCE0B}, +- {0, 0x0998, 0xF1CC}, +- {0, 0x099a, 0x11}, +- {0, 0x099c, 0xBDD7}, +- {0, 0x099e, 0xCC}, +- {0, 0x098A, 0x1020}, +- {0, 0x0990, 0xBF1}, +- {0, 0x0992, 0xDD3F}, +- {0, 0x0994, 0xDE35}, +- {0, 0x0996, 0x18CE}, +- {0, 0x0998, 0xC03}, +- {0, 0x099a, 0xCC00}, +- {0, 0x099c, 0x3FBD}, +- {0, 0x099e, 0xD700}, +- {0, 0x098A, 0x1030}, +- {0, 0x0990, 0xCC0C}, +- {0, 0x0992, 0x3DD}, +- {0, 0x0994, 0x35DE}, +- {0, 0x0996, 0x4718}, +- {0, 0x0998, 0xCE0C}, +- {0, 0x099a, 0x43CC}, +- {0, 0x099c, 0x15}, +- {0, 0x099e, 0xBDD7}, +- {0, 0x098A, 0x1040}, +- {0, 0x0990, 0xCC}, +- {0, 0x0992, 0xC43}, +- {0, 0x0994, 0xDD47}, +- {0, 0x0996, 0xFE00}, +- {0, 0x0998, 0x3318}, +- {0, 0x099a, 0xCE0C}, +- {0, 0x099c, 0x59CC}, +- {0, 0x099e, 0x9}, +- {0, 0x098A, 0x1050}, +- {0, 0x0990, 0xBDD7}, +- {0, 0x0992, 0xCC}, +- {0, 0x0994, 0xC59}, +- {0, 0x0996, 0xFD00}, +- {0, 0x0998, 0x33DE}, +- {0, 0x099a, 0x4118}, +- {0, 0x099c, 0xCE0C}, +- {0, 0x099e, 0x63CC}, +- {0, 0x098A, 0x1060}, +- {0, 0x0990, 0xD}, +- {0, 0x0992, 0xBDD7}, +- {0, 0x0994, 0xCC}, +- {0, 0x0996, 0xC63}, +- {0, 0x0998, 0xDD41}, +- {0, 0x099a, 0xFE00}, +- {0, 0x099c, 0x3118}, +- {0, 0x099e, 0xCE0C}, +- {0, 0x098A, 0x1070}, +- {0, 0x0990, 0x71CC}, +- {0, 0x0992, 0x29}, +- {0, 0x0994, 0xBDD7}, +- {0, 0x0996, 0xCC}, +- {0, 0x0998, 0xC71}, +- {0, 0x099a, 0xFD00}, +- {0, 0x099c, 0x31DE}, +- {0, 0x099e, 0x3918}, +- {0, 0x098A, 0x1080}, +- {0, 0x0990, 0xCE0C}, +- {0, 0x0992, 0x9BCC}, +- {0, 0x0994, 0x23}, +- {0, 0x0996, 0xBDD7}, +- {0, 0x0998, 0xCC}, +- {0, 0x099a, 0xC9B}, +- {0, 0x099c, 0xDD39}, +- {0, 0x099e, 0xDE49}, +- {0, 0x098A, 0x1090}, +- {0, 0x0990, 0x18CE}, +- {0, 0x0992, 0xCBF}, +- {0, 0x0994, 0xCC00}, +- {0, 0x0996, 0xDBD}, +- {0, 0x0998, 0xD700}, +- {0, 0x099a, 0xCC0C}, +- {0, 0x099c, 0xBFDD}, +- {0, 0x099e, 0x49CC}, +- {0, 0x098A, 0x10A0}, +- {0, 0x0990, 0x1162}, +- {0, 0x0992, 0xFD0B}, +- {0, 0x0994, 0xFDCC}, +- {0, 0x0996, 0xCE7}, +- {0, 0x0998, 0xFD0C}, +- {0, 0x099a, 0x1FCC}, +- {0, 0x099c, 0x1245}, +- {0, 0x099e, 0xFD0C}, +- {0, 0x098A, 0x10B0}, +- {0, 0x0990, 0x51CC}, +- {0, 0x0992, 0x110B}, +- {0, 0x0994, 0xFD0C}, +- {0, 0x0996, 0x5BCC}, +- {0, 0x0998, 0x1108}, +- {0, 0x099a, 0xFD0C}, +- {0, 0x099c, 0x65CC}, +- {0, 0x099e, 0x10D0}, +- {0, 0x098A, 0x10C0}, +- {0, 0x0990, 0xFD0C}, +- {0, 0x0992, 0x7BCC}, +- {0, 0x0994, 0x12DE}, +- {0, 0x0996, 0xFD0C}, +- {0, 0x0998, 0xA7CC}, +- {0, 0x099a, 0xDA8}, +- {0, 0x099c, 0xFD0C}, +- {0, 0x099e, 0xCB39}, +- {0, 0x098A, 0x10D0}, +- {0, 0x0990, 0x37DE}, +- {0, 0x0992, 0x1DEC}, +- {0, 0x0994, 0xC5F}, +- {0, 0x0996, 0x8402}, +- {0, 0x0998, 0x4416}, +- {0, 0x099a, 0x4FF7}, +- {0, 0x099c, 0xCCD}, +- {0, 0x099e, 0xE60B}, +- {0, 0x098A, 0x10E0}, +- {0, 0x0990, 0xC407}, +- {0, 0x0992, 0xF70C}, +- {0, 0x0994, 0xCE7F}, +- {0, 0x0996, 0x30C4}, +- {0, 0x0998, 0xEC25}, +- {0, 0x099a, 0xFD30}, +- {0, 0x099c, 0xC5FC}, +- {0, 0x099e, 0x6D6}, +- {0, 0x098A, 0x10F0}, +- {0, 0x0990, 0xFD30}, +- {0, 0x0992, 0xC701}, +- {0, 0x0994, 0xFC30}, +- {0, 0x0996, 0xC0FD}, +- {0, 0x0998, 0xBED}, +- {0, 0x099a, 0xFC30}, +- {0, 0x099c, 0xC2FD}, +- {0, 0x099e, 0xBEF}, +- {0, 0x098A, 0x1100}, +- {0, 0x0990, 0x30E6}, +- {0, 0x0992, 0xBD}, +- {0, 0x0994, 0x5203}, +- {0, 0x0996, 0x3139}, +- {0, 0x0998, 0x7E9E}, +- {0, 0x099a, 0x143C}, +- {0, 0x099c, 0x3C3C}, +- {0, 0x099e, 0x2101}, +- {0, 0x098A, 0x1110}, +- {0, 0x0990, 0xCC00}, +- {0, 0x0992, 0x18BD}, +- {0, 0x0994, 0x6FD1}, +- {0, 0x0996, 0xC504}, +- {0, 0x0998, 0x26F5}, +- {0, 0x099a, 0xDC25}, +- {0, 0x099c, 0x30ED}, +- {0, 0x099e, 0x420}, +- {0, 0x098A, 0x1120}, +- {0, 0x0990, 0x12EE}, +- {0, 0x0992, 0x43C}, +- {0, 0x0994, 0x1838}, +- {0, 0x0996, 0xE621}, +- {0, 0x0998, 0x18E7}, +- {0, 0x099a, 0xBE30}, +- {0, 0x099c, 0xEE04}, +- {0, 0x099e, 0xEC1D}, +- {0, 0x098A, 0x1130}, +- {0, 0x0990, 0x30ED}, +- {0, 0x0992, 0x4EC}, +- {0, 0x0994, 0x426}, +- {0, 0x0996, 0xEACC}, +- {0, 0x0998, 0x1A}, +- {0, 0x099a, 0xED02}, +- {0, 0x099c, 0xCCFB}, +- {0, 0x099e, 0xFFED}, +- {0, 0x098A, 0x1140}, +- {0, 0x0990, 0xCC}, +- {0, 0x0992, 0x400}, +- {0, 0x0994, 0xBD70}, +- {0, 0x0996, 0x6DCC}, +- {0, 0x0998, 0x1A}, +- {0, 0x099a, 0x30ED}, +- {0, 0x099c, 0x2CC}, +- {0, 0x099e, 0xFBFF}, +- {0, 0x098A, 0x1150}, +- {0, 0x0990, 0xED00}, +- {0, 0x0992, 0x5F4F}, +- {0, 0x0994, 0xBD70}, +- {0, 0x0996, 0x6D5F}, +- {0, 0x0998, 0xBD5B}, +- {0, 0x099a, 0x17BD}, +- {0, 0x099c, 0x558B}, +- {0, 0x099e, 0x3838}, +- {0, 0x098A, 0x1160}, +- {0, 0x0990, 0x3839}, +- {0, 0x0992, 0x3C3C}, +- {0, 0x0994, 0xC640}, +- {0, 0x0996, 0xF730}, +- {0, 0x0998, 0xC4FC}, +- {0, 0x099a, 0xBED}, +- {0, 0x099c, 0xFD30}, +- {0, 0x099e, 0xC0FC}, +- {0, 0x098A, 0x1170}, +- {0, 0x0990, 0xBEF}, +- {0, 0x0992, 0xFD30}, +- {0, 0x0994, 0xC2DE}, +- {0, 0x0996, 0x1DEC}, +- {0, 0x0998, 0x25FD}, +- {0, 0x099a, 0x30C5}, +- {0, 0x099c, 0x101}, +- {0, 0x099e, 0x1FC}, +- {0, 0x098A, 0x1180}, +- {0, 0x0990, 0x30C2}, +- {0, 0x0992, 0xFD06}, +- {0, 0x0994, 0xD6EC}, +- {0, 0x0996, 0xC5F}, +- {0, 0x0998, 0x8402}, +- {0, 0x099a, 0x4416}, +- {0, 0x099c, 0x4F30}, +- {0, 0x099e, 0xE703}, +- {0, 0x098A, 0x1190}, +- {0, 0x0990, 0xF10C}, +- {0, 0x0992, 0xCD27}, +- {0, 0x0994, 0x15F1}, +- {0, 0x0996, 0xCCD}, +- {0, 0x0998, 0x2309}, +- {0, 0x099a, 0xFC06}, +- {0, 0x099c, 0xD604}, +- {0, 0x099e, 0xFD06}, +- {0, 0x098A, 0x11A0}, +- {0, 0x0990, 0xD620}, +- {0, 0x0992, 0x7FC}, +- {0, 0x0994, 0x6D6}, +- {0, 0x0996, 0x5FD}, +- {0, 0x0998, 0x6D6}, +- {0, 0x099a, 0xDE1D}, +- {0, 0x099c, 0xE60B}, +- {0, 0x099e, 0xC407}, +- {0, 0x098A, 0x11B0}, +- {0, 0x0990, 0x30E7}, +- {0, 0x0992, 0x2F1}, +- {0, 0x0994, 0xCCE}, +- {0, 0x0996, 0x272C}, +- {0, 0x0998, 0x7D0C}, +- {0, 0x099a, 0xCE27}, +- {0, 0x099c, 0x275D}, +- {0, 0x099e, 0x2724}, +- {0, 0x098A, 0x11C0}, +- {0, 0x0990, 0x7F30}, +- {0, 0x0992, 0xC4FC}, +- {0, 0x0994, 0x6D6}, +- {0, 0x0996, 0xFD30}, +- {0, 0x0998, 0xC5F6}, +- {0, 0x099a, 0xCCE}, +- {0, 0x099c, 0x4FFD}, +- {0, 0x099e, 0x30C7}, +- {0, 0x098A, 0x11D0}, +- {0, 0x0990, 0xC640}, +- {0, 0x0992, 0xF730}, +- {0, 0x0994, 0xC4E6}, +- {0, 0x0996, 0x24F}, +- {0, 0x0998, 0xFD30}, +- {0, 0x099a, 0xC501}, +- {0, 0x099c, 0x101}, +- {0, 0x099e, 0xFC30}, +- {0, 0x098A, 0x11E0}, +- {0, 0x0990, 0xC2FD}, +- {0, 0x0992, 0x6D6}, +- {0, 0x0994, 0x7D06}, +- {0, 0x0996, 0xCB27}, +- {0, 0x0998, 0x2EC6}, +- {0, 0x099a, 0x40F7}, +- {0, 0x099c, 0x30C4}, +- {0, 0x099e, 0xFC06}, +- {0, 0x098A, 0x11F0}, +- {0, 0x0990, 0xC104}, +- {0, 0x0992, 0xF306}, +- {0, 0x0994, 0xD6ED}, +- {0, 0x0996, 0x5F}, +- {0, 0x0998, 0x6D00}, +- {0, 0x099a, 0x2A01}, +- {0, 0x099c, 0x5317}, +- {0, 0x099e, 0xFD30}, +- {0, 0x098A, 0x1200}, +- {0, 0x0990, 0xC0EC}, +- {0, 0x0992, 0xFD}, +- {0, 0x0994, 0x30C2}, +- {0, 0x0996, 0xFC06}, +- {0, 0x0998, 0xC1FD}, +- {0, 0x099a, 0x30C5}, +- {0, 0x099c, 0x101}, +- {0, 0x099e, 0x1FC}, +- {0, 0x098A, 0x1210}, +- {0, 0x0990, 0x30C2}, +- {0, 0x0992, 0xFD06}, +- {0, 0x0994, 0xC720}, +- {0, 0x0996, 0x227F}, +- {0, 0x0998, 0x30C4}, +- {0, 0x099a, 0xDE1D}, +- {0, 0x099c, 0xEC25}, +- {0, 0x099e, 0xFD30}, +- {0, 0x098A, 0x1220}, +- {0, 0x0990, 0xC5FC}, +- {0, 0x0992, 0x6D6}, +- {0, 0x0994, 0xFD30}, +- {0, 0x0996, 0xC701}, +- {0, 0x0998, 0xFC30}, +- {0, 0x099a, 0xC0FD}, +- {0, 0x099c, 0x6D0}, +- {0, 0x099e, 0xFC30}, +- {0, 0x098A, 0x1230}, +- {0, 0x0990, 0xC2FD}, +- {0, 0x0992, 0x6D2}, +- {0, 0x0994, 0xEC25}, +- {0, 0x0996, 0xFD06}, +- {0, 0x0998, 0xC3BD}, +- {0, 0x099a, 0x953C}, +- {0, 0x099c, 0xDE3F}, +- {0, 0x099e, 0xEE10}, +- {0, 0x098A, 0x1240}, +- {0, 0x0990, 0xAD00}, +- {0, 0x0992, 0x3838}, +- {0, 0x0994, 0x3930}, +- {0, 0x0996, 0x8FC3}, +- {0, 0x0998, 0xFFE9}, +- {0, 0x099a, 0x8F35}, +- {0, 0x099c, 0xBDAD}, +- {0, 0x099e, 0x1530}, +- {0, 0x098A, 0x1250}, +- {0, 0x0990, 0x6F16}, +- {0, 0x0992, 0x18DE}, +- {0, 0x0994, 0x1918}, +- {0, 0x0996, 0x8FC3}, +- {0, 0x0998, 0x14B}, +- {0, 0x099a, 0x188F}, +- {0, 0x099c, 0x18EC}, +- {0, 0x099e, 0xFD}, +- {0, 0x098A, 0x1260}, +- {0, 0x0990, 0x50E}, +- {0, 0x0992, 0x18EC}, +- {0, 0x0994, 0x2FD}, +- {0, 0x0996, 0x510}, +- {0, 0x0998, 0xE616}, +- {0, 0x099a, 0x4FED}, +- {0, 0x099c, 0x418}, +- {0, 0x099e, 0x8FC3}, +- {0, 0x098A, 0x1270}, +- {0, 0x0990, 0xFFCB}, +- {0, 0x0992, 0xE304}, +- {0, 0x0994, 0x8FE6}, +- {0, 0x0996, 0xF7}, +- {0, 0x0998, 0x514}, +- {0, 0x099a, 0x18DE}, +- {0, 0x099c, 0x1930}, +- {0, 0x099e, 0xE616}, +- {0, 0x098A, 0x1280}, +- {0, 0x0990, 0x4FED}, +- {0, 0x0992, 0x418}, +- {0, 0x0994, 0x8FC3}, +- {0, 0x0996, 0x119}, +- {0, 0x0998, 0xE304}, +- {0, 0x099a, 0x8FE6}, +- {0, 0x099c, 0xF7}, +- {0, 0x099e, 0x515}, +- {0, 0x098A, 0x1290}, +- {0, 0x0990, 0xFC05}, +- {0, 0x0992, 0x5BFD}, +- {0, 0x0994, 0x512}, +- {0, 0x0996, 0xDE37}, +- {0, 0x0998, 0xEE08}, +- {0, 0x099a, 0xAD00}, +- {0, 0x099c, 0x30E6}, +- {0, 0x099e, 0x164F}, +- {0, 0x098A, 0x12A0}, +- {0, 0x0990, 0x5ED}, +- {0, 0x0992, 0x48F}, +- {0, 0x0994, 0xC300}, +- {0, 0x0996, 0x630}, +- {0, 0x0998, 0xE304}, +- {0, 0x099a, 0x8FF6}, +- {0, 0x099c, 0x516}, +- {0, 0x099e, 0x4FED}, +- {0, 0x098A, 0x12B0}, +- {0, 0x0990, 0x30}, +- {0, 0x0992, 0x6C16}, +- {0, 0x0994, 0xE616}, +- {0, 0x0996, 0xC103}, +- {0, 0x0998, 0x2598}, +- {0, 0x099a, 0xCC32}, +- {0, 0x099c, 0x8EED}, +- {0, 0x099e, 0xEC}, +- {0, 0x098A, 0x12C0}, +- {0, 0x0990, 0x6BD}, +- {0, 0x0992, 0x7021}, +- {0, 0x0994, 0xCC32}, +- {0, 0x0996, 0x6C30}, +- {0, 0x0998, 0xED02}, +- {0, 0x099a, 0xCCF8}, +- {0, 0x099c, 0xED}, +- {0, 0x099e, 0xA6}, +- {0, 0x098A, 0x12D0}, +- {0, 0x0990, 0x9E3}, +- {0, 0x0992, 0xA84}, +- {0, 0x0994, 0x7BD}, +- {0, 0x0996, 0x706D}, +- {0, 0x0998, 0x30C6}, +- {0, 0x099a, 0x173A}, +- {0, 0x099c, 0x3539}, +- {0, 0x099e, 0x3CBD}, +- {0, 0x098A, 0x12E0}, +- {0, 0x0990, 0x776D}, +- {0, 0x0992, 0xCC32}, +- {0, 0x0994, 0x5C30}, +- {0, 0x0996, 0xED00}, +- {0, 0x0998, 0xFC13}, +- {0, 0x099a, 0x8683}, +- {0, 0x099c, 0x1}, +- {0, 0x099e, 0xBD70}, +- {0, 0x098A, 0x12F0}, +- {0, 0x0990, 0x21CC}, +- {0, 0x0992, 0x325E}, +- {0, 0x0994, 0x30ED}, +- {0, 0x0996, 0xFC}, +- {0, 0x0998, 0x1388}, +- {0, 0x099a, 0x8300}, +- {0, 0x099c, 0x1BD}, +- {0, 0x099e, 0x7021}, +- {0, 0x098A, 0x1300}, +- {0, 0x0990, 0x3839}, +- {0, 0x098E, 0x0010}, +- {0, 0x0990, 0x1000}, +- {0, 0x098E, 0x0003}, +- {100, 0x0990, 0x0004} +-}; +- +-mt9t111_regs def_regs1[] = { +- {0, 0x001A, 0x0218}, +- {0, 0x001E, 0x0777}, +- {0, 0x3084, 0x2409}, +- {0, 0x3092, 0x0A49}, +- {0, 0x3094, 0x4949}, +- {0, 0x3096, 0x4950}, +- {0, 0x0018, 0x402D}, +- {100, 0x0018, 0x402C}, +- {0, 0x098E, 0x6800}, +- {0, 0x0990, 0x0280}, +- {0, 0x098E, 0x6802}, +- {0, 0x0990, 0x01E0}, +- {0, 0x098E, 0xE88E}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x68A0}, +- {0, 0x0990, 0x082D}, +- {0, 0x098E, 0x4802}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x4804}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x4806}, +- {0, 0x0990, 0x060D}, +- {0, 0x098E, 0x4808}, +- {0, 0x0990, 0x080D}, +- {0, 0x098E, 0x480A}, +- {0, 0x0990, 0x0111}, +- {0, 0x098E, 0x480C}, +- {0, 0x0990, 0x046C}, +- {0, 0x098E, 0x480F}, +- {0, 0x0990, 0x00CC}, +- {0, 0x098E, 0x4811}, +- {0, 0x0990, 0x0381}, +- {0, 0x098E, 0x4813}, +- {0, 0x0990, 0x024F}, +- {0, 0x098E, 0x481D}, +- {0, 0x0990, 0x05AE}, +- {0, 0x098E, 0x481F}, +- {0, 0x0990, 0x05D0}, +- {0, 0x098E, 0x4825}, +- {0, 0x0990, 0x07AC}, +- {0, 0x098E, 0x6C00}, +- {0, 0x0990, 0x0800}, +- {0, 0x098E, 0x6C02}, +- {0, 0x0990, 0x0600}, +- {0, 0x098E, 0xEC8E}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x6CA0}, +- {0, 0x0990, 0x082D}, +- {0, 0x098E, 0x484A}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x484C}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x484E}, +- {0, 0x0990, 0x060D}, +- {0, 0x098E, 0x4850}, +- {0, 0x0990, 0x080D}, +- {0, 0x098E, 0x4852}, +- {0, 0x0990, 0x0111}, +- {0, 0x098E, 0x4854}, +- {0, 0x0990, 0x146C}, +- {0, 0x098E, 0x4857}, +- {0, 0x0990, 0x00CC}, +- {0, 0x098E, 0x4859}, +- {0, 0x0990, 0x0381}, +- {0, 0x098E, 0x485B}, +- {0, 0x0990, 0x024F}, +- {0, 0x098E, 0x4865}, +- {0, 0x0990, 0x05AE}, +- {0, 0x098E, 0x4867}, +- {0, 0x0990, 0x05D0}, +- {0, 0x098E, 0x486D}, +- {0, 0x0990, 0x07AC}, +- {0, 0x098E, 0xC8A5}, +- {0, 0x0990, 0x001D}, +- {0, 0x098E, 0xC8A6}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xC8A7}, +- {0, 0x0990, 0x0023}, +- {0, 0x098E, 0xC8A8}, +- {0, 0x0990, 0x0026}, +- {0, 0x098E, 0xC844}, +- {0, 0x0990, 0x0091}, +- {0, 0x098E, 0xC92F}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xC845}, +- {0, 0x0990, 0x0079}, +- {0, 0x098E, 0xC92D}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xC88C}, +- {0, 0x0990, 0x0091}, +- {0, 0x098E, 0xC930}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xC88D}, +- {0, 0x0990, 0x0079}, +- {0, 0x098E, 0xC92E}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xA002}, +- {0, 0x0990, 0x0010}, +- {0, 0x098E, 0xA009}, +- {0, 0x0990, 0x0002}, +- {0, 0x098E, 0xA00A}, +- {0, 0x0990, 0x0003}, +- {0, 0x098E, 0xA00C}, +- {0, 0x0990, 0x000A}, +- {0, 0x098E, 0x4846}, +- {0, 0x0990, 0x0014}, +- {0, 0x098E, 0x68AA}, +- {0, 0x0990, 0x0278}, +- {0, 0x098E, 0x488E}, +- {0, 0x0990, 0x0014}, +- {0, 0x098E, 0x6CAA}, +- {0, 0x0990, 0x0218}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0005}, +- {0, 0x3C20, 0x0001}, +- {0, 0x364A, 0x7D2F}, +- {0, 0x364C, 0x79EB}, +- {0, 0x364E, 0x18D2}, +- {0, 0x3650, 0x9F8F}, +- {0, 0x3652, 0xA7D2}, +- {0, 0x368A, 0x460C}, +- {0, 0x368C, 0x14F0}, +- {0, 0x368E, 0x946F}, +- {0, 0x3690, 0xC471}, +- {0, 0x3692, 0x04B1}, +- {0, 0x36CA, 0x0433}, +- {0, 0x36CC, 0x680D}, +- {0, 0x36CE, 0xEEF3}, +- {0, 0x36D0, 0x4850}, +- {0, 0x36D2, 0xF233}, +- {0, 0x370A, 0xB2AF}, +- {0, 0x370C, 0x2CF0}, +- {0, 0x370E, 0x3F10}, +- {0, 0x3710, 0xC673}, +- {0, 0x3712, 0xA972}, +- {0, 0x374A, 0x0590}, +- {0, 0x374C, 0xAFB3}, +- {0, 0x374E, 0x93D7}, +- {0, 0x3750, 0x8D12}, +- {0, 0x3752, 0x2539}, +- {0, 0x3640, 0x0350}, +- {0, 0x3642, 0x322C}, +- {0, 0x3644, 0x77D1}, +- {0, 0x3646, 0xA26F}, +- {0, 0x3648, 0xC872}, +- {0, 0x3680, 0x0C4C}, +- {0, 0x3682, 0x9510}, +- {0, 0x3684, 0x110E}, +- {0, 0x3686, 0x4331}, +- {0, 0x3688, 0xC1CF}, +- {0, 0x36C0, 0x6152}, +- {0, 0x36C2, 0x038E}, +- {0, 0x36C4, 0x9AF4}, +- {0, 0x36C6, 0xE12F}, +- {0, 0x36C8, 0x09F3}, +- {0, 0x3700, 0xC5AF}, +- {0, 0x3702, 0xCA90}, +- {0, 0x3704, 0x5D0F}, +- {0, 0x3706, 0x3293}, +- {0, 0x3708, 0x2B92}, +- {0, 0x3740, 0xC590}, +- {0, 0x3742, 0x8133}, +- {0, 0x3744, 0xE0F6}, +- {0, 0x3746, 0x0254}, +- {0, 0x3748, 0x10B9}, +- {0, 0x3654, 0x7F8F}, +- {0, 0x3656, 0x6F6C}, +- {0, 0x3658, 0x5971}, +- {0, 0x365A, 0x9A0F}, +- {0, 0x365C, 0xA1B2}, +- {0, 0x3694, 0xB00C}, +- {0, 0x3696, 0xEBCF}, +- {0, 0x3698, 0x06AD}, +- {0, 0x369A, 0x4D31}, +- {0, 0x369C, 0x2A4E}, +- {0, 0x36D4, 0x4752}, +- {0, 0x36D6, 0x724D}, +- {0, 0x36D8, 0xAD34}, +- {0, 0x36DA, 0x1350}, +- {0, 0x36DC, 0x4E94}, +- {0, 0x3714, 0xA06E}, +- {0, 0x3716, 0x9152}, +- {0, 0x3718, 0x1F53}, +- {0, 0x371A, 0x3933}, +- {0, 0x371C, 0xBA94}, +- {0, 0x3754, 0x1233}, +- {0, 0x3756, 0xA032}, +- {0, 0x3758, 0xE936}, +- {0, 0x375A, 0xBE34}, +- {0, 0x375C, 0x02D9}, +- {0, 0x365E, 0x7DEF}, +- {0, 0x3660, 0x434B}, +- {0, 0x3662, 0x69F1}, +- {0, 0x3664, 0x8A0F}, +- {0, 0x3666, 0xBDB2}, +- {0, 0x369E, 0x290D}, +- {0, 0x36A0, 0x42CF}, +- {0, 0x36A2, 0xDC6D}, +- {0, 0x36A4, 0x91B1}, +- {0, 0x36A6, 0x9DE9}, +- {0, 0x36DE, 0x70B2}, +- {0, 0x36E0, 0x02AC}, +- {0, 0x36E2, 0x9714}, +- {0, 0x36E4, 0xF3CF}, +- {0, 0x36E6, 0x6BD1}, +- {0, 0x371E, 0xE42E}, +- {0, 0x3720, 0x1D32}, +- {0, 0x3722, 0xCC31}, +- {0, 0x3724, 0xAE94}, +- {0, 0x3726, 0x6413}, +- {0, 0x375E, 0xE290}, +- {0, 0x3760, 0x8F53}, +- {0, 0x3762, 0xF936}, +- {0, 0x3764, 0x4614}, +- {0, 0x3766, 0x1B59}, +- {0, 0x3784, 0x0404}, +- {0, 0x3782, 0x0304}, +- {0, 0x3210, 0x01B8}, +- {0, 0x098E, 0xC913}, +- {0, 0x0990, 0x000A}, +- {0, 0x098E, 0x686B}, +- {0, 0x0990, 0x05DC}, +- {0, 0x098E, 0x686D}, +- {0, 0x0990, 0x0BB8}, +- {0, 0x098E, 0x6C6B}, +- {0, 0x0990, 0x05DC}, +- {0, 0x098E, 0x6C6D}, +- {0, 0x0990, 0x0BB8}, +- {0, 0x098E, 0x3439}, +- {0, 0x0990, 0x05DC}, +- {0, 0x098E, 0x343B}, +- {0, 0x0990, 0x0BB8}, +- {0, 0x098E, 0x4926}, +- {0, 0x0990, 0x0001}, +- {0, 0x098E, 0x4928}, +- {0, 0x0990, 0x0002}, +- {0, 0x098E, 0x492A}, +- {0, 0x0990, 0x0656}, +- {0, 0x098E, 0x4D26}, +- {0, 0x0990, 0x0001}, +- {0, 0x098E, 0x4D28}, +- {0, 0x0990, 0x0002}, +- {0, 0x098E, 0x4D2A}, +- {0, 0x0990, 0x0656}, +- {0, 0x33F4, 0x040B}, +- {0, 0x098E, 0xC916}, +- {0, 0x0990, 0x0014}, +- {0, 0x098E, 0xC919}, +- {0, 0x0990, 0x0028}, +- {0, 0x098E, 0xC917}, +- {0, 0x0990, 0x0004}, +- {0, 0x098E, 0xC918}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xC91A}, +- {0, 0x0990, 0x0001}, +- {0, 0x098E, 0xC91B}, +- {0, 0x0990, 0x0009}, +- {0, 0x326C, 0x0C00}, +- {0, 0x098E, 0x494B}, +- {0, 0x0990, 0x0042}, +- {0, 0x098E, 0x494D}, +- {0, 0x0990, 0x012C}, +- {0, 0x098E, 0xC91E}, +- {0, 0x0990, 0x0012}, +- {0, 0x098E, 0xC91F}, +- {0, 0x0990, 0x000A}, +- {0, 0x098E, 0xC920}, +- {0, 0x0990, 0x0012}, +- {0, 0x098E, 0xC921}, +- {0, 0x0990, 0x000A}, +- {0, 0x098E, 0xC922}, +- {0, 0x0990, 0x0026}, +- {0, 0x098E, 0xC923}, +- {0, 0x0990, 0x001E}, +- {0, 0x098E, 0xC924}, +- {0, 0x0990, 0x0026}, +- {0, 0x098E, 0xC925}, +- {0, 0x0990, 0x0026}, +- {0, 0x098E, 0xBC02}, +- {0, 0x0990, 0x0003}, +- {0, 0x098E, 0xBC05}, +- {0, 0x0990, 0x000E}, +- {0, 0x098E, 0xC950}, +- {0, 0x0990, 0x0064}, +- {0, 0x098E, 0xC94F}, +- {0, 0x0990, 0x0038}, +- {0, 0x098E, 0xC952}, +- {0, 0x0990, 0x0064}, +- {0, 0x098E, 0xC951}, +- {0, 0x0990, 0x0051}, +- {0, 0x098E, 0xC954}, +- {0, 0x0990, 0x0010}, +- {0, 0x098E, 0xC953}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xC956}, +- {0, 0x0990, 0x0010}, +- {0, 0x098E, 0xC955}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xC958}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xC957}, +- {0, 0x0990, 0x0014}, +- {0, 0x098E, 0xC95A}, +- {0, 0x0990, 0x001D}, +- {0, 0x098E, 0xC959}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xC95C}, +- {0, 0x0990, 0x000C}, +- {0, 0x098E, 0xC95B}, +- {0, 0x0990, 0x0008}, +- {0, 0x098E, 0xC95E}, +- {0, 0x0990, 0x000C}, +- {0, 0x098E, 0xC95D}, +- {0, 0x0990, 0x0008}, +- {0, 0x098E, 0xC95F}, +- {0, 0x0990, 0x0064}, +- {0, 0x098E, 0x48DC}, +- {0, 0x0990, 0x004D}, +- {0, 0x098E, 0x48DE}, +- {0, 0x0990, 0x0096}, +- {0, 0x098E, 0x48E0}, +- {0, 0x0990, 0x001D}, +- {0, 0x098E, 0x48E2}, +- {0, 0x0990, 0x004D}, +- {0, 0x098E, 0x48E4}, +- {0, 0x0990, 0x0096}, +- {0, 0x098E, 0x48E6}, +- {0, 0x0990, 0x001D}, +- {0, 0x098E, 0x48E8}, +- {0, 0x0990, 0x004D}, +- {0, 0x098E, 0x48EA}, +- {0, 0x0990, 0x0096}, +- {0, 0x098E, 0x48EC}, +- {0, 0x0990, 0x001D}, +- {0, 0x098E, 0xDC2A}, +- {0, 0x0990, 0x000B}, +- {0, 0x098E, 0xDC2B}, +- {0, 0x0990, 0x0017}, +- {0, 0x098E, 0xBC0B}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xBC0C}, +- {0, 0x0990, 0x001B}, +- {0, 0x098E, 0xBC0D}, +- {0, 0x0990, 0x002A}, +- {0, 0x098E, 0xBC0E}, +- {0, 0x0990, 0x003E}, +- {0, 0x098E, 0xBC0F}, +- {0, 0x0990, 0x005A}, +- {0, 0x098E, 0xBC10}, +- {0, 0x0990, 0x0070}, +- {0, 0x098E, 0xBC11}, +- {0, 0x0990, 0x0081}, +- {0, 0x098E, 0xBC12}, +- {0, 0x0990, 0x0090}, +- {0, 0x098E, 0xBC13}, +- {0, 0x0990, 0x009E}, +- {0, 0x098E, 0xBC14}, +- {0, 0x0990, 0x00AB}, +- {0, 0x098E, 0xBC15}, +- {0, 0x0990, 0x00B6}, +- {0, 0x098E, 0xBC16}, +- {0, 0x0990, 0x00C1}, +- {0, 0x098E, 0xBC17}, +- {0, 0x0990, 0x00CB}, +- {0, 0x098E, 0xBC18}, +- {0, 0x0990, 0x00D5}, +- {0, 0x098E, 0xBC19}, +- {0, 0x0990, 0x00DE}, +- {0, 0x098E, 0xBC1A}, +- {0, 0x0990, 0x00E7}, +- {0, 0x098E, 0xBC1B}, +- {0, 0x0990, 0x00EF}, +- {0, 0x098E, 0xBC1C}, +- {0, 0x0990, 0x00F7}, +- {0, 0x098E, 0xBC1D}, +- {0, 0x0990, 0x00FF}, +- {0, 0x098E, 0xBC1E}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xBC1F}, +- {0, 0x0990, 0x001B}, +- {0, 0x098E, 0xBC20}, +- {0, 0x0990, 0x002A}, +- {0, 0x098E, 0xBC21}, +- {0, 0x0990, 0x003E}, +- {0, 0x098E, 0xBC22}, +- {0, 0x0990, 0x005A}, +- {0, 0x098E, 0xBC23}, +- {0, 0x0990, 0x0070}, +- {0, 0x098E, 0xBC24}, +- {0, 0x0990, 0x0081}, +- {0, 0x098E, 0xBC25}, +- {0, 0x0990, 0x0090}, +- {0, 0x098E, 0xBC26}, +- {0, 0x0990, 0x009E}, +- {0, 0x098E, 0xBC27}, +- {0, 0x0990, 0x00AB}, +- {0, 0x098E, 0xBC28}, +- {0, 0x0990, 0x00B6}, +- {0, 0x098E, 0xBC29}, +- {0, 0x0990, 0x00C1}, +- {0, 0x098E, 0xBC2A}, +- {0, 0x0990, 0x00CB}, +- {0, 0x098E, 0xBC2B}, +- {0, 0x0990, 0x00D5}, +- {0, 0x098E, 0xBC2C}, +- {0, 0x0990, 0x00DE}, +- {0, 0x098E, 0xBC2D}, +- {0, 0x0990, 0x00E7}, +- {0, 0x098E, 0xBC2E}, +- {0, 0x0990, 0x00EF}, +- {0, 0x098E, 0xBC2F}, +- {0, 0x0990, 0x00F7}, +- {0, 0x098E, 0xBC30}, +- {0, 0x0990, 0x00FF}, +- {0, 0x098E, 0xBC31}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xBC32}, +- {0, 0x0990, 0x000D}, +- {0, 0x098E, 0xBC33}, +- {0, 0x0990, 0x0019}, +- {0, 0x098E, 0xBC34}, +- {0, 0x0990, 0x0030}, +- {0, 0x098E, 0xBC35}, +- {0, 0x0990, 0x0056}, +- {0, 0x098E, 0xBC36}, +- {0, 0x0990, 0x0070}, +- {0, 0x098E, 0xBC37}, +- {0, 0x0990, 0x0081}, +- {0, 0x098E, 0xBC38}, +- {0, 0x0990, 0x0090}, +- {0, 0x098E, 0xBC39}, +- {0, 0x0990, 0x009E}, +- {0, 0x098E, 0xBC3A}, +- {0, 0x0990, 0x00AB}, +- {0, 0x098E, 0xBC3B}, +- {0, 0x0990, 0x00B6}, +- {0, 0x098E, 0xBC3C}, +- {0, 0x0990, 0x00C1}, +- {0, 0x098E, 0xBC3D}, +- {0, 0x0990, 0x00CB}, +- {0, 0x098E, 0xBC3E}, +- {0, 0x0990, 0x00D5}, +- {0, 0x098E, 0xBC3F}, +- {0, 0x0990, 0x00DE}, +- {0, 0x098E, 0xBC40}, +- {0, 0x0990, 0x00E7}, +- {0, 0x098E, 0xBC41}, +- {0, 0x0990, 0x00EF}, +- {0, 0x098E, 0xBC42}, +- {0, 0x0990, 0x00F7}, +- {0, 0x098E, 0xBC43}, +- {0, 0x0990, 0x00FF}, +- {0, 0x098E, 0x6865}, +- {0, 0x0990, 0x00E0}, +- {0, 0x098E, 0x6867}, +- {0, 0x0990, 0x00F4}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0xBC4A}, +- {0, 0x0990, 0x007F}, +- {0, 0x098E, 0xBC4B}, +- {0, 0x0990, 0x007F}, +- {0, 0x098E, 0xBC4C}, +- {0, 0x0990, 0x007F}, +- {0, 0x3542, 0x0010}, +- {0, 0x3544, 0x0030}, +- {0, 0x3546, 0x0040}, +- {0, 0x3548, 0x0080}, +- {0, 0x354A, 0x0100}, +- {0, 0x354C, 0x0200}, +- {0, 0x354E, 0x0300}, +- {0, 0x3550, 0x0010}, +- {0, 0x3552, 0x0030}, +- {0, 0x3554, 0x0040}, +- {0, 0x3556, 0x0080}, +- {0, 0x3558, 0x012C}, +- {0, 0x355A, 0x0320}, +- {0, 0x355C, 0x03E8}, +- {0, 0x3560, 0x0040}, +- {0, 0x3562, 0x0020}, +- {0, 0x3564, 0x0040}, +- {0, 0x3566, 0x0010}, +- {0, 0x3568, 0x0008}, +- {0, 0x356A, 0x0004}, +- {0, 0x356C, 0x0004}, +- {0, 0x356E, 0x0004}, +- {0, 0x098E, 0x3C4D}, +- {0, 0x0990, 0x0DAC}, +- {0, 0x098E, 0x3C4F}, +- {0, 0x0990, 0x148A}, +- {0, 0x098E, 0xC911}, +- {0, 0x0990, 0x00C8}, +- {0, 0x098E, 0xC8F4}, +- {0, 0x0990, 0x0004}, +- {0, 0x098E, 0xC8F5}, +- {0, 0x0990, 0x0002}, +- {0, 0x098E, 0x48F6}, +- {0, 0x0990, 0x3B4D}, +- {0, 0x098E, 0x48F8}, +- {0, 0x0990, 0x6380}, +- {0, 0x098E, 0x48FA}, +- {0, 0x0990, 0x9B18}, +- {0, 0x098E, 0x48FC}, +- {0, 0x0990, 0x5D51}, +- {0, 0x098E, 0x48FE}, +- {0, 0x0990, 0xEDE8}, +- {0, 0x098E, 0x4900}, +- {0, 0x0990, 0xE515}, +- {0, 0x098E, 0x4902}, +- {0, 0x0990, 0xBFF4}, +- {0, 0x098E, 0x4904}, +- {0, 0x0990, 0x001E}, +- {0, 0x098E, 0x4906}, +- {0, 0x0990, 0x0026}, +- {0, 0x098E, 0x4908}, +- {0, 0x0990, 0x0033}, +- {0, 0x098E, 0xE84A}, +- {0, 0x0990, 0x0083}, +- {0, 0x098E, 0xE84D}, +- {0, 0x0990, 0x0083}, +- {0, 0x098E, 0xE84C}, +- {0, 0x0990, 0x0080}, +- {0, 0x098E, 0xE84F}, +- {0, 0x0990, 0x0080}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0x48B0}, +- {0, 0x0990, 0x0180}, +- {0, 0x098E, 0x48B2}, +- {0, 0x0990, 0xFF7A}, +- {0, 0x098E, 0x48B4}, +- {0, 0x0990, 0x0018}, +- {0, 0x098E, 0x48B6}, +- {0, 0x0990, 0xFFCA}, +- {0, 0x098E, 0x48B8}, +- {0, 0x0990, 0x017C}, +- {0, 0x098E, 0x48BA}, +- {0, 0x0990, 0xFFCC}, +- {0, 0x098E, 0x48BC}, +- {0, 0x0990, 0x000C}, +- {0, 0x098E, 0x48BE}, +- {0, 0x0990, 0xFF1F}, +- {0, 0x098E, 0x48C0}, +- {0, 0x0990, 0x01E8}, +- {0, 0x098E, 0x48C2}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0x48C4}, +- {0, 0x0990, 0x0044}, +- {0, 0x098E, 0x48C6}, +- {0, 0x0990, 0x0079}, +- {0, 0x098E, 0x48C8}, +- {0, 0x0990, 0xFFAD}, +- {0, 0x098E, 0x48CA}, +- {0, 0x0990, 0xFFE2}, +- {0, 0x098E, 0x48CC}, +- {0, 0x0990, 0x0033}, +- {0, 0x098E, 0x48CE}, +- {0, 0x0990, 0x002A}, +- {0, 0x098E, 0x48D0}, +- {0, 0x0990, 0xFFAA}, +- {0, 0x098E, 0x48D2}, +- {0, 0x0990, 0x0017}, +- {0, 0x098E, 0x48D4}, +- {0, 0x0990, 0x004B}, +- {0, 0x098E, 0x48D6}, +- {0, 0x0990, 0xFFA5}, +- {0, 0x098E, 0x48D8}, +- {0, 0x0990, 0x0015}, +- {0, 0x098E, 0x48DA}, +- {0, 0x0990, 0xFFE2}, +- {0, 0x35A2, 0x0014}, +- {0, 0x098E, 0xC949}, +- {0, 0x0990, 0x0024}, +- {0, 0x35A4, 0x0596}, +- {0, 0x098E, 0xC94A}, +- {0, 0x0990, 0x0062}, +- {0, 0x098E, 0xC948}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0xC914}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xC915}, +- {0, 0x0990, 0x00FF}, +- {0, 0x098E, 0xE86F}, +- {0, 0x0990, 0x0060}, +- {0, 0x098E, 0xE870}, +- {0, 0x0990, 0x003C}, +- {0, 0x098E, 0xEC6F}, +- {0, 0x0990, 0x0060}, +- {0, 0x098E, 0xEC70}, +- {0, 0x0990, 0x003C}, +- {0, 0x098E, 0xE883}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xEC83}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0xE885}, +- {0, 0x0990, 0x001E}, +- {0, 0x098E, 0xE886}, +- {0, 0x0990, 0x00D8}, +- {0, 0x098E, 0xEC85}, +- {0, 0x0990, 0x001E}, +- {0, 0x098E, 0xEC86}, +- {0, 0x0990, 0x00D8}, +- {0, 0x098E, 0xE884}, +- {0, 0x0990, 0x005C}, +- {0, 0x098E, 0xEC84}, +- {0, 0x0990, 0x005C}, +- {0, 0x098E, 0x490A}, +- {0, 0x0990, 0x0666}, +- {0, 0x098E, 0x490C}, +- {0, 0x0990, 0x0140}, +- {0, 0x098E, 0x6857}, +- {0, 0x0990, 0x0014}, +- {0, 0x098E, 0x685C}, +- {0, 0x0990, 0x0005}, +- {0, 0x098E, 0x490E}, +- {0, 0x0990, 0x00A4}, +- {0, 0x098E, 0xB43D}, +- {0, 0x0990, 0x0031}, +- {0, 0x098E, 0xB43E}, +- {0, 0x0990, 0x001B}, +- {0, 0x098E, 0xB43F}, +- {0, 0x0990, 0x0028}, +- {0, 0x098E, 0xB440}, +- {0, 0x0990, 0x0003}, +- {0, 0x098E, 0xB441}, +- {0, 0x0990, 0x00CD}, +- {0, 0x098E, 0xB442}, +- {0, 0x0990, 0x0064}, +- {0, 0x098E, 0xB443}, +- {0, 0x0990, 0x000F}, +- {0, 0x098E, 0xB444}, +- {0, 0x0990, 0x0007}, +- {0, 0x098E, 0x300D}, +- {0, 0x0990, 0x000F}, +- {0, 0x098E, 0x3017}, +- {0, 0x0990, 0x0F0F}, +- {0, 0x098E, 0x8400}, +- {0, 0x0990, 0x0006}, +- {0, 0x098E, 0xE81F}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0x68A0}, +- {0, 0x0990, 0x082E}, +- {0, 0x098E, 0x6CA0}, +- {0, 0x0990, 0x082E}, +- {0, 0x098E, 0x70A0}, +- {0, 0x0990, 0x082E}, +- {0, 0x098E, 0x74A0}, +- {0, 0x0990, 0x082E}, +- {0, 0x3C52, 0x082E}, +- {0, 0x098E, 0x488E}, +- {0, 0x0990, 0x0020}, +- {0, 0x098E, 0xECAC}, +- {0, 0x0990, 0x0000} +-}; +- +-mt9t111_regs def_regs2[] = { +- {100, 0x0018, 0x0028}, +- {0, 0x316C, 0x350F}, +- {0, 0x098E, 0x6817}, +- {0, 0x0990, 0x000C}, +- {0, 0x0034, 0x0000} +-}; +- +-mt9t111_regs pll_regs1[] = { +- {0, 0x0014, 0x2425}, +- {0, 0x0014, 0x2425}, +- {0, 0x0014, 0x2145}, +- {0, 0x0010, 0x0219}, +- {0, 0x0012, 0x0090}, +- {0, 0x002A, 0x79DD}, +- {0, 0x0014, 0x2545}, +- {0, 0x0014, 0x2547}, +- {0, 0x0014, 0x3447}, +- {0, 0x0014, 0x3047} +-}; +- +-mt9t111_regs pll_regs2[] = { +- {0, 0x0014, 0x3046}, +- {0, 0x0022, 0x01E0}, +- {0, 0x001E, 0x0707}, +- {0, 0x3B84, 0x011D} +-}; +- +-mt9t111_regs bayer_pattern_regs[] = { +- {0, 0x098E, 0x6807}, +- {0, 0x0990, 0x0100}, +- {0, 0x098E, 0x6809}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xE88E}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0x6C07}, +- {0, 0x0990, 0x0100}, +- {0, 0x098E, 0x6C09}, +- {0, 0x0990, 0x0000}, +- {0, 0x098E, 0xEC8E}, +- {0, 0x0990, 0x0000} +-}; +- +-#endif +diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h +deleted file mode 100644 +index cd34885..0000000 +--- a/include/media/mt9t111.h ++++ /dev/null +@@ -1,79 +0,0 @@ +-/* +- * include/media/mt9t111.h +- * +- * mt9t111 sensor driver +- * +- * Copyright (C) 2009 Leopard Imaging +- * +- * This file is licensed under the terms of the GNU General Public License +- * version 2. This program is licensed "as is" without any warranty of any +- * kind, whether express or implied. +- */ +- +-#ifndef MT9T111_H +-#define MT9T111_H +- +-/********************************* +- * Defines and Macros and globals +- ********************************/ +- +-#ifdef TRUE +-#undef TRUE +-#endif +- +-#ifdef FALSE +-#undef FALSE +-#endif +- +-#define TRUE 1 +-#define FALSE 0 +- +-#ifdef DEBUG +-#undef DEBUG +-#endif +- +-#ifndef TYPES +-#define TYPES +-#endif +- +-#define MT9T111_I2C_REGISTERED (1) +-#define MT9T111_I2C_UNREGISTERED (0) +- +-/*i2c adress for MT9T111*/ +-#define MT9T111_I2C_ADDR (0x78 >> 1) +- +-#define MT9T111_CLK_MAX (54000000) /* 54MHz */ +-#define MT9T111_CLK_MIN (6000000) /* 6Mhz */ +- +-#define MT9T111_I2C_CONFIG (1) +-#define I2C_ONE_BYTE_TRANSFER (1) +-#define I2C_TWO_BYTE_TRANSFER (2) +-#define I2C_THREE_BYTE_TRANSFER (3) +-#define I2C_FOUR_BYTE_TRANSFER (4) +-#define I2C_TXRX_DATA_MASK (0x00FF) +-#define I2C_TXRX_DATA_MASK_UPPER (0xFF00) +-#define I2C_TXRX_DATA_SHIFT (8) +- +-struct mt9t111_platform_data { +- char *master; +- int (*power_set) (struct v4l2_int_device *s, enum v4l2_power on); +- int (*ifparm) (struct v4l2_ifparm *p); +- int (*priv_data_set) (void *); +- /* Interface control params */ +- bool clk_polarity; +- bool hs_polarity; +- bool vs_polarity; +-}; +- +-/** +- * struct capture_size - image capture size information +- * @width: image width in pixels +- * @height: image height in pixels +- */ +-struct capture_size { +- unsigned long width; +- unsigned long height; +-}; +- +-#endif /*for ifndef MT9T111 */ +- +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0049-V4L-DVB-13670-soc-camera-Add-mt9t112-camera-driver.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0049-V4L-DVB-13670-soc-camera-Add-mt9t112-camera-driver.patch new file mode 100644 index 0000000..5f34fa1 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0049-V4L-DVB-13670-soc-camera-Add-mt9t112-camera-driver.patch @@ -0,0 +1,1285 @@ +From fab15f2df5c6ee2dc9fc5256d5c4330e6447dd3b Mon Sep 17 00:00:00 2001 +From: Kuninori Morimoto +Date: Fri, 11 Dec 2009 11:53:55 -0300 +Subject: [PATCH 49/75] V4L/DVB (13670): soc-camera: Add mt9t112 camera driver + +create mode 100644 drivers/media/video/mt9t112.c + create mode 100644 include/media/mt9t112.h + +Signed-off-by: Kuninori Morimoto +Signed-off-by: Guennadi Liakhovetski +Signed-off-by: Mauro Carvalho Chehab +--- + drivers/media/video/Kconfig | 6 + + drivers/media/video/Makefile | 1 + + drivers/media/video/mt9t112.c | 1177 +++++++++++++++++++++++++++++++++++++++ + include/media/mt9t112.h | 30 + + include/media/v4l2-chip-ident.h | 2 + + 5 files changed, 1216 insertions(+), 0 deletions(-) + create mode 100644 drivers/media/video/mt9t112.c + create mode 100644 include/media/mt9t112.h + +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index 780b246..7caade9 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -832,6 +832,12 @@ config SOC_CAMERA_MT9T031 + help + This driver supports MT9T031 cameras from Micron. + ++config SOC_CAMERA_MT9T112 ++ tristate "mt9t112 support" ++ depends on SOC_CAMERA && I2C ++ help ++ This driver supports MT9T112 cameras from Aptina. ++ + config SOC_CAMERA_MT9V022 + tristate "mt9v022 support" + depends on SOC_CAMERA && I2C +diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile +index 3828723..61ae13f 100644 +--- a/drivers/media/video/Makefile ++++ b/drivers/media/video/Makefile +@@ -80,6 +80,7 @@ obj-$(CONFIG_VIDEO_MT9V113) += mt9v113.o + obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o + obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o + obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o ++obj-$(CONFIG_SOC_CAMERA_MT9T112) += mt9t112.o + obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o + obj-$(CONFIG_SOC_CAMERA_OV772X) += ov772x.o + obj-$(CONFIG_SOC_CAMERA_OV9640) += ov9640.o +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +new file mode 100644 +index 0000000..fc4dd60 +--- /dev/null ++++ b/drivers/media/video/mt9t112.c +@@ -0,0 +1,1177 @@ ++/* ++ * mt9t112 Camera Driver ++ * ++ * Copyright (C) 2009 Renesas Solutions Corp. ++ * Kuninori Morimoto ++ * ++ * Based on ov772x driver, mt9m111 driver, ++ * ++ * Copyright (C) 2008 Kuninori Morimoto ++ * Copyright (C) 2008, Robert Jarzmik ++ * Copyright 2006-7 Jonathan Corbet ++ * Copyright (C) 2008 Magnus Damm ++ * Copyright (C) 2008, Guennadi Liakhovetski ++ * ++ * 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 ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* you can check PLL/clock info */ ++/* #define EXT_CLOCK 24000000 */ ++ ++/************************************************************************ ++ ++ ++ macro ++ ++ ++************************************************************************/ ++/* ++ * frame size ++ */ ++#define MAX_WIDTH 2048 ++#define MAX_HEIGHT 1536 ++ ++#define VGA_WIDTH 640 ++#define VGA_HEIGHT 480 ++ ++/* ++ * macro of read/write ++ */ ++#define ECHECKER(ret, x) \ ++ do { \ ++ (ret) = (x); \ ++ if ((ret) < 0) \ ++ return (ret); \ ++ } while (0) ++ ++#define mt9t112_reg_write(ret, client, a, b) \ ++ ECHECKER(ret, __mt9t112_reg_write(client, a, b)) ++#define mt9t112_mcu_write(ret, client, a, b) \ ++ ECHECKER(ret, __mt9t112_mcu_write(client, a, b)) ++ ++#define mt9t112_reg_mask_set(ret, client, a, b, c) \ ++ ECHECKER(ret, __mt9t112_reg_mask_set(client, a, b, c)) ++#define mt9t112_mcu_mask_set(ret, client, a, b, c) \ ++ ECHECKER(ret, __mt9t112_mcu_mask_set(client, a, b, c)) ++ ++#define mt9t112_reg_read(ret, client, a) \ ++ ECHECKER(ret, __mt9t112_reg_read(client, a)) ++ ++/* ++ * Logical address ++ */ ++#define _VAR(id, offset, base) (base | (id & 0x1f) << 10 | (offset & 0x3ff)) ++#define VAR(id, offset) _VAR(id, offset, 0x0000) ++#define VAR8(id, offset) _VAR(id, offset, 0x8000) ++ ++/************************************************************************ ++ ++ ++ struct ++ ++ ++************************************************************************/ ++struct mt9t112_frame_size { ++ u16 width; ++ u16 height; ++}; ++ ++struct mt9t112_format { ++ enum v4l2_mbus_pixelcode code; ++ enum v4l2_colorspace colorspace; ++ u16 fmt; ++ u16 order; ++}; ++ ++struct mt9t112_priv { ++ struct v4l2_subdev subdev; ++ struct mt9t112_camera_info *info; ++ struct i2c_client *client; ++ struct soc_camera_device icd; ++ struct mt9t112_frame_size frame; ++ const struct mt9t112_format *format; ++ int model; ++ u32 flags; ++/* for flags */ ++#define INIT_DONE (1<<0) ++}; ++ ++/************************************************************************ ++ ++ ++ supported format ++ ++ ++************************************************************************/ ++ ++static const struct mt9t112_format mt9t112_cfmts[] = { ++ { ++ .code = V4L2_MBUS_FMT_YUYV8_2X8_BE, ++ .colorspace = V4L2_COLORSPACE_JPEG, ++ .fmt = 1, ++ .order = 0, ++ }, { ++ .code = V4L2_MBUS_FMT_YVYU8_2X8_BE, ++ .colorspace = V4L2_COLORSPACE_JPEG, ++ .fmt = 1, ++ .order = 1, ++ }, { ++ .code = V4L2_MBUS_FMT_YUYV8_2X8_LE, ++ .colorspace = V4L2_COLORSPACE_JPEG, ++ .fmt = 1, ++ .order = 2, ++ }, { ++ .code = V4L2_MBUS_FMT_YVYU8_2X8_LE, ++ .colorspace = V4L2_COLORSPACE_JPEG, ++ .fmt = 1, ++ .order = 3, ++ }, { ++ .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, ++ .colorspace = V4L2_COLORSPACE_SRGB, ++ .fmt = 8, ++ .order = 2, ++ }, { ++ .code = V4L2_MBUS_FMT_RGB565_2X8_LE, ++ .colorspace = V4L2_COLORSPACE_SRGB, ++ .fmt = 4, ++ .order = 2, ++ }, ++}; ++ ++/************************************************************************ ++ ++ ++ general function ++ ++ ++************************************************************************/ ++static struct mt9t112_priv *to_mt9t112(const struct i2c_client *client) ++{ ++ return container_of(i2c_get_clientdata(client), ++ struct mt9t112_priv, ++ subdev); ++} ++ ++static int __mt9t112_reg_read(const struct i2c_client *client, u16 command) ++{ ++ struct i2c_msg msg[2]; ++ u8 buf[2]; ++ int ret; ++ ++ command = swab16(command); ++ ++ msg[0].addr = client->addr; ++ msg[0].flags = 0; ++ msg[0].len = 2; ++ msg[0].buf = (u8 *)&command; ++ ++ msg[1].addr = client->addr; ++ msg[1].flags = I2C_M_RD; ++ msg[1].len = 2; ++ msg[1].buf = buf; ++ ++ /* ++ * if return value of this function is < 0, ++ * it mean error. ++ * else, under 16bit is valid data. ++ */ ++ ret = i2c_transfer(client->adapter, msg, 2); ++ if (ret < 0) ++ return ret; ++ ++ memcpy(&ret, buf, 2); ++ return swab16(ret); ++} ++ ++static int __mt9t112_reg_write(const struct i2c_client *client, ++ u16 command, u16 data) ++{ ++ struct i2c_msg msg; ++ u8 buf[4]; ++ int ret; ++ ++ command = swab16(command); ++ data = swab16(data); ++ ++ memcpy(buf + 0, &command, 2); ++ memcpy(buf + 2, &data, 2); ++ ++ msg.addr = client->addr; ++ msg.flags = 0; ++ msg.len = 4; ++ msg.buf = buf; ++ ++ /* ++ * i2c_transfer return message length, ++ * but this function should return 0 if correct case ++ */ ++ ret = i2c_transfer(client->adapter, &msg, 1); ++ if (ret >= 0) ++ ret = 0; ++ ++ return ret; ++} ++ ++static int __mt9t112_reg_mask_set(const struct i2c_client *client, ++ u16 command, ++ u16 mask, ++ u16 set) ++{ ++ int val = __mt9t112_reg_read(client, command); ++ if (val < 0) ++ return val; ++ ++ val &= ~mask; ++ val |= set & mask; ++ ++ return __mt9t112_reg_write(client, command, val); ++} ++ ++/* mcu access */ ++static int __mt9t112_mcu_read(const struct i2c_client *client, u16 command) ++{ ++ int ret; ++ ++ ret = __mt9t112_reg_write(client, 0x098E, command); ++ if (ret < 0) ++ return ret; ++ ++ return __mt9t112_reg_read(client, 0x0990); ++} ++ ++static int __mt9t112_mcu_write(const struct i2c_client *client, ++ u16 command, u16 data) ++{ ++ int ret; ++ ++ ret = __mt9t112_reg_write(client, 0x098E, command); ++ if (ret < 0) ++ return ret; ++ ++ return __mt9t112_reg_write(client, 0x0990, data); ++} ++ ++static int __mt9t112_mcu_mask_set(const struct i2c_client *client, ++ u16 command, ++ u16 mask, ++ u16 set) ++{ ++ int val = __mt9t112_mcu_read(client, command); ++ if (val < 0) ++ return val; ++ ++ val &= ~mask; ++ val |= set & mask; ++ ++ return __mt9t112_mcu_write(client, command, val); ++} ++ ++static int mt9t112_reset(const struct i2c_client *client) ++{ ++ int ret; ++ ++ mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0001); ++ msleep(1); ++ mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0000); ++ ++ return ret; ++} ++ ++#ifndef EXT_CLOCK ++#define CLOCK_INFO(a, b) ++#else ++#define CLOCK_INFO(a, b) mt9t112_clock_info(a, b) ++static int mt9t112_clock_info(const struct i2c_client *client, u32 ext) ++{ ++ int m, n, p1, p2, p3, p4, p5, p6, p7; ++ u32 vco, clk; ++ char *enable; ++ ++ ext /= 1000; /* kbyte order */ ++ ++ mt9t112_reg_read(n, client, 0x0012); ++ p1 = n & 0x000f; ++ n = n >> 4; ++ p2 = n & 0x000f; ++ n = n >> 4; ++ p3 = n & 0x000f; ++ ++ mt9t112_reg_read(n, client, 0x002a); ++ p4 = n & 0x000f; ++ n = n >> 4; ++ p5 = n & 0x000f; ++ n = n >> 4; ++ p6 = n & 0x000f; ++ ++ mt9t112_reg_read(n, client, 0x002c); ++ p7 = n & 0x000f; ++ ++ mt9t112_reg_read(n, client, 0x0010); ++ m = n & 0x00ff; ++ n = (n >> 8) & 0x003f; ++ ++ enable = ((6000 > ext) || (54000 < ext)) ? "X" : ""; ++ dev_info(&client->dev, "EXTCLK : %10u K %s\n", ext, enable); ++ ++ vco = 2 * m * ext / (n+1); ++ enable = ((384000 > vco) || (768000 < vco)) ? "X" : ""; ++ dev_info(&client->dev, "VCO : %10u K %s\n", vco, enable); ++ ++ clk = vco / (p1+1) / (p2+1); ++ enable = (96000 < clk) ? "X" : ""; ++ dev_info(&client->dev, "PIXCLK : %10u K %s\n", clk, enable); ++ ++ clk = vco / (p3+1); ++ enable = (768000 < clk) ? "X" : ""; ++ dev_info(&client->dev, "MIPICLK : %10u K %s\n", clk, enable); ++ ++ clk = vco / (p6+1); ++ enable = (96000 < clk) ? "X" : ""; ++ dev_info(&client->dev, "MCU CLK : %10u K %s\n", clk, enable); ++ ++ clk = vco / (p5+1); ++ enable = (54000 < clk) ? "X" : ""; ++ dev_info(&client->dev, "SOC CLK : %10u K %s\n", clk, enable); ++ ++ clk = vco / (p4+1); ++ enable = (70000 < clk) ? "X" : ""; ++ dev_info(&client->dev, "Sensor CLK : %10u K %s\n", clk, enable); ++ ++ clk = vco / (p7+1); ++ dev_info(&client->dev, "External sensor : %10u K\n", clk); ++ ++ clk = ext / (n+1); ++ enable = ((2000 > clk) || (24000 < clk)) ? "X" : ""; ++ dev_info(&client->dev, "PFD : %10u K %s\n", clk, enable); ++ ++ return 0; ++} ++#endif ++ ++static void mt9t112_frame_check(u32 *width, u32 *height) ++{ ++ if (*width > MAX_WIDTH) ++ *width = MAX_WIDTH; ++ ++ if (*height > MAX_HEIGHT) ++ *height = MAX_HEIGHT; ++} ++ ++static int mt9t112_set_a_frame_size(const struct i2c_client *client, ++ u16 width, ++ u16 height) ++{ ++ int ret; ++ u16 wstart = (MAX_WIDTH - width) / 2; ++ u16 hstart = (MAX_HEIGHT - height) / 2; ++ ++ /* (Context A) Image Width/Height */ ++ mt9t112_mcu_write(ret, client, VAR(26, 0), width); ++ mt9t112_mcu_write(ret, client, VAR(26, 2), height); ++ ++ /* (Context A) Output Width/Height */ ++ mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + width); ++ mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + height); ++ ++ /* (Context A) Start Row/Column */ ++ mt9t112_mcu_write(ret, client, VAR(18, 2), 4 + hstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 4), 4 + wstart); ++ ++ /* (Context A) End Row/Column */ ++ mt9t112_mcu_write(ret, client, VAR(18, 6), 11 + height + hstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 8), 11 + width + wstart); ++ ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); ++ ++ return ret; ++} ++ ++static int mt9t112_set_pll_dividers(const struct i2c_client *client, ++ u8 m, u8 n, ++ u8 p1, u8 p2, u8 p3, ++ u8 p4, u8 p5, u8 p6, ++ u8 p7) ++{ ++ int ret; ++ u16 val; ++ ++ /* N/M */ ++ val = (n << 8) | ++ (m << 0); ++ mt9t112_reg_mask_set(ret, client, 0x0010, 0x3fff, val); ++ ++ /* P1/P2/P3 */ ++ val = ((p3 & 0x0F) << 8) | ++ ((p2 & 0x0F) << 4) | ++ ((p1 & 0x0F) << 0); ++ mt9t112_reg_mask_set(ret, client, 0x0012, 0x0fff, val); ++ ++ /* P4/P5/P6 */ ++ val = (0x7 << 12) | ++ ((p6 & 0x0F) << 8) | ++ ((p5 & 0x0F) << 4) | ++ ((p4 & 0x0F) << 0); ++ mt9t112_reg_mask_set(ret, client, 0x002A, 0x7fff, val); ++ ++ /* P7 */ ++ val = (0x1 << 12) | ++ ((p7 & 0x0F) << 0); ++ mt9t112_reg_mask_set(ret, client, 0x002C, 0x100f, val); ++ ++ return ret; ++} ++ ++static int mt9t112_init_pll(const struct i2c_client *client) ++{ ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ int data, i, ret; ++ ++ mt9t112_reg_mask_set(ret, client, 0x0014, 0x003, 0x0001); ++ ++ /* PLL control: BYPASS PLL = 8517 */ ++ mt9t112_reg_write(ret, client, 0x0014, 0x2145); ++ ++ /* Replace these registers when new timing parameters are generated */ ++ mt9t112_set_pll_dividers(client, ++ priv->info->divider.m, ++ priv->info->divider.n, ++ priv->info->divider.p1, ++ priv->info->divider.p2, ++ priv->info->divider.p3, ++ priv->info->divider.p4, ++ priv->info->divider.p5, ++ priv->info->divider.p6, ++ priv->info->divider.p7); ++ ++ /* ++ * TEST_BYPASS on ++ * PLL_ENABLE on ++ * SEL_LOCK_DET on ++ * TEST_BYPASS off ++ */ ++ mt9t112_reg_write(ret, client, 0x0014, 0x2525); ++ mt9t112_reg_write(ret, client, 0x0014, 0x2527); ++ mt9t112_reg_write(ret, client, 0x0014, 0x3427); ++ mt9t112_reg_write(ret, client, 0x0014, 0x3027); ++ ++ mdelay(10); ++ ++ /* ++ * PLL_BYPASS off ++ * Reference clock count ++ * I2C Master Clock Divider ++ */ ++ mt9t112_reg_write(ret, client, 0x0014, 0x3046); ++ mt9t112_reg_write(ret, client, 0x0022, 0x0190); ++ mt9t112_reg_write(ret, client, 0x3B84, 0x0212); ++ ++ /* External sensor clock is PLL bypass */ ++ mt9t112_reg_write(ret, client, 0x002E, 0x0500); ++ ++ mt9t112_reg_mask_set(ret, client, 0x0018, 0x0002, 0x0002); ++ mt9t112_reg_mask_set(ret, client, 0x3B82, 0x0004, 0x0004); ++ ++ /* MCU disabled */ ++ mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0x0004); ++ ++ /* out of standby */ ++ mt9t112_reg_mask_set(ret, client, 0x0018, 0x0001, 0); ++ ++ mdelay(50); ++ ++ /* ++ * Standby Workaround ++ * Disable Secondary I2C Pads ++ */ ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ mt9t112_reg_write(ret, client, 0x0614, 0x0001); ++ mdelay(1); ++ ++ /* poll to verify out of standby. Must Poll this bit */ ++ for (i = 0; i < 100; i++) { ++ mt9t112_reg_read(data, client, 0x0018); ++ if (0x4000 & data) ++ break; ++ ++ mdelay(10); ++ } ++ ++ return ret; ++} ++ ++static int mt9t112_init_setting(const struct i2c_client *client) ++{ ++ ++ int ret; ++ ++ /* Adaptive Output Clock (A) */ ++ mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); ++ ++ /* Read Mode (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 12), 0x0024); ++ ++ /* Fine Correction (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 15), 0x00CC); ++ ++ /* Fine IT Min (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 17), 0x01f1); ++ ++ /* Fine IT Max Margin (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 19), 0x00fF); ++ ++ /* Base Frame Lines (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 29), 0x032D); ++ ++ /* Min Line Length (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 31), 0x073a); ++ ++ /* Line Length (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07d0); ++ ++ /* Adaptive Output Clock (B) */ ++ mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); ++ ++ /* Row Start (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 74), 0x004); ++ ++ /* Column Start (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 76), 0x004); ++ ++ /* Row End (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 78), 0x60B); ++ ++ /* Column End (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 80), 0x80B); ++ ++ /* Fine Correction (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 87), 0x008C); ++ ++ /* Fine IT Min (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 89), 0x01F1); ++ ++ /* Fine IT Max Margin (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 91), 0x00FF); ++ ++ /* Base Frame Lines (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 101), 0x0668); ++ ++ /* Min Line Length (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 103), 0x0AF0); ++ ++ /* Line Length (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 109), 0x0AF0); ++ ++ /* ++ * Flicker Dectection registers ++ * This section should be replaced whenever new Timing file is generated ++ * All the following registers need to be replaced ++ * Following registers are generated from Register Wizard but user can ++ * modify them. For detail see auto flicker detection tuning ++ */ ++ ++ /* FD_FDPERIOD_SELECT */ ++ mt9t112_mcu_write(ret, client, VAR8(8, 5), 0x01); ++ ++ /* PRI_B_CONFIG_FD_ALGO_RUN */ ++ mt9t112_mcu_write(ret, client, VAR(27, 17), 0x0003); ++ ++ /* PRI_A_CONFIG_FD_ALGO_RUN */ ++ mt9t112_mcu_write(ret, client, VAR(26, 17), 0x0003); ++ ++ /* ++ * AFD range detection tuning registers ++ */ ++ ++ /* search_f1_50 */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 165), 0x25); ++ ++ /* search_f2_50 */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 166), 0x28); ++ ++ /* search_f1_60 */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 167), 0x2C); ++ ++ /* search_f2_60 */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 168), 0x2F); ++ ++ /* period_50Hz (A) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 68), 0xBA); ++ ++ /* secret register by aptina */ ++ /* period_50Hz (A MSB) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 303), 0x00); ++ ++ /* period_60Hz (A) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 69), 0x9B); ++ ++ /* secret register by aptina */ ++ /* period_60Hz (A MSB) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 301), 0x00); ++ ++ /* period_50Hz (B) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 140), 0x82); ++ ++ /* secret register by aptina */ ++ /* period_50Hz (B) MSB */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 304), 0x00); ++ ++ /* period_60Hz (B) */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 141), 0x6D); ++ ++ /* secret register by aptina */ ++ /* period_60Hz (B) MSB */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 302), 0x00); ++ ++ /* FD Mode */ ++ mt9t112_mcu_write(ret, client, VAR8(8, 2), 0x10); ++ ++ /* Stat_min */ ++ mt9t112_mcu_write(ret, client, VAR8(8, 9), 0x02); ++ ++ /* Stat_max */ ++ mt9t112_mcu_write(ret, client, VAR8(8, 10), 0x03); ++ ++ /* Min_amplitude */ ++ mt9t112_mcu_write(ret, client, VAR8(8, 12), 0x0A); ++ ++ /* RX FIFO Watermark (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 70), 0x0014); ++ ++ /* RX FIFO Watermark (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0014); ++ ++ /* MCLK: 16MHz ++ * PCLK: 73MHz ++ * CorePixCLK: 36.5 MHz ++ */ ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x0044), 133); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x0045), 110); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x008c), 130); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x008d), 108); ++ ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00A5), 27); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a6), 30); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a7), 32); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a8), 35); ++ ++ return ret; ++} ++ ++static int mt9t112_auto_focus_setting(const struct i2c_client *client) ++{ ++ int ret; ++ ++ mt9t112_mcu_write(ret, client, VAR(12, 13), 0x000F); ++ mt9t112_mcu_write(ret, client, VAR(12, 23), 0x0F0F); ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); ++ ++ mt9t112_reg_write(ret, client, 0x0614, 0x0000); ++ ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); ++ mt9t112_mcu_write(ret, client, VAR8(12, 2), 0x02); ++ mt9t112_mcu_write(ret, client, VAR(12, 3), 0x0002); ++ mt9t112_mcu_write(ret, client, VAR(17, 3), 0x8001); ++ mt9t112_mcu_write(ret, client, VAR(17, 11), 0x0025); ++ mt9t112_mcu_write(ret, client, VAR(17, 13), 0x0193); ++ mt9t112_mcu_write(ret, client, VAR8(17, 33), 0x18); ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); ++ ++ return ret; ++} ++ ++static int mt9t112_auto_focus_trigger(const struct i2c_client *client) ++{ ++ int ret; ++ ++ mt9t112_mcu_write(ret, client, VAR8(12, 25), 0x01); ++ ++ return ret; ++} ++ ++static int mt9t112_init_camera(const struct i2c_client *client) ++{ ++ int ret; ++ ++ ECHECKER(ret, mt9t112_reset(client)); ++ ++ ECHECKER(ret, mt9t112_init_pll(client)); ++ ++ ECHECKER(ret, mt9t112_init_setting(client)); ++ ++ ECHECKER(ret, mt9t112_auto_focus_setting(client)); ++ ++ mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0); ++ ++ /* Analog setting B */ ++ mt9t112_reg_write(ret, client, 0x3084, 0x2409); ++ mt9t112_reg_write(ret, client, 0x3092, 0x0A49); ++ mt9t112_reg_write(ret, client, 0x3094, 0x4949); ++ mt9t112_reg_write(ret, client, 0x3096, 0x4950); ++ ++ /* ++ * Disable adaptive clock ++ * PRI_A_CONFIG_JPEG_OB_TX_CONTROL_VAR ++ * PRI_B_CONFIG_JPEG_OB_TX_CONTROL_VAR ++ */ ++ mt9t112_mcu_write(ret, client, VAR(26, 160), 0x0A2E); ++ mt9t112_mcu_write(ret, client, VAR(27, 160), 0x0A2E); ++ ++ /* Configure STatus in Status_before_length Format and enable header */ ++ /* PRI_B_CONFIG_JPEG_OB_TX_CONTROL_VAR */ ++ mt9t112_mcu_write(ret, client, VAR(27, 144), 0x0CB4); ++ ++ /* Enable JPEG in context B */ ++ /* PRI_B_CONFIG_JPEG_OB_TX_CONTROL_VAR */ ++ mt9t112_mcu_write(ret, client, VAR8(27, 142), 0x01); ++ ++ /* Disable Dac_TXLO */ ++ mt9t112_reg_write(ret, client, 0x316C, 0x350F); ++ ++ /* Set max slew rates */ ++ mt9t112_reg_write(ret, client, 0x1E, 0x777); ++ ++ return ret; ++} ++ ++/************************************************************************ ++ ++ ++ soc_camera_ops ++ ++ ++************************************************************************/ ++static int mt9t112_set_bus_param(struct soc_camera_device *icd, ++ unsigned long flags) ++{ ++ return 0; ++} ++ ++static unsigned long mt9t112_query_bus_param(struct soc_camera_device *icd) ++{ ++ struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd)); ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ struct soc_camera_link *icl = to_soc_camera_link(icd); ++ unsigned long flags = SOCAM_MASTER | SOCAM_VSYNC_ACTIVE_HIGH | ++ SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_DATA_ACTIVE_HIGH; ++ ++ flags |= (priv->info->flags & MT9T112_FLAG_PCLK_RISING_EDGE) ? ++ SOCAM_PCLK_SAMPLE_RISING : SOCAM_PCLK_SAMPLE_FALLING; ++ ++ if (priv->info->flags & MT9T112_FLAG_DATAWIDTH_8) ++ flags |= SOCAM_DATAWIDTH_8; ++ else ++ flags |= SOCAM_DATAWIDTH_10; ++ ++ return soc_camera_apply_sensor_flags(icl, flags); ++} ++ ++static struct soc_camera_ops mt9t112_ops = { ++ .set_bus_param = mt9t112_set_bus_param, ++ .query_bus_param = mt9t112_query_bus_param, ++}; ++ ++/************************************************************************ ++ ++ ++ v4l2_subdev_core_ops ++ ++ ++************************************************************************/ ++static int mt9t112_g_chip_ident(struct v4l2_subdev *sd, ++ struct v4l2_dbg_chip_ident *id) ++{ ++ struct i2c_client *client = sd->priv; ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ ++ id->ident = priv->model; ++ id->revision = 0; ++ ++ return 0; ++} ++ ++#ifdef CONFIG_VIDEO_ADV_DEBUG ++static int mt9t112_g_register(struct v4l2_subdev *sd, ++ struct v4l2_dbg_register *reg) ++{ ++ struct i2c_client *client = sd->priv; ++ int ret; ++ ++ reg->size = 2; ++ mt9t112_reg_read(ret, client, reg->reg); ++ ++ reg->val = (__u64)ret; ++ ++ return 0; ++} ++ ++static int mt9t112_s_register(struct v4l2_subdev *sd, ++ struct v4l2_dbg_register *reg) ++{ ++ struct i2c_client *client = sd->priv; ++ int ret; ++ ++ mt9t112_reg_write(ret, client, reg->reg, reg->val); ++ ++ return ret; ++} ++#endif ++ ++static struct v4l2_subdev_core_ops mt9t112_subdev_core_ops = { ++ .g_chip_ident = mt9t112_g_chip_ident, ++#ifdef CONFIG_VIDEO_ADV_DEBUG ++ .g_register = mt9t112_g_register, ++ .s_register = mt9t112_s_register, ++#endif ++}; ++ ++ ++/************************************************************************ ++ ++ ++ v4l2_subdev_video_ops ++ ++ ++************************************************************************/ ++static int mt9t112_s_stream(struct v4l2_subdev *sd, int enable) ++{ ++ struct i2c_client *client = sd->priv; ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ int ret = 0; ++ ++ if (!enable) { ++ /* FIXME ++ * ++ * If user selected large output size, ++ * and used it long time, ++ * mt9t112 camera will be very warm. ++ * ++ * But current driver can not stop mt9t112 camera. ++ * So, set small size here to solve this problem. ++ */ ++ mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); ++ return ret; ++ } ++ ++ if (!(priv->flags & INIT_DONE)) { ++ u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & ++ priv->info->flags) ? 0x0001 : 0x0000; ++ ++ ECHECKER(ret, mt9t112_init_camera(client)); ++ ++ /* Invert PCLK (Data sampled on falling edge of pixclk) */ ++ mt9t112_reg_write(ret, client, 0x3C20, param); ++ ++ mdelay(5); ++ ++ priv->flags |= INIT_DONE; ++ } ++ ++ mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); ++ mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); ++ ++ mt9t112_set_a_frame_size(client, ++ priv->frame.width, ++ priv->frame.height); ++ ++ ECHECKER(ret, mt9t112_auto_focus_trigger(client)); ++ ++ dev_dbg(&client->dev, "format : %d\n", priv->format->code); ++ dev_dbg(&client->dev, "size : %d x %d\n", ++ priv->frame.width, ++ priv->frame.height); ++ ++ CLOCK_INFO(client, EXT_CLOCK); ++ ++ return ret; ++} ++ ++static int mt9t112_set_params(struct i2c_client *client, u32 width, u32 height, ++ enum v4l2_mbus_pixelcode code) ++{ ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ int i; ++ ++ priv->format = NULL; ++ ++ /* ++ * frame size check ++ */ ++ mt9t112_frame_check(&width, &height); ++ ++ /* ++ * get color format ++ */ ++ for (i = 0; i < ARRAY_SIZE(mt9t112_cfmts); i++) ++ if (mt9t112_cfmts[i].code == code) ++ break; ++ ++ if (i == ARRAY_SIZE(mt9t112_cfmts)) ++ return -EINVAL; ++ ++ priv->frame.width = (u16)width; ++ priv->frame.height = (u16)height; ++ ++ priv->format = mt9t112_cfmts + i; ++ ++ return 0; ++} ++ ++static int mt9t112_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a) ++{ ++ a->bounds.left = 0; ++ a->bounds.top = 0; ++ a->bounds.width = VGA_WIDTH; ++ a->bounds.height = VGA_HEIGHT; ++ a->defrect = a->bounds; ++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ a->pixelaspect.numerator = 1; ++ a->pixelaspect.denominator = 1; ++ ++ return 0; ++} ++ ++static int mt9t112_g_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) ++{ ++ a->c.left = 0; ++ a->c.top = 0; ++ a->c.width = VGA_WIDTH; ++ a->c.height = VGA_HEIGHT; ++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ ++ return 0; ++} ++ ++static int mt9t112_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) ++{ ++ struct i2c_client *client = sd->priv; ++ struct v4l2_rect *rect = &a->c; ++ ++ return mt9t112_set_params(client, rect->width, rect->height, ++ V4L2_MBUS_FMT_YUYV8_2X8_BE); ++} ++ ++static int mt9t112_g_fmt(struct v4l2_subdev *sd, ++ struct v4l2_mbus_framefmt *mf) ++{ ++ struct i2c_client *client = sd->priv; ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ ++ if (!priv->format) { ++ int ret = mt9t112_set_params(client, VGA_WIDTH, VGA_HEIGHT, ++ V4L2_MBUS_FMT_YUYV8_2X8_BE); ++ if (ret < 0) ++ return ret; ++ } ++ ++ mf->width = priv->frame.width; ++ mf->height = priv->frame.height; ++ /* TODO: set colorspace */ ++ mf->code = priv->format->code; ++ mf->field = V4L2_FIELD_NONE; ++ ++ return 0; ++} ++ ++static int mt9t112_s_fmt(struct v4l2_subdev *sd, ++ struct v4l2_mbus_framefmt *mf) ++{ ++ struct i2c_client *client = sd->priv; ++ ++ /* TODO: set colorspace */ ++ return mt9t112_set_params(client, mf->width, mf->height, mf->code); ++} ++ ++static int mt9t112_try_fmt(struct v4l2_subdev *sd, ++ struct v4l2_mbus_framefmt *mf) ++{ ++ mt9t112_frame_check(&mf->width, &mf->height); ++ ++ /* TODO: set colorspace */ ++ mf->field = V4L2_FIELD_NONE; ++ ++ return 0; ++} ++ ++static int mt9t112_enum_fmt(struct v4l2_subdev *sd, int index, ++ enum v4l2_mbus_pixelcode *code) ++{ ++ if ((unsigned int)index >= ARRAY_SIZE(mt9t112_cfmts)) ++ return -EINVAL; ++ ++ *code = mt9t112_cfmts[index].code; ++ return 0; ++} ++ ++static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = { ++ .s_stream = mt9t112_s_stream, ++ .g_mbus_fmt = mt9t112_g_fmt, ++ .s_mbus_fmt = mt9t112_s_fmt, ++ .try_mbus_fmt = mt9t112_try_fmt, ++ .cropcap = mt9t112_cropcap, ++ .g_crop = mt9t112_g_crop, ++ .s_crop = mt9t112_s_crop, ++ .enum_mbus_fmt = mt9t112_enum_fmt, ++}; ++ ++/************************************************************************ ++ ++ ++ i2c driver ++ ++ ++************************************************************************/ ++static struct v4l2_subdev_ops mt9t112_subdev_ops = { ++ .core = &mt9t112_subdev_core_ops, ++ .video = &mt9t112_subdev_video_ops, ++}; ++ ++static int mt9t112_camera_probe(struct soc_camera_device *icd, ++ struct i2c_client *client) ++{ ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ const char *devname; ++ int chipid; ++ ++ /* ++ * We must have a parent by now. And it cannot be a wrong one. ++ * So this entire test is completely redundant. ++ */ ++ if (!icd->dev.parent || ++ to_soc_camera_host(icd->dev.parent)->nr != icd->iface) ++ return -ENODEV; ++ ++ /* ++ * check and show chip ID ++ */ ++ mt9t112_reg_read(chipid, client, 0x0000); ++ ++ switch (chipid) { ++ case 0x2680: ++ devname = "mt9t111"; ++ priv->model = V4L2_IDENT_MT9T111; ++ break; ++ case 0x2682: ++ devname = "mt9t112"; ++ priv->model = V4L2_IDENT_MT9T112; ++ break; ++ default: ++ dev_err(&client->dev, "Product ID error %04x\n", chipid); ++ return -ENODEV; ++ } ++ ++ dev_info(&client->dev, "%s chip ID %04x\n", devname, chipid); ++ ++ return 0; ++} ++ ++static int mt9t112_probe(struct i2c_client *client, ++ const struct i2c_device_id *did) ++{ ++ struct mt9t112_priv *priv; ++ struct soc_camera_device *icd = client->dev.platform_data; ++ struct soc_camera_link *icl; ++ int ret; ++ ++ if (!icd) { ++ dev_err(&client->dev, "mt9t112: missing soc-camera data!\n"); ++ return -EINVAL; ++ } ++ ++ icl = to_soc_camera_link(icd); ++ if (!icl || !icl->priv) ++ return -EINVAL; ++ ++ priv = kzalloc(sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ ++ priv->info = icl->priv; ++ ++ v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); ++ ++ icd->ops = &mt9t112_ops; ++ ++ ret = mt9t112_camera_probe(icd, client); ++ if (ret) { ++ icd->ops = NULL; ++ i2c_set_clientdata(client, NULL); ++ kfree(priv); ++ } ++ ++ return ret; ++} ++ ++static int mt9t112_remove(struct i2c_client *client) ++{ ++ struct mt9t112_priv *priv = to_mt9t112(client); ++ struct soc_camera_device *icd = client->dev.platform_data; ++ ++ icd->ops = NULL; ++ i2c_set_clientdata(client, NULL); ++ kfree(priv); ++ return 0; ++} ++ ++static const struct i2c_device_id mt9t112_id[] = { ++ { "mt9t112", 0 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(i2c, mt9t112_id); ++ ++static struct i2c_driver mt9t112_i2c_driver = { ++ .driver = { ++ .name = "mt9t112", ++ }, ++ .probe = mt9t112_probe, ++ .remove = mt9t112_remove, ++ .id_table = mt9t112_id, ++}; ++ ++/************************************************************************ ++ ++ ++ module function ++ ++ ++************************************************************************/ ++static int __init mt9t112_module_init(void) ++{ ++ return i2c_add_driver(&mt9t112_i2c_driver); ++} ++ ++static void __exit mt9t112_module_exit(void) ++{ ++ i2c_del_driver(&mt9t112_i2c_driver); ++} ++ ++module_init(mt9t112_module_init); ++module_exit(mt9t112_module_exit); ++ ++MODULE_DESCRIPTION("SoC Camera driver for mt9t112"); ++MODULE_AUTHOR("Kuninori Morimoto"); ++MODULE_LICENSE("GPL v2"); +diff --git a/include/media/mt9t112.h b/include/media/mt9t112.h +new file mode 100644 +index 0000000..a43c74a +--- /dev/null ++++ b/include/media/mt9t112.h +@@ -0,0 +1,30 @@ ++/* mt9t112 Camera ++ * ++ * Copyright (C) 2009 Renesas Solutions Corp. ++ * Kuninori Morimoto ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#ifndef __MT9T112_H__ ++#define __MT9T112_H__ ++ ++#define MT9T112_FLAG_PCLK_RISING_EDGE (1 << 0) ++#define MT9T112_FLAG_DATAWIDTH_8 (1 << 1) /* default width is 10 */ ++ ++struct mt9t112_pll_divider { ++ u8 m, n; ++ u8 p1, p2, p3, p4, p5, p6, p7; ++}; ++ ++/* ++ * mt9t112 camera info ++ */ ++struct mt9t112_camera_info { ++ u32 flags; ++ struct mt9t112_pll_divider divider; ++}; ++ ++#endif /* __MT9T112_H__ */ +diff --git a/include/media/v4l2-chip-ident.h b/include/media/v4l2-chip-ident.h +index 91942db..6cc107d 100644 +--- a/include/media/v4l2-chip-ident.h ++++ b/include/media/v4l2-chip-ident.h +@@ -267,6 +267,8 @@ enum { + V4L2_IDENT_MT9V022IX7ATC = 45010, /* No way to detect "normal" I77ATx */ + V4L2_IDENT_MT9V022IX7ATM = 45015, /* and "lead free" IA7ATx chips */ + V4L2_IDENT_MT9T031 = 45020, ++ V4L2_IDENT_MT9T111 = 45021, ++ V4L2_IDENT_MT9T112 = 45022, + V4L2_IDENT_MT9V111 = 45031, + V4L2_IDENT_MT9V112 = 45032, + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0050-soc-camera-mt9t112-modify-exiting-conditions-from-st.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0050-soc-camera-mt9t112-modify-exiting-conditions-from-st.patch new file mode 100644 index 0000000..81c74f1 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0050-soc-camera-mt9t112-modify-exiting-conditions-from-st.patch @@ -0,0 +1,31 @@ +From c3080e6e6ea59efc7f7812951a9972229fcc5078 Mon Sep 17 00:00:00 2001 +From: Kuninori Morimoto +Date: Tue, 2 Feb 2010 13:17:54 +0900 +Subject: [PATCH 50/75] soc-camera: mt9t112: modify exiting conditions from standby mode + +This polling is needed if camera is in standby mode, but current exiting +condition is inverted. + +Signed-off-by: Kuninori Morimoto +Signed-off-by: Guennadi Liakhovetski +Signed-off-by: Mauro Carvalho Chehab +--- + drivers/media/video/mt9t112.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index fc4dd60..7438f8d 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -514,7 +514,7 @@ static int mt9t112_init_pll(const struct i2c_client *client) + /* poll to verify out of standby. Must Poll this bit */ + for (i = 0; i < 100; i++) { + mt9t112_reg_read(data, client, 0x0018); +- if (0x4000 & data) ++ if (!(0x4000 & data)) + break; + + mdelay(10); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0051-mt9t112-Migrate-from-soc_camera-to-v4l2-int-device.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0051-mt9t112-Migrate-from-soc_camera-to-v4l2-int-device.patch new file mode 100644 index 0000000..d2cdbff --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0051-mt9t112-Migrate-from-soc_camera-to-v4l2-int-device.patch @@ -0,0 +1,934 @@ +From f4b417bf9b373e042f6cfb921bc67dd18d0a752f Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 1 Jul 2010 07:26:38 -0500 +Subject: [PATCH 51/75] mt9t112: Migrate from soc_camera to v4l2-int-device + +This is to use the driver with the old OMAP3 Camera-ISP platform. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/Kconfig | 12 +- + drivers/media/video/Makefile | 2 +- + drivers/media/video/mt9t112.c | 658 +++++++++++++++++++++++------------------ + include/media/mt9t112.h | 13 + + 4 files changed, 391 insertions(+), 294 deletions(-) + +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index 7caade9..4c1fb0f 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -354,6 +354,12 @@ config VIDEO_MT9P012 + MT9P012 camera. It is currently working with the TI OMAP3 + camera controller. + ++config VIDEO_MT9T112 ++ tristate "mt9t112 support" ++ depends on I2C && VIDEO_V4L2 ++ help ++ This driver supports MT9T112 cameras from Aptina. ++ + config VIDEO_DW9710 + tristate "Lens driver for DW9710" + depends on I2C && VIDEO_V4L2 +@@ -832,12 +838,6 @@ config SOC_CAMERA_MT9T031 + help + This driver supports MT9T031 cameras from Micron. + +-config SOC_CAMERA_MT9T112 +- tristate "mt9t112 support" +- depends on SOC_CAMERA && I2C +- help +- This driver supports MT9T112 cameras from Aptina. +- + config SOC_CAMERA_MT9V022 + tristate "mt9v022 support" + depends on SOC_CAMERA && I2C +diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile +index 61ae13f..fb7e46c 100644 +--- a/drivers/media/video/Makefile ++++ b/drivers/media/video/Makefile +@@ -80,7 +80,6 @@ obj-$(CONFIG_VIDEO_MT9V113) += mt9v113.o + obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o + obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o + obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o +-obj-$(CONFIG_SOC_CAMERA_MT9T112) += mt9t112.o + obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o + obj-$(CONFIG_SOC_CAMERA_OV772X) += ov772x.o + obj-$(CONFIG_SOC_CAMERA_OV9640) += ov9640.o +@@ -129,6 +128,7 @@ obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o + obj-y += isp/ + obj-$(CONFIG_VIDEO_OMAP3) += omap34xxcam.o + obj-$(CONFIG_VIDEO_MT9P012) += mt9p012.o ++obj-$(CONFIG_VIDEO_MT9T112) += mt9t112.o + obj-$(CONFIG_VIDEO_DW9710) += dw9710.o + obj-$(CONFIG_VIDEO_TPS61059) += tps61059.o + obj-$(CONFIG_VIDEO_OV3640) += ov3640.o +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 7438f8d..6f54394 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -25,10 +25,8 @@ + #include + + #include +-#include +-#include ++#include + #include +-#include + + /* you can check PLL/clock info */ + /* #define EXT_CLOCK 24000000 */ +@@ -43,8 +41,8 @@ + /* + * frame size + */ +-#define MAX_WIDTH 2048 +-#define MAX_HEIGHT 1536 ++#define MAX_WIDTH 640 /* 2048 */ ++#define MAX_HEIGHT 480 /* 1536 */ + + #define VGA_WIDTH 640 + #define VGA_HEIGHT 480 +@@ -91,20 +89,12 @@ struct mt9t112_frame_size { + u16 height; + }; + +-struct mt9t112_format { +- enum v4l2_mbus_pixelcode code; +- enum v4l2_colorspace colorspace; +- u16 fmt; +- u16 order; +-}; +- + struct mt9t112_priv { +- struct v4l2_subdev subdev; ++ struct mt9t112_platform_data *pdata; ++ struct v4l2_int_device *v4l2_int_device; + struct mt9t112_camera_info *info; + struct i2c_client *client; +- struct soc_camera_device icd; +- struct mt9t112_frame_size frame; +- const struct mt9t112_format *format; ++ struct v4l2_pix_format pix; + int model; + u32 flags; + /* for flags */ +@@ -119,38 +109,42 @@ struct mt9t112_priv { + + ************************************************************************/ + +-static const struct mt9t112_format mt9t112_cfmts[] = { ++const static struct v4l2_fmtdesc mt9t112_formats[] = { ++ { ++ .description = "YUYV (YUV 4:2:2), packed", ++ .pixelformat = V4L2_PIX_FMT_YUYV, ++ }, + { +- .code = V4L2_MBUS_FMT_YUYV8_2X8_BE, +- .colorspace = V4L2_COLORSPACE_JPEG, +- .fmt = 1, +- .order = 0, +- }, { +- .code = V4L2_MBUS_FMT_YVYU8_2X8_BE, +- .colorspace = V4L2_COLORSPACE_JPEG, +- .fmt = 1, +- .order = 1, +- }, { +- .code = V4L2_MBUS_FMT_YUYV8_2X8_LE, +- .colorspace = V4L2_COLORSPACE_JPEG, +- .fmt = 1, +- .order = 2, +- }, { +- .code = V4L2_MBUS_FMT_YVYU8_2X8_LE, +- .colorspace = V4L2_COLORSPACE_JPEG, +- .fmt = 1, +- .order = 3, +- }, { +- .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, +- .colorspace = V4L2_COLORSPACE_SRGB, +- .fmt = 8, +- .order = 2, +- }, { +- .code = V4L2_MBUS_FMT_RGB565_2X8_LE, +- .colorspace = V4L2_COLORSPACE_SRGB, +- .fmt = 4, +- .order = 2, ++ .description = "RGB555, le", ++ .pixelformat = V4L2_PIX_FMT_RGB555, + }, ++ { ++ .description = "RGB565, le", ++ .pixelformat = V4L2_PIX_FMT_RGB565, ++ }, ++}; ++ ++/************************************************************************ ++ ++ ++ supported sizes ++ ++ ++************************************************************************/ ++const static struct mt9t112_frame_size mt9t112_sizes[] = { ++ { 640, 480 }, ++ /* { 2048, 1536} */ ++}; ++ ++/************************************************************************ ++ ++ ++ supported sizes ++ ++ ++************************************************************************/ ++const struct v4l2_fract mt9t112_frameintervals[] = { ++ { .numerator = 1, .denominator = 10 } + }; + + /************************************************************************ +@@ -160,11 +154,32 @@ static const struct mt9t112_format mt9t112_cfmts[] = { + + + ************************************************************************/ +-static struct mt9t112_priv *to_mt9t112(const struct i2c_client *client) ++static u16 mt9t112_pixfmt_to_fmt(u32 pixelformat) + { +- return container_of(i2c_get_clientdata(client), +- struct mt9t112_priv, +- subdev); ++ switch (pixelformat) { ++ case V4L2_PIX_FMT_RGB555: ++ return 8; ++ case V4L2_PIX_FMT_RGB565: ++ return 4; ++ case V4L2_PIX_FMT_YUYV: ++ /* FALLTHROUGH */ ++ default: ++ return 1; ++ } ++} ++ ++static u16 mt9t112_pixfmt_to_order(u32 pixelformat) ++{ ++ switch (pixelformat) { ++ case V4L2_PIX_FMT_RGB555: ++ /* FALLTHROUGH */ ++ case V4L2_PIX_FMT_RGB565: ++ return 2; ++ case V4L2_PIX_FMT_YUYV: ++ /* FALLTHROUGH */ ++ default: ++ return 0; ++ } + } + + static int __mt9t112_reg_read(const struct i2c_client *client, u16 command) +@@ -438,7 +453,7 @@ static int mt9t112_set_pll_dividers(const struct i2c_client *client, + + static int mt9t112_init_pll(const struct i2c_client *client) + { +- struct mt9t112_priv *priv = to_mt9t112(client); ++ struct mt9t112_priv *priv = i2c_get_clientdata(client); + int data, i, ret; + + mt9t112_reg_mask_set(ret, client, 0x0014, 0x003, 0x0001); +@@ -757,167 +772,12 @@ static int mt9t112_init_camera(const struct i2c_client *client) + return ret; + } + +-/************************************************************************ +- +- +- soc_camera_ops +- +- +-************************************************************************/ +-static int mt9t112_set_bus_param(struct soc_camera_device *icd, +- unsigned long flags) +-{ +- return 0; +-} +- +-static unsigned long mt9t112_query_bus_param(struct soc_camera_device *icd) +-{ +- struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd)); +- struct mt9t112_priv *priv = to_mt9t112(client); +- struct soc_camera_link *icl = to_soc_camera_link(icd); +- unsigned long flags = SOCAM_MASTER | SOCAM_VSYNC_ACTIVE_HIGH | +- SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_DATA_ACTIVE_HIGH; +- +- flags |= (priv->info->flags & MT9T112_FLAG_PCLK_RISING_EDGE) ? +- SOCAM_PCLK_SAMPLE_RISING : SOCAM_PCLK_SAMPLE_FALLING; +- +- if (priv->info->flags & MT9T112_FLAG_DATAWIDTH_8) +- flags |= SOCAM_DATAWIDTH_8; +- else +- flags |= SOCAM_DATAWIDTH_10; +- +- return soc_camera_apply_sensor_flags(icl, flags); +-} +- +-static struct soc_camera_ops mt9t112_ops = { +- .set_bus_param = mt9t112_set_bus_param, +- .query_bus_param = mt9t112_query_bus_param, +-}; +- +-/************************************************************************ +- +- +- v4l2_subdev_core_ops +- +- +-************************************************************************/ +-static int mt9t112_g_chip_ident(struct v4l2_subdev *sd, +- struct v4l2_dbg_chip_ident *id) +-{ +- struct i2c_client *client = sd->priv; +- struct mt9t112_priv *priv = to_mt9t112(client); +- +- id->ident = priv->model; +- id->revision = 0; +- +- return 0; +-} +- +-#ifdef CONFIG_VIDEO_ADV_DEBUG +-static int mt9t112_g_register(struct v4l2_subdev *sd, +- struct v4l2_dbg_register *reg) +-{ +- struct i2c_client *client = sd->priv; +- int ret; +- +- reg->size = 2; +- mt9t112_reg_read(ret, client, reg->reg); +- +- reg->val = (__u64)ret; +- +- return 0; +-} +- +-static int mt9t112_s_register(struct v4l2_subdev *sd, +- struct v4l2_dbg_register *reg) +-{ +- struct i2c_client *client = sd->priv; +- int ret; +- +- mt9t112_reg_write(ret, client, reg->reg, reg->val); +- +- return ret; +-} +-#endif +- +-static struct v4l2_subdev_core_ops mt9t112_subdev_core_ops = { +- .g_chip_ident = mt9t112_g_chip_ident, +-#ifdef CONFIG_VIDEO_ADV_DEBUG +- .g_register = mt9t112_g_register, +- .s_register = mt9t112_s_register, +-#endif +-}; +- +- +-/************************************************************************ +- +- +- v4l2_subdev_video_ops +- +- +-************************************************************************/ +-static int mt9t112_s_stream(struct v4l2_subdev *sd, int enable) +-{ +- struct i2c_client *client = sd->priv; +- struct mt9t112_priv *priv = to_mt9t112(client); +- int ret = 0; +- +- if (!enable) { +- /* FIXME +- * +- * If user selected large output size, +- * and used it long time, +- * mt9t112 camera will be very warm. +- * +- * But current driver can not stop mt9t112 camera. +- * So, set small size here to solve this problem. +- */ +- mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); +- return ret; +- } +- +- if (!(priv->flags & INIT_DONE)) { +- u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & +- priv->info->flags) ? 0x0001 : 0x0000; +- +- ECHECKER(ret, mt9t112_init_camera(client)); +- +- /* Invert PCLK (Data sampled on falling edge of pixclk) */ +- mt9t112_reg_write(ret, client, 0x3C20, param); +- +- mdelay(5); +- +- priv->flags |= INIT_DONE; +- } +- +- mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); +- mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); +- mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); +- +- mt9t112_set_a_frame_size(client, +- priv->frame.width, +- priv->frame.height); +- +- ECHECKER(ret, mt9t112_auto_focus_trigger(client)); +- +- dev_dbg(&client->dev, "format : %d\n", priv->format->code); +- dev_dbg(&client->dev, "size : %d x %d\n", +- priv->frame.width, +- priv->frame.height); +- +- CLOCK_INFO(client, EXT_CLOCK); +- +- return ret; +-} +- + static int mt9t112_set_params(struct i2c_client *client, u32 width, u32 height, +- enum v4l2_mbus_pixelcode code) ++ u32 pixelformat) + { +- struct mt9t112_priv *priv = to_mt9t112(client); ++ struct mt9t112_priv *priv = i2c_get_clientdata(client); + int i; + +- priv->format = NULL; +- + /* + * frame size check + */ +@@ -926,22 +786,23 @@ static int mt9t112_set_params(struct i2c_client *client, u32 width, u32 height, + /* + * get color format + */ +- for (i = 0; i < ARRAY_SIZE(mt9t112_cfmts); i++) +- if (mt9t112_cfmts[i].code == code) ++ for (i = 0; i < ARRAY_SIZE(mt9t112_formats); i++) ++ if (mt9t112_formats[i].pixelformat == pixelformat) + break; + +- if (i == ARRAY_SIZE(mt9t112_cfmts)) ++ if (i == ARRAY_SIZE(mt9t112_formats)) + return -EINVAL; + +- priv->frame.width = (u16)width; +- priv->frame.height = (u16)height; ++ priv->pix.width = (u16)width; ++ priv->pix.height = (u16)height; + +- priv->format = mt9t112_cfmts + i; ++ priv->pix.pixelformat = pixelformat; + + return 0; + } + +-static int mt9t112_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a) ++static int mt9t112_v4l2_int_cropcap(struct v4l2_int_device *s, ++ struct v4l2_cropcap *a) + { + a->bounds.left = 0; + a->bounds.top = 0; +@@ -955,7 +816,8 @@ static int mt9t112_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a) + return 0; + } + +-static int mt9t112_g_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) ++static int mt9t112_v4l2_int_g_crop(struct v4l2_int_device *s, ++ struct v4l2_crop *a) + { + a->c.left = 0; + a->c.top = 0; +@@ -966,77 +828,116 @@ static int mt9t112_g_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) + return 0; + } + +-static int mt9t112_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a) ++static int mt9t112_v4l2_int_s_crop(struct v4l2_int_device *s, ++ struct v4l2_crop *a) + { +- struct i2c_client *client = sd->priv; +- struct v4l2_rect *rect = &a->c; +- +- return mt9t112_set_params(client, rect->width, rect->height, +- V4L2_MBUS_FMT_YUYV8_2X8_BE); ++ if ((a->c.left != 0) || ++ (a->c.top != 0) || ++ (a->c.width != VGA_WIDTH) || ++ (a->c.height != VGA_HEIGHT)) { ++ return -EINVAL; ++ } ++ return 0; + } + +-static int mt9t112_g_fmt(struct v4l2_subdev *sd, +- struct v4l2_mbus_framefmt *mf) ++static int mt9t112_v4l2_int_g_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) + { +- struct i2c_client *client = sd->priv; +- struct mt9t112_priv *priv = to_mt9t112(client); ++ struct mt9t112_priv *priv = s->priv; ++ struct i2c_client *client = priv->client; + +- if (!priv->format) { ++ if ((priv->pix.pixelformat == 0) || ++ (priv->pix.width == 0) || ++ (priv->pix.height == 0)) { + int ret = mt9t112_set_params(client, VGA_WIDTH, VGA_HEIGHT, +- V4L2_MBUS_FMT_YUYV8_2X8_BE); ++ V4L2_PIX_FMT_YUYV); + if (ret < 0) + return ret; + } + +- mf->width = priv->frame.width; +- mf->height = priv->frame.height; ++ f->fmt.pix.width = priv->pix.width; ++ f->fmt.pix.height = priv->pix.height; + /* TODO: set colorspace */ +- mf->code = priv->format->code; +- mf->field = V4L2_FIELD_NONE; ++ f->fmt.pix.pixelformat = priv->pix.pixelformat; ++ f->fmt.pix.field = V4L2_FIELD_NONE; + + return 0; + } + +-static int mt9t112_s_fmt(struct v4l2_subdev *sd, +- struct v4l2_mbus_framefmt *mf) ++ ++static int mt9t112_v4l2_int_s_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) + { +- struct i2c_client *client = sd->priv; ++ struct mt9t112_priv *priv = s->priv; ++ struct i2c_client *client = priv->client; + + /* TODO: set colorspace */ +- return mt9t112_set_params(client, mf->width, mf->height, mf->code); ++ return mt9t112_set_params(client, f->fmt.pix.width, f->fmt.pix.height, ++ f->fmt.pix.pixelformat); + } + +-static int mt9t112_try_fmt(struct v4l2_subdev *sd, +- struct v4l2_mbus_framefmt *mf) ++static int mt9t112_v4l2_int_try_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_format *f) + { +- mt9t112_frame_check(&mf->width, &mf->height); ++ mt9t112_frame_check(&f->fmt.pix.width, &f->fmt.pix.height); + + /* TODO: set colorspace */ +- mf->field = V4L2_FIELD_NONE; ++ f->fmt.pix.field = V4L2_FIELD_NONE; + + return 0; + } + +-static int mt9t112_enum_fmt(struct v4l2_subdev *sd, int index, +- enum v4l2_mbus_pixelcode *code) ++static int mt9t112_v4l2_int_enum_fmt_cap(struct v4l2_int_device *s, ++ struct v4l2_fmtdesc *fmt) + { +- if ((unsigned int)index >= ARRAY_SIZE(mt9t112_cfmts)) ++ int index = fmt->index; ++ enum v4l2_buf_type type = fmt->type; ++ ++ memset(fmt, 0, sizeof(*fmt)); ++ fmt->index = index; ++ fmt->type = type; ++ ++ switch (fmt->type) { ++ case V4L2_BUF_TYPE_VIDEO_CAPTURE: ++ if (index >= ARRAY_SIZE(mt9t112_formats)) ++ return -EINVAL; ++ break; ++ default: + return -EINVAL; ++ } + +- *code = mt9t112_cfmts[index].code; ++ fmt->flags = mt9t112_formats[index].flags; ++ strlcpy(fmt->description, mt9t112_formats[index].description, ++ sizeof(fmt->description)); ++ fmt->pixelformat = mt9t112_formats[index].pixelformat; + return 0; + } + +-static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = { +- .s_stream = mt9t112_s_stream, +- .g_mbus_fmt = mt9t112_g_fmt, +- .s_mbus_fmt = mt9t112_s_fmt, +- .try_mbus_fmt = mt9t112_try_fmt, +- .cropcap = mt9t112_cropcap, +- .g_crop = mt9t112_g_crop, +- .s_crop = mt9t112_s_crop, +- .enum_mbus_fmt = mt9t112_enum_fmt, +-}; ++static int mt9t112_v4l2_int_s_parm(struct v4l2_int_device *s, ++ struct v4l2_streamparm *a) ++{ ++ /* TODO: set paramters */ ++ return 0; ++} ++ ++static int mt9t112_v4l2_int_g_parm(struct v4l2_int_device *s, ++ struct v4l2_streamparm *a) ++{ ++ struct v4l2_captureparm *cparm = &a->parm.capture; ++ ++ if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) ++ return -EINVAL; ++ ++ memset(a, 0, sizeof(*a)); ++ a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ ++ cparm->capability = V4L2_CAP_TIMEPERFRAME; ++ /* FIXME: Is 10 fps really the only option? */ ++ cparm->timeperframe.numerator = 1; ++ cparm->timeperframe.denominator = 10; ++ ++ return 0; ++} + + /************************************************************************ + +@@ -1045,27 +946,14 @@ static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = { + + + ************************************************************************/ +-static struct v4l2_subdev_ops mt9t112_subdev_ops = { +- .core = &mt9t112_subdev_core_ops, +- .video = &mt9t112_subdev_video_ops, +-}; + +-static int mt9t112_camera_probe(struct soc_camera_device *icd, +- struct i2c_client *client) ++static int mt9t112_detect(struct i2c_client *client) + { +- struct mt9t112_priv *priv = to_mt9t112(client); ++ struct mt9t112_priv *priv = i2c_get_clientdata(client); + const char *devname; + int chipid; + + /* +- * We must have a parent by now. And it cannot be a wrong one. +- * So this entire test is completely redundant. +- */ +- if (!icd->dev.parent || +- to_soc_camera_host(icd->dev.parent)->nr != icd->iface) +- return -ENODEV; +- +- /* + * check and show chip ID + */ + mt9t112_reg_read(chipid, client, 0x0000); +@@ -1089,37 +977,232 @@ static int mt9t112_camera_probe(struct soc_camera_device *icd, + return 0; + } + ++static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, ++ enum v4l2_power power) ++{ ++ struct mt9t112_priv *priv = s->priv; ++ struct i2c_client *client = priv->client; ++ int ret; ++ ++ switch (power) { ++ case V4L2_POWER_STANDBY: ++ /* FALLTHROUGH */ ++ case V4L2_POWER_OFF: ++ /* FIXME ++ * ++ * If user selected large output size, ++ * and used it long time, ++ * mt9t112 camera will be very warm. ++ * ++ * But current driver can not stop mt9t112 camera. ++ * So, set small size here to solve this problem. ++ */ ++ mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); ++ ++ ret = priv->pdata->power_set(s, power); ++ if (ret < 0) { ++ dev_err(&client->dev, "Unable to set target board power " ++ "state (OFF/STANDBY)\n"); ++ return ret; ++ } ++ break; ++ case V4L2_POWER_ON: ++ ret = priv->pdata->power_set(s, power); ++ if (ret < 0) { ++ dev_err(&client->dev, "Unable to set target board power " ++ "state (ON)\n"); ++ return ret; ++ } ++ if (!(priv->flags & INIT_DONE)) { ++ u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & ++ priv->info->flags) ? 0x0001 : 0x0000; ++ ++ ECHECKER(ret, mt9t112_detect(client)); ++ ECHECKER(ret, mt9t112_init_camera(client)); ++ ++ /* Invert PCLK (Data sampled on falling edge of pixclk) */ ++ mt9t112_reg_write(ret, client, 0x3C20, param); ++ ++ mdelay(5); ++ ++ priv->flags |= INIT_DONE; ++ } ++ ++ mt9t112_mcu_write(ret, client, VAR(26, 7), ++ mt9t112_pixfmt_to_fmt(priv->pix.pixelformat)); ++ mt9t112_mcu_write(ret, client, VAR(26, 9), ++ mt9t112_pixfmt_to_order(priv->pix.pixelformat)); ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); ++ ++ mt9t112_set_a_frame_size(client, ++ priv->pix.width, ++ priv->pix.height); ++ ++ ECHECKER(ret, mt9t112_auto_focus_trigger(client)); ++ ++ dev_dbg(&client->dev, "format : %d\n", priv->pix.pixelformat); ++ dev_dbg(&client->dev, "size : %d x %d\n", ++ priv->pix.width, ++ priv->pix.height); ++ ++ CLOCK_INFO(client, EXT_CLOCK); ++ } ++ return 0; ++} ++ ++static int mt9t112_v4l2_int_g_priv(struct v4l2_int_device *s, void *p) ++{ ++ struct mt9t112_priv *priv = s->priv; ++ ++ return priv->pdata->priv_data_set(p); ++} ++ ++static int mt9t112_v4l2_int_g_ifparm(struct v4l2_int_device *s, ++ struct v4l2_ifparm *p) ++{ ++ struct mt9t112_priv *priv = s->priv; ++ int rval; ++ ++ if (p == NULL) ++ return -EINVAL; ++ ++ if (!priv->pdata->ifparm) ++ return -EINVAL; ++ ++ rval = priv->pdata->ifparm(p); ++ if (rval) { ++ v4l_err(priv->client, "g_ifparm.Err[%d]\n", rval); ++ return rval; ++ } ++ ++ p->u.ycbcr.clock_curr = 40 * 1000000; /* temporal value */ ++ ++ return 0; ++} ++ ++static int mt9t112_v4l2_int_enum_framesizes(struct v4l2_int_device *s, ++ struct v4l2_frmsizeenum *frms) ++{ ++ int ifmt; ++ ++ for (ifmt = 0; ifmt < ARRAY_SIZE(mt9t112_formats); ifmt++) ++ if (mt9t112_formats[ifmt].pixelformat == frms->pixel_format) ++ break; ++ ++ if (ifmt == ARRAY_SIZE(mt9t112_formats)) ++ return -EINVAL; ++ ++ /* Do we already reached all discrete framesizes? */ ++ if (frms->index >= ARRAY_SIZE(mt9t112_sizes)) ++ return -EINVAL; ++ ++ frms->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frms->discrete.width = mt9t112_sizes[frms->index].width; ++ frms->discrete.height = mt9t112_sizes[frms->index].height; ++ ++ return 0; ++ ++} ++ ++static int mt9t112_v4l2_int_enum_frameintervals(struct v4l2_int_device *s, ++ struct v4l2_frmivalenum *frmi) ++{ ++ int ifmt; ++ ++ for (ifmt = 0; ifmt < ARRAY_SIZE(mt9t112_formats); ifmt++) ++ if (mt9t112_formats[ifmt].pixelformat == frmi->pixel_format) ++ break; ++ ++ if (ifmt == ARRAY_SIZE(mt9t112_formats)) ++ return -EINVAL; ++ ++ if (frmi->index >= ARRAY_SIZE(mt9t112_frameintervals)) ++ return -EINVAL; ++ ++ frmi->type = V4L2_FRMSIZE_TYPE_DISCRETE; ++ frmi->discrete.numerator = ++ mt9t112_frameintervals[frmi->index].numerator; ++ frmi->discrete.denominator = ++ mt9t112_frameintervals[frmi->index].denominator; ++ return 0; ++} ++ ++static struct v4l2_int_ioctl_desc mt9t112_ioctl_desc[] = { ++ { .num = vidioc_int_enum_framesizes_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_enum_framesizes }, ++ { .num = vidioc_int_enum_frameintervals_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_enum_frameintervals }, ++ { .num = vidioc_int_s_power_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_s_power }, ++ { .num = vidioc_int_g_priv_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_g_priv }, ++ { .num = vidioc_int_g_ifparm_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_g_ifparm }, ++ { .num = vidioc_int_enum_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_enum_fmt_cap }, ++ { .num = vidioc_int_try_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_try_fmt_cap }, ++ { .num = vidioc_int_g_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_g_fmt_cap }, ++ { .num = vidioc_int_s_fmt_cap_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_s_fmt_cap }, ++ { .num = vidioc_int_g_parm_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_g_parm }, ++ { .num = vidioc_int_s_parm_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_s_parm }, ++ { .num = vidioc_int_cropcap_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_cropcap }, ++ { .num = vidioc_int_g_crop_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_g_crop }, ++ { .num = vidioc_int_s_crop_num, ++ .func = (v4l2_int_ioctl_func *)mt9t112_v4l2_int_s_crop }, ++}; ++ ++static struct v4l2_int_slave mt9t112_slave = { ++ .ioctls = mt9t112_ioctl_desc, ++ .num_ioctls = ARRAY_SIZE(mt9t112_ioctl_desc), ++}; ++ + static int mt9t112_probe(struct i2c_client *client, + const struct i2c_device_id *did) + { + struct mt9t112_priv *priv; +- struct soc_camera_device *icd = client->dev.platform_data; +- struct soc_camera_link *icl; ++ struct v4l2_int_device *v4l2_int_device; + int ret; + +- if (!icd) { +- dev_err(&client->dev, "mt9t112: missing soc-camera data!\n"); +- return -EINVAL; ++ if (!client->dev.platform_data) { ++ dev_err(&client->dev, "no platform data?\n"); ++ return -ENODEV; + } + +- icl = to_soc_camera_link(icd); +- if (!icl || !icl->priv) +- return -EINVAL; +- + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + +- priv->info = icl->priv; ++ v4l2_int_device = kzalloc(sizeof(*v4l2_int_device), GFP_KERNEL); ++ if (!v4l2_int_device) { ++ kfree(priv); ++ return -ENOMEM; ++ } + +- v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); ++ v4l2_int_device->module = THIS_MODULE; ++ strncpy(v4l2_int_device->name, "mt9t112", sizeof(v4l2_int_device->name)); ++ v4l2_int_device->type = v4l2_int_type_slave; ++ v4l2_int_device->u.slave = &mt9t112_slave; ++ v4l2_int_device->priv = priv; + +- icd->ops = &mt9t112_ops; ++ priv->v4l2_int_device = v4l2_int_device; ++ priv->client = client; ++ priv->pdata = client->dev.platform_data; + +- ret = mt9t112_camera_probe(icd, client); ++ i2c_set_clientdata(client, priv); ++ ++ //ret = mt9t112_detect(client); ++ ++ ret = v4l2_int_device_register(priv->v4l2_int_device); + if (ret) { +- icd->ops = NULL; + i2c_set_clientdata(client, NULL); ++ kfree(v4l2_int_device); + kfree(priv); + } + +@@ -1128,11 +1211,12 @@ static int mt9t112_probe(struct i2c_client *client, + + static int mt9t112_remove(struct i2c_client *client) + { +- struct mt9t112_priv *priv = to_mt9t112(client); +- struct soc_camera_device *icd = client->dev.platform_data; ++ struct mt9t112_priv *priv = i2c_get_clientdata(client); + +- icd->ops = NULL; ++ v4l2_int_device_unregister(priv->v4l2_int_device); + i2c_set_clientdata(client, NULL); ++ ++ kfree(priv->v4l2_int_device); + kfree(priv); + return 0; + } +@@ -1172,6 +1256,6 @@ static void __exit mt9t112_module_exit(void) + module_init(mt9t112_module_init); + module_exit(mt9t112_module_exit); + +-MODULE_DESCRIPTION("SoC Camera driver for mt9t112"); ++MODULE_DESCRIPTION("mt9t112 sensor driver"); + MODULE_AUTHOR("Kuninori Morimoto"); + MODULE_LICENSE("GPL v2"); +diff --git a/include/media/mt9t112.h b/include/media/mt9t112.h +index a43c74a..62caaf5 100644 +--- a/include/media/mt9t112.h ++++ b/include/media/mt9t112.h +@@ -11,6 +11,8 @@ + #ifndef __MT9T112_H__ + #define __MT9T112_H__ + ++#include ++ + #define MT9T112_FLAG_PCLK_RISING_EDGE (1 << 0) + #define MT9T112_FLAG_DATAWIDTH_8 (1 << 1) /* default width is 10 */ + +@@ -27,4 +29,15 @@ struct mt9t112_camera_info { + struct mt9t112_pll_divider divider; + }; + ++struct mt9t112_platform_data { ++ char *master; ++ int (*power_set) (struct v4l2_int_device *s, enum v4l2_power on); ++ int (*ifparm) (struct v4l2_ifparm *p); ++ int (*priv_data_set) (void *); ++ /* Interface control params */ ++ bool clk_polarity; ++ bool hs_polarity; ++ bool vs_polarity; ++}; ++ + #endif /* __MT9T112_H__ */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0052-mt9t112-Add-more-info-to-public-header.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0052-mt9t112-Add-more-info-to-public-header.patch new file mode 100644 index 0000000..22c9c4d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0052-mt9t112-Add-more-info-to-public-header.patch @@ -0,0 +1,29 @@ +From 4e0c0d1ec79c097bb2e580f186a89963b9e35d8c Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 1 Jul 2010 07:33:49 -0500 +Subject: [PATCH 52/75] mt9t112: Add more info to public header + +Signed-off-by: Sergio Aguirre +--- + include/media/mt9t112.h | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/include/media/mt9t112.h b/include/media/mt9t112.h +index 62caaf5..49fa042 100644 +--- a/include/media/mt9t112.h ++++ b/include/media/mt9t112.h +@@ -13,6 +13,11 @@ + + #include + ++#define MT9T112_I2C_ADDR (0x78 >> 1) ++ ++#define MT9T112_CLK_MAX (54000000) /* 54MHz */ ++#define MT9T112_CLK_MIN (6000000) /* 6Mhz */ ++ + #define MT9T112_FLAG_PCLK_RISING_EDGE (1 << 0) + #define MT9T112_FLAG_DATAWIDTH_8 (1 << 1) /* default width is 10 */ + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch new file mode 100644 index 0000000..b24638f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch @@ -0,0 +1,84 @@ +From 8ef0425ef8bc0d228e03666cf7d0af564882fcef Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 1 Jul 2010 09:12:37 -0500 +Subject: [PATCH 53/75] mt9t112: Fix null pointer kernel bug + +We were trying to access a null pointer (info) which we weren't +initializing anywhere. + +Fix this. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 34 +++++++++++++++++++++++----------- + 1 files changed, 23 insertions(+), 11 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 6f54394..98a4ea9 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -92,7 +92,7 @@ struct mt9t112_frame_size { + struct mt9t112_priv { + struct mt9t112_platform_data *pdata; + struct v4l2_int_device *v4l2_int_device; +- struct mt9t112_camera_info *info; ++ struct mt9t112_camera_info info; + struct i2c_client *client; + struct v4l2_pix_format pix; + int model; +@@ -463,15 +463,15 @@ static int mt9t112_init_pll(const struct i2c_client *client) + + /* Replace these registers when new timing parameters are generated */ + mt9t112_set_pll_dividers(client, +- priv->info->divider.m, +- priv->info->divider.n, +- priv->info->divider.p1, +- priv->info->divider.p2, +- priv->info->divider.p3, +- priv->info->divider.p4, +- priv->info->divider.p5, +- priv->info->divider.p6, +- priv->info->divider.p7); ++ priv->info.divider.m, ++ priv->info.divider.n, ++ priv->info.divider.p1, ++ priv->info.divider.p2, ++ priv->info.divider.p3, ++ priv->info.divider.p4, ++ priv->info.divider.p5, ++ priv->info.divider.p6, ++ priv->info.divider.p7); + + /* + * TEST_BYPASS on +@@ -1015,7 +1015,7 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + } + if (!(priv->flags & INIT_DONE)) { + u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & +- priv->info->flags) ? 0x0001 : 0x0000; ++ priv->info.flags) ? 0x0001 : 0x0000; + + ECHECKER(ret, mt9t112_detect(client)); + ECHECKER(ret, mt9t112_init_camera(client)); +@@ -1195,6 +1195,18 @@ static int mt9t112_probe(struct i2c_client *client, + priv->client = client; + priv->pdata = client->dev.platform_data; + ++ /* Revisit: Init Sensor info settings */ ++ priv->info.divider.m = 25; ++ priv->info.divider.n = 2; ++ priv->info.divider.p1 = 0; ++ priv->info.divider.p2 = 9; ++ priv->info.divider.p3 = 0; ++ priv->info.divider.p4 = 13; ++ priv->info.divider.p5 = 13; ++ priv->info.divider.p6 = 9; ++ priv->info.divider.p7 = 0; ++ priv->info.flags = MT9T112_FLAG_PCLK_RISING_EDGE; ++ + i2c_set_clientdata(client, priv); + + //ret = mt9t112_detect(client); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0054-DEBUG-omap3beagle-Add-MT9T112-to-defconfig.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0054-DEBUG-omap3beagle-Add-MT9T112-to-defconfig.patch new file mode 100644 index 0000000..ff364bd --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0054-DEBUG-omap3beagle-Add-MT9T112-to-defconfig.patch @@ -0,0 +1,26 @@ +From b5eb720c7424a1018fd7b76b7bfb3a1e720ab77b Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 00:55:43 -0500 +Subject: [PATCH 54/75] DEBUG: omap3beagle: Add MT9T112 to defconfig + +Signed-off-by: Sergio Aguirre +--- + arch/arm/configs/omap3_beagle_cam_defconfig | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/configs/omap3_beagle_cam_defconfig b/arch/arm/configs/omap3_beagle_cam_defconfig +index 0ea8300..80b64db 100644 +--- a/arch/arm/configs/omap3_beagle_cam_defconfig ++++ b/arch/arm/configs/omap3_beagle_cam_defconfig +@@ -1737,7 +1737,7 @@ CONFIG_VIDEO_WM8775=m + CONFIG_VIDEO_MT9V011=m + # CONFIG_VIDEO_TCM825X is not set + CONFIG_VIDEO_MT9P012=m +-CONFIG_VIDEO_MT9T111=y ++CONFIG_VIDEO_MT9T112=y + # CONFIG_VIDEO_DW9710 is not set + # CONFIG_VIDEO_OV3640 is not set + # CONFIG_VIDEO_IMX046 is not set +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0055-omap3beagle-camera-Change-MT9T111-references-to-new-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0055-omap3beagle-camera-Change-MT9T111-references-to-new-.patch new file mode 100644 index 0000000..38618cd --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0055-omap3beagle-camera-Change-MT9T111-references-to-new-.patch @@ -0,0 +1,207 @@ +From ecf53d3104b6b73b1b32a9a5b39af2f258d74f8d Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 15:47:23 -0500 +Subject: [PATCH 55/75] omap3beagle: camera: Change MT9T111 references to new MT9T112 driver + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 52 ++++++++++++------------ + arch/arm/mach-omap2/board-omap3beagle.c | 12 +++--- + 2 files changed, 32 insertions(+), 32 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 2e49158..0b4dff7 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -203,29 +203,29 @@ struct mt9v113_platform_data mt9v113_pdata = { + + #endif /* #ifdef CONFIG_VIDEO_MT9V113 */ + +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) +-#include ++#if defined(CONFIG_VIDEO_MT9T112) || defined(CONFIG_VIDEO_MT9T112_MODULE) ++#include + +-#define ISP_MT9T111_MCLK 216000000 ++#define ISP_MT9T112_MCLK 216000000 + + /* Arbitrary memory handling limit */ +-#define MT9T111_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN((2048 * 2) * 1536 * 4) ++#define MT9T112_BIGGEST_FRAME_BYTE_SIZE PAGE_ALIGN((2048 * 2) * 1536 * 4) + +-static struct isp_interface_config mt9t111_if_config = { ++static struct isp_interface_config mt9t112_if_config = { + .ccdc_par_ser = ISP_PARLL, + .dataline_shift = 0x2, + .hsvs_syncdetect = ISPCTRL_SYNC_DETECT_VSRISE, + .strobe = 0x0, + .prestrobe = 0x0, + .shutter = 0x0, +- .cam_mclk = ISP_MT9T111_MCLK, ++ .cam_mclk = ISP_MT9T112_MCLK, + .wenlog = ISPCCDC_CFG_WENLOG_AND, + .wait_hs_vs = 2, + .u.par.par_bridge = 0x3, + .u.par.par_clk_pol = 0x0, + }; + +-static struct v4l2_ifparm mt9t111_ifparm_s = { ++static struct v4l2_ifparm mt9t112_ifparm_s = { + .if_type = V4L2_IF_TYPE_RAW, + .u = { + .raw = { +@@ -235,47 +235,47 @@ static struct v4l2_ifparm mt9t111_ifparm_s = { + .latch_clk_inv = 0, + .nobt_hs_inv = 0, /* active high */ + .nobt_vs_inv = 0, /* active high */ +- .clock_min = MT9T111_CLK_MIN, +- .clock_max = MT9T111_CLK_MAX, ++ .clock_min = MT9T112_CLK_MIN, ++ .clock_max = MT9T112_CLK_MAX, + }, + }, + }; + + /** +- * @brief mt9t111_ifparm - Returns the mt9t111 interface parameters ++ * @brief mt9t112_ifparm - Returns the mt9t112 interface parameters + * + * @param p - pointer to v4l2_ifparm structure + * + * @return result of operation - 0 is success + */ +-static int mt9t111_ifparm(struct v4l2_ifparm *p) ++static int mt9t112_ifparm(struct v4l2_ifparm *p) + { + if (p == NULL) + return -EINVAL; + +- *p = mt9t111_ifparm_s; ++ *p = mt9t112_ifparm_s; + return 0; + } + + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +-static struct omap34xxcam_hw_config mt9t111_hwc = { ++static struct omap34xxcam_hw_config mt9t112_hwc = { + .dev_index = 0, + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 0, +- .u.sensor.capture_mem = MT9T111_BIGGEST_FRAME_BYTE_SIZE, ++ .u.sensor.capture_mem = MT9T112_BIGGEST_FRAME_BYTE_SIZE, + .u.sensor.ival_default = { 1, 10 }, + }; + #endif + + /** +- * @brief mt9t111_set_prv_data - Returns mt9t111 omap34xx driver private data ++ * @brief mt9t112_set_prv_data - Returns mt9t112 omap34xx driver private data + * + * @param priv - pointer to omap34xxcam_hw_config structure + * + * @return result of operation - 0 is success + */ +-static int mt9t111_set_prv_data(void *priv) ++static int mt9t112_set_prv_data(void *priv) + { + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + struct omap34xxcam_hw_config *hwc = priv; +@@ -283,7 +283,7 @@ static int mt9t111_set_prv_data(void *priv) + if (priv == NULL) + return -EINVAL; + +- *hwc = mt9t111_hwc; ++ *hwc = mt9t112_hwc; + return 0; + #else + return -EINVAL; +@@ -291,13 +291,13 @@ static int mt9t111_set_prv_data(void *priv) + } + + /** +- * @brief mt9t111_power_set - Power-on or power-off TVP5146 device ++ * @brief mt9t112_power_set - Power-on or power-off TVP5146 device + * + * @param power - enum, Power on/off, resume/standby + * + * @return result of operation - 0 is success + */ +-static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) ++static int mt9t112_power_set(struct v4l2_int_device *s, enum v4l2_power power) + { + struct omap34xxcam_videodev *vdev = s->u.slave->master->priv; + +@@ -314,7 +314,7 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + + case V4L2_POWER_ON: + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +- isp_configure_interface(vdev->cam->isp, &mt9t111_if_config); ++ isp_configure_interface(vdev->cam->isp, &mt9t112_if_config); + #endif + + /* Set RESET_BAR to 0 */ +@@ -331,7 +331,7 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + mdelay(50); + + /* Enable EXTCLK */ +- isp_set_xclk(vdev->cam->isp, MT9T111_CLK_MIN, CAM_USE_XCLKA); ++ isp_set_xclk(vdev->cam->isp, MT9T112_CLK_MIN, CAM_USE_XCLKA); + + /* + * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): +@@ -359,14 +359,14 @@ static int mt9t111_power_set(struct v4l2_int_device *s, enum v4l2_power power) + return 0; + } + +-struct mt9t111_platform_data mt9t111_pdata = { ++struct mt9t112_platform_data mt9t112_pdata = { + .master = "omap34xxcam", +- .power_set = mt9t111_power_set, +- .priv_data_set = mt9t111_set_prv_data, +- .ifparm = mt9t111_ifparm, ++ .power_set = mt9t112_power_set, ++ .priv_data_set = mt9t112_set_prv_data, ++ .ifparm = mt9t112_ifparm, + }; + +-#endif /* #ifdef CONFIG_VIDEO_MT9T111 */ ++#endif /* #ifdef CONFIG_VIDEO_MT9T112 */ + + static int beagle_cam_probe(struct platform_device *pdev) + { +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index 239bd44..f93616b 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -77,10 +77,10 @@ static struct omap_opp * _omap37x_l3_rate_table = NULL; + extern struct mt9v113_platform_data mt9v113_pdata; + #endif + +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#if defined(CONFIG_VIDEO_MT9T112) || defined(CONFIG_VIDEO_MT9T112_MODULE) + #include +-#include +-extern struct mt9t111_platform_data mt9t111_pdata; ++#include ++extern struct mt9t112_platform_data mt9t112_pdata; + #endif + + #define GPMC_CS0_BASE 0x60 +@@ -602,10 +602,10 @@ static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { + .platform_data = &mt9v113_pdata, + }, + #endif +-#if defined(CONFIG_VIDEO_MT9T111) || defined(CONFIG_VIDEO_MT9T111_MODULE) ++#if defined(CONFIG_VIDEO_MT9T112) || defined(CONFIG_VIDEO_MT9T112_MODULE) + { +- I2C_BOARD_INFO("mt9t111", MT9T111_I2C_ADDR), +- .platform_data = &mt9t111_pdata, ++ I2C_BOARD_INFO("mt9t112", MT9T112_I2C_ADDR), ++ .platform_data = &mt9t112_pdata, + }, + #endif + }; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0056-omap34xxcam-Fix-multi-pixel-format-negotiation.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0056-omap34xxcam-Fix-multi-pixel-format-negotiation.patch new file mode 100644 index 0000000..8040b32 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0056-omap34xxcam-Fix-multi-pixel-format-negotiation.patch @@ -0,0 +1,26 @@ +From bfca10fcff055b53728881c4c443f18e1387c722 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 1 Jul 2010 13:57:26 -0500 +Subject: [PATCH 56/75] omap34xxcam: Fix multi pixel format negotiation + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/omap34xxcam.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/media/video/omap34xxcam.c b/drivers/media/video/omap34xxcam.c +index 2e8153b..051c6a7 100644 +--- a/drivers/media/video/omap34xxcam.c ++++ b/drivers/media/video/omap34xxcam.c +@@ -544,7 +544,7 @@ static int try_pix_parm(struct omap34xxcam_videodev *vdev, + pix_tmp_out.height = pix_tmp_in.height; + rval = isp_try_fmt_cap(isp, &pix_tmp_in, &pix_tmp_out); + if (rval) +- return rval; ++ break; + + dev_dbg(&vdev->vfd->dev, "this w %d\th %d\tfmt %8.8x\t" + "-> w %d\th %d\t fmt %8.8x" +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0057-SQUASH-omap3beagle-camera-Bring-back-mt9t111-support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0057-SQUASH-omap3beagle-camera-Bring-back-mt9t111-support.patch new file mode 100644 index 0000000..8161406 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0057-SQUASH-omap3beagle-camera-Bring-back-mt9t111-support.patch @@ -0,0 +1,43 @@ +From 42caf665931e5f86e514fcf5e011daff395836c2 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 17:53:07 -0500 +Subject: [PATCH 57/75] SQUASH: omap3beagle: camera: Bring back mt9t111 support + +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 0b4dff7..3118026 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -221,14 +221,14 @@ static struct isp_interface_config mt9t112_if_config = { + .cam_mclk = ISP_MT9T112_MCLK, + .wenlog = ISPCCDC_CFG_WENLOG_AND, + .wait_hs_vs = 2, +- .u.par.par_bridge = 0x3, ++ .u.par.par_bridge = 0x2, + .u.par.par_clk_pol = 0x0, + }; + + static struct v4l2_ifparm mt9t112_ifparm_s = { +- .if_type = V4L2_IF_TYPE_RAW, ++ .if_type = V4L2_IF_TYPE_YCbCr, + .u = { +- .raw = { ++ .ycbcr = { + .frame_start_on_rising_vs = 1, + .bt_sync_correct = 0, + .swap = 0, +@@ -262,7 +262,7 @@ static struct omap34xxcam_hw_config mt9t112_hwc = { + .dev_index = 0, + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, +- .u.sensor.sensor_isp = 0, ++ .u.sensor.sensor_isp = 1, + .u.sensor.capture_mem = MT9T112_BIGGEST_FRAME_BYTE_SIZE, + .u.sensor.ival_default = { 1, 10 }, + }; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0058-mt9t112-Do-init_camera-every-powerup.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0058-mt9t112-Do-init_camera-every-powerup.patch new file mode 100644 index 0000000..a0cf68d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0058-mt9t112-Do-init_camera-every-powerup.patch @@ -0,0 +1,57 @@ +From a9afe5db3c54dc9dcc1025d493afe854a6e86914 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 17:53:44 -0500 +Subject: [PATCH 58/75] mt9t112: Do init_camera every powerup + +This is because we want to ensure we always come from a known state. + +Probably this could be revisited later for optimization. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 17 ++++++++--------- + 1 files changed, 8 insertions(+), 9 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 98a4ea9..eebc2b5 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -982,6 +982,8 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + { + struct mt9t112_priv *priv = s->priv; + struct i2c_client *client = priv->client; ++ u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & ++ priv->info.flags) ? 0x0001 : 0x0000; + int ret; + + switch (power) { +@@ -1014,20 +1016,17 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + return ret; + } + if (!(priv->flags & INIT_DONE)) { +- u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE & +- priv->info.flags) ? 0x0001 : 0x0000; +- + ECHECKER(ret, mt9t112_detect(client)); +- ECHECKER(ret, mt9t112_init_camera(client)); +- +- /* Invert PCLK (Data sampled on falling edge of pixclk) */ +- mt9t112_reg_write(ret, client, 0x3C20, param); +- +- mdelay(5); + + priv->flags |= INIT_DONE; + } + ++ ECHECKER(ret, mt9t112_init_camera(client)); ++ ++ /* Invert PCLK (Data sampled on falling edge of pixclk) */ ++ mt9t112_reg_write(ret, client, 0x3C20, param); ++ ++ mdelay(5); + mt9t112_mcu_write(ret, client, VAR(26, 7), + mt9t112_pixfmt_to_fmt(priv->pix.pixelformat)); + mt9t112_mcu_write(ret, client, VAR(26, 9), +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0059-omap3beagle-camera-Switch-flag-for-no-sensor-ISP.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0059-omap3beagle-camera-Switch-flag-for-no-sensor-ISP.patch new file mode 100644 index 0000000..c273035 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0059-omap3beagle-camera-Switch-flag-for-no-sensor-ISP.patch @@ -0,0 +1,26 @@ +From 86ecf1214056406f84852a9863b2e0f4cd64c52c Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 18:15:32 -0500 +Subject: [PATCH 59/75] omap3beagle: camera: Switch flag for no sensor ISP + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 3118026..75622bf 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -262,7 +262,7 @@ static struct omap34xxcam_hw_config mt9t112_hwc = { + .dev_index = 0, + .dev_minor = 0, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, +- .u.sensor.sensor_isp = 1, ++ .u.sensor.sensor_isp = 0, + .u.sensor.capture_mem = MT9T112_BIGGEST_FRAME_BYTE_SIZE, + .u.sensor.ival_default = { 1, 10 }, + }; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0060-mt9t112-Add-back-3MP-basesize.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0060-mt9t112-Add-back-3MP-basesize.patch new file mode 100644 index 0000000..e7b7403 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0060-mt9t112-Add-back-3MP-basesize.patch @@ -0,0 +1,37 @@ +From 022aa1373b5bfb77bc90f9e1abb485e0717f28c2 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 18:33:00 -0500 +Subject: [PATCH 60/75] mt9t112: Add back 3MP basesize + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index eebc2b5..46d1bd6 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -41,8 +41,8 @@ + /* + * frame size + */ +-#define MAX_WIDTH 640 /* 2048 */ +-#define MAX_HEIGHT 480 /* 1536 */ ++#define MAX_WIDTH 2048 ++#define MAX_HEIGHT 1536 + + #define VGA_WIDTH 640 + #define VGA_HEIGHT 480 +@@ -133,7 +133,7 @@ const static struct v4l2_fmtdesc mt9t112_formats[] = { + ************************************************************************/ + const static struct mt9t112_frame_size mt9t112_sizes[] = { + { 640, 480 }, +- /* { 2048, 1536} */ ++ { 2048, 1536} + }; + + /************************************************************************ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0061-mt9t112-Prepare-for-24MHz-EXTCLK-and-30-fps.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0061-mt9t112-Prepare-for-24MHz-EXTCLK-and-30-fps.patch new file mode 100644 index 0000000..6f47dd9 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0061-mt9t112-Prepare-for-24MHz-EXTCLK-and-30-fps.patch @@ -0,0 +1,63 @@ +From aabf8386a23795f73722bf74901bd8aa46ebe1ba Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 23:41:32 -0500 +Subject: [PATCH 61/75] mt9t112: Prepare for 24MHz EXTCLK and 30 fps + +Set Aptina recommended values to get 30 FPS with VGA, which +are achievable given the new PLL divider settings, considering +an input of 24MHz in the master clock. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 46d1bd6..44234e4 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -144,7 +144,7 @@ const static struct mt9t112_frame_size mt9t112_sizes[] = { + + ************************************************************************/ + const struct v4l2_fract mt9t112_frameintervals[] = { +- { .numerator = 1, .denominator = 10 } ++ { .numerator = 1, .denominator = 30 } + }; + + /************************************************************************ +@@ -932,9 +932,9 @@ static int mt9t112_v4l2_int_g_parm(struct v4l2_int_device *s, + a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + cparm->capability = V4L2_CAP_TIMEPERFRAME; +- /* FIXME: Is 10 fps really the only option? */ ++ /* FIXME: Is 30 fps really the only option? */ + cparm->timeperframe.numerator = 1; +- cparm->timeperframe.denominator = 10; ++ cparm->timeperframe.denominator = 30; + + return 0; + } +@@ -1195,14 +1195,14 @@ static int mt9t112_probe(struct i2c_client *client, + priv->pdata = client->dev.platform_data; + + /* Revisit: Init Sensor info settings */ +- priv->info.divider.m = 25; +- priv->info.divider.n = 2; ++ priv->info.divider.m = 24; ++ priv->info.divider.n = 1; + priv->info.divider.p1 = 0; +- priv->info.divider.p2 = 9; ++ priv->info.divider.p2 = 8; + priv->info.divider.p3 = 0; +- priv->info.divider.p4 = 13; +- priv->info.divider.p5 = 13; +- priv->info.divider.p6 = 9; ++ priv->info.divider.p4 = 11; ++ priv->info.divider.p5 = 11; ++ priv->info.divider.p6 = 8; + priv->info.divider.p7 = 0; + priv->info.flags = MT9T112_FLAG_PCLK_RISING_EDGE; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0062-omap3beagle-camera-Prepare-24MHz-xclk-for-mt9t112.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0062-omap3beagle-camera-Prepare-24MHz-xclk-for-mt9t112.patch new file mode 100644 index 0000000..0d5a047 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0062-omap3beagle-camera-Prepare-24MHz-xclk-for-mt9t112.patch @@ -0,0 +1,62 @@ +From 00cd18c8b6bd6b7f6c627d2b1284ca8f98f1fda4 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 15 Jul 2010 23:43:20 -0500 +Subject: [PATCH 62/75] omap3beagle: camera: Prepare 24MHz xclk for mt9t112 + +Adjust calculations of timings based on # of EXTCLK cycles. + +Also, set default requested framerate to 30 fps. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 75622bf..520e1d8 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -264,7 +264,7 @@ static struct omap34xxcam_hw_config mt9t112_hwc = { + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 0, + .u.sensor.capture_mem = MT9T112_BIGGEST_FRAME_BYTE_SIZE, +- .u.sensor.ival_default = { 1, 10 }, ++ .u.sensor.ival_default = { 1, 30 }, + }; + #endif + +@@ -331,24 +331,24 @@ static int mt9t112_power_set(struct v4l2_int_device *s, enum v4l2_power power) + mdelay(50); + + /* Enable EXTCLK */ +- isp_set_xclk(vdev->cam->isp, MT9T112_CLK_MIN, CAM_USE_XCLKA); ++ isp_set_xclk(vdev->cam->isp, 24000000, CAM_USE_XCLKA); + + /* +- * Wait at least 70 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): +- * ((1000000 * 70) / 6000000) = aprox 12 us. ++ * Wait at least 70 CLK cycles (w/EXTCLK = 24MHz): ++ * ((1000000 * 70) / 24000000) = aprox 2.91 us. + */ + +- udelay(12); ++ udelay(3); + + /* Set RESET_BAR to 1 */ + gpio_set_value(LEOPARD_RESET_GPIO, 1); + + /* +- * Wait at least 100 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): +- * ((1000000 * 100) / 6000000) = aprox 17 us. ++ * Wait at least 100 CLK cycles (w/EXTCLK = 24MHz): ++ * ((1000000 * 100) / 24000000) = aprox 4.16 us. + */ + +- udelay(17); ++ udelay(5); + + break; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch new file mode 100644 index 0000000..ad5297f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch @@ -0,0 +1,109 @@ +From 898d1ae2cad72e2b74a0a354b323ba91f2cd4a2a Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 16 Jul 2010 07:52:06 -0500 +Subject: [PATCH 63/75] mt9t112: Correct register settings for mt9t111 sensor + +This now matches with Aptina's recommended values. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 46 ++++++++++++++++++++++++++++------------ + 1 files changed, 32 insertions(+), 14 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 44234e4..ac295dd 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -44,6 +44,9 @@ + #define MAX_WIDTH 2048 + #define MAX_HEIGHT 1536 + ++#define MAX_WIDTH_PREV 1024 ++#define MAX_HEIGHT_PREV 768 ++ + #define VGA_WIDTH 640 + #define VGA_HEIGHT 480 + +@@ -392,24 +395,39 @@ static int mt9t112_set_a_frame_size(const struct i2c_client *client, + u16 height) + { + int ret; +- u16 wstart = (MAX_WIDTH - width) / 2; +- u16 hstart = (MAX_HEIGHT - height) / 2; ++ u16 wstart, hstart, wend, hend; ++ u16 max_width = MAX_WIDTH_PREV, max_height = MAX_HEIGHT_PREV; ++ ++ if ((width > max_width) || (height > max_height)) { ++ /* Capture case */ ++ max_width = MAX_WIDTH; ++ max_height = MAX_HEIGHT; ++ hstart = 4; ++ wstart = 4; ++ hend = 1547; ++ wend = 2059; ++ } else { ++ hstart = 0; ++ wstart = 0; ++ hend = 1549; ++ wend = 2061; ++ } + + /* (Context A) Image Width/Height */ + mt9t112_mcu_write(ret, client, VAR(26, 0), width); + mt9t112_mcu_write(ret, client, VAR(26, 2), height); + + /* (Context A) Output Width/Height */ +- mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + width); +- mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + height); ++ mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + max_width); ++ mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + max_height); + + /* (Context A) Start Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 2), 4 + hstart); +- mt9t112_mcu_write(ret, client, VAR(18, 4), 4 + wstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 2), hstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 4), wstart); + + /* (Context A) End Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 6), 11 + height + hstart); +- mt9t112_mcu_write(ret, client, VAR(18, 8), 11 + width + wstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 6), hend); ++ mt9t112_mcu_write(ret, client, VAR(18, 8), wend); + + mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); + +@@ -547,25 +565,25 @@ static int mt9t112_init_setting(const struct i2c_client *client) + mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); + + /* Read Mode (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 12), 0x0024); ++ mt9t112_mcu_write(ret, client, VAR(18, 12), 0x046C); + + /* Fine Correction (A) */ + mt9t112_mcu_write(ret, client, VAR(18, 15), 0x00CC); + + /* Fine IT Min (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 17), 0x01f1); ++ mt9t112_mcu_write(ret, client, VAR(18, 17), 0x0381); + + /* Fine IT Max Margin (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 19), 0x00fF); ++ mt9t112_mcu_write(ret, client, VAR(18, 19), 0x024F); + + /* Base Frame Lines (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 29), 0x032D); ++ mt9t112_mcu_write(ret, client, VAR(18, 29), 0x0378); + + /* Min Line Length (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 31), 0x073a); ++ mt9t112_mcu_write(ret, client, VAR(18, 31), 0x05D0); + + /* Line Length (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07d0); ++ mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07AC); + + /* Adaptive Output Clock (B) */ + mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0064-mt9t112-Remove-smart-size-selection.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0064-mt9t112-Remove-smart-size-selection.patch new file mode 100644 index 0000000..a39eeba --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0064-mt9t112-Remove-smart-size-selection.patch @@ -0,0 +1,188 @@ +From f6b91f473fe590e80eff6fd16e6fbcc15ce12b9a Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Fri, 16 Jul 2010 17:09:10 -0500 +Subject: [PATCH 64/75] mt9t112: Remove "smart" size selection + +This code is broken, as it doesn't really adjust all other +settings, but output size to desired size. It isn't really +toggling everything that needs, and giving the false impression +of good size flexibility. + +So, meanwhile, let's put fixed init settings for the contexts, +and toggle between them (implemented in other patch). + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 105 ++++++++++++++++------------------------- + 1 files changed, 41 insertions(+), 64 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index ac295dd..ee991ef 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -390,50 +390,6 @@ static void mt9t112_frame_check(u32 *width, u32 *height) + *height = MAX_HEIGHT; + } + +-static int mt9t112_set_a_frame_size(const struct i2c_client *client, +- u16 width, +- u16 height) +-{ +- int ret; +- u16 wstart, hstart, wend, hend; +- u16 max_width = MAX_WIDTH_PREV, max_height = MAX_HEIGHT_PREV; +- +- if ((width > max_width) || (height > max_height)) { +- /* Capture case */ +- max_width = MAX_WIDTH; +- max_height = MAX_HEIGHT; +- hstart = 4; +- wstart = 4; +- hend = 1547; +- wend = 2059; +- } else { +- hstart = 0; +- wstart = 0; +- hend = 1549; +- wend = 2061; +- } +- +- /* (Context A) Image Width/Height */ +- mt9t112_mcu_write(ret, client, VAR(26, 0), width); +- mt9t112_mcu_write(ret, client, VAR(26, 2), height); +- +- /* (Context A) Output Width/Height */ +- mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + max_width); +- mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + max_height); +- +- /* (Context A) Start Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 2), hstart); +- mt9t112_mcu_write(ret, client, VAR(18, 4), wstart); +- +- /* (Context A) End Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 6), hend); +- mt9t112_mcu_write(ret, client, VAR(18, 8), wend); +- +- mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); +- +- return ret; +-} +- + static int mt9t112_set_pll_dividers(const struct i2c_client *client, + u8 m, u8 n, + u8 p1, u8 p2, u8 p3, +@@ -561,9 +517,27 @@ static int mt9t112_init_setting(const struct i2c_client *client) + + int ret; + ++ /* Output Width (A) */ ++ mt9t112_mcu_write(ret, client, VAR(26, 0), 640); ++ ++ /* Output Height (A) */ ++ mt9t112_mcu_write(ret, client, VAR(26, 2), 480); ++ + /* Adaptive Output Clock (A) */ + mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); + ++ /* Row Start (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 2), 0); ++ ++ /* Column Start (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 4), 0); ++ ++ /* Row End (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 6), 1549); ++ ++ /* Column End (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 8), 2061); ++ + /* Read Mode (A) */ + mt9t112_mcu_write(ret, client, VAR(18, 12), 0x046C); + +@@ -585,6 +559,18 @@ static int mt9t112_init_setting(const struct i2c_client *client) + /* Line Length (A) */ + mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07AC); + ++ /* Context Width (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + 1024); ++ ++ /* Context Height (A) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + 768); ++ ++ /* Output Width (B) */ ++ mt9t112_mcu_write(ret, client, VAR(27, 0), 2048); ++ ++ /* Output Hieght (B) */ ++ mt9t112_mcu_write(ret, client, VAR(27, 2), 1536); ++ + /* Adaptive Output Clock (B) */ + mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); + +@@ -610,13 +596,19 @@ static int mt9t112_init_setting(const struct i2c_client *client) + mt9t112_mcu_write(ret, client, VAR(18, 91), 0x00FF); + + /* Base Frame Lines (B) */ +- mt9t112_mcu_write(ret, client, VAR(18, 101), 0x0668); ++ mt9t112_mcu_write(ret, client, VAR(18, 101), 0x066C); + + /* Min Line Length (B) */ +- mt9t112_mcu_write(ret, client, VAR(18, 103), 0x0AF0); ++ mt9t112_mcu_write(ret, client, VAR(18, 103), 0x0378); + + /* Line Length (B) */ +- mt9t112_mcu_write(ret, client, VAR(18, 109), 0x0AF0); ++ mt9t112_mcu_write(ret, client, VAR(18, 109), 0x0CB1); ++ ++ /* Context Width (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 115), 8 + 2048); ++ ++ /* Context Height (B) */ ++ mt9t112_mcu_write(ret, client, VAR(18, 117), 8 + 1536); + + /* + * Flicker Dectection registers +@@ -692,10 +684,10 @@ static int mt9t112_init_setting(const struct i2c_client *client) + mt9t112_mcu_write(ret, client, VAR8(8, 12), 0x0A); + + /* RX FIFO Watermark (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 70), 0x0014); ++ mt9t112_mcu_write(ret, client, VAR(18, 70), 0x0080); + + /* RX FIFO Watermark (B) */ +- mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0014); ++ mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0080); + + /* MCLK: 16MHz + * PCLK: 73MHz +@@ -1008,17 +1000,6 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + case V4L2_POWER_STANDBY: + /* FALLTHROUGH */ + case V4L2_POWER_OFF: +- /* FIXME +- * +- * If user selected large output size, +- * and used it long time, +- * mt9t112 camera will be very warm. +- * +- * But current driver can not stop mt9t112 camera. +- * So, set small size here to solve this problem. +- */ +- mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); +- + ret = priv->pdata->power_set(s, power); + if (ret < 0) { + dev_err(&client->dev, "Unable to set target board power " +@@ -1051,10 +1032,6 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + mt9t112_pixfmt_to_order(priv->pix.pixelformat)); + mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); + +- mt9t112_set_a_frame_size(client, +- priv->pix.width, +- priv->pix.height); +- + ECHECKER(ret, mt9t112_auto_focus_trigger(client)); + + dev_dbg(&client->dev, "format : %d\n", priv->pix.pixelformat); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0065-rtl8192su-remove-bogus-Kconfig-depend-on-PCI-and-add.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0065-rtl8192su-remove-bogus-Kconfig-depend-on-PCI-and-add.patch new file mode 100644 index 0000000..0ceb1a5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0065-rtl8192su-remove-bogus-Kconfig-depend-on-PCI-and-add.patch @@ -0,0 +1,38 @@ +From 088fc53bfda23acd009213c5ff83f411bf09e307 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 18 Jul 2010 11:25:12 +0200 +Subject: [PATCH 65/75] rtl8192su: remove bogus Kconfig depend on PCI and add another product ID + +Signed-off-by: Koen Kooi +--- + drivers/staging/rtl8192su/Kconfig | 2 +- + drivers/staging/rtl8192su/r8192U_core.c | 1 + + 2 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/drivers/staging/rtl8192su/Kconfig b/drivers/staging/rtl8192su/Kconfig +index 123fa6d..9888927 100644 +--- a/drivers/staging/rtl8192su/Kconfig ++++ b/drivers/staging/rtl8192su/Kconfig +@@ -1,6 +1,6 @@ + config RTL8192SU + tristate "RealTek RTL8192SU Wireless LAN NIC driver" +- depends on PCI && WLAN && USB ++ depends on WLAN && USB + depends on WIRELESS_EXT + default N + ---help--- +diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c +index 66274d7..48e4c29 100644 +--- a/drivers/staging/rtl8192su/r8192U_core.c ++++ b/drivers/staging/rtl8192su/r8192U_core.c +@@ -112,6 +112,7 @@ u32 rt_global_debug_component = \ + + static struct usb_device_id rtl8192_usb_id_tbl[] = { + /* Realtek */ ++ {USB_DEVICE(0x0bda, 0x8171)}, + {USB_DEVICE(0x0bda, 0x8192)}, + {USB_DEVICE(0x0bda, 0x8709)}, + /* Corega */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0066-mt9t112-Add-Context-selection-to-configuration.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0066-mt9t112-Add-Context-selection-to-configuration.patch new file mode 100644 index 0000000..f797f1e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0066-mt9t112-Add-Context-selection-to-configuration.patch @@ -0,0 +1,96 @@ +From c085125afaa6641b5db8e88f227eb4141ed6d59c Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Sun, 18 Jul 2010 01:12:41 -0500 +Subject: [PATCH 66/75] mt9t112: Add Context selection to configuration + +Thsi makes always start at least with preview mode +(context A), and then, if needed, transition to capture +mode (context B) + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 54 +++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 54 insertions(+), 0 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index ee991ef..ec7514f 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -73,6 +73,9 @@ + #define mt9t112_reg_read(ret, client, a) \ + ECHECKER(ret, __mt9t112_reg_read(client, a)) + ++#define mt9t112_mcu_read(ret, client, a) \ ++ ECHECKER(ret, __mt9t112_mcu_read(client, a)) ++ + /* + * Logical address + */ +@@ -737,6 +740,50 @@ static int mt9t112_auto_focus_trigger(const struct i2c_client *client) + return ret; + } + ++static int mt9t112_goto_preview(const struct i2c_client *client) ++{ ++ int ret, trycount = 0; ++ ++ /* Is it already in preview mode? */ ++ mt9t112_mcu_read(ret, client, VAR8(1, 1)); ++ if (ret == 0x3) ++ return 0; ++ ++ /* Go to preview mode */ ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 1); ++ do { ++ mt9t112_mcu_read(ret, client, VAR8(1, 1)); ++ mdelay(1); ++ } while ((ret != 0x3) && (++trycount < 100)); ++ ++ if (trycount >= 100) ++ return -EBUSY; ++ ++ return 0; ++} ++ ++static int mt9t112_goto_capture(const struct i2c_client *client) ++{ ++ int ret, trycount = 0; ++ ++ /* Is it already in capture mode? */ ++ mt9t112_mcu_read(ret, client, VAR8(1, 1)); ++ if (ret == 0x7) ++ return 0; ++ ++ /* Go to capture mode */ ++ mt9t112_mcu_write(ret, client, VAR8(1, 0), 2); ++ do { ++ mt9t112_mcu_read(ret, client, VAR8(1, 1)); ++ mdelay(1); ++ } while ((ret != 0x7) && (++trycount < 100)); ++ ++ if (trycount >= 100) ++ return -EBUSY; ++ ++ return 0; ++} ++ + static int mt9t112_init_camera(const struct i2c_client *client) + { + int ret; +@@ -1034,6 +1081,13 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + + ECHECKER(ret, mt9t112_auto_focus_trigger(client)); + ++ ECHECKER(ret, mt9t112_goto_preview(client)); ++ ++ if ((priv->pix.width == MAX_WIDTH) && ++ (priv->pix.height == MAX_HEIGHT)) { ++ ECHECKER(ret, mt9t112_goto_capture(client)); ++ } ++ + dev_dbg(&client->dev, "format : %d\n", priv->pix.pixelformat); + dev_dbg(&client->dev, "size : %d x %d\n", + priv->pix.width, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0067-mt9t112-Disable-JPEG-in-Context-B.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0067-mt9t112-Disable-JPEG-in-Context-B.patch new file mode 100644 index 0000000..060764e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0067-mt9t112-Disable-JPEG-in-Context-B.patch @@ -0,0 +1,32 @@ +From 4fd52aac9743364e805cb3b4d1c9e8cb53a434a5 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Sun, 18 Jul 2010 01:45:29 -0500 +Subject: [PATCH 67/75] mt9t112: Disable JPEG in Context B + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 8 -------- + 1 files changed, 0 insertions(+), 8 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index ec7514f..18d7ce5 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -812,14 +812,6 @@ static int mt9t112_init_camera(const struct i2c_client *client) + mt9t112_mcu_write(ret, client, VAR(26, 160), 0x0A2E); + mt9t112_mcu_write(ret, client, VAR(27, 160), 0x0A2E); + +- /* Configure STatus in Status_before_length Format and enable header */ +- /* PRI_B_CONFIG_JPEG_OB_TX_CONTROL_VAR */ +- mt9t112_mcu_write(ret, client, VAR(27, 144), 0x0CB4); +- +- /* Enable JPEG in context B */ +- /* PRI_B_CONFIG_JPEG_OB_TX_CONTROL_VAR */ +- mt9t112_mcu_write(ret, client, VAR8(27, 142), 0x01); +- + /* Disable Dac_TXLO */ + mt9t112_reg_write(ret, client, 0x316C, 0x350F); + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0068-mt9t112-Make-context-B-stream-unlimited-frames.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0068-mt9t112-Make-context-B-stream-unlimited-frames.patch new file mode 100644 index 0000000..f630d2e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0068-mt9t112-Make-context-B-stream-unlimited-frames.patch @@ -0,0 +1,30 @@ +From c8f30b77094542bca32a3c900e6afc4d9d4d7a74 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Sun, 18 Jul 2010 01:47:41 -0500 +Subject: [PATCH 68/75] mt9t112: Make context B stream unlimited frames + +Context A does this by default, so, only context B needs +to be configured like this. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 18d7ce5..3c516b4 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -771,6 +771,9 @@ static int mt9t112_goto_capture(const struct i2c_client *client) + if (ret == 0x7) + return 0; + ++ /* Num Frames Run (B) */ ++ mt9t112_mcu_write(ret, client, VAR(27, 5), 0); ++ + /* Go to capture mode */ + mt9t112_mcu_write(ret, client, VAR8(1, 0), 2); + do { +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0069-mt9t112-Fix-pll-p-dividers-abstraction.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0069-mt9t112-Fix-pll-p-dividers-abstraction.patch new file mode 100644 index 0000000..8b99319 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0069-mt9t112-Fix-pll-p-dividers-abstraction.patch @@ -0,0 +1,58 @@ +From 9c37d9acd3f7909cb1f4e437e0b5fe31dd6214d6 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 19 Jul 2010 12:31:47 -0500 +Subject: [PATCH 69/75] mt9t112: Fix pll p-dividers abstraction + +Previously, it wasn't clear that the values needed to be filled +were (val - 1). Fix that. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 3c516b4..c1a9b41 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -393,6 +393,8 @@ static void mt9t112_frame_check(u32 *width, u32 *height) + *height = MAX_HEIGHT; + } + ++#define PLL_ADJ(x) ((x != 0) ? x - 1 : 0) ++ + static int mt9t112_set_pll_dividers(const struct i2c_client *client, + u8 m, u8 n, + u8 p1, u8 p2, u8 p3, +@@ -408,21 +410,21 @@ static int mt9t112_set_pll_dividers(const struct i2c_client *client, + mt9t112_reg_mask_set(ret, client, 0x0010, 0x3fff, val); + + /* P1/P2/P3 */ +- val = ((p3 & 0x0F) << 8) | +- ((p2 & 0x0F) << 4) | +- ((p1 & 0x0F) << 0); ++ val = ((PLL_ADJ(p3) & 0x0F) << 8) | ++ ((PLL_ADJ(p2) & 0x0F) << 4) | ++ ((PLL_ADJ(p1) & 0x0F) << 0); + mt9t112_reg_mask_set(ret, client, 0x0012, 0x0fff, val); + + /* P4/P5/P6 */ + val = (0x7 << 12) | +- ((p6 & 0x0F) << 8) | +- ((p5 & 0x0F) << 4) | +- ((p4 & 0x0F) << 0); ++ ((PLL_ADJ(p6) & 0x0F) << 8) | ++ ((PLL_ADJ(p5) & 0x0F) << 4) | ++ ((PLL_ADJ(p4) & 0x0F) << 0); + mt9t112_reg_mask_set(ret, client, 0x002A, 0x7fff, val); + + /* P7 */ + val = (0x1 << 12) | +- ((p7 & 0x0F) << 0); ++ ((PLL_ADJ(p7) & 0x0F) << 0); + mt9t112_reg_mask_set(ret, client, 0x002C, 0x100f, val); + + return ret; +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0070-mt9t112-Adjust-50-60Hz-flickering-settings.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0070-mt9t112-Adjust-50-60Hz-flickering-settings.patch new file mode 100644 index 0000000..593b29b --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0070-mt9t112-Adjust-50-60Hz-flickering-settings.patch @@ -0,0 +1,51 @@ +From 3768ad7fb5304b05ee2184ba929a9896a3f8212a Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 19 Jul 2010 17:30:29 -0500 +Subject: [PATCH 70/75] mt9t112: Adjust 50/60Hz flickering settings + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 24 ++++++++++++++---------- + 1 files changed, 14 insertions(+), 10 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index c1a9b41..8528417 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -694,19 +694,23 @@ static int mt9t112_init_setting(const struct i2c_client *client) + /* RX FIFO Watermark (B) */ + mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0080); + +- /* MCLK: 16MHz ++ /* MCLK: 24MHz + * PCLK: 73MHz + * CorePixCLK: 36.5 MHz + */ +- mt9t112_mcu_write(ret, client, VAR8(18, 0x0044), 133); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x0045), 110); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x008c), 130); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x008d), 108); +- +- mt9t112_mcu_write(ret, client, VAR8(18, 0x00A5), 27); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x00a6), 30); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x00a7), 32); +- mt9t112_mcu_write(ret, client, VAR8(18, 0x00a8), 35); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x0044), 11); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x012F), 1); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x0045), 222); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x012D), 0); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x008c), 161); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x0130), 0); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x008d), 134); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x012E), 0); ++ ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00A5), 36); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a6), 38); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a7), 43); ++ mt9t112_mcu_write(ret, client, VAR8(18, 0x00a8), 45); + + return ret; + } +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0071-mt9t112-Trigger-autofocus-at-the-end-of-context-swit.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0071-mt9t112-Trigger-autofocus-at-the-end-of-context-swit.patch new file mode 100644 index 0000000..dda88c4 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0071-mt9t112-Trigger-autofocus-at-the-end-of-context-swit.patch @@ -0,0 +1,35 @@ +From a807b9f107bdcfbc9ba54ee4e67960f2e9912912 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Mon, 19 Jul 2010 17:45:38 -0500 +Subject: [PATCH 71/75] mt9t112: Trigger autofocus at the end of context switch + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9t112.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 8528417..0769f66 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -1080,8 +1080,6 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + mt9t112_pixfmt_to_order(priv->pix.pixelformat)); + mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); + +- ECHECKER(ret, mt9t112_auto_focus_trigger(client)); +- + ECHECKER(ret, mt9t112_goto_preview(client)); + + if ((priv->pix.width == MAX_WIDTH) && +@@ -1089,6 +1087,8 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s, + ECHECKER(ret, mt9t112_goto_capture(client)); + } + ++ ECHECKER(ret, mt9t112_auto_focus_trigger(client)); ++ + dev_dbg(&client->dev, "format : %d\n", priv->pix.pixelformat); + dev_dbg(&client->dev, "size : %d x %d\n", + priv->pix.width, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0072-omap3beagle-camera-Fix-dual-sensor-registration.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0072-omap3beagle-camera-Fix-dual-sensor-registration.patch new file mode 100644 index 0000000..ab040e1 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0072-omap3beagle-camera-Fix-dual-sensor-registration.patch @@ -0,0 +1,43 @@ +From 4ceb51197a0f0f2ebd9fc9530033f38de289a1cf Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 22 Jul 2010 11:03:33 -0500 +Subject: [PATCH 72/75] omap3beagle: camera: Fix dual sensor registration + +dev_index should be different, which represents an internal index +in the master camera driver. + +Also, make device video nodes be alloted with the "first free", by setting +dev_minor to -1. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index 520e1d8..c0218e3 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -107,7 +107,7 @@ static int mt9v113_ifparm(struct v4l2_ifparm *p) + + static struct omap34xxcam_hw_config mt9v113_hwc = { + .dev_index = 0, +- .dev_minor = 0, ++ .dev_minor = -1, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 1, + .u.sensor.capture_mem = MT9V113_MAX_FRAME_SIZE * 2, +@@ -259,8 +259,8 @@ static int mt9t112_ifparm(struct v4l2_ifparm *p) + + #if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) + static struct omap34xxcam_hw_config mt9t112_hwc = { +- .dev_index = 0, +- .dev_minor = 0, ++ .dev_index = 1, ++ .dev_minor = -1, + .dev_type = OMAP34XXCAM_SLAVE_SENSOR, + .u.sensor.sensor_isp = 0, + .u.sensor.capture_mem = MT9T112_BIGGEST_FRAME_BYTE_SIZE, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch new file mode 100644 index 0000000..42e685e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch @@ -0,0 +1,68 @@ +From ac6564db6442fe40c974f233750c2fdd20735006 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 22 Jul 2010 13:29:16 -0500 +Subject: [PATCH 73/75] mt9v113: Fix State variable handling + +State variable was misused, and was running detection all the +time the sensor was powered back on. + +Reason? power off code was putting it to "not detected" always. + +Signed-off-by: Sergio Aguirre +--- + drivers/media/video/mt9v113.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c +index 6714240..37e3e19 100644 +--- a/drivers/media/video/mt9v113.c ++++ b/drivers/media/video/mt9v113.c +@@ -1251,7 +1251,6 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + /* Disable mux for mt9v113 data path */ + if (decoder->pdata->power_set) + err |= decoder->pdata->power_set(s, on); +- decoder->state = STATE_NOT_DETECTED; + break; + + case V4L2_POWER_STANDBY: +@@ -1260,23 +1259,29 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) + break; + + case V4L2_POWER_ON: +- /* Enable mux for mt9v113 data path */ +- if (decoder->state == STATE_NOT_DETECTED) { +- +- if (decoder->pdata->power_set) +- err = decoder->pdata->power_set(s, on); ++ if (decoder->pdata->power_set) { ++ err = decoder->pdata->power_set(s, on); ++ if (err) ++ return err; ++ } + ++ if (decoder->state == STATE_NOT_DETECTED) { + /* Detect the sensor is not already detected */ +- err |= mt9v113_detect(decoder); ++ err = mt9v113_detect(decoder); + if (err) { + v4l_err(decoder->client, + "Unable to detect decoder\n"); ++ WARN_ON(1); + return err; + } + } + /* Only VGA mode for now */ +- err |= mt9v113_configure(decoder); +- err |= mt9v113_vga_mode(decoder); ++ err = mt9v113_configure(decoder); ++ if (err) ++ return err; ++ err = mt9v113_vga_mode(decoder); ++ if (err) ++ return err; + break; + + default: +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0074-Move-sensor-rest-to-after-applying-power.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0074-Move-sensor-rest-to-after-applying-power.patch new file mode 100644 index 0000000..aaab1f7 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0074-Move-sensor-rest-to-after-applying-power.patch @@ -0,0 +1,65 @@ +From cf2b4381eeb1bb33c60fa48ea7ba27de13bca5ab Mon Sep 17 00:00:00 2001 +From: Steve Kipisz +Date: Thu, 5 Aug 2010 10:51:11 -0500 +Subject: [PATCH 74/75] Move sensor rest to after applying power. + +--- + arch/arm/mach-omap2/board-omap3beagle-camera.c | 12 ++++++++---- + 1 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle-camera.c b/arch/arm/mach-omap2/board-omap3beagle-camera.c +index c0218e3..110c2c9 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle-camera.c ++++ b/arch/arm/mach-omap2/board-omap3beagle-camera.c +@@ -160,8 +160,6 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + case V4L2_POWER_ON: + + isp_configure_interface(vdev->cam->isp, &mt9v113_if_config); +- /* Set RESET_BAR to 0 */ +- gpio_set_value(LEOPARD_RESET_GPIO, 0); + + /* turn on VDD */ + regulator_enable(cam_1v8_reg); +@@ -170,6 +168,9 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + regulator_enable(cam_2v8_reg); + mdelay(50); + ++ /* Set RESET_BAR to 0 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 0); ++ + /* Enable EXTCLK */ + isp_set_xclk(vdev->cam->isp, MT9V113_CLK_MIN*2, CAM_USE_XCLKA); + /* +@@ -177,8 +178,10 @@ static int mt9v113_power_set(struct v4l2_int_device *s, enum v4l2_power power) + * ((1000000 * 70) / 6000000) = aprox 12 us. + */ + udelay(12); ++ + /* Set RESET_BAR to 1 */ + gpio_set_value(LEOPARD_RESET_GPIO, 1); ++ + /* + * Wait at least 100 CLK cycles (w/EXTCLK = 6MHz, or CLK_MIN): + * ((1000000 * 100) / 6000000) = aprox 17 us. +@@ -317,8 +320,6 @@ static int mt9t112_power_set(struct v4l2_int_device *s, enum v4l2_power power) + isp_configure_interface(vdev->cam->isp, &mt9t112_if_config); + #endif + +- /* Set RESET_BAR to 0 */ +- gpio_set_value(LEOPARD_RESET_GPIO, 0); + + /* turn on VDD */ + regulator_enable(cam_1v8_reg); +@@ -330,6 +331,9 @@ static int mt9t112_power_set(struct v4l2_int_device *s, enum v4l2_power power) + + mdelay(50); + ++ /* Set RESET_BAR to 0 */ ++ gpio_set_value(LEOPARD_RESET_GPIO, 0); ++ + /* Enable EXTCLK */ + isp_set_xclk(vdev->cam->isp, 24000000, CAM_USE_XCLKA); + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0075-omap3beagle-Add-camera-bootarg.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0075-omap3beagle-Add-camera-bootarg.patch new file mode 100644 index 0000000..fb1b049 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0075-omap3beagle-Add-camera-bootarg.patch @@ -0,0 +1,108 @@ +From b23565171bddf4f2e454f7857d52a5a79da00ba7 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre +Date: Thu, 22 Jul 2010 15:38:43 -0500 +Subject: [PATCH 75/75] omap3beagle: Add camera bootarg + +This adds a new 'camera' bootarg, with (so far) 2 new possible types: +- lbcmvga: Leopard Board Camera Module: MT9V113 VGA +- lbcm3m1: Leopard Board Camera Module: MT9T111 3MP + +Also, cleans up a little bit the current i2c2 bus init code. + +Signed-off-by: Sergio Aguirre +--- + arch/arm/mach-omap2/board-omap3beagle.c | 42 +++++++++++++++++++++++++------ + 1 files changed, 34 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c +index f93616b..2677b41 100644 +--- a/arch/arm/mach-omap2/board-omap3beagle.c ++++ b/arch/arm/mach-omap2/board-omap3beagle.c +@@ -89,6 +89,7 @@ extern struct mt9t112_platform_data mt9t112_pdata; + #define NAND_BLOCK_SIZE SZ_128K + + char expansionboard_name[16]; ++char cameraboard_name[16]; + + #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE) + +@@ -595,13 +596,16 @@ static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = { + static struct i2c_board_info __initdata beagle_zippy_i2c2_boardinfo[] = {}; + #endif + +-static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = { ++static struct i2c_board_info __initdata beagle_lbcmvga_i2c2_boardinfo[] = { + #if defined(CONFIG_VIDEO_MT9V113) || defined(CONFIG_VIDEO_MT9V113_MODULE) + { + I2C_BOARD_INFO("mt9v113", MT9V113_I2C_ADDR), + .platform_data = &mt9v113_pdata, + }, + #endif ++}; ++ ++static struct i2c_board_info __initdata beagle_lbcm3m1_i2c2_boardinfo[] = { + #if defined(CONFIG_VIDEO_MT9T112) || defined(CONFIG_VIDEO_MT9T112_MODULE) + { + I2C_BOARD_INFO("mt9t112", MT9T112_I2C_ADDR), +@@ -614,15 +618,27 @@ static int __init omap3_beagle_i2c_init(void) + { + omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo, + ARRAY_SIZE(beagle_i2c1_boardinfo)); +- if(!strcmp(expansionboard_name, "zippy") || !strcmp(expansionboard_name, "zippy2")) +- { +- printk(KERN_INFO "Beagle expansionboard: registering i2c2 bus for zippy/zippy2\n"); ++ ++ 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)); ++ } else { ++ if (!strcmp(cameraboard_name, "lbcmvga")) { ++ printk(KERN_INFO "Beagle cameraboard:" ++ " registering i2c2 bus for lbcmvga\n"); ++ omap_register_i2c_bus(2, 400, beagle_lbcmvga_i2c2_boardinfo, ++ ARRAY_SIZE(beagle_lbcmvga_i2c2_boardinfo)); ++ } else if (!strcmp(cameraboard_name, "lbcm3m1")) { ++ printk(KERN_INFO "Beagle cameraboard:" ++ " registering i2c2 bus for lbcm3m1\n"); ++ omap_register_i2c_bus(2, 400, beagle_lbcm3m1_i2c2_boardinfo, ++ ARRAY_SIZE(beagle_lbcm3m1_i2c2_boardinfo)); ++ } else { ++ omap_register_i2c_bus(2, 400, NULL, 0); ++ } + } + /* Bus 3 is attached to the DVI port where devices like the pico DLP + * projector don't work reliably with 400kHz */ +@@ -825,6 +841,15 @@ static int __init expansionboard_setup(char *str) + return 0; + } + ++static int __init cameraboard_setup(char *str) ++{ ++ if (!str) ++ return -EINVAL; ++ strncpy(cameraboard_name, str, 16); ++ printk(KERN_INFO "Beagle cameraboard: %s\n", cameraboard_name); ++ return 0; ++} ++ + static void __init omap3_beagle_init(void) + { + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); +@@ -915,6 +940,7 @@ static void __init omap3_beagle_map_io(void) + } + + early_param("buddy", expansionboard_setup); ++early_param("camera", cameraboard_setup); + + MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") + /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/dm37x-evm/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/dm37x-evm/defconfig new file mode 100644 index 0000000..8f1868d --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/dm37x-evm/defconfig @@ -0,0 +1,2024 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Fri Jul 9 10:08:46 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# 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_AUDIT 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=14 +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_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_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=m +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# 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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +CONFIG_OMAP_SMARTREFLEX=y +# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_MCBSP=y +# CONFIG_OMAP_MBOX_FWK is not set +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=y +# CONFIG_OMAP_LL_DEBUG_UART2 is not set +# CONFIG_OMAP_LL_DEBUG_UART3 is not set +# CONFIG_OMAP_LL_DEBUG_NONE is not set +# CONFIG_OMAP_PM_NONE is not set +CONFIG_OMAP_PM_NOOP=y +# CONFIG_OMAP_PM_SRF is not set +CONFIG_ARCH_OMAP34XX=y +CONFIG_ARCH_OMAP3430=y +CONFIG_OMAP_PACKAGE_CBB=y + +# +# OMAP Board Type +# +# CONFIG_MACH_OMAP3_BEAGLE is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +# CONFIG_USER_L2_PLE is not set +# CONFIG_USER_PMON is not set +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_HZ=128 +# CONFIG_THUMB2_KERNEL is not set +CONFIG_AEABI=y +# 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_LEDS is not set +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=" debug " +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Power Management +# +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 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_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# 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 +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set +# CONFIG_LIB80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +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_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_TESTS is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_OMAP_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_OMAP2=y +# CONFIG_MTD_NAND_OMAP_PREFETCH 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_ALAUDA is not set +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +CONFIG_MTD_ONENAND_OMAP2=y +# CONFIG_MTD_ONENAND_OTP is not set +# CONFIG_MTD_ONENAND_2X_PROGRAM is not set +# CONFIG_MTD_ONENAND_SIM is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set + +# +# 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=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_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_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_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_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 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +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 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_WLAN=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_HOSTAP is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# 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=y +# CONFIG_USB_NET_AX8817X is not set +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_DM9601=y +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# 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_SPARSEKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_MATRIX 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=y +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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 is not set +# 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 + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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_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 is not set + +# +# Multifunction device drivers +# +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_TWL4030_POWER is not set +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 +# 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=y +CONFIG_VIDEO_V4L2_COMMON=y +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +# CONFIG_DVB_CORE is not set +CONFIG_VIDEO_MEDIA=y + +# +# Multimedia drivers +# +# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_TUNER=y +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=y +CONFIG_MEDIA_TUNER_TDA8290=y +CONFIG_MEDIA_TUNER_TDA9887=y +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_TEA5767=y +CONFIG_MEDIA_TUNER_MT20XX=y +CONFIG_MEDIA_TUNER_XC2028=y +CONFIG_MEDIA_TUNER_XC5000=y +CONFIG_MEDIA_TUNER_MC44S803=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_SG=y +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 + +# +# 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 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_WM8775 is not set +# 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 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_MT9P012 is not set +# 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 is not set +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_SAA7191 is not set +CONFIG_VIDEO_TVP514X=y +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_CX25840 is not set + +# +# MPEG video encoders +# +# CONFIG_VIDEO_CX2341X is not set + +# +# 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 is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +CONFIG_TI_MEDIA=y +# CONFIG_VIDEO_VPSS_SYSTEM is not set +# CONFIG_VIDEO_VPFE_CAPTURE is not set +CONFIG_VIDEO_OMAP2_VOUT=y +CONFIG_VIDEO_OMAP3=y +CONFIG_VIDEO_OMAP3_ISP=y +# CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER is not set +CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=y +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_CX231XX is not set +# CONFIG_VIDEO_USBVISION is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_QUICKCAM_MESSENGER is not set +# CONFIG_USB_ET61X251 is not set +# CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_ZC0301 is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_PWC_INPUT_EVDEV is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +# CONFIG_RADIO_ADAPTERS is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=m +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 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_VIRTUAL 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_OMAP2_VRAM=y +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_VRAM_SIZE=4 +# CONFIG_OMAP2_DSS_DEBUG_SUPPORT is not set +# 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=1 +CONFIG_FB_OMAP2=y +# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set +# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set +CONFIG_FB_OMAP2_NUM_FBS=1 + +# +# 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 + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +# CONFIG_SOUND_OSS_CORE is not set +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 is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_HRTIMER is not set +# 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 is not set +# 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 is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_CAIAQ is not set +CONFIG_SND_SOC=y +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_OMAP3EVM=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 is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER 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=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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_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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +CONFIG_USB_MUSB_DEBUG=y + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_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_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +CONFIG_USB_TEST=y +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +# 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_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_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_AUDIO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_MASS_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_G_MULTI is not set + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +# CONFIG_TWL4030_USB is not set +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# 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 is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=y +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# 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 is not set + +# +# TI VLYNQ +# +# CONFIG_STAGING 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_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS 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_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 + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS 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_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_LOCKD=y +CONFIG_LOCKD_V4=y +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 + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS 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 is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_SCHED_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=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_OC_ETM is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY 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_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +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 + +# +# 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_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +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_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch new file mode 100644 index 0000000..8988fd8 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch @@ -0,0 +1,62 @@ +From 0031d3fb2d067f4c46e434f5f5c6c14cef2a83a3 Mon Sep 17 00:00:00 2001 +From: Tim Yamin +Date: Sat, 11 Apr 2009 13:05:21 -0700 +Subject: [PATCH 01/17] ARM: OMAP: add spi platform devices + +--- + arch/arm/mach-omap2/devices.c | 32 ++++++++++++++++++++++++++++++++ + 1 files changed, 32 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c +index 18ad931..ae67ada 100644 +--- a/arch/arm/mach-omap2/devices.c ++++ b/arch/arm/mach-omap2/devices.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -373,6 +374,37 @@ static struct platform_device omap2_mcspi4 = { + .platform_data = &omap2_mcspi4_config, + }, + }; ++ ++static struct spi_gpio_platform_data spi3_gpio_platform_data = { ++ .miso = 132, ++ .mosi = 131, ++ .sck = 130, ++ .num_chipselect = 1, ++}; ++ ++static struct platform_device spi3_gpio = { ++ .name = "spi_gpio", ++ .id = 3, ++ .dev = { ++ .platform_data = &spi3_gpio_platform_data, ++ }, ++}; ++ ++static struct spi_gpio_platform_data spi4_gpio_platform_data = { ++ .miso = 159, ++ .mosi = 158, ++ .sck = 156, ++ .num_chipselect = 1, ++}; ++ ++static struct platform_device spi4_gpio = { ++ .name = "spi_gpio", ++ .id = 4, ++ .dev = { ++ .platform_data = &spi4_gpio_platform_data, ++ }, ++}; ++ + #endif + + #ifdef CONFIG_ARCH_OMAP4 +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch new file mode 100644 index 0000000..f9c7702 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch @@ -0,0 +1,683 @@ +From 0c804b06c04a14da575d592c89408537c21fb26b Mon Sep 17 00:00:00 2001 +From: Tim Yamin +Date: Tue, 23 Mar 2010 09:52:10 +0100 +Subject: [PATCH 02/17] MMA7455L accelerometer driver + +--- + drivers/input/misc/Kconfig | 9 + + drivers/input/misc/Makefile | 1 + + drivers/input/misc/mma7455l.c | 615 +++++++++++++++++++++++++++++++++++++++++ + include/linux/mma7455l.h | 11 + + 4 files changed, 636 insertions(+), 0 deletions(-) + create mode 100644 drivers/input/misc/mma7455l.c + create mode 100644 include/linux/mma7455l.h + +diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig +index 16ec523..d35ae19 100644 +--- a/drivers/input/misc/Kconfig ++++ b/drivers/input/misc/Kconfig +@@ -319,4 +319,13 @@ config INPUT_PCAP + To compile this driver as a module, choose M here: the + module will be called pcap_keys. + ++config INPUT_MMA7455L ++ tristate "Freescale MMA7455L 3-axis accelerometer" ++ depends on SPI_MASTER ++ help ++ SPI driver for the Freescale MMA7455L 3-axis accelerometer. ++ ++ The userspace interface is a 3-axis (X/Y/Z) relative movement ++ Linux input device, reporting REL_[XYZ] events. ++ + endif +diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile +index a8b8485..75b8baa 100644 +--- a/drivers/input/misc/Makefile ++++ b/drivers/input/misc/Makefile +@@ -30,4 +30,5 @@ obj-$(CONFIG_INPUT_WINBOND_CIR) += winbond-cir.o + obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o + obj-$(CONFIG_INPUT_WM831X_ON) += wm831x-on.o + obj-$(CONFIG_INPUT_YEALINK) += yealink.o ++obj-$(CONFIG_INPUT_MMA7455L) += mma7455l.o + +diff --git a/drivers/input/misc/mma7455l.c b/drivers/input/misc/mma7455l.c +new file mode 100644 +index 0000000..b907cc6 +--- /dev/null ++++ b/drivers/input/misc/mma7455l.c +@@ -0,0 +1,615 @@ ++/* Linux kernel driver for the Freescale MMA7455L 3-axis accelerometer ++ * ++ * Copyright (C) 2009 by Always Innovating, Inc. ++ * Author: Gregoire Gentil ++ * Author: Tim Yamin ++ * All rights reserved. ++ * ++ * 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. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++ ++/* ++ * What this driver doesn't yet support: ++ * ++ * - I2C ++ * - INT2 handling ++ * - Pulse detection (and the sysctls to control it) ++ * - 10-bit measurement ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#define MMA7455L_WHOAMI_MAGIC 0x55 ++ ++enum mma7455l_reg { ++ MMA7455L_REG_XOUTL = 0x00, ++ MMA7455L_REG_XOUTH = 0x01, ++ MMA7455L_REG_YOUTL = 0x02, ++ MMA7455L_REG_YOUTH = 0x03, ++ MMA7455L_REG_ZOUTL = 0x04, ++ MMA7455L_REG_ZOUTH = 0x05, ++ MMA7455L_REG_XOUT8 = 0x06, ++ MMA7455L_REG_YOUT8 = 0x07, ++ MMA7455L_REG_ZOUT8 = 0x08, ++ MMA7455L_REG_STATUS = 0x09, ++ MMA7455L_REG_DETSRC = 0x0a, ++ MMA7455L_REG_TOUT = 0x0b, ++ MMA7455L_REG_RESERVED1 = 0x0c, ++ MMA7455L_REG_I2CAD = 0x0d, ++ MMA7455L_REG_USRINF = 0x0e, ++ MMA7455L_REG_WHOAMI = 0x0f, ++ MMA7455L_REG_XOFFL = 0x10, ++ MMA7455L_REG_XOFFH = 0x11, ++ MMA7455L_REG_YOFFL = 0x12, ++ MMA7455L_REG_YOFFH = 0x13, ++ MMA7455L_REG_ZOFFL = 0x14, ++ MMA7455L_REG_ZOFFH = 0x15, ++ MMA7455L_REG_MCTL = 0x16, ++ MMA7455L_REG_INTRST = 0x17, ++ MMA7455L_REG_CTL1 = 0x18, ++ MMA7455L_REG_CTL2 = 0x19, ++ MMA7455L_REG_LDTH = 0x1a, ++ MMA7455L_REG_PDTH = 0x1b, ++ MMA7455L_REG_PW = 0x1c, ++ MMA7455L_REG_LT = 0x1d, ++ MMA7455L_REG_TW = 0x1e, ++ MMA7455L_REG_RESERVED2 = 0x1f, ++}; ++ ++enum mma7455l_reg_status { ++ MMA7455L_STATUS_XDA = 0x08, ++ MMA7455L_STATUS_YDA = 0x10, ++ MMA7455L_STATUS_ZDA = 0x20, ++}; ++ ++enum mma7455l_mode { ++ MMA7455L_MODE_STANDBY = 0, ++ MMA7455L_MODE_MEASUREMENT = 1, ++ MMA7455L_MODE_LEVELDETECTION = 0x42, /* Set DRPD to on */ ++ MMA7455L_MODE_PULSEDETECTION = 0x43, /* Set DRPD to on */ ++ MMA7455L_MODE_MASK = 0x43, ++}; ++ ++enum mma7455l_gselect { ++ MMA7455L_GSELECT_8 = 0x0, ++ MMA7455L_GSELECT_2 = 0x4, ++ MMA7455L_GSELECT_4 = 0x8, ++ MMA7455L_GSELECT_MASK = 0xC, ++}; ++ ++/* FIXME */ ++#define MMA7455L_F_FS 0x0020 /* ADC full scale */ ++ ++struct mma7455l_info { ++ struct spi_device *spi_dev; ++ struct input_dev *input_dev; ++ struct mutex lock; ++ struct delayed_work work; ++ ++ u8 mode; ++ u8 gSelect; ++ ++ u8 flags; ++ u8 working; ++}; ++ ++/* lowlevel register access functions */ ++ ++#define WRITE_BIT (1 << 7) ++#define ADDR_SHIFT 1 ++ ++static inline u_int8_t __reg_read(struct mma7455l_info *mma, u_int8_t reg) ++{ ++ int rc; ++ u_int8_t cmd; ++ ++ cmd = ((reg & 0x3f) << ADDR_SHIFT); ++ rc = spi_w8r8(mma->spi_dev, cmd); ++ ++ return rc; ++} ++ ++static u_int8_t reg_read(struct mma7455l_info *mma, u_int8_t reg) ++{ ++ u_int8_t ret; ++ ++ mutex_lock(&mma->lock); ++ ret = __reg_read(mma, reg); ++ mutex_unlock(&mma->lock); ++ ++ return ret; ++} ++ ++static s16 __reg_read_10(struct mma7455l_info *mma, u8 reg1, u8 reg2) ++{ ++ u8 v1, v2; ++ ++ v1 = __reg_read(mma, reg1); ++ v2 = __reg_read(mma, reg2); ++ ++ return (v2 & 0x4) << 13 | (v2 & 0x3) << 8 | v1; ++} ++ ++static inline int __reg_write(struct mma7455l_info *mma, u_int8_t reg, u_int8_t val) ++{ ++ u_int8_t buf[2]; ++ ++ buf[0] = ((reg & 0x3f) << ADDR_SHIFT) | WRITE_BIT; ++ buf[1] = val; ++ ++ return spi_write(mma->spi_dev, buf, sizeof(buf)); ++} ++ ++static int reg_write(struct mma7455l_info *mma, u_int8_t reg, u_int8_t val) ++{ ++ int ret; ++ ++ mutex_lock(&mma->lock); ++ ret = __reg_write(mma, reg, val); ++ mutex_unlock(&mma->lock); ++ ++ return ret; ++} ++ ++static s16 __reg_write_10(struct mma7455l_info *mma, u8 reg1, u8 reg2, s16 value) ++{ ++ int ret; ++ u8 v1, v2; ++ ++ v1 = value & 0xFF; ++ if(value < 0) ++ v2 = ((value >> 8) & 0x3) | 0x4; ++ else ++ v2 = 0; ++ ++ ret = __reg_write(mma, reg1, v1); ++ ret = __reg_write(mma, reg2, v2); ++ return ret; ++} ++ ++static void mma7455l_work(struct work_struct *work) ++{ ++ struct mma7455l_info *mma = ++ container_of(work, struct mma7455l_info, work.work); ++ ++ s8 val; ++ mma->working = 1; ++ ++ /* FIXME: 10 bit accuracy? */ ++ if (!(mma->flags & MMA7455L_STATUS_XDA)) { ++ val = reg_read(mma, MMA7455L_REG_XOUT8); ++ input_report_abs(mma->input_dev, ABS_X, val); ++ } ++ if (!(mma->flags & MMA7455L_STATUS_YDA)) { ++ val = reg_read(mma, MMA7455L_REG_YOUT8); ++ input_report_abs(mma->input_dev, ABS_Y, val); ++ } ++ if (!(mma->flags & MMA7455L_STATUS_ZDA)) { ++ val = reg_read(mma, MMA7455L_REG_ZOUT8); ++ input_report_abs(mma->input_dev, ABS_Z, val); ++ } ++ ++ mma->working = 0; ++ input_sync(mma->input_dev); ++ put_device(&mma->spi_dev->dev); ++ ++ /* Enable IRQ and clear out interrupt */ ++ reg_write(mma, MMA7455L_REG_INTRST, 0x3); ++ reg_write(mma, MMA7455L_REG_INTRST, 0x0); ++ enable_irq(mma->spi_dev->irq); ++} ++ ++static void mma7455l_schedule_work(struct mma7455l_info *mma) ++{ ++ int status; ++ ++ get_device(&mma->spi_dev->dev); ++ status = schedule_delayed_work(&mma->work, HZ / 10); ++} ++ ++static irqreturn_t mma7455l_interrupt(int irq, void *_mma) ++{ ++ struct mma7455l_info *mma = _mma; ++ ++ /* Disable any further interrupts until we have processed ++ * the current one */ ++ disable_irq_nosync(mma->spi_dev->irq); ++ ++ mma7455l_schedule_work(mma); ++ return IRQ_HANDLED; ++} ++ ++/* sysfs */ ++ ++static void get_mode(struct mma7455l_info *mma, u8 *mode, u8 *gSelect) ++{ ++ u8 tmp = reg_read(mma, MMA7455L_REG_MCTL); ++ ++ *mode = tmp & MMA7455L_MODE_MASK; ++ *gSelect = tmp & MMA7455L_GSELECT_MASK; ++} ++ ++static void set_mode(struct mma7455l_info *mma, u8 mode, u8 gSelect) ++{ ++ reg_write(mma, MMA7455L_REG_MCTL, mode | gSelect); ++} ++ ++static void update_mode(struct mma7455l_info *mma, u8 mode, u8 gSelect) ++{ ++ mma->mode = mode; ++ mma->gSelect = gSelect; ++ ++ reg_write(mma, MMA7455L_REG_MCTL, mma->mode | mma->gSelect); ++} ++ ++static ssize_t show_measure(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ s8 x, y, z; ++ u8 old_Mode, old_gSelect; ++ ++ get_mode(mma, &old_Mode, &old_gSelect); ++ set_mode(mma, MMA7455L_MODE_MEASUREMENT, MMA7455L_GSELECT_2); ++ ++ while (reg_read(mma, MMA7455L_REG_STATUS) == 0) { ++ msleep(10); ++ } ++ ++ x = reg_read(mma, MMA7455L_REG_XOUT8); ++ y = reg_read(mma, MMA7455L_REG_YOUT8); ++ z = reg_read(mma, MMA7455L_REG_ZOUT8); ++ ++ set_mode(mma, old_Mode, old_gSelect); ++ return sprintf(buf, "%d %d %d\n", x, y, z); ++} ++ ++static ssize_t show_mode(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ switch(mma->mode) ++ { ++ case MMA7455L_MODE_STANDBY: ++ return sprintf(buf, "Standby\n"); ++ break; ++ case MMA7455L_MODE_MEASUREMENT: ++ return sprintf(buf, "Measurement\n"); ++ break; ++ case MMA7455L_MODE_LEVELDETECTION: ++ return sprintf(buf, "Level Detection\n"); ++ break; ++ case MMA7455L_MODE_PULSEDETECTION: ++ return sprintf(buf, "Pulse Detection\n"); ++ break; ++ } ++ ++ return sprintf(buf, "Unknown mode!\n"); ++} ++ ++static ssize_t show_gSelect(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ switch(mma->gSelect) ++ { ++ case MMA7455L_GSELECT_8: ++ return sprintf(buf, "8\n"); ++ break; ++ case MMA7455L_GSELECT_4: ++ return sprintf(buf, "4\n"); ++ break; ++ case MMA7455L_GSELECT_2: ++ return sprintf(buf, "2\n"); ++ break; ++ } ++ ++ return sprintf(buf, "Unknown gSelect!\n"); ++} ++ ++static ssize_t show_level_threshold(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ return sprintf(buf, "%u\n", reg_read(mma, MMA7455L_REG_LDTH)); ++} ++ ++static ssize_t show_calibration(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ s16 x, y, z; ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ mutex_lock(&mma->lock); ++ x = __reg_read_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH); ++ y = __reg_read_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH); ++ z = __reg_read_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH); ++ mutex_unlock(&mma->lock); ++ ++ return sprintf(buf, "%d %d %d\n", x, y, z); ++} ++ ++static ssize_t write_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ if (!strncmp(buf, "Standby", count)) ++ update_mode(mma, MMA7455L_MODE_STANDBY, mma->gSelect); ++ else if (!strncmp(buf, "Measurement", count)) ++ update_mode(mma, MMA7455L_MODE_MEASUREMENT, mma->gSelect); ++ else if (!strncmp(buf, "Level Detection", count)) ++ update_mode(mma, MMA7455L_MODE_LEVELDETECTION, mma->gSelect); ++ else if (!strncmp(buf, "Pulse Detection", count)) ++ update_mode(mma, MMA7455L_MODE_PULSEDETECTION, mma->gSelect); ++ ++ return count; ++} ++ ++static ssize_t write_gSelect(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long v; ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ if(strict_strtoul(buf, 10, &v) == 0) ++ { ++ switch(v) ++ { ++ case 8: ++ update_mode(mma, mma->mode, MMA7455L_GSELECT_8); ++ break; ++ case 4: ++ update_mode(mma, mma->mode, MMA7455L_GSELECT_4); ++ break; ++ case 2: ++ update_mode(mma, mma->mode, MMA7455L_GSELECT_2); ++ break; ++ default: ++ return -EINVAL; ++ break; ++ } ++ return count; ++ } ++ ++ return -EINVAL; ++} ++ ++static ssize_t write_level_threshold(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ unsigned long v; ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ if(strict_strtoul(buf, 10, &v) == 0) ++ { ++ if(v <= 0xFF) { ++ reg_write(mma, MMA7455L_REG_LDTH, v); ++ return count; ++ } else ++ return -EINVAL; ++ } ++ ++ return -EINVAL; ++} ++ ++static ssize_t write_calibration(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) ++{ ++ int x, y, z; ++ struct mma7455l_info *mma = dev_get_drvdata(dev); ++ ++ if (sscanf(buf, "%d %d %d", &x, &y, &z) == 3) ++ { ++ mutex_lock(&mma->lock); ++ __reg_write_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH, x); ++ __reg_write_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH, y); ++ __reg_write_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH, z); ++ mutex_unlock(&mma->lock); ++ ++ return count; ++ } ++ ++ return -EINVAL; ++} ++ ++static DEVICE_ATTR(measure, S_IRUGO, show_measure, NULL); ++static DEVICE_ATTR(mode, S_IRUGO | S_IWUGO, show_mode, write_mode); ++static DEVICE_ATTR(gSelect, S_IRUGO | S_IWUGO, show_gSelect, write_gSelect); ++static DEVICE_ATTR(level_threshold, S_IRUGO | S_IWUGO, show_level_threshold, write_level_threshold); ++static DEVICE_ATTR(calibration, S_IRUGO | S_IWUGO, show_calibration, write_calibration); ++ ++static struct attribute *mma7455l_sysfs_entries[] = { ++ &dev_attr_measure.attr, ++ &dev_attr_mode.attr, ++ &dev_attr_gSelect.attr, ++ &dev_attr_level_threshold.attr, ++ &dev_attr_calibration.attr, ++ NULL ++}; ++ ++static struct attribute_group mma7455l_attr_group = { ++ .attrs = mma7455l_sysfs_entries, ++}; ++ ++/* input device handling and driver core interaction */ ++static int mma7455l_input_open(struct input_dev *inp) ++{ ++ struct mma7455l_info *mma = input_get_drvdata(inp); ++ if(mma->mode == MMA7455L_MODE_STANDBY) ++ update_mode(mma, MMA7455L_MODE_MEASUREMENT, mma->gSelect); ++ ++ return 0; ++} ++ ++static void mma7455l_input_close(struct input_dev *inp) ++{ ++ struct mma7455l_info *mma = input_get_drvdata(inp); ++ update_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); ++} ++ ++static int __devinit mma7455l_probe(struct spi_device *spi) ++{ ++ int rc; ++ struct mma7455l_info *mma; ++ struct mma7455l_platform_data *pdata = spi->dev.platform_data; ++ u_int8_t wai; ++ ++ mma = kzalloc(sizeof(*mma), GFP_KERNEL); ++ if (!mma) ++ return -ENOMEM; ++ ++ mutex_init(&mma->lock); ++ INIT_DELAYED_WORK(&mma->work, mma7455l_work); ++ mma->spi_dev = spi; ++ mma->flags = mma->working = 0; ++ ++ spi_set_drvdata(spi, mma); ++ ++ rc = spi_setup(spi); ++ if (rc < 0) { ++ printk(KERN_ERR "mma7455l error durign spi_setup of mma7455l driver\n"); ++ dev_set_drvdata(&spi->dev, NULL); ++ kfree(mma); ++ return rc; ++ } ++ ++ wai = reg_read(mma, MMA7455L_REG_WHOAMI); ++ if (wai != MMA7455L_WHOAMI_MAGIC) { ++ printk(KERN_ERR "mma7455l unknown whoami signature 0x%02x\n", wai); ++ dev_set_drvdata(&spi->dev, NULL); ++ kfree(mma); ++ return -ENODEV; ++ } ++ ++ rc = request_irq(mma->spi_dev->irq, mma7455l_interrupt, IRQF_TRIGGER_HIGH, ++ "mma7455l", mma); ++ if (rc < 0) { ++ dev_err(&spi->dev, "mma7455l error requesting IRQ %d\n", ++ mma->spi_dev->irq); ++ /* FIXME */ ++ return rc; ++ } ++ ++ rc = sysfs_create_group(&spi->dev.kobj, &mma7455l_attr_group); ++ if (rc) { ++ dev_err(&spi->dev, "error creating sysfs group\n"); ++ return rc; ++ } ++ ++ /* initialize input layer details */ ++ mma->input_dev = input_allocate_device(); ++ if (!mma->input_dev) { ++ dev_err(&spi->dev, "mma7455l Unable to allocate input device\n"); ++ /* FIXME */ ++ } ++ ++ set_bit(EV_ABS, mma->input_dev->evbit); ++ set_bit(ABS_X, mma->input_dev->absbit); ++ set_bit(ABS_Y, mma->input_dev->absbit); ++ set_bit(ABS_Z, mma->input_dev->absbit); ++ ++ input_set_drvdata(mma->input_dev, mma); ++ mma->input_dev->name = "MMA7455L"; ++ mma->input_dev->open = mma7455l_input_open; ++ mma->input_dev->close = mma7455l_input_close; ++ ++ rc = input_register_device(mma->input_dev); ++ if(!rc) ++ { ++ update_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); ++ ++ mutex_lock(&mma->lock); ++ __reg_write_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH, pdata->calibration_x); ++ __reg_write_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH, pdata->calibration_y); ++ __reg_write_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH, pdata->calibration_z); ++ mutex_unlock(&mma->lock); ++ ++ return 0; ++ } ++ ++ input_free_device(mma->input_dev); ++ return rc; ++} ++ ++static int __devexit mma7455l_remove(struct spi_device *spi) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); ++ ++ sysfs_remove_group(&spi->dev.kobj, &mma7455l_attr_group); ++ input_unregister_device(mma->input_dev); ++ dev_set_drvdata(&spi->dev, NULL); ++ kfree(mma); ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int mma7455l_suspend(struct spi_device *spi, pm_message_t message) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); ++ get_mode(mma, &mma->mode, &mma->gSelect); ++ set_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); ++ ++ return 0; ++} ++ ++static int mma7455l_resume(struct spi_device *spi) ++{ ++ struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); ++ update_mode(mma, mma->mode, mma->gSelect); ++ ++ return 0; ++} ++#else ++#define mma7455l_suspend NULL ++#define mma7455l_resume NULL ++#endif ++ ++static struct spi_driver mma7455l_driver = { ++ .driver = { ++ .name = "mma7455l", ++ .owner = THIS_MODULE, ++ }, ++ ++ .probe = mma7455l_probe, ++ .remove = __devexit_p(mma7455l_remove), ++ .suspend = mma7455l_suspend, ++ .resume = mma7455l_resume, ++}; ++ ++static int __init mma7455l_init(void) ++{ ++ return spi_register_driver(&mma7455l_driver); ++} ++ ++static void __exit mma7455l_exit(void) ++{ ++ spi_unregister_driver(&mma7455l_driver); ++} ++ ++MODULE_AUTHOR("Gregoire Gentil "); ++MODULE_LICENSE("GPL"); ++ ++module_init(mma7455l_init); ++module_exit(mma7455l_exit); +diff --git a/include/linux/mma7455l.h b/include/linux/mma7455l.h +new file mode 100644 +index 0000000..12ab50a +--- /dev/null ++++ b/include/linux/mma7455l.h +@@ -0,0 +1,11 @@ ++#ifndef _LINUX_MMA7455L_H ++#define _LINUX_MMA7455L_H ++ ++struct mma7455l_platform_data { ++ /* Calibration offsets */ ++ s16 calibration_x; ++ s16 calibration_y; ++ s16 calibration_z; ++}; ++ ++#endif /* _LINUX_MMA7455L_H */ +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch new file mode 100644 index 0000000..f8b307e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch @@ -0,0 +1,53 @@ +From 6837800d92947d25e263bf041ebe7db4e804af68 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 11:41:17 +0100 +Subject: [PATCH 03/17] bq27x00_battery: remove error message output + +--- + drivers/power/bq27x00_battery.c | 5 ----- + 1 files changed, 0 insertions(+), 5 deletions(-) + +diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c +index 62bb981..6935bb6 100644 +--- a/drivers/power/bq27x00_battery.c ++++ b/drivers/power/bq27x00_battery.c +@@ -93,7 +93,6 @@ static int bq27x00_battery_temperature(struct bq27x00_device_info *di) + + ret = bq27x00_read(BQ27x00_REG_TEMP, &temp, 0, di); + if (ret) { +- dev_err(di->dev, "error reading temperature\n"); + return ret; + } + +@@ -111,7 +110,6 @@ static int bq27x00_battery_voltage(struct bq27x00_device_info *di) + + ret = bq27x00_read(BQ27x00_REG_VOLT, &volt, 0, di); + if (ret) { +- dev_err(di->dev, "error reading voltage\n"); + return ret; + } + +@@ -131,12 +129,10 @@ static int bq27x00_battery_current(struct bq27x00_device_info *di) + + ret = bq27x00_read(BQ27x00_REG_AI, &curr, 0, di); + if (ret) { +- dev_err(di->dev, "error reading current\n"); + return 0; + } + ret = bq27x00_read(BQ27x00_REG_FLAGS, &flags, 0, di); + if (ret < 0) { +- dev_err(di->dev, "error reading flags\n"); + return 0; + } + if ((flags & (1 << 7)) != 0) { +@@ -157,7 +153,6 @@ static int bq27x00_battery_rsoc(struct bq27x00_device_info *di) + + ret = bq27x00_read(BQ27x00_REG_RSOC, &rsoc, 1, di); + if (ret) { +- dev_err(di->dev, "error reading relative State-of-Charge\n"); + return ret; + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch new file mode 100644 index 0000000..759525f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch @@ -0,0 +1,65 @@ +From 829d500667448b7ea9465615261a988adc3aa645 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 11:42:45 +0100 +Subject: [PATCH 04/17] bq27x00_battery: add charged gpio + +--- + drivers/power/bq27x00_battery.c | 21 +++++++++++++++++++++ + 1 files changed, 21 insertions(+), 0 deletions(-) + +diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c +index 6935bb6..4b80f59 100644 +--- a/drivers/power/bq27x00_battery.c ++++ b/drivers/power/bq27x00_battery.c +@@ -28,6 +28,7 @@ + + #define DRIVER_VERSION "1.0.0" + ++#define BQ27x00_REG_MODE 0x00 + #define BQ27x00_REG_TEMP 0x06 + #define BQ27x00_REG_VOLT 0x08 + #define BQ27x00_REG_RSOC 0x0B /* Relative State-of-Charge */ +@@ -65,6 +66,7 @@ static enum power_supply_property bq27x00_battery_props[] = { + POWER_SUPPLY_PROP_CURRENT_NOW, + POWER_SUPPLY_PROP_CAPACITY, + POWER_SUPPLY_PROP_TEMP, ++ POWER_SUPPLY_PROP_ONLINE, + }; + + /* +@@ -83,6 +85,22 @@ static int bq27x00_read(u8 reg, int *rt_value, int b_single, + } + + /* ++ * Return the GPIO status (0 or 1) ++ * Or < 0 if something fails. ++ */ ++static int bq27x00_gpio(struct bq27x00_device_info *di) ++{ ++ int ret; ++ int gpio = 0; ++ ++ ret = bq27x00_read(BQ27x00_REG_MODE, &gpio, 0, di); ++ if (ret) ++ return ret; ++ ++ return (gpio & 0x40) >> 6; ++} ++ ++/* + * Return the battery temperature in Celsius degrees + * Or < 0 if something fails. + */ +@@ -184,6 +202,9 @@ static int bq27x00_battery_get_property(struct power_supply *psy, + case POWER_SUPPLY_PROP_TEMP: + val->intval = bq27x00_battery_temperature(di); + break; ++ case POWER_SUPPLY_PROP_ONLINE: ++ val->intval = bq27x00_gpio(di); ++ break; + default: + return -EINVAL; + } +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch new file mode 100644 index 0000000..f15e0a2 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch @@ -0,0 +1,99 @@ +From e00ae0c0fa35b4b67bbc905581c2c7bde0e29901 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 13:50:38 +0100 +Subject: [PATCH 05/17] adf7846: add more debugging + +--- + drivers/input/touchscreen/ads7846.c | 73 +++++++++++++++++++++++++++++++++++ + 1 files changed, 73 insertions(+), 0 deletions(-) + +diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c +index 45287ab..ebdeeeb 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -495,9 +495,82 @@ static ssize_t ads7846_disable_store(struct device *dev, + + static DEVICE_ATTR(disable, 0664, ads7846_disable_show, ads7846_disable_store); + ++static ssize_t show_debounce_max(struct device *dev, struct device_attribute *attr, char *buf) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ return sprintf(buf, "%u\n", ts->debounce_max); ++} ++ ++static ssize_t show_debounce_tol(struct device *dev, struct device_attribute *attr, char *buf) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ return sprintf(buf, "%u\n", ts->debounce_tol); ++} ++ ++static ssize_t show_debounce_rep(struct device *dev, struct device_attribute *attr, char *buf) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ return sprintf(buf, "%u\n", ts->debounce_rep); ++} ++ ++static ssize_t show_x_plate_ohms(struct device *dev, struct device_attribute *attr, char *buf) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ return sprintf(buf, "%u\n", ts->x_plate_ohms); ++} ++ ++static ssize_t write_debounce_max(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ unsigned long i; ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ ts->debounce_max = i; ++ return count; ++} ++ ++static ssize_t write_debounce_tol(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ unsigned long i; ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ ts->debounce_tol = i; ++ return count; ++} ++ ++static ssize_t write_debounce_rep(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ unsigned long i; ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ ts->debounce_rep = i; ++ return count; ++} ++ ++static ssize_t write_x_plate_ohms(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ unsigned long i; ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ ts->x_plate_ohms = i; ++ return count; ++} ++ ++static DEVICE_ATTR(debounce_max, S_IRUGO | S_IWUGO, show_debounce_max, write_debounce_max); ++static DEVICE_ATTR(debounce_tol, S_IRUGO | S_IWUGO, show_debounce_tol, write_debounce_tol); ++static DEVICE_ATTR(debounce_rep, S_IRUGO | S_IWUGO, show_debounce_rep, write_debounce_rep); ++static DEVICE_ATTR(x_plate_ohms, S_IRUGO | S_IWUGO, show_x_plate_ohms, write_x_plate_ohms); ++ + static struct attribute *ads784x_attributes[] = { + &dev_attr_pen_down.attr, + &dev_attr_disable.attr, ++ &dev_attr_debounce_max.attr, ++ &dev_attr_debounce_tol.attr, ++ &dev_attr_debounce_rep.attr, ++ &dev_attr_x_plate_ohms.attr, + NULL, + }; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch new file mode 100644 index 0000000..63a4ebb --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch @@ -0,0 +1,35 @@ +From 5f227b8aa6083437e2907ca621159228a4a24d9a Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 13:50:45 +0100 +Subject: [PATCH 06/17] ads7846: read max/mix x/y from pdata + +--- + drivers/input/touchscreen/ads7846.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c +index ebdeeeb..56b0ffd 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -604,6 +604,7 @@ static void ads7846_rx(void *ads) + { + struct ads7846 *ts = ads; + struct ads7846_packet *packet = ts->packet; ++ struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; + unsigned Rt; + u16 x, y, z1, z2; + +@@ -674,8 +675,8 @@ static void ads7846_rx(void *ads) + if (ts->swap_xy) + swap(x, y); + +- input_report_abs(input, ABS_X, x); +- input_report_abs(input, ABS_Y, y); ++ input_report_abs(input, ABS_X, pdata->x_max - x + pdata->x_min); ++ input_report_abs(input, ABS_Y, pdata->y_max - y + pdata->y_min); + input_report_abs(input, ABS_PRESSURE, ts->pressure_max - Rt); + + input_sync(input); +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch new file mode 100644 index 0000000..a69c783 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch @@ -0,0 +1,59 @@ +From 7330c695afad64eef62c525cb8e54913265a3b39 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 13:50:52 +0100 +Subject: [PATCH 07/17] ads7846: add settling delay to pdata + +--- + drivers/input/touchscreen/ads7846.c | 22 ++++++++++++++++++++++ + 1 files changed, 22 insertions(+), 0 deletions(-) + +diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c +index 56b0ffd..1d9f97c 100644 +--- a/drivers/input/touchscreen/ads7846.c ++++ b/drivers/input/touchscreen/ads7846.c +@@ -515,6 +515,26 @@ static ssize_t show_x_plate_ohms(struct device *dev, struct device_attribute *at + return sprintf(buf, "%u\n", ts->x_plate_ohms); + } + ++static ssize_t show_settle_delay_usecs(struct device *dev, struct device_attribute *attr, char *buf) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; ++ ++ return sprintf(buf, "%u\n", pdata->settle_delay_usecs); ++} ++ ++static ssize_t write_settle_delay_usecs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { ++ struct ads7846 *ts = dev_get_drvdata(dev); ++ struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; ++ ++ unsigned long i; ++ ++ if (strict_strtoul(buf, 10, &i)) ++ return -EINVAL; ++ ++ pdata->settle_delay_usecs = i; ++ return count; ++} ++ + static ssize_t write_debounce_max(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { + struct ads7846 *ts = dev_get_drvdata(dev); + unsigned long i; +@@ -563,6 +583,7 @@ static DEVICE_ATTR(debounce_max, S_IRUGO | S_IWUGO, show_debounce_max, write_deb + static DEVICE_ATTR(debounce_tol, S_IRUGO | S_IWUGO, show_debounce_tol, write_debounce_tol); + static DEVICE_ATTR(debounce_rep, S_IRUGO | S_IWUGO, show_debounce_rep, write_debounce_rep); + static DEVICE_ATTR(x_plate_ohms, S_IRUGO | S_IWUGO, show_x_plate_ohms, write_x_plate_ohms); ++static DEVICE_ATTR(settle_delay_usecs, S_IRUGO | S_IWUGO, show_settle_delay_usecs, write_settle_delay_usecs); + + static struct attribute *ads784x_attributes[] = { + &dev_attr_pen_down.attr, +@@ -571,6 +592,7 @@ static struct attribute *ads784x_attributes[] = { + &dev_attr_debounce_tol.attr, + &dev_attr_debounce_rep.attr, + &dev_attr_x_plate_ohms.attr, ++ &dev_attr_settle_delay_usecs.attr, + NULL, + }; + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch new file mode 100644 index 0000000..5d6ff3f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch @@ -0,0 +1,99 @@ +From 07396a332c4f3d6ed4ff498cb08d0338c98dc612 Mon Sep 17 00:00:00 2001 +From: Tim Yamin +Date: Mon, 20 Apr 2009 20:29:11 -0700 +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 +the display. This patch assumes that you rotate plane 0 before rotating +plane 1. Patch also corrects the scaling parameters so that the video is +displayed in the correct orientation (vertically, instead of horizontally) +when rotating by 90 / 270 degrees. + +Signed-off-by: Tim Yamin +--- + drivers/video/omap2/dss/dispc.c | 16 ++++++++++++---- + drivers/video/omap2/dss/manager.c | 2 +- + drivers/video/omap2/dss/overlay.c | 19 ++++++++++++++----- + 3 files changed, 27 insertions(+), 10 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index c6d5fc5..1b38c49 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -1685,10 +1685,18 @@ static int _dispc_setup_plane(enum omap_plane plane, + _dispc_set_pic_size(plane, width, height); + + if (plane != OMAP_DSS_GFX) { +- _dispc_set_scaling(plane, width, height, +- out_width, out_height, +- ilace, five_taps, fieldmode); +- _dispc_set_vid_size(plane, out_width, out_height); ++ if (rotation == 1 || rotation == 3) { ++ _dispc_set_scaling(plane, width, height, ++ out_height, out_width, ++ ilace, five_taps, fieldmode); ++ _dispc_set_vid_size(plane, out_height, out_width); ++ } else { ++ _dispc_set_scaling(plane, width, height, ++ out_width, out_height, ++ ilace, five_taps, fieldmode); ++ _dispc_set_vid_size(plane, out_width, out_height); ++ } ++ + _dispc_set_vid_color_conv(plane, cconv); + } + +diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c +index 27d9c46..7c62dea 100644 +--- a/drivers/video/omap2/dss/manager.c ++++ b/drivers/video/omap2/dss/manager.c +@@ -702,7 +702,7 @@ static int configure_overlay(enum omap_plane plane) + u16 outw, outh; + u16 x, y, w, h; + u32 paddr; +- int r; ++ int r, pos_x = 0, pos_y = 0; + + DSSDBGF("%d", plane); + +diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c +index b7f9a73..0bc0592 100644 +--- a/drivers/video/omap2/dss/overlay.c ++++ b/drivers/video/omap2/dss/overlay.c +@@ -374,6 +374,20 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev) + outh = info->out_height; + } + ++ if ((ovl->supported_modes & info->color_mode) == 0) { ++ DSSERR("overlay doesn't support mode %d\n", info->color_mode); ++ return -EINVAL; ++ } ++ ++ if (ovl->id != OMAP_DSS_GFX && (info->rotation == 1 || ++ info->rotation == 3)) { ++ if(outw > dh || outh > dw) ++ return -EINVAL; ++ ++ /* If coordinates are invalid, they will be clipped later... */ ++ return 0; ++ } ++ + if (dw < info->pos_x + outw) { + DSSDBG("check_overlay failed 1: %d < %d + %d\n", + dw, info->pos_x, outw); +@@ -386,11 +400,6 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev) + return -EINVAL; + } + +- if ((ovl->supported_modes & info->color_mode) == 0) { +- DSSERR("overlay doesn't support mode %d\n", info->color_mode); +- return -EINVAL; +- } +- + return 0; + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch b/recipes-bsp/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 0000000..5130598 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch new file mode 100644 index 0000000..aa3b359 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch new file mode 100644 index 0000000..c6d3678 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch b/recipes-bsp/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 0000000..24fb913 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch new file mode 100644 index 0000000..2da7354 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch new file mode 100644 index 0000000..d517f07 --- /dev/null +++ b/recipes-bsp/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-bsp/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-bsp/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 0000000..562c459 --- /dev/null +++ b/recipes-bsp/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-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch new file mode 100644 index 0000000..0dc58ab --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch @@ -0,0 +1,620 @@ +From 67a87638586acaf7907f94d2f0d3b09190c23880 Mon Sep 17 00:00:00 2001 +From: Gregoire Gentil +Date: Fri, 12 Mar 2010 11:49:16 +0100 +Subject: [PATCH 16/17] ARM: OMAP: omap3-touchbook: update boardfile + +--- + 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..c22a3e3 100644 +--- a/arch/arm/mach-omap2/board-omap3touchbook.c ++++ b/arch/arm/mach-omap2/board-omap3touchbook.c +@@ -1,7 +1,7 @@ + /* + * linux/arch/arm/mach-omap2/board-omap3touchbook.c + * +- * Copyright (C) 2009 Always Innovating ++ * Copyright (C) 2009-2010 Always Innovating + * + * Modified from mach-omap2/board-omap3beagleboard.c + * +@@ -33,6 +33,7 @@ + #include + + #include ++#include + + #include + #include +@@ -45,6 +46,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -60,18 +62,22 @@ + + #include + ++#include ++#include + + #define GPMC_CS0_BASE 0x60 + #define GPMC_CS_SIZE 0x30 + + #define NAND_BLOCK_SIZE SZ_128K + ++#define OMAP3_HJ_GPIO 56 + #define OMAP3_AC_GPIO 136 ++#define OMAP3_TS2_GPIO 154 + #define OMAP3_TS_GPIO 162 + #define TB_BL_PWM_TIMER 9 + #define TB_KILL_POWER_GPIO 168 + +-unsigned long touchbook_revision; ++unsigned long ai_revision = 2; + + static struct mtd_partition omap3touchbook_nand_partitions[] = { + /* All the partition sizes are listed in terms of NAND block size */ +@@ -126,6 +132,103 @@ static struct platform_device omap3touchbook_nand_device = { + .resource = &omap3touchbook_nand_resource, + }; + ++static int touchbook_enable_dvi(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->reset_gpio != -1) ++ gpio_set_value(dssdev->reset_gpio, 1); ++ ++ return 0; ++} ++ ++static void touchbook_disable_dvi(struct omap_dss_device *dssdev) ++{ ++ if (dssdev->reset_gpio != -1) ++ gpio_set_value(dssdev->reset_gpio, 0); ++} ++ ++static struct omap_dss_device touchbook_dvi_device = { ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .name = "dvi", ++ .driver_name = "generic_panel", ++ .phy.dpi.data_lines = 24, ++ .reset_gpio = 176, ++ .platform_enable = touchbook_enable_dvi, ++ .platform_disable = touchbook_disable_dvi, ++}; ++ ++static int touchbook_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 touchbook_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 touchbook_tv_device = { ++ .name = "tv", ++ .driver_name = "venc", ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .platform_enable = touchbook_panel_enable_tv, ++ .platform_disable = touchbook_panel_disable_tv, ++}; ++ ++static struct omap_dss_device *touchbook_dss_devices[] = { ++ &touchbook_dvi_device, ++ &touchbook_tv_device, ++}; ++ ++static struct omap_dss_board_info touchbook_dss_data = { ++ .num_devices = ARRAY_SIZE(touchbook_dss_devices), ++ .devices = touchbook_dss_devices, ++ .default_device = &touchbook_dvi_device, ++}; ++ ++static struct platform_device touchbook_dss_device = { ++ .name = "omapdss", ++ .id = -1, ++ .dev = { ++ .platform_data = &touchbook_dss_data, ++ }, ++}; ++ ++static struct regulator_consumer_supply touchbook_vdac_supply = { ++ .supply = "vdda_dac", ++ .dev = &touchbook_dss_device.dev, ++}; ++ ++static struct regulator_consumer_supply touchbook_vdvi_supply = { ++ .supply = "vdds_dsi", ++ .dev = &touchbook_dss_device.dev, ++}; ++ ++static void __init touchbook_display_init(void) ++{ ++ int r; ++ ++ r = gpio_request(touchbook_dvi_device.reset_gpio, "DVI reset"); ++ if (r < 0) { ++ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); ++ return; ++ } ++ ++ gpio_direction_output(touchbook_dvi_device.reset_gpio, 0); ++} ++ + #include "sdram-micron-mt46h32m32lf-6.h" + + static struct twl4030_hsmmc_info mmc[] = { +@@ -137,15 +240,6 @@ static struct twl4030_hsmmc_info mmc[] = { + {} /* Terminator */ + }; + +-static struct platform_device omap3_touchbook_lcd_device = { +- .name = "omap3touchbook_lcd", +- .id = -1, +-}; +- +-static struct omap_lcd_config omap3_touchbook_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct regulator_consumer_supply touchbook_vmmc1_supply = { + .supply = "vmmc", + }; +@@ -177,6 +271,7 @@ static int touchbook_twl_gpio_setup(struct device *dev, + * power switch and overcurrent detect + */ + ++#if 0 + gpio_request(gpio + 1, "EHCI_nOC"); + gpio_direction_input(gpio + 1); + +@@ -187,6 +282,7 @@ static int touchbook_twl_gpio_setup(struct device *dev, + /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ + gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; + ++#endif + return 0; + } + +@@ -201,16 +297,6 @@ static struct twl4030_gpio_platform_data touchbook_gpio_data = { + .setup = touchbook_twl_gpio_setup, + }; + +-static struct regulator_consumer_supply touchbook_vdac_supply = { +- .supply = "vdac", +- .dev = &omap3_touchbook_lcd_device.dev, +-}; +- +-static struct regulator_consumer_supply touchbook_vdvi_supply = { +- .supply = "vdvi", +- .dev = &omap3_touchbook_lcd_device.dev, +-}; +- + /* 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,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, ++}; ++ + static struct twl4030_platform_data touchbook_twldata = { + .irq_base = TWL4030_IRQ_BASE, + .irq_end = TWL4030_IRQ_END, +@@ -291,10 +386,15 @@ static struct twl4030_platform_data touchbook_twldata = { + .usb = &touchbook_usb_data, + .gpio = &touchbook_gpio_data, + .codec = &touchbook_codec_data, ++ .madc = &touchbook_madc_data, + .vmmc1 = &touchbook_vmmc1, + .vsim = &touchbook_vsim, + .vdac = &touchbook_vdac, + .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), + }, ++ { ++ I2C_BOARD_INFO("chacha", 0x40), ++ .irq = OMAP_GPIO_IRQ(OMAP3_TS2_GPIO), ++ }, ++ { ++ I2C_BOARD_INFO("ds1307", 0x68), ++ }, + }; + + static int __init omap3_touchbook_i2c_init(void) + { ++ int ret; + /* Standard TouchBook bus */ + omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo, + ARRAY_SIZE(touchbook_i2c_boardinfo)); +@@ -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)); + +- return 0; +-} +- +-static void __init omap3_ads7846_init(void) +-{ +- if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) { +- printk(KERN_ERR "Failed to request GPIO %d for " +- "ads7846 pen down IRQ\n", OMAP3_TS_GPIO); +- return; ++ ret = gpio_request(OMAP3_TS2_GPIO, "chacha"); ++ if (ret < 0) { ++ printk(KERN_ERR "Failed to request GPIO %d for chacha IRQ\n", OMAP3_TS2_GPIO); ++ return 0; + } ++ gpio_direction_input(OMAP3_TS2_GPIO); + +- gpio_direction_input(OMAP3_TS_GPIO); +- omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); +- omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); ++ return 0; + } + +-static struct ads7846_platform_data ads7846_config = { +- .x_min = 100, +- .y_min = 265, +- .x_max = 3950, +- .y_max = 3750, +- .x_plate_ohms = 40, +- .pressure_max = 255, +- .debounce_max = 10, +- .debounce_tol = 5, +- .debounce_rep = 1, +- .gpio_pendown = OMAP3_TS_GPIO, +- .keep_vref_on = 1, +-}; +- +-static struct omap2_mcspi_device_config ads7846_mcspi_config = { +- .turbo_mode = 0, +- .single_channel = 1, /* 0: slave, 1: master */ +-}; +- +-static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = { +- { +- .modalias = "ads7846", +- .bus_num = 4, +- .chip_select = 0, +- .max_speed_hz = 1500000, +- .controller_data = &ads7846_mcspi_config, +- .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO), +- .platform_data = &ads7846_config, +- } +-}; +- + static struct gpio_led gpio_leds[] = { + { + .name = "touchbook::usr0", +@@ -412,6 +483,7 @@ static struct gpio_keys_button gpio_buttons[] = { + .gpio = 183, + .desc = "power", + .wakeup = 1, ++ .active_low = 1, + }, + }; + +@@ -428,23 +500,8 @@ static struct platform_device keys_gpio = { + }, + }; + +-static struct omap_board_config_kernel omap3_touchbook_config[] __initdata = { +- { OMAP_TAG_LCD, &omap3_touchbook_lcd_config }, +-}; +- +-#ifdef CONFIG_OMAP_MUX +-static struct omap_board_mux board_mux[] __initdata = { +- { .reg_offset = OMAP_MUX_TERMINATOR }, +-}; +-#else +-#define board_mux NULL +-#endif +- + static void __init omap3_touchbook_init_irq(void) + { +- omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); +- omap_board_config = omap3_touchbook_config; +- omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config); + omap2_init_common_hw(mt46h32m32lf6_sdrc_params, + mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table, + omap35x_dsp_rate_table, omap35x_l3_rate_table); +@@ -456,9 +513,9 @@ static void __init omap3_touchbook_init_irq(void) + } + + static struct platform_device *omap3_touchbook_devices[] __initdata = { +- &omap3_touchbook_lcd_device, + &leds_gpio, + &keys_gpio, ++ &touchbook_dss_device, + }; + + static void __init omap3touchbook_flash_init(void) +@@ -500,7 +557,7 @@ static void __init omap3touchbook_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, +@@ -512,6 +569,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { + .reset_gpio_port[2] = -EINVAL + }; + ++#ifdef CONFIG_OMAP_MUX ++static struct omap_board_mux board_mux[] __initdata = { ++ { .reg_offset = OMAP_MUX_TERMINATOR }, ++}; ++#else ++#define board_mux NULL ++#endif ++ ++static struct ads7846_platform_data ads7846_config = { ++ .x_min = 100, ++ .y_min = 265, ++ .x_max = 3950, ++ .y_max = 3750, ++ .x_plate_ohms = 40, ++ .pressure_max = 255, ++ .debounce_max = 10, ++ .debounce_tol = 5, ++ .debounce_rep = 1, ++ .gpio_pendown = OMAP3_TS_GPIO, ++ .keep_vref_on = 1, ++}; ++ ++static struct omap2_mcspi_device_config ads7846_mcspi_config = { ++ .turbo_mode = 0, ++ .single_channel = 1, /* 0: slave, 1: master */ ++}; ++ ++static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = { ++ { ++ .modalias = "ads7846", ++ .bus_num = 4, ++ .chip_select = 0, ++ .max_speed_hz = 1500000, ++ .controller_data = &ads7846_mcspi_config, ++ .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO), ++ .platform_data = &ads7846_config, ++ } ++}; ++ ++static void __init omap3_ads7846_init(void) ++{ ++ if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) { ++ printk(KERN_ERR "Failed to request GPIO %d for " ++ "ads7846 pen down IRQ\n", OMAP3_TS_GPIO); ++ return; ++ } ++ ++ gpio_direction_input(OMAP3_TS_GPIO); ++ omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); ++ omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); ++} ++ ++static struct mma7455l_platform_data mma7455l_config = { ++ .calibration_x = -4, ++ .calibration_y = 28, ++ .calibration_z = -28, ++}; ++ ++static struct omap2_mcspi_device_config mma7455l_mcspi_config = { ++ .turbo_mode = 0, ++ .single_channel = 1, /* 0: slave, 1: master */ ++}; ++ ++static struct spi_board_info omap3_mma7455l_spi_board_info[] __initdata = { ++ { ++ .modalias = "mma7455l", ++ .bus_num = 3, ++ .chip_select = 0, ++ .max_speed_hz = 200000, ++ .irq = OMAP_GPIO_IRQ(OMAP3_AC_GPIO), ++ .controller_data = &mma7455l_mcspi_config, //(void *) 135, ++ .platform_data = &mma7455l_config, ++ } ++}; ++ ++static void __init omap3_mma7455l_init(void) ++{ ++ int ret; ++ ++ ret = gpio_request(OMAP3_AC_GPIO, "mma7455l"); ++ if (ret < 0) { ++ printk(KERN_ERR "Failed to request GPIO %d for mma7455l IRQ\n", OMAP3_AC_GPIO); ++ return; ++ } ++ ++ gpio_direction_input(OMAP3_AC_GPIO); ++} ++ ++static int touchbook_backlight_brightness = 50; ++static struct omap_dm_timer *touchbook_backlight_pwm; ++ ++static int touchbook_backlight_read(struct backlight_device *bd) ++{ ++ return touchbook_backlight_brightness; ++} ++ ++static int touchbook_backlight_update(struct backlight_device *bd) ++{ ++ int value = bd->props.brightness; ++ touchbook_backlight_brightness = value; ++ ++ /* Frequency calculation: ++ - For 200Hz PWM, you want to load -164 (=> -32768Hz / 200Hz). ++ - Minimum duty cycle for the backlight is 15%. ++ - You have (164*0.85) => ~140 levels of brightness. ++ */ ++ ++ /* Halve input brightness */ ++ if (!bd->props.boost) ++ value /= 2; ++ ++ /* For maximum brightness, just stop the timer... */ ++ if(value != bd->props.max_brightness) ++ { ++ /* Load the appropriate value for 200Hz PWM */ ++ u32 period = clk_get_rate(omap_dm_timer_get_fclk(touchbook_backlight_pwm)) / bd->props.pwm_fq; ++ ++ /* Minimum duty cycle is 15% */ ++ u32 minimum = (period * bd->props.min_duty) / 100; ++ u32 maximum = (period * 17) / 20; ++ ++ /* Work out match value */ ++ u32 match = (maximum * value) / 100; ++ ++ /* Start... */ ++ omap_dm_timer_set_load(touchbook_backlight_pwm, 1, 0xFFFFFFFF - period - 1); ++ omap_dm_timer_set_match(touchbook_backlight_pwm, 1, 0xFFFFFFFF - minimum - match); ++ omap_dm_timer_write_counter(touchbook_backlight_pwm, -1); ++ omap_dm_timer_start(touchbook_backlight_pwm); ++ } ++ else ++ omap_dm_timer_stop(touchbook_backlight_pwm); ++ ++ ++ return 0; ++} ++ ++static struct backlight_ops touchbook_backlight_properties = { ++ .get_brightness = touchbook_backlight_read, ++ .update_status = touchbook_backlight_update, ++}; ++ ++static void __init omap3_touchbook_backlight_init(void) ++{ ++ static struct backlight_device *bd; ++ bd = backlight_device_register("touchbook", NULL, NULL, &touchbook_backlight_properties); ++ ++ if(bd) ++ { ++ touchbook_backlight_pwm = omap_dm_timer_request_specific(TB_BL_PWM_TIMER); ++ omap_dm_timer_enable(touchbook_backlight_pwm); ++ omap_dm_timer_set_source(touchbook_backlight_pwm, OMAP_TIMER_SRC_SYS_CLK); ++ omap_dm_timer_set_pwm(touchbook_backlight_pwm, 1, 1, OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE); ++ ++ bd->props.max_brightness = 100; ++ bd->props.brightness = touchbook_backlight_brightness; ++ bd->props.boost = 0; ++ bd->props.min_duty = 15; ++ bd->props.pwm_fq = 200; ++ } ++ ++ touchbook_backlight_update(bd); ++} ++ + static void omap3_touchbook_poweroff(void) + { + int r; +@@ -525,33 +746,26 @@ static void omap3_touchbook_poweroff(void) + gpio_direction_output(TB_KILL_POWER_GPIO, 0); + } + +-static void __init early_touchbook_revision(char **p) ++static int __init ai_revision_instance(char *str) + { +- if (!*p) +- return; ++ if (!str) ++ return -EINVAL; ++ ++ ai_revision = simple_strtoul(str, NULL, 10); + +- strict_strtoul(*p, 10, &touchbook_revision); ++ return 0; + } +-__early_param("tbr=", early_touchbook_revision); + + static void __init omap3_touchbook_init(void) + { + pm_power_off = omap3_touchbook_poweroff; + ++ omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); + omap3_touchbook_i2c_init(); + platform_add_devices(omap3_touchbook_devices, + ARRAY_SIZE(omap3_touchbook_devices)); + omap_serial_init(); + +- omap_mux_init_gpio(170, OMAP_PIN_INPUT); +- gpio_request(176, "DVI_nPD"); +- /* REVISIT leave DVI powered down until it's needed ... */ +- gpio_direction_output(176, true); +- +- /* Touchscreen and accelerometer */ +- spi_register_board_info(omap3_ads7846_spi_board_info, +- ARRAY_SIZE(omap3_ads7846_spi_board_info)); +- omap3_ads7846_init(); + usb_musb_init(); + usb_ehci_init(&ehci_pdata); + omap3touchbook_flash_init(); +@@ -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); ++ ++ touchbook_display_init(); ++ omap3_touchbook_backlight_init(); ++ ++ /* Touchscreen and accelerometer */ ++ spi_register_board_info(omap3_ads7846_spi_board_info, ++ ARRAY_SIZE(omap3_ads7846_spi_board_info)); ++ spi_register_board_info(omap3_mma7455l_spi_board_info, ++ ARRAY_SIZE(omap3_mma7455l_spi_board_info)); ++ omap3_ads7846_init(); ++ omap3_mma7455l_init(); + } + + static void __init omap3_touchbook_map_io(void) +@@ -567,6 +792,8 @@ static void __init omap3_touchbook_map_io(void) + omap2_map_common_io(); + } + ++early_param("air", ai_revision_instance); ++ + MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board") + /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */ + .phys_io = 0x48000000, +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch new file mode 100644 index 0000000..8a06ead --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch @@ -0,0 +1,48 @@ +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 + +--- + arch/arm/mach-omap2/pm34xx.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c +index d1cc528..42fbcdd 100644 +--- a/arch/arm/mach-omap2/pm34xx.c ++++ b/arch/arm/mach-omap2/pm34xx.c +@@ -120,7 +120,7 @@ static struct prm_setup_vc prm_setup = { + struct omap_opp omap35x_mpu_rate_table[] = { + {0, 0, 0}, + /*OPP1*/ +- {S125M, VDD1_OPP1, 0x1E}, ++// {S125M, VDD1_OPP1, 0x1E}, + /*OPP2*/ + {S250M, VDD1_OPP2, 0x26}, + /*OPP3*/ +@@ -131,12 +131,13 @@ struct omap_opp omap35x_mpu_rate_table[] = { + {S600M, VDD1_OPP5, 0x3C}, + /*OPP6*/ + {S720M, VDD1_OPP6, 0x3C}, ++ {S800M, VDD1_OPP6, 0x3F}, + }; + + struct omap_opp omap35x_dsp_rate_table[] = { + {0, 0, 0}, + /*OPP1*/ +- {S90M, VDD1_OPP1, 0x1E}, ++// {S90M, VDD1_OPP1, 0x1E}, + /*OPP2*/ + {S180M, VDD1_OPP2, 0x26}, + /*OPP3*/ +@@ -147,6 +148,7 @@ struct omap_opp omap35x_dsp_rate_table[] = { + {S430M, VDD1_OPP5, 0x3C}, + /*OPP5*/ + {S520M, VDD1_OPP6, 0x3C}, ++ {S600M, VDD1_OPP6, 0x3F}, + }; + + struct omap_opp omap35x_l3_rate_table[] = { +-- +1.6.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig new file mode 100644 index 0000000..6f2b7bd --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig @@ -0,0 +1,3043 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Mon May 10 12:50:28 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT 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=15 +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_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=y +CONFIG_RD_LZMA=y +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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_ELF_CORE is not set +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=m +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=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_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_INTEGRITY=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +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=y +CONFIG_OMAP_MBOX_FWK=m +# 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 + +# +# OMAP Board Type +# +# CONFIG_MACH_OMAP3_BEAGLE is not set +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3EVM is not set +# CONFIG_MACH_OMAP3517EVM is not set +# CONFIG_MACH_OMAP3_PANDORA is not set +CONFIG_MACH_OMAP3_TOUCHBOOK=y +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +# CONFIG_USER_L2_PLE is not set +# CONFIG_USER_PMON is not set +CONFIG_ARM_ERRATA_430973=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +# CONFIG_VMSPLIT_3G is not set +CONFIG_VMSPLIT_2G=y +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0x80000000 +# 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 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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=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=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=m +# CONFIG_PHONET is not set +CONFIG_IEEE802154=m +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=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=y +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 +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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=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=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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH 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 is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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=y +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=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=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=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_MACVLAN=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_ETHERNET is not set +CONFIG_MII=m +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_WLAN=y +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_AT76C50X_USB is not set +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=m +CONFIG_RT2800_LIB=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +# CONFIG_WL12XX is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +# +# WiMAX Wireless Broadband devices +# +# CONFIG_WIMAX_I2400M_USB is not set +# CONFIG_WIMAX_I2400M_SDIO is not set + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_HSO is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +CONFIG_ATM_DRIVERS=y +# CONFIG_ATM_DUMMY is not set +# CONFIG_ATM_TCP is not set +CONFIG_IEEE802154_DRIVERS=m +# CONFIG_IEEE802154_FAKEHARD 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_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=y +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_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=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_W90X900 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=m +# 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 +CONFIG_INPUT_MMA7455L=y + +# +# Hardware I/O ports +# +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 + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_R3964 is not set +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=256 +# 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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +CONFIG_I2C_TINY_USB=m + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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 is not set +# 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=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=y +# 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=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 + +# +# 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=m + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +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=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_TWL4030_POWER is not set +CONFIG_TWL4030_CODEC=y +CONFIG_TWL4030_MADC=y +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# 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=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_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=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +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=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TDA9875=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m + +# +# Video decoders +# +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +# CONFIG_VIDEO_OV7670 is not set +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_TCM825X=m +CONFIG_VIDEO_MT9P012=m +CONFIG_VIDEO_DW9710=m +# CONFIG_VIDEO_OV3640 is not set +CONFIG_VIDEO_IMX046=m +CONFIG_VIDEO_LV8093=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_SAA7191=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_VPX3220=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_CX25840=m + +# +# MPEG video encoders +# +CONFIG_VIDEO_CX2341X=m + +# +# Video encoders +# +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_ADV7343=m + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +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=m +CONFIG_VIDEO_VPSS_SYSTEM=m +# CONFIG_VIDEO_VPFE_CAPTURE is not set +CONFIG_VIDEO_OMAP2_VOUT=m +# CONFIG_VIDEO_OMAP3 is not set +# CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER is not set +# CONFIG_VIDEO_OMAP34XX_ISP_RESIZER is not set +# 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 is not set +# CONFIG_USB_STV06XX is not set +# CONFIG_USB_GL860 is not set +# CONFIG_USB_GSPCA_CONEX is not set +# CONFIG_USB_GSPCA_ETOMS is not set +# CONFIG_USB_GSPCA_FINEPIX is not set +# CONFIG_USB_GSPCA_JEILINJ is not set +# CONFIG_USB_GSPCA_MARS is not set +# CONFIG_USB_GSPCA_MR97310A is not set +# CONFIG_USB_GSPCA_OV519 is not set +# CONFIG_USB_GSPCA_OV534 is not set +# CONFIG_USB_GSPCA_PAC207 is not set +# CONFIG_USB_GSPCA_PAC7302 is not set +# CONFIG_USB_GSPCA_PAC7311 is not set +# CONFIG_USB_GSPCA_SN9C20X is not set +# CONFIG_USB_GSPCA_SONIXB is not set +# CONFIG_USB_GSPCA_SONIXJ is not set +# CONFIG_USB_GSPCA_SPCA500 is not set +# CONFIG_USB_GSPCA_SPCA501 is not set +# CONFIG_USB_GSPCA_SPCA505 is not set +# CONFIG_USB_GSPCA_SPCA506 is not set +# CONFIG_USB_GSPCA_SPCA508 is not set +# CONFIG_USB_GSPCA_SPCA561 is not set +# CONFIG_USB_GSPCA_SQ905 is not set +# CONFIG_USB_GSPCA_SQ905C is not set +# CONFIG_USB_GSPCA_STK014 is not set +# CONFIG_USB_GSPCA_STV0680 is not set +# CONFIG_USB_GSPCA_SUNPLUS is not set +# CONFIG_USB_GSPCA_T613 is not set +# CONFIG_USB_GSPCA_TV8532 is not set +# CONFIG_USB_GSPCA_VC032X is not set +# CONFIG_USB_GSPCA_ZC3XX is not set +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=m +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=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_EC168=m +CONFIG_SMS_SIANO_MDTV=m + +# +# Siano module components +# +# CONFIG_SMS_USB_DRV is not set +# CONFIG_SMS_SDIO_DRV 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_EC100=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=y +CONFIG_USB_DABUSB=m + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_VIRTUAL 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_OMAP2_VRAM=y +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_VRAM_SIZE=18 +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=y +# CONFIG_PANEL_TAAL is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +# CONFIG_LCD_LMS283GF05 is not set +# CONFIG_LCD_LTV350QV is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_TDO24M is not set +# CONFIG_LCD_VGG2432A4 is not set +CONFIG_LCD_PLATFORM=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=y + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set +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=m +CONFIG_SND_RAWMIDI=m +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 is not set +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=m +# 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=m +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_OMAP3_TOUCHBOOK=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_AI=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 + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_OXU210HP_HCD=y +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=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=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR 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=m +# 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_AT91 is not set +# CONFIG_USB_GADGET_ATMEL_USBA is not set +# CONFIG_USB_GADGET_FSL_USB2 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_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=m +CONFIG_USB_ZERO_HNPTEST=y +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# 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=y +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_TWL4030_USB=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_DS1307=y +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=y +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# 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 + +# +# TI VLYNQ +# +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +# CONFIG_USB_IP_COMMON is not set +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +# CONFIG_ECHO is not set +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_EXT4_FS=m +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_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +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=m +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +CONFIG_GENERIC_ACL=y + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=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=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 +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY 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_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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=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 diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3evm/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3evm/defconfig new file mode 100644 index 0000000..5508dc5 --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/omap3evm/defconfig @@ -0,0 +1,3088 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Wed Jul 28 15:05:34 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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 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=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_AUDIT 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_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 is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=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_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +CONFIG_OMAP_SMARTREFLEX=y +# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +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=y +# CONFIG_OMAP_LL_DEBUG_UART2 is not set +# CONFIG_OMAP_LL_DEBUG_UART3 is not set +# 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 is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_USER_L2_PLE=y +CONFIG_USER_PMON=y +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_458693=y +CONFIG_ARM_ERRATA_460075=y +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# 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 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# 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 + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +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 + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES 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=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=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=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=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=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 +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_OMAP_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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=y +# CONFIG_MTD_ALAUDA is not set +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +CONFIG_MTD_ONENAND_OMAP2=y +# CONFIG_MTD_ONENAND_OTP is not set +# CONFIG_MTD_ONENAND_2X_PROGRAM is not set +# CONFIG_MTD_ONENAND_SIM is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +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=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=32768 +# CONFIG_BLK_DEV_XIP is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_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=m +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=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=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 +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +CONFIG_SCSI_ISCSI_ATTRS=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=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=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=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 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +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 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 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=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 is not set +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_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_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=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_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=y +# 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=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_W90X900 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=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 + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=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=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=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_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 +# 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=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_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_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_MT9V113=m +# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_MT9P012=m +CONFIG_VIDEO_MT9T112=m +# 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=y +# 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 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 +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING 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_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_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=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO 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=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=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# 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 + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +CONFIG_MUSB_USE_SYSTEM_DMA_RX=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_TI_CPPI41_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=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=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_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_IOWARRIOR 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_AT91 is not set +# CONFIG_USB_GADGET_ATMEL_USBA is not set +# CONFIG_USB_GADGET_FSL_USB2 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_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=m +CONFIG_USB_ZERO_HNPTEST=y +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# 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=y +# CONFIG_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_TWL4030_USB=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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_RTC_LIB=y +CONFIG_RTC_CLASS=m + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=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 + +# +# TI VLYNQ +# +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_RTL8192SU=m +# 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_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_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=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=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=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=y +# CONFIG_HUGETLB_PAGE 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=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY 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=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=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 +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +# CONFIG_UNIXWARE_DISKLABEL 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=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +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=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=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=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=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 +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_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=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY 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_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=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +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=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=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=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_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_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 diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/overo/defconfig b/recipes-bsp/linux/linux-omap-psp-2.6.32/overo/defconfig new file mode 100644 index 0000000..be4375e --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/overo/defconfig @@ -0,0 +1,2467 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.32 +# Thu Mar 11 14:23:41 2010 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=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_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# 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_AUDIT 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=15 +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_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=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_ELF_CORE is not set +CONFIG_BASE_FULL=y +CONFIG_FUTEX=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=y +CONFIG_TRACEPOINTS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +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=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# 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=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# 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_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_NOMADIK is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 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_BCMRING is not set +# CONFIG_ARCH_U8500 is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set + +# +# OMAP Feature Selections +# +CONFIG_OMAP_SMARTREFLEX=y +# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +# CONFIG_OMAP_RESET_CLOCKS is not set +# CONFIG_OMAP_MUX 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 is not set +# CONFIG_MACH_OMAP_LDP is not set +CONFIG_MACH_OVERO=y +# CONFIG_MACH_OMAP3EVM is not set +# 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 +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +# 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 + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +CONFIG_HZ=128 +# CONFIG_THUMB2_KERNEL is not set +CONFIG_AEABI=y +# 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_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# 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 + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# 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 + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_HAVE_AOUT=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# 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=y +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=y + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=y +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=m +# CONFIG_BT_MRVL is not set +# CONFIG_AF_RXRPC is not set +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=y +# 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=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=y +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 is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +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_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 +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_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_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=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=y + +# +# 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=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=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_EEPROM_93CX6=m +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_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_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=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=m +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_VETH is not set +CONFIG_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=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +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 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_WLAN=y +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_AT76C50X_USB is not set +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 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=m +# CONFIG_LIBERTAS_SPI is not set +CONFIG_LIBERTAS_DEBUG=y +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 is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=y +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_DM9601=m +# CONFIG_USB_NET_SMSC95XX is not set +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +# CONFIG_PPPOL2TP is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=m +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +CONFIG_INPUT_POLLDEV=m +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# 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=y +CONFIG_TOUCHSCREEN_ADS7846=m +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_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_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 + +# +# I2C Hardware Bus support +# + +# +# 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 +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# 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=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=y +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# 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=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 is not set +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 is not set + +# +# Multifunction device drivers +# +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_TWL4030_POWER is not set +CONFIG_TWL4030_CODEC=y +CONFIG_TWL4030_MADC=y +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# 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=y +# 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=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_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +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_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_VIDEO_V4L2=y +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_SG=y +CONFIG_VIDEOBUF_VMALLOC=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=y +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +# CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_VIDEO_AU0828 is not set +CONFIG_TI_MEDIA=y +CONFIG_VIDEO_VPSS_SYSTEM=m +# CONFIG_VIDEO_VPFE_CAPTURE 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 is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_CX231XX is not set +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +CONFIG_USB_ET61X251=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 is not set +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +# CONFIG_USB_STKWEBCAM is not set +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 is not set +CONFIG_DVB_CAPTURE_DRIVERS=y +# CONFIG_TTPCI_EEPROM is not set + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +# CONFIG_DVB_USB_DW2102 is not set +# CONFIG_DVB_USB_CINERGY_T2 is not set +# CONFIG_DVB_USB_ANYSEE is not set +# CONFIG_DVB_USB_DTV5100 is not set +# CONFIG_DVB_USB_AF9015 is not set +# 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 is not set + +# +# Supported DVB Frontends +# +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA826X=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_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_LGS8GL5=m +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_VIRTUAL 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_OMAP2_VRAM=y +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_VRAM_SIZE=0 +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 is not set +# 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=y +CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C=y +CONFIG_PANEL_SHARP_LS037V7DW01=y +# CONFIG_PANEL_SHARP_LQ043T1DG01 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +# CONFIG_LCD_LMS283GF05 is not set +# CONFIG_LCD_LTV350QV is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_TDO24M is not set +# CONFIG_LCD_VGG2432A4 is not set +# CONFIG_LCD_PLATFORM is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_GENERIC=m + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FONTS=y +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 +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 is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_VERBOSE is not set +# CONFIG_SND_PCM_XRUN_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 is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +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_OVERO=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 is not set +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 is not set +# 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=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +# CONFIG_USB_OTG is not set +# 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_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +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_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 + +# +# OMAP 343x high speed USB support +# +CONFIG_USB_MUSB_HOST=y +# CONFIG_USB_MUSB_PERIPHERAL is not set +# CONFIG_USB_MUSB_OTG is not set +# CONFIG_USB_GADGET_MUSB_HDRC is not set +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=y + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +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 + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +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=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +# CONFIG_USB_SERIAL_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 is not set +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 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +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=m +CONFIG_USB_LCD=m +# CONFIG_USB_BERRY_CHARGE is not set +CONFIG_USB_LED=m +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_SELECTED=y +# 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_LH7A40X is not set +CONFIG_USB_GADGET_OMAP=y +CONFIG_USB_OMAP=y +# 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_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 is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_GADGETFS is not set +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 is not set +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_ISP1301_OMAP is not set +# CONFIG_USB_ULPI is not set +CONFIG_TWL4030_USB=y +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# 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 is not set +# 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=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=y +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# 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 is not set + +# +# TI VLYNQ +# +# CONFIG_STAGING 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_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS 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=m +# CONFIG_CUSE is not set +CONFIG_GENERIC_ACL=y + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# 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=y +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=y +# CONFIG_UBIFS_FS_XATTR is not set +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_DEBUG=y +CONFIG_UBIFS_FS_DEBUG_MSG_LVL=3 +# CONFIG_UBIFS_FS_DEBUG_CHKS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS 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_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_LOCKD=y +CONFIG_LOCKD_V4=y +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 + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS 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=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_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# 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_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_SCHED_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_SECURITY 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_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +# CONFIG_CRYPTO_AUTHENC is not set +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_GHASH is not set +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +# 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=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_ZLIB is not set +CONFIG_CRYPTO_LZO=y + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/recipes-bsp/linux/linux-omap-psp-2.6.32/porches.patch b/recipes-bsp/linux/linux-omap-psp-2.6.32/porches.patch new file mode 100644 index 0000000..630af6f --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp-2.6.32/porches.patch @@ -0,0 +1,55 @@ +From 00a84122fd2c1974f6dc79fce11a34154caab848 Mon Sep 17 00:00:00 2001 +From: Tasslehoff Kjappfot +Date: Wed, 8 Sep 2010 12:46:14 +0200 +Subject: [PATCH] OMAP: DSS2: OMAPFB: swap front and back porches for both hsync and vsync + +Framebuffer's left and right margins are relative to the active pixel +area. Front and back porches are relative to the sync area. + +Left margin was wrongly assigned to front porch (and right to back), +this patch fixes it. + +Signed-off-by: tasskjapp@gmail.com +Reviewed-by: Russ.Dill@gmail.com +Signed-off-by: Tomi Valkeinen +--- + drivers/video/omap2/omapfb/omapfb-main.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c +index 39f53b1..bddfca6 100644 +--- a/drivers/video/omap2/omapfb/omapfb-main.c ++++ b/drivers/video/omap2/omapfb/omapfb-main.c +@@ -714,10 +714,10 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var) + var->pixclock = timings.pixel_clock != 0 ? + KHZ2PICOS(timings.pixel_clock) : + 0; +- var->left_margin = timings.hfp; +- var->right_margin = timings.hbp; +- var->upper_margin = timings.vfp; +- var->lower_margin = timings.vbp; ++ var->left_margin = timings.hbp; ++ var->right_margin = timings.hfp; ++ var->upper_margin = timings.vbp; ++ var->lower_margin = timings.vfp; + var->hsync_len = timings.hsw; + var->vsync_len = timings.vsw; + } else { +@@ -2059,10 +2059,10 @@ static int omapfb_mode_to_timings(const char *mode_str, + + if (r != 0) { + timings->pixel_clock = PICOS2KHZ(var.pixclock); +- timings->hfp = var.left_margin; +- timings->hbp = var.right_margin; +- timings->vfp = var.upper_margin; +- timings->vbp = var.lower_margin; ++ timings->hbp = var.left_margin; ++ timings->hfp = var.right_margin; ++ timings->vbp = var.upper_margin; ++ timings->vfp = var.lower_margin; + timings->hsw = var.hsync_len; + timings->vsw = var.vsync_len; + timings->x_res = var.xres; +-- +1.6.1 + diff --git a/recipes-bsp/linux/linux-omap-psp_2.6.32.bb b/recipes-bsp/linux/linux-omap-psp_2.6.32.bb new file mode 100644 index 0000000..955907c --- /dev/null +++ b/recipes-bsp/linux/linux-omap-psp_2.6.32.bb @@ -0,0 +1,176 @@ +require multi-kernel.inc + +DESCRIPTION = "Linux kernel for OMAP processors" +KERNEL_IMAGETYPE = "uImage" + +COMPATIBLE_MACHINE = "beagleboard|omap3evm|am3517-evm|dm37x-evm|am37x-evm|omap3-touchbook|overo" + +# This is on the master branch +SRCREV = "5fc29e7b2a76a64a739f857858ef0b98294aa155" + +# The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc +MACHINE_KERNEL_PR_append = "+gitr${SRCREV}" + +SRC_URI = "git://arago-project.org/git/projects/linux-omap3.git;protocol=http;branch=master \ + file://0001-Revert-omap3-beagle-Fix-compile-time-errors.patch \ + file://0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch \ + file://0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch \ + file://0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch \ + file://0005-board-omap3-beagle-add-DSS2-support.patch \ + file://0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch \ + file://0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch \ + file://0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch \ + file://0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch \ + file://0010-ARM-OMAP-update-beagleboard-defconfig.patch \ + file://0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch \ + file://0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch \ + file://0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch \ + file://0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch \ + file://0015-ISP-add-some-more-from-Leopard-imaging-patch.patch \ + file://0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch \ + file://0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch \ + file://0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch \ + file://0019-drivers-mfd-add-twl4030-madc-driver.patch \ + file://0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch \ + file://0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch \ + file://0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch \ + file://0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch \ + file://0024-mmc-don-t-display-single-block-read-console-messages.patch \ + file://0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch \ + file://0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch \ + file://0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch \ + file://0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch \ + file://0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch \ + file://0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch \ + file://0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch \ + file://0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch \ + file://0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch \ + file://0034-modedb.c-add-proper-720p60-mode.patch \ + file://0035-RTC-add-support-for-backup-battery-recharge.patch \ + file://0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch \ + file://0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch \ + file://0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch \ + file://0039-ARM-Add-option-to-allow-userspace-PLE-access.patch \ + file://0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch \ + file://0041-ARM-Expose-some-PMON-registers-through-sysfs.patch \ + file://0042-musb-allow-host-io-without-gadget-module.patch \ + file://0043-MTD-silence-ecc-errors-on-mtdblock0.patch \ + file://0044-ARM-OMAP-beagle-every-known-beagle-except-revB-uses-.patch \ + file://0045-ARM-OMAP-beagle-add-support-for-beagleFPGA-expansion.patch \ + file://cam/0001-mt9t111-first-stab-at-merging-sensor-driver-based-on.patch \ + file://cam/0002-mt9t111-Fix-all-checkpatch-errors.patch \ + file://cam/0003-mt9t111-Pass-v4l2_int_device-data.patch \ + file://cam/0004-omap3beagle-Add-camera-support.patch \ + file://cam/0005-TEMP-omap3beagle-camera-Add-defconfig.patch \ + file://cam/0006-omap3beagle-camera-Add-support-for-regulators.patch \ + file://cam/0007-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch \ + file://cam/0008-omap3beagle-camera-Fix-null-pointer-dereference.patch \ + file://cam/0009-Revert-TEMP-omap3beagle-cam-Enable-OMAP_MUX.patch \ + file://cam/0010-omap3beagle-camera-Change-arch-late_initcall.patch \ + file://cam/0011-omap3beagle-camera-Move-i2c-registration-to-the-main.patch \ + file://cam/0012-ARM-OMAP3-make-camera-code-build-if-MT9T111-is-built.patch \ + file://cam/0013-DEBUG-omap3beagle-camera-Force-mode0-in-cam_xclka.patch \ + file://cam/0014-OMAP3-CLOCK-Add-capability-to-change-rate-of-dpll4_m.patch \ + file://cam/0015-Revert-DEBUG-omap3beagle-camera-Force-mode0-in-cam_x.patch \ + file://cam/0016-omap3beagle-camera-Fix-wrong-XCLKA-selection.patch \ + file://cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch \ + file://cam/0018-Fix-Moved-MCLK-setting-to-the-board-file.patch \ + file://cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch \ + file://cam/0020-omap3beagle-camera-set-mclk-for-mt9t111.patch \ + file://cam/0021-mt9t111-Fix-max-supported-xclk.patch \ + file://cam/0022-omap3beagle-camera-Clarify-regulators-names.patch \ + file://cam/0023-omap3beagle-camera-Fix-powerup-sequence.patch \ + file://cam/0024-omap3beagle-camera-Change-vaux4-to-1.8v.patch \ + file://cam/0025-omap3beagle-camera-Rename-regulators-to-match-actual.patch \ + file://cam/0026-omap3beagle-camera-Complement-remainig-sensor-hw-con.patch \ + file://cam/0027-mt9t111-Fix-detect-function-retval-and-cleanup-print.patch \ + file://cam/0028-omap3beagle-camera-Set-padconf-settings-in-cam-init.patch \ + file://cam/0029-omap3beagle-camera-only-register-camera-driver-for-3.patch \ + file://cam/0030-WIP-mt9t111-Work-in-progress-for-camera-enablement.patch \ + file://cam/0031-BeagleXM-Cam-Add-support-for-MT9V113-VGA-Sensor.patch \ + file://cam/0032-MT9V113-Fixed-sensor-nitialization-issues.patch \ + file://cam/0033-mt9v113-Fix-wrong-active-widths.patch \ + file://cam/0034-omap3isp-Fix-Wrong-check-on-non-interlaced-sensor-on.patch \ + file://cam/0035-omap3isp-Fix-bad-YUV_BT-checks-in-datapath_config.patch \ + file://cam/0036-omap3isp-Set-vd_pol-to-0-by-default-on-all-cases.patch \ + file://cam/0037-omap3isp-ccdc-Set-datalines-to-10-for-YUV_SYNC.patch \ + file://cam/0038-omap3beagle-camera-Fix-parallel-i-f-settings.patch \ + file://cam/0039-omap3beagle-camera-Clean-up-Remove-unneccessary-code.patch \ + file://cam/0040-mt9v113-Clean-Up-Remove-unneccessary-code-printf.patch \ + file://cam/0041-MT9V113-Min-Max-clk-input-changed-as-per-the-spec.patch \ + file://cam/0042-omap3beagle-camera-Further-clode-cleanup.patch \ + file://cam/0043-mt9v113-Settings-from-Aptima-used-to-increase-FPS.patch \ + file://cam/0044-mt9v113-AE-param-tuned-to-get-28-30FPS.patch \ + file://cam/0045-omap3beagle-camera-Cleanup-of-boardfile.patch \ + file://cam/0046-omap3beagle-camera-Cleanup-regulator-usage.patch \ + file://cam/0047-omap3beagle-camera-Bring-back-mt9t111-support.patch \ + file://cam/0048-REMOVE-v4l2-Delete-MT9T111-sensor-driver.patch \ + file://cam/0049-V4L-DVB-13670-soc-camera-Add-mt9t112-camera-driver.patch \ + file://cam/0050-soc-camera-mt9t112-modify-exiting-conditions-from-st.patch \ + file://cam/0051-mt9t112-Migrate-from-soc_camera-to-v4l2-int-device.patch \ + file://cam/0052-mt9t112-Add-more-info-to-public-header.patch \ + file://cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch \ + file://cam/0054-DEBUG-omap3beagle-Add-MT9T112-to-defconfig.patch \ + file://cam/0055-omap3beagle-camera-Change-MT9T111-references-to-new-.patch \ + file://cam/0056-omap34xxcam-Fix-multi-pixel-format-negotiation.patch \ + file://cam/0057-SQUASH-omap3beagle-camera-Bring-back-mt9t111-support.patch \ + file://cam/0058-mt9t112-Do-init_camera-every-powerup.patch \ + file://cam/0059-omap3beagle-camera-Switch-flag-for-no-sensor-ISP.patch \ + file://cam/0060-mt9t112-Add-back-3MP-basesize.patch \ + file://cam/0061-mt9t112-Prepare-for-24MHz-EXTCLK-and-30-fps.patch \ + file://cam/0062-omap3beagle-camera-Prepare-24MHz-xclk-for-mt9t112.patch \ + file://cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch \ + file://cam/0064-mt9t112-Remove-smart-size-selection.patch \ + file://cam/0065-rtl8192su-remove-bogus-Kconfig-depend-on-PCI-and-add.patch \ + file://cam/0066-mt9t112-Add-Context-selection-to-configuration.patch \ + file://cam/0067-mt9t112-Disable-JPEG-in-Context-B.patch \ + file://cam/0068-mt9t112-Make-context-B-stream-unlimited-frames.patch \ + file://cam/0069-mt9t112-Fix-pll-p-dividers-abstraction.patch \ + file://cam/0070-mt9t112-Adjust-50-60Hz-flickering-settings.patch \ + file://cam/0071-mt9t112-Trigger-autofocus-at-the-end-of-context-swit.patch \ + file://cam/0072-omap3beagle-camera-Fix-dual-sensor-registration.patch \ + file://cam/0073-mt9v113-Fix-State-variable-handling.patch \ + file://cam/0074-Move-sensor-rest-to-after-applying-power.patch \ + file://cam/0075-omap3beagle-Add-camera-bootarg.patch \ + file://0001-BeagleBoard-Adjust-USER-button-pin-for-xM.patch \ + file://porches.patch \ + file://defconfig" + +SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ +" + +SRC_URI_append_omap3-touchbook = " \ + file://0001-ARM-OMAP-add-spi-platform-devices.patch \ + file://0002-MMA7455L-accelerometer-driver.patch \ + file://0003-bq27x00_battery-remove-error-message-output.patch \ + file://0004-bq27x00_battery-add-charged-gpio.patch \ + file://0005-adf7846-add-more-debugging.patch \ + file://0006-ads7846-read-max-mix-x-y-from-pdata.patch \ + file://0007-ads7846-add-settling-delay-to-pdata.patch \ + file://0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch \ + file://0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch \ + file://0010-add-touchbook-hid-driver.patch \ + file://0011-Make-backlight-controls-accessible-to-users.patch \ + file://0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch \ + file://0013-ASoC-add-driver-for-omap3-touchbook.patch \ + file://0014-backlight-add-PWM-support.patch \ + file://0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch \ + file://0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch \ +# file://0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch \ +" + +addtask quiltfixup before do_patch after do_unpack +do_quiltfixup() { + rm ${S}/.pc -rf +} + +S = "${WORKDIR}/git" + +do_install_append() { + install -d ${D}/boot + install -m 0644 Documentation/arm/OMAP/DSS ${D}/boot/ +} + +PACKAGES =+ "omap-dss-doc" +FILES_omap-dss-doc = "/boot/DSS" + diff --git a/recipes-bsp/linux/linux-omap.inc b/recipes-bsp/linux/linux-omap.inc new file mode 100644 index 0000000..c706a3f --- /dev/null +++ b/recipes-bsp/linux/linux-omap.inc @@ -0,0 +1,7 @@ +require linux.inc + +DESCRIPTION = "Linux kernel for OMAP processors" +KERNEL_IMAGETYPE = "uImage" + +module_autoload_ohci-hcd_omap5912osk = "ohci-hcd" + diff --git a/recipes-bsp/linux/linux-omap3.inc b/recipes-bsp/linux/linux-omap3.inc new file mode 100644 index 0000000..b8ff52b --- /dev/null +++ b/recipes-bsp/linux/linux-omap3.inc @@ -0,0 +1,16 @@ +SECTION = "kernel" +DESCRIPTION = "Linux kernel for OMAP3 EVM from PSP, based on linux-omap3 kernel" +LICENSE = "GPLv2" +KERNEL_IMAGETYPE = "uImage" + +require linux.inc + +SRC_URI = "git://arago-project.org/git/projects/linux-omap3.git;protocol=git;branch=${BRANCH} \ + file://defconfig" + +# Requires support for SOC_FAMILY matching in COMPATIBLE_MACHINE +COMPATIBLE_MACHINE = "omap3" + +BRANCH ?= "master" + +S = "${WORKDIR}/git" diff --git a/recipes-bsp/linux/linux-omap_2.6.37rc.bb b/recipes-bsp/linux/linux-omap_2.6.37rc.bb new file mode 100644 index 0000000..377095b --- /dev/null +++ b/recipes-bsp/linux/linux-omap_2.6.37rc.bb @@ -0,0 +1,57 @@ +require multi-kernel.inc + +DESCRIPTION = "Linux kernel for OMAP processors" +KERNEL_IMAGETYPE = "uImage" + +COMPATIBLE_MACHINE = "(beagleboard|overo|omap3evm|omap3-touchbook|usrp-e1xx)" + +# The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc +PV = "2.6.36+2.6.37-rc8" +MACHINE_KERNEL_PR_append = "a+gitr${SRCREV}" +SRCREV = "fa3b4e23ec20cfc944db7cc2b30b0d82c20e4472" + +FILESPATHPKG_prepend = "linux-omap-2.6.37rc:linux-omap-2.6.37rc/${MACHINE}:" + +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ + file://defconfig" + +SRC_URI_append = " \ + file://0001-ARM-OMAP-Power-on-EHCI-serial-camera-and-DVI-on-beag.patch \ + file://0002-omap-Beagle-detect-new-xM-revision-B.patch \ + file://0003-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch \ + file://0004-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch \ + file://0005-modedb.c-add-proper-720p60-mode.patch \ + file://0006-mmc-don-t-display-single-block-read-console-messages.patch \ + file://0007-MTD-silence-ecc-errors-on-mtdblock0.patch \ + file://0008-Miracle-patch.patch \ + file://0009-ARM-OMAP-add-omap_rev_-macros.patch \ + file://0010-OMAP-DSS2-enable-hsclk-in-dsi_pll_init-for-OMAP36XX.patch \ + file://0011-omap3-beagleboard-add-WIP-support-for-beagleboardtoy.patch \ + file://0012-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch \ + file://0013-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch \ + file://0014-ASoC-enable-audio-capture-by-default-for-twl4030.patch \ + file://0015-MFD-enable-madc-clock.patch \ + file://0016-MFD-add-twl4030-madc-driver.patch \ + file://0017-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch \ + file://0018-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch \ + file://0019-OMAP-DSS2-Add-support-for-Samsung-LTE430WQ-F0C-panel.patch \ + file://0020-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch \ + file://0021-OMAP-DSS2-add-bootarg-for-selecting-svideo-or-compos.patch \ + file://0022-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch \ + file://0023-RTC-add-support-for-backup-battery-recharge.patch \ + file://0024-ARM-OMAP-automatically-set-musb-mode-in-platform-dat.patch \ + file://0025-OMAP-DSS2-check-for-both-cpu-type-and-revision-rathe.patch \ + file://0026-OMAP-DSS2-Add-DSS2-support-for-Overo.patch \ +" + +SRC_URI_append_usrp-e1xx = "\ + file://0027-Add-defines-to-set-config-options-in-GPMC-per-CS-con.patch \ + file://0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch \ + file://0029-usrp-embedded-Add-driver-for-USRP-Embedded-FPGA-inte.patch \ +" + +SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ +" + +S = "${WORKDIR}/git" + diff --git a/recipes-bsp/linux/linux.inc b/recipes-bsp/linux/linux.inc new file mode 100644 index 0000000..47da439 --- /dev/null +++ b/recipes-bsp/linux/linux.inc @@ -0,0 +1,257 @@ +DESCRIPTION = "Linux Kernel" +SECTION = "kernel" +LICENSE = "GPLv2" + +inherit kernel siteinfo + +RPSRC = "http://www.rpsys.net/openzaurus/patches/archive" + +# Enable OABI compat for people stuck with obsolete userspace +ARM_KEEP_OABI ?= "1" + +# Quirk for udev greater or equal 141 +UDEV_GE_141 ?= "0" + +# Specify the commandline for your device + +# Boot from mmc +CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5" +# Boot from nfs +#CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0" + +# Set the verbosity of kernel messages during runtime +# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour +CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug", d)}' +CMDLINE_append = " ${CMDLINE_DEBUG} " + +# Kernel bootlogo is distro-specific (default is OE logo). +# Logo resolution (qvga, vga, ...) is machine-specific. +LOGO_SIZE ?= "." + +# Support for binary device tree generation + +FILES_kernel-devicetree = "/boot/devicetree*" + +KERNEL_DEVICETREE_boc01 = "${WORKDIR}/boc01.dts" +KERNEL_DEVICETREE_calamari = "arch/${ARCH}/boot/dts/mpc8536ds.dts" +KERNEL_DEVICETREE_canyonlands = "arch/${ARCH}/boot/dts/canyonlands.dts" +KERNEL_DEVICETREE_kilauea = "arch/${ARCH}/boot/dts/kilauea.dts" +KERNEL_DEVICETREE_lite5200 = "arch/${ARCH}/boot/dts/lite5200.dts" +KERNEL_DEVICETREE_lsppchd = "arch/${ARCH}/boot/dts/kuroboxHD.dts" +KERNEL_DEVICETREE_lsppchg = "arch/${ARCH}/boot/dts/kuroboxHG.dts" +KERNEL_DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts" +KERNEL_DEVICETREE_mpc8315e-rdb = "arch/${ARCH}/boot/dts/mpc8315erdb.dts" +KERNEL_DEVICETREE_mpc8323e-rdb = "arch/${ARCH}/boot/dts/mpc832x_rdb.dts" +KERNEL_DEVICETREE_mpc8544ds = "arch/${ARCH}/boot/dts/mpc8544ds.dts" +KERNEL_DEVICETREE_mpc8641-hpcn = "arch/${ARCH}/boot/dts/mpc8641_hpcn.dts" +KERNEL_DEVICETREE_p1020rdb = "arch/${ARCH}/boot/dts/p1020rdb.dts" +KERNEL_DEVICETREE_p2020ds = "arch/${ARCH}/boot/dts/p2020ds.dts" +KERNEL_DEVICETREE_sequoia = "arch/${ARCH}/boot/dts/sequoia.dts" +KERNEL_DEVICETREE_tqm8540 = "arch/${ARCH}/boot/dts/tqm8540.dts" +KERNEL_DEVICETREE_xilinx-ml507 = "arch/${ARCH}/boot/dts/virtex440-ml507.dts" + +KERNEL_DEVICETREE_FLAGS = "-R 8 -S 0x3000" + +CORTEXA8FIXUP ?= "yes" + +python __anonymous () { + + import bb + + devicetree = bb.data.getVar('KERNEL_DEVICETREE', d, 1) or '' + if devicetree: + depends = bb.data.getVar("DEPENDS", d, 1) + bb.data.setVar("DEPENDS", "%s dtc-native" % depends, d) + packages = bb.data.getVar("PACKAGES", d, 1) + bb.data.setVar("PACKAGES", "%s kernel-devicetree" % packages, d) +} + +do_configure_prepend() { + + # Rename getline in ./scripts/unifdef.c + # Kernels up to 2.6.29 are currently failing to build unifdef.c, + # clashing with exposed getline() from + # see https://patchwork.kernel.org/patch/11166/ + # committed in 2.6.29 (commit d15bd1067b1fcb2b7250d22bc0c7c7fea0b759f7) + + sed -i -e 's/getline/parseline/g' ${S}/scripts/unifdef.c + + + echo "" > ${S}/.config + + # + # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it's going to be used + # + if [ -e ${WORKDIR}/${LOGO_SIZE}/logo_linux_clut224.ppm ]; then + install -m 0644 ${WORKDIR}/${LOGO_SIZE}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm + echo "CONFIG_LOGO=y" >> ${S}/.config + echo "CONFIG_LOGO_LINUX_CLUT224=y" >> ${S}/.config + fi + + # + # oabi / eabi support + # + if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibceabi" ]; then + echo "CONFIG_AEABI=y" >> ${S}/.config + if [ "${ARM_KEEP_OABI}" = "1" ] ; then + echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config + else + echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config + fi + else + echo "# CONFIG_AEABI is not set" >> ${S}/.config + echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config + fi + + # When enabling thumb for userspace we also need thumb support in the kernel + if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then + sed -i -e /CONFIG_ARM_THUMB/d ${WORKDIR}/defconfig + echo "CONFIG_ARM_THUMB=y" >> ${S}/.config + fi + + # Enable thumb2 fixup for specific issue in angstrom toolchains when used on A8 r1p[012] silicon + if [ "${DISTRO_NAME}" = "Angstrom" -o "${CORTEXA8FIXUP}" = "yes" ] ; then + sed -i -e /CONFIG_ARM_ERRATA_430973/d ${WORKDIR}/defconfig + echo "CONFIG_ARM_ERRATA_430973=y" >> ${S}/.config + fi + + # + # endian support + # + if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then + echo "CONFIG_CPU_BIG_ENDIAN=y" >> ${S}/.config + fi + + echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config + + sed -e '/CONFIG_AEABI/d' \ + -e '/CONFIG_OABI_COMPAT=/d' \ + -e '/CONFIG_CMDLINE=/d' \ + -e '/CONFIG_CPU_BIG_ENDIAN/d' \ + -e '/CONFIG_LOGO=/d' \ + -e '/CONFIG_LOGO_LINUX_CLUT224=/d' \ + -e '/CONFIG_LOCALVERSION/d' \ + -e '/CONFIG_LOCALVERSION_AUTO/d' \ + < '${WORKDIR}/defconfig' >>'${S}/.config' + + echo 'CONFIG_LOCALVERSION=""' >>${S}/.config + echo '# CONFIG_LOCALVERSION_AUTO is not set' >>${S}/.config + + # + # Udev quirks + # + + # Newer versions of udev mandate that sysfs doesn't have deprecated entries + if [ "${UDEV_GE_141}" = "1" ] ; then + sed -e /CONFIG_SYSFS_DEPRECATED/d \ + -e /CONFIG_SYSFS_DEPRECATED_V2/d \ + -e /CONFIG_HOTPLUG/d \ + -e /CONFIG_UEVENT_HELPER_PATH/d \ + -e /CONFIG_UNIX/d \ + -e /CONFIG_SYSFS/d \ + -e /CONFIG_PROC_FS/d \ + -e /CONFIG_TMPFS/d \ + -e /CONFIG_INOTIFY_USER/d \ + -e /CONFIG_SIGNALFD/d \ + -e /CONFIG_TMPFS_POSIX_ACL/d \ + -e /CONFIG_BLK_DEV_BSG/d \ + -i '${S}/.config' + + echo '# CONFIG_SYSFS_DEPRECATED is not set' >> ${S}/.config + echo '# CONFIG_SYSFS_DEPRECATED_V2 is not set' >> ${S}/.config + echo 'CONFIG_HOTPLUG=y' >> ${S}/.config + echo 'CONFIG_UEVENT_HELPER_PATH=""' >> ${S}/.config + echo 'CONFIG_UNIX=y' >> ${S}/.config + echo 'CONFIG_SYSFS=y' >> ${S}/.config + echo 'CONFIG_PROC_FS=y' >> ${S}/.config + echo 'CONFIG_TMPFS=y' >> ${S}/.config + echo 'CONFIG_INOTIFY_USER=y' >> ${S}/.config + echo 'CONFIG_SIGNALFD=y' >> ${S}/.config + echo 'CONFIG_TMPFS_POSIX_ACL=y' >> ${S}/.config + echo 'CONFIG_BLK_DEV_BSG=y' >> ${S}/.config + echo 'CONFIG_DEVTMPFS=y' >> ${S}/.config + echo 'CONFIG_DEVTMPFS_MOUNT=y' >> ${S}/.config + fi + + # Newer inits like systemd need cgroup support + if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then + sed -e /CONFIG_CGROUP_SCHED/d \ + -e /CONFIG_CGROUPS/d \ + -i '${S}/.config' + + echo 'CONFIG_CGROUP_SCHED=y' >> ${S}/.config + echo 'CONFIG_CGROUPS=y' >> ${S}/.config + echo 'CONFIG_CGROUP_NS=y' >> ${S}/.config + echo 'CONFIG_CGROUP_FREEZER=y' >> ${S}/.config + echo 'CONFIG_CGROUP_DEVICE=y' >> ${S}/.config + echo 'CONFIG_CPUSETS=y' >> ${S}/.config + echo 'CONFIG_PROC_PID_CPUSET=y' >> ${S}/.config + echo 'CONFIG_CGROUP_CPUACCT=y' >> ${S}/.config + echo 'CONFIG_RESOURCE_COUNTERS=y' >> ${S}/.config + fi + + # + # root-over-nfs-over-usb-eth support. Limited, but should cover some cases. + # Enable this by setting a proper CMDLINE_NFSROOT_USB. + # + if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then + oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}" + sed -e '/CONFIG_INET/d' \ + -e '/CONFIG_IP_PNP=/d' \ + -e '/CONFIG_USB_GADGET=/d' \ + -e '/CONFIG_USB_GADGET_SELECTED=/d' \ + -e '/CONFIG_USB_ETH=/d' \ + -e '/CONFIG_NFS_FS=/d' \ + -e '/CONFIG_ROOT_NFS=/d' \ + -e '/CONFIG_CMDLINE=/d' \ + -i ${S}/.config + echo "CONFIG_INET=y" >> ${S}/.config + echo "CONFIG_IP_PNP=y" >> ${S}/.config + echo "CONFIG_USB_GADGET=y" >> ${S}/.config + echo "CONFIG_USB_GADGET_SELECTED=y" >> ${S}/.config + echo "CONFIG_USB_ETH=y" >> ${S}/.config + echo "CONFIG_NFS_FS=y" >> ${S}/.config + echo "CONFIG_ROOT_NFS=y" >> ${S}/.config + echo "CONFIG_CMDLINE=\"${CMDLINE_NFSROOT_USB}\"" >> ${S}/.config + fi + yes '' | oe_runmake oldconfig +} + +do_configure_append() { + if test -e scripts/Makefile.fwinst ; then + sed -i -e "s:-m0644:-m 0644:g" scripts/Makefile.fwinst + fi +} + +do_install_append() { + oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix}/src/linux-${KERNEL_VERSION} ARCH=$ARCH +} + +PACKAGES =+ "kernel-headers" +FILES_kernel-headers = "${exec_prefix}/src/linux*" + +do_devicetree_image() { + if test -n "${KERNEL_DEVICETREE}" ; then + dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE} + install -d ${D}/boot + install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION} + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb + cd ${DEPLOY_DIR_IMAGE} + rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb + ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}.dtb + fi +} + +addtask devicetree_image after do_install before do_package do_deploy + +pkg_postinst_kernel-devicetree () { + cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/devicetree devicetree devicetree-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true +} + +pkg_postrm_kernel-devicetree () { + cd /${KERNEL_IMAGEDEST}; update-alternatives --remove devicetree devicetree-${KERNEL_VERSION} || true +} + diff --git a/recipes-bsp/linux/multi-kernel.inc b/recipes-bsp/linux/multi-kernel.inc new file mode 100644 index 0000000..be2b3b0 --- /dev/null +++ b/recipes-bsp/linux/multi-kernel.inc @@ -0,0 +1,97 @@ +# This .inc file allows you to build and deploy multiple sets of kernel + modules with different defconfigs +# +# Note that this include will NOT stage anything nor create packages, since that is virtually impossible +# Userspace should be built against the 'regular' kernel +# +# The intended usecase is for machines that have mutually exclusive drivers due to e.g. pinmuxing issues. +# For example the LogicPD omap-l138 experimenter board can have multiple mutually exclusive expansion boards +# like lcd, ethernet, sound, 20x2 character LCD, etc. To be able to easily test all of those you can use this .inc +# +# To make it easier finding the original defconfig from a running kernel, this also forcefully turns on +# CONFIG_IKCONFIG_PROC so people can do 'zcat /proc/config.gz' on the target. + +require linux.inc + +SRC_URI_append = " \ + file://configs/ " + +MULTI_CONFIG_BASE_SUFFIX = "multi-config-" + +# bitbake.conf only prepends PARALLEL make in tasks called do_compile, which isn't the case for multiconfig +# So explicitly enable it for compileconfigs in here +EXTRA_OEMAKE = "${PARALLEL_MAKE} " + +do_compileconfigs () { + + # Compile and Install additional kernel configs if found + if [ -e ${WORKDIR}/configs/.empty ] ; then + echo "No configs found in configs/ directory, skipping to regular build" + else + echo "Multiple configs found, building those first" + + # Context Save the regular 'defconfig' + cp ${WORKDIR}/defconfig ${WORKDIR}/defconfig.save + + for config in ${WORKDIR}/configs/* ; do + + # Copy in alternative config + cd ${S} + cp $config ${WORKDIR}/defconfig + + # Enable config to be viewed on the target + echo "CONFIG_IKCONFIG=y" >> ${WORKDIR}/defconfig + echo "CONFIG_IKCONFIG_PROC=y" >> ${WORKDIR}/defconfig + + # Build and Install this alternative kernel + do_configure + kernel_do_compile + do_compile_kernelmodules + kernel_do_install + + # Drop the resulting images in the deploy dir + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).bin + + if [ -d "${D}/lib" ]; then + fakeroot tar -cvzf ${DEPLOY_DIR_IMAGE}/${MODULES_IMAGE_BASE_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).tgz -C ${D} lib + fi + + # Install the final config alongside the images + cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).config + + # Create symlinks + cd ${DEPLOY_DIR_IMAGE} + rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).bin + ln -sf ${KERNEL_IMAGE_BASE_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).bin ${KERNEL_IMAGE_SYMLINK_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).bin + rm -f modules-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).tgz + ln -sf ${MODULES_IMAGE_BASE_NAME}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).tgz modules-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).tgz + rm -f config-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).config + ln -sf config-${PV}-${PR}-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).config config-${MACHINE}.${MULTI_CONFIG_BASE_SUFFIX}$(basename $config).config + + done + + # Restore the regular 'defconfig' + cp ${WORKDIR}/defconfig.save ${WORKDIR}/defconfig + fi +} + +# For reference, copy .config to deploy image +do_deploy_append () { + + # Drop the regular defconfig along side the others for consistency + cd ${S} + cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}.config + + # add symlink + cd ${DEPLOY_DIR_IMAGE} + rm -f config-${MACHINE}.config + ln -s config-${PV}-${PR}-${MACHINE}.config config-${MACHINE}.config + + rm -f modules-${MACHINE}.tgz + ln -sf ${MODULES_IMAGE_BASE_NAME}.tgz modules-${MACHINE}.tgz + +} + +do_compileconfigs[depends] += "u-boot-mkimage-native:do_populate_sysroot virtual/${TARGET_PREFIX}gcc:do_populate_sysroot virtual/${TARGET_PREFIX}gcc${KERNEL_CCSUFFIX}:do_populate_sysroot" +addtask compileconfigs after do_patch before do_configure + diff --git a/recipes-bsp/u-boot/u-boot.inc b/recipes-bsp/u-boot/u-boot.inc new file mode 100644 index 0000000..9a9528e --- /dev/null +++ b/recipes-bsp/u-boot/u-boot.inc @@ -0,0 +1,67 @@ +DESCRIPTION = "U-Boot - the Universal Boot Loader" +HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome" +SECTION = "bootloaders" +PRIORITY = "optional" +LICENSE = "GPLv2" +PROVIDES = "virtual/bootloader" + +DEPENDS = "mtd-utils" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +PARALLEL_MAKE="" + +EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" + +UBOOT_MACHINE ?= "${MACHINE}_config" +UBOOT_BINARY ?= "u-boot.bin" +UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.bin" +UBOOT_SYMLINK ?= "u-boot-${MACHINE}.bin" + +do_configure () { + oe_runmake ${UBOOT_MACHINE} +} + +do_compile () { + unset LDFLAGS + unset CFLAGS + unset CPPFLAGS + oe_runmake all + oe_runmake tools env +} + +do_install () { + install -d ${D}/boot + install ${S}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE} + ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY} + + if [ -e ${WORKDIR}/fw_env.config ] ; then + install -d ${D}${base_sbindir} + install -d ${D}${sysconfdir} + install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config + install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv + install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv + fi + +} + +FILES_${PN} = "/boot" +# no gnu_hash in uboot.bin, by design, so skip QA +INSANE_SKIP_${PN} = True + +PACKAGES += "${PN}-fw-utils" +FILES_${PN}-fw-utils = "${sysconfdir} ${base_sbindir}" +# u-boot doesn't use LDFLAGS for fw files, needs to get fixed, but until then: +INSANE_SKIP_${PN}-fw-utils = True + +do_deploy () { + install -d ${DEPLOY_DIR_IMAGE} + install ${S}/${UBOOT_BINARY} ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE} + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE} + + cd ${DEPLOY_DIR_IMAGE} + rm -f ${UBOOT_SYMLINK} + ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK} + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${UBOOT_SYMLINK} +} +do_deploy[dirs] = "${S}" +addtask deploy before do_package_stage after do_compile diff --git a/recipes-bsp/u-boot/u-boot/0001-BeagleBoard-move-ramdisk-parameters.patch b/recipes-bsp/u-boot/u-boot/0001-BeagleBoard-move-ramdisk-parameters.patch new file mode 100644 index 0000000..5d6e69d --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-BeagleBoard-move-ramdisk-parameters.patch @@ -0,0 +1,38 @@ +From c8d02f2a8500f06de39681aed60ea5c9894f8087 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Wed, 11 Aug 2010 14:50:38 -0500 +Subject: [PATCH] BeagleBoard: move ramdisk parameters + +This will make it easier to reprogram the ramdisk size. + +Signed-off-by: Jason Kridner +--- + include/configs/omap3_beagle.h | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 48ad805..4f5c1d4 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -217,7 +217,7 @@ + "mmcrootfstype=ext3 rootwait\0" \ + "nandroot=/dev/mtdblock4 rw\0" \ + "nandrootfstype=jffs2\0" \ +- "ramroot=/dev/ram0 rw\0" \ ++ "ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M\0" \ + "ramrootfstype=ext2\0" \ + "mmcargs=setenv bootargs console=${console} " \ + "${optargs} " \ +@@ -248,8 +248,7 @@ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +- "root=${ramroot} rw ramdisk_size=65536 " \ +- "initrd=${rdaddr},64M " \ ++ "root=${ramroot} " \ + "rootfstype=${ramrootfstype}\0" \ + "loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0001-OMAP-mmc-add-support-for-second-and-third-mmc-chan.patch b/recipes-bsp/u-boot/u-boot/0001-OMAP-mmc-add-support-for-second-and-third-mmc-chan.patch new file mode 100644 index 0000000..2bda1bc --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-OMAP-mmc-add-support-for-second-and-third-mmc-chan.patch @@ -0,0 +1,126 @@ +From 7252b81ec10aea48672f66e33cb6962b98fb0782 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 29 Apr 2010 10:28:14 -0700 +Subject: [PATCH] OMAP: mmc: add support for second and third mmc channels + +Boards wishing to use this feature should define CONFIG_SYS_MMC_SET_DEV + +Signed-off-by: Jason Kridner +--- + drivers/mmc/omap3_mmc.c | 39 +++++++++++++++++++++++++++- + include/asm-arm/arch-omap3/mmc_host_def.h | 15 +++++++++-- + 2 files changed, 49 insertions(+), 5 deletions(-) + +diff --git a/drivers/mmc/omap3_mmc.c b/drivers/mmc/omap3_mmc.c +index 96c0e65..bf650ba 100644 +--- a/drivers/mmc/omap3_mmc.c ++++ b/drivers/mmc/omap3_mmc.c +@@ -52,7 +52,27 @@ const unsigned short mmc_transspeed_val[15][4] = { + + mmc_card_data cur_card_data; + static block_dev_desc_t mmc_blk_dev; +-static hsmmc_t *mmc_base = (hsmmc_t *)OMAP_HSMMC_BASE; ++static hsmmc_t *mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE; ++ ++unsigned char mmc_set_dev(int dev) ++{ ++ switch (dev) { ++ case 1: ++ mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE; ++ break; ++ case 2: ++ mmc_base = (hsmmc_t *)OMAP_HSMMC2_BASE; ++ break; ++ case 3: ++ mmc_base = (hsmmc_t *)OMAP_HSMMC3_BASE; ++ break; ++ default: ++ mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE; ++ return 1; ++ } ++ ++ return 0; ++} + + block_dev_desc_t *mmc_get_dev(int dev) + { +@@ -62,6 +82,7 @@ block_dev_desc_t *mmc_get_dev(int dev) + unsigned char mmc_board_init(void) + { + t2_t *t2_base = (t2_t *)T2_BASE; ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; + + #if defined(CONFIG_TWL4030_POWER) + twl4030_power_mmc_init(); +@@ -74,6 +95,17 @@ unsigned char mmc_board_init(void) + writel(readl(&t2_base->devconf0) | MMCSDIO1ADPCLKISEL, + &t2_base->devconf0); + ++ writel(readl(&t2_base->devconf1) | MMCSDIO2ADPCLKISEL, ++ &t2_base->devconf1); ++ ++ writel(readl(&prcm_base->fclken1_core) | ++ EN_MMC1 | EN_MMC2 | EN_MMC3, ++ &prcm_base->fclken1_core); ++ ++ writel(readl(&prcm_base->iclken1_core) | ++ EN_MMC1 | EN_MMC2 | EN_MMC3, ++ &prcm_base->iclken1_core); ++ + return 1; + } + +@@ -512,8 +544,11 @@ unsigned long mmc_bread(int dev_num, unsigned long blknr, lbaint_t blkcnt, + return 1; + } + +-int mmc_legacy_init(int verbose) ++int mmc_legacy_init(int dev) + { ++ if (mmc_set_dev(dev) != 0) ++ return 1; ++ + if (configure_mmc(&cur_card_data) != 1) + return 1; + +diff --git a/include/asm-arm/arch-omap3/mmc_host_def.h b/include/asm-arm/arch-omap3/mmc_host_def.h +index aa751c9..43dd705 100644 +--- a/include/asm-arm/arch-omap3/mmc_host_def.h ++++ b/include/asm-arm/arch-omap3/mmc_host_def.h +@@ -29,13 +29,20 @@ + #define T2_BASE 0x48002000 + + typedef struct t2 { +- unsigned char res1[0x274]; ++ unsigned char res1[0x274]; /* 0x000 */ + unsigned int devconf0; /* 0x274 */ +- unsigned char res2[0x2A8]; ++ unsigned char res2[0x060]; /* 0x278 */ ++ unsigned int devconf1; /* 0x2D8 */ ++ unsigned char res3[0x244]; /* 0x2DC */ + unsigned int pbias_lite; /* 0x520 */ + } t2_t; + + #define MMCSDIO1ADPCLKISEL (1 << 24) ++#define MMCSDIO2ADPCLKISEL (1 << 6) ++ ++#define EN_MMC1 (1 << 24) ++#define EN_MMC2 (1 << 25) ++#define EN_MMC3 (1 << 30) + + #define PBIASLITEPWRDNZ0 (1 << 1) + #define PBIASSPEEDCTRL0 (1 << 2) +@@ -44,7 +51,9 @@ typedef struct t2 { + /* + * OMAP HSMMC register definitions + */ +-#define OMAP_HSMMC_BASE 0x4809C000 ++#define OMAP_HSMMC1_BASE 0x4809C000 ++#define OMAP_HSMMC2_BASE 0x480B4000 ++#define OMAP_HSMMC3_BASE 0x480AD000 + + typedef struct hsmmc { + unsigned char res1[0x10]; +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0001-OMAP3-Beagle-enable-support-for-second-and-third-m.patch b/recipes-bsp/u-boot/u-boot/0001-OMAP3-Beagle-enable-support-for-second-and-third-m.patch new file mode 100644 index 0000000..21f1f13 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-OMAP3-Beagle-enable-support-for-second-and-third-m.patch @@ -0,0 +1,56 @@ +From 629a01965677e680ffa1fe76579ace7f69dd45b9 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Fri, 7 May 2010 07:40:26 -0700 +Subject: [PATCH] OMAP3: Beagle: enable support for second and third mmc channels + +Based on 629a01965677e680ffa1fe76579ace7f69dd45b9, but removed BOOTDELAY change. + +--- + include/configs/omap3_beagle.h | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index f2d0f53..74d4159 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -95,6 +95,7 @@ + 115200} + #define CONFIG_MMC 1 + #define CONFIG_OMAP3_MMC 1 ++#define CONFIG_SYS_MMC_SET_DEV 1 + #define CONFIG_DOS_PARTITION 1 + + /* DDR - I use Micron DDR */ +@@ -186,6 +187,7 @@ + "vram=12M\0" \ + "dvimode=1024x768MR-16@60\0" \ + "defaultdisplay=dvi\0" \ ++ "mmcdev=1\0" \ + "mmcroot=/dev/mmcblk0p2 rw\0" \ + "mmcrootfstype=ext3 rootwait\0" \ + "nandroot=/dev/mtdblock4 rw\0" \ +@@ -204,10 +206,10 @@ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${nandroot} " \ + "rootfstype=${nandrootfstype}\0" \ +- "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \ ++ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "source ${loadaddr}\0" \ +- "loaduimage=fatload mmc 0 ${loadaddr} uImage\0" \ ++ "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ + "mmcboot=echo Booting from mmc ...; " \ + "run mmcargs; " \ + "bootm ${loadaddr}\0" \ +@@ -217,7 +219,7 @@ + "bootm ${loadaddr}\0" \ + + #define CONFIG_BOOTCOMMAND \ +- "if mmc init; then " \ ++ "if mmc init ${mmcdev}; then " \ + "if run loadbootscript; then " \ + "run bootscript; " \ + "else " \ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0001-OMAP3-enable-i2c-bus-switching-for-Beagle-and-Overo.patch b/recipes-bsp/u-boot/u-boot/0001-OMAP3-enable-i2c-bus-switching-for-Beagle-and-Overo.patch new file mode 100644 index 0000000..c718191 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-OMAP3-enable-i2c-bus-switching-for-Beagle-and-Overo.patch @@ -0,0 +1,49 @@ +From 9c1581dd7f6057d5d25d6b2dcf8bacef95d526d2 Mon Sep 17 00:00:00 2001 +From: Syed Mohammed Khasim +Date: Mon, 18 Jan 2010 18:11:14 +0530 +Subject: [PATCH] Enable I2C bus switching + +OMAP3 supports Multiple I2C channels, this patch allows +us to use i2c dev command to switch between busses. + +Signed-off-by: Syed Mohammed Khasim +Acked-by: Heiko Schocher +(cherry picked from commit 9bb1c3501c8f098dac6e224c99e409ebf92b0ab9) +--- + drivers/i2c/omap24xx_i2c.c | 5 +++++ + include/configs/omap3_beagle.h | 6 ++++++ + 2 files changed, 11 insertions(+), 0 deletions(-) + +diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c +index f00468d..0af230d 100644 +--- a/drivers/i2c/omap24xx_i2c.c ++++ b/drivers/i2c/omap24xx_i2c.c +@@ -435,3 +435,8 @@ int i2c_set_bus_num(unsigned int bus) + + return 0; + } ++ ++int i2c_get_bus_num(void) ++{ ++ return (int) current_bus; ++} +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index ad73a66..1a76004 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -113,6 +113,12 @@ + /* DDR - I use Micron DDR */ + #define CONFIG_OMAP3_MICRON_DDR 1 + ++/* Enable Multi Bus support for I2C */ ++#define CONFIG_I2C_MULTI_BUS 1 ++ ++/* Probe all devices */ ++#define CONFIG_SYS_I2C_NOPROBES {0x0, 0x0} ++ + /* USB */ + #define CONFIG_MUSB_UDC 1 + #define CONFIG_USB_OMAP3 1 +-- +1.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0002-OMAP3-add-board-revision-detection-for-Overo.patch b/recipes-bsp/u-boot/u-boot/0002-OMAP3-add-board-revision-detection-for-Overo.patch new file mode 100644 index 0000000..255d725 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0002-OMAP3-add-board-revision-detection-for-Overo.patch @@ -0,0 +1,187 @@ +From 59c9245c9a52954c8c084e257bbe55443201614b Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 10 Feb 2010 14:40:56 -0800 +Subject: [PATCH 02/37] OMAP3: add board revision detection for Overo + +--- + board/overo/overo.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ + board/overo/overo.h | 43 +++++++++++++++++++++--- + 2 files changed, 127 insertions(+), 6 deletions(-) + +diff --git a/board/overo/overo.c b/board/overo/overo.c +index e85be7d..3df1a12 100644 +--- a/board/overo/overo.c ++++ b/board/overo/overo.c +@@ -61,11 +61,101 @@ int board_init(void) + } + + /* ++ * Routine: get_sdio2_config ++ * Description: Return information about the wifi module connection ++ * Returns 0 if the module connects though a level translator ++ * Returns 1 if the module connects directly ++ */ ++int get_sdio2_config(void) { ++ int sdio_direct; ++ ++ if (!omap_request_gpio(130) && !omap_request_gpio(139)){ ++ ++ omap_set_gpio_direction(130, 0); ++ omap_set_gpio_direction(139, 1); ++ ++ sdio_direct = 1; ++ omap_set_gpio_dataout(130, 0); ++ if (omap_get_gpio_datain(139) == 0) { ++ omap_set_gpio_dataout(130, 1); ++ if (omap_get_gpio_datain(139) == 1) ++ sdio_direct = 0; ++ } ++ ++ omap_free_gpio(130); ++ omap_free_gpio(139); ++ } else { ++ printf("Error: unable to acquire sdio2 clk GPIOs\n"); ++ sdio_direct=-1; ++ } ++ ++ return sdio_direct; ++} ++ ++/* ++ * Routine: get_board_revision ++ * Description: Returns the board revision ++ */ ++int get_board_revision(void) { ++ int revision; ++ ++ if (!omap_request_gpio(126) && !omap_request_gpio(127) && ++ !omap_request_gpio(128) && !omap_request_gpio(129)){ ++ ++ omap_set_gpio_direction(126, 1); ++ omap_set_gpio_direction(127, 1); ++ omap_set_gpio_direction(128, 1); ++ omap_set_gpio_direction(129, 1); ++ ++ revision = 0; ++ if (omap_get_gpio_datain(126) == 0) ++ revision += 1; ++ if (omap_get_gpio_datain(127) == 0) ++ revision += 2; ++ if (omap_get_gpio_datain(128) == 0) ++ revision += 4; ++ if (omap_get_gpio_datain(129) == 0) ++ revision += 8; ++ ++ omap_free_gpio(126); ++ omap_free_gpio(127); ++ omap_free_gpio(128); ++ omap_free_gpio(129); ++ } else { ++ printf("Error: unable to acquire board revision GPIOs\n"); ++ revision=-1; ++ } ++ ++ return revision; ++} ++ ++/* + * Routine: misc_init_r + * Description: Configure board specific parts + */ + int misc_init_r(void) + { ++ printf("Board revision: "); ++ switch (get_board_revision()) { ++ case 0: ++ case 1: ++ switch (get_sdio2_config()) { ++ case 0: ++ printf(" 0\n"); ++ MUX_OVERO_SDIO2_TRANSCEIVER(); ++ break; ++ case 1: ++ printf(" 1\n"); ++ MUX_OVERO_SDIO2_DIRECT(); ++ break; ++ default: ++ printf(" unknown\n"); ++ } ++ break; ++ default: ++ printf(" unsupported\n"); ++ } ++ + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); + +diff --git a/board/overo/overo.h b/board/overo/overo.h +index 1873523..e120e09 100644 +--- a/board/overo/overo.h ++++ b/board/overo/overo.h +@@ -206,12 +206,12 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0)) /*MMC1_DAT1*/\ + MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | EN | M0)) /*MMC1_DAT2*/\ + MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | EN | M0)) /*MMC1_DAT3*/\ +- MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M0)) /*MMC1_DAT4*/\ +- MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M0)) /*MMC1_DAT5*/\ +- MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\ +- MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\ ++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M4)) /*GPIO_126*/\ ++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\ ++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\ ++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/\ + /*Wireless LAN */\ +- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ + MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ + MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ + MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ +@@ -220,7 +220,7 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ + MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ + MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ +- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ + /*Bluetooth*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\ + MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ +@@ -387,5 +387,36 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0)) /*sdrc_cke0*/\ + MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/ + ++#define MUX_OVERO_SDIO2_DIRECT() \ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M0)) /*MMC2_DAT4*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M0)) /*MMC2_DAT5*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M0)) /*MMC2_DAT6*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M0)) /*MMC2_DAT7*/\ ++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTD | EN | M4)) /*GPIO_126*/\ ++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\ ++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\ ++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/ ++ ++#define MUX_OVERO_SDIO2_TRANSCEIVER() \ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ ++ MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M4)) /*GPIO_126*/\ ++ MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*GPIO_127*/\ ++ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) /*GPIO_128*/\ ++ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) /*GPIO_129*/ + + #endif +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0003-OMAP3-update-Beagle-revision-detection-to-recognize-.patch b/recipes-bsp/u-boot/u-boot/0003-OMAP3-update-Beagle-revision-detection-to-recognize-.patch new file mode 100644 index 0000000..d12ff7a --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0003-OMAP3-update-Beagle-revision-detection-to-recognize-.patch @@ -0,0 +1,165 @@ +From 9db5da6e8a0d6fb973b71902525ad3298faa39d9 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 10 Feb 2010 14:51:48 -0800 +Subject: [PATCH 03/37] OMAP3: update Beagle revision detection to recognize C4 boards + +--- + board/ti/beagle/beagle.c | 77 +++++++++++++++++++++++++++------------------- + board/ti/beagle/beagle.h | 7 +++- + 2 files changed, 51 insertions(+), 33 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 3b4c9e7..ba16dd7 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -38,7 +38,7 @@ + #include + #include "beagle.h" + +-static int beagle_revision_c; ++static int beagle_revision; + + /* + * Routine: board_init +@@ -60,41 +60,38 @@ int board_init(void) + /* + * Routine: beagle_get_revision + * Description: Return the revision of the BeagleBoard this code is running on. +- * If it is a revision Ax/Bx board, this function returns 0, +- * on a revision C board you will get a 1. + */ + int beagle_get_revision(void) + { +- return beagle_revision_c; ++ return beagle_revision; + } + + /* + * Routine: beagle_identify +- * Description: Detect if we are running on a Beagle revision Ax/Bx or +- * Cx. This can be done by GPIO_171. If this is low, we are +- * running on a revision C board. ++ * Description: Detect if we are running on a Beagle revision Ax/Bx, ++ * C1/2/3, C4 or D. This can be done by reading ++ * the level of GPIO173, GPIO172 and GPIO171. This should ++ * result in ++ * GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx ++ * GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2/3 ++ * GPIO173, GPIO172, GPIO171: 1 0 1 => C4 ++ * GPIO173, GPIO172, GPIO171: 0 0 0 => D + */ + void beagle_identify(void) + { +- beagle_revision_c = 0; +- if (!omap_request_gpio(171)) { +- unsigned int val; +- +- omap_set_gpio_direction(171, 1); +- val = omap_get_gpio_datain(171); +- omap_free_gpio(171); +- +- if (val) +- beagle_revision_c = 0; +- else +- beagle_revision_c = 1; +- } +- +- printf("Board revision "); +- if (beagle_revision_c) +- printf("C\n"); +- else +- printf("Ax/Bx\n"); ++ omap_request_gpio(171); ++ omap_request_gpio(172); ++ omap_request_gpio(173); ++ omap_set_gpio_direction(171, 1); ++ omap_set_gpio_direction(172, 1); ++ omap_set_gpio_direction(173, 1); ++ ++ beagle_revision = omap_get_gpio_datain(173) << 2 | ++ omap_get_gpio_datain(172) << 1 | ++ omap_get_gpio_datain(171); ++ omap_free_gpio(171); ++ omap_free_gpio(172); ++ omap_free_gpio(173); + } + + /* +@@ -106,9 +103,31 @@ int misc_init_r(void) + struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE; + struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE; + ++ beagle_identify(); ++ + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); + ++ printf("Board revision "); ++ switch (beagle_revision) { ++ case REVISION_AXBX: ++ printf("Ax/Bx\n"); ++ break; ++ case REVISION_CX: ++ printf("C1/C2/C3\n"); ++ MUX_BEAGLE_C(); ++ break; ++ case REVISION_C4: ++ printf("C4\n"); ++ MUX_BEAGLE_C(); ++ break; ++ case REVISION_D: ++ printf("D\n"); ++ break; ++ default: ++ printf("unknown 0x%02x\n", beagle_revision); ++ } ++ + /* Configure GPIOs to output */ + writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), &gpio6_base->oe); + writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | +@@ -120,8 +139,6 @@ int misc_init_r(void) + writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | + GPIO15 | GPIO14 | GPIO13 | GPIO12, &gpio5_base->setdataout); + +- beagle_identify(); +- + dieid_num_r(); + + return 0; +@@ -136,8 +153,4 @@ int misc_init_r(void) + void set_muxconf_regs(void) + { + MUX_BEAGLE(); +- +- if (beagle_revision_c) { +- MUX_BEAGLE_C(); +- } + } +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index 7fe6275..d95fd78 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -34,6 +34,11 @@ const omap3_sysinfo sysinfo = { + }; + + #define BOARD_REVISION_MASK (0x1 << 11) ++/* BeagleBoard revisions */ ++#define REVISION_AXBX 0x7 ++#define REVISION_CX 0x6 ++#define REVISION_C4 0x5 ++#define REVISION_D 0x0 + + /* + * IEN - Input Enable +@@ -264,7 +269,7 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(HDQ_SIO), (IDIS | PTU | EN | M4)) /*GPIO_170*/\ + MUX_VAL(CP(MCSPI1_CLK), (IEN | PTU | EN | M4)) /*GPIO_171*/\ + MUX_VAL(CP(MCSPI1_SIMO), (IEN | PTU | EN | M4)) /*GPIO_172*/\ +- MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTD | DIS | M0)) /*McSPI1_SOMI*/\ ++ MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTU | EN | M4)) /*GPIO_173*/\ + MUX_VAL(CP(MCSPI1_CS0), (IEN | PTD | EN | M0)) /*McSPI1_CS0*/\ + MUX_VAL(CP(MCSPI1_CS1), (IDIS | PTD | EN | M0)) /*McSPI1_CS1*/\ + MUX_VAL(CP(MCSPI1_CS2), (IDIS | PTD | DIS | M4)) /*GPIO_176*/\ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0004-OMAP3-Set-VAUX2-to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch b/recipes-bsp/u-boot/u-boot/0004-OMAP3-Set-VAUX2-to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch new file mode 100644 index 0000000..549b3fb --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0004-OMAP3-Set-VAUX2-to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch @@ -0,0 +1,143 @@ +From efc587fb24a5246f5a436a057320687a1b7847c6 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 10 Feb 2010 15:23:19 -0800 +Subject: [PATCH 04/37] OMAP3: Set VAUX2 to 1.8V for EHCI PHY on Beagle Rev C4 boards + +--- + board/ti/beagle/beagle.c | 5 +++++ + drivers/power/twl4030.c | 45 +++++++++++++++++++++++++-------------------- + include/twl4030.h | 15 +++++++++++++++ + 3 files changed, 45 insertions(+), 20 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index ba16dd7..b4ea7e6 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -120,6 +120,11 @@ int misc_init_r(void) + case REVISION_C4: + printf("C4\n"); + MUX_BEAGLE_C(); ++ /* Set VAUX2 to 1.8V for EHCI PHY */ ++ twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, ++ TWL4030_PM_RECEIVER_VAUX2_VSEL_18, ++ TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, ++ TWL4030_PM_RECEIVER_DEV_GRP_P1); + break; + case REVISION_D: + printf("D\n"); +diff --git a/drivers/power/twl4030.c b/drivers/power/twl4030.c +index eb066cb..f354834 100644 +--- a/drivers/power/twl4030.c ++++ b/drivers/power/twl4030.c +@@ -59,57 +59,62 @@ void twl4030_power_reset_init(void) + } + } + +- +-/* +- * Power Init +- */ +-#define DEV_GRP_P1 0x20 +-#define VAUX3_VSEL_28 0x03 +-#define DEV_GRP_ALL 0xE0 +-#define VPLL2_VSEL_18 0x05 +-#define VDAC_VSEL_18 0x03 +- + void twl4030_power_init(void) + { + unsigned char byte; + + /* set VAUX3 to 2.8V */ +- byte = DEV_GRP_P1; ++ byte = TWL4030_PM_RECEIVER_DEV_GRP_P1; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VAUX3_DEV_GRP); +- byte = VAUX3_VSEL_28; ++ byte = TWL4030_PM_RECEIVER_VAUX3_VSEL_28; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VAUX3_DEDICATED); + + /* set VPLL2 to 1.8V */ +- byte = DEV_GRP_ALL; ++ byte = TWL4030_PM_RECEIVER_DEV_GRP_ALL; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VPLL2_DEV_GRP); +- byte = VPLL2_VSEL_18; ++ byte = TWL4030_PM_RECEIVER_VPLL2_VSEL_18; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VPLL2_DEDICATED); + + /* set VDAC to 1.8V */ +- byte = DEV_GRP_P1; ++ byte = TWL4030_PM_RECEIVER_DEV_GRP_P1; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VDAC_DEV_GRP); +- byte = VDAC_VSEL_18; ++ byte = TWL4030_PM_RECEIVER_VDAC_VSEL_18; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VDAC_DEDICATED); + } + +-#define VMMC1_VSEL_30 0x02 +- + void twl4030_power_mmc_init(void) + { + unsigned char byte; + +- byte = DEV_GRP_P1; ++ byte = TWL4030_PM_RECEIVER_DEV_GRP_P1; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VMMC1_DEV_GRP); + + /* 3 Volts */ +- byte = VMMC1_VSEL_30; ++ byte = TWL4030_PM_RECEIVER_VMMC1_VSEL_30; + twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte, + TWL4030_PM_RECEIVER_VMMC1_DEDICATED); + } ++ ++/* ++ * Generic function to select Device Group and Voltage ++ */ ++void twl4030_pmrecv_vsel_cfg(u8 vsel_reg, u8 vsel_val, ++ u8 dev_grp, u8 dev_grp_sel) ++{ ++ /* Select the Device Group */ ++ twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, dev_grp_sel, ++ dev_grp); ++ ++ /* Select the Voltage */ ++ twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, vsel_val, ++ vsel_reg); ++} ++ ++ +diff --git a/include/twl4030.h b/include/twl4030.h +index 2b2f5ae..cc99403 100644 +--- a/include/twl4030.h ++++ b/include/twl4030.h +@@ -471,6 +471,21 @@ + #define TWL4030_USB_PHY_CLK_CTRL_STS 0xFF + + /* ++ * Voltage Selection in PM Receiver Module ++ */ ++#define TWL4030_PM_RECEIVER_VAUX2_VSEL_18 0x05 ++#define TWL4030_PM_RECEIVER_VAUX3_VSEL_28 0x03 ++#define TWL4030_PM_RECEIVER_VPLL2_VSEL_18 0x05 ++#define TWL4030_PM_RECEIVER_VDAC_VSEL_18 0x03 ++#define TWL4030_PM_RECEIVER_VMMC1_VSEL_30 0x02 ++ ++/* ++ * Device Selection in PM Receiver Module ++ */ ++#define TWL4030_PM_RECEIVER_DEV_GRP_P1 0x20 ++#define TWL4030_PM_RECEIVER_DEV_GRP_ALL 0xE0 ++ ++/* + * Convience functions to read and write from TWL4030 + * + * chip_no is the i2c address, it must be one of the chip addresses +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0005-OMAP3-add-entry-for-rev-3.1.2-check-and-display-max-.patch b/recipes-bsp/u-boot/u-boot/0005-OMAP3-add-entry-for-rev-3.1.2-check-and-display-max-.patch new file mode 100644 index 0000000..783fe27 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0005-OMAP3-add-entry-for-rev-3.1.2-check-and-display-max-.patch @@ -0,0 +1,105 @@ +From 27072274450ea8de1994744782397452b99814cc Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 3 Feb 2010 12:26:30 -0800 +Subject: [PATCH 05/37] OMAP3: add entry for rev 3.1.2, check and display max cpu clock for rev > 3.0 + +--- + cpu/arm_cortexa8/omap3/sys_info.c | 24 ++++++++++++++++++++++-- + include/asm-arm/arch-omap3/cpu.h | 8 +++++++- + include/asm-arm/arch-omap3/omap3.h | 3 ++- + 3 files changed, 31 insertions(+), 4 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c +index 08fb32e..e227f67 100644 +--- a/cpu/arm_cortexa8/omap3/sys_info.c ++++ b/cpu/arm_cortexa8/omap3/sys_info.c +@@ -39,7 +39,10 @@ static char *rev_s[CPU_3XX_MAX_REV] = { + "2.0", + "2.1", + "3.0", +- "3.1"}; ++ "3.1", ++ "UNKNOWN", ++ "UNKNOWN", ++ "3.1.2"}; + + /***************************************************************** + * dieid_num_r(void) - read and set die ID +@@ -104,6 +107,16 @@ u32 get_cpu_rev(void) + } + } + ++/***************************************************************** ++ * get_sku_id(void) - read sku_id to get info on max clock rate ++ *****************************************************************/ ++u32 get_sku_id(void) ++{ ++ struct ctrl_id *id_base = (struct ctrl_id *)OMAP34XX_ID_L4_IO_BASE; ++ return (readl(&id_base->sku_id) & SKUID_CLK_MASK); ++} ++ ++ + /**************************************************** + * is_mem_sdr() - return 1 if mem type in use is SDR + ****************************************************/ +@@ -291,9 +304,16 @@ int print_cpuinfo (void) + sec_s = "?"; + } + +- printf("OMAP%s-%s ES%s, CPU-OPP2 L3-165MHz\n", ++ printf("OMAP%s-%s ES%s, CPU-OPP2, L3-165MHz, ", + cpu_s, sec_s, rev_s[get_cpu_rev()]); + ++ printf("Max clock-"); ++ if ((get_cpu_rev() >= CPU_3XX_ES31) && (get_sku_id() == SKUID_CLK_720MHZ)) ++ printf("720Mhz\n"); ++ else printf("600Mhz\n"); ++ ++ ++ + return 0; + } + #endif /* CONFIG_DISPLAY_CPUINFO */ +diff --git a/include/asm-arm/arch-omap3/cpu.h b/include/asm-arm/arch-omap3/cpu.h +index aa8de32..f769571 100644 +--- a/include/asm-arm/arch-omap3/cpu.h ++++ b/include/asm-arm/arch-omap3/cpu.h +@@ -72,7 +72,8 @@ struct ctrl_id { + u8 res1[0x4]; + u32 idcode; /* 0x04 */ + u32 prod_id; /* 0x08 */ +- u8 res2[0x0C]; ++ u32 sku_id; /* 0x0c */ ++ u8 res2[0x08]; + u32 die_id_0; /* 0x18 */ + u32 die_id_1; /* 0x1C */ + u32 die_id_2; /* 0x20 */ +@@ -89,6 +90,11 @@ struct ctrl_id { + #define HS_DEVICE 0x2 + #define GP_DEVICE 0x3 + ++/* device speed */ ++#define SKUID_CLK_MASK 0xf ++#define SKUID_CLK_600MHZ 0x0 ++#define SKUID_CLK_720MHZ 0x8 ++ + #define GPMC_BASE (OMAP34XX_GPMC_BASE) + #define GPMC_CONFIG_CS0 0x60 + #define GPMC_CONFIG_CS0_BASE (GPMC_BASE + GPMC_CONFIG_CS0) +diff --git a/include/asm-arm/arch-omap3/omap3.h b/include/asm-arm/arch-omap3/omap3.h +index 12815f6..1349b8b 100644 +--- a/include/asm-arm/arch-omap3/omap3.h ++++ b/include/asm-arm/arch-omap3/omap3.h +@@ -176,7 +176,8 @@ struct gpio { + #define CPU_3XX_ES21 2 + #define CPU_3XX_ES30 3 + #define CPU_3XX_ES31 4 +-#define CPU_3XX_MAX_REV (CPU_3XX_ES31 + 1) ++#define CPU_3XX_ES312 7 ++#define CPU_3XX_MAX_REV 8 + + #define CPU_3XX_ID_SHIFT 28 + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0006-OMAP3-add-mpurate-boot-arg-for-overo-and-beagle.patch b/recipes-bsp/u-boot/u-boot/0006-OMAP3-add-mpurate-boot-arg-for-overo-and-beagle.patch new file mode 100644 index 0000000..de3b484 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0006-OMAP3-add-mpurate-boot-arg-for-overo-and-beagle.patch @@ -0,0 +1,70 @@ +From 1b082bb4a8ba5b7bee727baf3cd048e1785c8abd Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Wed, 3 Feb 2010 14:39:14 -0800 +Subject: [PATCH 06/37] OMAP3: add mpurate boot arg for overo and beagle + +allows one to set the omap clock rate via "setenv mpurate 720" for example +--- + include/configs/omap3_beagle.h | 3 +++ + include/configs/omap3_overo.h | 3 +++ + 2 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 87e3dd0..ce347cd 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -182,6 +182,7 @@ + "loadaddr=0x82000000\0" \ + "usbtty=cdc_acm\0" \ + "console=ttyS2,115200n8\0" \ ++ "mpurate=500\0" \ + "vram=12M\0" \ + "dvimode=1024x768MR-16@60\0" \ + "defaultdisplay=dvi\0" \ +@@ -190,6 +191,7 @@ + "nandroot=/dev/mtdblock4 rw\0" \ + "nandrootfstype=jffs2\0" \ + "mmcargs=setenv bootargs console=${console} " \ ++ "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ +@@ -197,6 +199,7 @@ + "root=${mmcroot} " \ + "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ ++ "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ +diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h +index 0d24758..295cce6 100644 +--- a/include/configs/omap3_overo.h ++++ b/include/configs/omap3_overo.h +@@ -152,6 +152,7 @@ + #define CONFIG_EXTRA_ENV_SETTINGS \ + "loadaddr=0x82000000\0" \ + "console=ttyS2,115200n8\0" \ ++ "mpurate=500\0" \ + "vram=12M\0" \ + "dvimode=1024x768MR-16@60\0" \ + "defaultdisplay=dvi\0" \ +@@ -160,6 +161,7 @@ + "nandroot=/dev/mtdblock4 rw\0" \ + "nandrootfstype=jffs2\0" \ + "mmcargs=setenv bootargs console=${console} " \ ++ "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ +@@ -167,6 +169,7 @@ + "root=${mmcroot} " \ + "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ ++ "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0007-OMAP3-detect-expansion-board-type-version-using-eepr.patch b/recipes-bsp/u-boot/u-boot/0007-OMAP3-detect-expansion-board-type-version-using-eepr.patch new file mode 100644 index 0000000..13da414 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0007-OMAP3-detect-expansion-board-type-version-using-eepr.patch @@ -0,0 +1,129 @@ +From 129dccd106ea5862f3ff25c368102bf656472f7f Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Fri, 12 Feb 2010 12:17:48 -0800 +Subject: [PATCH 07/37] OMAP3: detect expansion board type/version using eeprom contents + +--- + board/overo/overo.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 92 insertions(+), 0 deletions(-) + +diff --git a/board/overo/overo.c b/board/overo/overo.c +index 3df1a12..2838a1f 100644 +--- a/board/overo/overo.c ++++ b/board/overo/overo.c +@@ -39,6 +39,31 @@ + #include + #include "overo.h" + ++static struct { ++ unsigned int device_vendor; ++ unsigned char revision; ++ unsigned char content; ++ unsigned char data[6]; ++} expansion_config; ++ ++#define TWL4030_I2C_BUS 0 ++ ++#define EXPANSION_EEPROM_I2C_BUS 2 ++#define EXPANSION_EEPROM_I2C_ADDRESS 0x50 ++ ++#define GUMSTIX_VENDORID 0x0200 ++ ++#define GUMSTIX_SUMMIT 0x01000200 ++#define GUMSTIX_TOBI 0x02000200 ++#define GUMSTIX_TOBI_DUO 0x03000200 ++#define GUMSTIX_PALO35 0x04000200 ++#define GUMSTIX_PALO43 0x05000200 ++#define GUMSTIX_CHESTNUT43 0x06000200 ++#define GUMSTIX_PINTO 0x07000200 ++ ++#define GUMSTIX_NO_EEPROM 0xfffffffe ++#define GUMSTIX_UNKNOWN 0xffffffff ++ + #if defined(CONFIG_CMD_NET) + static void setup_net_chip(void); + #endif +@@ -130,6 +155,31 @@ int get_board_revision(void) { + } + + /* ++ * Routine: get_expansion_id ++ * Description: This function checks for expansion board by checking I2C ++ * bus 2 for the availability of an AT24C01B serial EEPROM. ++ * returns the device_vendor field from the EEPROM ++ */ ++unsigned int get_expansion_id(void) ++{ ++ i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS); ++ ++ /* return GUMSTIX_NO_EEPROM if eeprom doesn't respond */ ++ if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) ++ return GUMSTIX_NO_EEPROM; ++ ++ /* read configuration data */ ++ i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config, ++ sizeof(expansion_config)); ++ ++ if ( (expansion_config.device_vendor & 0xffff) != GUMSTIX_VENDORID ) ++ return GUMSTIX_UNKNOWN; ++ else ++ return expansion_config.device_vendor; ++} ++ ++ ++/* + * Routine: misc_init_r + * Description: Configure board specific parts + */ +@@ -156,6 +206,48 @@ int misc_init_r(void) + printf(" unsupported\n"); + } + ++ switch (get_expansion_id()) { ++ case GUMSTIX_SUMMIT: ++ printf("Recognized Summit expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ setenv("defaultdisplay", "dvi"); ++ break; ++ case GUMSTIX_TOBI: ++ printf("Recognized Tobi expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ setenv("defaultdisplay", "dvi"); ++ break; ++ case GUMSTIX_TOBI_DUO: ++ printf("Recognized Tobi Duo expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ break; ++ case GUMSTIX_PALO35: ++ printf("Recognized Palo 35 expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ setenv("defaultdisplay", "lcd35"); ++ break; ++ case GUMSTIX_PALO43: ++ printf("Recognized Palo 43 expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ setenv("defaultdisplay", "lcd43"); ++ break; ++ case GUMSTIX_CHESTNUT43: ++ printf("Recognized Chestnut 43 expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ setenv("defaultdisplay", "lcd43"); ++ break; ++ case GUMSTIX_PINTO: ++ printf("Recognized Pinto expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.data); ++ break; ++ case GUMSTIX_NO_EEPROM: ++ printf("No EEPROM on expansion board\n"); ++ break; ++ case GUMSTIX_UNKNOWN: ++ printf("Unrecognized expansion board\n"); ++ } ++ ++ i2c_set_bus_num(TWL4030_I2C_BUS); + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0008-OMAP3-Overo-enable-config-eeprom-to-set-u-boot-env-v.patch b/recipes-bsp/u-boot/u-boot/0008-OMAP3-Overo-enable-config-eeprom-to-set-u-boot-env-v.patch new file mode 100644 index 0000000..c7aea04 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0008-OMAP3-Overo-enable-config-eeprom-to-set-u-boot-env-v.patch @@ -0,0 +1,81 @@ +From 4fb2bbcae8f283c46e762aa93b25cbbd55bab8b6 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 16 Feb 2010 09:58:01 -0800 +Subject: [PATCH 08/37] OMAP3: Overo: enable config eeprom to set u-boot env variable + +--- + board/overo/overo.c | 21 +++++++++++++-------- + 1 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/board/overo/overo.c b/board/overo/overo.c +index 2838a1f..f6093d2 100644 +--- a/board/overo/overo.c ++++ b/board/overo/overo.c +@@ -43,7 +43,9 @@ static struct { + unsigned int device_vendor; + unsigned char revision; + unsigned char content; +- unsigned char data[6]; ++ unsigned char fab_revision[8]; ++ unsigned char env_var[16]; ++ unsigned char env_setting[64]; + } expansion_config; + + #define TWL4030_I2C_BUS 0 +@@ -209,36 +211,36 @@ int misc_init_r(void) + switch (get_expansion_id()) { + case GUMSTIX_SUMMIT: + printf("Recognized Summit expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + setenv("defaultdisplay", "dvi"); + break; + case GUMSTIX_TOBI: + printf("Recognized Tobi expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + setenv("defaultdisplay", "dvi"); + break; + case GUMSTIX_TOBI_DUO: + printf("Recognized Tobi Duo expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + break; + case GUMSTIX_PALO35: + printf("Recognized Palo 35 expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + setenv("defaultdisplay", "lcd35"); + break; + case GUMSTIX_PALO43: + printf("Recognized Palo 43 expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + setenv("defaultdisplay", "lcd43"); + break; + case GUMSTIX_CHESTNUT43: + printf("Recognized Chestnut 43 expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + setenv("defaultdisplay", "lcd43"); + break; + case GUMSTIX_PINTO: + printf("Recognized Pinto expansion board (rev %d %s)\n", +- expansion_config.revision, expansion_config.data); ++ expansion_config.revision, expansion_config.fab_revision); + break; + case GUMSTIX_NO_EEPROM: + printf("No EEPROM on expansion board\n"); +@@ -247,6 +249,9 @@ int misc_init_r(void) + printf("Unrecognized expansion board\n"); + } + ++ if (expansion_config.content == 1) ++ setenv(expansion_config.env_var, expansion_config.env_setting); ++ + i2c_set_bus_num(TWL4030_I2C_BUS); + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0009-OMAP3-Overo-enable-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch b/recipes-bsp/u-boot/u-boot/0009-OMAP3-Overo-enable-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch new file mode 100644 index 0000000..b690a6c --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0009-OMAP3-Overo-enable-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch @@ -0,0 +1,34 @@ +From 0ddd7f44f04b47d16d33a6b232b288ebdb1c9992 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 16 Feb 2010 10:00:45 -0800 +Subject: [PATCH 09/37] OMAP3: Overo: enable input on MMC1_CLK and MMC3_CLK pinmux + +--- + board/overo/overo.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/board/overo/overo.h b/board/overo/overo.h +index e120e09..ff936dd 100644 +--- a/board/overo/overo.h ++++ b/board/overo/overo.h +@@ -200,7 +200,7 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MCBSP2_DR), (IEN | PTD | DIS | M0)) /*McBSP2_DR*/\ + MUX_VAL(CP(MCBSP2_DX), (IDIS | PTD | DIS | M0)) /*McBSP2_DX*/\ + /*Expansion card */\ +- MUX_VAL(CP(MMC1_CLK), (IDIS | PTU | EN | M0)) /*MMC1_CLK*/\ ++ MUX_VAL(CP(MMC1_CLK), (IEN | PTU | EN | M0)) /*MMC1_CLK*/\ + MUX_VAL(CP(MMC1_CMD), (IEN | PTU | EN | M0)) /*MMC1_CMD*/\ + MUX_VAL(CP(MMC1_DAT0), (IEN | PTU | EN | M0)) /*MMC1_DAT0*/\ + MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0)) /*MMC1_DAT1*/\ +@@ -301,7 +301,7 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(SYS_OFF_MODE), (IEN | PTD | DIS | M0)) /*SYS_OFF_MODE*/\ + MUX_VAL(CP(SYS_CLKOUT1), (IEN | PTD | DIS | M0)) /*SYS_CLKOUT1*/\ + MUX_VAL(CP(SYS_CLKOUT2), (IEN | PTU | EN | M4)) /*GPIO_186*/\ +- MUX_VAL(CP(ETK_CLK_ES2), (IDIS | PTU | EN | M2)) /*MMC3_CLK*/\ ++ MUX_VAL(CP(ETK_CLK_ES2), (IEN | PTU | EN | M2)) /*MMC3_CLK*/\ + MUX_VAL(CP(ETK_CTL_ES2), (IEN | PTU | EN | M2)) /*MMC3_CMD*/\ + MUX_VAL(CP(ETK_D0_ES2), (IEN | PTU | EN | M4)) /*GPIO_14*/\ + MUX_VAL(CP(ETK_D1_ES2), (IEN | PTD | EN | M4)) /*GPIO_15 - X_GATE*/\ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0010-OMAP3-Overo-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch b/recipes-bsp/u-boot/u-boot/0010-OMAP3-Overo-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch new file mode 100644 index 0000000..53e12b3 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0010-OMAP3-Overo-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch @@ -0,0 +1,25 @@ +From 405a5a151c8d42f157dc48731f6e607675156774 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 16 Feb 2010 10:03:14 -0800 +Subject: [PATCH 10/37] OMAP3: Overo: set CONFIG_SYS_I2C_SPEED to 400Khz + +--- + include/configs/omap3_overo.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h +index 295cce6..fdbeb67 100644 +--- a/include/configs/omap3_overo.h ++++ b/include/configs/omap3_overo.h +@@ -112,7 +112,7 @@ + + #define CONFIG_SYS_NO_FLASH + #define CONFIG_HARD_I2C 1 +-#define CONFIG_SYS_I2C_SPEED 100000 ++#define CONFIG_SYS_I2C_SPEED 400000 + #define CONFIG_SYS_I2C_SLAVE 1 + #define CONFIG_SYS_I2C_BUS 0 + #define CONFIG_SYS_I2C_BUS_SELECT 1 +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0011-OMAP3-trim-excessively-long-delays-in-i2c-driver.patch b/recipes-bsp/u-boot/u-boot/0011-OMAP3-trim-excessively-long-delays-in-i2c-driver.patch new file mode 100644 index 0000000..6a3a5d9 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0011-OMAP3-trim-excessively-long-delays-in-i2c-driver.patch @@ -0,0 +1,52 @@ +From 991f54c9da846ab9571c256adf42d8d80d044bdc Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 16 Feb 2010 10:04:30 -0800 +Subject: [PATCH 11/37] OMAP3: trim excessively long delays in i2c driver + +--- + drivers/i2c/omap24xx_i2c.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c +index 30a8b4c..ba47fc4 100644 +--- a/drivers/i2c/omap24xx_i2c.c ++++ b/drivers/i2c/omap24xx_i2c.c +@@ -148,7 +148,7 @@ static int i2c_read_byte (u8 devaddr, u8 regoffset, u8 * value) + if (status & I2C_STAT_XRDY) { + /* Important: have to use byte access */ + writeb (regoffset, &i2c_base->data); +- udelay (20000); ++ udelay (2000); + if (readw (&i2c_base->stat) & I2C_STAT_NACK) { + i2c_error = 1; + } +@@ -160,7 +160,7 @@ static int i2c_read_byte (u8 devaddr, u8 regoffset, u8 * value) + /* free bus, otherwise we can't use a combined transction */ + writew (0, &i2c_base->con); + while (readw (&i2c_base->stat) || (readw (&i2c_base->con) & I2C_CON_MST)) { +- udelay (10000); ++ udelay (1000); + /* Have to clear pending interrupt to clear I2C_STAT */ + writew (0xFFFF, &i2c_base->stat); + } +@@ -181,7 +181,7 @@ static int i2c_read_byte (u8 devaddr, u8 regoffset, u8 * value) + #else + *value = readw (&i2c_base->data); + #endif +- udelay (20000); ++ udelay (2000); + } else { + i2c_error = 1; + } +@@ -190,7 +190,7 @@ static int i2c_read_byte (u8 devaddr, u8 regoffset, u8 * value) + writew (I2C_CON_EN, &i2c_base->con); + while (readw (&i2c_base->stat) + || (readw (&i2c_base->con) & I2C_CON_MST)) { +- udelay (10000); ++ udelay (1000); + writew (0xFFFF, &i2c_base->stat); + } + } +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0012-OMAP3-Overo-allow-expansion-boards-with-any-vendor-I.patch b/recipes-bsp/u-boot/u-boot/0012-OMAP3-Overo-allow-expansion-boards-with-any-vendor-I.patch new file mode 100644 index 0000000..b554d25 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0012-OMAP3-Overo-allow-expansion-boards-with-any-vendor-I.patch @@ -0,0 +1,47 @@ +From ad1a2c047554deae2e1608d025c4f6891cf8f116 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Fri, 26 Feb 2010 12:40:26 -0800 +Subject: [PATCH 12/37] OMAP3: Overo: allow expansion boards with any vendor ID + +--- + board/overo/overo.c | 10 +++------- + 1 files changed, 3 insertions(+), 7 deletions(-) + +diff --git a/board/overo/overo.c b/board/overo/overo.c +index f6093d2..ec186ec 100644 +--- a/board/overo/overo.c ++++ b/board/overo/overo.c +@@ -63,8 +63,7 @@ static struct { + #define GUMSTIX_CHESTNUT43 0x06000200 + #define GUMSTIX_PINTO 0x07000200 + +-#define GUMSTIX_NO_EEPROM 0xfffffffe +-#define GUMSTIX_UNKNOWN 0xffffffff ++#define GUMSTIX_NO_EEPROM 0xffffffff + + #if defined(CONFIG_CMD_NET) + static void setup_net_chip(void); +@@ -174,10 +173,7 @@ unsigned int get_expansion_id(void) + i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config, + sizeof(expansion_config)); + +- if ( (expansion_config.device_vendor & 0xffff) != GUMSTIX_VENDORID ) +- return GUMSTIX_UNKNOWN; +- else +- return expansion_config.device_vendor; ++ return expansion_config.device_vendor; + } + + +@@ -245,7 +241,7 @@ int misc_init_r(void) + case GUMSTIX_NO_EEPROM: + printf("No EEPROM on expansion board\n"); + break; +- case GUMSTIX_UNKNOWN: ++ default: + printf("Unrecognized expansion board\n"); + } + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0013-OMAP3-Overo-change-address-of-expansion-eeprom-to-0x.patch b/recipes-bsp/u-boot/u-boot/0013-OMAP3-Overo-change-address-of-expansion-eeprom-to-0x.patch new file mode 100644 index 0000000..4bbddcb --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0013-OMAP3-Overo-change-address-of-expansion-eeprom-to-0x.patch @@ -0,0 +1,25 @@ +From 305e2cb16f4f6e8c7f13120e6a98bb1e999c764f Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Fri, 26 Feb 2010 12:42:30 -0800 +Subject: [PATCH 13/37] OMAP3: Overo: change address of expansion eeprom to 0x51 so as to not conflict with EDID address + +--- + board/overo/overo.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/board/overo/overo.c b/board/overo/overo.c +index ec186ec..f96e7ff 100644 +--- a/board/overo/overo.c ++++ b/board/overo/overo.c +@@ -51,7 +51,7 @@ static struct { + #define TWL4030_I2C_BUS 0 + + #define EXPANSION_EEPROM_I2C_BUS 2 +-#define EXPANSION_EEPROM_I2C_ADDRESS 0x50 ++#define EXPANSION_EEPROM_I2C_ADDRESS 0x51 + + #define GUMSTIX_VENDORID 0x0200 + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0014-OMAP3-board.c-don-t-attempt-to-set-up-second-RAM-ban.patch b/recipes-bsp/u-boot/u-boot/0014-OMAP3-board.c-don-t-attempt-to-set-up-second-RAM-ban.patch new file mode 100644 index 0000000..2936dff --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0014-OMAP3-board.c-don-t-attempt-to-set-up-second-RAM-ban.patch @@ -0,0 +1,49 @@ +From 63de99ce613bbfce792ee46d14b324273e6a0d29 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:04:50 -0700 +Subject: [PATCH 14/37] OMAP3: board.c: don't attempt to set up second RAM bank, assume x-load has already done this + +--- + cpu/arm_cortexa8/omap3/board.c | 19 +++++++++---------- + 1 files changed, 9 insertions(+), 10 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/board.c b/cpu/arm_cortexa8/omap3/board.c +index 7b78fa4..0126152 100644 +--- a/cpu/arm_cortexa8/omap3/board.c ++++ b/cpu/arm_cortexa8/omap3/board.c +@@ -232,6 +232,7 @@ void s_init(void) + + per_clocks_enable(); + ++ /* FIXME: u-boot's sdrc setup is broken */ + if (!in_sdram) + sdrc_init(); + } +@@ -281,16 +282,14 @@ int dram_init(void) + { + DECLARE_GLOBAL_DATA_PTR; + unsigned int size0 = 0, size1 = 0; +- +- /* +- * If a second bank of DDR is attached to CS1 this is +- * where it can be started. Early init code will init +- * memory on CS0. +- */ +- if ((sysinfo.mtype == DDR_COMBO) || (sysinfo.mtype == DDR_STACKED)) { +- do_sdrc_init(CS1, NOT_EARLY); +- make_cs1_contiguous(); +- } ++ struct sdrc *sdrc_base = (struct sdrc *)OMAP34XX_SDRC_BASE; ++ struct sdrc_actim *sdrc_actim_base = (struct sdrc_actim *)SDRC_ACTIM_CTRL1_BASE; ++ ++ /* x-load sets up the second bank but */ ++ /* doesn't test to see if it is there */ ++ /* do so now, disable if not present */ ++ if (!mem_ok(CS1)) ++ writel(0, &sdrc_base->cs[1].mcfg); + + size0 = get_sdr_cs_size(CS0); + size1 = get_sdr_cs_size(CS1); +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0015-OMAP3-mem.c-enhance-the-RAM-test.patch b/recipes-bsp/u-boot/u-boot/0015-OMAP3-mem.c-enhance-the-RAM-test.patch new file mode 100644 index 0000000..ce3c3b8 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0015-OMAP3-mem.c-enhance-the-RAM-test.patch @@ -0,0 +1,52 @@ +From f2e3d22fb1963d08844edee45f7d7d6beba32152 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:06:49 -0700 +Subject: [PATCH 15/37] OMAP3: mem.c: enhance the RAM test + +--- + cpu/arm_cortexa8/omap3/mem.c | 28 +++++++++++++++------------- + 1 files changed, 15 insertions(+), 13 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c +index dfb7e4c..b828097 100644 +--- a/cpu/arm_cortexa8/omap3/mem.c ++++ b/cpu/arm_cortexa8/omap3/mem.c +@@ -106,21 +106,23 @@ void make_cs1_contiguous(void) + *******************************************************/ + u32 mem_ok(u32 cs) + { +- u32 val1, val2, addr; ++ u32 i, val1, val2, addr, size; + u32 pattern = 0x12345678; + +- addr = OMAP34XX_SDRC_CS0 + get_sdr_cs_offset(cs); +- +- writel(0x0, addr + 0x400); /* clear pos A */ +- writel(pattern, addr); /* pattern to pos B */ +- writel(0x0, addr + 4); /* remove pattern off the bus */ +- val1 = readl(addr + 0x400); /* get pos A value */ +- val2 = readl(addr); /* get val2 */ ++ size = get_sdr_cs_offset(cs); ++ addr = OMAP34XX_SDRC_CS0 + size; ++ ++ for (i = 0; i < size; i+=1024) { ++ writel(pattern - i, addr + i); ++ } + +- if ((val1 != 0) || (val2 != pattern)) /* see if pos A val changed */ +- return 0; +- else +- return 1; ++ for (i = 0; i < size; i+=1024) { ++ val1 = readl(addr + i); ++ if (val1 != (pattern - i)) { ++ return 0; ++ } ++ } ++ return 1; + } + + /******************************************************** +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0016-env_nand.c-fail-gracefully-if-no-nand-is-present.patch b/recipes-bsp/u-boot/u-boot/0016-env_nand.c-fail-gracefully-if-no-nand-is-present.patch new file mode 100644 index 0000000..5e83125 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0016-env_nand.c-fail-gracefully-if-no-nand-is-present.patch @@ -0,0 +1,27 @@ +From 794e4aa6a5aa5fbe71b08bfe8f5f5f65078fbc68 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:12:16 -0700 +Subject: [PATCH 16/37] env_nand.c: fail gracefully if no nand is present + +--- + common/env_nand.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/common/env_nand.c b/common/env_nand.c +index a15a950..325f112 100644 +--- a/common/env_nand.c ++++ b/common/env_nand.c +@@ -268,6 +268,10 @@ int readenv (size_t offset, u_char * buf) + + u_char *char_ptr; + ++ /* fail if no nand detected */ ++ if (nand_info[0].type == 0) ++ return 1; ++ + blocksize = nand_info[0].erasesize; + len = min(blocksize, CONFIG_ENV_SIZE); + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0017-OMAP3-add-definitions-to-support-sysinfo-cpu-and-cpu.patch b/recipes-bsp/u-boot/u-boot/0017-OMAP3-add-definitions-to-support-sysinfo-cpu-and-cpu.patch new file mode 100644 index 0000000..ad5a213 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0017-OMAP3-add-definitions-to-support-sysinfo-cpu-and-cpu.patch @@ -0,0 +1,68 @@ +From 34622e1e89b615c999480ab48ec004c16f8ca2d5 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:15:29 -0700 +Subject: [PATCH 17/37] OMAP3: add definitions to support sysinfo cpu and cpu family detection + +--- + include/asm-arm/arch-omap3/cpu.h | 6 ------ + include/asm-arm/arch-omap3/omap3.h | 29 +++++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 6 deletions(-) + +diff --git a/include/asm-arm/arch-omap3/cpu.h b/include/asm-arm/arch-omap3/cpu.h +index f769571..d9eec7e 100644 +--- a/include/asm-arm/arch-omap3/cpu.h ++++ b/include/asm-arm/arch-omap3/cpu.h +@@ -60,12 +60,6 @@ struct ctrl { + #endif /* __ASSEMBLY__ */ + #endif /* __KERNEL_STRICT_NAMES */ + +-/* cpu type */ +-#define OMAP3503 0x5c00 +-#define OMAP3515 0x1c00 +-#define OMAP3525 0x4c00 +-#define OMAP3530 0x0c00 +- + #ifndef __KERNEL_STRICT_NAMES + #ifndef __ASSEMBLY__ + struct ctrl_id { +diff --git a/include/asm-arm/arch-omap3/omap3.h b/include/asm-arm/arch-omap3/omap3.h +index 1349b8b..3957c79 100644 +--- a/include/asm-arm/arch-omap3/omap3.h ++++ b/include/asm-arm/arch-omap3/omap3.h +@@ -184,4 +184,33 @@ struct gpio { + #define WIDTH_8BIT 0x0000 + #define WIDTH_16BIT 0x1000 /* bit pos for 16 bit in gpmc */ + ++/* ++ * Hawkeye values ++ */ ++#define HAWKEYE_OMAP34XX 0xb7ae ++#define HAWKEYE_AM35XX 0xb868 ++#define HAWKEYE_OMAP36XX 0xb891 ++ ++#define HAWKEYE_SHIFT 12 ++ ++/* ++ * Define CPU families ++ */ ++#define CPU_OMAP34XX 0x3400 /* OMAP34xx/OMAP35 devices */ ++#define CPU_AM35XX 0x3500 /* AM35xx devices */ ++#define CPU_OMAP36XX 0x3600 /* OMAP36xx devices */ ++ ++/* ++ * Control status register values corresponding to cpu variants ++ */ ++#define OMAP3503 0x5c00 ++#define OMAP3515 0x1c00 ++#define OMAP3525 0x4c00 ++#define OMAP3530 0x0c00 ++ ++#define AM3505 0x5c00 ++#define AM3517 0x1c00 ++ ++#define OMAP3730 0x0c00 ++ + #endif +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0018-OMAP3-sys_info-update-cpu-detection-for-36XX-37XX.patch b/recipes-bsp/u-boot/u-boot/0018-OMAP3-sys_info-update-cpu-detection-for-36XX-37XX.patch new file mode 100644 index 0000000..65f606b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0018-OMAP3-sys_info-update-cpu-detection-for-36XX-37XX.patch @@ -0,0 +1,196 @@ +From 8480eb0272865078290146031e09eb70baed3f6e Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:17:59 -0700 +Subject: [PATCH 18/37] OMAP3 sys_info: update cpu detection for 36XX/37XX + +--- + cpu/arm_cortexa8/omap3/sys_info.c | 137 ++++++++++++++++++++++++++++--------- + 1 files changed, 105 insertions(+), 32 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c +index e227f67..e32a846 100644 +--- a/cpu/arm_cortexa8/omap3/sys_info.c ++++ b/cpu/arm_cortexa8/omap3/sys_info.c +@@ -79,32 +79,72 @@ u32 get_cpu_type(void) + } + + /****************************************** +- * get_cpu_rev(void) - extract version info ++ * get_cpu_id(void) - extract cpu id ++ * returns 0 for ES1.0, cpuid otherwise + ******************************************/ +-u32 get_cpu_rev(void) ++u32 get_cpu_id(void) + { +- u32 cpuid = 0; + struct ctrl_id *id_base; ++ u32 cpuid = 0; + + /* + * On ES1.0 the IDCODE register is not exposed on L4 + * so using CPU ID to differentiate between ES1.0 and > ES1.0. + */ + __asm__ __volatile__("mrc p15, 0, %0, c0, c0, 0":"=r"(cpuid)); +- if ((cpuid & 0xf) == 0x0) +- return CPU_3XX_ES10; +- else { ++ if ((cpuid & 0xf) == 0x0) { ++ return 0; ++ } else { + /* Decode the IDs on > ES1.0 */ + id_base = (struct ctrl_id *) OMAP34XX_ID_L4_IO_BASE; + +- cpuid = (readl(&id_base->idcode) >> CPU_3XX_ID_SHIFT) & 0xf; ++ cpuid = readl(&id_base->idcode); ++ } + +- /* Some early ES2.0 seem to report ID 0, fix this */ +- if(cpuid == 0) +- cpuid = CPU_3XX_ES20; ++ return cpuid; ++} + +- return cpuid; ++/****************************************** ++ * get_cpu_family(void) - extract cpu info ++ ******************************************/ ++u32 get_cpu_family(void) ++{ ++ u16 hawkeye; ++ u32 cpu_family; ++ u32 cpuid = get_cpu_id(); ++ ++ if (cpuid == 0) ++ return CPU_OMAP34XX; ++ ++ hawkeye = (cpuid >> HAWKEYE_SHIFT) & 0xffff; ++ switch(hawkeye) { ++ case HAWKEYE_OMAP34XX: ++ cpu_family = CPU_OMAP34XX; ++ break; ++ case HAWKEYE_AM35XX: ++ cpu_family = CPU_AM35XX; ++ break; ++ case HAWKEYE_OMAP36XX: ++ cpu_family = CPU_OMAP36XX; ++ break; ++ default: ++ cpu_family = CPU_OMAP34XX; + } ++ ++ return cpu_family; ++} ++ ++/****************************************** ++ * get_cpu_rev(void) - extract version info ++ ******************************************/ ++u32 get_cpu_rev(void) ++{ ++ u32 cpuid = get_cpu_id(); ++ ++ if (cpuid == 0) ++ return CPU_3XX_ES10; ++ else ++ return (cpuid >> CPU_3XX_ID_SHIFT) & 0xf; + } + + /***************************************************************** +@@ -267,24 +307,57 @@ u32 get_device_type(void) + */ + int print_cpuinfo (void) + { +- char *cpu_s, *sec_s; +- +- switch (get_cpu_type()) { +- case OMAP3503: +- cpu_s = "3503"; +- break; +- case OMAP3515: +- cpu_s = "3515"; ++ char *cpu_family_s, *cpu_s, *sec_s; ++ ++ switch(get_cpu_family()) { ++ case CPU_OMAP34XX: ++ cpu_family_s = "OMAP"; ++ switch (get_cpu_type()) { ++ case OMAP3503: ++ cpu_s = "3503"; ++ break; ++ case OMAP3515: ++ cpu_s = "3515"; ++ break; ++ case OMAP3525: ++ cpu_s = "3525"; ++ break; ++ case OMAP3530: ++ cpu_s = "3530"; ++ break; ++ default: ++ cpu_s = "35XX"; ++ break; ++ } + break; +- case OMAP3525: +- cpu_s = "3525"; ++ case CPU_AM35XX: ++ cpu_family_s = "AM"; ++ switch (get_cpu_type()) { ++ case AM3505: ++ cpu_s = "3505"; ++ break; ++ case AM3517: ++ cpu_s = "3517"; ++ break; ++ default: ++ cpu_s = "35XX"; ++ break; ++ } + break; +- case OMAP3530: +- cpu_s = "3530"; ++ case CPU_OMAP36XX: ++ cpu_family_s = "OMAP"; ++ switch (get_cpu_type()) { ++ case OMAP3730: ++ cpu_s = "3630/3730"; ++ break; ++ default: ++ cpu_s = "36XX/37XX"; ++ break; ++ } + break; + default: ++ cpu_family_s = "OMAP"; + cpu_s = "35XX"; +- break; + } + + switch (get_device_type()) { +@@ -304,16 +377,16 @@ int print_cpuinfo (void) + sec_s = "?"; + } + +- printf("OMAP%s-%s ES%s, CPU-OPP2, L3-165MHz, ", +- cpu_s, sec_s, rev_s[get_cpu_rev()]); ++ printf("%s%s-%s ES%s, CPU-OPP2, L3-165MHz, ", ++ cpu_family_s, cpu_s, sec_s, rev_s[get_cpu_rev()]); + +- printf("Max clock-"); +- if ((get_cpu_rev() >= CPU_3XX_ES31) && (get_sku_id() == SKUID_CLK_720MHZ)) +- printf("720Mhz\n"); +- else printf("600Mhz\n"); ++ if (get_cpu_family() == CPU_OMAP34XX) ++ if ((get_cpu_rev() >= CPU_3XX_ES31) && ++ (get_sku_id() == SKUID_CLK_720MHZ)) ++ printf("Max clock-720Mhz\n"); ++ else printf("Max clock-600Mhz\n"); ++ else printf("\n"); + +- +- + return 0; + } + #endif /* CONFIG_DISPLAY_CPUINFO */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0019-OMAP3-clocks-update-clock-setup-for-36XX-37XX.patch b/recipes-bsp/u-boot/u-boot/0019-OMAP3-clocks-update-clock-setup-for-36XX-37XX.patch new file mode 100644 index 0000000..e5dbec6 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0019-OMAP3-clocks-update-clock-setup-for-36XX-37XX.patch @@ -0,0 +1,826 @@ +From 0bf419a0faa8c9dc73d7a84f93d7fcb89be3ea21 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:20:56 -0700 +Subject: [PATCH 19/37] OMAP3: clocks: update clock setup for 36XX/37XX + +--- + cpu/arm_cortexa8/omap3/clock.c | 559 +++++++++++++++++++++-------- + cpu/arm_cortexa8/omap3/lowlevel_init.S | 69 ++++ + include/asm-arm/arch-omap3/clocks.h | 17 + + include/asm-arm/arch-omap3/clocks_omap3.h | 27 ++ + 4 files changed, 525 insertions(+), 147 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/clock.c b/cpu/arm_cortexa8/omap3/clock.c +index 6330c9e..538a183 100644 +--- a/cpu/arm_cortexa8/omap3/clock.c ++++ b/cpu/arm_cortexa8/omap3/clock.c +@@ -47,17 +47,12 @@ u32 get_osc_clk_speed(void) + struct s32ktimer *s32k_base = (struct s32ktimer *)SYNC_32KTIMER_BASE; + + val = readl(&prm_base->clksrc_ctrl); +- + if (val & SYSCLKDIV_2) + cdiv = 2; +- else if (val & SYSCLKDIV_1) +- cdiv = 1; + else +- /* +- * Should never reach here! (Assume divider as 1) +- */ + cdiv = 1; + ++ + /* enable timer2 */ + val = readl(&prcm_base->clksel_wkup) | CLKSEL_GPT1; + +@@ -67,7 +62,6 @@ u32 get_osc_clk_speed(void) + /* Enable I and F Clocks for GPT1 */ + val = readl(&prcm_base->iclken_wkup) | EN_GPT1 | EN_32KSYNC; + writel(val, &prcm_base->iclken_wkup); +- + val = readl(&prcm_base->fclken_wkup) | EN_GPT1; + writel(val, &prcm_base->fclken_wkup); + +@@ -87,13 +81,10 @@ u32 get_osc_clk_speed(void) + + /* wait for 40 cycles */ + while (readl(&s32k_base->s32k_cr) < (start + 20)) ; ++ + cend = readl(&gpt1_base->tcrr); /* get end sys_clk count */ + cdiff = cend - cstart; /* get elapsed ticks */ +- +- if (cdiv == 2) +- { +- cdiff *= 2; +- } ++ cdiff *= cdiv; + + /* based on number of ticks assign speed */ + if (cdiff > 19000) +@@ -135,65 +126,25 @@ void get_sys_clkin_sel(u32 osc_clk, u32 *sys_clkin_sel) + } + } + ++/* ++ * OMAP3530 specific functions ++ */ ++ + /****************************************************************************** +- * prcm_init() - inits clocks for PRCM as defined in clocks.h +- * called from SRAM, or Flash (using temp SRAM stack). ++ * Initialize CORE DPLL for OMAP34x/35x + *****************************************************************************/ +-void prcm_init(void) ++static void dpll3_init_34xx(u32 sil_index, u32 clk_index) + { ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_core_dpll_param(); + void (*f_lock_pll) (u32, u32, u32, u32); + int xip_safe, p0, p1, p2, p3; +- u32 osc_clk = 0, sys_clkin_sel; +- u32 clk_index, sil_index = 0; +- struct prm *prm_base = (struct prm *)PRM_BASE; +- struct prcm *prcm_base = (struct prcm *)PRCM_BASE; +- dpll_param *dpll_param_p; +- +- f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start + +- SRAM_VECT_CODE); + + xip_safe = is_running_in_sram(); + +- /* +- * Gauge the input clock speed and find out the sys_clkin_sel +- * value corresponding to the input clock. +- */ +- osc_clk = get_osc_clk_speed(); +- get_sys_clkin_sel(osc_clk, &sys_clkin_sel); ++ /* Moving to the right sysclk and ES rev base */ ++ ptr = ptr + (3 * clk_index) + sil_index; + +- /* set input crystal speed */ +- sr32(&prm_base->clksel, 0, 3, sys_clkin_sel); +- +- /* If the input clock is greater than 19.2M always divide/2 */ +- if (sys_clkin_sel > 2) { +- /* input clock divider */ +- sr32(&prm_base->clksrc_ctrl, 6, 2, 2); +- clk_index = sys_clkin_sel / 2; +- } else { +- /* input clock divider */ +- sr32(&prm_base->clksrc_ctrl, 6, 2, 1); +- clk_index = sys_clkin_sel; +- } +- +- /* +- * The DPLL tables are defined according to sysclk value and +- * silicon revision. The clk_index value will be used to get +- * the values for that input sysclk from the DPLL param table +- * and sil_index will get the values for that SysClk for the +- * appropriate silicon rev. +- */ +- if (get_cpu_rev()) +- sil_index = 1; +- +- /* Unlock MPU DPLL (slows things down, and needed later) */ +- sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOW_POWER_BYPASS); +- wait_on_value(ST_MPU_CLK, 0, &prcm_base->idlest_pll_mpu, LDELAY); +- +- /* Getting the base address of Core DPLL param table */ +- dpll_param_p = (dpll_param *) get_core_dpll_param(); +- +- /* Moving it to the right sysclk and ES rev base */ +- dpll_param_p = dpll_param_p + 3 * clk_index + sil_index; + if (xip_safe) { + /* + * CORE DPLL +@@ -208,34 +159,38 @@ void prcm_init(void) + * work. write another value and then default value. + */ + +- /* m3x2 */ +- sr32(&prcm_base->clksel1_emu, 16, 5, CORE_M3X2 + 1); +- /* m3x2 */ ++ /* CM_CLKSEL1_EMU[DIV_DPLL3] */ ++ sr32(&prcm_base->clksel1_emu, 16, 5, (CORE_M3X2 + 1)) ; + sr32(&prcm_base->clksel1_emu, 16, 5, CORE_M3X2); +- /* Set M2 */ +- sr32(&prcm_base->clksel1_pll, 27, 2, dpll_param_p->m2); +- /* Set M */ +- sr32(&prcm_base->clksel1_pll, 16, 11, dpll_param_p->m); +- /* Set N */ +- sr32(&prcm_base->clksel1_pll, 8, 7, dpll_param_p->n); +- /* 96M Src */ ++ ++ /* M2 (CORE_DPLL_CLKOUT_DIV): CM_CLKSEL1_PLL[27:31] */ ++ sr32(&prcm_base->clksel1_pll, 27, 5, ptr->m2); ++ ++ /* M (CORE_DPLL_MULT): CM_CLKSEL1_PLL[16:26] */ ++ sr32(&prcm_base->clksel1_pll, 16, 11, ptr->m); ++ ++ /* N (CORE_DPLL_DIV): CM_CLKSEL1_PLL[8:14] */ ++ sr32(&prcm_base->clksel1_pll, 8, 7, ptr->n); ++ ++ /* Source is the CM_96M_FCLK: CM_CLKSEL1_PLL[6] */ + sr32(&prcm_base->clksel1_pll, 6, 1, 0); +- /* ssi */ ++ ++ /* SSI */ + sr32(&prcm_base->clksel_core, 8, 4, CORE_SSI_DIV); +- /* fsusb */ ++ /* FSUSB */ + sr32(&prcm_base->clksel_core, 4, 2, CORE_FUSB_DIV); +- /* l4 */ ++ /* L4 */ + sr32(&prcm_base->clksel_core, 2, 2, CORE_L4_DIV); +- /* l3 */ ++ /* L3 */ + sr32(&prcm_base->clksel_core, 0, 2, CORE_L3_DIV); +- /* gfx */ +- sr32(&prcm_base->clksel_gfx, 0, 3, GFX_DIV); +- /* reset mgr */ ++ /* GFX */ ++ sr32(&prcm_base->clksel_gfx, 0, 3, GFX_DIV); ++ /* RESET MGR */ + sr32(&prcm_base->clksel_wkup, 1, 2, WKUP_RSM); +- /* FREQSEL */ +- sr32(&prcm_base->clken_pll, 4, 4, dpll_param_p->fsel); +- /* lock mode */ +- sr32(&prcm_base->clken_pll, 0, 3, PLL_LOCK); ++ /* FREQSEL (CORE_DPLL_FREQSEL): CM_CLKEN_PLL[4:7] */ ++ sr32(&prcm_base->clken_pll, 4, 4, ptr->fsel); ++ /* LOCK MODE */ ++ sr32(&prcm_base->clken_pll, 0, 3, PLL_LOCK); + + wait_on_value(ST_CORE_CLK, 1, &prcm_base->idlest_ckgen, + LDELAY); +@@ -244,102 +199,411 @@ void prcm_init(void) + * if running from flash, jump to small relocated code + * area in SRAM. + */ ++ f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start + ++ SRAM_VECT_CODE); ++ + p0 = readl(&prcm_base->clken_pll); + sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS); +- sr32(&p0, 4, 4, dpll_param_p->fsel); /* FREQSEL */ ++ /* FREQSEL (CORE_DPLL_FREQSEL): CM_CLKEN_PLL[4:7] */ ++ sr32(&p0, 4, 4, ptr->fsel); + + p1 = readl(&prcm_base->clksel1_pll); +- sr32(&p1, 27, 2, dpll_param_p->m2); /* Set M2 */ +- sr32(&p1, 16, 11, dpll_param_p->m); /* Set M */ +- sr32(&p1, 8, 7, dpll_param_p->n); /* Set N */ +- sr32(&p1, 6, 1, 0); /* set source for 96M */ ++ /* M2 (CORE_DPLL_CLKOUT_DIV): CM_CLKSEL1_PLL[27:31] */ ++ sr32(&p1, 27, 5, ptr->m2); ++ /* M (CORE_DPLL_MULT): CM_CLKSEL1_PLL[16:26] */ ++ sr32(&p1, 16, 11, ptr->m); ++ /* N (CORE_DPLL_DIV): CM_CLKSEL1_PLL[8:14] */ ++ sr32(&p1, 8, 7, ptr->n); ++ /* Source is the CM_96M_FCLK: CM_CLKSEL1_PLL[6] */ ++ sr32(&p1, 6, 1, 0); + + p2 = readl(&prcm_base->clksel_core); +- sr32(&p2, 8, 4, CORE_SSI_DIV); /* ssi */ +- sr32(&p2, 4, 2, CORE_FUSB_DIV); /* fsusb */ +- sr32(&p2, 2, 2, CORE_L4_DIV); /* l4 */ +- sr32(&p2, 0, 2, CORE_L3_DIV); /* l3 */ ++ /* SSI */ ++ sr32(&p2, 8, 4, CORE_SSI_DIV); ++ /* FSUSB */ ++ sr32(&p2, 4, 2, CORE_FUSB_DIV); ++ /* L4 */ ++ sr32(&p2, 2, 2, CORE_L4_DIV); ++ /* L3 */ ++ sr32(&p2, 0, 2, CORE_L3_DIV); + + p3 = (u32)&prcm_base->idlest_ckgen; + + (*f_lock_pll) (p0, p1, p2, p3); + } ++} + +- /* PER DPLL */ +- sr32(&prcm_base->clken_pll, 16, 3, PLL_STOP); +- wait_on_value(ST_PERIPH_CLK, 0, &prcm_base->idlest_ckgen, LDELAY); +- +- /* Getting the base address to PER DPLL param table */ +- +- /* Set N */ +- dpll_param_p = (dpll_param *) get_per_dpll_param(); ++/****************************************************************************** ++ * Initialize PER DPLL for OMAP34x/35x ++ *****************************************************************************/ ++static void dpll4_init_34xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_per_dpll_param(); + + /* Moving it to the right sysclk base */ +- dpll_param_p = dpll_param_p + clk_index; ++ ptr = ptr + clk_index; ++ ++ /* EN_PERIPH_DPLL: CM_CLKEN_PLL[16:18] */ ++ sr32(&prcm_base->clken_pll, 16, 3, PLL_STOP); ++ wait_on_value(ST_PERIPH_CLK, 0, &prcm_base->idlest_ckgen, LDELAY); + + /* + * Errata 1.50 Workaround for OMAP3 ES1.0 only + * If using default divisors, write default divisor + 1 + * and then the actual divisor value + */ +- sr32(&prcm_base->clksel1_emu, 24, 5, PER_M6X2 + 1); /* set M6 */ +- sr32(&prcm_base->clksel1_emu, 24, 5, PER_M6X2); /* set M6 */ +- sr32(&prcm_base->clksel_cam, 0, 5, PER_M5X2 + 1); /* set M5 */ +- sr32(&prcm_base->clksel_cam, 0, 5, PER_M5X2); /* set M5 */ +- sr32(&prcm_base->clksel_dss, 0, 5, PER_M4X2 + 1); /* set M4 */ +- sr32(&prcm_base->clksel_dss, 0, 5, PER_M4X2); /* set M4 */ +- sr32(&prcm_base->clksel_dss, 8, 5, PER_M3X2 + 1); /* set M3 */ +- sr32(&prcm_base->clksel_dss, 8, 5, PER_M3X2); /* set M3 */ +- sr32(&prcm_base->clksel3_pll, 0, 5, dpll_param_p->m2 + 1); /* set M2 */ +- sr32(&prcm_base->clksel3_pll, 0, 5, dpll_param_p->m2); /* set M2 */ ++ /* M6 */ ++ sr32(&prcm_base->clksel1_emu, 24, 5, (PER_M6X2 + 1)); ++ sr32(&prcm_base->clksel1_emu, 24, 5, PER_M6X2); ++ /* M5 */ ++ sr32(&prcm_base->clksel_cam, 0, 5, (PER_M5X2 + 1)); ++ sr32(&prcm_base->clksel_cam, 0, 5, PER_M5X2); ++ /* M4 */ ++ sr32(&prcm_base->clksel_dss, 0, 5, (PER_M4X2 + 1)); ++ sr32(&prcm_base->clksel_dss, 0, 5, PER_M4X2); ++ /* M3 */ ++ sr32(&prcm_base->clksel_dss, 8, 5, (PER_M3X2 + 1)); ++ sr32(&prcm_base->clksel_dss, 8, 5, PER_M3X2); ++ /* M2 (DIV_96M): CM_CLKSEL3_PLL[0:4] */ ++ sr32(&prcm_base->clksel3_pll, 0, 5, (ptr->m2 + 1)); ++ sr32(&prcm_base->clksel3_pll, 0, 5, ptr->m2); + /* Workaround end */ + +- sr32(&prcm_base->clksel2_pll, 8, 11, dpll_param_p->m); /* set m */ +- sr32(&prcm_base->clksel2_pll, 0, 7, dpll_param_p->n); /* set n */ +- sr32(&prcm_base->clken_pll, 20, 4, dpll_param_p->fsel); /* FREQSEL */ +- sr32(&prcm_base->clken_pll, 16, 3, PLL_LOCK); /* lock mode */ ++ /* M (PERIPH_DPLL_MULT): CM_CLKSEL2_PLL[8:18] */ ++ sr32(&prcm_base->clksel2_pll, 8, 11, ptr->m); ++ ++ /* N (PERIPH_DPLL_DIV): CM_CLKSEL2_PLL[0:6] */ ++ sr32(&prcm_base->clksel2_pll, 0, 7, ptr->n); ++ ++ /* FREQSEL (PERIPH_DPLL_FREQSEL): CM_CLKEN_PLL[20:23] */ ++ sr32(&prcm_base->clken_pll, 20, 4, ptr->fsel); ++ ++ /* LOCK MODE (EN_PERIPH_DPLL): CM_CLKEN_PLL[16:18] */ ++ sr32(&prcm_base->clken_pll, 16, 3, PLL_LOCK); + wait_on_value(ST_PERIPH_CLK, 2, &prcm_base->idlest_ckgen, LDELAY); ++} + +- /* Getting the base address to MPU DPLL param table */ +- dpll_param_p = (dpll_param *) get_mpu_dpll_param(); ++static void mpu_init_34xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_mpu_dpll_param(); + +- /* Moving it to the right sysclk and ES rev base */ +- dpll_param_p = dpll_param_p + 3 * clk_index + sil_index; ++ /* Moving to the right sysclk and ES rev base */ ++ ptr = ptr + (3 * clk_index) + sil_index; + + /* MPU DPLL (unlocked already) */ + +- /* Set M2 */ +- sr32(&prcm_base->clksel2_pll_mpu, 0, 5, dpll_param_p->m2); +- /* Set M */ +- sr32(&prcm_base->clksel1_pll_mpu, 8, 11, dpll_param_p->m); +- /* Set N */ +- sr32(&prcm_base->clksel1_pll_mpu, 0, 7, dpll_param_p->n); +- /* FREQSEL */ +- sr32(&prcm_base->clken_pll_mpu, 4, 4, dpll_param_p->fsel); +- /* lock mode */ +- sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOCK); +- wait_on_value(ST_MPU_CLK, 1, &prcm_base->idlest_pll_mpu, LDELAY); +- +- /* Getting the base address to IVA DPLL param table */ +- dpll_param_p = (dpll_param *) get_iva_dpll_param(); +- +- /* Moving it to the right sysclk and ES rev base */ +- dpll_param_p = dpll_param_p + 3 * clk_index + sil_index; +- +- /* IVA DPLL (set to 12*20=240MHz) */ ++ /* M2 (MPU_DPLL_CLKOUT_DIV) : CM_CLKSEL2_PLL_MPU[0:4] */ ++ sr32(&prcm_base->clksel2_pll_mpu, 0, 5, ptr->m2); ++ ++ /* M (MPU_DPLL_MULT) : CM_CLKSEL2_PLL_MPU[8:18] */ ++ sr32(&prcm_base->clksel1_pll_mpu, 8, 11, ptr->m); ++ ++ /* N (MPU_DPLL_DIV) : CM_CLKSEL2_PLL_MPU[0:6] */ ++ sr32(&prcm_base->clksel1_pll_mpu, 0, 7, ptr->n); ++ ++ /* FREQSEL (MPU_DPLL_FREQSEL) : CM_CLKEN_PLL_MPU[4:7] */ ++ sr32(&prcm_base->clken_pll_mpu, 4, 4, ptr->fsel); ++} ++ ++static void iva_init_34xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_iva_dpll_param(); ++ ++ /* Moving to the right sysclk and ES rev base */ ++ ptr = ptr + (3 * clk_index) + sil_index; ++ ++ /* IVA DPLL */ ++ /* EN_IVA2_DPLL : CM_CLKEN_PLL_IVA2[0:2] */ + sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_STOP); + wait_on_value(ST_IVA2_CLK, 0, &prcm_base->idlest_pll_iva2, LDELAY); +- /* set M2 */ +- sr32(&prcm_base->clksel2_pll_iva2, 0, 5, dpll_param_p->m2); +- /* set M */ +- sr32(&prcm_base->clksel1_pll_iva2, 8, 11, dpll_param_p->m); +- /* set N */ +- sr32(&prcm_base->clksel1_pll_iva2, 0, 7, dpll_param_p->n); +- /* FREQSEL */ +- sr32(&prcm_base->clken_pll_iva2, 4, 4, dpll_param_p->fsel); +- /* lock mode */ ++ ++ /* M2 (IVA2_DPLL_CLKOUT_DIV) : CM_CLKSEL2_PLL_IVA2[0:4] */ ++ sr32(&prcm_base->clksel2_pll_iva2, 0, 5, ptr->m2); ++ ++ /* M (IVA2_DPLL_MULT) : CM_CLKSEL1_PLL_IVA2[8:18] */ ++ sr32(&prcm_base->clksel1_pll_iva2, 8, 11, ptr->m); ++ ++ /* N (IVA2_DPLL_DIV) : CM_CLKSEL1_PLL_IVA2[0:6] */ ++ sr32(&prcm_base->clksel1_pll_iva2, 0, 7, ptr->n); ++ ++ /* FREQSEL (IVA2_DPLL_FREQSEL) : CM_CLKEN_PLL_IVA2[4:7] */ ++ sr32(&prcm_base->clken_pll_iva2, 4, 4, ptr->fsel); ++ ++ /* LOCK MODE (EN_IVA2_DPLL) : CM_CLKEN_PLL_IVA2[0:2] */ + sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_LOCK); ++ + wait_on_value(ST_IVA2_CLK, 1, &prcm_base->idlest_pll_iva2, LDELAY); ++} ++ ++/* ++ * OMAP3630 specific functions ++ */ ++ ++/****************************************************************************** ++ * Initialize PER DPLL for OMAP36x/37x ++ *****************************************************************************/ ++static void dpll3_init_36xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_36x_core_dpll_param(); ++ void (*f_lock_pll) (u32, u32, u32, u32); ++ int xip_safe, p0, p1, p2, p3; ++ ++ xip_safe = is_running_in_sram(); ++ ++ /* Moving it to the right sysclk base */ ++ ptr += clk_index; ++ ++ if (xip_safe) { ++ /* CORE DPLL */ ++ ++ /* Select relock bypass: CM_CLKEN_PLL[0:2] */ ++ sr32(&prcm_base->clken_pll, 0, 3, PLL_FAST_RELOCK_BYPASS); ++ wait_on_value(ST_CORE_CLK, 0, &prcm_base->idlest_ckgen, ++ LDELAY); ++ ++ /* CM_CLKSEL1_EMU[DIV_DPLL3] */ ++ sr32(&prcm_base->clksel1_emu, 16, 5, CORE_M3X2); ++ ++ /* M2 (CORE_DPLL_CLKOUT_DIV): CM_CLKSEL1_PLL[27:31] */ ++ sr32(&prcm_base->clksel1_pll, 27, 5, ptr->m2); ++ ++ /* M (CORE_DPLL_MULT): CM_CLKSEL1_PLL[16:26] */ ++ sr32(&prcm_base->clksel1_pll, 16, 11, ptr->m); ++ ++ /* N (CORE_DPLL_DIV): CM_CLKSEL1_PLL[8:14] */ ++ sr32(&prcm_base->clksel1_pll, 8, 7, ptr->n); ++ ++ /* Source is the CM_96M_FCLK: CM_CLKSEL1_PLL[6] */ ++ sr32(&prcm_base->clksel1_pll, 6, 1, 0); ++ ++ /* SSI */ ++ sr32(&prcm_base->clksel_core, 8, 4, CORE_SSI_DIV); ++ /* FSUSB */ ++ sr32(&prcm_base->clksel_core, 4, 2, CORE_FUSB_DIV); ++ /* L4 */ ++ sr32(&prcm_base->clksel_core, 2, 2, CORE_L4_DIV); ++ /* L3 */ ++ sr32(&prcm_base->clksel_core, 0, 2, CORE_L3_DIV); ++ /* GFX */ ++ sr32(&prcm_base->clksel_gfx, 0, 3, GFX_DIV); ++ /* RESET MGR */ ++ sr32(&prcm_base->clksel_wkup, 1, 2, WKUP_RSM); ++ /* FREQSEL (CORE_DPLL_FREQSEL): CM_CLKEN_PLL[4:7] */ ++ sr32(&prcm_base->clken_pll, 4, 4, ptr->fsel); ++ /* LOCK MODE */ ++ sr32(&prcm_base->clken_pll, 0, 3, PLL_LOCK); ++ ++ wait_on_value(ST_CORE_CLK, 1, &prcm_base->idlest_ckgen, ++ LDELAY); ++ } else if (is_running_in_flash()) { ++ /* ++ * if running from flash, jump to small relocated code ++ * area in SRAM. ++ */ ++ f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start + ++ SRAM_VECT_CODE); ++ ++ p0 = readl(&prcm_base->clken_pll); ++ sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS); ++ /* FREQSEL (CORE_DPLL_FREQSEL): CM_CLKEN_PLL[4:7] */ ++ sr32(&p0, 4, 4, ptr->fsel); ++ ++ p1 = readl(&prcm_base->clksel1_pll); ++ /* M2 (CORE_DPLL_CLKOUT_DIV): CM_CLKSEL1_PLL[27:31] */ ++ sr32(&p1, 27, 5, ptr->m2); ++ /* M (CORE_DPLL_MULT): CM_CLKSEL1_PLL[16:26] */ ++ sr32(&p1, 16, 11, ptr->m); ++ /* N (CORE_DPLL_DIV): CM_CLKSEL1_PLL[8:14] */ ++ sr32(&p1, 8, 7, ptr->n); ++ /* Source is the CM_96M_FCLK: CM_CLKSEL1_PLL[6] */ ++ sr32(&p1, 6, 1, 0); ++ ++ p2 = readl(&prcm_base->clksel_core); ++ /* SSI */ ++ sr32(&p2, 8, 4, CORE_SSI_DIV); ++ /* FSUSB */ ++ sr32(&p2, 4, 2, CORE_FUSB_DIV); ++ /* L4 */ ++ sr32(&p2, 2, 2, CORE_L4_DIV); ++ /* L3 */ ++ sr32(&p2, 0, 2, CORE_L3_DIV); ++ ++ p3 = (u32)&prcm_base->idlest_ckgen; ++ ++ (*f_lock_pll) (p0, p1, p2, p3); ++ } ++} ++ ++static void dpll4_init_36xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ struct dpll_per_36x_param *ptr; ++ ++ ptr = (struct dpll_per_36x_param *)get_36x_per_dpll_param(); ++ ++ /* Moving it to the right sysclk base */ ++ ptr += clk_index; ++ ++ /* EN_PERIPH_DPLL: CM_CLKEN_PLL[16:18] */ ++ sr32(&prcm_base->clken_pll, 16, 3, PLL_STOP); ++ wait_on_value(ST_PERIPH_CLK, 0, &prcm_base->idlest_ckgen, LDELAY); ++ ++ /* M6 (DIV_DPLL4): CM_CLKSEL1_EMU[24:29] */ ++ sr32(&prcm_base->clksel1_emu, 24, 6, ptr->m6); ++ ++ /* M5 (CLKSEL_CAM): CM_CLKSEL1_EMU[0:5] */ ++ sr32(&prcm_base->clksel_cam, 0, 6, ptr->m5); ++ ++ /* M4 (CLKSEL_DSS1): CM_CLKSEL_DSS[0:5] */ ++ sr32(&prcm_base->clksel_dss, 0, 6, ptr->m4); ++ ++ /* M3 (CLKSEL_DSS1): CM_CLKSEL_DSS[8:13] */ ++ sr32(&prcm_base->clksel_dss, 8, 6, ptr->m3); ++ ++ /* M2 (DIV_96M): CM_CLKSEL3_PLL[0:4] */ ++ sr32(&prcm_base->clksel3_pll, 0, 5, ptr->m2); ++ ++ /* M (PERIPH_DPLL_MULT): CM_CLKSEL2_PLL[8:19] */ ++ sr32(&prcm_base->clksel2_pll, 8, 12, ptr->m); ++ ++ /* N (PERIPH_DPLL_DIV): CM_CLKSEL2_PLL[0:6] */ ++ sr32(&prcm_base->clksel2_pll, 0, 7, ptr->n); ++ ++ /* M2DIV (CLKSEL_96M): CM_CLKSEL_CORE[12:13] */ ++ sr32(&prcm_base->clksel_core, 12, 2, ptr->m2div); ++ ++ /* LOCK MODE (EN_PERIPH_DPLL): CM_CLKEN_PLL[16:18] */ ++ sr32(&prcm_base->clken_pll, 16, 3, PLL_LOCK); ++ wait_on_value(ST_PERIPH_CLK, 2, &prcm_base->idlest_ckgen, LDELAY); ++} ++ ++static void mpu_init_36xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *) get_36x_mpu_dpll_param(); ++ ++ /* Moving to the right sysclk */ ++ ptr += clk_index; ++ ++ /* MPU DPLL (unlocked already */ ++ ++ /* M2 (MPU_DPLL_CLKOUT_DIV) : CM_CLKSEL2_PLL_MPU[0:4] */ ++ sr32(&prcm_base->clksel2_pll_mpu, 0, 5, ptr->m2); ++ ++ /* M (MPU_DPLL_MULT) : CM_CLKSEL2_PLL_MPU[8:18] */ ++ sr32(&prcm_base->clksel1_pll_mpu, 8, 11, ptr->m); ++ ++ /* N (MPU_DPLL_DIV) : CM_CLKSEL2_PLL_MPU[0:6] */ ++ sr32(&prcm_base->clksel1_pll_mpu, 0, 7, ptr->n); ++} ++ ++static void iva_init_36xx(u32 sil_index, u32 clk_index) ++{ ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ dpll_param *ptr = (dpll_param *)get_36x_iva_dpll_param(); ++ ++ /* Moving to the right sysclk */ ++ ptr += clk_index; ++ ++ /* IVA DPLL */ ++ /* EN_IVA2_DPLL : CM_CLKEN_PLL_IVA2[0:2] */ ++ sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_STOP); ++ wait_on_value(ST_IVA2_CLK, 0, &prcm_base->idlest_pll_iva2, LDELAY); ++ ++ /* M2 (IVA2_DPLL_CLKOUT_DIV) : CM_CLKSEL2_PLL_IVA2[0:4] */ ++ sr32(&prcm_base->clksel2_pll_iva2, 0, 5, ptr->m2); ++ ++ /* M (IVA2_DPLL_MULT) : CM_CLKSEL1_PLL_IVA2[8:18] */ ++ sr32(&prcm_base->clksel1_pll_iva2, 8, 11, ptr->m); ++ ++ /* N (IVA2_DPLL_DIV) : CM_CLKSEL1_PLL_IVA2[0:6] */ ++ sr32(&prcm_base->clksel1_pll_iva2, 0, 7, ptr->n); ++ ++ /* LOCK (MODE (EN_IVA2_DPLL) : CM_CLKEN_PLL_IVA2[0:2] */ ++ sr32(&prcm_base->clken_pll_iva2, 0, 3, PLL_LOCK); ++ ++ wait_on_value(ST_IVA2_CLK, 1, &prcm_base->idlest_pll_iva2, LDELAY); ++} ++ ++/****************************************************************************** ++ * prcm_init() - inits clocks for PRCM as defined in clocks.h ++ * called from SRAM, or Flash (using temp SRAM stack). ++ *****************************************************************************/ ++void prcm_init(void) ++{ ++ u32 osc_clk = 0, sys_clkin_sel; ++ u32 clk_index, sil_index = 0; ++ struct prm *prm_base = (struct prm *)PRM_BASE; ++ struct prcm *prcm_base = (struct prcm *)PRCM_BASE; ++ ++ /* ++ * Gauge the input clock speed and find out the sys_clkin_sel ++ * value corresponding to the input clock. ++ */ ++ osc_clk = get_osc_clk_speed(); ++ get_sys_clkin_sel(osc_clk, &sys_clkin_sel); ++ ++ /* set input crystal speed */ ++ sr32(&prm_base->clksel, 0, 3, sys_clkin_sel); ++ ++ /* If the input clock is greater than 19.2M always divide/2 */ ++ if (sys_clkin_sel > 2) { ++ /* input clock divider */ ++ sr32(&prm_base->clksrc_ctrl, 6, 2, 2); ++ clk_index = sys_clkin_sel / 2; ++ } else { ++ /* input clock divider */ ++ sr32(&prm_base->clksrc_ctrl, 6, 2, 1); ++ clk_index = sys_clkin_sel; ++ } ++ ++ if (get_cpu_family() == CPU_OMAP36XX) { ++ /* Unlock MPU DPLL (slows things down, and needed later) */ ++ sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOW_POWER_BYPASS); ++ wait_on_value(ST_MPU_CLK, 0, &prcm_base->idlest_pll_mpu, ++ LDELAY); ++ ++ dpll3_init_36xx(0, clk_index); ++ dpll4_init_36xx(0, clk_index); ++ iva_init_36xx(0, clk_index); ++ mpu_init_36xx(0, clk_index); ++ ++ /* Lock MPU DPLL to set frequency */ ++ sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOCK); ++ wait_on_value(ST_MPU_CLK, 1, &prcm_base->idlest_pll_mpu, ++ LDELAY); ++ } else { ++ /* ++ * The DPLL tables are defined according to sysclk value and ++ * silicon revision. The clk_index value will be used to get ++ * the values for that input sysclk from the DPLL param table ++ * and sil_index will get the values for that SysClk for the ++ * appropriate silicon rev. ++ */ ++ if (((get_cpu_family() == CPU_OMAP34XX) ++ && (get_cpu_rev() >= CPU_3XX_ES20)) || ++ (get_cpu_family() == CPU_AM35XX)) ++ sil_index = 1; ++ ++ /* Unlock MPU DPLL (slows things down, and needed later) */ ++ sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOW_POWER_BYPASS); ++ wait_on_value(ST_MPU_CLK, 0, &prcm_base->idlest_pll_mpu, ++ LDELAY); ++ ++ dpll3_init_34xx(sil_index, clk_index); ++ dpll4_init_34xx(sil_index, clk_index); ++ iva_init_34xx(sil_index, clk_index); ++ mpu_init_34xx(sil_index, clk_index); ++ ++ /* Lock MPU DPLL to set frequency */ ++ sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOCK); ++ wait_on_value(ST_MPU_CLK, 1, &prcm_base->idlest_pll_mpu, ++ LDELAY); ++ } + + /* Set up GPTimers to sys_clk source only */ + sr32(&prcm_base->clksel_per, 0, 8, 0xff); +@@ -414,3 +678,4 @@ void per_clocks_enable(void) + + sdelay(1000); + } ++ +diff --git a/cpu/arm_cortexa8/omap3/lowlevel_init.S b/cpu/arm_cortexa8/omap3/lowlevel_init.S +index 73063ec..2045e4e 100644 +--- a/cpu/arm_cortexa8/omap3/lowlevel_init.S ++++ b/cpu/arm_cortexa8/omap3/lowlevel_init.S +@@ -359,3 +359,72 @@ per_dpll_param: + get_per_dpll_param: + adr r0, per_dpll_param + mov pc, lr ++ ++/* ++ * Tables for 36x/37x devices ++ * ++ */ ++mpu_36x_dpll_param: ++/* 12MHz */ ++.word 50, 0, 0, 1 ++/* 13MHz */ ++.word 600, 12, 0, 1 ++/* 19.2MHz */ ++.word 125, 3, 0, 1 ++/* 26MHz */ ++.word 300, 12, 0, 1 ++/* 38.4MHz */ ++.word 125, 7, 0, 1 ++ ++iva_36x_dpll_param: ++/* 12MHz */ ++.word 130, 2, 0, 1 ++/* 13MHz */ ++.word 40, 0, 0, 1 ++/* 19.2MHz */ ++.word 325, 11, 0, 1 ++/* 26MHz */ ++.word 20, 0, 0, 1 ++/* 38.4MHz */ ++.word 325, 23, 0, 1 ++ ++core_36x_dpll_param: ++/* 12MHz */ ++.word 100, 2, 0, 1 ++/* 13MHz */ ++.word 400, 12, 0, 1 ++/* 19.2MHz */ ++.word 375, 17, 0, 1 ++/* 26MHz */ ++.word 200, 12, 0, 1 ++/* 38.4MHz */ ++.word 375, 35, 0, 1 ++ ++per_36x_dpll_param: ++/* SYSCLK M N M2 M3 M4 M5 M6 m2DIV */ ++.word 12000, 360, 4, 9, 16, 5, 4, 3, 1 ++.word 13000, 864, 12, 9, 16, 9, 4, 3, 1 ++.word 19200, 360, 7, 9, 16, 5, 4, 3, 1 ++.word 26000, 432, 12, 9, 16, 9, 4, 3, 1 ++.word 38400, 360, 15, 9, 16, 5, 4, 3, 1 ++ ++.globl get_36x_mpu_dpll_param ++get_36x_mpu_dpll_param: ++ adr r0, mpu_36x_dpll_param ++ mov pc, lr ++ ++.globl get_36x_iva_dpll_param ++get_36x_iva_dpll_param: ++ adr r0, iva_36x_dpll_param ++ mov pc, lr ++ ++.globl get_36x_core_dpll_param ++get_36x_core_dpll_param: ++ adr r0, core_36x_dpll_param ++ mov pc, lr ++ ++.globl get_36x_per_dpll_param ++get_36x_per_dpll_param: ++ adr r0, per_36x_dpll_param ++ mov pc, lr ++ +diff --git a/include/asm-arm/arch-omap3/clocks.h b/include/asm-arm/arch-omap3/clocks.h +index 71a0cb6..a5f2d08 100644 +--- a/include/asm-arm/arch-omap3/clocks.h ++++ b/include/asm-arm/arch-omap3/clocks.h +@@ -51,12 +51,29 @@ typedef struct { + unsigned int m2; + } dpll_param; + ++struct dpll_per_36x_param { ++ unsigned int sys_clk; ++ unsigned int m; ++ unsigned int n; ++ unsigned int m2; ++ unsigned int m3; ++ unsigned int m4; ++ unsigned int m5; ++ unsigned int m6; ++ unsigned int m2div; ++}; ++ + /* Following functions are exported from lowlevel_init.S */ + extern dpll_param *get_mpu_dpll_param(void); + extern dpll_param *get_iva_dpll_param(void); + extern dpll_param *get_core_dpll_param(void); + extern dpll_param *get_per_dpll_param(void); + ++extern dpll_param *get_36x_mpu_dpll_param(void); ++extern dpll_param *get_36x_iva_dpll_param(void); ++extern dpll_param *get_36x_core_dpll_param(void); ++extern dpll_param *get_36x_per_dpll_param(void); ++ + extern void *_end_vect, *_start; + + #endif +diff --git a/include/asm-arm/arch-omap3/clocks_omap3.h b/include/asm-arm/arch-omap3/clocks_omap3.h +index 661407b..30ef690 100644 +--- a/include/asm-arm/arch-omap3/clocks_omap3.h ++++ b/include/asm-arm/arch-omap3/clocks_omap3.h +@@ -282,4 +282,31 @@ + #define PER_FSEL_38P4 0x07 + #define PER_M2_38P4 0x09 + ++/* 36XX PER DPLL */ ++ ++#define PER_36XX_M_12 0x1B0 ++#define PER_36XX_N_12 0x05 ++#define PER_36XX_FSEL_12 0x07 ++#define PER_36XX_M2_12 0x09 ++ ++#define PER_36XX_M_13 0x360 ++#define PER_36XX_N_13 0x0C ++#define PER_36XX_FSEL_13 0x03 ++#define PER_36XX_M2_13 0x09 ++ ++#define PER_36XX_M_19P2 0x1C2 ++#define PER_36XX_N_19P2 0x09 ++#define PER_36XX_FSEL_19P2 0x07 ++#define PER_36XX_M2_19P2 0x09 ++ ++#define PER_36XX_M_26 0x1B0 ++#define PER_36XX_N_26 0x0C ++#define PER_36XX_FSEL_26 0x07 ++#define PER_36XX_M2_26 0x09 ++ ++#define PER_36XX_M_38P4 0x1C2 ++#define PER_36XX_N_38P4 0x13 ++#define PER_36XX_FSEL_38P4 0x07 ++#define PER_36XX_M2_38P4 0x09 ++ + #endif /* endif _CLOCKS_OMAP3_H_ */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0020-OMAP3-beagle-add-support-for-Beagle-xM.patch b/recipes-bsp/u-boot/u-boot/0020-OMAP3-beagle-add-support-for-Beagle-xM.patch new file mode 100644 index 0000000..e6ae0dc --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0020-OMAP3-beagle-add-support-for-Beagle-xM.patch @@ -0,0 +1,137 @@ +From 27c6c30dbb5de0c0ed30ceaf69bb0e9f12149c03 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Tue, 23 Mar 2010 09:21:49 -0700 +Subject: [PATCH 20/37] OMAP3: beagle: add support for Beagle xM + +--- + board/ti/beagle/beagle.c | 23 +++++++++++++++-------- + board/ti/beagle/beagle.h | 34 ++++++++++++++++++++++++++++++---- + include/configs/omap3_beagle.h | 1 + + 3 files changed, 46 insertions(+), 12 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index b4ea7e6..d357588 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -75,7 +75,7 @@ int beagle_get_revision(void) + * GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx + * GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2/3 + * GPIO173, GPIO172, GPIO171: 1 0 1 => C4 +- * GPIO173, GPIO172, GPIO171: 0 0 0 => D ++ * GPIO173, GPIO172, GPIO171: 0 0 0 => XM + */ + void beagle_identify(void) + { +@@ -108,29 +108,36 @@ int misc_init_r(void) + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); + +- printf("Board revision "); + switch (beagle_revision) { + case REVISION_AXBX: +- printf("Ax/Bx\n"); ++ printf("Beagle Rev Ax/Bx\n"); + break; + case REVISION_CX: +- printf("C1/C2/C3\n"); ++ printf("Beagle Rev C1/C2/C3\n"); + MUX_BEAGLE_C(); + break; + case REVISION_C4: +- printf("C4\n"); ++ printf("Beagle Rev C4\n"); + MUX_BEAGLE_C(); + /* Set VAUX2 to 1.8V for EHCI PHY */ + twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, + TWL4030_PM_RECEIVER_VAUX2_VSEL_18, + TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, + TWL4030_PM_RECEIVER_DEV_GRP_P1); ++ setenv("mpurate", "720"); + break; +- case REVISION_D: +- printf("D\n"); ++ case REVISION_XM: ++ printf("Beagle xM Rev A\n"); ++ MUX_BEAGLE_XM(); ++ /* Set VAUX2 to 1.8V for EHCI PHY */ ++ twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, ++ TWL4030_PM_RECEIVER_VAUX2_VSEL_18, ++ TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, ++ TWL4030_PM_RECEIVER_DEV_GRP_P1); ++ setenv("mpurate", "720"); + break; + default: +- printf("unknown 0x%02x\n", beagle_revision); ++ printf("Beagle unknown 0x%02x\n", beagle_revision); + } + + /* Configure GPIOs to output */ +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index d95fd78..fd06d46 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -38,7 +38,7 @@ const omap3_sysinfo sysinfo = { + #define REVISION_AXBX 0x7 + #define REVISION_CX 0x6 + #define REVISION_C4 0x5 +-#define REVISION_D 0x0 ++#define REVISION_XM 0x0 + + /* + * IEN - Input Enable +@@ -379,11 +379,37 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/ + + #define MUX_BEAGLE_C() \ +- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ +- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ +- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ + MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\ + MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ + MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/ + ++#define MUX_BEAGLE_XM() \ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\ ++ MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ ++ MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/\ ++ MUX_VAL(CP(DSS_DATA0), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA1), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA2), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA3), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA4), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA5), (IDIS | PTD | DIS | M7)) /*safe_mode*/\ ++ MUX_VAL(CP(DSS_DATA18), (IDIS | PTD | DIS | M3)) /*DSS_DATA0*/\ ++ MUX_VAL(CP(DSS_DATA19), (IDIS | PTD | DIS | M3)) /*DSS_DATA1*/\ ++ MUX_VAL(CP(DSS_DATA20), (IDIS | PTD | DIS | M3)) /*DSS_DATA2*/\ ++ MUX_VAL(CP(DSS_DATA21), (IDIS | PTD | DIS | M3)) /*DSS_DATA3*/\ ++ MUX_VAL(CP(DSS_DATA22), (IDIS | PTD | DIS | M3)) /*DSS_DATA4*/\ ++ MUX_VAL(CP(DSS_DATA23), (IDIS | PTD | DIS | M3)) /*DSS_DATA5*/\ ++ MUX_VAL(CP(SYS_BOOT0), (IDIS | PTD | DIS | M3)) /*DSS_DATA18*/\ ++ MUX_VAL(CP(SYS_BOOT1), (IDIS | PTD | DIS | M3)) /*DSS_DATA19*/\ ++ MUX_VAL(CP(SYS_BOOT3), (IDIS | PTD | DIS | M3)) /*DSS_DATA20*/\ ++ MUX_VAL(CP(SYS_BOOT4), (IDIS | PTD | DIS | M3)) /*DSS_DATA21*/\ ++ MUX_VAL(CP(SYS_BOOT5), (IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\ ++ MUX_VAL(CP(SYS_BOOT6), (IDIS | PTD | DIS | M3)) /*DSS_DATA23*/ ++ + #endif +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index ce347cd..bba36df 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -157,6 +157,7 @@ + /* + * Board NAND Info. + */ ++#define CONFIG_SYS_NAND_QUIET_TEST 1 + #define CONFIG_NAND_OMAP_GPMC + #define CONFIG_SYS_NAND_ADDR NAND_BASE /* physical address */ + /* to access nand */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0021-OMAP3-Beagle-Overo-remove-omapfb.debug-y-from-defaul.patch b/recipes-bsp/u-boot/u-boot/0021-OMAP3-Beagle-Overo-remove-omapfb.debug-y-from-defaul.patch new file mode 100644 index 0000000..01aedc8 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0021-OMAP3-Beagle-Overo-remove-omapfb.debug-y-from-defaul.patch @@ -0,0 +1,53 @@ +From e26b222adeea78777a89e9b0d0aefed67cde7d55 Mon Sep 17 00:00:00 2001 +From: Steve Sakoman +Date: Thu, 25 Mar 2010 06:54:47 -0700 +Subject: [PATCH 21/37] OMAP3: Beagle, Overo: remove omapfb.debug=y from default env + +--- + include/configs/omap3_beagle.h | 2 -- + include/configs/omap3_overo.h | 2 -- + 2 files changed, 0 insertions(+), 4 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index bba36df..c156cea 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -195,7 +195,6 @@ + "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ +- "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${mmcroot} " \ + "rootfstype=${mmcrootfstype}\0" \ +@@ -203,7 +202,6 @@ + "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ +- "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${nandroot} " \ + "rootfstype=${nandrootfstype}\0" \ +diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h +index fdbeb67..418e2ea 100644 +--- a/include/configs/omap3_overo.h ++++ b/include/configs/omap3_overo.h +@@ -164,7 +164,6 @@ + "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ +- "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${mmcroot} " \ + "rootfstype=${mmcrootfstype}\0" \ +@@ -172,7 +171,6 @@ + "mpurate=${mpurate} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ +- "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${nandroot} " \ + "rootfstype=${nandrootfstype}\0" \ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0022-OMAP3-beagle-implement-expansionboard-detection-base.patch b/recipes-bsp/u-boot/u-boot/0022-OMAP3-beagle-implement-expansionboard-detection-base.patch new file mode 100644 index 0000000..91d09ab --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0022-OMAP3-beagle-implement-expansionboard-detection-base.patch @@ -0,0 +1,157 @@ +From 851d35fab7f93400a1d714524b5e986206d9b0c4 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 25 Mar 2010 16:07:23 +0100 +Subject: [PATCH 22/37] OMAP3: beagle: implement expansionboard detection based on board/overo.c code + +--- + board/ti/beagle/beagle.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++ + board/ti/beagle/beagle.h | 25 +++++++++++++- + 2 files changed, 101 insertions(+), 2 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index d357588..8c5b88c 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -38,6 +38,31 @@ + #include + #include "beagle.h" + ++static struct { ++ unsigned int device_vendor; ++ unsigned char revision; ++ unsigned char content; ++ unsigned char fab_revision[8]; ++ unsigned char env_var[16]; ++ unsigned char env_setting[64]; ++} expansion_config; ++ ++#define TWL4030_I2C_BUS 0 ++ ++#define EXPANSION_EEPROM_I2C_BUS 1 ++#define EXPANSION_EEPROM_I2C_ADDRESS 0x50 ++ ++#define TINCANTOOLS_VENDORID 0x0100 ++#define GUMSTIX_VENDORID 0x0200 ++#define SPECIALCOMP_VENDORID 0x0300 ++ ++#define TINCANTOOLS_ZIPPY 0x01000100 ++#define TINCANTOOLS_ZIPPY2 0x02000100 ++#define TINCANTOOLS_TRAINER 0x03000100 ++#define TINCANTOOLS_SHOWDOG 0x04000100 ++ ++#define BEAGLE_NO_EEPROM 0xffffffff ++ + static int beagle_revision; + + /* +@@ -95,6 +120,27 @@ void beagle_identify(void) + } + + /* ++ * Routine: get_expansion_id ++ * Description: This function checks for expansion board by checking I2C ++ * bus 2 for the availability of an AT24C01B serial EEPROM. ++ * returns the device_vendor field from the EEPROM ++ */ ++unsigned int get_expansion_id(void) ++{ ++ i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS); ++ ++ /* return BEAGLE_NO_EEPROM if eeprom doesn't respond */ ++ if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) ++ return BEAGLE_NO_EEPROM; ++ ++ /* read configuration data */ ++ i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config, ++ sizeof(expansion_config)); ++ ++ return expansion_config.device_vendor; ++} ++ ++/* + * Routine: misc_init_r + * Description: Configure board specific parts + */ +@@ -104,6 +150,38 @@ int misc_init_r(void) + struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE; + + beagle_identify(); ++ switch (get_expansion_id()) { ++ case TINCANTOOLS_ZIPPY: ++ printf("Recognized Tincantools Zippy expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.fab_revision); ++ MUX_TINCANTOOLS_ZIPPY(); ++ break; ++ case TINCANTOOLS_ZIPPY2: ++ printf("Recognized Tincantools Zippy2 expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.fab_revision); ++ MUX_TINCANTOOLS_ZIPPY(); ++ break; ++ case TINCANTOOLS_TRAINER: ++ printf("Recognized Tincantools Trainer expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.fab_revision); ++ break; ++ case TINCANTOOLS_SHOWDOG: ++ printf("Recognized Tincantools Showdow expansion board (rev %d %s)\n", ++ expansion_config.revision, expansion_config.fab_revision); ++ /* Place holder for DSS2 definition for showdog lcd */ ++ setenv("defaultdisplay", "showdoglcd"); ++ break; ++ case BEAGLE_NO_EEPROM: ++ printf("No EEPROM on expansion board\n"); ++ break; ++ default: ++ printf("Unrecognized expansion board: %x\n", expansion_config.device_vendor); ++ } ++ ++ if (expansion_config.content == 1) ++ setenv(expansion_config.env_var, expansion_config.env_setting); ++ ++ i2c_set_bus_num(TWL4030_I2C_BUS); + + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index fd06d46..ec4f831 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -260,8 +260,8 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ + MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\ + MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\ +- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\ +- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\ ++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\ ++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\ + MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\ + MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\ + MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\ +@@ -412,4 +412,25 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(SYS_BOOT5), (IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\ + MUX_VAL(CP(SYS_BOOT6), (IDIS | PTD | DIS | M3)) /*DSS_DATA23*/ + ++#define MUX_TINCANTOOLS_ZIPPY() \ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ ++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\ ++ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ ++ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\ ++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ ++ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\ ++ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ + #endif +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0023-beagleboard-display-message-about-I2C-errors-being-e.patch b/recipes-bsp/u-boot/u-boot/0023-beagleboard-display-message-about-I2C-errors-being-e.patch new file mode 100644 index 0000000..d7ac713 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0023-beagleboard-display-message-about-I2C-errors-being-e.patch @@ -0,0 +1,26 @@ +From 4b07f3a9f045453e5e7b5950e721ed35d9bd308a Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 31 Mar 2010 14:24:25 +0200 +Subject: [PATCH 23/37] beagleboard: display message about I2C errors being expected when no expansion boards are present + +--- + board/ti/beagle/beagle.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 8c5b88c..c9c9a58 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -150,6 +150,9 @@ int misc_init_r(void) + struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE; + + beagle_identify(); ++ ++ printf("\nProbing for expansion boards, if none are connected you'll see a harmless I2C error.\n"); ++ + switch (get_expansion_id()) { + case TINCANTOOLS_ZIPPY: + printf("Recognized Tincantools Zippy expansion board (rev %d %s)\n", +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0024-beagleboard-fix-TCT-expansionboard-IDs.patch b/recipes-bsp/u-boot/u-boot/0024-beagleboard-fix-TCT-expansionboard-IDs.patch new file mode 100644 index 0000000..dc5e69a --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0024-beagleboard-fix-TCT-expansionboard-IDs.patch @@ -0,0 +1,27 @@ +From a4fa85edf5ff6aa6a06f437acc8694dd866f6618 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Sun, 11 Apr 2010 12:14:43 +0200 +Subject: [PATCH 24/37] beagleboard: fix TCT expansionboard IDs + +--- + board/ti/beagle/beagle.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index c9c9a58..7cb6d1f 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -58,8 +58,8 @@ static struct { + + #define TINCANTOOLS_ZIPPY 0x01000100 + #define TINCANTOOLS_ZIPPY2 0x02000100 +-#define TINCANTOOLS_TRAINER 0x03000100 +-#define TINCANTOOLS_SHOWDOG 0x04000100 ++#define TINCANTOOLS_TRAINER 0x04000100 ++#define TINCANTOOLS_SHOWDOG 0x03000100 + + #define BEAGLE_NO_EEPROM 0xffffffff + +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0025-Add-DSS-driver-for-OMAP3.patch b/recipes-bsp/u-boot/u-boot/0025-Add-DSS-driver-for-OMAP3.patch new file mode 100644 index 0000000..da517b2 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0025-Add-DSS-driver-for-OMAP3.patch @@ -0,0 +1,353 @@ +From 10bffe78f0ef6cb450ecea717dce8d636982bc86 Mon Sep 17 00:00:00 2001 +From: Syed Mohammed Khasim +Date: Tue, 12 Jan 2010 23:57:28 +0530 +Subject: [PATCH 25/37] Add DSS driver for OMAP3 + +Supports dynamic panel configuration +Supports dynamic tv standard selection +Adds support for DSS register access through generic APIs + +Incorporated DSS register access using structures. + +Previous discussions are here +http://www.mail-archive.com/u-boot@lists.denx.de/msg27150.html + +Signed-off-by: Syed Mohammed Khasim +--- + drivers/video/Makefile | 1 + + drivers/video/omap3_dss.c | 130 ++++++++++++++++++++++++++++ + include/asm-arm/arch-omap3/dss.h | 173 ++++++++++++++++++++++++++++++++++++++ + 3 files changed, 304 insertions(+), 0 deletions(-) + create mode 100644 drivers/video/omap3_dss.c + create mode 100644 include/asm-arm/arch-omap3/dss.h + +diff --git a/drivers/video/Makefile b/drivers/video/Makefile +index a5e339a..44d7ae8 100644 +--- a/drivers/video/Makefile ++++ b/drivers/video/Makefile +@@ -38,6 +38,7 @@ COBJS-$(CONFIG_SED156X) += sed156x.o + COBJS-$(CONFIG_VIDEO_SM501) += sm501.o + COBJS-$(CONFIG_VIDEO_SMI_LYNXEM) += smiLynxEM.o + COBJS-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o ++COBJS-$(CONFIG_VIDEO_OMAP3) += omap3_dss.o + COBJS-y += videomodes.o + + COBJS := $(COBJS-y) +diff --git a/drivers/video/omap3_dss.c b/drivers/video/omap3_dss.c +new file mode 100644 +index 0000000..69c705a +--- /dev/null ++++ b/drivers/video/omap3_dss.c +@@ -0,0 +1,130 @@ ++/* ++ * (C) Copyright 2010 ++ * Texas Instruments, ++ * Syed Mohammed Khasim ++ * ++ * Referred to Linux DSS driver files for OMAP3 ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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's version 2 of ++ * the License. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++ ++/* ++ * Configure VENC for a given Mode (NTSC / PAL) ++ */ ++void omap3_dss_venc_config(const struct venc_regs *venc_cfg, ++ u32 height, u32 width) ++{ ++ struct venc_regs *venc = (struct venc_regs *) OMAP3_VENC_BASE; ++ struct dss_regs *dss = (struct dss_regs *) OMAP3_DSS_BASE; ++ struct dispc_regs *dispc = (struct dispc_regs *) OMAP3_DISPC_BASE; ++ ++ writel(venc_cfg->status, &venc->status); ++ writel(venc_cfg->f_control, &venc->f_control); ++ writel(venc_cfg->vidout_ctrl, &venc->vidout_ctrl); ++ writel(venc_cfg->sync_ctrl, &venc->sync_ctrl); ++ writel(venc_cfg->llen, &venc->llen); ++ writel(venc_cfg->flens, &venc->flens); ++ writel(venc_cfg->hfltr_ctrl, &venc->hfltr_ctrl); ++ writel(venc_cfg->cc_carr_wss_carr, &venc->cc_carr_wss_carr); ++ writel(venc_cfg->c_phase, &venc->c_phase); ++ writel(venc_cfg->gain_u, &venc->gain_u); ++ writel(venc_cfg->gain_v, &venc->gain_v); ++ writel(venc_cfg->gain_y, &venc->gain_y); ++ writel(venc_cfg->black_level, &venc->black_level); ++ writel(venc_cfg->blank_level, &venc->blank_level); ++ writel(venc_cfg->x_color, &venc->x_color); ++ writel(venc_cfg->m_control, &venc->m_control); ++ writel(venc_cfg->bstamp_wss_data, &venc->bstamp_wss_data); ++ writel(venc_cfg->s_carr, &venc->s_carr); ++ writel(venc_cfg->line21, &venc->line21); ++ writel(venc_cfg->ln_sel, &venc->ln_sel); ++ writel(venc_cfg->l21__wc_ctl, &venc->l21__wc_ctl); ++ writel(venc_cfg->htrigger_vtrigger, &venc->htrigger_vtrigger); ++ writel(venc_cfg->savid__eavid, &venc->savid__eavid); ++ writel(venc_cfg->flen__fal, &venc->flen__fal); ++ writel(venc_cfg->lal__phase_reset, &venc->lal__phase_reset); ++ writel(venc_cfg->hs_int_start_stop_x, ++ &venc->hs_int_start_stop_x); ++ writel(venc_cfg->hs_ext_start_stop_x, ++ &venc->hs_ext_start_stop_x); ++ writel(venc_cfg->vs_int_start_x, &venc->vs_int_start_x); ++ writel(venc_cfg->vs_int_stop_x__vs_int_start_y, ++ &venc->vs_int_stop_x__vs_int_start_y); ++ writel(venc_cfg->vs_int_stop_y__vs_ext_start_x, ++ &venc->vs_int_stop_y__vs_ext_start_x); ++ writel(venc_cfg->vs_ext_stop_x__vs_ext_start_y, ++ &venc->vs_ext_stop_x__vs_ext_start_y); ++ writel(venc_cfg->vs_ext_stop_y, &venc->vs_ext_stop_y); ++ writel(venc_cfg->avid_start_stop_x, &venc->avid_start_stop_x); ++ writel(venc_cfg->avid_start_stop_y, &venc->avid_start_stop_y); ++ writel(venc_cfg->fid_int_start_x__fid_int_start_y, ++ &venc->fid_int_start_x__fid_int_start_y); ++ writel(venc_cfg->fid_int_offset_y__fid_ext_start_x, ++ &venc->fid_int_offset_y__fid_ext_start_x); ++ writel(venc_cfg->fid_ext_start_y__fid_ext_offset_y, ++ &venc->fid_ext_start_y__fid_ext_offset_y); ++ writel(venc_cfg->tvdetgp_int_start_stop_x, ++ &venc->tvdetgp_int_start_stop_x); ++ writel(venc_cfg->tvdetgp_int_start_stop_y, ++ &venc->tvdetgp_int_start_stop_y); ++ writel(venc_cfg->gen_ctrl, &venc->gen_ctrl); ++ writel(venc_cfg->output_control, &venc->output_control); ++ writel(venc_cfg->dac_b__dac_c, &venc->dac_b__dac_c); ++ ++ /* Configure DSS for VENC Settings */ ++ writel(VENC_DSS_CONFIG, &dss->control); ++ ++ /* Configure height and width for Digital out */ ++ writel(((height << DIG_LPP_SHIFT) | width), &dispc->size_dig); ++} ++ ++/* ++ * Configure Panel Specific Parameters ++ */ ++void omap3_dss_panel_config(const struct panel_config *panel_cfg) ++{ ++ struct dispc_regs *dispc = (struct dispc_regs *) OMAP3_DISPC_BASE; ++ ++ writel(panel_cfg->timing_h, &dispc->timing_h); ++ writel(panel_cfg->timing_v, &dispc->timing_v); ++ writel(panel_cfg->pol_freq, &dispc->pol_freq); ++ writel(panel_cfg->divisor, &dispc->divisor); ++ writel(panel_cfg->lcd_size, &dispc->size_lcd); ++ writel((panel_cfg->load_mode << FRAME_MODE_SHIFT), &dispc->config); ++ writel(((panel_cfg->panel_type << TFTSTN_SHIFT) | ++ (panel_cfg->data_lines << DATALINES_SHIFT)), &dispc->control); ++ writel(panel_cfg->panel_color, &dispc->default_color0); ++} ++ ++/* ++ * Enable LCD and DIGITAL OUT in DSS ++ */ ++void omap3_dss_enable(void) ++{ ++ struct dispc_regs *dispc = (struct dispc_regs *) OMAP3_DISPC_BASE; ++ u32 l = 0; ++ ++ l = readl(&dispc->control); ++ l |= DISPC_ENABLE; ++ writel(l, &dispc->control); ++} +diff --git a/include/asm-arm/arch-omap3/dss.h b/include/asm-arm/arch-omap3/dss.h +new file mode 100644 +index 0000000..e5e3b0d +--- /dev/null ++++ b/include/asm-arm/arch-omap3/dss.h +@@ -0,0 +1,173 @@ ++/* ++ * (C) Copyright 2010 ++ * Texas Instruments, ++ * Syed Mohammed Khasim ++ * ++ * Referred to Linux DSS driver files for OMAP3 ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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's version 2 of ++ * the License. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef DSS_H ++#define DSS_H ++ ++/* ++ * DSS Base Registers ++ */ ++#define OMAP3_DSS_BASE 0x48050040 ++#define OMAP3_DISPC_BASE 0x48050440 ++#define OMAP3_VENC_BASE 0x48050C00 ++ ++/* DSS Registers */ ++struct dss_regs { ++ u32 control; /* 0x40 */ ++ u32 sdi_control; /* 0x44 */ ++ u32 pll_control; /* 0x48 */ ++}; ++ ++/* DISPC Registers */ ++struct dispc_regs { ++ u32 control; /* 0x40 */ ++ u32 config; /* 0x44 */ ++ u32 reserve_2; /* 0x48 */ ++ u32 default_color0; /* 0x4C */ ++ u32 default_color1; /* 0x50 */ ++ u32 trans_color0; /* 0x54 */ ++ u32 trans_color1; /* 0x58 */ ++ u32 line_status; /* 0x5C */ ++ u32 line_number; /* 0x60 */ ++ u32 timing_h; /* 0x64 */ ++ u32 timing_v; /* 0x68 */ ++ u32 pol_freq; /* 0x6C */ ++ u32 divisor; /* 0x70 */ ++ u32 global_alpha; /* 0x74 */ ++ u32 size_dig; /* 0x78 */ ++ u32 size_lcd; /* 0x7C */ ++}; ++ ++/* VENC Registers */ ++struct venc_regs { ++ u32 rev_id; /* 0x00 */ ++ u32 status; /* 0x04 */ ++ u32 f_control; /* 0x08 */ ++ u32 reserve_1; /* 0x0C */ ++ u32 vidout_ctrl; /* 0x10 */ ++ u32 sync_ctrl; /* 0x14 */ ++ u32 reserve_2; /* 0x18 */ ++ u32 llen; /* 0x1C */ ++ u32 flens; /* 0x20 */ ++ u32 hfltr_ctrl; /* 0x24 */ ++ u32 cc_carr_wss_carr; /* 0x28 */ ++ u32 c_phase; /* 0x2C */ ++ u32 gain_u; /* 0x30 */ ++ u32 gain_v; /* 0x34 */ ++ u32 gain_y; /* 0x38 */ ++ u32 black_level; /* 0x3C */ ++ u32 blank_level; /* 0x40 */ ++ u32 x_color; /* 0x44 */ ++ u32 m_control; /* 0x48 */ ++ u32 bstamp_wss_data; /* 0x4C */ ++ u32 s_carr; /* 0x50 */ ++ u32 line21; /* 0x54 */ ++ u32 ln_sel; /* 0x58 */ ++ u32 l21__wc_ctl; /* 0x5C */ ++ u32 htrigger_vtrigger; /* 0x60 */ ++ u32 savid__eavid; /* 0x64 */ ++ u32 flen__fal; /* 0x68 */ ++ u32 lal__phase_reset; /* 0x6C */ ++ u32 hs_int_start_stop_x; /* 0x70 */ ++ u32 hs_ext_start_stop_x; /* 0x74 */ ++ u32 vs_int_start_x; /* 0x78 */ ++ u32 vs_int_stop_x__vs_int_start_y; /* 0x7C */ ++ u32 vs_int_stop_y__vs_ext_start_x; /* 0x80 */ ++ u32 vs_ext_stop_x__vs_ext_start_y; /* 0x84 */ ++ u32 vs_ext_stop_y; /* 0x88 */ ++ u32 reserve_3; /* 0x8C */ ++ u32 avid_start_stop_x; /* 0x90 */ ++ u32 avid_start_stop_y; /* 0x94 */ ++ u32 reserve_4; /* 0x98 */ ++ u32 reserve_5; /* 0x9C */ ++ u32 fid_int_start_x__fid_int_start_y; /* 0xA0 */ ++ u32 fid_int_offset_y__fid_ext_start_x; /* 0xA4 */ ++ u32 fid_ext_start_y__fid_ext_offset_y; /* 0xA8 */ ++ u32 reserve_6; /* 0xAC */ ++ u32 tvdetgp_int_start_stop_x; /* 0xB0 */ ++ u32 tvdetgp_int_start_stop_y; /* 0xB4 */ ++ u32 gen_ctrl; /* 0xB8 */ ++ u32 reserve_7; /* 0xBC */ ++ u32 reserve_8; /* 0xC0 */ ++ u32 output_control; /* 0xC4 */ ++ u32 dac_b__dac_c; /* 0xC8 */ ++ u32 height_width; /* 0xCC */ ++}; ++ ++/* Few Register Offsets */ ++#define FRAME_MODE_SHIFT 1 ++#define TFTSTN_SHIFT 3 ++#define DATALINES_SHIFT 8 ++ ++/* Enabling Display controller */ ++#define LCD_ENABLE 1 ++#define DIG_ENABLE (1 << 1) ++#define GO_LCD (1 << 5) ++#define GO_DIG (1 << 6) ++#define GP_OUT0 (1 << 15) ++#define GP_OUT1 (1 << 16) ++ ++#define DISPC_ENABLE (LCD_ENABLE | \ ++ DIG_ENABLE | \ ++ GO_LCD | \ ++ GO_DIG | \ ++ GP_OUT0| \ ++ GP_OUT1) ++ ++/* Configure VENC DSS Params */ ++#define VENC_CLK_ENABLE (1 << 3) ++#define DAC_DEMEN (1 << 4) ++#define DAC_POWERDN (1 << 5) ++#define VENC_OUT_SEL (1 << 6) ++#define DIG_LPP_SHIFT 16 ++#define VENC_DSS_CONFIG (VENC_CLK_ENABLE | \ ++ DAC_DEMEN | \ ++ DAC_POWERDN | \ ++ VENC_OUT_SEL) ++/* ++ * Panel Configuration ++ */ ++struct panel_config { ++ u32 timing_h; ++ u32 timing_v; ++ u32 pol_freq; ++ u32 divisor; ++ u32 lcd_size; ++ u32 panel_type; ++ u32 data_lines; ++ u32 load_mode; ++ u32 panel_color; ++}; ++ ++/* ++ * Generic DSS Functions ++ */ ++void omap3_dss_venc_config(const struct venc_regs *venc_cfg, ++ u32 height, u32 width); ++void omap3_dss_panel_config(const struct panel_config *panel_cfg); ++void omap3_dss_enable(void); ++ ++#endif /* DSS_H */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0026-Enable-DSS-driver-for-Beagle.patch b/recipes-bsp/u-boot/u-boot/0026-Enable-DSS-driver-for-Beagle.patch new file mode 100644 index 0000000..7e7bea8 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0026-Enable-DSS-driver-for-Beagle.patch @@ -0,0 +1,158 @@ +From a8adb8e29aba9d2c83731839063f1381fce3906c Mon Sep 17 00:00:00 2001 +From: Syed Mohammed Khasim +Date: Sun, 11 Apr 2010 17:44:39 +0200 +Subject: [PATCH 26/37] Enable DSS driver for Beagle + +Configures DSS to display color bar on Svideo +Configures DSS to display background color on DVID + +Signed-off-by: Syed Mohammed Khasim +--- + board/ti/beagle/beagle.c | 12 ++++++ + board/ti/beagle/beagle.h | 75 ++++++++++++++++++++++++++++++++++++++++ + include/configs/omap3_beagle.h | 1 + + 3 files changed, 88 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 7cb6d1f..eb57b5a 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -141,6 +141,16 @@ unsigned int get_expansion_id(void) + } + + /* ++ * Configure DSS to display background color on DVID ++ * Configure VENC to display color bar on S-Video ++ */ ++void display_init(void) ++{ ++ omap3_dss_venc_config(&venc_config_std_tv, VENC_HEIGHT, VENC_WIDTH); ++ omap3_dss_panel_config(&dvid_cfg); ++} ++ ++/* + * Routine: misc_init_r + * Description: Configure board specific parts + */ +@@ -188,6 +198,7 @@ int misc_init_r(void) + + twl4030_power_init(); + twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); ++ display_init(); + + switch (beagle_revision) { + case REVISION_AXBX: +@@ -233,6 +244,7 @@ int misc_init_r(void) + GPIO15 | GPIO14 | GPIO13 | GPIO12, &gpio5_base->setdataout); + + dieid_num_r(); ++ omap3_dss_enable(); + + return 0; + } +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index ec4f831..69f9398 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -23,6 +23,8 @@ + #ifndef _BEAGLE_H_ + #define _BEAGLE_H_ + ++#include ++ + const omap3_sysinfo sysinfo = { + DDR_STACKED, + "OMAP3 Beagle board", +@@ -433,4 +435,77 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ + MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ + ++/* ++ * Display Configuration ++ */ ++ ++#define DVI_BEAGLE_ORANGE_COL 0x00FF8000 ++#define VENC_HEIGHT 0x00ef ++#define VENC_WIDTH 0x027f ++ ++/* ++ * Configure VENC in DSS for Beagle to generate Color Bar ++ * ++ * Kindly refer to OMAP TRM for definition of these values. ++ */ ++static const struct venc_regs venc_config_std_tv = { ++ .status = 0x0000001B, ++ .f_control = 0x00000040, ++ .vidout_ctrl = 0x00000000, ++ .sync_ctrl = 0x00008000, ++ .llen = 0x00008359, ++ .flens = 0x0000020C, ++ .hfltr_ctrl = 0x00000000, ++ .cc_carr_wss_carr = 0x043F2631, ++ .c_phase = 0x00000024, ++ .gain_u = 0x00000130, ++ .gain_v = 0x00000198, ++ .gain_y = 0x000001C0, ++ .black_level = 0x0000006A, ++ .blank_level = 0x0000005C, ++ .x_color = 0x00000000, ++ .m_control = 0x00000001, ++ .bstamp_wss_data = 0x0000003F, ++ .s_carr = 0x21F07C1F, ++ .line21 = 0x00000000, ++ .ln_sel = 0x00000015, ++ .l21__wc_ctl = 0x00001400, ++ .htrigger_vtrigger = 0x00000000, ++ .savid__eavid = 0x069300F4, ++ .flen__fal = 0x0016020C, ++ .lal__phase_reset = 0x00060107, ++ .hs_int_start_stop_x = 0x008D034E, ++ .hs_ext_start_stop_x = 0x000F0359, ++ .vs_int_start_x = 0x01A00000, ++ .vs_int_stop_x__vs_int_start_y = 0x020501A0, ++ .vs_int_stop_y__vs_ext_start_x = 0x01AC0024, ++ .vs_ext_stop_x__vs_ext_start_y = 0x020D01AC, ++ .vs_ext_stop_y = 0x00000006, ++ .avid_start_stop_x = 0x03480079, ++ .avid_start_stop_y = 0x02040024, ++ .fid_int_start_x__fid_int_start_y = 0x0001008A, ++ .fid_int_offset_y__fid_ext_start_x = 0x01AC0106, ++ .fid_ext_start_y__fid_ext_offset_y = 0x01060006, ++ .tvdetgp_int_start_stop_x = 0x00140001, ++ .tvdetgp_int_start_stop_y = 0x00010001, ++ .gen_ctrl = 0x00FF0000, ++ .output_control = 0x0000000D, ++ .dac_b__dac_c = 0x00000000 ++}; ++ ++/* ++ * Configure Timings for DVI D ++ */ ++static const struct panel_config dvid_cfg = { ++ .timing_h = 0x0ff03f31, /* Horizantal timing */ ++ .timing_v = 0x01400504, /* Vertical timing */ ++ .pol_freq = 0x00007028, /* Pol Freq */ ++ .divisor = 0x00010006, /* 72Mhz Pixel Clock */ ++ .lcd_size = 0x02ff03ff, /* 1024x768 */ ++ .panel_type = 0x01, /* TFT */ ++ .data_lines = 0x03, /* 24 Bit RGB */ ++ .load_mode = 0x02, /* Frame Mode */ ++ .panel_color = DVI_BEAGLE_ORANGE_COL /* ORANGE */ ++}; ++ + #endif +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index c156cea..7bcbe9b 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -131,6 +131,7 @@ + #define CONFIG_CMD_I2C /* I2C serial bus support */ + #define CONFIG_CMD_MMC /* MMC support */ + #define CONFIG_CMD_NAND /* NAND support */ ++#define CONFIG_VIDEO_OMAP3 /* DSS Support */ + + #undef CONFIG_CMD_FLASH /* flinfo, erase, protect */ + #undef CONFIG_CMD_FPGA /* FPGA configuration Support */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0027-beagleboardXM-don-t-set-mpurate-on-xM-in-bootargs.patch b/recipes-bsp/u-boot/u-boot/0027-beagleboardXM-don-t-set-mpurate-on-xM-in-bootargs.patch new file mode 100644 index 0000000..90d71a8 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0027-beagleboardXM-don-t-set-mpurate-on-xM-in-bootargs.patch @@ -0,0 +1,24 @@ +From 85d4ffbc3a12b28cae00fc88d4adba7df4907fe4 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 13 Apr 2010 22:04:07 +0200 +Subject: [PATCH 27/37] beagleboardXM: don't set mpurate on xM in bootargs + +--- + board/ti/beagle/beagle.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index eb57b5a..974a72c 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -226,7 +226,6 @@ int misc_init_r(void) + TWL4030_PM_RECEIVER_VAUX2_VSEL_18, + TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, + TWL4030_PM_RECEIVER_DEV_GRP_P1); +- setenv("mpurate", "720"); + break; + default: + printf("Beagle unknown 0x%02x\n", beagle_revision); +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0028-OMAP3-fix-and-clean-up-L2-cache-enable-disable-funct.patch b/recipes-bsp/u-boot/u-boot/0028-OMAP3-fix-and-clean-up-L2-cache-enable-disable-funct.patch new file mode 100644 index 0000000..d2c6abb --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0028-OMAP3-fix-and-clean-up-L2-cache-enable-disable-funct.patch @@ -0,0 +1,112 @@ +From c18bda32fdb048ea38b7ff579f365ea8858053d7 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Wed, 14 Apr 2010 12:08:00 +0100 +Subject: [PATCH 28/37] OMAP3: fix and clean up L2 cache enable/disable functions + +On OMAP34xx ES1.0, the L2 enable bit can only be set in secure mode, +so an SMC call to the ROM monitor is required. On later versions, +and on newer devices, this bit is banked and we can set it directly. + +The code checked only the ES revision of the chip, and hence incorrectly +used the ROM call on ES1.0 versions of other devices. + +This patch adds a check for chip family as well as revision, and also +removes some code duplication between the enable and disable functions. + +Signed-off-by: Mans Rullgard +--- + cpu/arm_cortexa8/omap3/cache.S | 74 +++++++++++----------------------------- + 1 files changed, 20 insertions(+), 54 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/cache.S b/cpu/arm_cortexa8/omap3/cache.S +index 0f63815..16afb5d 100644 +--- a/cpu/arm_cortexa8/omap3/cache.S ++++ b/cpu/arm_cortexa8/omap3/cache.S +@@ -128,64 +128,30 @@ finished_inval: + + ldmfd r13!, {r0 - r5, r7, r9 - r12, pc} + +- +-l2_cache_enable: +- push {r0, r1, r2, lr} +- @ ES2 onwards we can disable/enable L2 ourselves ++l2_cache_set: ++ push {r4-r6, lr} ++ mov r5, r0 + bl get_cpu_rev +- cmp r0, #CPU_3XX_ES20 +- blt l2_cache_disable_EARLIER_THAN_ES2 +- mrc 15, 0, r3, cr1, cr0, 1 +- orr r3, r3, #2 +- mcr 15, 0, r3, cr1, cr0, 1 +- b l2_cache_enable_END +-l2_cache_enable_EARLIER_THAN_ES2: +- @ Save r0, r12 and restore them after usage +- mov r3, ip +- str r3, [sp, #4] +- mov r3, r0 +- @ ++ mov r4, r0 ++ bl get_cpu_family ++ @ ES2 onwards we can disable/enable L2 ourselves ++ cmp r0, #CPU_OMAP34XX ++ cmpeq r4, #CPU_3XX_ES10 ++ mrc 15, 0, r0, cr1, cr0, 1 ++ bic r0, r0, #2 ++ orr r0, r0, r5, lsl #1 ++ mcreq 15, 0, r0, cr1, cr0, 1 + @ GP Device ROM code API usage here + @ r12 = AUXCR Write function and r0 value +- @ + mov ip, #3 +- mrc 15, 0, r0, cr1, cr0, 1 +- orr r0, r0, #2 +- @ SMI instruction to call ROM Code API +- .word 0xe1600070 +- mov r0, r3 +- mov ip, r3 +- str r3, [sp, #4] +-l2_cache_enable_END: +- pop {r1, r2, r3, pc} ++ @ SMCNE instruction to call ROM Code API ++ .word 0x11600070 ++ pop {r4-r6, pc} + ++l2_cache_enable: ++ mov r0, #1 ++ b l2_cache_set + + l2_cache_disable: +- push {r0, r1, r2, lr} +- @ ES2 onwards we can disable/enable L2 ourselves +- bl get_cpu_rev +- cmp r0, #CPU_3XX_ES20 +- blt l2_cache_disable_EARLIER_THAN_ES2 +- mrc 15, 0, r3, cr1, cr0, 1 +- bic r3, r3, #2 +- mcr 15, 0, r3, cr1, cr0, 1 +- b l2_cache_disable_END +-l2_cache_disable_EARLIER_THAN_ES2: +- @ Save r0, r12 and restore them after usage +- mov r3, ip +- str r3, [sp, #4] +- mov r3, r0 +- @ +- @ GP Device ROM code API usage here +- @ r12 = AUXCR Write function and r0 value +- @ +- mov ip, #3 +- mrc 15, 0, r0, cr1, cr0, 1 +- bic r0, r0, #2 +- @ SMI instruction to call ROM Code API +- .word 0xe1600070 +- mov r0, r3 +- mov ip, r3 +- str r3, [sp, #4] +-l2_cache_disable_END: +- pop {r1, r2, r3, pc} ++ mov r0, #0 ++ b l2_cache_set +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0029-OMAP3-convert-setup_auxcr-to-pure-asm.patch b/recipes-bsp/u-boot/u-boot/0029-OMAP3-convert-setup_auxcr-to-pure-asm.patch new file mode 100644 index 0000000..e1ffdca --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0029-OMAP3-convert-setup_auxcr-to-pure-asm.patch @@ -0,0 +1,99 @@ +From 6ddb5d4e28801907af7be39e47d502fd5c8e73e1 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Wed, 14 Apr 2010 16:49:57 +0100 +Subject: [PATCH 29/37] OMAP3: convert setup_auxcr() to pure asm + +This function consists entirely of inline asm statements, so writing +it directly in a .S file is simpler. Additionally, the inline asm is +not safe as is, since registers are not guaranteed to be preserved +between asm() statements. + +Signed-off-by: Mans Rullgard +--- + cpu/arm_cortexa8/omap3/board.c | 35 ----------------------------------- + cpu/arm_cortexa8/omap3/cache.S | 19 +++++++++++++++++++ + 2 files changed, 19 insertions(+), 35 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/board.c b/cpu/arm_cortexa8/omap3/board.c +index 0126152..7f49199 100644 +--- a/cpu/arm_cortexa8/omap3/board.c ++++ b/cpu/arm_cortexa8/omap3/board.c +@@ -122,41 +122,6 @@ void secureworld_exit() + } + + /****************************************************************************** +- * Routine: setup_auxcr() +- * Description: Write to AuxCR desired value using SMI. +- * general use. +- *****************************************************************************/ +-void setup_auxcr() +-{ +- unsigned long i; +- volatile unsigned int j; +- /* Save r0, r12 and restore them after usage */ +- __asm__ __volatile__("mov %0, r12":"=r"(j)); +- __asm__ __volatile__("mov %0, r0":"=r"(i)); +- +- /* +- * GP Device ROM code API usage here +- * r12 = AUXCR Write function and r0 value +- */ +- __asm__ __volatile__("mov r12, #0x3"); +- __asm__ __volatile__("mrc p15, 0, r0, c1, c0, 1"); +- /* Enabling ASA */ +- __asm__ __volatile__("orr r0, r0, #0x10"); +- /* Enable L1NEON */ +- __asm__ __volatile__("orr r0, r0, #1 << 5"); +- /* SMI instruction to call ROM Code API */ +- __asm__ __volatile__(".word 0xE1600070"); +- /* Set PLD_FWD bit in L2AUXCR (Cortex-A8 erratum 725233 workaround) */ +- __asm__ __volatile__("mov r12, #0x2"); +- __asm__ __volatile__("mrc p15, 1, r0, c9, c0, 2"); +- __asm__ __volatile__("orr r0, r0, #1 << 27"); +- /* SMI instruction to call ROM Code API */ +- __asm__ __volatile__(".word 0xE1600070"); +- __asm__ __volatile__("mov r0, %0":"=r"(i)); +- __asm__ __volatile__("mov r12, %0":"=r"(j)); +-} +- +-/****************************************************************************** + * Routine: try_unlock_sram() + * Description: If chip is GP/EMU(special) type, unlock the SRAM for + * general use. +diff --git a/cpu/arm_cortexa8/omap3/cache.S b/cpu/arm_cortexa8/omap3/cache.S +index 16afb5d..61e6946 100644 +--- a/cpu/arm_cortexa8/omap3/cache.S ++++ b/cpu/arm_cortexa8/omap3/cache.S +@@ -43,6 +43,7 @@ + .global invalidate_dcache + .global l2_cache_enable + .global l2_cache_disable ++.global setup_auxcr + + /* + * invalidate_dcache() +@@ -155,3 +156,21 @@ l2_cache_enable: + l2_cache_disable: + mov r0, #0 + b l2_cache_set ++ ++/****************************************************************************** ++ * Routine: setup_auxcr() ++ * Description: Write to AuxCR desired value using SMI. ++ * general use. ++ *****************************************************************************/ ++setup_auxcr: ++ mov r12, #0x3 ++ mrc p15, 0, r0, c1, c0, 1 ++ orr r0, r0, #0x10 @ Enable ASA ++ orr r0, r0, #1 << 5 @ Enable L1NEON ++ .word 0xE1600070 @ SMC ++ mov r12, #0x2 ++ mrc p15, 1, r0, c9, c0, 2 ++ @ Set PLD_FWD bit in L2AUXCR (Cortex-A8 erratum 725233 workaround) ++ orr r0, r0, #1 << 27 ++ .word 0xE1600070 @ SMC ++ bx lr +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0030-OMAP3-apply-Cortex-A8-errata-workarounds-only-on-aff.patch b/recipes-bsp/u-boot/u-boot/0030-OMAP3-apply-Cortex-A8-errata-workarounds-only-on-aff.patch new file mode 100644 index 0000000..af669ec --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0030-OMAP3-apply-Cortex-A8-errata-workarounds-only-on-aff.patch @@ -0,0 +1,46 @@ +From 4e7bc59affc2a71de40259330e27e62181993968 Mon Sep 17 00:00:00 2001 +From: Mans Rullgard +Date: Wed, 14 Apr 2010 17:10:28 +0100 +Subject: [PATCH 30/37] OMAP3: apply Cortex-A8 errata workarounds only on affected revisions + +The workarounds for errata 621766 and 725233 should only be applied +on affected Cortex-A8 revisions. Recent chips use r3px cores where +these have been fixed. + +Signed-off-by: Mans Rullgard +--- + cpu/arm_cortexa8/omap3/cache.S | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/cpu/arm_cortexa8/omap3/cache.S b/cpu/arm_cortexa8/omap3/cache.S +index 61e6946..932e4eb 100644 +--- a/cpu/arm_cortexa8/omap3/cache.S ++++ b/cpu/arm_cortexa8/omap3/cache.S +@@ -163,14 +163,21 @@ l2_cache_disable: + * general use. + *****************************************************************************/ + setup_auxcr: ++ mrc p15, 0, r0, c0, c0, 0 @ read main ID register ++ and r2, r0, #0x00f00000 @ variant ++ and r3, r0, #0x0000000f @ revision ++ orr r1, r3, r2, lsr #20-4 @ combine variant and revision + mov r12, #0x3 + mrc p15, 0, r0, c1, c0, 1 + orr r0, r0, #0x10 @ Enable ASA +- orr r0, r0, #1 << 5 @ Enable L1NEON ++ @ Enable L1NEON on pre-r2p1 (erratum 621766 workaround) ++ cmp r1, #0x21 ++ orrlt r0, r0, #1 << 5 + .word 0xE1600070 @ SMC + mov r12, #0x2 + mrc p15, 1, r0, c9, c0, 2 +- @ Set PLD_FWD bit in L2AUXCR (Cortex-A8 erratum 725233 workaround) +- orr r0, r0, #1 << 27 ++ @ Set PLD_FWD bit in L2AUXCR on pre-r2p1 (erratum 725233 workaround) ++ cmp r1, #0x21 ++ orrlt r0, r0, #1 << 27 + .word 0xE1600070 @ SMC + bx lr +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0031-OMAP3-beagle-add-more-expansionboards-based-on-http-.patch b/recipes-bsp/u-boot/u-boot/0031-OMAP3-beagle-add-more-expansionboards-based-on-http-.patch new file mode 100644 index 0000000..9ea1912 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0031-OMAP3-beagle-add-more-expansionboards-based-on-http-.patch @@ -0,0 +1,61 @@ +From bbfb38ccd1e2bb19a1eb698bd37cd1ab50c87b37 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Fri, 23 Apr 2010 10:50:43 +0200 +Subject: [PATCH 31/37] OMAP3: beagle: add more expansionboards, based on http://www.elinux.org/BeagleBoardPinMux#Vendor_and_Device_IDs + +--- + board/ti/beagle/beagle.c | 8 ++++++++ + board/ti/beagle/beagle.h | 6 ++++++ + 2 files changed, 14 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 974a72c..0544178 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -55,11 +55,15 @@ static struct { + #define TINCANTOOLS_VENDORID 0x0100 + #define GUMSTIX_VENDORID 0x0200 + #define SPECIALCOMP_VENDORID 0x0300 ++#define HYR_VENDORID 0x0400 ++#define MENTOREL_VENDORID 0x0500 ++#define KBADC_VENDORID 0x0600 + + #define TINCANTOOLS_ZIPPY 0x01000100 + #define TINCANTOOLS_ZIPPY2 0x02000100 + #define TINCANTOOLS_TRAINER 0x04000100 + #define TINCANTOOLS_SHOWDOG 0x03000100 ++#define KBADC_BEAGLEFPGA 0x01000600 + + #define BEAGLE_NO_EEPROM 0xffffffff + +@@ -184,6 +188,10 @@ int misc_init_r(void) + /* Place holder for DSS2 definition for showdog lcd */ + setenv("defaultdisplay", "showdoglcd"); + break; ++ case KBADC_BEAGLEFPGA: ++ printf("Recognized KBADC Beagle FPGA board\n"); ++ MUX_KBADC_BEAGLEFPGA(); ++ break; + case BEAGLE_NO_EEPROM: + printf("No EEPROM on expansion board\n"); + break; +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index 69f9398..90a0ebf 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -435,6 +435,12 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ + MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ + ++#define MUX_KBADC_BEAGLEFPGA() \ ++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\ ++ MUX_VAL(CP(MCBSP1_DX), (IDIS | PTU | DIS | M1)) /*MCSPI4_SIMO*/\ ++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTU | EN | M1)) /*MCSPI4_SOMI*/\ ++ MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTU | DIS | M1)) /*MCSPI4_CS0*/\ ++ + /* + * Display Configuration + */ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0032-OMAP3-beagle-set-mpurate-to-600-for-revB-and-revC1-3.patch b/recipes-bsp/u-boot/u-boot/0032-OMAP3-beagle-set-mpurate-to-600-for-revB-and-revC1-3.patch new file mode 100644 index 0000000..c99d3d9 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0032-OMAP3-beagle-set-mpurate-to-600-for-revB-and-revC1-3.patch @@ -0,0 +1,29 @@ +From ae05ca488390671516bd4ed021eb43901fee740f Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 27 Apr 2010 13:44:16 +0200 +Subject: [PATCH 32/37] OMAP3: beagle: set mpurate to 600 for revB and revC1-3 + +--- + board/ti/beagle/beagle.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 0544178..6778499 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -211,10 +211,12 @@ int misc_init_r(void) + switch (beagle_revision) { + case REVISION_AXBX: + printf("Beagle Rev Ax/Bx\n"); ++ setenv("mpurate", "600"); + break; + case REVISION_CX: + printf("Beagle Rev C1/C2/C3\n"); + MUX_BEAGLE_C(); ++ setenv("mpurate", "600"); + break; + case REVISION_C4: + printf("Beagle Rev C4\n"); +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0033-OMAP3-beagle-prettify-expansionboard-message-a-bit.patch b/recipes-bsp/u-boot/u-boot/0033-OMAP3-beagle-prettify-expansionboard-message-a-bit.patch new file mode 100644 index 0000000..a7b2c01 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0033-OMAP3-beagle-prettify-expansionboard-message-a-bit.patch @@ -0,0 +1,25 @@ +From caf18bc716d77d7bf2c75bc58ffbcbf09ae79f2b Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 27 Apr 2010 13:45:28 +0200 +Subject: [PATCH 33/37] OMAP3: beagle: prettify expansionboard message a bit + +--- + board/ti/beagle/beagle.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 6778499..58fb7c3 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -165,7 +165,7 @@ int misc_init_r(void) + + beagle_identify(); + +- printf("\nProbing for expansion boards, if none are connected you'll see a harmless I2C error.\n"); ++ printf("\nProbing for expansion boards, if none are connected you'll see a harmless I2C error.\n\n"); + + switch (get_expansion_id()) { + case TINCANTOOLS_ZIPPY: +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0034-OMAP3-beagle-add-pinmux-for-Tincantools-Trainer-expa.patch b/recipes-bsp/u-boot/u-boot/0034-OMAP3-beagle-add-pinmux-for-Tincantools-Trainer-expa.patch new file mode 100644 index 0000000..5caa6f0 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0034-OMAP3-beagle-add-pinmux-for-Tincantools-Trainer-expa.patch @@ -0,0 +1,53 @@ +From 8580a3eafe3351e3c0f1ca3d0bc959bbeec40e28 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Tue, 27 Apr 2010 18:25:57 +0200 +Subject: [PATCH 34/37] OMAP3: beagle: add pinmux for Tincantools Trainer expansionboard + +--- + board/ti/beagle/beagle.c | 2 ++ + board/ti/beagle/beagle.h | 16 +++++++++++++++- + 2 files changed, 17 insertions(+), 1 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 58fb7c3..39c53f2 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -181,6 +181,8 @@ int misc_init_r(void) + case TINCANTOOLS_TRAINER: + printf("Recognized Tincantools Trainer expansion board (rev %d %s)\n", + expansion_config.revision, expansion_config.fab_revision); ++ MUX_TINCANTOOLS_ZIPPY(); ++ MUX_TINCANTOOLS_TRAINER(); + break; + case TINCANTOOLS_SHOWDOG: + printf("Recognized Tincantools Showdow expansion board (rev %d %s)\n", +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index 90a0ebf..7774855 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -433,7 +433,21 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ + MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ +- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/ ++ ++#define MUX_TINCANTOOLS_TRAINER() \ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTU | EN | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTU | EN | M4)) /*GPIO_141*/ + + #define MUX_KBADC_BEAGLEFPGA() \ + MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0035-OMAP3-Beagle-set-mpurate-to-1000-for-xM.patch b/recipes-bsp/u-boot/u-boot/0035-OMAP3-Beagle-set-mpurate-to-1000-for-xM.patch new file mode 100644 index 0000000..5c02fcb --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0035-OMAP3-Beagle-set-mpurate-to-1000-for-xM.patch @@ -0,0 +1,24 @@ +From c45e93aef4d54b262f0d8e1ecf6b111f5e1c2a4c Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Fri, 30 Apr 2010 13:25:41 +0200 +Subject: [PATCH 35/37] OMAP3: Beagle: set mpurate to 1000 for xM + +--- + board/ti/beagle/beagle.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 39c53f2..9300984 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -238,6 +238,7 @@ int misc_init_r(void) + TWL4030_PM_RECEIVER_VAUX2_VSEL_18, + TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, + TWL4030_PM_RECEIVER_DEV_GRP_P1); ++ setenv("mpurate", "1000"); + break; + default: + printf("Beagle unknown 0x%02x\n", beagle_revision); +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0036-OMAP3-Beagle-decrease-bootdelay-to-3-use-VGA-for-def.patch b/recipes-bsp/u-boot/u-boot/0036-OMAP3-Beagle-decrease-bootdelay-to-3-use-VGA-for-def.patch new file mode 100644 index 0000000..5f89f1a --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0036-OMAP3-Beagle-decrease-bootdelay-to-3-use-VGA-for-def.patch @@ -0,0 +1,34 @@ +From 39f15722db5595411ec085e36b7fd7657415a554 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Fri, 30 Apr 2010 13:26:01 +0200 +Subject: [PATCH 36/37] OMAP3: Beagle: decrease bootdelay to 3, use VGA for default resolution + +--- + include/configs/omap3_beagle.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 7bcbe9b..93a6a5a 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -178,7 +178,7 @@ + /* partition */ + + /* Environment information */ +-#define CONFIG_BOOTDELAY 10 ++#define CONFIG_BOOTDELAY 3 + + #define CONFIG_EXTRA_ENV_SETTINGS \ + "loadaddr=0x82000000\0" \ +@@ -186,7 +186,7 @@ + "console=ttyS2,115200n8\0" \ + "mpurate=500\0" \ + "vram=12M\0" \ +- "dvimode=1024x768MR-16@60\0" \ ++ "dvimode=640x480MR-16@60\0" \ + "defaultdisplay=dvi\0" \ + "mmcroot=/dev/mmcblk0p2 rw\0" \ + "mmcrootfstype=ext3 rootwait\0" \ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0037-OMAP3-beagle-pass-expansionboard-name-in-bootargs.patch b/recipes-bsp/u-boot/u-boot/0037-OMAP3-beagle-pass-expansionboard-name-in-bootargs.patch new file mode 100644 index 0000000..2ee844b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0037-OMAP3-beagle-pass-expansionboard-name-in-bootargs.patch @@ -0,0 +1,87 @@ +From 8ad472139f7b8b7c59c0192f3e2f50a20beadf59 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Mon, 3 May 2010 10:17:41 +0200 +Subject: [PATCH 37/37] OMAP3: beagle: pass expansionboard name in bootargs + +This makes it possible to do in-kernel fixups for expansionboards like reclaiming GPIOs +--- + board/ti/beagle/beagle.c | 7 +++++++ + include/configs/omap3_beagle.h | 3 +++ + 2 files changed, 10 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 9300984..556e995 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -172,33 +172,40 @@ int misc_init_r(void) + printf("Recognized Tincantools Zippy expansion board (rev %d %s)\n", + expansion_config.revision, expansion_config.fab_revision); + MUX_TINCANTOOLS_ZIPPY(); ++ setenv("buddy", "zippy"); + break; + case TINCANTOOLS_ZIPPY2: + printf("Recognized Tincantools Zippy2 expansion board (rev %d %s)\n", + expansion_config.revision, expansion_config.fab_revision); + MUX_TINCANTOOLS_ZIPPY(); ++ setenv("buddy", "zippy2"); + break; + case TINCANTOOLS_TRAINER: + printf("Recognized Tincantools Trainer expansion board (rev %d %s)\n", + expansion_config.revision, expansion_config.fab_revision); + MUX_TINCANTOOLS_ZIPPY(); + MUX_TINCANTOOLS_TRAINER(); ++ setenv("buddy", "trainer"); + break; + case TINCANTOOLS_SHOWDOG: + printf("Recognized Tincantools Showdow expansion board (rev %d %s)\n", + expansion_config.revision, expansion_config.fab_revision); + /* Place holder for DSS2 definition for showdog lcd */ + setenv("defaultdisplay", "showdoglcd"); ++ setenv("buddy", "showdog"); + break; + case KBADC_BEAGLEFPGA: + printf("Recognized KBADC Beagle FPGA board\n"); + MUX_KBADC_BEAGLEFPGA(); ++ setenv("buddy", "beaglefpga"); + break; + case BEAGLE_NO_EEPROM: + printf("No EEPROM on expansion board\n"); ++ setenv("buddy", "none"); + break; + default: + printf("Unrecognized expansion board: %x\n", expansion_config.device_vendor); ++ setenv("buddy", "unknown"); + } + + if (expansion_config.content == 1) +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 93a6a5a..affabf1 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -185,6 +185,7 @@ + "usbtty=cdc_acm\0" \ + "console=ttyS2,115200n8\0" \ + "mpurate=500\0" \ ++ "buddy=none\0" \ + "vram=12M\0" \ + "dvimode=640x480MR-16@60\0" \ + "defaultdisplay=dvi\0" \ +@@ -194,6 +195,7 @@ + "nandrootfstype=jffs2\0" \ + "mmcargs=setenv bootargs console=${console} " \ + "mpurate=${mpurate} " \ ++ "buddy=${buddy} "\ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +@@ -201,6 +203,7 @@ + "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ + "mpurate=${mpurate} " \ ++ "buddy=${buddy} "\ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0038-Added-configurations-for-xM-Rev-A-board.patch b/recipes-bsp/u-boot/u-boot/0038-Added-configurations-for-xM-Rev-A-board.patch new file mode 100644 index 0000000..4cfcfe1 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0038-Added-configurations-for-xM-Rev-A-board.patch @@ -0,0 +1,29 @@ +From 9a5d5518c3d3844cc49cf2d9ef5aeabca1e87c30 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Wed, 5 May 2010 14:53:49 -0500 +Subject: [PATCH 38/38] Added configurations for xM Rev A board + +This defaults to "on" condition for USB and DVI. May want to revise for +power savings. +--- + board/ti/beagle/beagle.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h +index 7774855..cb7fd1c 100644 +--- a/board/ti/beagle/beagle.h ++++ b/board/ti/beagle/beagle.h +@@ -389,6 +389,10 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/ + + #define MUX_BEAGLE_XM() \ ++ MUX_VAL(CP(GPMC_NCS5), (IDIS | PTD | EN | M4)) /*GPIO_56 - USB HUB reset*/\ ++ MUX_VAL(CP(GPMC_WAIT0), (IDIS | PTU | EN | M4)) /*GPIO_63 - P8 USB HUB nreset*/\ ++ MUX_VAL(CP(MMC1_DAT7), (IDIS | PTU | EN | M4)) /*GPIO_129 - DVI enable*/\ ++ MUX_VAL(CP(HDQ_SIO), (IDIS | PTU | EN | M4)) /*GPIO_170 - P8 DVI enable*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ + MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ + MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0038-BeagleBoard-Added-LED-driver.patch b/recipes-bsp/u-boot/u-boot/0038-BeagleBoard-Added-LED-driver.patch new file mode 100644 index 0000000..74ee4e3 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0038-BeagleBoard-Added-LED-driver.patch @@ -0,0 +1,164 @@ +From 157b125b905b6dc69164d3f43eeb5e40d3744648 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Thu, 20 May 2010 06:14:01 -0500 +Subject: [PATCH] BeagleBoard: Added LED driver + +Added LED driver using status_led. USR0 is set to monitor the boot +status. USR1 is set to be the green LED. +(cherry picked from commit 048b526fd7cc0c642f27c674b3e235321c880b66) +(cherry picked from commit 21c574d9e20f86ab757f5efdd9146e6607f2faba) + +Signed-off-by: Jason Kridner +--- + board/ti/beagle/Makefile | 4 ++- + board/ti/beagle/beagle.c | 8 ++++ + board/ti/beagle/led.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 102 insertions(+), 1 deletions(-) + create mode 100644 board/ti/beagle/led.c + +diff --git a/board/ti/beagle/Makefile b/board/ti/beagle/Makefile +index f797112..4cc675c 100644 +--- a/board/ti/beagle/Makefile ++++ b/board/ti/beagle/Makefile +@@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk + + LIB = $(obj)lib$(BOARD).a + +-COBJS := beagle.o ++COBJS-y := $(BOARD).o ++COBJS-$(CONFIG_STATUS_LED) += led.o + ++COBJS := $(sort $(COBJS-y)) + SRCS := $(COBJS:.o=.c) + OBJS := $(addprefix $(obj),$(COBJS)) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 556e995..d21b9c8 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -30,6 +30,9 @@ + * MA 02111-1307 USA + */ + #include ++#ifdef CONFIG_STATUS_LED ++#include ++#endif + #include + #include + #include +@@ -83,6 +86,10 @@ int board_init(void) + /* boot param addr */ + gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); + ++#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT) ++ status_led_set (STATUS_LED_BOOT, STATUS_LED_ON); ++#endif ++ + return 0; + } + +@@ -278,3 +285,4 @@ void set_muxconf_regs(void) + { + MUX_BEAGLE(); + } ++ +diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c +new file mode 100644 +index 0000000..df26552 +--- /dev/null ++++ b/board/ti/beagle/led.c +@@ -0,0 +1,91 @@ ++/* ++ * Copyright (c) 2010 Texas Instruments, Inc. ++ * Jason Kridner ++ * ++ * 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. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF}; ++ ++/* GPIO pins for the LEDs */ ++#define BEAGLE_LED_USR0 149 ++#define BEAGLE_LED_USR1 150 ++ ++#ifdef STATUS_LED_GREEN ++void green_LED_off (void) ++{ ++ __led_set (STATUS_LED_GREEN, 0); ++} ++ ++void green_LED_on (void) ++{ ++ __led_set (STATUS_LED_GREEN, 1); ++} ++#endif ++ ++void __led_init (led_id_t mask, int state) ++{ ++ __led_set (mask, state); ++} ++ ++void __led_toggle (led_id_t mask) ++{ ++#ifdef STATUS_LED_BIT ++ if (STATUS_LED_BIT & mask) { ++ if (STATUS_LED_ON == saved_state[0]) ++ __led_set(STATUS_LED_BIT, 0); ++ else ++ __led_set(STATUS_LED_BIT, 1); ++ } ++#endif ++#ifdef STATUS_LED_BIT1 ++ if (STATUS_LED_BIT1 & mask) { ++ if (STATUS_LED_ON == saved_state[1]) ++ __led_set(STATUS_LED_BIT1, 0); ++ else ++ __led_set(STATUS_LED_BIT1, 1); ++ } ++#endif ++} ++ ++void __led_set (led_id_t mask, int state) ++{ ++#ifdef STATUS_LED_BIT ++ if (STATUS_LED_BIT & mask) { ++ if (!omap_request_gpio(BEAGLE_LED_USR0)) { ++ omap_set_gpio_direction(BEAGLE_LED_USR0, 0); ++ omap_set_gpio_dataout(BEAGLE_LED_USR0, state); ++ } ++ saved_state[0] = state; ++ } ++#endif ++#ifdef STATUS_LED_BIT1 ++ if (STATUS_LED_BIT1 & mask) { ++ if (!omap_request_gpio(BEAGLE_LED_USR1)) { ++ omap_set_gpio_direction(BEAGLE_LED_USR1, 0); ++ omap_set_gpio_dataout(BEAGLE_LED_USR1, state); ++ } ++ saved_state[1] = state; ++ } ++#endif ++} ++ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch b/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch new file mode 100644 index 0000000..6adbe2f --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch @@ -0,0 +1,256 @@ +From 609524ecd54526b3f3c7d52cc43a3c9795970f6b Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Thu, 20 May 2010 05:41:26 -0500 +Subject: [PATCH] Add 'led' command + +This patch allows any board implementing the coloured LED API +to control the LEDs from the console. + +led [green | yellow | red | all ] [ on | off ] + +or + +led [ 1 | 2 | 3 | all ] [ on | off ] + +Adds configuration item CONFIG_CMD_LED enabling the command. + +Partially based on patch from Ulf Samuelsson: +http://www.mail-archive.com/u-boot@lists.denx.de/msg09593.html. +(cherry picked from commit aaf47f8d6af81393b7d3275d69b5dbdf07a3d6fb) +(cherry picked from commit 3d314bf59a48c2ee93d06d50b81f109af6a6c1ec) + +Signed-off-by: Jason Kridner +--- + common/Makefile | 1 + + common/cmd_led.c | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 208 insertions(+), 0 deletions(-) + create mode 100644 common/cmd_led.c + +diff --git a/common/Makefile b/common/Makefile +index dbf7a05..1d717ca 100644 +--- a/common/Makefile ++++ b/common/Makefile +@@ -106,6 +106,7 @@ COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o + COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o + COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o + COBJS-$(CONFIG_CMD_CRAMFS) += cmd_cramfs.o ++COBJS-$(CONFIG_CMD_LED) += cmd_led.o + COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o + COBJS-y += cmd_load.o + COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o +diff --git a/common/cmd_led.c b/common/cmd_led.c +new file mode 100644 +index 0000000..3b7b534 +--- /dev/null ++++ b/common/cmd_led.c +@@ -0,0 +1,207 @@ ++/* ++ * (C) Copyright 2010 ++ * Jason Kridner ++ * ++ * Based on cmd_led.c patch from: ++ * http://www.mail-archive.com/u-boot@lists.denx.de/msg06873.html ++ * (C) Copyright 2008 ++ * Ulf Samuelsson ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++/* ++ * This file provides a shell like 'test' function to return ++ * true/false from an integer or string compare of two memory ++ * locations or a location and a scalar/literal. ++ * A few parts were lifted from bash 'test' command ++ */ ++ ++#include ++#include ++#include ++#include ++ ++int do_led ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] ) ++{ ++#ifdef CONFIG_BOARD_SPECIFIC_LED ++ led_id_t mask; ++#endif ++ int state; ++ ++ /* Validate arguments */ ++ if ((argc != 3)){ ++ printf("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++ if (strcmp(argv[2], "off") == 0) { ++ state = 0; ++ } else if (strcmp(argv[2], "on") == 0) { ++ state = 1; ++ } else { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "0") == 0) { ++ mask = STATUS_LED_BIT; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "1") == 0) { ++ mask = STATUS_LED_BIT1; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "2") == 0) { ++ mask = STATUS_LED_BIT2; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "3") == 0) { ++ mask = STATUS_LED_BIT3; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#ifdef STATUS_LED_RED ++ if (strcmp(argv[1], "red") == 0) { ++ if (state == 0) ++ red_LED_off(); ++ else ++ red_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_GREEN ++ if (strcmp(argv[1], "green") == 0) { ++ if (state == 0) ++ green_LED_off(); ++ else ++ green_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_YELLOW ++ if (strcmp(argv[1], "yellow") == 0) { ++ if (state == 0) ++ yellow_LED_off(); ++ else ++ yellow_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_BLUE ++ if (strcmp(argv[1], "blue") == 0) { ++ if (state == 0) ++ blue_LED_off(); ++ else ++ blue_LED_on(); ++ } ++ else ++#endif ++ if (strcmp(argv[1], "all") == 0) { ++ mask = 0 ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT1 ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT2 ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT3 ++#endif ++ ; ++#ifdef CONFIG_BOARD_SPECIFIC_LED ++ __led_set(mask, state); ++#endif ++#ifdef STATUS_LED_RED ++ if (state == 0) ++ red_LED_off(); ++ else ++ red_LED_on(); ++#endif ++#ifdef STATUS_LED_GREEN ++ if (state == 0) ++ green_LED_off(); ++ else ++ green_LED_on(); ++#endif ++#ifdef STATUS_LED_YELLOW ++ if (state == 0) ++ yellow_LED_off(); ++ else ++ yellow_LED_on(); ++#endif ++#ifdef STATUS_LED_BLUE ++ if (state == 0) ++ blue_LED_off(); ++ else ++ blue_LED_on(); ++#endif ++ } else { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++U_BOOT_CMD( ++ led, 3, 1, do_led, ++ "led\t- [" ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "0|" ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "1|" ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "2|" ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "3|" ++#endif ++#ifdef STATUS_LED_GREEN ++ "green|" ++#endif ++#ifdef STATUS_LED_YELLOW ++ "yellow|" ++#endif ++#ifdef STATUS_LED_RED ++ "red|" ++#endif ++#ifdef STATUS_LED_BLUE ++ "blue|" ++#endif ++ "all] [on|off]\n", ++ "led [led_name] [on|off] sets or clears led(s)\n" ++); ++ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0039-OMAP3-beagle-setenv-beaglerev-for-AxBx-Cx-xMA-for-be.patch b/recipes-bsp/u-boot/u-boot/0039-OMAP3-beagle-setenv-beaglerev-for-AxBx-Cx-xMA-for-be.patch new file mode 100644 index 0000000..9b64327 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0039-OMAP3-beagle-setenv-beaglerev-for-AxBx-Cx-xMA-for-be.patch @@ -0,0 +1,42 @@ +From c48581ecc0b060e4c1b5fa973d053e81e18f676b Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Thu, 3 Jun 2010 19:50:57 +0200 +Subject: [PATCH 39/39] OMAP3: beagle: setenv beaglerev for AxBx/Cx/xMA for better bootscripts + +--- + board/ti/beagle/beagle.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index 556e995..cdba3dd 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -221,14 +221,17 @@ int misc_init_r(void) + case REVISION_AXBX: + printf("Beagle Rev Ax/Bx\n"); + setenv("mpurate", "600"); ++ setenv("beaglerev", "AxBx"); + break; + case REVISION_CX: + printf("Beagle Rev C1/C2/C3\n"); + MUX_BEAGLE_C(); + setenv("mpurate", "600"); ++ setenv("beaglerev", "Cx"); + break; + case REVISION_C4: + printf("Beagle Rev C4\n"); ++ setenv("beaglerev", "Cx"); + MUX_BEAGLE_C(); + /* Set VAUX2 to 1.8V for EHCI PHY */ + twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +@@ -239,6 +242,7 @@ int misc_init_r(void) + break; + case REVISION_XM: + printf("Beagle xM Rev A\n"); ++ setenv("beaglerev", "xMA"); + MUX_BEAGLE_XM(); + /* Set VAUX2 to 1.8V for EHCI PHY */ + twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0041-BeagleBoard-Enabled-LEDs.patch b/recipes-bsp/u-boot/u-boot/0041-BeagleBoard-Enabled-LEDs.patch new file mode 100644 index 0000000..8b04619 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0041-BeagleBoard-Enabled-LEDs.patch @@ -0,0 +1,47 @@ +From 9d3e56ba351348b6329c488a981d3e2d8f848164 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Wed, 19 May 2010 05:14:43 -0500 +Subject: [PATCH] BeagleBoard: Enabled LEDs + +Added LED driver using status_led. USR0 is set to monitor the boot +status. USR1 is set to be the GREEN LED. + +Signed-off-by: Jason Kridner +--- + include/configs/omap3_beagle.h | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index c2fc6ba..eaa8779 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -98,6 +98,18 @@ + #define CONFIG_SYS_MMC_SET_DEV 1 + #define CONFIG_DOS_PARTITION 1 + ++/* Status LED */ ++#define CONFIG_STATUS_LED 1 ++#define CONFIG_BOARD_SPECIFIC_LED 1 ++#define STATUS_LED_BIT 0x01 ++#define STATUS_LED_STATE STATUS_LED_ON ++#define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) ++#define STATUS_LED_BIT1 0x02 ++#define STATUS_LED_STATE1 STATUS_LED_ON ++#define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 2) ++#define STATUS_LED_BOOT STATUS_LED_BIT ++#define STATUS_LED_GREEN STATUS_LED_BIT1 ++ + /* DDR - I use Micron DDR */ + #define CONFIG_OMAP3_MICRON_DDR 1 + +@@ -132,6 +144,7 @@ + #define CONFIG_CMD_I2C /* I2C serial bus support */ + #define CONFIG_CMD_MMC /* MMC support */ + #define CONFIG_CMD_NAND /* NAND support */ ++#define CONFIG_CMD_LED /* LED support */ + #define CONFIG_VIDEO_OMAP3 /* DSS Support */ + + #undef CONFIG_CMD_FLASH /* flinfo, erase, protect */ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0042-BeagleBoard-New-command-for-status-of-USER-button.patch b/recipes-bsp/u-boot/u-boot/0042-BeagleBoard-New-command-for-status-of-USER-button.patch new file mode 100644 index 0000000..9a704a8 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0042-BeagleBoard-New-command-for-status-of-USER-button.patch @@ -0,0 +1,97 @@ +From c053723cc5a73781a4954e6c93d280436623e3d6 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Wed, 21 Jul 2010 07:41:25 -0500 +Subject: [PATCH] BeagleBoard: Added userbutton command + +Based on commit f1099c7c43caf5bac3bf6a65aa266fade4747072 + Author: Greg Turner + Date: Tue May 25 09:19:06 2010 -0500 + + New u-boot command for status of USER button on BeagleBoard-xM + + Modified bootcmd to check the staus at boot time and set + filename of the boot script. + +* Moved to a BeagleBoard specific file. +* Removed changes to default boot command from adding userbutton + command. +* Made to handle pre-xM boards. +* Flipped polarity of the return value to avoid confusion. Success (0) + is when the button is pressed. Failure (1) is when the button is NOT + pressed. +--- + board/ti/beagle/beagle.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 54 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index a6a4961..66df719 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -40,6 +40,7 @@ + #include + #include + #include "beagle.h" ++#include + + static struct { + unsigned int device_vendor; +@@ -290,3 +291,56 @@ void set_muxconf_regs(void) + MUX_BEAGLE(); + } + ++/* ++ * This command returns the status of the user button on beagle xM ++ * Input - none ++ * Returns - 1 if button is held down ++ * 0 if button is not held down ++ */ ++int do_userbutton (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) ++{ ++ int button = 0; ++ int gpio; ++ ++ /* ++ * pass address parameter as argv[0] (aka command name), ++ * and all remaining args ++ */ ++ switch (beagle_revision) { ++ case REVISION_AXBX: ++ case REVISION_CX: ++ case REVISION_C4: ++ gpio = 7; ++ break; ++ case REVISION_XM: ++ default: ++ gpio = 4; ++ break; ++ } ++ omap_request_gpio(gpio); ++ omap_set_gpio_direction(gpio, 1); ++ printf("The user button is currently "); ++ if(omap_get_gpio_datain(gpio)) ++ { ++ button = 1; ++ printf("PRESSED.\n"); ++ } ++ else ++ { ++ button = 0; ++ printf("NOT pressed.\n"); ++ } ++ ++ omap_free_gpio(gpio); ++ ++ return !button; ++} ++ ++/* -------------------------------------------------------------------- */ ++ ++U_BOOT_CMD( ++ userbutton, CONFIG_SYS_MAXARGS, 1, do_userbutton, ++ "Return the status of the BeagleBoard USER button", ++ "" ++); ++ +-- +1.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0043-BeagleBoard-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch b/recipes-bsp/u-boot/u-boot/0043-BeagleBoard-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch new file mode 100644 index 0000000..fa6bb48 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0043-BeagleBoard-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch @@ -0,0 +1,35 @@ +From d912a6d2d546faf55d07e91816b47096879137cc Mon Sep 17 00:00:00 2001 +From: Steven Kipisz +Date: Fri, 4 Jun 2010 10:31:04 -0500 +Subject: [PATCH] BeagleBoard: Add CONFIG_SYS_MEMTEST_SCRATCH + +Add CONFIG_SYS_MEMTEST_SCRATCH to point to a scratch memory area. + +Signed-off-by: Jason Kridner +--- + include/configs/omap3_beagle.h | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 555b350..0c6fce6 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -297,10 +297,11 @@ + /* Boot Argument Buffer Size */ + #define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE) + +-#define CONFIG_SYS_MEMTEST_START (OMAP34XX_SDRC_CS0) /* memtest */ +- /* works on */ +-#define CONFIG_SYS_MEMTEST_END (OMAP34XX_SDRC_CS0 + \ +- 0x01F00000) /* 31MB */ ++#define CONFIG_SYS_ALT_MEMTEST 1 ++#define CONFIG_SYS_MEMTEST_START (0x82000000) /* memtest */ ++ /* defaults */ ++#define CONFIG_SYS_MEMTEST_END (0x87FFFFFF) /* 128MB */ ++#define CONFIG_SYS_MEMTEST_SCRATCH (0x81000000) /* dummy address */ + + #define CONFIG_SYS_LOAD_ADDR (OMAP34XX_SDRC_CS0) /* default */ + /* load address */ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/0044-Beagleboard-Adjust-boot.patch b/recipes-bsp/u-boot/u-boot/0044-Beagleboard-Adjust-boot.patch new file mode 100644 index 0000000..19b4ab7 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0044-Beagleboard-Adjust-boot.patch @@ -0,0 +1,115 @@ +From c8d52ff17d71be0c632f20092d96e9530088c786 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Wed, 21 Jul 2010 08:47:59 -0500 +Subject: [PATCH] BeagleBoard: Adjust boot command on USER button + +When the USER button is pressed, the default boot command will attempt +to load user.scr. If that fails, it will try to load a ramdisk image. + +This version also sets the rootfstype and assumes that the userbutton +command returns success (0) when the button is pressed. It also really +attempts to load the user.scr file. +--- + include/configs/omap3_beagle.h | 51 ++++++++++++++++++++++++++++++++++----- + 1 files changed, 44 insertions(+), 7 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index f372de2..6d1166f 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -195,9 +195,12 @@ + #define CONFIG_BOOTDELAY 3 + + #define CONFIG_EXTRA_ENV_SETTINGS \ +- "loadaddr=0x82000000\0" \ ++ "loadaddr=0x80200000\0" \ ++ "rdaddr=0x81600000\0" \ + "usbtty=cdc_acm\0" \ + "console=ttyS2,115200n8\0" \ ++ "optargs=\0" \ ++ "bootscr=boot.scr\0" \ + "mpurate=500\0" \ + "buddy=none\0" \ + "vram=12M\0" \ +@@ -208,7 +211,10 @@ + "mmcrootfstype=ext3 rootwait\0" \ + "nandroot=/dev/mtdblock4 rw\0" \ + "nandrootfstype=jffs2\0" \ ++ "ramroot=/dev/ram0 rw\0" \ ++ "ramrootfstype=ext2\0" \ + "mmcargs=setenv bootargs console=${console} " \ ++ "${optargs} " \ + "mpurate=${mpurate} " \ + "buddy=${buddy} "\ + "vram=${vram} " \ +@@ -217,6 +223,7 @@ + "root=${mmcroot} " \ + "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ ++ "${optargs} " \ + "mpurate=${mpurate} " \ + "buddy=${buddy} "\ + "vram=${vram} " \ +@@ -224,7 +231,18 @@ + "omapdss.def_disp=${defaultdisplay} " \ + "root=${nandroot} " \ + "rootfstype=${nandrootfstype}\0" \ +- "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ ++ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} ${bootscr}\0" \ ++ "ramargs=setenv bootargs console=${console} " \ ++ "${optargs} " \ ++ "mpurate=${mpurate} " \ ++ "buddy=${buddy} "\ ++ "vram=${vram} " \ ++ "omapfb.mode=dvi:${dvimode} " \ ++ "omapdss.def_disp=${defaultdisplay} " \ ++ "root=${ramroot} rw ramdisk_size=65536 " \ ++ "initrd=${rdaddr},64M " \ ++ "rootfstype=${ramrootfstype}\0" \ ++ "loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "source ${loadaddr}\0" \ + "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ +@@ -235,15 +253,34 @@ + "run nandargs; " \ + "nand read ${loadaddr} 280000 400000; " \ + "bootm ${loadaddr}\0" \ ++ "ramboot=echo Booting from ramdisk ...; " \ ++ "run ramargs; " \ ++ "bootm ${loadaddr}\0" \ + + #define CONFIG_BOOTCOMMAND \ + "if mmc init ${mmcdev}; then " \ +- "if run loadbootscript; then " \ +- "run bootscript; " \ ++ "if userbutton; then " \ ++ "setenv bootscr user.scr;" \ ++ "if run loadbootscript; then " \ ++ "run bootscript; " \ ++ "else " \ ++ "if run loaduimage; then " \ ++ "if run loadramdisk; then " \ ++ "run ramboot; " \ ++ "else " \ ++ "run mmcboot; " \ ++ "fi; " \ ++ "fi; " \ ++ "fi; " \ + "else " \ +- "if run loaduimage; then " \ +- "run mmcboot; " \ +- "else run nandboot; " \ ++ "setenv bootscr boot.scr; " \ ++ "if run loadbootscript; then " \ ++ "run bootscript; " \ ++ "else " \ ++ "if run loaduimage; then " \ ++ "run mmcboot; " \ ++ "else run nandboot; " \ ++ "fi; " \ + "fi; " \ + "fi; " \ + "else run nandboot; fi" +-- +1.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0045-BeagleBoard-Enable-pullups-on-i2c2.patch b/recipes-bsp/u-boot/u-boot/0045-BeagleBoard-Enable-pullups-on-i2c2.patch new file mode 100644 index 0000000..ea3ab74 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0045-BeagleBoard-Enable-pullups-on-i2c2.patch @@ -0,0 +1,46 @@ +From bf4b655c6c02bbf95bd6ebbf820e53dbd8eb4803 Mon Sep 17 00:00:00 2001 +From: Steve Kipisz +Date: Thu, 5 Aug 2010 10:36:07 -0500 +Subject: [PATCH] BeagleBoard: Enable pullups on i2c2. + +--- + board/ti/beagle/beagle.c | 2 ++ + include/asm-arm/arch-omap3/omap3.h | 9 +++++++++ + 2 files changed, 11 insertions(+), 0 deletions(-) + +diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c +index cdba3dd..eeb37bc 100644 +--- a/board/ti/beagle/beagle.c ++++ b/board/ti/beagle/beagle.c +@@ -163,6 +163,8 @@ int misc_init_r(void) + struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE; + struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE; + ++ /* Enable i22 pullup resisters */ ++ *(ulong *)(CONTROL_PROG_IO1) &= ~(PRG_I2C2_PULLUPRESX); + beagle_identify(); + + printf("\nProbing for expansion boards, if none are connected you'll see a harmless I2C error.\n\n"); +diff --git a/include/asm-arm/arch-omap3/omap3.h b/include/asm-arm/arch-omap3/omap3.h +index 3957c79..1860dff 100644 +--- a/include/asm-arm/arch-omap3/omap3.h ++++ b/include/asm-arm/arch-omap3/omap3.h +@@ -50,6 +50,15 @@ + /* CONTROL */ + #define OMAP34XX_CTRL_BASE (OMAP34XX_L4_IO_BASE + 0x2000) + ++/* Signal Integrity Parameter Control Registers */ ++#define CONTROL_PROG_IO0 0x48002444 ++#define CONTROL_PROG_IO1 0x48002448 ++#define CONTROL_PROG_IO2 0x48002408 ++#define CONTROL_PROG_IO_WKUP1 0x48002A80 ++ ++/* Bit definition for CONTROL_PROG_IO1 */ ++#define PRG_I2C2_PULLUPRESX 0x00000001 ++ + /* UART */ + #define OMAP34XX_UART1 (OMAP34XX_L4_IO_BASE + 0x6a000) + #define OMAP34XX_UART2 (OMAP34XX_L4_IO_BASE + 0x6c000) +-- +1.6.6.1 + diff --git a/recipes-bsp/u-boot/u-boot/0046-BeagleBoard-Add-camera-to-default-bootargs.patch b/recipes-bsp/u-boot/u-boot/0046-BeagleBoard-Add-camera-to-default-bootargs.patch new file mode 100644 index 0000000..f999f7f --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0046-BeagleBoard-Add-camera-to-default-bootargs.patch @@ -0,0 +1,50 @@ +From 519ecc8a8f441d30e55c7e4552c63e2363fa6dd5 Mon Sep 17 00:00:00 2001 +From: Jason Kridner +Date: Thu, 5 Aug 2010 13:54:12 -0500 +Subject: [PATCH] BeagleBoard: Add camera to default bootargs + + +Signed-off-by: Jason Kridner +--- + include/configs/omap3_beagle.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h +index 1a76004..48ad805 100644 +--- a/include/configs/omap3_beagle.h ++++ b/include/configs/omap3_beagle.h +@@ -208,6 +208,7 @@ + "bootscr=boot.scr\0" \ + "mpurate=500\0" \ + "buddy=none\0" \ ++ "camera=lbcm3m1\0" \ + "vram=12M\0" \ + "dvimode=640x480MR-16@60\0" \ + "defaultdisplay=dvi\0" \ +@@ -222,6 +223,7 @@ + "${optargs} " \ + "mpurate=${mpurate} " \ + "buddy=${buddy} "\ ++ "camera=${camera} "\ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +@@ -231,6 +233,7 @@ + "${optargs} " \ + "mpurate=${mpurate} " \ + "buddy=${buddy} "\ ++ "camera=${camera} "\ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +@@ -241,6 +244,7 @@ + "${optargs} " \ + "mpurate=${mpurate} " \ + "buddy=${buddy} "\ ++ "camera=${camera} "\ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapdss.def_disp=${defaultdisplay} " \ +-- +1.5.6.4 + diff --git a/recipes-bsp/u-boot/u-boot/fw_env.config b/recipes-bsp/u-boot/u-boot/fw_env.config new file mode 100644 index 0000000..d9112c2 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/fw_env.config @@ -0,0 +1,8 @@ +# Configuration file for fw_(printenv/saveenv) utility. +# Up to two entries are valid, in this case the redundant +# environment sector is assumed present. +# Notice, that the "Number of sectors" is ignored on NOR. + +# MTD device name Device offset Env. size Flash sector size Number of sectors +/dev/mtd2 0x0000 0x20000 0x20000 + diff --git a/recipes-bsp/u-boot/u-boot_git.bb b/recipes-bsp/u-boot/u-boot_git.bb new file mode 100644 index 0000000..3750863 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot_git.bb @@ -0,0 +1,62 @@ +require u-boot.inc +PR ="r65" + +FILESPATHPKG =. "u-boot-git:" + +SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git \ + file://0001-OMAP3-enable-i2c-bus-switching-for-Beagle-and-Overo.patch \ + file://0002-OMAP3-add-board-revision-detection-for-Overo.patch \ + file://0003-OMAP3-update-Beagle-revision-detection-to-recognize-.patch \ + file://0004-OMAP3-Set-VAUX2-to-1.8V-for-EHCI-PHY-on-Beagle-Rev-C.patch \ + file://0005-OMAP3-add-entry-for-rev-3.1.2-check-and-display-max-.patch \ + file://0006-OMAP3-add-mpurate-boot-arg-for-overo-and-beagle.patch \ + file://0007-OMAP3-detect-expansion-board-type-version-using-eepr.patch \ + file://0008-OMAP3-Overo-enable-config-eeprom-to-set-u-boot-env-v.patch \ + file://0009-OMAP3-Overo-enable-input-on-MMC1_CLK-and-MMC3_CLK-pi.patch \ + file://0010-OMAP3-Overo-set-CONFIG_SYS_I2C_SPEED-to-400Khz.patch \ + file://0011-OMAP3-trim-excessively-long-delays-in-i2c-driver.patch \ + file://0012-OMAP3-Overo-allow-expansion-boards-with-any-vendor-I.patch \ + file://0013-OMAP3-Overo-change-address-of-expansion-eeprom-to-0x.patch \ + file://0014-OMAP3-board.c-don-t-attempt-to-set-up-second-RAM-ban.patch \ + file://0015-OMAP3-mem.c-enhance-the-RAM-test.patch \ + file://0016-env_nand.c-fail-gracefully-if-no-nand-is-present.patch \ + file://0017-OMAP3-add-definitions-to-support-sysinfo-cpu-and-cpu.patch \ + file://0018-OMAP3-sys_info-update-cpu-detection-for-36XX-37XX.patch \ + file://0019-OMAP3-clocks-update-clock-setup-for-36XX-37XX.patch \ + file://0020-OMAP3-beagle-add-support-for-Beagle-xM.patch \ + file://0021-OMAP3-Beagle-Overo-remove-omapfb.debug-y-from-defaul.patch \ + file://0022-OMAP3-beagle-implement-expansionboard-detection-base.patch \ + file://0023-beagleboard-display-message-about-I2C-errors-being-e.patch \ + file://0024-beagleboard-fix-TCT-expansionboard-IDs.patch \ + file://0025-Add-DSS-driver-for-OMAP3.patch \ + file://0026-Enable-DSS-driver-for-Beagle.patch \ + file://0027-beagleboardXM-don-t-set-mpurate-on-xM-in-bootargs.patch \ + file://0028-OMAP3-fix-and-clean-up-L2-cache-enable-disable-funct.patch \ + file://0029-OMAP3-convert-setup_auxcr-to-pure-asm.patch \ + file://0030-OMAP3-apply-Cortex-A8-errata-workarounds-only-on-aff.patch \ + file://0031-OMAP3-beagle-add-more-expansionboards-based-on-http-.patch \ + file://0032-OMAP3-beagle-set-mpurate-to-600-for-revB-and-revC1-3.patch \ + file://0033-OMAP3-beagle-prettify-expansionboard-message-a-bit.patch \ + file://0034-OMAP3-beagle-add-pinmux-for-Tincantools-Trainer-expa.patch \ + file://0035-OMAP3-Beagle-set-mpurate-to-1000-for-xM.patch \ + file://0036-OMAP3-Beagle-decrease-bootdelay-to-3-use-VGA-for-def.patch \ + file://0037-OMAP3-beagle-pass-expansionboard-name-in-bootargs.patch \ + file://0038-Added-configurations-for-xM-Rev-A-board.patch \ + file://0039-OMAP3-beagle-setenv-beaglerev-for-AxBx-Cx-xMA-for-be.patch \ + file://0001-OMAP-mmc-add-support-for-second-and-third-mmc-chan.patch \ + file://0001-OMAP3-Beagle-enable-support-for-second-and-third-m.patch \ + file://0038-BeagleBoard-Added-LED-driver.patch \ + file://0039-Add-led-command.patch \ + file://0041-BeagleBoard-Enabled-LEDs.patch \ + file://0042-BeagleBoard-New-command-for-status-of-USER-button.patch \ + file://0043-BeagleBoard-Add-CONFIG_SYS_MEMTEST_SCRATCH.patch \ + file://0044-Beagleboard-Adjust-boot.patch \ + file://0045-BeagleBoard-Enable-pullups-on-i2c2.patch \ + file://0046-BeagleBoard-Add-camera-to-default-bootargs.patch \ + file://0001-BeagleBoard-move-ramdisk-parameters.patch \ + file://fw_env.config \ +" +SRCREV = "ca6e1c136ddb720c3bb2cc043b99f7f06bc46c55" +PV = "2010.03+${PR}+gitr${SRCREV}" + +S = "${WORKDIR}/git" diff --git a/recipes-bsp/x-load/signgp.bb b/recipes-bsp/x-load/signgp.bb new file mode 100644 index 0000000..8535c53 --- /dev/null +++ b/recipes-bsp/x-load/signgp.bb @@ -0,0 +1,19 @@ +LICENSE = "NewBSD" +DESCRIPTION = "Tool to sign omap3 x-loader images" + +PR = "r4" + +SRC_URI = "file://signGP.c" + +do_compile() { + ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/signGP.c -o signGP +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 signGP ${D}${bindir} +} + +NATIVE_INSTALL_WORKS = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes-bsp/x-load/signgp/signGP.c b/recipes-bsp/x-load/signgp/signGP.c new file mode 100644 index 0000000..9325064 --- /dev/null +++ b/recipes-bsp/x-load/signgp/signGP.c @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + + +// +// signGP.c +// Read the x-load.bin file and write out the x-load.bin.ift file. +// The signed image is the original pre-pended with the size of the image +// and the load address. If not entered on command line, file name is +// assumed to be x-load.bin in current directory and load address is +// 0x40200800. + +#include +#include +#include +#include +#include +#include + + +main(int argc, char *argv[]) +{ + int i; + char ifname[FILENAME_MAX], ofname[FILENAME_MAX], ch; + FILE *ifile, *ofile; + unsigned long loadaddr, len; + struct stat sinfo; + + + // Default to x-load.bin and 0x40200800. + strcpy(ifname, "x-load.bin"); + loadaddr = 0x40200800; + + if ((argc == 2) || (argc == 3)) + strcpy(ifname, argv[1]); + + if (argc == 3) + loadaddr = strtol(argv[2], NULL, 16); + + // Form the output file name. + strcpy(ofname, ifname); + strcat(ofname, ".ift"); + + // Open the input file. + ifile = fopen(ifname, "rb"); + if (ifile == NULL) { + printf("Cannot open %s\n", ifname); + exit(0); + } + + // Get file length. + stat(ifname, &sinfo); + len = sinfo.st_size; + + // Open the output file and write it. + ofile = fopen(ofname, "wb"); + if (ofile == NULL) { + printf("Cannot open %s\n", ofname); + fclose(ifile); + exit(0); + } + + // Pad 1 sector of zeroes. + //ch = 0x00; + //for (i=0; i<0x200; i++) + // fwrite(&ch, 1, 1, ofile); + + fwrite(&len, 1, 4, ofile); + fwrite(&loadaddr, 1, 4, ofile); + for (i=0; i +Date: Tue, 13 Apr 2010 13:27:31 -0700 +Subject: [PATCH] FAT: Find the start of the first partition in a non-hardcoded way + +--- + fs/fat/fat.c | 12 +++++------- + 1 files changed, 5 insertions(+), 7 deletions(-) + +diff --git a/fs/fat/fat.c b/fs/fat/fat.c +index eb754c0..c6bdb13 100644 +--- a/fs/fat/fat.c ++++ b/fs/fat/fat.c +@@ -145,13 +145,11 @@ fat_register_device(block_dev_desc_t *dev_desc, int part_no) + return -1; + } + #else +- /* FIXME we need to determine the start block of the +- * partition where the DOS FS resides. This can be done +- * by using the get_partition_info routine. For this +- * purpose the libpart must be included. +- */ +- part_offset=63; +- //part_offset=0; ++ part_offset = buffer[DOS_PART_TBL_OFFSET+8] | ++ buffer[DOS_PART_TBL_OFFSET+9] <<8 | ++ buffer[DOS_PART_TBL_OFFSET+10]<<16 | ++ buffer[DOS_PART_TBL_OFFSET+11]<<24; ++ + cur_part = 1; + #endif + } +-- +1.6.1 + diff --git a/recipes-bsp/x-load/x-load-git/name.patch b/recipes-bsp/x-load/x-load-git/name.patch new file mode 100644 index 0000000..1a7aa56 --- /dev/null +++ b/recipes-bsp/x-load/x-load-git/name.patch @@ -0,0 +1,13 @@ +--- git/Makefile-orig 2010-03-08 06:56:36.000000000 -0800 ++++ git/Makefile 2010-03-08 06:56:52.000000000 -0800 +@@ -153,8 +153,8 @@ omap3evm_config : unconfig + overo_config : unconfig + @./mkconfig $(@:_config=) arm omap3 overo + +-omap3530beagle_config : unconfig +- @./mkconfig $(@:_config=) arm omap3 omap3530beagle ++beagleboard_config : unconfig ++ @./mkconfig omap3530beagle arm omap3 omap3530beagle + + ######################################################################### + diff --git a/recipes-bsp/x-load/x-load-git/xm-mem.patch b/recipes-bsp/x-load/x-load-git/xm-mem.patch new file mode 100644 index 0000000..d038faf --- /dev/null +++ b/recipes-bsp/x-load/x-load-git/xm-mem.patch @@ -0,0 +1,237 @@ +From a25b926ff963a1866e26b11a4dac742564618375 Mon Sep 17 00:00:00 2001 +From: Steve Kipisz +Date: Thu, 8 Jul 2010 10:30:58 -0500 +Subject: [PATCH] Support Micron or Numonyx memory + +* Updated Numonyx memory size. +--- + board/omap3530beagle/omap3530beagle.c | 56 +++++++++++++++++++++++++++----- + drivers/k9f1g08r0a.c | 43 +++++++++++++++++++------ + include/asm/arch-omap3/mem.h | 43 ++++++++++++++++++++++++- + 3 files changed, 121 insertions(+), 21 deletions(-) + +diff --git a/board/omap3530beagle/omap3530beagle.c b/board/omap3530beagle/omap3530beagle.c +index eb8008e..1b3d8c7 100644 +--- a/board/omap3530beagle/omap3530beagle.c ++++ b/board/omap3530beagle/omap3530beagle.c +@@ -265,6 +265,32 @@ u32 wait_on_value(u32 read_bit_mask, u32 match_value, u32 read_addr, u32 bound) + } + + #ifdef CFG_3430SDRAM_DDR ++ ++#define MICRON_DDR 0 ++#define NUMONYX_MCP 1 ++int identify_xm_ddr() ++{ ++ int mfr, id; ++ ++ __raw_writel(M_NAND_GPMC_CONFIG1, GPMC_CONFIG1 + GPMC_CONFIG_CS0); ++ __raw_writel(M_NAND_GPMC_CONFIG2, GPMC_CONFIG2 + GPMC_CONFIG_CS0); ++ __raw_writel(M_NAND_GPMC_CONFIG3, GPMC_CONFIG3 + GPMC_CONFIG_CS0); ++ __raw_writel(M_NAND_GPMC_CONFIG4, GPMC_CONFIG4 + GPMC_CONFIG_CS0); ++ __raw_writel(M_NAND_GPMC_CONFIG5, GPMC_CONFIG5 + GPMC_CONFIG_CS0); ++ __raw_writel(M_NAND_GPMC_CONFIG6, GPMC_CONFIG6 + GPMC_CONFIG_CS0); ++ ++ /* Enable the GPMC Mapping */ ++ __raw_writel((((OMAP34XX_GPMC_CS0_SIZE & 0xF)<<8) | ++ ((NAND_BASE_ADR>>24) & 0x3F) | ++ (1<<6)), (GPMC_CONFIG7 + GPMC_CONFIG_CS0)); ++ delay(2000); ++ ++ nand_readid(&mfr, &id); ++ if (mfr == 0) ++ return MICRON_DDR; ++ if ((mfr == 0x20) && (id == 0xba)) ++ return NUMONYX_MCP; ++} + /********************************************************************* + * config_3430sdram_ddr() - Init DDR on 3430SDP dev board. + *********************************************************************/ +@@ -279,15 +305,27 @@ void config_3430sdram_ddr(void) + __raw_writel(SDP_SDRC_SHARING, SDRC_SHARING); + + if (beagle_revision() == REVISION_XM) { +- __raw_writel(0x2, SDRC_CS_CFG); /* 256MB/bank */ +- __raw_writel(SDP_SDRC_MDCFG_0_DDR_XM, SDRC_MCFG_0); +- __raw_writel(SDP_SDRC_MDCFG_0_DDR_XM, SDRC_MCFG_1); +- __raw_writel(MICRON_V_ACTIMA_200, SDRC_ACTIM_CTRLA_0); +- __raw_writel(MICRON_V_ACTIMB_200, SDRC_ACTIM_CTRLB_0); +- __raw_writel(MICRON_V_ACTIMA_200, SDRC_ACTIM_CTRLA_1); +- __raw_writel(MICRON_V_ACTIMB_200, SDRC_ACTIM_CTRLB_1); +- __raw_writel(SDP_3430_SDRC_RFR_CTRL_200MHz, SDRC_RFR_CTRL_0); +- __raw_writel(SDP_3430_SDRC_RFR_CTRL_200MHz, SDRC_RFR_CTRL_1); ++ if (identify_xm_ddr() == MICRON_DDR) { ++ __raw_writel(0x2, SDRC_CS_CFG); /* 256MB/bank */ ++ __raw_writel(SDP_SDRC_MDCFG_0_DDR_MICRON_XM, SDRC_MCFG_0); ++ __raw_writel(SDP_SDRC_MDCFG_0_DDR_MICRON_XM, SDRC_MCFG_1); ++ __raw_writel(MICRON_V_ACTIMA_200, SDRC_ACTIM_CTRLA_0); ++ __raw_writel(MICRON_V_ACTIMB_200, SDRC_ACTIM_CTRLB_0); ++ __raw_writel(MICRON_V_ACTIMA_200, SDRC_ACTIM_CTRLA_1); ++ __raw_writel(MICRON_V_ACTIMB_200, SDRC_ACTIM_CTRLB_1); ++ __raw_writel(SDP_3430_SDRC_RFR_CTRL_200MHz, SDRC_RFR_CTRL_0); ++ __raw_writel(SDP_3430_SDRC_RFR_CTRL_200MHz, SDRC_RFR_CTRL_1); ++ } else { ++ __raw_writel(0x4, SDRC_CS_CFG); /* 512MB/bank */ ++ __raw_writel(SDP_SDRC_MDCFG_0_DDR_NUMONYX_XM, SDRC_MCFG_0); ++ __raw_writel(SDP_SDRC_MDCFG_0_DDR_NUMONYX_XM, SDRC_MCFG_1); ++ __raw_writel(NUMONYX_V_ACTIMA_165, SDRC_ACTIM_CTRLA_0); ++ __raw_writel(NUMONYX_V_ACTIMB_165, SDRC_ACTIM_CTRLB_0); ++ __raw_writel(NUMONYX_V_ACTIMA_165, SDRC_ACTIM_CTRLA_1); ++ __raw_writel(NUMONYX_V_ACTIMB_165, SDRC_ACTIM_CTRLB_1); ++ __raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_0); ++ __raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_1); ++ } + } else { + __raw_writel(0x1, SDRC_CS_CFG); /* 128MB/bank */ + __raw_writel(SDP_SDRC_MDCFG_0_DDR, SDRC_MCFG_0); +diff --git a/drivers/k9f1g08r0a.c b/drivers/k9f1g08r0a.c +index 8968a1b..d2da804 100644 +--- a/drivers/k9f1g08r0a.c ++++ b/drivers/k9f1g08r0a.c +@@ -154,6 +154,29 @@ static int NanD_Address(unsigned int numbytes, unsigned long ofs) + return 0; + } + ++int nand_readid(int *mfr, int *id) ++{ ++ NAND_ENABLE_CE(); ++ ++ if (NanD_Command(NAND_CMD_RESET)) { ++ NAND_DISABLE_CE(); ++ return 1; ++ } ++ ++ if (NanD_Command(NAND_CMD_READID)) { ++ NAND_DISABLE_CE(); ++ return 1; ++ } ++ ++ NanD_Address(ADDR_COLUMN, 0); ++ ++ *mfr = READ_NAND(NAND_ADDR); ++ *id = READ_NAND(NAND_ADDR); ++ ++ NAND_DISABLE_CE(); ++ return 0; ++} ++ + /* read chip mfr and id + * return 0 if they match board config + * return 1 if not +@@ -162,23 +185,23 @@ int nand_chip() + { + int mfr, id; + +- NAND_ENABLE_CE(); ++ NAND_ENABLE_CE(); + +- if (NanD_Command(NAND_CMD_RESET)) { +- printf("Err: RESET\n"); +- NAND_DISABLE_CE(); ++ if (NanD_Command(NAND_CMD_RESET)) { ++ printf("Err: RESET\n"); ++ NAND_DISABLE_CE(); + return 1; + } + +- if (NanD_Command(NAND_CMD_READID)) { +- printf("Err: READID\n"); +- NAND_DISABLE_CE(); ++ if (NanD_Command(NAND_CMD_READID)) { ++ printf("Err: READID\n"); ++ NAND_DISABLE_CE(); + return 1; +- } ++ } + +- NanD_Address(ADDR_COLUMN, 0); ++ NanD_Address(ADDR_COLUMN, 0); + +- mfr = READ_NAND(NAND_ADDR); ++ mfr = READ_NAND(NAND_ADDR); + id = READ_NAND(NAND_ADDR); + + NAND_DISABLE_CE(); +diff --git a/include/asm/arch-omap3/mem.h b/include/asm/arch-omap3/mem.h +index cba4c6f..63cdba1 100644 +--- a/include/asm/arch-omap3/mem.h ++++ b/include/asm/arch-omap3/mem.h +@@ -46,6 +46,7 @@ typedef enum { + #define MMC_NAND 4 + #define MMC_ONENAND 5 + #define GPMC_NONE 6 ++#define GPMC_ONENAND_TRY 7 + + #endif + +@@ -71,7 +72,8 @@ typedef enum { + #define SDP_SDRC_MDCFG_0_DDR (0x02582019|B_ALL) /* Infin ddr module */ + #else + #define SDP_SDRC_MDCFG_0_DDR (0x02584019|B_ALL) +-#define SDP_SDRC_MDCFG_0_DDR_XM (0x03588019|B_ALL) ++#define SDP_SDRC_MDCFG_0_DDR_MICRON_XM (0x03588019|B_ALL) ++#define SDP_SDRC_MDCFG_0_DDR_NUMONYX_XM (0x04590019|B_ALL) + #endif + + #define SDP_SDRC_MR_0_DDR 0x00000032 +@@ -252,12 +254,47 @@ typedef enum { + (MICRON_TDPL_200 << 6) | (MICRON_TDAL_200)) + + #define MICRON_TWTR_200 2 +-#define MICRON_TCKE_200 1 ++#define MICRON_TCKE_200 4 + #define MICRON_TXP_200 2 + #define MICRON_XSR_200 23 + #define MICRON_V_ACTIMB_200 ((MICRON_TCKE_200 << 12) | (MICRON_XSR_200 << 0)) | \ + (MICRON_TXP_200 << 8) | (MICRON_TWTR_200 << 16) + ++/* NUMONYX part of IGEP0020 (165MHz optimized) 6.06ns ++ * ACTIMA ++ * TDAL = Twr/Tck + Trp/tck = 15/6 + 18/6 = 2.5 + 3 = 5.5 -> 6 ++ * TDPL (Twr) = 15/6 = 2.5 -> 3 ++ * TRRD = 12/6 = 2 ++ * TRCD = 22.5/6 = 3.75 -> 4 ++ * TRP = 18/6 = 3 ++ * TRAS = 42/6 = 7 ++ * TRC = 60/6 = 10 ++ * TRFC = 140/6 = 23.3 -> 24 ++ * ACTIMB ++ * TWTR = 2 ++ * TCKE = 2 ++ * TXSR = 200/6 = 33.3 -> 34 ++ * TXP = 1.0 + 1.1 = 2.1 -> 3 ¿? ++ */ ++#define NUMONYX_TDAL_165 6 ++#define NUMONYX_TDPL_165 3 ++#define NUMONYX_TRRD_165 2 ++#define NUMONYX_TRCD_165 4 ++#define NUMONYX_TRP_165 3 ++#define NUMONYX_TRAS_165 7 ++#define NUMONYX_TRC_165 10 ++#define NUMONYX_TRFC_165 24 ++#define NUMONYX_V_ACTIMA_165 ((NUMONYX_TRFC_165 << 27) | (NUMONYX_TRC_165 << 22) | (NUMONYX_TRAS_165 << 18) \ ++ | (NUMONYX_TRP_165 << 15) | (NUMONYX_TRCD_165 << 12) |(NUMONYX_TRRD_165 << 9) | \ ++ (NUMONYX_TDPL_165 << 6) | (NUMONYX_TDAL_165)) ++ ++#define NUMONYX_TWTR_165 2 ++#define NUMONYX_TCKE_165 2 ++#define NUMONYX_TXP_165 3 ++#define NUMONYX_XSR_165 34 ++#define NUMONYX_V_ACTIMB_165 ((NUMONYX_TCKE_165 << 12) | (NUMONYX_XSR_165 << 0)) | \ ++ (NUMONYX_TXP_165 << 8) | (NUMONYX_TWTR_165 << 16) ++ + /* New and compatability speed defines */ + #if defined(PRCM_CLK_CFG2_200MHZ) || defined(PRCM_CONFIG_II) || defined(PRCM_CONFIG_5B) + # define L3_100MHZ /* Use with <= 100MHz SDRAM */ +@@ -276,6 +313,8 @@ typedef enum { + #elif defined(L3_165MHZ) + # define MICRON_SDRC_ACTIM_CTRLA_0 MICRON_V_ACTIMA_165 + # define MICRON_SDRC_ACTIM_CTRLB_0 MICRON_V_ACTIMB_165 ++# define NUMONYX_SDRC_ACTIM_CTRLA_0 NUMONYX_V_ACTIMA_165 ++# define NUMONYX_SDRC_ACTIM_CTRLB_0 NUMONYX_V_ACTIMB_165 + #endif + + +-- +1.6.1 + diff --git a/recipes-bsp/x-load/x-load.inc b/recipes-bsp/x-load/x-load.inc new file mode 100644 index 0000000..8743243 --- /dev/null +++ b/recipes-bsp/x-load/x-load.inc @@ -0,0 +1,57 @@ +DESCRIPTION = "x-load bootloader loader" +SECTION = "bootloaders" +PRIORITY = "optional" +LICENSE = "GPLv2+" + +DEPENDS = "signgp-native" + +PARALLEL_MAKE="" + +EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" + +XLOAD_MACHINE ?= "${MACHINE}_config" + +XLOAD_IMAGE ?= "x-load-${MACHINE}-${PV}-${PR}.bin.ift" +XLOAD_SYMLINK ?= "x-load-${MACHINE}.bin.ift" +XLOAD_USB_IMAGE ?= "x-load-usb-${MACHINE}-${PV}-${PR}.bin" +XLOAD_USB_SYMLINK ?= "x-load-usb-${MACHINE}.bin" +MLO_IMAGE ?= "MLO-${MACHINE}-${PV}-${PR}" +MLO_SYMLINK ?= "MLO-${MACHINE}" +MLO_SYMLINK_NOMACHINE ?= "MLO" +XLOAD_LOAD_ADDRESS ?= 0x40200800 + +do_compile () { + unset LDFLAGS + unset CFLAGS + unset CPPFLAGS + oe_runmake distclean + oe_runmake ${XLOAD_MACHINE} + oe_runmake +} + +do_install () { + signGP ${S}/x-load.bin ${XLOAD_LOAD_ADDRESS} + + install -d ${D}/boot + install ${S}/x-load.bin.ift ${D}/boot/${MLO_IMAGE} + ln -sf ${MLO_IMAGE} ${D}/boot/${MLO_SYMLINK_NOMACHINE} +} + +FILES_${PN} = "/boot" + +do_deploy () { + install -d ${DEPLOY_DIR_IMAGE} + install ${S}/x-load.bin.ift ${DEPLOY_DIR_IMAGE}/${XLOAD_IMAGE} + install ${S}/x-load.bin ${DEPLOY_DIR_IMAGE}/${XLOAD_USB_IMAGE} + install ${S}/x-load.bin.ift ${DEPLOY_DIR_IMAGE}/${MLO_IMAGE} + + cd ${DEPLOY_DIR_IMAGE} + rm -f ${XLOAD_SYMLINK} + ln -sf ${XLOAD_IMAGE} ${XLOAD_SYMLINK} + rm -f ${XLOAD_USB_SYMLINK} + ln -sf ${XLOAD_USB_IMAGE} ${XLOAD_USB_SYMLINK} + rm -f ${MLO_SYMLINK} + ln -sf ${MLO_IMAGE} ${MLO_SYMLINK} +} +do_deploy[dirs] = "${S}" +addtask deploy before do_build after do_install diff --git a/recipes-bsp/x-load/x-load_git.bb b/recipes-bsp/x-load/x-load_git.bb new file mode 100644 index 0000000..f45bac9 --- /dev/null +++ b/recipes-bsp/x-load/x-load_git.bb @@ -0,0 +1,22 @@ +require x-load.inc + +DEFAULT_PREFERENCE_omap3-pandora = "-1" + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/x-load-git" + +SRCREV_pn-${PN} = "1c9276af4d6a5b7014a7630a1abeddf3b3177563" + +PV = "1.44+${PR}+gitr${SRCREV}" +PR ="r16" +PE = "1" + +SRC_URI = "git://gitorious.org/x-load-omap3/mainline.git;branch=master;protocol=git" + +SRC_URI_append_beagleboard = " \ + file://name.patch \ + file://bb8547fcbc54ecc7a75f9ad45a31042a04d8a2ce.patch \ + file://xm-mem.patch \ + " +S = "${WORKDIR}/git" + +PACKAGE_ARCH = "${MACHINE_ARCH}" -- 2.39.2