changed Makefile and profiles, added patches for kernel 2.6.24 (stable-branch of...
authorMirko Vogt <mirko@openwrt.org>
Fri, 12 Dec 2008 11:58:53 +0000 (11:58 +0000)
committerMirko Vogt <mirko@openwrt.org>
Fri, 12 Dec 2008 11:58:53 +0000 (11:58 +0000)
SVN-Revision: 13613

844 files changed:
target/linux/s3c24xx/Makefile
target/linux/s3c24xx/config-2.6.24 [new file with mode: 0644]
target/linux/s3c24xx/image/Makefile
target/linux/s3c24xx/patches-2.6.24/1001-explicitly-link-notes-section.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1003-neo1973-soc-include-fix.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1004-asoc-neo1973_wm8753-power.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1006-fix-i2c-s3c2410-resume-race.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1007-resume-timers-wq.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1008-wm8753-rout2-inv.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1009-s3c2410-bbt.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1010-gta01-pcf50606.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1011-gta01-core.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1012-gta01-jbt6k74.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1013-gta01-inputdevice.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1014-gta01-power_control.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1015-s3c2410-pwm.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1016-gta01-vibrator.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1017-gta01-backlight.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1018-s3c2410_touchscreen.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1019-s3c2410_ts-gta01.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1020-i2c-permit_invalid_addrs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1021-g_ether-highpower.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1022-g_ether-vendor_product.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1023-s3c_mci.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1024-s3c_mci-gta01.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1025-qt2410-s3c_mci-pdata.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1026-s3c24xx-nand-largepage.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1027-s3c2410_udc-2440_dual_packet-workaround.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1028-hxd8-core.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1029-hxd8-tsl256x.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1030-s3c2442b-cpuid.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1031-pcf50633.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1032-pcf50633-suspend-hacks.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1033-smedia-glamo.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1034-glamo-mmc.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1035-gta02-core.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1036-gta02-power_control.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1037-gta02-sound.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1038-lis302dl.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1039-gta02-leds.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1040-gta02-acc.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1041-pcf506xx.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1042-gta02-bt-fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1043-openmoko-logo.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1044-config-nr-tty-devices.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1045-pm-debug_less_verbose.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1046-s3c2410_serial-nodebug.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1047-input-nots-mousedev.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1048-s3c2440-nand-disable-hwecc.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1049-qt2410-cs8900.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1050-s3c2410-qt2410-buttons.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1051-fail-unless-uimage.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1052-montour-audio.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1053-introduce-fiq-basis.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1054-introduce-fiq-use-timer3-as-source.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1055-introduce-fiq-migrate-vibrator-gta02-only.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1056-fiq-hdq.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1057-bq27000-battery-driver.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1058-fix-EVIOCGRAB-semantics.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1059-iis-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1060-s3c24xx-pcm-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1061-s3c2410-usb-switch.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1062-pnp_fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1063-atheros_2_0_function.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1064-atheros_2_0_hcd.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1065-atheros_2_0_sdio_stack.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1067-fix-pcf50606-LOWBAT-kill-init.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1068-fix-pcf50633-LOWBAT-kill-init.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1069-gta01-dehang-printk.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1070-kexec-atags.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1071-suspend-prelim1.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1072-gta02-sound-bandaid.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1073-glamo-cmdqueue-bandaid.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1074-local-add-defconfig.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1075-local-build-scripts.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1076-local-build-new-dfu-vid.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1077-local-update-defconfig-for-2.6-dev.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1078-local-config-add-vfat-nls-to-kern.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1079-local-config-add-bluetooth-monolithic.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1080-local-config-wlan-config-changes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1081-local-config-defconfig-motion-sensor-gpio.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1082-local-config-pmu.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1083-local-config-ext2.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1084-contrib-fix-chgstate-array-bloat.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1085-bugfix-deglitch-gpio-output-enable.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1086-clean-snip-gpio-reinit.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1087-introduce-fiq-hdq.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1088-introduce-bq27000-battery-driver.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1089-debug-suspend-dump-gpio-states-add-GPA.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1090-fix-s3c2410_timer_setup-resume-BUG.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1091-config-add-alsa.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1094-fix-glamo-mci-fake-reset-opcode-in-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1095-use-gpio-control-leds.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1096-fix-gpio-led-patch-still-pwm-t3.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1097-introduce-usb-host-power-control.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1098-fix-charging-deassert-host-power-1a-detect.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1099-add-pcf50633-06-RTC_AIE-ioctl.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1100-fix-lis302dl-suspend-gpio.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1101-fix-suspend-gps-tx-level.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1102-Do-not-send-low-level-debugging-to-the-modem.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1103-add-gta02-pcb-revision-detect.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1104-debug-glamo-dump-regs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1105-add-pcb-rev-sysfs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1106-Simplify-the-code-there-is-no-need-for-a-branch.-Th.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1107-Remove-dead-code.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1108-Fix-the-FIXME-store-the-GPIO-value-for-now.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1109-Convert-the-driver-to-the-generic-GPIO-framework.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1111-This-is-gta02-and-not-gta01.-Do-not-call-the-vibrato.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1112-Fix-spelling.-flaoting-floating.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1114-Enable-GPS-only-if-it-was-powered-on-before-suspendi.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1115-fix-wlan-disable.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1116-defconfig-audio.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1117-audio-tickless-timeout.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1118-fix-gsm-download-irq-balance-issue.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1119-add-modules-defconfig.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1120-fix-glamofb-cmdqueue-timeout.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1121-fix-usb-ethernet-mwester.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1122-fix-glamofb-cmd-mode-locking.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1123-fix-jack-debounce.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1124-OpenMoko-Openmoko.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1125-fix-gta01-spi-resume-patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1126-Remove-not-needed-ifdef-as-machine_is_-is-always-de.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1127--leds-We-would-enable-PWM-for-all-four-timers-disa.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1128--led-Misc-fixes-in-the-driver-code.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1129--neo-bluetooth-GTA01_GPIO_MODEM_RST-GTA02_GPIO_M.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1130--neo-Every-access-to-GPIO-bank-B-has-to-go-through.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1132-fix-gta01-pmu-irq-edge-lost-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1133-gta01-fix-jbt-platform-missing-members.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1134-gta01-fix-resume-redo-par.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1135-gta01-gps-power-state-resume-preserve.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1136-This-fixes-the-exit-function-so-that-the-module-can.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1137-This-adds-some-debug-messages-to-the-Neo1937-sound-d.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1138-From-cc08b5986dfd8d971ee46ce7045fb7863f99a92a-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1139-clean-sdio-hcd-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1140-Stop-GTA01-MMC-Debugging-messages.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1141-fix-KEY_PHONE-up-down-inversion.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1142-s3c24xx-pwm-platform-driver.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1143-fix-wep-needs-keys-before-ap.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1144-config-add-back-MMC_UNSAFE_RESUME.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1145-fix-suspend-backlight-timing-pm-debug.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1146-quench-glamofb-err-lock-and-mmc-debug.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1147-add-force-backlight-up-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1148-fix-backlight-disable-on-zero-intensity.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1149-Re-PATCH-6-7-fix-suppress-cpu-suspend-save-restor.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1150-Explain-why-we-want-SECOND-to-kick.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1151--pcf50633-Print-less-debugging-messages.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1152--pcf50633-Add-exported-symbol-to-the-header-file.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1153--pcf50633-Assume-that-all-gta02-s-have-a-battery-wi.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1154--pcf50633-Disable-debugging-statements-as-the-drive.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1155--power-Use-the-bq27000-battery-to-provide-charging.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1156-Disable-low-level-debugging-make-the-s3c24xx-PM-deb.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1157-clean-remove-build-noise.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1158-minor-problem-with-LCD.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1159-Fixup-hang-on-resume-caused-by-the-s3c2410-touch-scr.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1160-fix-motion-sensor-corruption.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1161-add-resume-reason-sysfs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1162-fix-reduce-wake-reasons-in-pcf50633.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1163-Fix-possible-null-pointer-dereference-in-s3c24xx_i2c.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1164-Make-ar6k-not-print-soooo-much-to-my-console.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1165-Remove-GTA01-PM-debug.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1166-Subject-PATCH-a6k-Everyone-calls-SET_NET_DEV-an.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1167-add-gta01-resume-sysfs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1168-introduce-samsung-camera-unit-driver.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1169-uplevel-samsung-camera-unit.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1170-introduce-charging-led-behaviour.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1171-introduce-resume-dependency.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1172-introduce-pcf50633-resume-dependency-list.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1173-add-use-pcf50633-resume-callback-jbt6k74.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1174-fix-remove-unused-model-name-bq27000.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1175-Subject-PATCH-Build-fixes.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1176-Subject-PATCH-Hardware-glamo-fb-cursor-some-clea.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1177-The-following-is-a-minor-cleanup-of-backlight-resume.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1178-debug-codec-register-setting-sysfs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1179-fix-pcf50633-suspend-resume-onehit-i2c-other-meddlin.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1180-fix-glamo-mci-relationship-with-pcf50633-suspend-res.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1181-fix-jbt6k74-force-reset-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1182-ASoC-Don-t-block-system-resume.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1183-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1184-fix-glamo-mci-resume-dependency-on-pcf50633.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1185-fix-pcf50633-interrupt-work-enforce-wait-on-resume-c.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1187-fix-pcf50633-use-i2c-bulk-autoincrement.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1188-fix-pcf50633-usb-curlim-workqueue-migration.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1189-change-lcm-keep-power-faster-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1190-fix-gta02-mach-remove-gta01-lcd-reset.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1191-add-remote-install-sdcard-script.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1192-fix-pcf50633-require-resume-level-3-for-irq-work.pat.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1193-fix-pcf50633-add-back-gratuitous-isr-work-call-in-re.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1194-cosmetic-checkpatch-complaints.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1195-fix-pcf50633-kill-white-splash-of-death-on-suspend.p.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1196-fix-allow-core-1v3-to-go-down.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1197-debug-i2c-s3c2410-dump-stack-on-suspended-tranfer.pa.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1198-fix-pcf50633-suspend-state-as-enum.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1199-fix-pcf50633-disable-irq-from-suspend-until-resume.p.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1200-debug-backtrace-not-choke-on-null-dev_blah.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1201-fix-pcf50633-really-defer-backlight-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1202-fix-pcf50633-platform-backlight-resume-ramp-setting.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1203-fix-pcf50633-migrate-gta02-peripherals-out.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1204-fix-pcf50633-use-pcf-not-data-in-probe-for-context.p.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1205-workaround-s3c24xx-i2s-stop-live-stream-stall-on-res.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1206-Subject-PATCH-a6k-Everyone-calls-SET_NET_DEV-an.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1207-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1208-introduce-panic-blink-led-not-using-userspace-omfg.p.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1209-touchscreen-meddling.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1210-fix-touchscreen-meddling-divde.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1211-fix-lis302dl-resume-and-init-reload-boot-coefficient.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1212-fix-gsm-resume-problems.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1213-clean-gsm-flow-control.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1214-introduce-resume-exception-capture.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1215-From-119f4e02ba81cffe4dbc88d8ff667048ad28d925-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1216-From-ae3f72fc608fcd0a98a980a335ac4dc7ad95b221-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1217-From-683ef8067815f6ba0ede73fa71973823726213a3-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1218-From-000450f1ad2c713d2345a872fdf44f5dd3702e1b-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1219-From-5718bde77ed1a75e0fd2cdf5e099e66121d10c0a-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1220-From-c221bb27c8e22daa451e26353140777223d397d2-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1221-change-remove-kernel-charging-led-drive.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1222-add-ar6k-wake-interrupt.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1223-Remove-some-bits-of-nspy-GSM-flow-control-patches.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1224-commit-5f42e24d361cd83178fe8da9d68efbf41a011483.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1225-From-cede5c6c9b06ecbb0f7f2df7b7070092b87ddaf8-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1226-From-3a32be40f78404d5f1185f0b3d6b5632381cb33f-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1227-fix-pcf50633-mask-second-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1228-fix-aux-key-level-by-gtaxx.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1229-add-pcf50633-allow-force-charger-type.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1230-fix-no-uart-leak-when-gps-off.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1231-fix-glamo-suspend-resume-dram-and-engines.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1232-change-backlight-level-not-forced-up-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1233-introduce-BANKCON-meddling-sysfs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1234-sdio-use-interruptible-sleep-in-kthread-main-loops.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1235-fix-force-sdcard-clk-off-when-idle.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1236-add-limit-sdcard-clk-cmdline.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1237-defconfig-enable-ext2-ext3-gtaxx.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1238-fix-scard-stop-on-resume.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1239-debug-move-dev-info-to-dbg.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1240-debug-add-glamo-drive-strength-module-param.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1241-fix-pcf50633-move-charger-enable-decision-to-pcf5063.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1242-fix-bq27000-charger-state-tracking.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1243-fix-glamo-mci-set-default-drive-level-0.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1244-fix-pcf50633-remove-charger-curlim-and-enable-apis-f.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1245-fix-pcf50633-only-do-platform-callback-once-per-even.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1246-fix-glamo-mci-possible-timeout-overflow.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1248-fix-allow-full-sd-voltage-range-selection.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1249-fix-glamo-mci-dont-filter-voltage-change.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1250-add-glamo-mci-slower-clocking-dynamic-switching.patc.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1251-use-gta02-glamo-mci-sd-dynamic-clock.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1252-fix-add-missing-include.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1253-config-usb-over-ethernet-module.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1254-fix-pcf50633-usbrem-charging-led.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1255-add-build-git-head-info.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1256-add-buildkeep-hash-named-copy.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1257-fix-build-hash-name-no-colon-separator.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1258-add-build-makerecovery.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1259-From-fa269b44512a03523b164c3cebc20312748c524b-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1260-config-remove-evbug-module.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1261-config-add-udf-support.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1262-gta0x-add-minimal-GSM-flowcontrol.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1263-commit-830ea3d0c27c0c750b7bf1b56c002ee7943f3edc.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1264-silence-serial-console-gta01.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1265-gta01-pcf50606-disable-irq-from-suspend-until-resume.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1266-fix-suspend-backlight-timing-gta01.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1267-gta01-uart-fifo-trigger-sooner.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1268-checkpatch-fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1269-add-includes-from-checkpatch-fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1270-fix-no-discharging.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1271-always-call-resume-dependencies.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1272-clean-remove-suspend-dependencies-syslog.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1273-clean-checkpatch-gsm-resume-dep.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1274-mach-gta02-spell-fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1275-lis302dl-allow-unloading-module.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1276-lis302dl-add-wakeup-defs.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1277-From-98d97ee93af676f7d6d0bf55aaae17e11304598a-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1278-From-ca800f8b234299c56530e56018c031957c5c7ffb-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1279-From-5ee1ee9e1c8a652b0f9cde72ad5e547db87d4d67-Mon-Se.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1280-interface-for-configuring-freefall-wakeup-interrupts.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1281-checkpatch-accel-fixes.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1282-From-Andrzej-Zaborowski-balrogg-gmail.com.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1283-gta02-accel-isr-fix-more.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1284-fix-one-mmc-race.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1285-fix-glamo-idleclock-around-suspend.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1286-fix-glamo-crank-memory-to-90MHz.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1287-soft_tap.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1288-newline_after_disconnect_msg.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1289-ar6k-essid-one-and-32.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1290-Subject-PATCH-rework-to-make-USBINS-USBREM-exclus.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1291-gta03-pca9632.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1292-fix-glamo-mci-slow-clock-until-first-bulk.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1293-fix-build-with-no-CONFIG_MMC.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1294-revert-fix-build-with-no-config_mmc-glamo-resume-cal.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1295-This-patch-adds-a-framebuffer-notifier-in-order-to-d.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1296-config-remove-gta01-wm8752-from-gta02-defconfig.patc.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1297-glamo_fb-Cosmetic-cleanup.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1298-glamo_fb-sync-comment-with-code.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1299-glamo_fb-Implement-screen-blanking.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1300-fix-gcc-4.3-false-modulo-optimization.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1301-clean-move-defconfigs-stable.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1302-fix-defconfig-path.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1303-fix-lid302dl-bitbang-all-the-way-baby.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1304--Acceleration-threshold-configuration-lis302dl-con.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1305-suppress-onkey-events-on-resume-Was-Re-Where-ar.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1306--lis302dl-refactor-and-cleanup.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1308--lis302dl-configure-duration.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1310--lis302dl-wakeup-configuration.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1311-config-enable-oprofile-gta01-gta02.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1312-GTA02-Improve-NAND-timings.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1313-S3C24xx-NAND-allow-for-faster-timings.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1314-palliate_touch_screen_jitter.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1315-config-allow-gta02-usb-hiddev.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1316-jffs2-choke-gc-thread.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1317-fix-gta02-defconfig-uplevel.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1318-config-enable-storing-config-in-kernel.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1319-config-enable-ikconfig-proc.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1320--ARM-S3C24xx-Add-preliminary-E-TEN-glofiish-M800-s.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1321-fix-s3c2410-usb-controller-mode-change-always-EINVAL.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1322-fix-gta01-s3c-mci-stop-clock-when-idle.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1323-GTA01-use-slow-SD-clock-when-gps-on.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1324-gta01-battery-driver.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1325-fix-missing-new-files-glofiish.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1326-change-gta01-battery-driver-name.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.24/1328-.patch [new file with mode: 0644]
target/linux/s3c24xx/patches-2.6.26/0000-reverse-openwrt-patches-921-922-923.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0001-explicitly-link-notes-section.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0002-gta01-no_nand_partitions.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0003-fix-i2c-s3c2410-resume-race.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0004-resume-timers-wq.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0005-s3c2410-bbt.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0006-gta01-pcf50606.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0007-gta01-core.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0008-gta01-jbt6k74.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0009-gta01-inputdevice.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0010-gta01-power_control.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0011-s3c2410-pwm.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0012-gta01-vibrator.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0013-gta01-backlight.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0014-s3c2410_touchscreen.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0015-s3c2410_ts-gta01.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0016-i2c-permit_invalid_addrs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0017-g_ether-highpower.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0018-g_ether-vendor_product.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0019-s3c_mci.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0020-s3c_mci-gta01.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0021-s3c24xx-nand-largepage.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0022-s3c2410_udc-2440_dual_packet-workaround.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0023-s3c2442b-cpuid.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0024-pcf50633.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0025-pcf50633-suspend-hacks.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0026-smedia-glamo.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0027-glamo-mmc.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0028-gta02-core.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0029-gta02-power_control.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0030-gta02-sound.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0031-lis302dl.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0032-gta02-leds.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0033-gta02-acc.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0034-pcf506xx.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0035-gta02-bt-fixes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0036-openmoko-logo.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0037-config-nr-tty-devices.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0038-pm-debug_less_verbose.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0039-s3c2410_serial-nodebug.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0040-input-nots-mousedev.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0041-s3c2440-nand-disable-hwecc.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0042-qt2410-cs8900.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0043-s3c2410-qt2410-buttons.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0044-fail-unless-uimage.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0045-introduce-fiq-basis.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0046-introduce-fiq-use-timer3-as-source.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0047-introduce-fiq-migrate-vibrator-gta02-only.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0048-fiq-hdq.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0049-bq27000-battery-driver.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0050-fix-EVIOCGRAB-semantics.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0051-s3c2410-usb-switch.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0052-pnp_fixes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0053-atheros_2_0_function.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0054-atheros_2_0_hcd.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0055-atheros_2_0_sdio_stack.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0056-fix-hwecc-2410.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0058-fix-pcf50633-LOWBAT-kill-init.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0059-gta01-dehang-printk.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0060-suspend-prelim1.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0061-gta02-sound-bandaid.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0062-glamo-cmdqueue-bandaid.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0063-fix-wm8753-DBG.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0064-local-add-defconfig.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0065-local-build-scripts.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0066-local-build-new-dfu-vid.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0067-local-update-defconfig-for-2.6-dev.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0068-local-config-add-vfat-nls-to-kern.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0069-local-config-add-bluetooth-monolithic.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0070-local-config-wlan-config-changes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0071-local-config-defconfig-motion-sensor-gpio.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0072-local-config-pmu.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0073-local-config-ext2.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0074-contrib-fix-chgstate-array-bloat.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0075-bugfix-deglitch-gpio-output-enable.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0076-clean-snip-gpio-reinit.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0077-introduce-fiq-hdq.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0078-introduce-bq27000-battery-driver.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0079-debug-suspend-dump-gpio-states-add-GPA.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0080-fix-s3c2410_timer_setup-resume-BUG.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0081-config-add-alsa.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0082-fix-glamo-mci-defeat-ops-during-suspend.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0083-fix-lcm-reinit-post-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0084-fix-glamo-mci-fake-reset-opcode-in-suspend.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0085-use-gpio-control-leds.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0086-fix-gpio-led-patch-still-pwm-t3.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0087-introduce-usb-host-power-control.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0088-fix-charging-deassert-host-power-1a-detect.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0089-add-pcf50633-06-RTC_AIE-ioctl.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0090-fix-lis302dl-suspend-gpio.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0091-fix-suspend-gps-tx-level.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0092-Do-not-send-low-level-debugging-to-the-modem.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0093-add-gta02-pcb-revision-detect.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0094-debug-glamo-dump-regs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0095-add-pcb-rev-sysfs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0096-Simplify-the-code-there-is-no-need-for-a-branch.-Th.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0097-Remove-dead-code.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0098-Fix-the-FIXME-store-the-GPIO-value-for-now.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0099-Convert-the-driver-to-the-generic-GPIO-framework.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0100-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0101-This-is-gta02-and-not-gta01.-Do-not-call-the-vibrato.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0102-Fix-spelling.-flaoting-floating.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0103-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0104-Enable-GPS-only-if-it-was-powered-on-before-suspendi.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0105-fix-wlan-disable.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0106-defconfig-audio.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0107-fix-gsm-download-irq-balance-issue.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0108-fix-glamofb-cmdqueue-timeout.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0109-fix-glamofb-cmd-mode-locking.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0110-debug-glamo-add-lcd-regs-to-dump.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0111-fix-jack-debounce.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0112-OpenMoko-Openmoko.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0113-Remove-not-needed-ifdef-as-machine_is_-is-always-de.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0114--leds-We-would-enable-PWM-for-all-four-timers-disa.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0115--led-Misc-fixes-in-the-driver-code.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0116--neo-bluetooth-GTA01_GPIO_MODEM_RST-GTA02_GPIO_M.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0117--neo-Every-access-to-GPIO-bank-B-has-to-go-through.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0118-fix-jack-interrupt-debounce-loss-window.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0119-fix-gta01-spi-resume-patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0120-fix-gta01-pmu-irq-edge-lost-on-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0121-add-defconfig-2.6.25.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0122-tracking-2.6.25-input_dev-cdev-union-removed.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0123-tracking-2.6.25-struct-bus-type-loses-devices-member.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0124-tracking-2.6.25-upstream-s3c2410_gpio_irq2pin.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0125-tracking-2.6.25-deprecated-includefile-wm8753.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0126-tracking-2.6.25-changed-s3c2410_dma_request-reurn.pa.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0127-gta01-gps-power-state-resume-preserve.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0128-gta01-fix-jbt-platform-missing-members.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0129-gta01-fix-resume-redo-par.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0130-From-cc08b5986dfd8d971ee46ce7045fb7863f99a92a-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0131-clean-sdio-hcd-suspend.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0132-config-update-2.6.21-rc1.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0133-tracking-2.6.26-rc1-remove-input-dev-private-member.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0134-tracking-2.6.26-rc1-remove-dupe-s3c2410_nand_update_.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0135-tracking-2.6.26-rc1-sdio-pnp-changes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0136-fix-KEY_PHONE-up-down-inversion.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0137-s3c24xx-pwm-platform-driver.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0138-fix-suspend-backlight-timing-pm-debug.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0139-fix-wep-needs-keys-before-ap.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0140-Fixup-hang-on-resume-caused-by-the-s3c2410-touch-scr.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0141-fix-motion-sensor-corruption.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0142-add-resume-reason-sysfs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0143-fix-reduce-wake-reasons-in-pcf50633.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0144-add-gta01-resume-sysfs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0145-introduce-samsung-camera-unit-driver.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0146-uplevel-samsung-camera-unit.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0147-fix-remove-unused-model-name-bq27000.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0148-Fix-possible-null-pointer-dereference-in-s3c24xx_i2c.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0149-Make-ar6k-not-print-soooo-much-to-my-console.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0150-Subject-PATCH-Build-fixes.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0151-Subject-PATCH-Hardware-glamo-fb-cursor-some-clea.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0152-Subject-config-defconfig-2.6.26.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0153-introduce-charging-led-behaviour.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0154-introduce-resume-dependency.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0155-introduce-pcf50633-resume-dependency-list.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0156-add-use-pcf50633-resume-callback-jbt6k74.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0157-The-following-is-a-minor-cleanup-of-backlight-resume.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0158-debug-codec-register-setting-sysfs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0159-fix-pcf50633-suspend-resume-onehit-i2c-other-meddlin.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0160-fix-glamo-mci-relationship-with-pcf50633-suspend-res.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0161-fix-jbt6k74-force-reset-suspend.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0163-fix-glamo-mci-resume-dependency-on-pcf50633.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0164-fix-pcf50633-interrupt-work-enforce-wait-on-resume-c.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0165-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0166-fix-pcf50633-use-i2c-bulk-autoincrement.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0167-fix-pcf50633-usb-curlim-workqueue-migration.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0168-change-lcm-keep-power-faster-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0169-fix-gta02-mach-remove-gta01-lcd-reset.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0170-add-remote-install-sdcard-script.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0171-fix-pcf50633-require-resume-level-3-for-irq-work.pat.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0172-fix-pcf50633-add-back-gratuitous-isr-work-call-in-re.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0173-fix-pcf50633-kill-white-splash-of-death-on-suspend.p.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0174-fix-allow-core-1v3-to-go-down.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0175-debug-i2c-s3c2410-dump-stack-on-suspended-tranfer.pa.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0176-fix-pcf50633-suspend-state-as-enum.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0177-fix-pcf50633-disable-irq-from-suspend-until-resume.p.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0178-debug-backtrace-not-choke-on-null-dev_blah.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0180-fix-glamo-suspend-resume-dram-and-engines.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0181-fix-pcf50633-platform-backlight-resume-ramp-setting.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0182-fix-pcf50633-migrate-gta02-peripherals-out.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0183-fix-pcf50633-use-pcf-not-data-in-probe-for-context.p.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0184-workaround-s3c24xx-i2s-stop-live-stream-stall-on-res.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0185-Subject-PATCH-a6k-Everyone-calls-SET_NET_DEV-an.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0187-introduce-panic-blink-led-not-using-userspace-omfg.p.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0188-touchscreen-meddling.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0189-fix-touchscreen-meddling-divde.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0190-fix-lis302dl-resume-and-init-reload-boot-coefficient.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0191-fix-gsm-resume-problems.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0192-introduce-resume-exception-capture.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0193-tracking-defconfig-2.6.26-rc7.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0194-tracking-2.6.26-rc7-repeat-cdev-removal-pcf50633.pat.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0195-From-119f4e02ba81cffe4dbc88d8ff667048ad28d925-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0196-From-ae3f72fc608fcd0a98a980a335ac4dc7ad95b221-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0197-From-683ef8067815f6ba0ede73fa71973823726213a3-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0198-From-000450f1ad2c713d2345a872fdf44f5dd3702e1b-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0199-From-5718bde77ed1a75e0fd2cdf5e099e66121d10c0a-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0200-From-c221bb27c8e22daa451e26353140777223d397d2-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0201-change-remove-kernel-charging-led-drive.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0202-add-ar6k-wake-interrupt.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0203-Remove-some-bits-of-nspy-GSM-flow-control-patches.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0204-commit-5f42e24d361cd83178fe8da9d68efbf41a011483.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0205-From-cede5c6c9b06ecbb0f7f2df7b7070092b87ddaf8-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0206-From-3a32be40f78404d5f1185f0b3d6b5632381cb33f-Mon-Se.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0207-fix-pcf50633-mask-second-on-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0208-fix-aux-key-level-by-gtaxx.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0209-add-pcf50633-allow-force-charger-type.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0210-fix-no-uart-leak-when-gps-off.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0211-change-backlight-level-not-forced-up-on-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0212-introduce-BANKCON-meddling-sysfs.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0213-sdio-use-interruptible-sleep-in-kthread-main-loops.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0214-fix-force-sdcard-clk-off-when-idle.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0215-add-limit-sdcard-clk-cmdline.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0216-fix-scard-stop-on-resume.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0217-debug-move-dev-info-to-dbg.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0218-debug-add-glamo-drive-strength-module-param.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0219-fix-bq27000-charger-state-tracking.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0220-fix-glamo-mci-set-default-drive-level-0.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0221-fix-pcf50633-remove-charger-curlim-and-enable-apis-f.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0222-fix-pcf50633-only-do-platform-callback-once-per-even.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0223-fix-glamo-mci-possible-timeout-overflow.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0224-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0225-fix-pcf50633-bd-undef.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0226-fix-wm8753-DBG.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0227-fix-s3c2410-serial-fwd-ref.patch.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0228-fix-allow-full-sd-voltage-range-selection.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0229-fix-glamo-mci-dont-filter-voltage-change.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0230-add-glamo-mci-slower-clocking-dynamic-switching.patc.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0231-use-gta02-glamo-mci-sd-dynamic-clock.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0233-device-model-Allow-the-creation-of-symlinks-on-sys.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0234-pcf50606-fix-gllin-compat-link.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0235-fix-add-missing-include.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0236-config-kill-mtd-debug.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0237-fix-glamo-turbo-host-interface.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0238-fix-glamo-crank-memory-to-90MHz.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0239-fix-hdq-probe.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0240-gta0x-add-minimal-GSM-flowcontrol.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0241-commit-830ea3d0c27c0c750b7bf1b56c002ee7943f3edc.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0242-silence-serial-console-gta01.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0243-gta01-pcf50606-disable-irq-from-suspend-until-resume.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0244-fix-suspend-backlight-timing-gta01.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0245-gta01-uart-fifo-trigger-sooner.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0246-checkpatch-fixes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0247-add-includes-from-checkpatch-fixes.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0248-fix-pcf50633-usbrem-charging-led.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0249-fix-no-discharging.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0250-One-of-the-error-paths-on-s3cmci_probe-was-doing-t.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0251-My-GTA01-2.6.26-kernel-was-crashing-within-mmc_power.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0252-The-driver-should-be-checking-for-a-negative-error-c.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0253-mmc_detect_change-takes-jiffies-not-msecs.-Conver.patch [new file with mode: 0755]
target/linux/s3c24xx/patches-2.6.26/0254-config-2.6.26-add-s3c-mmc.patch.patch [new file with mode: 0755]
target/linux/s3c24xx/patches/0000-reverse-openwrt-patches-921-922-923.patch [deleted file]
target/linux/s3c24xx/patches/0001-explicitly-link-notes-section.patch.patch [deleted file]
target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch [deleted file]
target/linux/s3c24xx/patches/0003-fix-i2c-s3c2410-resume-race.patch.patch [deleted file]
target/linux/s3c24xx/patches/0004-resume-timers-wq.patch.patch [deleted file]
target/linux/s3c24xx/patches/0005-s3c2410-bbt.patch.patch [deleted file]
target/linux/s3c24xx/patches/0006-gta01-pcf50606.patch.patch [deleted file]
target/linux/s3c24xx/patches/0007-gta01-core.patch.patch [deleted file]
target/linux/s3c24xx/patches/0008-gta01-jbt6k74.patch.patch [deleted file]
target/linux/s3c24xx/patches/0009-gta01-inputdevice.patch.patch [deleted file]
target/linux/s3c24xx/patches/0010-gta01-power_control.patch.patch [deleted file]
target/linux/s3c24xx/patches/0011-s3c2410-pwm.patch.patch [deleted file]
target/linux/s3c24xx/patches/0012-gta01-vibrator.patch.patch [deleted file]
target/linux/s3c24xx/patches/0013-gta01-backlight.patch.patch [deleted file]
target/linux/s3c24xx/patches/0014-s3c2410_touchscreen.patch.patch [deleted file]
target/linux/s3c24xx/patches/0015-s3c2410_ts-gta01.patch.patch [deleted file]
target/linux/s3c24xx/patches/0016-i2c-permit_invalid_addrs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0017-g_ether-highpower.patch.patch [deleted file]
target/linux/s3c24xx/patches/0018-g_ether-vendor_product.patch.patch [deleted file]
target/linux/s3c24xx/patches/0019-s3c_mci.patch.patch [deleted file]
target/linux/s3c24xx/patches/0020-s3c_mci-gta01.patch.patch [deleted file]
target/linux/s3c24xx/patches/0021-s3c24xx-nand-largepage.patch.patch [deleted file]
target/linux/s3c24xx/patches/0022-s3c2410_udc-2440_dual_packet-workaround.patch.patch [deleted file]
target/linux/s3c24xx/patches/0023-s3c2442b-cpuid.patch.patch [deleted file]
target/linux/s3c24xx/patches/0024-pcf50633.patch.patch [deleted file]
target/linux/s3c24xx/patches/0025-pcf50633-suspend-hacks.patch.patch [deleted file]
target/linux/s3c24xx/patches/0026-smedia-glamo.patch.patch [deleted file]
target/linux/s3c24xx/patches/0027-glamo-mmc.patch.patch [deleted file]
target/linux/s3c24xx/patches/0028-gta02-core.patch.patch [deleted file]
target/linux/s3c24xx/patches/0029-gta02-power_control.patch.patch [deleted file]
target/linux/s3c24xx/patches/0030-gta02-sound.patch.patch [deleted file]
target/linux/s3c24xx/patches/0031-lis302dl.patch.patch [deleted file]
target/linux/s3c24xx/patches/0032-gta02-leds.patch.patch [deleted file]
target/linux/s3c24xx/patches/0033-gta02-acc.patch.patch [deleted file]
target/linux/s3c24xx/patches/0034-pcf506xx.patch.patch [deleted file]
target/linux/s3c24xx/patches/0035-gta02-bt-fixes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0036-openmoko-logo.patch.patch [deleted file]
target/linux/s3c24xx/patches/0037-config-nr-tty-devices.patch.patch [deleted file]
target/linux/s3c24xx/patches/0038-pm-debug_less_verbose.patch.patch [deleted file]
target/linux/s3c24xx/patches/0039-s3c2410_serial-nodebug.patch.patch [deleted file]
target/linux/s3c24xx/patches/0040-input-nots-mousedev.patch.patch [deleted file]
target/linux/s3c24xx/patches/0041-s3c2440-nand-disable-hwecc.patch.patch [deleted file]
target/linux/s3c24xx/patches/0042-qt2410-cs8900.patch.patch [deleted file]
target/linux/s3c24xx/patches/0043-s3c2410-qt2410-buttons.patch.patch [deleted file]
target/linux/s3c24xx/patches/0044-fail-unless-uimage.patch.patch [deleted file]
target/linux/s3c24xx/patches/0045-introduce-fiq-basis.patch.patch [deleted file]
target/linux/s3c24xx/patches/0046-introduce-fiq-use-timer3-as-source.patch.patch [deleted file]
target/linux/s3c24xx/patches/0047-introduce-fiq-migrate-vibrator-gta02-only.patch.patch [deleted file]
target/linux/s3c24xx/patches/0048-fiq-hdq.patch.patch [deleted file]
target/linux/s3c24xx/patches/0049-bq27000-battery-driver.patch.patch [deleted file]
target/linux/s3c24xx/patches/0050-fix-EVIOCGRAB-semantics.patch.patch [deleted file]
target/linux/s3c24xx/patches/0051-s3c2410-usb-switch.patch.patch [deleted file]
target/linux/s3c24xx/patches/0052-pnp_fixes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0053-atheros_2_0_function.patch.patch [deleted file]
target/linux/s3c24xx/patches/0054-atheros_2_0_hcd.patch.patch [deleted file]
target/linux/s3c24xx/patches/0055-atheros_2_0_sdio_stack.patch.patch [deleted file]
target/linux/s3c24xx/patches/0056-fix-hwecc-2410.patch.patch [deleted file]
target/linux/s3c24xx/patches/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch [deleted file]
target/linux/s3c24xx/patches/0058-fix-pcf50633-LOWBAT-kill-init.patch.patch [deleted file]
target/linux/s3c24xx/patches/0059-gta01-dehang-printk.patch.patch [deleted file]
target/linux/s3c24xx/patches/0060-suspend-prelim1.patch.patch [deleted file]
target/linux/s3c24xx/patches/0061-gta02-sound-bandaid.patch.patch [deleted file]
target/linux/s3c24xx/patches/0062-glamo-cmdqueue-bandaid.patch.patch [deleted file]
target/linux/s3c24xx/patches/0063-fix-wm8753-DBG.patch.patch [deleted file]
target/linux/s3c24xx/patches/0064-local-add-defconfig.patch.patch [deleted file]
target/linux/s3c24xx/patches/0065-local-build-scripts.patch.patch [deleted file]
target/linux/s3c24xx/patches/0066-local-build-new-dfu-vid.patch.patch [deleted file]
target/linux/s3c24xx/patches/0067-local-update-defconfig-for-2.6-dev.patch.patch [deleted file]
target/linux/s3c24xx/patches/0068-local-config-add-vfat-nls-to-kern.patch.patch [deleted file]
target/linux/s3c24xx/patches/0069-local-config-add-bluetooth-monolithic.patch.patch [deleted file]
target/linux/s3c24xx/patches/0070-local-config-wlan-config-changes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0071-local-config-defconfig-motion-sensor-gpio.patch.patch [deleted file]
target/linux/s3c24xx/patches/0072-local-config-pmu.patch.patch [deleted file]
target/linux/s3c24xx/patches/0073-local-config-ext2.patch.patch [deleted file]
target/linux/s3c24xx/patches/0074-contrib-fix-chgstate-array-bloat.patch.patch [deleted file]
target/linux/s3c24xx/patches/0075-bugfix-deglitch-gpio-output-enable.patch.patch [deleted file]
target/linux/s3c24xx/patches/0076-clean-snip-gpio-reinit.patch.patch [deleted file]
target/linux/s3c24xx/patches/0077-introduce-fiq-hdq.patch.patch [deleted file]
target/linux/s3c24xx/patches/0078-introduce-bq27000-battery-driver.patch.patch [deleted file]
target/linux/s3c24xx/patches/0079-debug-suspend-dump-gpio-states-add-GPA.patch.patch [deleted file]
target/linux/s3c24xx/patches/0080-fix-s3c2410_timer_setup-resume-BUG.patch.patch [deleted file]
target/linux/s3c24xx/patches/0081-config-add-alsa.patch.patch [deleted file]
target/linux/s3c24xx/patches/0082-fix-glamo-mci-defeat-ops-during-suspend.patch.patch [deleted file]
target/linux/s3c24xx/patches/0083-fix-lcm-reinit-post-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0084-fix-glamo-mci-fake-reset-opcode-in-suspend.patch.patch [deleted file]
target/linux/s3c24xx/patches/0085-use-gpio-control-leds.patch [deleted file]
target/linux/s3c24xx/patches/0086-fix-gpio-led-patch-still-pwm-t3.patch.patch [deleted file]
target/linux/s3c24xx/patches/0087-introduce-usb-host-power-control.patch.patch [deleted file]
target/linux/s3c24xx/patches/0088-fix-charging-deassert-host-power-1a-detect.patch.patch [deleted file]
target/linux/s3c24xx/patches/0089-add-pcf50633-06-RTC_AIE-ioctl.patch [deleted file]
target/linux/s3c24xx/patches/0090-fix-lis302dl-suspend-gpio.patch.patch [deleted file]
target/linux/s3c24xx/patches/0091-fix-suspend-gps-tx-level.patch.patch [deleted file]
target/linux/s3c24xx/patches/0092-Do-not-send-low-level-debugging-to-the-modem.patch [deleted file]
target/linux/s3c24xx/patches/0093-add-gta02-pcb-revision-detect.patch.patch [deleted file]
target/linux/s3c24xx/patches/0094-debug-glamo-dump-regs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0095-add-pcb-rev-sysfs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0096-Simplify-the-code-there-is-no-need-for-a-branch.-Th.patch [deleted file]
target/linux/s3c24xx/patches/0097-Remove-dead-code.patch [deleted file]
target/linux/s3c24xx/patches/0098-Fix-the-FIXME-store-the-GPIO-value-for-now.patch [deleted file]
target/linux/s3c24xx/patches/0099-Convert-the-driver-to-the-generic-GPIO-framework.patch [deleted file]
target/linux/s3c24xx/patches/0100-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch [deleted file]
target/linux/s3c24xx/patches/0101-This-is-gta02-and-not-gta01.-Do-not-call-the-vibrato.patch [deleted file]
target/linux/s3c24xx/patches/0102-Fix-spelling.-flaoting-floating.patch [deleted file]
target/linux/s3c24xx/patches/0103-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch [deleted file]
target/linux/s3c24xx/patches/0104-Enable-GPS-only-if-it-was-powered-on-before-suspendi.patch [deleted file]
target/linux/s3c24xx/patches/0105-fix-wlan-disable.patch.patch [deleted file]
target/linux/s3c24xx/patches/0106-defconfig-audio.patch.patch [deleted file]
target/linux/s3c24xx/patches/0107-fix-gsm-download-irq-balance-issue.patch.patch [deleted file]
target/linux/s3c24xx/patches/0108-fix-glamofb-cmdqueue-timeout.patch.patch [deleted file]
target/linux/s3c24xx/patches/0109-fix-glamofb-cmd-mode-locking.patch.patch [deleted file]
target/linux/s3c24xx/patches/0110-debug-glamo-add-lcd-regs-to-dump.patch.patch [deleted file]
target/linux/s3c24xx/patches/0111-fix-jack-debounce.patch.patch [deleted file]
target/linux/s3c24xx/patches/0112-OpenMoko-Openmoko.patch [deleted file]
target/linux/s3c24xx/patches/0113-Remove-not-needed-ifdef-as-machine_is_-is-always-de.patch [deleted file]
target/linux/s3c24xx/patches/0114--leds-We-would-enable-PWM-for-all-four-timers-disa.patch [deleted file]
target/linux/s3c24xx/patches/0115--led-Misc-fixes-in-the-driver-code.patch [deleted file]
target/linux/s3c24xx/patches/0116--neo-bluetooth-GTA01_GPIO_MODEM_RST-GTA02_GPIO_M.patch [deleted file]
target/linux/s3c24xx/patches/0117--neo-Every-access-to-GPIO-bank-B-has-to-go-through.patch [deleted file]
target/linux/s3c24xx/patches/0118-fix-jack-interrupt-debounce-loss-window.patch.patch [deleted file]
target/linux/s3c24xx/patches/0119-fix-gta01-spi-resume-patch.patch [deleted file]
target/linux/s3c24xx/patches/0120-fix-gta01-pmu-irq-edge-lost-on-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0121-add-defconfig-2.6.25.patch [deleted file]
target/linux/s3c24xx/patches/0122-tracking-2.6.25-input_dev-cdev-union-removed.patch.patch [deleted file]
target/linux/s3c24xx/patches/0123-tracking-2.6.25-struct-bus-type-loses-devices-member.patch [deleted file]
target/linux/s3c24xx/patches/0124-tracking-2.6.25-upstream-s3c2410_gpio_irq2pin.patch.patch [deleted file]
target/linux/s3c24xx/patches/0125-tracking-2.6.25-deprecated-includefile-wm8753.patch.patch [deleted file]
target/linux/s3c24xx/patches/0126-tracking-2.6.25-changed-s3c2410_dma_request-reurn.pa.patch [deleted file]
target/linux/s3c24xx/patches/0127-gta01-gps-power-state-resume-preserve.patch.patch [deleted file]
target/linux/s3c24xx/patches/0128-gta01-fix-jbt-platform-missing-members.patch.patch [deleted file]
target/linux/s3c24xx/patches/0129-gta01-fix-resume-redo-par.patch.patch [deleted file]
target/linux/s3c24xx/patches/0130-From-cc08b5986dfd8d971ee46ce7045fb7863f99a92a-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0131-clean-sdio-hcd-suspend.patch.patch [deleted file]
target/linux/s3c24xx/patches/0132-config-update-2.6.21-rc1.patch.patch [deleted file]
target/linux/s3c24xx/patches/0133-tracking-2.6.26-rc1-remove-input-dev-private-member.patch [deleted file]
target/linux/s3c24xx/patches/0134-tracking-2.6.26-rc1-remove-dupe-s3c2410_nand_update_.patch [deleted file]
target/linux/s3c24xx/patches/0135-tracking-2.6.26-rc1-sdio-pnp-changes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0136-fix-KEY_PHONE-up-down-inversion.patch.patch [deleted file]
target/linux/s3c24xx/patches/0137-s3c24xx-pwm-platform-driver.patch.patch [deleted file]
target/linux/s3c24xx/patches/0138-fix-suspend-backlight-timing-pm-debug.patch.patch [deleted file]
target/linux/s3c24xx/patches/0139-fix-wep-needs-keys-before-ap.patch.patch [deleted file]
target/linux/s3c24xx/patches/0140-Fixup-hang-on-resume-caused-by-the-s3c2410-touch-scr.patch [deleted file]
target/linux/s3c24xx/patches/0141-fix-motion-sensor-corruption.patch.patch [deleted file]
target/linux/s3c24xx/patches/0142-add-resume-reason-sysfs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0143-fix-reduce-wake-reasons-in-pcf50633.patch.patch [deleted file]
target/linux/s3c24xx/patches/0144-add-gta01-resume-sysfs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0145-introduce-samsung-camera-unit-driver.patch.patch [deleted file]
target/linux/s3c24xx/patches/0146-uplevel-samsung-camera-unit.patch.patch [deleted file]
target/linux/s3c24xx/patches/0147-fix-remove-unused-model-name-bq27000.patch.patch [deleted file]
target/linux/s3c24xx/patches/0148-Fix-possible-null-pointer-dereference-in-s3c24xx_i2c.patch [deleted file]
target/linux/s3c24xx/patches/0149-Make-ar6k-not-print-soooo-much-to-my-console.patch [deleted file]
target/linux/s3c24xx/patches/0150-Subject-PATCH-Build-fixes.patch [deleted file]
target/linux/s3c24xx/patches/0151-Subject-PATCH-Hardware-glamo-fb-cursor-some-clea.patch [deleted file]
target/linux/s3c24xx/patches/0152-Subject-config-defconfig-2.6.26.patch.patch [deleted file]
target/linux/s3c24xx/patches/0153-introduce-charging-led-behaviour.patch.patch [deleted file]
target/linux/s3c24xx/patches/0154-introduce-resume-dependency.patch.patch [deleted file]
target/linux/s3c24xx/patches/0155-introduce-pcf50633-resume-dependency-list.patch.patch [deleted file]
target/linux/s3c24xx/patches/0156-add-use-pcf50633-resume-callback-jbt6k74.patch.patch [deleted file]
target/linux/s3c24xx/patches/0157-The-following-is-a-minor-cleanup-of-backlight-resume.patch [deleted file]
target/linux/s3c24xx/patches/0158-debug-codec-register-setting-sysfs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0159-fix-pcf50633-suspend-resume-onehit-i2c-other-meddlin.patch [deleted file]
target/linux/s3c24xx/patches/0160-fix-glamo-mci-relationship-with-pcf50633-suspend-res.patch [deleted file]
target/linux/s3c24xx/patches/0161-fix-jbt6k74-force-reset-suspend.patch.patch [deleted file]
target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch [deleted file]
target/linux/s3c24xx/patches/0163-fix-glamo-mci-resume-dependency-on-pcf50633.patch.patch [deleted file]
target/linux/s3c24xx/patches/0164-fix-pcf50633-interrupt-work-enforce-wait-on-resume-c.patch [deleted file]
target/linux/s3c24xx/patches/0165-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch [deleted file]
target/linux/s3c24xx/patches/0166-fix-pcf50633-use-i2c-bulk-autoincrement.patch.patch [deleted file]
target/linux/s3c24xx/patches/0167-fix-pcf50633-usb-curlim-workqueue-migration.patch.patch [deleted file]
target/linux/s3c24xx/patches/0168-change-lcm-keep-power-faster-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0169-fix-gta02-mach-remove-gta01-lcd-reset.patch.patch [deleted file]
target/linux/s3c24xx/patches/0170-add-remote-install-sdcard-script.patch.patch [deleted file]
target/linux/s3c24xx/patches/0171-fix-pcf50633-require-resume-level-3-for-irq-work.pat.patch [deleted file]
target/linux/s3c24xx/patches/0172-fix-pcf50633-add-back-gratuitous-isr-work-call-in-re.patch [deleted file]
target/linux/s3c24xx/patches/0173-fix-pcf50633-kill-white-splash-of-death-on-suspend.p.patch [deleted file]
target/linux/s3c24xx/patches/0174-fix-allow-core-1v3-to-go-down.patch.patch [deleted file]
target/linux/s3c24xx/patches/0175-debug-i2c-s3c2410-dump-stack-on-suspended-tranfer.pa.patch [deleted file]
target/linux/s3c24xx/patches/0176-fix-pcf50633-suspend-state-as-enum.patch.patch [deleted file]
target/linux/s3c24xx/patches/0177-fix-pcf50633-disable-irq-from-suspend-until-resume.p.patch [deleted file]
target/linux/s3c24xx/patches/0178-debug-backtrace-not-choke-on-null-dev_blah.patch.patch [deleted file]
target/linux/s3c24xx/patches/0179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0180-fix-glamo-suspend-resume-dram-and-engines.patch.patch [deleted file]
target/linux/s3c24xx/patches/0181-fix-pcf50633-platform-backlight-resume-ramp-setting.patch [deleted file]
target/linux/s3c24xx/patches/0182-fix-pcf50633-migrate-gta02-peripherals-out.patch.patch [deleted file]
target/linux/s3c24xx/patches/0183-fix-pcf50633-use-pcf-not-data-in-probe-for-context.p.patch [deleted file]
target/linux/s3c24xx/patches/0184-workaround-s3c24xx-i2s-stop-live-stream-stall-on-res.patch [deleted file]
target/linux/s3c24xx/patches/0185-Subject-PATCH-a6k-Everyone-calls-SET_NET_DEV-an.patch [deleted file]
target/linux/s3c24xx/patches/0186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch [deleted file]
target/linux/s3c24xx/patches/0187-introduce-panic-blink-led-not-using-userspace-omfg.p.patch [deleted file]
target/linux/s3c24xx/patches/0188-touchscreen-meddling.patch.patch [deleted file]
target/linux/s3c24xx/patches/0189-fix-touchscreen-meddling-divde.patch.patch [deleted file]
target/linux/s3c24xx/patches/0190-fix-lis302dl-resume-and-init-reload-boot-coefficient.patch [deleted file]
target/linux/s3c24xx/patches/0191-fix-gsm-resume-problems.patch.patch [deleted file]
target/linux/s3c24xx/patches/0192-introduce-resume-exception-capture.patch.patch [deleted file]
target/linux/s3c24xx/patches/0193-tracking-defconfig-2.6.26-rc7.patch.patch [deleted file]
target/linux/s3c24xx/patches/0194-tracking-2.6.26-rc7-repeat-cdev-removal-pcf50633.pat.patch [deleted file]
target/linux/s3c24xx/patches/0195-From-119f4e02ba81cffe4dbc88d8ff667048ad28d925-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0196-From-ae3f72fc608fcd0a98a980a335ac4dc7ad95b221-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0197-From-683ef8067815f6ba0ede73fa71973823726213a3-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0198-From-000450f1ad2c713d2345a872fdf44f5dd3702e1b-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0199-From-5718bde77ed1a75e0fd2cdf5e099e66121d10c0a-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0200-From-c221bb27c8e22daa451e26353140777223d397d2-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0201-change-remove-kernel-charging-led-drive.patch.patch [deleted file]
target/linux/s3c24xx/patches/0202-add-ar6k-wake-interrupt.patch.patch [deleted file]
target/linux/s3c24xx/patches/0203-Remove-some-bits-of-nspy-GSM-flow-control-patches.patch [deleted file]
target/linux/s3c24xx/patches/0204-commit-5f42e24d361cd83178fe8da9d68efbf41a011483.patch [deleted file]
target/linux/s3c24xx/patches/0205-From-cede5c6c9b06ecbb0f7f2df7b7070092b87ddaf8-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0206-From-3a32be40f78404d5f1185f0b3d6b5632381cb33f-Mon-Se.patch [deleted file]
target/linux/s3c24xx/patches/0207-fix-pcf50633-mask-second-on-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0208-fix-aux-key-level-by-gtaxx.patch.patch [deleted file]
target/linux/s3c24xx/patches/0209-add-pcf50633-allow-force-charger-type.patch.patch [deleted file]
target/linux/s3c24xx/patches/0210-fix-no-uart-leak-when-gps-off.patch.patch [deleted file]
target/linux/s3c24xx/patches/0211-change-backlight-level-not-forced-up-on-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0212-introduce-BANKCON-meddling-sysfs.patch.patch [deleted file]
target/linux/s3c24xx/patches/0213-sdio-use-interruptible-sleep-in-kthread-main-loops.patch [deleted file]
target/linux/s3c24xx/patches/0214-fix-force-sdcard-clk-off-when-idle.patch.patch [deleted file]
target/linux/s3c24xx/patches/0215-add-limit-sdcard-clk-cmdline.patch.patch [deleted file]
target/linux/s3c24xx/patches/0216-fix-scard-stop-on-resume.patch.patch [deleted file]
target/linux/s3c24xx/patches/0217-debug-move-dev-info-to-dbg.patch.patch [deleted file]
target/linux/s3c24xx/patches/0218-debug-add-glamo-drive-strength-module-param.patch.patch [deleted file]
target/linux/s3c24xx/patches/0219-fix-bq27000-charger-state-tracking.patch.patch [deleted file]
target/linux/s3c24xx/patches/0220-fix-glamo-mci-set-default-drive-level-0.patch.patch [deleted file]
target/linux/s3c24xx/patches/0221-fix-pcf50633-remove-charger-curlim-and-enable-apis-f.patch [deleted file]
target/linux/s3c24xx/patches/0222-fix-pcf50633-only-do-platform-callback-once-per-even.patch [deleted file]
target/linux/s3c24xx/patches/0223-fix-glamo-mci-possible-timeout-overflow.patch.patch [deleted file]
target/linux/s3c24xx/patches/0224-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch [deleted file]
target/linux/s3c24xx/patches/0225-fix-pcf50633-bd-undef.patch.patch [deleted file]
target/linux/s3c24xx/patches/0226-fix-wm8753-DBG.patch.patch [deleted file]
target/linux/s3c24xx/patches/0227-fix-s3c2410-serial-fwd-ref.patch.patch.patch [deleted file]
target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch [deleted file]
target/linux/s3c24xx/patches/0229-fix-glamo-mci-dont-filter-voltage-change.patch.patch [deleted file]
target/linux/s3c24xx/patches/0230-add-glamo-mci-slower-clocking-dynamic-switching.patc.patch [deleted file]
target/linux/s3c24xx/patches/0231-use-gta02-glamo-mci-sd-dynamic-clock.patch.patch [deleted file]
target/linux/s3c24xx/patches/0232-0003-a6k-sdio-Use-pnp_alloc_dev-to-properly-initiali.patch [deleted file]
target/linux/s3c24xx/patches/0233-device-model-Allow-the-creation-of-symlinks-on-sys.patch [deleted file]
target/linux/s3c24xx/patches/0234-pcf50606-fix-gllin-compat-link.patch [deleted file]
target/linux/s3c24xx/patches/0235-fix-add-missing-include.patch.patch [deleted file]
target/linux/s3c24xx/patches/0236-config-kill-mtd-debug.patch.patch [deleted file]
target/linux/s3c24xx/patches/0237-fix-glamo-turbo-host-interface.patch.patch [deleted file]
target/linux/s3c24xx/patches/0238-fix-glamo-crank-memory-to-90MHz.patch.patch [deleted file]
target/linux/s3c24xx/patches/0239-fix-hdq-probe.patch.patch [deleted file]
target/linux/s3c24xx/patches/0240-gta0x-add-minimal-GSM-flowcontrol.patch.patch [deleted file]
target/linux/s3c24xx/patches/0241-commit-830ea3d0c27c0c750b7bf1b56c002ee7943f3edc.patch [deleted file]
target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch [deleted file]
target/linux/s3c24xx/patches/0243-gta01-pcf50606-disable-irq-from-suspend-until-resume.patch [deleted file]
target/linux/s3c24xx/patches/0244-fix-suspend-backlight-timing-gta01.patch.patch [deleted file]
target/linux/s3c24xx/patches/0245-gta01-uart-fifo-trigger-sooner.patch.patch [deleted file]
target/linux/s3c24xx/patches/0246-checkpatch-fixes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0247-add-includes-from-checkpatch-fixes.patch.patch [deleted file]
target/linux/s3c24xx/patches/0248-fix-pcf50633-usbrem-charging-led.patch.patch [deleted file]
target/linux/s3c24xx/patches/0249-fix-no-discharging.patch.patch [deleted file]
target/linux/s3c24xx/patches/0250-One-of-the-error-paths-on-s3cmci_probe-was-doing-t.patch [deleted file]
target/linux/s3c24xx/patches/0251-My-GTA01-2.6.26-kernel-was-crashing-within-mmc_power.patch [deleted file]
target/linux/s3c24xx/patches/0252-The-driver-should-be-checking-for-a-negative-error-c.patch [deleted file]
target/linux/s3c24xx/patches/0253-mmc_detect_change-takes-jiffies-not-msecs.-Conver.patch [deleted file]
target/linux/s3c24xx/patches/0254-config-2.6.26-add-s3c-mmc.patch.patch [deleted file]
target/linux/s3c24xx/profiles/100-gta02-minimal.mk [new file with mode: 0644]
target/linux/s3c24xx/profiles/100-gta02.mk [deleted file]
target/linux/s3c24xx/profiles/101-gta02-graphical.mk [new file with mode: 0644]

index 66496fc..afcbc78 100755 (executable)
@@ -20,6 +20,5 @@ define Target/Description
 endef
 
 include $(INCLUDE_DIR)/target.mk
-DEFAULT_PACKAGES += xglamo enlightenment
 
 $(eval $(call BuildTarget))
diff --git a/target/linux/s3c24xx/config-2.6.24 b/target/linux/s3c24xx/config-2.6.24
new file mode 100644 (file)
index 0000000..b048c08
--- /dev/null
@@ -0,0 +1,597 @@
+CONFIG_AEABI=y
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_APM_EMULATION=y
+CONFIG_APM_POWER=y
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_S3C2410=y
+CONFIG_ARCH_S3C2440=y
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_ARCH_VERSATILE is not set
+CONFIG_ARM=y
+CONFIG_ARM_THUMB=y
+# CONFIG_ARPD is not set
+# CONFIG_ATM is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BASE_SMALL=0
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BITREVERSE=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_BLK_DEV_UB=m
+# CONFIG_BONDING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_BOUNCE=y
+# CONFIG_BRIDGE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CMDLINE="unused -- bootloader passes ATAG list"
+CONFIG_CONFIGFS_FS=m
+CONFIG_CONNECTOR=m
+CONFIG_CPU_32=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+CONFIG_CPU_LLSERIAL_S3C2410=y
+CONFIG_CPU_LLSERIAL_S3C2440=y
+CONFIG_CPU_S3C2410=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_CPU_S3C2440=y
+CONFIG_CPU_S3C2442=y
+CONFIG_CPU_S3C244X=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CRAMFS=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_DAB=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_DRIVER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_MUTEXES is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+CONFIG_DEBUG_S3C_UART=2
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_DM9000 is not set
+CONFIG_DNOTIFY=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_ELF_CORE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+CONFIG_FAT_FS=y
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_FB=y
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_10x18 is not set
+CONFIG_FONT_6x11=y
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_SUN8x16 is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FUSE_FS=m
+CONFIG_FW_LOADER=m
+# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_HFS_FS is not set
+CONFIG_HID=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+CONFIG_HZ=200
+CONFIG_I2C=y
+# CONFIG_I2C_ALGOBIT is not set
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_S3C2410=y
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IDE is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_INPUT=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_GPIO_BUTTONS is not set
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MOUSE=y
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INSTRUMENTATION=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_IP6_NF_QUEUE is not set
+# CONFIG_IP6_NF_RAW is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_RAW is not set
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+# CONFIG_ISDN is not set
+CONFIG_JBD=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KEXEC=y
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_STOWAWAY=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KMOD=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+CONFIG_LEDS_S3C24XX=m
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+# CONFIG_LLC2 is not set
+CONFIG_LOCKD=y
+CONFIG_LOCK_KERNEL=y
+# CONFIG_LOCK_STAT is not set
+# CONFIG_LOGO is not set
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_MACH_OTOM is not set
+CONFIG_MACH_QT2410=y
+# CONFIG_MACH_RX3715 is not set
+CONFIG_MACH_SMDK=y
+# CONFIG_MACH_SMDK2412 is not set
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_SMDK2443 is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_VSTMS is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_MARKERS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_SPI is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_MSDOS_FS=y
+CONFIG_MTD=y
+CONFIG_MTD_ABSENT=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_MTD_BLOCK2MTD is not set
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+# CONFIG_MTD_CFI_AMDSTD 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_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+CONFIG_MTD_NAND_S3C2410_HWECC=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_ONENAND is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_PHRAM is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_START=0x8000000
+# CONFIG_MTD_PLATRAM is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_SLRAM is not set
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_IND is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_IPGRE_BROADCAST is not set
+CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_SCH_RR is not set
+CONFIG_NFS_FS=y
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+CONFIG_NLS=y
+# CONFIG_NLS_CODEPAGE_1250 is not set
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+CONFIG_NO_IDLE_HZ=y
+CONFIG_NO_IOPORT=y
+# CONFIG_NVRAM is not set
+CONFIG_OABI_COMPAT=y
+CONFIG_OPROFILE=m
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_PARTITION_ADVANCED is not set
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PDA_POWER is not set
+CONFIG_PLAT_S3C=y
+CONFIG_PLAT_S3C24XX=y
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_SLEEP=y
+# CONFIG_PM_VERBOSE is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+CONFIG_PREEMPT=y
+CONFIG_PROFILING=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_ROMFS_FS=y
+CONFIG_ROOT_NFS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DEBUG=y
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_S3C=m
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_LIB=y
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C2410_GPIO=y
+CONFIG_S3C2410_PM=y
+# CONFIG_S3C2410_PM_CHECK is not set
+# CONFIG_S3C2410_PM_DEBUG is not set
+CONFIG_S3C2410_WATCHDOG=m
+CONFIG_S3C2440_DMA=y
+# CONFIG_S3C_BOOT_ERROR_RESET is not set
+# CONFIG_S3C_BOOT_WATCHDOG is not set
+CONFIG_S3C_LOWLEVEL_UART_PORT=2
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_WAIT_SCAN=m
+# CONFIG_SDIO_UART is not set
+# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIO=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SLABINFO=y
+# CONFIG_SMC91X is not set
+CONFIG_SMDK2440_CPU2440=y
+CONFIG_SMDK2440_CPU2442=y
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_SOC=m
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SOUND=y
+# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_S3C24XX=y
+CONFIG_SPI_S3C24XX_GPIO=y
+# CONFIG_SPI_SPIDEV is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUSPEND=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_TCP_MD5SIG=y
+# CONFIG_TICK_ONESHOT is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_UID16=y
+CONFIG_USB=y
+# CONFIG_USBPCWATCHDOG is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_DEVICE_CLASS=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGETFS=m
+# 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_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_GADGET_SELECTED=y
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_HID=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_KC2190=y
+CONFIG_USB_LIBUSUAL=y
+CONFIG_USB_MIDI_GADGET=m
+CONFIG_USB_MON=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_PERSIST is not set
+CONFIG_USB_RTL8150=m
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_USBNET=y
+# CONFIG_USB_ZERO is not set
+# CONFIG_USER_NS is not set
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_VFAT_FS=y
+# CONFIG_VGASTATE is not set
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_VLAN_8021Q is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_W1 is not set
+# CONFIG_WLAN_80211 is not set
+CONFIG_XFRM_MIGRATE=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XIP_KERNEL is not set
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ZBOOT_ROM_TEXT=0x0
+# CONFIG_ZISOFS is not set
index 9aa3fd3..39f494a 100755 (executable)
@@ -16,7 +16,7 @@ MAKE += -j5
 
 
 define Image/BuildKernel
-       $(TARGET_CROSS)objcopy -O binary -R .note -R .comment -S $(KDIR)/linux-2.6.26/arch/arm/boot/compressed/vmlinux linux.bin
+       $(TARGET_CROSS)objcopy -O binary -R .note -R .comment -S $(LINUX_DIR)/arch/arm/boot/compressed/vmlinux linux.bin
        mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008000 -n "Openmoko Kernel Image Freerunner (Neo1973(GTA02))" -d linux.bin uImage
 
        cp uImage $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-uImage
diff --git a/target/linux/s3c24xx/patches-2.6.24/1001-explicitly-link-notes-section.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1001-explicitly-link-notes-section.patch.patch
new file mode 100644 (file)
index 0000000..59886a2
--- /dev/null
@@ -0,0 +1,29 @@
+From bc6ec8d17f2f4dcb70bc1a80ea0630eeb5372406 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:29:03 +0100
+Subject: [PATCH] explicitly-link-notes-section.patch
+
+Since 2.6.23 kbuild produces a 3GB arch/arm/boot/Image because it includes a
+.note.gnu.build-id section at address 0 which is followed by 3GB of 0x00.
+The --build-id option is set in the toplevel Makefile.
+This patch explicitly puts the notes section after the TEXT section.
+---
+ arch/arm/kernel/vmlinux.lds.S |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
+index 5ff5406..e2922fc 100644
+--- a/arch/arm/kernel/vmlinux.lds.S
++++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -105,6 +105,8 @@ SECTIONS
+               *(.got)                 /* Global offset table          */
+       }
++      NOTES
++
+       RODATA
+       _etext = .;                     /* End of text and rodata section */
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch
new file mode 100644 (file)
index 0000000..88b4d37
--- /dev/null
@@ -0,0 +1,60 @@
+From 219a4d34b71c37a2a23739718924b0915790f44f Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:29:16 +0100
+Subject: [PATCH] gta01-no_nand_partitions.patch
+ [PATCH] support mtd NAND commandline partitions for S3C2410
+
+This patch adds support for the mtd NAND core standard method of passing
+partition table information from the bootloader into the kernel by using
+the kernel commandline.
+
+The board specific code can still manually override and provide a fixed
+partition table, so this patch will behave backwards compatible.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+Acked-byt: Ben Dooks <ben-linux@fluff.org>
+---
+ drivers/mtd/nand/s3c2410.c |   18 ++++++++++++++++--
+ 1 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
+index 66f76e9..355de78 100644
+--- a/drivers/mtd/nand/s3c2410.c
++++ b/drivers/mtd/nand/s3c2410.c
+@@ -559,17 +559,31 @@ static int s3c2410_nand_remove(struct platform_device *pdev)
+ }
+ #ifdef CONFIG_MTD_PARTITIONS
++const char *part_probes[] = { "cmdlinepart", NULL };
+ static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,
+                                     struct s3c2410_nand_mtd *mtd,
+                                     struct s3c2410_nand_set *set)
+ {
++      struct mtd_partition *part_info;
++      int nr_part = 0;
++
+       if (set == NULL)
+               return add_mtd_device(&mtd->mtd);
+-      if (set->nr_partitions > 0 && set->partitions != NULL) {
+-              return add_mtd_partitions(&mtd->mtd, set->partitions, set->nr_partitions);
++      if (set->nr_partitions == 0) {
++              mtd->mtd.name = set->name;
++              nr_part = parse_mtd_partitions(&mtd->mtd, part_probes,
++                                              &part_info, 0);
++      } else {
++              if (set->nr_partitions > 0 && set->partitions != NULL) {
++                      nr_part = set->nr_partitions;
++                      part_info = set->partitions;
++              }
+       }
++      if (nr_part > 0 && part_info)
++              return add_mtd_partitions(&mtd->mtd, part_info, nr_part);
++
+       return add_mtd_device(&mtd->mtd);
+ }
+ #else
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1003-neo1973-soc-include-fix.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1003-neo1973-soc-include-fix.patch.patch
new file mode 100644 (file)
index 0000000..f39e6f0
--- /dev/null
@@ -0,0 +1,56 @@
+From ad7705d9145d87c6e94006d48d12372bb319f4e7 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:29:27 +0100
+Subject: [PATCH] neo1973-soc-include-fix.patch
+ [PATCH] Fix s3c24xx include file path changes in asoc driver
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+---
+ sound/soc/s3c24xx/neo1973_wm8753.c |    4 +++-
+ sound/soc/s3c24xx/s3c24xx-i2s.c    |    3 ++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
+index d5a8fc2..679b99d 100644
+--- a/sound/soc/s3c24xx/neo1973_wm8753.c
++++ b/sound/soc/s3c24xx/neo1973_wm8753.c
+@@ -30,13 +30,15 @@
+ #include <asm/mach-types.h>
+ #include <asm/hardware/scoop.h>
+-#include <asm/arch/regs-iis.h>
+ #include <asm/arch/regs-clock.h>
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/hardware.h>
+ #include <asm/arch/audio.h>
+ #include <asm/io.h>
+ #include <asm/arch/spi-gpio.h>
++
++#include <asm/plat-s3c24xx/regs-iis.h>
++
+ #include "../codecs/wm8753.h"
+ #include "lm4857.h"
+ #include "s3c24xx-pcm.h"
+diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c
+index cd89c41..fe30e0d 100644
+--- a/sound/soc/s3c24xx/s3c24xx-i2s.c
++++ b/sound/soc/s3c24xx/s3c24xx-i2s.c
+@@ -33,13 +33,14 @@
+ #include <asm/hardware.h>
+ #include <asm/io.h>
+-#include <asm/arch/regs-iis.h>
+ #include <asm/arch/regs-gpio.h>
+ #include <asm/arch/regs-clock.h>
+ #include <asm/arch/audio.h>
+ #include <asm/dma.h>
+ #include <asm/arch/dma.h>
++#include <asm/plat-s3c24xx/regs-iis.h>
++
+ #include "s3c24xx-pcm.h"
+ #include "s3c24xx-i2s.h"
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1004-asoc-neo1973_wm8753-power.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1004-asoc-neo1973_wm8753-power.patch.patch
new file mode 100644 (file)
index 0000000..ffcbfce
--- /dev/null
@@ -0,0 +1,62 @@
+From dee63031aaa4377dea64113b0f6789ea053087fd Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:29:38 +0100
+Subject: [PATCH] asoc-neo1973_wm8753-power.patch
+
+---
+ sound/soc/s3c24xx/neo1973_wm8753.c |   32 ++++++++++++++++++++++++++++++++
+ 1 files changed, 32 insertions(+), 0 deletions(-)
+
+diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
+index 679b99d..0289d1d 100644
+--- a/sound/soc/s3c24xx/neo1973_wm8753.c
++++ b/sound/soc/s3c24xx/neo1973_wm8753.c
+@@ -617,6 +617,35 @@ static int lm4857_i2c_attach(struct i2c_adapter *adap)
+       return i2c_probe(adap, &addr_data, lm4857_amp_probe);
+ }
++static u8 lm4857_state;
++
++static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
++{
++      dev_dbg(&dev->dev, "lm4857_suspend\n");
++      lm4857_state = lm4857_regs[LM4857_CTRL] & 0xf;
++      if (lm4857_state) {
++              lm4857_regs[LM4857_CTRL] &= 0xf0;
++              lm4857_write_regs();
++      }
++      return 0;
++}
++
++static int lm4857_resume(struct i2c_client *dev)
++{
++      if (lm4857_state) {
++              lm4857_regs[LM4857_CTRL] |= (lm4857_state & 0x0f);
++              lm4857_write_regs();
++      }
++      return 0;
++}
++
++static void lm4857_shutdown(struct i2c_client *dev)
++{
++      dev_dbg(&dev->dev, "lm4857_shutdown\n");
++      lm4857_regs[LM4857_CTRL] &= 0xf0;
++      lm4857_write_regs();
++}
++
+ /* corgi i2c codec control layer */
+ static struct i2c_driver lm4857_i2c_driver = {
+       .driver = {
+@@ -624,6 +653,9 @@ static struct i2c_driver lm4857_i2c_driver = {
+               .owner = THIS_MODULE,
+       },
+       .id =             I2C_DRIVERID_LM4857,
++      .suspend =        lm4857_suspend,
++      .resume =         lm4857_resume,
++      .shutdown =       lm4857_shutdown,
+       .attach_adapter = lm4857_i2c_attach,
+       .detach_client =  lm4857_i2c_detach,
+       .command =        NULL,
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch
new file mode 100644 (file)
index 0000000..6f0f086
--- /dev/null
@@ -0,0 +1,52 @@
+From 3ebb4e58d6f7a9f2710a4e174a3c8b59f9fa9bd5 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 1 Jun 2007 12:56:55 +0100
+Subject: [PATCH] asoc-core-suspend_resume.patch
+ From 6c868238a5e083dca4d74439a7fd467b5c7726b0 Mon Sep 17 00:00:00 2001
+ Subject: [PATCH] This fixes a bug whereby PCM's were not being suspended when the rest of the audio subsystem was suspended.
+
+---
+ include/sound/soc.h  |    3 +++
+ sound/soc/soc-core.c |    5 +++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/include/sound/soc.h b/include/sound/soc.h
+index f47ef1f..aedb348 100644
+--- a/include/sound/soc.h
++++ b/include/sound/soc.h
+@@ -410,6 +410,9 @@ struct snd_soc_dai_link  {
+       /* codec/machine specific init - e.g. add machine controls */
+       int (*init)(struct snd_soc_codec *codec);
++      
++      /* DAI pcm */
++      struct snd_pcm *pcm;
+ };
+ /* SoC machine */
+diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
+index e6a67b5..25f7818 100644
+--- a/sound/soc/soc-core.c
++++ b/sound/soc/soc-core.c
+@@ -639,6 +639,10 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
+                       dai->dai_ops.digital_mute(dai, 1);
+       }
++      /* suspend all pcm's */
++      for(i = 0; i < machine->num_links; i++)
++              snd_pcm_suspend_all(machine->dai_link[i].pcm);
++
+       if (machine->suspend_pre)
+               machine->suspend_pre(pdev, state);
+@@ -873,6 +877,7 @@ static int soc_new_pcm(struct snd_soc_device *socdev,
+               return ret;
+       }
++      dai_link->pcm = pcm;
+       pcm->private_data = rtd;
+       soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
+       soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1006-fix-i2c-s3c2410-resume-race.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1006-fix-i2c-s3c2410-resume-race.patch.patch
new file mode 100644 (file)
index 0000000..720608e
--- /dev/null
@@ -0,0 +1,115 @@
+From d3063c1ec65b37b45e808313133196185ea4901f Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:03 +0100
+Subject: [PATCH] fix-i2c-s3c2410-resume-race.patch
+ fix-i2c-s3c2410-resume-race.patch
+
+There is a nasty race between i2c-s3c2410 resume and resume of I2C
+driver and the client drivers -- the watchdog device actually gets to
+use the dead I2C bus before it is reinitialized by the I2C driver
+resume!  This patch makes sure any customers get turned away until
+the shopkeeper has woken up.
+
+Signed-off-by: Andy Green <andy@openmoko.com>
+---
+ drivers/i2c/busses/i2c-s3c2410.c |   35 ++++++++++++++++++++++++++++++++++-
+ 1 files changed, 34 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
+index c44ada5..5ac8309 100644
+--- a/drivers/i2c/busses/i2c-s3c2410.c
++++ b/drivers/i2c/busses/i2c-s3c2410.c
+@@ -71,6 +71,8 @@ struct s3c24xx_i2c {
+       struct resource         *irq;
+       struct resource         *ioarea;
+       struct i2c_adapter      adap;
++
++      int                     suspended;
+ };
+ /* default platform data to use if not supplied in the platform_device
+@@ -156,6 +158,14 @@ static inline void s3c24xx_i2c_disable_irq(struct s3c24xx_i2c *i2c)
+       unsigned long tmp;
+       
+       tmp = readl(i2c->regs + S3C2410_IICCON);
++
++/* S3c2442 datasheet
++ *
++ * If the IICCON[5]=0, IICCON[4] does not operate correctly.
++ * So, It is recommended that you should set IICCON[5]=1,
++ * although you does not use the IIC interrupt.
++ */
++
+       writel(tmp & ~S3C2410_IICCON_IRQEN, i2c->regs + S3C2410_IICCON);
+ }
+@@ -282,7 +292,7 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
+       case STATE_STOP:
+               dev_err(i2c->dev, "%s: called in STATE_STOP\n", __FUNCTION__);
+-              s3c24xx_i2c_disable_irq(i2c);           
++              s3c24xx_i2c_disable_irq(i2c);
+               goto out_ack;
+       case STATE_START:
+@@ -502,6 +512,14 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, struct i2c_msg *msgs, int
+       unsigned long timeout;
+       int ret;
++      if (i2c->suspended) {
++              dev_err(i2c->dev,
++                  "Hey I am still asleep (suspended: %d), retry later\n",
++                  i2c->suspended);
++              ret = -EAGAIN;
++              goto out;
++      }
++
+       ret = s3c24xx_i2c_set_master(i2c);
+       if (ret != 0) {
+               dev_err(i2c->dev, "cannot get bus (error %d)\n", ret);
+@@ -886,6 +904,17 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
+ }
+ #ifdef CONFIG_PM
++
++static int s3c24xx_i2c_suspend(struct platform_device *dev, pm_message_t state)
++{
++      struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
++
++      if (i2c != NULL)
++              i2c->suspended++;
++
++      return 0;
++}
++
+ static int s3c24xx_i2c_resume(struct platform_device *dev)
+ {
+       struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
+@@ -893,6 +922,8 @@ static int s3c24xx_i2c_resume(struct platform_device *dev)
+       if (i2c != NULL)
+               s3c24xx_i2c_init(i2c);
++      i2c->suspended--;
++
+       return 0;
+ }
+@@ -905,6 +936,7 @@ static int s3c24xx_i2c_resume(struct platform_device *dev)
+ static struct platform_driver s3c2410_i2c_driver = {
+       .probe          = s3c24xx_i2c_probe,
+       .remove         = s3c24xx_i2c_remove,
++      .suspend        = s3c24xx_i2c_suspend,
+       .resume         = s3c24xx_i2c_resume,
+       .driver         = {
+               .owner  = THIS_MODULE,
+@@ -915,6 +947,7 @@ static struct platform_driver s3c2410_i2c_driver = {
+ static struct platform_driver s3c2440_i2c_driver = {
+       .probe          = s3c24xx_i2c_probe,
+       .remove         = s3c24xx_i2c_remove,
++      .suspend        = s3c24xx_i2c_suspend,
+       .resume         = s3c24xx_i2c_resume,
+       .driver         = {
+               .owner  = THIS_MODULE,
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1007-resume-timers-wq.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1007-resume-timers-wq.patch.patch
new file mode 100644 (file)
index 0000000..e7ce35e
--- /dev/null
@@ -0,0 +1,45 @@
+From fa1e8c2fc849472cddb65bc3138944382b320589 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:15 +0100
+Subject: [PATCH] resume-timers-wq.patch
+ The initialization of clocks uses mutexes, but we execute the resume in
+ an interrupt context. We therefore have to hand this task to a non-interrupt.
+
+Adapted from a patch by Andy Green.
+---
+ arch/arm/plat-s3c24xx/time.c |   18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/plat-s3c24xx/time.c b/arch/arm/plat-s3c24xx/time.c
+index 2ec1daa..c11d0dd 100644
+--- a/arch/arm/plat-s3c24xx/time.c
++++ b/arch/arm/plat-s3c24xx/time.c
+@@ -255,8 +255,24 @@ static void __init s3c2410_timer_init (void)
+       setup_irq(IRQ_TIMER4, &s3c2410_timer_irq);
+ }
++static void s3c2410_timer_resume_work(struct work_struct *work)
++{
++      s3c2410_timer_setup();
++}
++
++static void s3c2410_timer_resume(void)
++{
++      static DECLARE_WORK(work, s3c2410_timer_resume_work);
++      int res;
++
++      res = schedule_work(&work);
++      if (!res)
++              printk(KERN_ERR
++                  "s3c2410_timer_resume_work already queued ???\n");
++}
++
+ struct sys_timer s3c24xx_timer = {
+       .init           = s3c2410_timer_init,
+       .offset         = s3c2410_gettimeoffset,
+-      .resume         = s3c2410_timer_setup
++      .resume         = s3c2410_timer_resume,
+ };
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1008-wm8753-rout2-inv.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1008-wm8753-rout2-inv.patch.patch
new file mode 100644 (file)
index 0000000..07649e1
--- /dev/null
@@ -0,0 +1,40 @@
+From 2f6a766ce9bfa4e593b1f88b564f91486cd96f80 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:27 +0100
+Subject: [PATCH] wm8753-rout2-inv.patch
+
+---
+ sound/soc/codecs/wm8753.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
+index efced93..52207d5 100644
+--- a/sound/soc/codecs/wm8753.c
++++ b/sound/soc/codecs/wm8753.c
+@@ -198,6 +198,7 @@ static const char *wm8753_mic_sel[] = {"Mic 1", "Mic 2", "Mic 3"};
+ static const char *wm8753_dai_mode[] = {"DAI 0", "DAI 1", "DAI 2", "DAI 3"};
+ static const char *wm8753_dat_sel[] = {"Stereo", "Left ADC", "Right ADC",
+       "Channel Swap"};
++static const char *wm8753_rout2_phase[] = {"Non Inverted", "Inverted"};
+ static const struct soc_enum wm8753_enum[] = {
+ SOC_ENUM_SINGLE(WM8753_BASS, 7, 2, wm8753_base),
+@@ -228,6 +229,7 @@ SOC_ENUM_SINGLE(WM8753_ADC, 4, 2, wm8753_adc_filter),
+ SOC_ENUM_SINGLE(WM8753_MICBIAS, 6, 3, wm8753_mic_sel),
+ SOC_ENUM_SINGLE(WM8753_IOCTL, 2, 4, wm8753_dai_mode),
+ SOC_ENUM_SINGLE(WM8753_ADC, 7, 4, wm8753_dat_sel),
++SOC_ENUM_SINGLE(WM8753_OUTCTL, 2, 2, wm8753_rout2_phase),
+ };
+@@ -328,6 +330,7 @@ SOC_SINGLE("Mic1 Capture Volume", WM8753_INCTL1, 5, 3, 0),
+ SOC_ENUM_EXT("DAI Mode", wm8753_enum[26], wm8753_get_dai, wm8753_set_dai),
+ SOC_ENUM("ADC Data Select", wm8753_enum[27]),
++SOC_ENUM("ROUT2 Phase", wm8753_enum[28]),
+ };
+ /* add non dapm controls */
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1009-s3c2410-bbt.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1009-s3c2410-bbt.patch.patch
new file mode 100644 (file)
index 0000000..bfa3d1c
--- /dev/null
@@ -0,0 +1,54 @@
+From 8e01740813dc6a1d804e61d303549b04e160d153 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:37 +0100
+Subject: [PATCH] s3c2410-bbt.patch
+ [PATCH] Add Kconfig option to enable NAND bad-block-table support for s3c2410
+
+This patch adds a new CONFIG_MTD_NAND_S3C2410_BBT which, if enabled,
+asks the mtd NAND core to use a bad-block table.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+---
+ drivers/mtd/nand/s3c2410.c      |    6 +++++-
+ include/asm-arm/plat-s3c/nand.h |    3 +++
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
+index 355de78..770306c 100644
+--- a/drivers/mtd/nand/s3c2410.c
++++ b/drivers/mtd/nand/s3c2410.c
+@@ -612,9 +612,13 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
+       chip->select_chip  = s3c2410_nand_select_chip;
+       chip->chip_delay   = 50;
+       chip->priv         = nmtd;
+-      chip->options      = 0;
+       chip->controller   = &info->controller;
++      if (set->flags & S3C2410_NAND_BBT)
++              chip->options      = NAND_USE_FLASH_BBT;
++      else
++              chip->options      = 0;
++
+       switch (info->cpu_type) {
+       case TYPE_S3C2410:
+               chip->IO_ADDR_W = regs + S3C2410_NFDATA;
+diff --git a/include/asm-arm/plat-s3c/nand.h b/include/asm-arm/plat-s3c/nand.h
+index 8816f7f..cb87f9e 100644
+--- a/include/asm-arm/plat-s3c/nand.h
++++ b/include/asm-arm/plat-s3c/nand.h
+@@ -21,9 +21,12 @@
+  * partitions  = mtd partition list
+ */
++#define S3C2410_NAND_BBT      0x0001
++
+ struct s3c2410_nand_set {
+       int                     nr_chips;
+       int                     nr_partitions;
++      unsigned int            flags;
+       char                    *name;
+       int                     *nr_map;
+       struct mtd_partition    *partitions;
+-- 
+1.5.6.5
+
diff --git a/target/linux/s3c24xx/patches-2.6.24/1010-gta01-pcf50606.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1010-gta01-pcf50606.patch.patch
new file mode 100644 (file)
index 0000000..afd0980
--- /dev/null
@@ -0,0 +1,2443 @@
+From 926f25b2e7e1a96e3aa6c8ca38925b35f67dcbc7 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:52 +0100
+Subject: [PATCH] gta01-pcf50606.patch
+ This is a NXP PCF50606 power management unit driver.
+
+The PCF50606 is used in the FIC/OpenMoko Neo1973 GTA01 GSM phone.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+---
+ drivers/i2c/chips/Kconfig    |   11 +
+ drivers/i2c/chips/Makefile   |    1 +
+ drivers/i2c/chips/pcf50606.c | 1945 ++++++++++++++++++++++++++++++++++++++++++
+ drivers/i2c/chips/pcf50606.h |  302 +++++++
+ include/linux/i2c-id.h       |    1 +
+ include/linux/pcf50606.h     |  108 +++
+ 6 files changed, 2368 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/i2c/chips/pcf50606.c
+ create mode 100644 drivers/i2c/chips/pcf50606.h
+ create mode 100644 include/linux/pcf50606.h
+
+diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
+index 2e1c24f..c0011fc 100644
+--- a/drivers/i2c/chips/Kconfig
++++ b/drivers/i2c/chips/Kconfig
+@@ -51,6 +51,17 @@ config SENSORS_EEPROM
+         This driver can also be built as a module.  If so, the module
+         will be called eeprom.
++config SENSORS_PCF50606
++      tristate "Philips/NXP PCF50606"
++      depends on I2C
++      help
++        If you say yes here you get support for Philips/NXP PCF50606
++        PMU (Power Management Unit) chips.
++
++        This driver can also be built as a module.  If so, the module
++        will be called pcf50606.
++
++
+ config SENSORS_PCF8574
+       tristate "Philips PCF8574 and PCF8574A"
+       depends on EXPERIMENTAL
+diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
+index ca924e1..864e6cf 100644
+--- a/drivers/i2c/chips/Makefile
++++ b/drivers/i2c/chips/Makefile
+@@ -9,6 +9,7 @@ obj-$(CONFIG_SENSORS_EEPROM)   += eeprom.o
+ obj-$(CONFIG_SENSORS_MAX6875) += max6875.o
+ obj-$(CONFIG_SENSORS_M41T00)  += m41t00.o
+ obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o
++obj-$(CONFIG_SENSORS_PCF50606)        += pcf50606.o
+ obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
+ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
+ obj-$(CONFIG_ISP1301_OMAP)    += isp1301_omap.o
+diff --git a/drivers/i2c/chips/pcf50606.c b/drivers/i2c/chips/pcf50606.c
+new file mode 100644
+index 0000000..6626c68
+--- /dev/null
++++ b/drivers/i2c/chips/pcf50606.c
+@@ -0,0 +1,1945 @@
++/* Philips/NXP PCF50606 Power Management Unit (PMU) driver
++ *
++ * (C) 2006-2007 by OpenMoko, Inc.
++ * Authors: Harald Welte <laforge@openmoko.org>,
++ *        Matt Hsu <matt@openmoko.org>
++ * 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
++ *
++ * This driver is a monster ;) It provides the following features
++ * - voltage control for a dozen different voltage domains
++ * - charging control for main and backup battery
++ * - rtc / alarm
++ * - watchdog
++ * - adc driver (hw_sensors like)
++ * - pwm driver
++ * - backlight
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/i2c.h>
++#include <linux/types.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/workqueue.h>
++#include <linux/rtc.h>
++#include <linux/bcd.h>
++#include <linux/watchdog.h>
++#include <linux/miscdevice.h>
++#include <linux/input.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++#include <linux/sched.h>
++#include <linux/platform_device.h>
++#include <linux/pcf50606.h>
++#include <linux/apm-emulation.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/gta01.h>
++
++#include "pcf50606.h"
++
++/* we use dev_dbg() throughout the code, but sometimes don't want to
++ * write an entire line of debug related information.  This DEBUGPC
++ * macro is a continuation for dev_dbg() */
++#ifdef DEBUG
++#define DEBUGPC(x, args ...) printk(x, ## args)
++#else
++#define DEBUGPC(x, args ...)
++#endif
++
++/***********************************************************************
++ * Static data / structures
++ ***********************************************************************/
++
++static unsigned short normal_i2c[] = { 0x08, I2C_CLIENT_END };
++
++I2C_CLIENT_INSMOD_1(pcf50606);
++
++#define PCF50606_F_CHG_FAST   0x00000001      /* Charger Fast allowed */
++#define PCF50606_F_CHG_PRESENT        0x00000002      /* Charger present */
++#define PCF50606_F_CHG_FOK    0x00000004      /* Fast OK for battery */
++#define PCF50606_F_CHG_ERR    0x00000008      /* Charger Error */
++#define PCF50606_F_CHG_PROT   0x00000010      /* Charger Protection */
++#define PCF50606_F_CHG_READY  0x00000020      /* Charging completed */
++#define PCF50606_F_CHG_MASK   0x000000fc
++
++#define PCF50606_F_PWR_PRESSED        0x00000100
++#define PCF50606_F_RTC_SECOND 0x00000200
++
++enum close_state {
++      CLOSE_STATE_NOT,
++      CLOSE_STATE_ALLOW = 0x2342,
++};
++
++struct pcf50606_data {
++      struct i2c_client client;
++      struct pcf50606_platform_data *pdata;
++      struct backlight_device *backlight;
++      struct mutex lock;
++      unsigned int flags;
++      unsigned int working;
++      struct mutex working_lock;
++      struct work_struct work;
++      struct rtc_device *rtc;
++      struct input_dev *input_dev;
++      int allow_close;
++      int onkey_seconds;
++      int irq;
++#ifdef CONFIG_PM
++      struct {
++              u_int8_t dcdc1, dcdc2;
++              u_int8_t dcdec1;
++              u_int8_t dcudc1;
++              u_int8_t ioregc;
++              u_int8_t d1regc1;
++              u_int8_t d2regc1;
++              u_int8_t d3regc1;
++              u_int8_t lpregc1;
++              u_int8_t adcc1, adcc2;
++              u_int8_t pwmc1;
++              u_int8_t int1m, int2m, int3m;
++      } standby_regs;
++#endif
++};
++
++static struct i2c_driver pcf50606_driver;
++
++/* This is an ugly construct on how to access the (currently single/global)
++ * pcf50606 handle from other code in the kernel.  I didn't really come up with
++ * a more decent method of dynamically resolving this */
++struct pcf50606_data *pcf50606_global;
++EXPORT_SYMBOL_GPL(pcf50606_global);
++
++static struct platform_device *pcf50606_pdev;
++
++/* This is a 10k, B=3370 NTC Thermistor -10..79 centigrade */
++/* Table entries are offset by +0.5C so a properly rounded value is generated */
++static const u_int16_t ntc_table_10k_3370B[] = {
++      /* -10 */
++      43888, 41819, 39862, 38010, 36257, 34596, 33024, 31534, 30121, 28781,
++      27510, 26304, 25159, 24071, 23038, 22056, 21122, 20234, 19390, 18586,
++      17821, 17093, 16399, 15738, 15107, 14506, 13933, 13387, 12865, 12367,
++      11891, 11437, 11003, 10588, 10192, 9813, 9450, 9103, 8771, 8453,
++      8149, 7857, 7578, 7310, 7054, 6808, 6572, 6346, 6129, 5920,
++      5720, 5528, 5344, 5167, 4996, 4833, 4675, 4524, 4379, 4239,
++      4104, 3975, 3850, 3730, 3614, 3503, 3396, 3292, 3193, 3097,
++      3004, 2915, 2829, 2745, 2665, 2588, 2513, 2441, 2371, 2304,
++      2239, 2176, 2116, 2057, 2000, 1945, 1892, 1841, 1791, 1743,
++};
++
++
++/***********************************************************************
++ * Low-Level routines
++ ***********************************************************************/
++
++static inline int __reg_write(struct pcf50606_data *pcf, u_int8_t reg,
++                            u_int8_t val)
++{
++      return i2c_smbus_write_byte_data(&pcf->client, reg, val);
++}
++
++static int reg_write(struct pcf50606_data *pcf, u_int8_t reg, u_int8_t val)
++{
++      int ret;
++
++      mutex_lock(&pcf->lock);
++      ret = __reg_write(pcf, reg, val);
++      mutex_unlock(&pcf->lock);
++
++      return ret;
++}
++
++static inline int32_t __reg_read(struct pcf50606_data *pcf, u_int8_t reg)
++{
++      int32_t ret;
++
++      ret = i2c_smbus_read_byte_data(&pcf->client, reg);
++
++      return ret;
++}
++
++static u_int8_t reg_read(struct pcf50606_data *pcf, u_int8_t reg)
++{
++      int32_t ret;
++
++      mutex_lock(&pcf->lock);
++      ret = __reg_read(pcf, reg);
++      mutex_unlock(&pcf->lock);
++
++      return ret & 0xff;
++}
++
++static int reg_set_bit_mask(struct pcf50606_data *pcf,
++                          u_int8_t reg, u_int8_t mask, u_int8_t val)
++{
++      int ret;
++      u_int8_t tmp;
++
++      val &= mask;
++
++      mutex_lock(&pcf->lock);
++
++      tmp = __reg_read(pcf, reg);
++      tmp &= ~mask;
++      tmp |= val;
++      ret = __reg_write(pcf, reg, tmp);
++
++      mutex_unlock(&pcf->lock);
++
++      return ret;
++}
++
++static int reg_clear_bits(struct pcf50606_data *pcf, u_int8_t reg, u_int8_t val)
++{
++      int ret;
++      u_int8_t tmp;
++
++      mutex_lock(&pcf->lock);
++
++      tmp = __reg_read(pcf, reg);
++      tmp &= ~val;
++      ret = __reg_write(pcf, reg, tmp);
++
++      mutex_unlock(&pcf->lock);
++
++      return ret;
++}
++
++/* synchronously read one ADC channel (busy-wait for result to be complete) */
++static u_int16_t adc_read(struct pcf50606_data *pcf,  int channel,
++                        u_int16_t *data2)
++{
++      u_int8_t adcs2, adcs1;
++      u_int16_t ret;
++
++      dev_dbg(&pcf->client.dev, "entering (pcf=%p, channel=%u, data2=%p)\n",
++              pcf, channel, data2);
++
++      channel &= PCF50606_ADCC2_ADCMUX_MASK;
++
++      mutex_lock(&pcf->lock);
++
++      /* start ADC conversion of selected channel */
++      __reg_write(pcf, PCF50606_REG_ADCC2, channel |
++                  PCF50606_ADCC2_ADCSTART | PCF50606_ADCC2_RES_10BIT);
++
++      do {
++              adcs2 = __reg_read(pcf, PCF50606_REG_ADCS2);
++      } while (!(adcs2 & PCF50606_ADCS2_ADCRDY));
++
++      adcs1 = __reg_read(pcf, PCF50606_REG_ADCS1);
++      ret = (adcs1 << 2) | (adcs2 & 0x03);
++
++      if (data2) {
++              adcs1 = __reg_read(pcf, PCF50606_REG_ADCS3);
++              *data2 = (adcs1 << 2) | ((adcs2 & 0x0c) >> 2);
++      }
++
++      mutex_unlock(&pcf->lock);
++
++      dev_dbg(&pcf->client.dev, "returning %u %u\n", ret,
++              data2 ? *data2 : 0);
++
++      return ret;
++}
++
++/***********************************************************************
++ * Voltage / ADC
++ ***********************************************************************/
++
++static u_int8_t dcudc_voltage(unsigned int millivolts)
++{
++      if (millivolts < 900)
++              return 0;
++      if (millivolts > 5500)
++              return 0x1f;
++      if (millivolts <= 3300) {
++              millivolts -= 900;
++              return millivolts/300;
++      }
++      if (millivolts < 4000)
++              return 0x0f;
++      else {
++              millivolts -= 4000;
++              return millivolts/100;
++      }
++}
++
++static unsigned int dcudc_2voltage(u_int8_t bits)
++{
++      bits &= 0x1f;
++      if (bits < 0x08)
++              return 900 + bits * 300;
++      else if (bits < 0x10)
++              return 3300;
++      else
++              return 4000 + bits * 100;
++}
++
++static u_int8_t dcdec_voltage(unsigned int millivolts)
++{
++      if (millivolts < 900)
++              return 0;
++      else if (millivolts > 3300)
++              return 0x0f;
++
++      millivolts -= 900;
++      return millivolts/300;
++}
++
++static unsigned int dcdec_2voltage(u_int8_t bits)
++{
++      bits &= 0x0f;
++      return 900 + bits*300;
++}
++
++static u_int8_t dcdc_voltage(unsigned int millivolts)
++{
++      if (millivolts < 900)
++              return 0;
++      else if (millivolts > 3600)
++              return 0x1f;
++
++      if (millivolts < 1500) {
++              millivolts -= 900;
++              return millivolts/25;
++      } else {
++              millivolts -= 1500;
++              return 0x18 + millivolts/300;
++      }
++}
++
++static unsigned int dcdc_2voltage(u_int8_t bits)
++{
++      bits &= 0x1f;
++      if ((bits & 0x18) == 0x18)
++              return 1500 + ((bits & 0x7) * 300);
++      else
++              return 900 + (bits * 25);
++}
++
++static u_int8_t dx_voltage(unsigned int millivolts)
++{
++      if (millivolts < 900)
++              return 0;
++      else if (millivolts > 3300)
++              return 0x18;
++
++      millivolts -= 900;
++      return millivolts/100;
++}
++
++static unsigned int dx_2voltage(u_int8_t bits)
++{
++      bits &= 0x1f;
++      return 900 + (bits * 100);
++}
++
++static const u_int8_t regulator_registers[__NUM_PCF50606_REGULATORS] = {
++      [PCF50606_REGULATOR_DCD]        = PCF50606_REG_DCDC1,
++      [PCF50606_REGULATOR_DCDE]       = PCF50606_REG_DCDEC1,
++      [PCF50606_REGULATOR_DCUD]       = PCF50606_REG_DCUDC1,
++      [PCF50606_REGULATOR_D1REG]      = PCF50606_REG_D1REGC1,
++      [PCF50606_REGULATOR_D2REG]      = PCF50606_REG_D2REGC1,
++      [PCF50606_REGULATOR_D3REG]      = PCF50606_REG_D3REGC1,
++      [PCF50606_REGULATOR_LPREG]      = PCF50606_REG_LPREGC1,
++      [PCF50606_REGULATOR_IOREG]      = PCF50606_REG_IOREGC,
++};
++
++int pcf50606_onoff_set(struct pcf50606_data *pcf,
++                     enum pcf50606_regulator_id reg, int on)
++{
++      u_int8_t addr;
++
++      if (reg >= __NUM_PCF50606_REGULATORS)
++              return -EINVAL;
++
++      /* IOREG cannot be powered off since it powers the PMU I2C */
++      if (reg == PCF50606_REGULATOR_IOREG)
++              return -EIO;
++
++      addr = regulator_registers[reg];
++
++      if (on == 0)
++              reg_set_bit_mask(pcf, addr, 0xe0, 0x00);
++      else
++              reg_set_bit_mask(pcf, addr, 0xe0, 0xe0);
++
++      return 0;
++}
++EXPORT_SYMBOL_GPL(pcf50606_onoff_set);
++
++int pcf50606_onoff_get(struct pcf50606_data *pcf,
++                     enum pcf50606_regulator_id reg)
++{
++      u_int8_t val, addr;
++
++      if (reg >= __NUM_PCF50606_REGULATORS)
++              return -EINVAL;
++
++      addr = regulator_registers[reg];
++      val = (reg_read(pcf, addr) & 0xe0) >> 5;
++
++      /* PWREN1 = 1, PWREN2 = 1, see table 16 of datasheet */
++      switch (val) {
++      case 0:
++      case 5:
++              return 0;
++      default:
++              return 1;
++      }
++}
++EXPORT_SYMBOL_GPL(pcf50606_onoff_get);
++
++int pcf50606_voltage_set(struct pcf50606_data *pcf,
++                       enum pcf50606_regulator_id reg,
++                       unsigned int millivolts)
++{
++      u_int8_t volt_bits;
++      u_int8_t regnr;
++      int rc;
++
++      dev_dbg(&pcf->client.dev, "pcf=%p, reg=%d, mvolts=%d\n", pcf, reg,
++              millivolts);
++
++      if (reg >= __NUM_PCF50606_REGULATORS)
++              return -EINVAL;
++
++      if (millivolts > pcf->pdata->rails[reg].voltage.max)
++              return -EINVAL;
++
++      switch (reg) {
++      case PCF50606_REGULATOR_DCD:
++              volt_bits = dcdc_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, PCF50606_REG_DCDC1, 0x1f,
++                                    volt_bits);
++              break;
++      case PCF50606_REGULATOR_DCDE:
++              volt_bits = dcdec_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, PCF50606_REG_DCDEC1, 0x0f,
++                                    volt_bits);
++              break;
++      case PCF50606_REGULATOR_DCUD:
++              volt_bits = dcudc_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, PCF50606_REG_DCUDC1, 0x1f,
++                                    volt_bits);
++              break;
++      case PCF50606_REGULATOR_D1REG:
++      case PCF50606_REGULATOR_D2REG:
++      case PCF50606_REGULATOR_D3REG:
++              regnr = PCF50606_REG_D1REGC1 + (reg - PCF50606_REGULATOR_D1REG);
++              volt_bits = dx_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, regnr, 0x1f, volt_bits);
++              break;
++      case PCF50606_REGULATOR_LPREG:
++              volt_bits = dx_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, PCF50606_REG_LPREGC1, 0x1f,
++                                    volt_bits);
++              break;
++      case PCF50606_REGULATOR_IOREG:
++              if (millivolts < 1800)
++                      return -EINVAL;
++              volt_bits = dx_voltage(millivolts);
++              rc = reg_set_bit_mask(pcf, PCF50606_REG_IOREGC, 0x1f,
++                                    volt_bits);
++              break;
++      default:
++              return -EINVAL;
++      }
++
++      return rc;
++}
++EXPORT_SYMBOL_GPL(pcf50606_voltage_set);
++
++unsigned int pcf50606_voltage_get(struct pcf50606_data *pcf,
++                       enum pcf50606_regulator_id reg)
++{
++      u_int8_t volt_bits;
++      u_int8_t regnr;
++      unsigned int rc = 0;
++
++      if (reg >= __NUM_PCF50606_REGULATORS)
++              return -EINVAL;
++
++      switch (reg) {
++      case PCF50606_REGULATOR_DCD:
++              volt_bits = reg_read(pcf, PCF50606_REG_DCDC1) & 0x1f;
++              rc = dcdc_2voltage(volt_bits);
++              break;
++      case PCF50606_REGULATOR_DCDE:
++              volt_bits = reg_read(pcf, PCF50606_REG_DCDEC1) & 0x0f;
++              rc = dcdec_2voltage(volt_bits);
++              break;
++      case PCF50606_REGULATOR_DCUD:
++              volt_bits = reg_read(pcf, PCF50606_REG_DCUDC1) & 0x1f;
++              rc = dcudc_2voltage(volt_bits);
++              break;
++      case PCF50606_REGULATOR_D1REG:
++      case PCF50606_REGULATOR_D2REG:
++      case PCF50606_REGULATOR_D3REG:
++              regnr = PCF50606_REG_D1REGC1 + (reg - PCF50606_REGULATOR_D1REG);
++              volt_bits = reg_read(pcf, regnr) & 0x1f;
++              if (volt_bits > 0x18)
++                      volt_bits = 0x18;
++              rc = dx_2voltage(volt_bits);
++              break;
++      case PCF50606_REGULATOR_LPREG:
++              volt_bits = reg_read(pcf, PCF50606_REG_LPREGC1) & 0x1f;
++              if (volt_bits > 0x18)
++                      volt_bits = 0x18;
++              rc = dx_2voltage(volt_bits);
++              break;
++      case PCF50606_REGULATOR_IOREG:
++              volt_bits = reg_read(pcf, PCF50606_REG_IOREGC) & 0x1f;
++              if (volt_bits > 0x18)
++                      volt_bits = 0x18;
++              rc = dx_2voltage(volt_bits);
++              break;
++      default:
++              return -EINVAL;
++      }
++
++      return rc;
++}
++EXPORT_SYMBOL_GPL(pcf50606_voltage_get);
++
++/* go into 'STANDBY' mode, i.e. power off the main CPU and peripherals */
++void pcf50606_go_standby(void)
++{
++      reg_write(pcf50606_global, PCF50606_REG_OOCC1,
++                PCF50606_OOCC1_GOSTDBY);
++}
++EXPORT_SYMBOL_GPL(pcf50606_go_standby);
++
++void pcf50606_gpo0_set(struct pcf50606_data *pcf, int on)
++{
++      u_int8_t val;
++
++      if (on)
++              val = 0x07;
++      else
++              val = 0x0f;
++
++      reg_set_bit_mask(pcf, PCF50606_REG_GPOC1, 0x0f, val);
++}
++EXPORT_SYMBOL_GPL(pcf50606_gpo0_set);
++
++int pcf50606_gpo0_get(struct pcf50606_data *pcf)
++{
++      u_int8_t reg = reg_read(pcf, PCF50606_REG_GPOC1) & 0x0f;
++
++      if (reg == 0x07 || reg == 0x08)
++              return 1;
++
++      return 0;
++}
++EXPORT_SYMBOL_GPL(pcf50606_gpo0_get);
++
++static void pcf50606_work(struct work_struct *work)
++{
++      struct pcf50606_data *pcf =
++                      container_of(work, struct pcf50606_data, work);
++      u_int8_t pcfirq[3];
++      int ret;
++
++      mutex_lock(&pcf->working_lock);
++      pcf->working = 1;
++      /*
++       * p35 pcf50606 datasheet rev 2.2:
++       * ''The system controller shall read all interrupt registers in
++       *   one I2C read action''
++       * because if you don't INT# gets stuck asserted forever after a
++       * while
++       */
++      ret = i2c_smbus_read_i2c_block_data(&pcf->client, PCF50606_REG_INT1, 3,
++                                          pcfirq);
++      if (ret != 3)
++              DEBUGPC("Oh crap PMU IRQ register read failed %d\n", ret);
++
++      dev_dbg(&pcf->client.dev, "INT1=0x%02x INT2=0x%02x INT3=0x%02x:",
++              pcfirq[0], pcfirq[1], pcfirq[2]);
++
++      if (pcfirq[0] & PCF50606_INT1_ONKEYF) {
++              /* ONKEY falling edge (start of button press) */
++              DEBUGPC("ONKEYF ");
++              pcf->flags |= PCF50606_F_PWR_PRESSED;
++              input_report_key(pcf->input_dev, KEY_POWER, 1);
++      }
++      if (pcfirq[0] & PCF50606_INT1_ONKEY1S) {
++              /* ONKEY pressed for more than 1 second */
++              pcf->onkey_seconds = 0;
++              DEBUGPC("ONKEY1S ");
++              /* Tell PMU we are taking care of this */
++              reg_set_bit_mask(pcf, PCF50606_REG_OOCC1,
++                               PCF50606_OOCC1_TOTRST,
++                               PCF50606_OOCC1_TOTRST);
++              /* enable SECOND interrupt (hz tick) */
++              reg_clear_bits(pcf, PCF50606_REG_INT1M, PCF50606_INT1_SECOND);
++      }
++      if (pcfirq[0] & PCF50606_INT1_ONKEYR) {
++              /* ONKEY rising edge (end of button press) */
++              DEBUGPC("ONKEYR ");
++              pcf->flags &= ~PCF50606_F_PWR_PRESSED;
++              pcf->onkey_seconds = -1;
++              input_report_key(pcf->input_dev, KEY_POWER, 0);
++              /* disable SECOND interrupt in case RTC didn't
++               * request it */
++              if (!(pcf->flags & PCF50606_F_RTC_SECOND))
++                      reg_set_bit_mask(pcf, PCF50606_REG_INT1M,
++                                       PCF50606_INT1_SECOND,
++                                       PCF50606_INT1_SECOND);
++      }
++      if (pcfirq[0] & PCF50606_INT1_EXTONR) {
++              DEBUGPC("EXTONR ");
++              input_report_key(pcf->input_dev, KEY_POWER2, 1);
++      }
++      if (pcfirq[0] & PCF50606_INT1_EXTONF) {
++              DEBUGPC("EXTONF ");
++              input_report_key(pcf->input_dev, KEY_POWER2, 0);
++      }
++      if (pcfirq[0] & PCF50606_INT1_SECOND) {
++              DEBUGPC("SECOND ");
++              if (pcf->flags & PCF50606_F_RTC_SECOND)
++                      rtc_update_irq(pcf->rtc, 1,
++                                     RTC_PF | RTC_IRQF);
++
++              if (pcf->onkey_seconds >= 0 &&
++                  pcf->flags & PCF50606_F_PWR_PRESSED) {
++                      DEBUGPC("ONKEY_SECONDS(%u, OOCC1=0x%02x) ",
++                              pcf->onkey_seconds,
++                              reg_read(pcf, PCF50606_REG_OOCC1));
++                      pcf->onkey_seconds++;
++                      if (pcf->onkey_seconds >=
++                          pcf->pdata->onkey_seconds_required) {
++                              /* Ask init to do 'ctrlaltdel' */
++                              DEBUGPC("SIGINT(init) ");
++                              kill_proc(1, SIGINT, 1);
++                              /* FIXME: what to do if userspace doesn't
++                               * shut down? Do we want to force it? */
++                      }
++              }
++      }
++      if (pcfirq[0] & PCF50606_INT1_ALARM) {
++              DEBUGPC("ALARM ");
++              if (pcf->pdata->used_features & PCF50606_FEAT_RTC)
++                      rtc_update_irq(pcf->rtc, 1,
++                                     RTC_AF | RTC_IRQF);
++      }
++
++      if (pcfirq[1] & PCF50606_INT2_CHGINS) {
++              /* Charger inserted */
++              DEBUGPC("CHGINS ");
++              input_report_key(pcf->input_dev, KEY_BATTERY, 1);
++              apm_queue_event(APM_POWER_STATUS_CHANGE);
++              pcf->flags |= PCF50606_F_CHG_PRESENT;
++              if (pcf->pdata->cb)
++                      pcf->pdata->cb(&pcf->client.dev,
++                                     PCF50606_FEAT_MBC, PMU_EVT_INSERT);
++              /* FIXME: how to signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGRM) {
++              /* Charger removed */
++              DEBUGPC("CHGRM ");
++              input_report_key(pcf->input_dev, KEY_BATTERY, 0);
++              apm_queue_event(APM_POWER_STATUS_CHANGE);
++              pcf->flags &= ~(PCF50606_F_CHG_MASK|PCF50606_F_CHG_PRESENT);
++              if (pcf->pdata->cb)
++                      pcf->pdata->cb(&pcf->client.dev,
++                                     PCF50606_FEAT_MBC, PMU_EVT_INSERT);
++              /* FIXME: how signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGFOK) {
++              /* Battery ready for fast charging */
++              DEBUGPC("CHGFOK ");
++              pcf->flags |= PCF50606_F_CHG_FOK;
++              /* FIXME: how to signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGERR) {
++              /* Error in charge mode */
++              DEBUGPC("CHGERR ");
++              pcf->flags |= PCF50606_F_CHG_ERR;
++              pcf->flags &= ~(PCF50606_F_CHG_FOK|PCF50606_F_CHG_READY);
++              /* FIXME: how to signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGFRDY) {
++              /* Fast charge completed */
++              DEBUGPC("CHGFRDY ");
++              pcf->flags |= PCF50606_F_CHG_READY;
++              pcf->flags &= ~PCF50606_F_CHG_FOK;
++              /* FIXME: how to signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGPROT) {
++              /* Charging protection interrupt */
++              DEBUGPC("CHGPROT ");
++              pcf->flags &= ~(PCF50606_F_CHG_FOK|PCF50606_F_CHG_READY);
++              /* FIXME: signal this to userspace */
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGWD10S) {
++              /* Charger watchdog will expire in 10 seconds */
++              DEBUGPC("CHGWD10S ");
++              reg_set_bit_mask(pcf, PCF50606_REG_OOCC1,
++                               PCF50606_OOCC1_WDTRST,
++                               PCF50606_OOCC1_WDTRST);
++      }
++      if (pcfirq[1] & PCF50606_INT2_CHGWDEXP) {
++              /* Charger watchdog expires */
++              DEBUGPC("CHGWDEXP ");
++              /* FIXME: how to signal this to userspace */
++      }
++
++      if (pcfirq[2] & PCF50606_INT3_ADCRDY) {
++              /* ADC result ready */
++              DEBUGPC("ADCRDY ");
++      }
++      if (pcfirq[2] & PCF50606_INT3_ACDINS) {
++              /* Accessory insertion detected */
++              DEBUGPC("ACDINS ");
++              if (pcf->pdata->cb)
++                      pcf->pdata->cb(&pcf->client.dev,
++                                     PCF50606_FEAT_ACD, PMU_EVT_INSERT);
++      }
++      if (pcfirq[2] & PCF50606_INT3_ACDREM) {
++              /* Accessory removal detected */
++              DEBUGPC("ACDREM ");
++              if (pcf->pdata->cb)
++                      pcf->pdata->cb(&pcf->client.dev,
++                                     PCF50606_FEAT_ACD, PMU_EVT_REMOVE);
++      }
++      /* FIXME: TSCPRES */
++      if (pcfirq[2] & PCF50606_INT3_LOWBAT) {
++              /* Really low battery voltage, we have 8 seconds left */
++              DEBUGPC("LOWBAT ");
++              apm_queue_event(APM_LOW_BATTERY);
++              DEBUGPC("SIGPWR(init) ");
++              kill_proc(1, SIGPWR, 1);
++              /* Tell PMU we are taking care of this */
++              reg_set_bit_mask(pcf, PCF50606_REG_OOCC1,
++                               PCF50606_OOCC1_TOTRST,
++                               PCF50606_OOCC1_TOTRST);
++      }
++      if (pcfirq[2] & PCF50606_INT3_HIGHTMP) {
++              /* High temperature */
++              DEBUGPC("HIGHTMP ");
++              apm_queue_event(APM_CRITICAL_SUSPEND);
++      }
++
++      DEBUGPC("\n");
++
++      pcf->working = 0;
++      input_sync(pcf->input_dev);
++      put_device(&pcf->client.dev);
++      mutex_unlock(&pcf->working_lock);
++}
++
++static irqreturn_t pcf50606_irq(int irq, void *_pcf)
++{
++      struct pcf50606_data *pcf = _pcf;
++
++      dev_dbg(&pcf->client.dev, "entering(irq=%u, pcf=%p): scheduling work\n",
++              irq, _pcf);
++      get_device(&pcf->client.dev);
++      if (!schedule_work(&pcf->work) && !pcf->working)
++              dev_dbg(&pcf->client.dev, "work item may be lost\n");
++
++      return IRQ_HANDLED;
++}
++
++static u_int16_t adc_to_batt_millivolts(u_int16_t adc)
++{
++      u_int16_t mvolts;
++
++      mvolts = (adc * 6000) / 1024;
++
++      return mvolts;
++}
++
++#define BATTVOLT_SCALE_START 2800
++#define BATTVOLT_SCALE_END 4200
++#define BATTVOLT_SCALE_DIVIDER ((BATTVOLT_SCALE_END - BATTVOLT_SCALE_START)/100)
++
++static u_int8_t battvolt_scale(u_int16_t battvolt)
++{
++      /* FIXME: this linear scale is completely bogus */
++      u_int16_t battvolt_relative = battvolt - BATTVOLT_SCALE_START;
++      unsigned int percent = battvolt_relative / BATTVOLT_SCALE_DIVIDER;
++
++      return percent;
++}
++
++u_int16_t pcf50606_battvolt(struct pcf50606_data *pcf)
++{
++      u_int16_t adc;
++      adc = adc_read(pcf, PCF50606_ADCMUX_BATVOLT_RES, NULL);
++
++      return adc_to_batt_millivolts(adc);
++}
++EXPORT_SYMBOL_GPL(pcf50606_battvolt);
++
++static ssize_t show_battvolt(struct device *dev, struct device_attribute *attr,
++                           char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++
++      return sprintf(buf, "%u\n", pcf50606_battvolt(pcf));
++}
++static DEVICE_ATTR(battvolt, S_IRUGO | S_IWUSR, show_battvolt, NULL);
++
++static int reg_id_by_name(const char *name)
++{
++      int reg_id;
++
++      if (!strcmp(name, "voltage_dcd"))
++              reg_id = PCF50606_REGULATOR_DCD;
++      else if (!strcmp(name, "voltage_dcde"))
++              reg_id = PCF50606_REGULATOR_DCDE;
++      else if (!strcmp(name, "voltage_dcud"))
++              reg_id = PCF50606_REGULATOR_DCUD;
++      else if (!strcmp(name, "voltage_d1reg"))
++              reg_id = PCF50606_REGULATOR_D1REG;
++      else if (!strcmp(name, "voltage_d2reg"))
++              reg_id = PCF50606_REGULATOR_D2REG;
++      else if (!strcmp(name, "voltage_d3reg"))
++              reg_id = PCF50606_REGULATOR_D3REG;
++      else if (!strcmp(name, "voltage_lpreg"))
++              reg_id = PCF50606_REGULATOR_LPREG;
++      else if (!strcmp(name, "voltage_ioreg"))
++              reg_id = PCF50606_REGULATOR_IOREG;
++      else
++              reg_id = -1;
++
++      return reg_id;
++}
++
++static ssize_t show_vreg(struct device *dev, struct device_attribute *attr,
++                       char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      unsigned int reg_id;
++
++      reg_id = reg_id_by_name(attr->attr.name);
++      if (reg_id < 0)
++              return 0;
++
++      if (pcf50606_onoff_get(pcf, reg_id) > 0)
++              return sprintf(buf, "%u\n", pcf50606_voltage_get(pcf, reg_id));
++      else
++              return strlcpy(buf, "0\n", PAGE_SIZE);
++}
++
++static ssize_t set_vreg(struct device *dev, struct device_attribute *attr,
++                      const char *buf, size_t count)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      unsigned long mvolts = simple_strtoul(buf, NULL, 10);
++      unsigned int reg_id;
++
++      reg_id = reg_id_by_name(attr->attr.name);
++      if (reg_id < 0)
++              return -EIO;
++
++      dev_dbg(dev, "attempting to set %s(%d) to %lu mvolts\n",
++              attr->attr.name, reg_id, mvolts);
++
++      if (mvolts == 0) {
++              pcf50606_onoff_set(pcf, reg_id, 0);
++      } else {
++              if (pcf50606_voltage_set(pcf, reg_id, mvolts) < 0) {
++                      dev_warn(dev, "refusing to set %s(%d) to %lu mvolts "
++                               "(max=%u)\n", attr->attr.name, reg_id, mvolts,
++                               pcf->pdata->rails[reg_id].voltage.max);
++                      return -EINVAL;
++              }
++              pcf50606_onoff_set(pcf, reg_id, 1);
++      }
++
++      return count;
++}
++
++static DEVICE_ATTR(voltage_dcd, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_dcde, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_dcud, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_d1reg, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_d2reg, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_d3reg, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_lpreg, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++static DEVICE_ATTR(voltage_ioreg, S_IRUGO | S_IWUSR, show_vreg, set_vreg);
++
++/***********************************************************************
++ * Charger Control
++ ***********************************************************************/
++
++/* Enable/disable fast charging (500mA in the GTA01) */
++void pcf50606_charge_fast(struct pcf50606_data *pcf, int on)
++{
++      if (!(pcf->pdata->used_features & PCF50606_FEAT_MBC))
++              return;
++
++      if (on) {
++              /* We can allow PCF to automatically charge
++               * using Ifast */
++              pcf->flags |= PCF50606_F_CHG_FAST;
++              reg_set_bit_mask(pcf, PCF50606_REG_MBCC1,
++                               PCF50606_MBCC1_AUTOFST,
++                               PCF50606_MBCC1_AUTOFST);
++      } else {
++              pcf->flags &= ~PCF50606_F_CHG_FAST;
++              /* disable automatic fast-charge */
++              reg_clear_bits(pcf, PCF50606_REG_MBCC1,
++                              PCF50606_MBCC1_AUTOFST);
++              /* switch to idle mode to abort existing charge
++               * process */
++              reg_set_bit_mask(pcf, PCF50606_REG_MBCC1,
++                               PCF50606_MBCC1_CHGMOD_MASK,
++                               PCF50606_MBCC1_CHGMOD_IDLE);
++      }
++}
++EXPORT_SYMBOL_GPL(pcf50606_charge_fast);
++
++static inline u_int16_t adc_to_rntc(struct pcf50606_data *pcf, u_int16_t adc)
++{
++      u_int32_t r_ntc = (adc * (u_int32_t)pcf->pdata->r_fix_batt) / (1023 - adc);
++
++      return r_ntc;
++}
++
++static inline int16_t rntc_to_temp(u_int16_t rntc)
++{
++      int i;
++
++      for (i = 0; i < ARRAY_SIZE(ntc_table_10k_3370B); i++) {
++              if (rntc > ntc_table_10k_3370B[i])
++                      return i - 10;  /* First element is -10 */
++      }
++      return -99;     /* Below our range */
++}
++
++static ssize_t show_battemp(struct device *dev, struct device_attribute *attr,
++                          char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int16_t adc;
++
++      adc = adc_read(pcf, PCF50606_ADCMUX_BATTEMP, NULL);
++
++      return sprintf(buf, "%d\n", rntc_to_temp(adc_to_rntc(pcf, adc)));
++}
++static DEVICE_ATTR(battemp, S_IRUGO | S_IWUSR, show_battemp, NULL);
++
++static inline int16_t adc_to_chg_milliamps(struct pcf50606_data *pcf,
++                                           u_int16_t adc_adcin1,
++                                           u_int16_t adc_batvolt)
++{
++      int32_t res = (adc_adcin1 - adc_batvolt) * 2400;
++      return (res * 1000) / (pcf->pdata->r_sense_milli * 1024);
++}
++
++static ssize_t show_chgcur(struct device *dev, struct device_attribute *attr,
++                         char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int16_t adc_batvolt, adc_adcin1;
++      int16_t ma;
++
++      adc_batvolt = adc_read(pcf, PCF50606_ADCMUX_BATVOLT_ADCIN1,
++                             &adc_adcin1);
++      ma = adc_to_chg_milliamps(pcf, adc_adcin1, adc_batvolt);
++
++      return sprintf(buf, "%d\n", ma);
++}
++static DEVICE_ATTR(chgcur, S_IRUGO | S_IWUSR, show_chgcur, NULL);
++
++static const char *chgmode_names[] = {
++      [PCF50606_MBCC1_CHGMOD_QUAL]            = "qualification",
++      [PCF50606_MBCC1_CHGMOD_PRE]             = "pre",
++      [PCF50606_MBCC1_CHGMOD_TRICKLE]         = "trickle",
++      [PCF50606_MBCC1_CHGMOD_FAST_CCCV]       = "fast_cccv",
++      [PCF50606_MBCC1_CHGMOD_FAST_NOCC]       = "fast_nocc",
++      [PCF50606_MBCC1_CHGMOD_FAST_NOCV]       = "fast_nocv",
++      [PCF50606_MBCC1_CHGMOD_FAST_SW]         = "fast_switch",
++      [PCF50606_MBCC1_CHGMOD_IDLE]            = "idle",
++};
++
++static ssize_t show_chgmode(struct device *dev, struct device_attribute *attr,
++                          char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t mbcc1 = reg_read(pcf, PCF50606_REG_MBCC1);
++      u_int8_t chgmod = (mbcc1 & PCF50606_MBCC1_CHGMOD_MASK);
++
++      return sprintf(buf, "%s\n", chgmode_names[chgmod]);
++}
++
++static ssize_t set_chgmode(struct device *dev, struct device_attribute *attr,
++                         const char *buf, size_t count)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t mbcc1 = reg_read(pcf, PCF50606_REG_MBCC1);
++
++      mbcc1 &= ~PCF50606_MBCC1_CHGMOD_MASK;
++
++      if (!strcmp(buf, "qualification"))
++              mbcc1 |= PCF50606_MBCC1_CHGMOD_QUAL;
++      else if (!strcmp(buf, "pre"))
++              mbcc1 |= PCF50606_MBCC1_CHGMOD_PRE;
++      else if (!strcmp(buf, "trickle"))
++              mbcc1 |= PCF50606_MBCC1_CHGMOD_TRICKLE;
++      else if (!strcmp(buf, "fast_cccv"))
++              mbcc1 |= PCF50606_MBCC1_CHGMOD_FAST_CCCV;
++      /* We don't allow the other fast modes for security reasons */
++      else if (!strcmp(buf, "idle"))
++              mbcc1 |= PCF50606_MBCC1_CHGMOD_IDLE;
++      else
++              return -EINVAL;
++
++      reg_write(pcf, PCF50606_REG_MBCC1, mbcc1);
++
++      return count;
++}
++
++static DEVICE_ATTR(chgmode, S_IRUGO | S_IWUSR, show_chgmode, set_chgmode);
++
++static const char *chgstate_names[] = {
++      [PCF50606_F_CHG_FAST]                   = "fast_enabled",
++      [PCF50606_F_CHG_PRESENT]                = "present",
++      [PCF50606_F_CHG_FOK]                    = "fast_ok",
++      [PCF50606_F_CHG_ERR]                    = "error",
++      [PCF50606_F_CHG_PROT]                   = "protection",
++      [PCF50606_F_CHG_READY]                  = "ready",
++};
++
++static ssize_t show_chgstate(struct device *dev, struct device_attribute *attr,
++                          char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      char *b = buf;
++      int i;
++
++      for (i = 0; i < 32; i++)
++              if (pcf->flags & (1 << i) && i < ARRAY_SIZE(chgstate_names))
++                      b += sprintf(b, "%s ", chgstate_names[i]);
++
++      if (b > buf)
++              b += sprintf(b, "\n");
++
++      return b - buf;
++}
++static DEVICE_ATTR(chgstate, S_IRUGO | S_IWUSR, show_chgstate, NULL);
++
++/***********************************************************************
++ * APM emulation
++ ***********************************************************************/
++
++static void pcf50606_get_power_status(struct apm_power_info *info)
++{
++      struct pcf50606_data *pcf = pcf50606_global;
++      u_int8_t mbcc1 = reg_read(pcf, PCF50606_REG_MBCC1);
++      u_int8_t chgmod = mbcc1 & PCF50606_MBCC1_CHGMOD_MASK;
++      u_int16_t battvolt = pcf50606_battvolt(pcf);
++
++      if (reg_read(pcf, PCF50606_REG_OOCS) & PCF50606_OOCS_EXTON)
++              info->ac_line_status = APM_AC_ONLINE;
++      else
++              info->ac_line_status = APM_AC_OFFLINE;
++
++      switch (chgmod) {
++      case PCF50606_MBCC1_CHGMOD_QUAL:
++      case PCF50606_MBCC1_CHGMOD_PRE:
++      case PCF50606_MBCC1_CHGMOD_IDLE:
++              info->battery_life = battvolt_scale(battvolt);
++              break;
++      default:
++              info->battery_status = APM_BATTERY_STATUS_CHARGING;
++              info->battery_flag = APM_BATTERY_FLAG_CHARGING;
++              break;
++      }
++}
++
++/***********************************************************************
++ * RTC
++ ***********************************************************************/
++
++struct pcf50606_time {
++      u_int8_t sec;
++      u_int8_t min;
++      u_int8_t hour;
++      u_int8_t wkday;
++      u_int8_t day;
++      u_int8_t month;
++      u_int8_t year;
++};
++
++static void pcf2rtc_time(struct rtc_time *rtc, struct pcf50606_time *pcf)
++{
++      rtc->tm_sec = BCD2BIN(pcf->sec);
++      rtc->tm_min = BCD2BIN(pcf->min);
++      rtc->tm_hour = BCD2BIN(pcf->hour);
++      rtc->tm_wday = BCD2BIN(pcf->wkday);
++      rtc->tm_mday = BCD2BIN(pcf->day);
++      rtc->tm_mon = BCD2BIN(pcf->month);
++      rtc->tm_year = BCD2BIN(pcf->year) + 100;
++}
++
++static void rtc2pcf_time(struct pcf50606_time *pcf, struct rtc_time *rtc)
++{
++      pcf->sec = BIN2BCD(rtc->tm_sec);
++      pcf->min = BIN2BCD(rtc->tm_min);
++      pcf->hour = BIN2BCD(rtc->tm_hour);
++      pcf->wkday = BIN2BCD(rtc->tm_wday);
++      pcf->day = BIN2BCD(rtc->tm_mday);
++      pcf->month = BIN2BCD(rtc->tm_mon);
++      pcf->year = BIN2BCD(rtc->tm_year - 100);
++}
++
++static int pcf50606_rtc_ioctl(struct device *dev, unsigned int cmd,
++                            unsigned long arg)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      switch (cmd) {
++      case RTC_PIE_OFF:
++              /* disable periodic interrupt (hz tick) */
++              pcf->flags &= ~PCF50606_F_RTC_SECOND;
++              reg_set_bit_mask(pcf, PCF50606_REG_INT1M,
++                               PCF50606_INT1_SECOND, PCF50606_INT1_SECOND);
++              return 0;
++      case RTC_PIE_ON:
++              /* ensable periodic interrupt (hz tick) */
++              pcf->flags |= PCF50606_F_RTC_SECOND;
++              reg_clear_bits(pcf, PCF50606_REG_INT1M, PCF50606_INT1_SECOND);
++              return 0;
++      }
++      return -ENOIOCTLCMD;
++}
++
++static int pcf50606_rtc_read_time(struct device *dev, struct rtc_time *tm)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      struct pcf50606_time pcf_tm;
++
++      mutex_lock(&pcf->lock);
++      pcf_tm.sec = __reg_read(pcf, PCF50606_REG_RTCSC);
++      pcf_tm.min = __reg_read(pcf, PCF50606_REG_RTCMN);
++      pcf_tm.hour = __reg_read(pcf, PCF50606_REG_RTCHR);
++      pcf_tm.wkday = __reg_read(pcf, PCF50606_REG_RTCWD);
++      pcf_tm.day = __reg_read(pcf, PCF50606_REG_RTCDT);
++      pcf_tm.month = __reg_read(pcf, PCF50606_REG_RTCMT);
++      pcf_tm.year = __reg_read(pcf, PCF50606_REG_RTCYR);
++      mutex_unlock(&pcf->lock);
++
++      dev_dbg(dev, "PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
++              pcf_tm.day, pcf_tm.month, pcf_tm.year,
++              pcf_tm.hour, pcf_tm.min, pcf_tm.sec);
++
++      pcf2rtc_time(tm, &pcf_tm);
++
++      dev_dbg(dev, "RTC_TIME: %u.%u.%u %u:%u:%u\n",
++              tm->tm_mday, tm->tm_mon, tm->tm_year,
++              tm->tm_hour, tm->tm_min, tm->tm_sec);
++
++      return 0;
++}
++
++static int pcf50606_rtc_set_time(struct device *dev, struct rtc_time *tm)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      struct pcf50606_time pcf_tm;
++      u_int8_t int1m;
++
++      dev_dbg(dev, "RTC_TIME: %u.%u.%u %u:%u:%u\n",
++              tm->tm_mday, tm->tm_mon, tm->tm_year,
++              tm->tm_hour, tm->tm_min, tm->tm_sec);
++      rtc2pcf_time(&pcf_tm, tm);
++      dev_dbg(dev, "PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
++              pcf_tm.day, pcf_tm.month, pcf_tm.year,
++              pcf_tm.hour, pcf_tm.min, pcf_tm.sec);
++
++      mutex_lock(&pcf->lock);
++
++      /* disable SECOND interrupt */
++      int1m = __reg_read(pcf, PCF50606_REG_INT1M);
++      __reg_write(pcf, PCF50606_REG_INT1M, int1m | PCF50606_INT1_SECOND);
++
++      __reg_write(pcf, PCF50606_REG_RTCSC, pcf_tm.sec);
++      __reg_write(pcf, PCF50606_REG_RTCMN, pcf_tm.min);
++      __reg_write(pcf, PCF50606_REG_RTCHR, pcf_tm.hour);
++      __reg_write(pcf, PCF50606_REG_RTCWD, pcf_tm.wkday);
++      __reg_write(pcf, PCF50606_REG_RTCDT, pcf_tm.day);
++      __reg_write(pcf, PCF50606_REG_RTCMT, pcf_tm.month);
++      __reg_write(pcf, PCF50606_REG_RTCYR, pcf_tm.year);
++
++      /* restore INT1M, potentially re-enable SECOND interrupt */
++      __reg_write(pcf, PCF50606_REG_INT1M, int1m);
++
++      mutex_unlock(&pcf->lock);
++
++      return 0;
++}
++
++static int pcf50606_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      struct pcf50606_time pcf_tm;
++
++      mutex_lock(&pcf->lock);
++      alrm->enabled = 
++             __reg_read(pcf, PCF50606_REG_INT1M) & PCF50606_INT1_ALARM ? 0 : 1;
++      pcf_tm.sec = __reg_read(pcf, PCF50606_REG_RTCSCA);
++      pcf_tm.min = __reg_read(pcf, PCF50606_REG_RTCMNA);
++      pcf_tm.hour = __reg_read(pcf, PCF50606_REG_RTCHRA);
++      pcf_tm.wkday = __reg_read(pcf, PCF50606_REG_RTCWDA);
++      pcf_tm.day = __reg_read(pcf, PCF50606_REG_RTCDTA);
++      pcf_tm.month = __reg_read(pcf, PCF50606_REG_RTCMTA);
++      pcf_tm.year = __reg_read(pcf, PCF50606_REG_RTCYRA);
++      mutex_unlock(&pcf->lock);
++
++      pcf2rtc_time(&alrm->time, &pcf_tm);
++
++      return 0;
++}
++
++static int pcf50606_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      struct pcf50606_time pcf_tm;
++      u_int8_t irqmask;
++
++      rtc2pcf_time(&pcf_tm, &alrm->time);
++
++      mutex_lock(&pcf->lock);
++
++      /* disable alarm interrupt */
++      irqmask = __reg_read(pcf, PCF50606_REG_INT1M);
++      irqmask |= PCF50606_INT1_ALARM;
++      __reg_write(pcf, PCF50606_REG_INT1M, irqmask);
++
++      __reg_write(pcf, PCF50606_REG_RTCSCA, pcf_tm.sec);
++      __reg_write(pcf, PCF50606_REG_RTCMNA, pcf_tm.min);
++      __reg_write(pcf, PCF50606_REG_RTCHRA, pcf_tm.hour);
++      __reg_write(pcf, PCF50606_REG_RTCWDA, pcf_tm.wkday);
++      __reg_write(pcf, PCF50606_REG_RTCDTA, pcf_tm.day);
++      __reg_write(pcf, PCF50606_REG_RTCMTA, pcf_tm.month);
++      __reg_write(pcf, PCF50606_REG_RTCYRA, pcf_tm.year);
++
++      if (alrm->enabled) {
++              /* (re-)enaable alarm interrupt */
++              irqmask = __reg_read(pcf, PCF50606_REG_INT1M);
++              irqmask &= ~PCF50606_INT1_ALARM;
++              __reg_write(pcf, PCF50606_REG_INT1M, irqmask);
++      }
++
++      mutex_unlock(&pcf->lock);
++
++      /* FIXME */
++      return 0;
++}
++
++static struct rtc_class_ops pcf50606_rtc_ops = {
++      .ioctl          = pcf50606_rtc_ioctl,
++      .read_time      = pcf50606_rtc_read_time,
++      .set_time       = pcf50606_rtc_set_time,
++      .read_alarm     = pcf50606_rtc_read_alarm,
++      .set_alarm      = pcf50606_rtc_set_alarm,
++};
++
++/***********************************************************************
++ * Watchdog
++ ***********************************************************************/
++
++static void pcf50606_wdt_start(struct pcf50606_data *pcf)
++{
++      reg_set_bit_mask(pcf, PCF50606_REG_OOCC1, PCF50606_OOCC1_WDTRST,
++                       PCF50606_OOCC1_WDTRST);
++}
++
++static void pcf50606_wdt_stop(struct pcf50606_data *pcf)
++{
++      reg_clear_bits(pcf, PCF50606_REG_OOCS, PCF50606_OOCS_WDTEXP);
++}
++
++static void pcf50606_wdt_keepalive(struct pcf50606_data *pcf)
++{
++      pcf50606_wdt_start(pcf);
++}
++
++static int pcf50606_wdt_open(struct inode *inode, struct file *file)
++{
++      struct pcf50606_data *pcf = pcf50606_global;
++
++      file->private_data = pcf;
++
++      /* start the timer */
++      pcf50606_wdt_start(pcf);
++
++      return nonseekable_open(inode, file);
++}
++
++static int pcf50606_wdt_release(struct inode *inode, struct file *file)
++{
++      struct pcf50606_data *pcf = file->private_data;
++
++      if (pcf->allow_close == CLOSE_STATE_ALLOW)
++              pcf50606_wdt_stop(pcf);
++      else {
++              printk(KERN_CRIT "Unexpected close, not stopping watchdog!\n");
++              pcf50606_wdt_keepalive(pcf);
++      }
++
++      pcf->allow_close = CLOSE_STATE_NOT;
++
++      return 0;
++}
++
++static ssize_t pcf50606_wdt_write(struct file *file, const char __user *data,
++                                size_t len, loff_t *ppos)
++{
++      struct pcf50606_data *pcf = file->private_data;
++      if (len) {
++              size_t i;
++
++              for (i = 0; i != len; i++) {
++                      char c;
++                      if (get_user(c, data + i))
++                              return -EFAULT;
++                      if (c == 'V')
++                              pcf->allow_close = CLOSE_STATE_ALLOW;
++              }
++              pcf50606_wdt_keepalive(pcf);
++      }
++
++      return len;
++}
++
++static struct watchdog_info pcf50606_wdt_ident = {
++      .options        = WDIOF_MAGICCLOSE,
++      .firmware_version = 0,
++      .identity       = "PCF50606 Watchdog",
++};
++
++static int pcf50606_wdt_ioctl(struct inode *inode, struct file *file,
++                            unsigned int cmd, unsigned long arg)
++{
++      struct pcf50606_data *pcf = file->private_data;
++      void __user *argp = (void __user *)arg;
++      int __user *p = argp;
++
++      switch (cmd) {
++      case WDIOC_GETSUPPORT:
++              return copy_to_user(argp, &pcf50606_wdt_ident,
++                                  sizeof(pcf50606_wdt_ident)) ? -EFAULT : 0;
++              break;
++      case WDIOC_GETSTATUS:
++      case WDIOC_GETBOOTSTATUS:
++              return put_user(0, p);
++      case WDIOC_KEEPALIVE:
++              pcf50606_wdt_keepalive(pcf);
++              return 0;
++      case WDIOC_GETTIMEOUT:
++              return put_user(8, p);
++      default:
++              return -ENOIOCTLCMD;
++      }
++}
++
++static struct file_operations pcf50606_wdt_fops = {
++      .owner          = THIS_MODULE,
++      .llseek         = no_llseek,
++      .write          = &pcf50606_wdt_write,
++      .ioctl          = &pcf50606_wdt_ioctl,
++      .open           = &pcf50606_wdt_open,
++      .release        = &pcf50606_wdt_release,
++};
++
++static struct miscdevice pcf50606_wdt_miscdev = {
++      .minor          = WATCHDOG_MINOR,
++      .name           = "watchdog",
++      .fops           = &pcf50606_wdt_fops,
++};
++
++/***********************************************************************
++ * PWM
++ ***********************************************************************/
++
++static const char *pwm_dc_table[] = {
++      "0/16", "1/16", "2/16", "3/16",
++      "4/16", "5/16", "6/16", "7/16",
++      "8/16", "9/16", "10/16", "11/16",
++      "12/16", "13/16", "14/16", "15/16",
++};
++
++static ssize_t show_pwm_dc(struct device *dev, struct device_attribute *attr,
++                         char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t val;
++
++      val = reg_read(pcf, PCF50606_REG_PWMC1) >> PCF50606_PWMC1_DC_SHIFT;
++      val &= 0xf;
++
++      return sprintf(buf, "%s\n", pwm_dc_table[val]);
++}
++
++static ssize_t set_pwm_dc(struct device *dev, struct device_attribute *attr,
++                        const char *buf, size_t count)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t i;
++
++      for (i = 0; i < ARRAY_SIZE(pwm_dc_table); i++) {
++              if (!strncmp(buf, pwm_dc_table[i], strlen(pwm_dc_table[i]))) {
++                      dev_dbg(dev, "setting pwm dc %s\n\r", pwm_dc_table[i]);
++                      reg_set_bit_mask(pcf, PCF50606_REG_PWMC1, 0x1e,
++                                       (i << PCF50606_PWMC1_DC_SHIFT));
++              }
++      }
++      return count;
++}
++
++static DEVICE_ATTR(pwm_dc, S_IRUGO | S_IWUSR, show_pwm_dc, set_pwm_dc);
++
++static const char *pwm_clk_table[] = {
++      "512", "256", "128", "64",
++      "56300", "28100", "14100", "7000",
++};
++
++static ssize_t show_pwm_clk(struct device *dev, struct device_attribute *attr,
++                          char *buf)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t val;
++
++      val = reg_read(pcf, PCF50606_REG_PWMC1) >> PCF50606_PWMC1_CLK_SHIFT;
++      val &= 0x7;
++
++      return sprintf(buf, "%s\n", pwm_clk_table[val]);
++}
++
++static ssize_t set_pwm_clk(struct device *dev, struct device_attribute *attr,
++                         const char *buf, size_t count)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      u_int8_t i;
++
++      for (i = 0; i < ARRAY_SIZE(pwm_clk_table); i++) {
++              if (!strncmp(buf, pwm_clk_table[i], strlen(pwm_clk_table[i]))) {
++                      dev_dbg(dev, "setting pwm clk %s\n\r",
++                              pwm_clk_table[i]);
++                      reg_set_bit_mask(pcf, PCF50606_REG_PWMC1, 0xe0,
++                                       (i << PCF50606_PWMC1_CLK_SHIFT));
++              }
++      }
++      return count;
++}
++
++static DEVICE_ATTR(pwm_clk, S_IRUGO | S_IWUSR, show_pwm_clk, set_pwm_clk);
++
++static int pcf50606bl_get_intensity(struct backlight_device *bd)
++{
++      struct pcf50606_data *pcf = bl_get_data(bd);
++      int intensity = reg_read(pcf, PCF50606_REG_PWMC1);
++      intensity = (intensity >> PCF50606_PWMC1_DC_SHIFT);
++
++      return intensity & 0xf;
++}
++
++static int pcf50606bl_set_intensity(struct backlight_device *bd)
++{
++      struct pcf50606_data *pcf = bl_get_data(bd);
++      int intensity = bd->props.brightness;
++
++      if (bd->props.power != FB_BLANK_UNBLANK)
++              intensity = 0;
++      if (bd->props.fb_blank != FB_BLANK_UNBLANK)
++              intensity = 0;
++
++      return reg_set_bit_mask(pcf, PCF50606_REG_PWMC1, 0x1e,
++                              (intensity << PCF50606_PWMC1_DC_SHIFT));
++}
++
++static struct backlight_ops pcf50606bl_ops = {
++      .get_brightness = pcf50606bl_get_intensity,
++      .update_status  = pcf50606bl_set_intensity,
++};
++
++/***********************************************************************
++ * Driver initialization
++ ***********************************************************************/
++
++#ifdef CONFIG_MACH_NEO1973_GTA01
++/* We currently place those platform devices here to make sure the device
++ * suspend/resume order is correct */
++static struct platform_device gta01_pm_gps_dev = {
++      .name           = "neo1973-pm-gps",
++};
++
++static struct platform_device gta01_pm_bt_dev = {
++      .name           = "neo1973-pm-bt",
++};
++#endif
++
++static struct attribute *pcf_sysfs_entries[16] = {
++      &dev_attr_voltage_dcd.attr,
++      &dev_attr_voltage_dcde.attr,
++      &dev_attr_voltage_dcud.attr,
++      &dev_attr_voltage_d1reg.attr,
++      &dev_attr_voltage_d2reg.attr,
++      &dev_attr_voltage_d3reg.attr,
++      &dev_attr_voltage_lpreg.attr,
++      &dev_attr_voltage_ioreg.attr,
++      NULL
++};
++
++static struct attribute_group pcf_attr_group = {
++      .name   = NULL,                 /* put in device directory */
++      .attrs  = pcf_sysfs_entries,
++};
++
++static void populate_sysfs_group(struct pcf50606_data *pcf)
++{
++      int i = 0;
++      struct attribute **attr;
++
++      for (attr = pcf_sysfs_entries; *attr; attr++)
++              i++;
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_MBC) {
++              pcf_sysfs_entries[i++] = &dev_attr_chgstate.attr;
++              pcf_sysfs_entries[i++] = &dev_attr_chgmode.attr;
++      }
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_CHGCUR)
++              pcf_sysfs_entries[i++] = &dev_attr_chgcur.attr;
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_BATVOLT)
++              pcf_sysfs_entries[i++] = &dev_attr_battvolt.attr;
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_BATTEMP)
++              pcf_sysfs_entries[i++] = &dev_attr_battemp.attr;
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_PWM) {
++              pcf_sysfs_entries[i++] = &dev_attr_pwm_dc.attr;
++              pcf_sysfs_entries[i++] = &dev_attr_pwm_clk.attr;
++      }
++}
++
++static int pcf50606_detect(struct i2c_adapter *adapter, int address, int kind)
++{
++      struct i2c_client *new_client;
++      struct pcf50606_data *data;
++      int err = 0;
++      int irq;
++
++      if (!pcf50606_pdev) {
++              printk(KERN_ERR "pcf50606: driver needs a platform_device!\n");
++              return -EIO;
++      }
++
++      irq = platform_get_irq(pcf50606_pdev, 0);
++      if (irq < 0) {
++              dev_err(&pcf50606_pdev->dev, "no irq in platform resources!\n");
++              return -EIO;
++      }
++
++      /* At the moment, we only support one PCF50606 in a system */
++      if (pcf50606_global) {
++              dev_err(&pcf50606_pdev->dev,
++                      "currently only one chip supported\n");
++              return -EBUSY;
++      }
++
++      data = kzalloc(sizeof(*data), GFP_KERNEL);
++      if (!data)
++              return -ENOMEM;
++
++      mutex_init(&data->lock);
++      mutex_init(&data->working_lock);
++      INIT_WORK(&data->work, pcf50606_work);
++      data->irq = irq;
++      data->working = 0;
++      data->onkey_seconds = -1;
++      data->pdata = pcf50606_pdev->dev.platform_data;
++
++      new_client = &data->client;
++      i2c_set_clientdata(new_client, data);
++      new_client->addr = address;
++      new_client->adapter = adapter;
++      new_client->driver = &pcf50606_driver;
++      new_client->flags = 0;
++      strlcpy(new_client->name, "pcf50606", I2C_NAME_SIZE);
++
++      /* now we try to detect the chip */
++
++      /* register with i2c core */
++      err = i2c_attach_client(new_client);
++      if (err) {
++              dev_err(&new_client->dev,
++                      "error during i2c_attach_client()\n");
++              goto exit_free;
++      }
++
++      populate_sysfs_group(data);
++
++      err = sysfs_create_group(&new_client->dev.kobj, &pcf_attr_group);
++      if (err) {
++              dev_err(&new_client->dev, "error creating sysfs group\n");
++              goto exit_detach;
++      }
++
++      /* create virtual charger 'device' */
++
++      /* input device registration */
++      data->input_dev = input_allocate_device();
++      if (!data->input_dev)
++              goto exit_sysfs;
++
++      data->input_dev->name = "FIC Neo1973 PMU events";
++      data->input_dev->phys = "I2C";
++      data->input_dev->id.bustype = BUS_I2C;
++      data->input_dev->cdev.dev = &new_client->dev;
++
++      data->input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_PWR);
++      set_bit(KEY_POWER, data->input_dev->keybit);
++      set_bit(KEY_POWER2, data->input_dev->keybit);
++      set_bit(KEY_BATTERY, data->input_dev->keybit);
++
++      err = input_register_device(data->input_dev);
++      if (err)
++              goto exit_sysfs;
++
++      /* register power off handler with core power management */
++      pm_power_off = &pcf50606_go_standby;
++
++      /* configure interrupt mask */
++      reg_write(data, PCF50606_REG_INT1M, PCF50606_INT1_SECOND);
++      reg_write(data, PCF50606_REG_INT2M, 0x00);
++      reg_write(data, PCF50606_REG_INT3M, PCF50606_INT3_TSCPRES);
++
++      err = request_irq(irq, pcf50606_irq, IRQF_TRIGGER_FALLING,
++                        "pcf50606", data);
++      if (err < 0)
++              goto exit_input;
++
++      if (enable_irq_wake(irq) < 0)
++              dev_err(&new_client->dev, "IRQ %u cannot be enabled as wake-up"
++                      "source in this hardware revision!", irq);
++
++      pcf50606_global = data;
++
++      if (data->pdata->used_features & PCF50606_FEAT_RTC) {
++              data->rtc = rtc_device_register("pcf50606", &new_client->dev,
++                                              &pcf50606_rtc_ops, THIS_MODULE);
++              if (IS_ERR(data->rtc)) {
++                      err = PTR_ERR(data->rtc);
++                      goto exit_irq;
++              }
++      }
++
++      if (data->pdata->used_features & PCF50606_FEAT_WDT) {
++              err = misc_register(&pcf50606_wdt_miscdev);
++              if (err) {
++                      dev_err(&new_client->dev, "cannot register miscdev on "
++                             "minor=%d (%d)\n", WATCHDOG_MINOR, err);
++                      goto exit_rtc;
++              }
++      }
++
++      if (data->pdata->used_features & PCF50606_FEAT_PWM) {
++              /* enable PWM controller */
++              reg_set_bit_mask(data, PCF50606_REG_PWMC1,
++                               PCF50606_PWMC1_ACTSET,
++                               PCF50606_PWMC1_ACTSET);
++      }
++
++      if (data->pdata->used_features & PCF50606_FEAT_PWM_BL) {
++              data->backlight = backlight_device_register("pcf50606-bl",
++                                                          &new_client->dev,
++                                                          data,
++                                                          &pcf50606bl_ops);
++              if (!data->backlight)
++                      goto exit_misc;
++              data->backlight->props.max_brightness = 16;
++              data->backlight->props.power = FB_BLANK_UNBLANK;
++              data->backlight->props.brightness =
++                                      data->pdata->init_brightness;
++              backlight_update_status(data->backlight);
++      }
++
++      apm_get_power_status = pcf50606_get_power_status;
++
++#ifdef CONFIG_MACH_NEO1973_GTA01
++      if (machine_is_neo1973_gta01()) {
++              gta01_pm_gps_dev.dev.parent = &new_client->dev;
++              switch (system_rev) {
++              case GTA01Bv2_SYSTEM_REV:
++              case GTA01Bv3_SYSTEM_REV:
++              case GTA01Bv4_SYSTEM_REV:
++                      gta01_pm_bt_dev.dev.parent = &new_client->dev;
++                      platform_device_register(&gta01_pm_bt_dev);
++                      break;
++              }
++              platform_device_register(&gta01_pm_gps_dev);
++              /* a link for gllin compatibility */
++              err = sysfs_create_link(&platform_bus_type.devices.kobj,
++                  &gta01_pm_gps_dev.dev.kobj, "gta01-pm-gps.0");
++              if (err)
++                      printk(KERN_ERR
++                          "sysfs_create_link (gta01-pm-gps.0): %d\n", err);
++      }
++#endif
++
++      if (data->pdata->used_features & PCF50606_FEAT_ACD)
++              reg_set_bit_mask(data, PCF50606_REG_ACDC1,
++                               PCF50606_ACDC1_ACDAPE, PCF50606_ACDC1_ACDAPE);
++      else
++              reg_clear_bits(data, PCF50606_REG_ACDC1,
++                             PCF50606_ACDC1_ACDAPE);
++
++      return 0;
++
++exit_misc:
++      if (data->pdata->used_features & PCF50606_FEAT_WDT)
++              misc_deregister(&pcf50606_wdt_miscdev);
++exit_rtc:
++      if (data->pdata->used_features & PCF50606_FEAT_RTC)
++              rtc_device_unregister(pcf50606_global->rtc);
++exit_irq:
++      free_irq(pcf50606_global->irq, pcf50606_global);
++      pcf50606_global = NULL;
++exit_input:
++      pm_power_off = NULL;
++      input_unregister_device(data->input_dev);
++exit_sysfs:
++      sysfs_remove_group(&new_client->dev.kobj, &pcf_attr_group);
++exit_detach:
++      i2c_detach_client(new_client);
++exit_free:
++      kfree(data);
++      return err;
++}
++
++static int pcf50606_attach_adapter(struct i2c_adapter *adapter)
++{
++      return i2c_probe(adapter, &addr_data, &pcf50606_detect);
++}
++
++static int pcf50606_detach_client(struct i2c_client *client)
++{
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++
++      apm_get_power_status = NULL;
++      input_unregister_device(pcf->input_dev);
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_PWM_BL)
++              backlight_device_unregister(pcf->backlight);
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_WDT)
++              misc_deregister(&pcf50606_wdt_miscdev);
++
++      if (pcf->pdata->used_features & PCF50606_FEAT_RTC)
++              rtc_device_unregister(pcf->rtc);
++
++      free_irq(pcf->irq, pcf);
++
++      sysfs_remove_group(&client->dev.kobj, &pcf_attr_group);
++
++      pm_power_off = NULL;
++
++      kfree(pcf);
++
++      return 0;
++}
++
++#ifdef CONFIG_PM
++#define INT1M_RESUMERS        (PCF50606_INT1_ALARM | \
++                       PCF50606_INT1_ONKEYF | \
++                       PCF50606_INT1_EXTONR)
++#define INT2M_RESUMERS        (PCF50606_INT2_CHGWD10S | \
++                       PCF50606_INT2_CHGPROT | \
++                       PCF50606_INT2_CHGERR)
++#define INT3M_RESUMERS        (PCF50606_INT3_LOWBAT | \
++                       PCF50606_INT3_HIGHTMP | \
++                       PCF50606_INT3_ACDINS)
++static int pcf50606_suspend(struct device *dev, pm_message_t state)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++      int i;
++
++      /* The general idea is to power down all unused power supplies,
++       * and then mask all PCF50606 interrup sources but EXTONR, ONKEYF
++       * and ALARM */
++
++      mutex_lock(&pcf->lock);
++
++      /* Save all registers that don't "survive" standby state */
++      pcf->standby_regs.dcdc1 = __reg_read(pcf, PCF50606_REG_DCDC1);
++      pcf->standby_regs.dcdc2 = __reg_read(pcf, PCF50606_REG_DCDC2);
++      pcf->standby_regs.dcdec1 = __reg_read(pcf, PCF50606_REG_DCDEC1);
++      pcf->standby_regs.dcudc1 = __reg_read(pcf, PCF50606_REG_DCUDC1);
++      pcf->standby_regs.ioregc = __reg_read(pcf, PCF50606_REG_IOREGC);
++      pcf->standby_regs.d1regc1 = __reg_read(pcf, PCF50606_REG_D1REGC1);
++      pcf->standby_regs.d2regc1 = __reg_read(pcf, PCF50606_REG_D2REGC1);
++      pcf->standby_regs.d3regc1 = __reg_read(pcf, PCF50606_REG_D3REGC1);
++      pcf->standby_regs.lpregc1 = __reg_read(pcf, PCF50606_REG_LPREGC1);
++      pcf->standby_regs.adcc1 = __reg_read(pcf, PCF50606_REG_ADCC1);
++      pcf->standby_regs.adcc2 = __reg_read(pcf, PCF50606_REG_ADCC2);
++      pcf->standby_regs.pwmc1 = __reg_read(pcf, PCF50606_REG_PWMC1);
++
++      /* switch off power supplies that are not needed during suspend */
++      for (i = 0; i < __NUM_PCF50606_REGULATORS; i++) {
++              if (!(pcf->pdata->rails[i].flags & PMU_VRAIL_F_SUSPEND_ON)) {
++                      u_int8_t tmp;
++
++                      /* IOREG powers the I@C interface so we cannot switch
++                       * it off */
++                      if (i == PCF50606_REGULATOR_IOREG)
++                              continue;
++
++                      dev_dbg(dev, "disabling pcf50606 regulator %u\n", i);
++                      /* we cannot use pcf50606_onoff_set() because we're
++                       * already under the mutex */
++                      tmp = __reg_read(pcf, regulator_registers[i]);
++                      tmp &= 0x1f;
++                      __reg_write(pcf, regulator_registers[i], tmp);
++              }
++      }
++
++      pcf->standby_regs.int1m = __reg_read(pcf, PCF50606_REG_INT1M);
++      pcf->standby_regs.int2m = __reg_read(pcf, PCF50606_REG_INT2M);
++      pcf->standby_regs.int3m = __reg_read(pcf, PCF50606_REG_INT3M);
++      __reg_write(pcf, PCF50606_REG_INT1M, ~INT1M_RESUMERS & 0xff);
++      __reg_write(pcf, PCF50606_REG_INT2M, ~INT2M_RESUMERS & 0xff);
++      __reg_write(pcf, PCF50606_REG_INT3M, ~INT3M_RESUMERS & 0xff);
++
++      mutex_unlock(&pcf->lock);
++
++      return 0;
++}
++
++static int pcf50606_resume(struct device *dev)
++{
++      struct i2c_client *client = to_i2c_client(dev);
++      struct pcf50606_data *pcf = i2c_get_clientdata(client);
++
++      mutex_lock(&pcf->lock);
++
++      /* Resume all saved registers that don't "survive" standby state */
++      __reg_write(pcf, PCF50606_REG_INT1M, pcf->standby_regs.int1m);
++      __reg_write(pcf, PCF50606_REG_INT2M, pcf->standby_regs.int2m);
++      __reg_write(pcf, PCF50606_REG_INT3M, pcf->standby_regs.int3m);
++
++      __reg_write(pcf, PCF50606_REG_DCDC1, pcf->standby_regs.dcdc1);
++      __reg_write(pcf, PCF50606_REG_DCDC2, pcf->standby_regs.dcdc2);
++      __reg_write(pcf, PCF50606_REG_DCDEC1, pcf->standby_regs.dcdec1);
++      __reg_write(pcf, PCF50606_REG_DCUDC1, pcf->standby_regs.dcudc1);
++      __reg_write(pcf, PCF50606_REG_IOREGC, pcf->standby_regs.ioregc);
++      __reg_write(pcf, PCF50606_REG_D1REGC1, pcf->standby_regs.d1regc1);
++      __reg_write(pcf, PCF50606_REG_D2REGC1, pcf->standby_regs.d2regc1);
++      __reg_write(pcf, PCF50606_REG_D3REGC1, pcf->standby_regs.d3regc1);
++      __reg_write(pcf, PCF50606_REG_LPREGC1, pcf->standby_regs.lpregc1);
++      __reg_write(pcf, PCF50606_REG_ADCC1, pcf->standby_regs.adcc1);
++      __reg_write(pcf, PCF50606_REG_ADCC2, pcf->standby_regs.adcc2);
++      __reg_write(pcf, PCF50606_REG_PWMC1, pcf->standby_regs.pwmc1);
++
++      mutex_unlock(&pcf->lock);
++
++      return 0;
++}
++#else
++#define pcf50606_suspend NULL
++#define pcf50606_resume NULL
++#endif
++
++static struct i2c_driver pcf50606_driver = {
++      .driver = {
++              .name    = "pcf50606",
++              .suspend = pcf50606_suspend,
++              .resume  = pcf50606_resume,
++      },
++      .id             = I2C_DRIVERID_PCF50606,
++      .attach_adapter = pcf50606_attach_adapter,
++      .detach_client  = pcf50606_detach_client,
++};
++
++/* platform driver, since i2c devices don't have platform_data */
++static int __init pcf50606_plat_probe(struct platform_device *pdev)
++{
++      struct pcf50606_platform_data *pdata = pdev->dev.platform_data;
++
++      if (!pdata)
++              return -ENODEV;
++
++      pcf50606_pdev = pdev;
++
++      return 0;
++}
++
++static int pcf50606_plat_remove(struct platform_device *pdev)
++{
++      return 0;
++}
++
++static struct platform_driver pcf50606_plat_driver = {
++      .probe  = pcf50606_plat_probe,
++      .remove = pcf50606_plat_remove,
++      .driver = {
++              .owner  = THIS_MODULE,
++              .name   = "pcf50606",
++      },
++};
++
++static int __init pcf50606_init(void)
++{
++      int rc;
++
++      rc = platform_driver_register(&pcf50606_plat_driver);
++      if (!rc)
++              rc = i2c_add_driver(&pcf50606_driver);
++
++      return rc;
++}
++
++static void pcf50606_exit(void)
++{
++      i2c_del_driver(&pcf50606_driver);
++      platform_driver_unregister(&pcf50606_plat_driver);
++}
++
++MODULE_DESCRIPTION("I2C chip driver for NXP PCF50606 power management unit");
++MODULE_AUTHOR("Harald Welte <laforge@openmoko.org>");
++MODULE_LICENSE("GPL");
++
++module_init(pcf50606_init);
++module_exit(pcf50606_exit);
+diff --git a/drivers/i2c/chips/pcf50606.h b/drivers/i2c/chips/pcf50606.h
+new file mode 100644
+index 0000000..15b350f
+--- /dev/null
++++ b/drivers/i2c/chips/pcf50606.h
+@@ -0,0 +1,302 @@
++#ifndef _PCF50606_H
++#define _PCF50606_H
++
++/* Philips PCF50606 Power Managemnt Unit (PMU) driver
++ * (C) 2006-2007 by OpenMoko, Inc.
++ * Author: Harald Welte <laforge@openmoko.org>
++ *
++ */
++
++enum pfc50606_regs {
++      PCF50606_REG_ID         = 0x00,
++      PCF50606_REG_OOCS       = 0x01,
++      PCF50606_REG_INT1       = 0x02, /* Interrupt Status */
++      PCF50606_REG_INT2       = 0x03, /* Interrupt Status */
++      PCF50606_REG_INT3       = 0x04, /* Interrupt Status */
++      PCF50606_REG_INT1M      = 0x05, /* Interrupt Mask */
++      PCF50606_REG_INT2M      = 0x06, /* Interrupt Mask */
++      PCF50606_REG_INT3M      = 0x07, /* Interrupt Mask */
++      PCF50606_REG_OOCC1      = 0x08,
++      PCF50606_REG_OOCC2      = 0x09,
++      PCF50606_REG_RTCSC      = 0x0a, /* Second */
++      PCF50606_REG_RTCMN      = 0x0b, /* Minute */
++      PCF50606_REG_RTCHR      = 0x0c, /* Hour */
++      PCF50606_REG_RTCWD      = 0x0d, /* Weekday */
++      PCF50606_REG_RTCDT      = 0x0e, /* Day */
++      PCF50606_REG_RTCMT      = 0x0f, /* Month */
++      PCF50606_REG_RTCYR      = 0x10, /* Year */
++      PCF50606_REG_RTCSCA     = 0x11, /* Alarm Second */
++      PCF50606_REG_RTCMNA     = 0x12, /* Alarm Minute */
++      PCF50606_REG_RTCHRA     = 0x13, /* Alarm Hour */
++      PCF50606_REG_RTCWDA     = 0x14, /* Alarm Weekday */
++      PCF50606_REG_RTCDTA     = 0x15, /* Alarm Day */
++      PCF50606_REG_RTCMTA     = 0x16, /* Alarm Month */
++      PCF50606_REG_RTCYRA     = 0x17, /* Alarm Year */
++      PCF50606_REG_PSSC       = 0x18, /* Power sequencing */
++      PCF50606_REG_PWROKM     = 0x19, /* PWROK mask */
++      PCF50606_REG_PWROKS     = 0x1a, /* PWROK status */
++      PCF50606_REG_DCDC1      = 0x1b,
++      PCF50606_REG_DCDC2      = 0x1c,
++      PCF50606_REG_DCDC3      = 0x1d,
++      PCF50606_REG_DCDC4      = 0x1e,
++      PCF50606_REG_DCDEC1     = 0x1f,
++      PCF50606_REG_DCDEC2     = 0x20,
++      PCF50606_REG_DCUDC1     = 0x21,
++      PCF50606_REG_DCUDC2     = 0x22,
++      PCF50606_REG_IOREGC     = 0x23,
++      PCF50606_REG_D1REGC1    = 0x24,
++      PCF50606_REG_D2REGC1    = 0x25,
++      PCF50606_REG_D3REGC1    = 0x26,
++      PCF50606_REG_LPREGC1    = 0x27,
++      PCF50606_REG_LPREGC2    = 0x28,
++      PCF50606_REG_MBCC1      = 0x29,
++      PCF50606_REG_MBCC2      = 0x2a,
++      PCF50606_REG_MBCC3      = 0x2b,
++      PCF50606_REG_MBCS1      = 0x2c,
++      PCF50606_REG_BBCC       = 0x2d,
++      PCF50606_REG_ADCC1      = 0x2e,
++      PCF50606_REG_ADCC2      = 0x2f,
++      PCF50606_REG_ADCS1      = 0x30,
++      PCF50606_REG_ADCS2      = 0x31,
++      PCF50606_REG_ADCS3      = 0x32,
++      PCF50606_REG_ACDC1      = 0x33,
++      PCF50606_REG_BVMC       = 0x34,
++      PCF50606_REG_PWMC1      = 0x35,
++      PCF50606_REG_LEDC1      = 0x36,
++      PCF50606_REG_LEDC2      = 0x37,
++      PCF50606_REG_GPOC1      = 0x38,
++      PCF50606_REG_GPOC2      = 0x39,
++      PCF50606_REG_GPOC3      = 0x3a,
++      PCF50606_REG_GPOC4      = 0x3b,
++      PCF50606_REG_GPOC5      = 0x3c,
++      __NUM_PCF50606_REGS
++};
++
++enum pcf50606_reg_oocs {
++      PFC50606_OOCS_ONKEY     = 0x01,
++      PCF50606_OOCS_EXTON     = 0x02,
++      PCF50606_OOCS_PWROKRST  = 0x04,
++      PCF50606_OOCS_BATOK     = 0x08,
++      PCF50606_OOCS_BACKOK    = 0x10,
++      PCF50606_OOCS_CHGOK     = 0x20,
++      PCF50606_OOCS_TEMPOK    = 0x40,
++      PCF50606_OOCS_WDTEXP    = 0x80,
++};
++
++enum pcf50606_reg_oocc1 {
++      PCF50606_OOCC1_GOSTDBY  = 0x01,
++      PCF50606_OOCC1_TOTRST   = 0x02,
++      PCF50606_OOCC1_CLK32ON  = 0x04,
++      PCF50606_OOCC1_WDTRST   = 0x08,
++      PCF50606_OOCC1_RTCWAK   = 0x10,
++      PCF50606_OOCC1_CHGWAK   = 0x20,
++      PCF50606_OOCC1_EXTONWAK_HIGH    = 0x40,
++      PCF50606_OOCC1_EXTONWAK_LOW     = 0x80,
++};
++
++enum pcf50606_reg_oocc2 {
++      PCF50606_OOCC2_ONKEYDB_NONE     = 0x00,
++      PCF50606_OOCC2_ONKEYDB_14ms     = 0x01,
++      PCF50606_OOCC2_ONKEYDB_62ms     = 0x02,
++      PCF50606_OOCC2_ONKEYDB_500ms    = 0x03,
++      PCF50606_OOCC2_EXTONDB_NONE     = 0x00,
++      PCF50606_OOCC2_EXTONDB_14ms     = 0x04,
++      PCF50606_OOCC2_EXTONDB_62ms     = 0x08,
++      PCF50606_OOCC2_EXTONDB_500ms    = 0x0c,
++};
++
++enum pcf50606_reg_int1 {
++      PCF50606_INT1_ONKEYR    = 0x01, /* ONKEY rising edge */
++      PCF50606_INT1_ONKEYF    = 0x02, /* ONKEY falling edge */
++      PCF50606_INT1_ONKEY1S   = 0x04, /* OMKEY at least 1sec low */
++      PCF50606_INT1_EXTONR    = 0x08, /* EXTON rising edge */
++      PCF50606_INT1_EXTONF    = 0x10, /* EXTON falling edge */
++      PCF50606_INT1_SECOND    = 0x40, /* RTC periodic second interrupt */
++      PCF50606_INT1_ALARM     = 0x80, /* RTC alarm time is reached */
++};
++
++enum pcf50606_reg_int2 {
++      PCF50606_INT2_CHGINS    = 0x01, /* Charger inserted */
++      PCF50606_INT2_CHGRM     = 0x02, /* Charger removed */
++      PCF50606_INT2_CHGFOK    = 0x04, /* Fast charging OK */
++      PCF50606_INT2_CHGERR    = 0x08, /* Error in charging mode */
++      PCF50606_INT2_CHGFRDY   = 0x10, /* Fast charge completed */
++      PCF50606_INT2_CHGPROT   = 0x20, /* Charging protection interrupt */
++      PCF50606_INT2_CHGWD10S  = 0x40, /* Charger watchdig expires in 10s */
++      PCF50606_INT2_CHGWDEXP  = 0x80, /* Charger watchdog expires */
++};
++
++enum pcf50606_reg_int3 {
++      PCF50606_INT3_ADCRDY    = 0x01, /* ADC conversion finished */
++      PCF50606_INT3_ACDINS    = 0x02, /* Accessory inserted */
++      PCF50606_INT3_ACDREM    = 0x04, /* Accessory removed */
++      PCF50606_INT3_TSCPRES   = 0x08, /* Touch screen pressed */
++      PCF50606_INT3_LOWBAT    = 0x40, /* Low battery voltage */
++      PCF50606_INT3_HIGHTMP   = 0x80, /* High temperature */
++};
++
++/* used by PSSC, PWROKM, PWROKS, */
++enum pcf50606_regu {
++      PCF50606_REGU_DCD       = 0x01, /* DCD in phase 2 */
++      PCF50606_REGU_DCDE      = 0x02, /* DCDE in phase 2 */
++      PCF50606_REGU_DCUD      = 0x04, /* DCDU in phase 2 */
++      PCF50606_REGU_IO        = 0x08, /* IO in phase 2 */
++      PCF50606_REGU_D1        = 0x10, /* D1 in phase 2 */
++      PCF50606_REGU_D2        = 0x20, /* D2 in phase 2 */
++      PCF50606_REGU_D3        = 0x40, /* D3 in phase 2 */
++      PCF50606_REGU_LP        = 0x80, /* LP in phase 2 */
++};
<