purge out config and patches for 2.6.29 as 2.6.30.1 is now default and stable
authorMirko Vogt <mirko@openwrt.org>
Sun, 5 Jul 2009 11:37:52 +0000 (11:37 +0000)
committerMirko Vogt <mirko@openwrt.org>
Sun, 5 Jul 2009 11:37:52 +0000 (11:37 +0000)
SVN-Revision: 16685

target/linux/s3c24xx/config-2.6.29 [deleted file]
target/linux/s3c24xx/patches-2.6.29/000-downgrade-to-rc3.patch [deleted file]
target/linux/s3c24xx/patches-2.6.29/001-merge-openmoko.patch [deleted file]
target/linux/s3c24xx/patches-2.6.29/020-rename-serialdevs.patch [deleted file]
target/linux/s3c24xx/patches-2.6.29/050-dont-override-logo-with-early-printks.patch [deleted file]
target/linux/s3c24xx/patches-2.6.29/051-add-openwrt-logo.patch [deleted file]
target/linux/s3c24xx/patches-2.6.29/060-patch-ar6000.patch [deleted file]

diff --git a/target/linux/s3c24xx/config-2.6.29 b/target/linux/s3c24xx/config-2.6.29
deleted file mode 100644 (file)
index 98e3600..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-# CONFIG_AEABI is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_APM_EMULATION=y
-CONFIG_APM_POWER=y
-CONFIG_AR6000_WLAN=y
-# CONFIG_AR6000_WLAN_DEBUG is not set
-# CONFIG_AR6000_WLAN_RESET is not set
-# CONFIG_ARCH_BAST is not set
-CONFIG_ARCH_FLATMEM_HAS_HOLES=y
-# CONFIG_ARCH_H1940 is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_ARCH_S3C2410=y
-CONFIG_ARCH_S3C2440=y
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-# CONFIG_ARCH_SMDK2410 is not set
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM=y
-CONFIG_ARM_THUMB=y
-# CONFIG_ARPD is not set
-CONFIG_ASHMEM=y
-CONFIG_ATAGS_PROC=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-CONFIG_BACKLIGHT_GTA01=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_BACKLIGHT_PWM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_BATTERY_BQ27000_HDQ=y
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_DS2760 is not set
-CONFIG_BATTERY_GTA01=y
-CONFIG_BITREVERSE=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BRIDGE_NETFILTER=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_CHARGER_PCF50606=y
-CONFIG_CHARGER_PCF50633=y
-CONFIG_CMDLINE="unused -- bootloader passes ATAG list"
-CONFIG_COMPAT_BRK=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-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_WRITETHROUGH is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_LLSERIAL_S3C2410=y
-CONFIG_CPU_LLSERIAL_S3C2440=y
-CONFIG_CPU_PABRT_NOIFAR=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_CRC16=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC_T10DIF=y
-# CONFIG_CRYPTO_AEAD is not set
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_ANSI_CPRNG=y
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_SHA1=y
-# CONFIG_DCB is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_DEBUG_S3C_UART=2
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_DISPLAY_JBT6K74=y
-# CONFIG_DISPLAY_L1K002 is not set
-CONFIG_DISPLAY_SUPPORT=y
-CONFIG_DMADEVICES=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_ELF_CORE=y
-# CONFIG_EMBEDDED is not set
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-CONFIG_FB=y
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT 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_FOREIGN_ENDIAN is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MB862XX is not set
-# CONFIG_FB_METRONOME 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_VIRTUAL is not set
-# CONFIG_FIND_IRQ_BLOCKERS is not set
-CONFIG_FIQ=y
-# 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_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_FREEZER=y
-# CONFIG_GENERIC_CLOCKEVENTS is not set
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-# CONFIG_GENERIC_TIME is not set
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVICE=y
-CONFIG_GPIO_SYSFS=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAVE_AOUT=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PWM=y
-CONFIG_HDQ_GPIO_BITBANG=y
-CONFIG_HID=y
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_COMPAT=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_PID=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID_TOPSEED=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_HZ=200
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_S3C2410=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_LIS302DL=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_PCF50606_PMU=y
-CONFIG_INPUT_PCF50633_PMU=y
-CONFIG_INPUT_TOUCHSCREEN=y
-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_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_KALLSYMS=y
-CONFIG_KEXEC=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_NEO1973=y
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_ILI9320 is not set
-CONFIG_LCD_LTV350QV=y
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_LP5521 is not set
-CONFIG_LEDS_NEO1973_GTA02=y
-CONFIG_LEDS_NEO1973_VIBRATOR=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-CONFIG_LOCK_KERNEL=y
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_OPENWRT_CLUT224=y
-CONFIG_LOG_BUF_SHIFT=18
-# CONFIG_MACH_AML_M5900 is not set
-# CONFIG_MACH_ANUBIS is not set
-# CONFIG_MACH_AT2440EVB is not set
-# CONFIG_MACH_JIVE is not set
-# CONFIG_MACH_N30 is not set
-CONFIG_MACH_NEO1973=y
-CONFIG_MACH_NEO1973_GTA01=y
-CONFIG_MACH_NEO1973_GTA02=y
-# CONFIG_MACH_NEXCODER_2440 is not set
-# CONFIG_MACH_OSIRIS is not set
-# CONFIG_MACH_OTOM is not set
-# CONFIG_MACH_QT2410 is not set
-# 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_TCT_HAMMER is not set
-# CONFIG_MACH_VR1000 is not set
-# CONFIG_MACH_VSTMS is not set
-CONFIG_MFD_GLAMO=y
-CONFIG_MFD_GLAMO_FB=y
-# CONFIG_MFD_GLAMO_FB_XGLAMO_WORKAROUND is not set
-CONFIG_MFD_GLAMO_MCI=y
-CONFIG_MFD_GLAMO_SPI_FB=y
-CONFIG_MFD_GLAMO_SPI_GPIO=y
-CONFIG_MFD_PCF50606=y
-CONFIG_MFD_PCF50633=y
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MISC_DEVICES is not set
-CONFIG_MISC_FILESYSTEMS=y
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_S3C=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_S3C=y
-# CONFIG_MMC_SPI is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MOUSE_BCM5974 is not set
-# 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_MTD_ABSENT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_GPIO 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_PHYSMAP=y
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_QINFO_PROBE is not set
-CONFIG_MTD_ROM=y
-CONFIG_NAMESPACES=y
-CONFIG_NEO1973_GTA02_2440=y
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_ETHERNET is not set
-# CONFIG_NET_NS is not set
-# CONFIG_NET_SCH_DRR is not set
-CONFIG_NF_CONNTRACK=y
-CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_MARK is not set
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NO_IOPORT=y
-CONFIG_NR_TTY_DEVICES=6
-# CONFIG_NVRAM is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PCA9632=y
-CONFIG_PCF50606_ADC=y
-CONFIG_PCF50606_GPO=y
-CONFIG_PCF50606_WATCHDOG=y
-CONFIG_PCF50633_ADC=y
-CONFIG_PCF50633_GPIO=y
-# CONFIG_PCI_SYSCALL is not set
-CONFIG_PDA_POWER=y
-CONFIG_PLAT_S3C=y
-CONFIG_PLAT_S3C24XX=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_PREEMPT=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_DEBUG=y
-CONFIG_REGULATOR_PCF50606=y
-CONFIG_REGULATOR_PCF50633=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_DRV_CMOS is not set
-CONFIG_RTC_DRV_PCF50606=y
-CONFIG_RTC_DRV_PCF50633=y
-CONFIG_RTC_DRV_S3C=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=y
-CONFIG_S3C2440_DMA=y
-# CONFIG_S3C24XX_ADC is not set
-CONFIG_S3C24XX_GPIO_EXTRA=0
-CONFIG_S3C24XX_PWM=y
-# CONFIG_S3C_BOOT_ERROR_RESET is not set
-CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
-# CONFIG_S3C_BOOT_WATCHDOG is not set
-CONFIG_S3C_DEV_USB_HOST=y
-CONFIG_S3C_DMA=y
-CONFIG_S3C_GPIO_SPACE=0
-CONFIG_S3C_GPIO_TRACK=y
-CONFIG_S3C_LOWLEVEL_UART_PORT=2
-CONFIG_S3C_PWM=y
-CONFIG_SCSI=y
-# CONFIG_SCSI_LOWLEVEL is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_PROC_FS is not set
-# CONFIG_SDIO_UART is not set
-# CONFIG_SENSORS_PCF50606 is not set
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_S3C2410=y
-CONFIG_SERIAL_S3C2440=y
-CONFIG_SERIAL_SAMSUNG=y
-CONFIG_SERIAL_SAMSUNG_CONSOLE=y
-CONFIG_SERIAL_SAMSUNG_UARTS=3
-CONFIG_SERIO=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SMDK2440_CPU2440=y
-CONFIG_SMDK2440_CPU2442=y
-CONFIG_SND=m
-# CONFIG_SND_ARM is not set
-# CONFIG_SND_DRIVERS is not set
-CONFIG_SND_PCM=m
-CONFIG_SND_S3C24XX_SOC=m
-CONFIG_SND_S3C24XX_SOC_I2S=m
-# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
-CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753=m
-# CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753 is not set
-# CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X is not set
-# CONFIG_SND_S3C64XX_SOC_SMDK6410_WM8731 is not set
-CONFIG_SND_SOC=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_I2C_AND_SPI=m
-CONFIG_SND_SOC_WM8753=m
-CONFIG_SND_TIMER=m
-# CONFIG_SND_USB is not set
-# CONFIG_SND_VERBOSE_PROCFS is not set
-CONFIG_SOUND=m
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-# CONFIG_SPI_GPIO is not set
-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_SQUASHFS is not set
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_TCP_MD5SIG=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-CONFIG_TOUCHSCREEN_FILTER=y
-CONFIG_TOUCHSCREEN_FILTER_GROUP=y
-CONFIG_TOUCHSCREEN_FILTER_LINEAR=y
-CONFIG_TOUCHSCREEN_FILTER_MEAN=y
-CONFIG_TOUCHSCREEN_FILTER_MEDIAN=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_PCAP7200 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-CONFIG_UID16=y
-CONFIG_UIO=y
-CONFIG_UIO_PDRV=y
-# CONFIG_UIO_PDRV_GENIRQ is not set
-# CONFIG_UIO_SERCOS3 is not set
-# CONFIG_UIO_SMX is not set
-CONFIG_UNEVICTABLE_LRU=y
-CONFIG_USB=y
-CONFIG_USB_ACM=y
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_DEVICEFS is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_FILE_STORAGE is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGETFS is not set
-# 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_CI13XXX 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_QE is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_IMX is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-CONFIG_USB_GADGET_S3C2410=y
-# CONFIG_USB_GADGET_S3C_OTGD_HS is not set
-CONFIG_USB_GADGET_SELECTED=y
-CONFIG_USB_GADGET_VBUS_DRAW=500
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_SERIAL is not set
-CONFIG_USB_HID=y
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_MUSB_HDRC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_S3C2410=y
-# CONFIG_USB_S3C2410_DEBUG is not set
-CONFIG_USB_SERIAL=y
-CONFIG_USB_SERIAL_CONSOLE=y
-CONFIG_USB_SERIAL_OPTION=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_ZERO is not set
-# CONFIG_USER_NS is not set
-CONFIG_VECTORS_BASE=0xffff0000
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=y
-# 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_WIRELESS is not set
-# CONFIG_WLAN_80211 is not set
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/s3c24xx/patches-2.6.29/000-downgrade-to-rc3.patch b/target/linux/s3c24xx/patches-2.6.29/000-downgrade-to-rc3.patch
deleted file mode 100644 (file)
index 4ad0fe6..0000000
+++ /dev/null
@@ -1,121447 +0,0 @@
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/include/asm/bug.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h
---- linux-2.6.29.owrt/arch/alpha/include/asm/bug.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h 2009-05-10 23:48:27.000000000 +0200
-@@ -8,12 +8,17 @@
- /* ??? Would be nice to use .gprel32 here, but we can't be sure that the
-    function loaded the GP, so this could fail in modules.  */
--#define BUG() do {                                                    \
--      __asm__ __volatile__(                                           \
--              "call_pal %0  # bugchk\n\t"                             \
--              ".long %1\n\t.8byte %2"                                 \
--              : : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__));     \
--      for ( ; ; ); } while (0)
-+static inline void ATTRIB_NORET __BUG(const char *file, int line)
-+{
-+      __asm__ __volatile__(
-+              "call_pal %0  # bugchk\n\t"
-+              ".long %1\n\t.8byte %2"
-+                     : : "i" (PAL_bugchk), "i"(line), "i"(file));
-+      for ( ; ; )
-+              ;
-+}
-+
-+#define BUG() __BUG(__FILE__, __LINE__)
- #define HAVE_ARCH_BUG
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h
---- linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 23:48:27.000000000 +0200
-@@ -29,8 +29,6 @@
- #else /* no PCI - no IOMMU. */
--#include <asm/io.h>   /* for virt_to_phys() */
--
- struct scatterlist;
- void *dma_alloc_coherent(struct device *dev, size_t size,
-                        dma_addr_t *dma_handle, gfp_t gfp);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/Kconfig linux-2.6.29-rc3.owrt/arch/alpha/Kconfig
---- linux-2.6.29.owrt/arch/alpha/Kconfig       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/Kconfig   2009-05-10 23:48:27.000000000 +0200
-@@ -8,7 +8,6 @@
-       select HAVE_AOUT
-       select HAVE_IDE
-       select HAVE_OPROFILE
--      select HAVE_SYSCALL_WRAPPERS
-       help
-         The Alpha is a 64-bit general-purpose processor designed and
-         marketed by the Digital Equipment Corporation of blessed memory,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/entry.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S
---- linux-2.6.29.owrt/arch/alpha/kernel/entry.S        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S    2009-05-10 23:48:27.000000000 +0200
-@@ -933,7 +933,7 @@
- osf_sigprocmask:
-       .prologue 0
-       mov     $sp, $18
--      jmp     $31, sys_osf_sigprocmask
-+      jmp     $31, do_osf_sigprocmask
- .end osf_sigprocmask
-       .align  4
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c
---- linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c  2009-05-10 23:48:27.000000000 +0200
-@@ -54,7 +54,8 @@
-  * identical to OSF as we don't return 0 on success, but doing otherwise
-  * would require changes to libc.  Hopefully this is good enough.
-  */
--SYSCALL_DEFINE1(osf_brk, unsigned long, brk)
-+asmlinkage unsigned long
-+osf_brk(unsigned long brk)
- {
-       unsigned long retval = sys_brk(brk);
-       if (brk && brk != retval)
-@@ -65,9 +66,9 @@
- /*
-  * This is pure guess-work..
-  */
--SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start,
--              unsigned long, text_len, unsigned long, bss_start,
--              unsigned long, bss_len)
-+asmlinkage int
-+osf_set_program_attributes(unsigned long text_start, unsigned long text_len,
-+                         unsigned long bss_start, unsigned long bss_len)
- {
-       struct mm_struct *mm;
-@@ -145,9 +146,9 @@
-       return -EFAULT;
- }
--SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd,
--              struct osf_dirent __user *, dirent, unsigned int, count,
--              long __user *, basep)
-+asmlinkage int
-+osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent,
-+                unsigned int count, long __user *basep)
- {
-       int error;
-       struct file *file;
-@@ -176,9 +177,9 @@
- #undef NAME_OFFSET
--SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len,
--              unsigned long, prot, unsigned long, flags, unsigned long, fd,
--              unsigned long, off)
-+asmlinkage unsigned long
-+osf_mmap(unsigned long addr, unsigned long len, unsigned long prot,
-+       unsigned long flags, unsigned long fd, unsigned long off)
- {
-       struct file *file = NULL;
-       unsigned long ret = -EBADF;
-@@ -253,8 +254,8 @@
-       return error;   
- }
--SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
--              struct osf_statfs __user *, buffer, unsigned long, bufsiz)
-+asmlinkage int
-+osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz)
- {
-       struct path path;
-       int retval;
-@@ -267,8 +268,8 @@
-       return retval;
- }
--SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd,
--              struct osf_statfs __user *, buffer, unsigned long, bufsiz)
-+asmlinkage int
-+osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz)
- {
-       struct file *file;
-       int retval;
-@@ -367,8 +368,8 @@
-       return do_mount("", dirname, "proc", flags, NULL);
- }
--SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path,
--              int, flag, void __user *, data)
-+asmlinkage int
-+osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data)
- {
-       int retval = -EINVAL;
-       char *name;
-@@ -398,7 +399,8 @@
-       return retval;
- }
--SYSCALL_DEFINE1(osf_utsname, char __user *, name)
-+asmlinkage int
-+osf_utsname(char __user *name)
- {
-       int error;
-@@ -421,12 +423,14 @@
-       return error;
- }
--SYSCALL_DEFINE0(getpagesize)
-+asmlinkage unsigned long
-+sys_getpagesize(void)
- {
-       return PAGE_SIZE;
- }
--SYSCALL_DEFINE0(getdtablesize)
-+asmlinkage unsigned long
-+sys_getdtablesize(void)
- {
-       return sysctl_nr_open;
- }
-@@ -434,7 +438,8 @@
- /*
-  * For compatibility with OSF/1 only.  Use utsname(2) instead.
-  */
--SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen)
-+asmlinkage int
-+osf_getdomainname(char __user *name, int namelen)
- {
-       unsigned len;
-       int i;
-@@ -522,8 +527,8 @@
-       PL_DEL = 5, PL_FDEL = 6
- };
--SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code,
--              union pl_args __user *, args)
-+asmlinkage long
-+osf_proplist_syscall(enum pl_code code, union pl_args __user *args)
- {
-       long error;
-       int __user *min_buf_size_ptr;
-@@ -562,8 +567,8 @@
-       return error;
- }
--SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss,
--              struct sigstack __user *, uoss)
-+asmlinkage int
-+osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss)
- {
-       unsigned long usp = rdusp();
-       unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size;
-@@ -603,7 +608,8 @@
-       return error;
- }
--SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count)
-+asmlinkage long
-+osf_sysinfo(int command, char __user *buf, long count)
- {
-       char *sysinfo_table[] = {
-               utsname()->sysname,
-@@ -641,8 +647,9 @@
-       return err;
- }
--SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
--              unsigned long, nbytes, int __user *, start, void __user *, arg)
-+asmlinkage unsigned long
-+osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
-+             int __user *start, void __user *arg)
- {
-       unsigned long w;
-       struct percpu_struct *cpu;
-@@ -698,8 +705,9 @@
-       return -EOPNOTSUPP;
- }
--SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
--              unsigned long, nbytes, int __user *, start, void __user *, arg)
-+asmlinkage unsigned long
-+osf_setsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
-+             int __user *start, void __user *arg)
- {
-       switch (op) {
-       case SSI_IEEE_FP_CONTROL: {
-@@ -872,8 +880,8 @@
-       value->tv_sec = jiffies / HZ;
- }
--SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv,
--              struct timezone __user *, tz)
-+asmlinkage int
-+osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
- {
-       if (tv) {
-               struct timeval ktv;
-@@ -888,8 +896,8 @@
-       return 0;
- }
--SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
--              struct timezone __user *, tz)
-+asmlinkage int
-+osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
- {
-       struct timespec kts;
-       struct timezone ktz;
-@@ -908,7 +916,8 @@
-       return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
- }
--SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it)
-+asmlinkage int
-+osf_getitimer(int which, struct itimerval32 __user *it)
- {
-       struct itimerval kit;
-       int error;
-@@ -920,8 +929,8 @@
-       return error;
- }
--SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
--              struct itimerval32 __user *, out)
-+asmlinkage int
-+osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __user *out)
- {
-       struct itimerval kin, kout;
-       int error;
-@@ -943,8 +952,8 @@
- }
--SYSCALL_DEFINE2(osf_utimes, char __user *, filename,
--              struct timeval32 __user *, tvs)
-+asmlinkage int
-+osf_utimes(char __user *filename, struct timeval32 __user *tvs)
- {
-       struct timespec tv[2];
-@@ -970,8 +979,9 @@
- #define MAX_SELECT_SECONDS \
-       ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1)
--SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp,
--              fd_set __user *, exp, struct timeval32 __user *, tvp)
-+asmlinkage int
-+osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
-+         struct timeval32 __user *tvp)
- {
-       struct timespec end_time, *to = NULL;
-       if (tvp) {
-@@ -1016,7 +1026,8 @@
-       long    ru_nivcsw;              /* involuntary " */
- };
--SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru)
-+asmlinkage int
-+osf_getrusage(int who, struct rusage32 __user *ru)
- {
-       struct rusage32 r;
-@@ -1042,8 +1053,9 @@
-       return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
- }
--SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
--              struct rusage32 __user *, ur)
-+asmlinkage long
-+osf_wait4(pid_t pid, int __user *ustatus, int options,
-+        struct rusage32 __user *ur)
- {
-       struct rusage r;
-       long ret, err;
-@@ -1089,8 +1101,8 @@
-  * seems to be a timeval pointer, and I suspect the second
-  * one is the time remaining.. Ho humm.. No documentation.
-  */
--SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep,
--              struct timeval32 __user *, remain)
-+asmlinkage int
-+osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remain)
- {
-       struct timeval tmp;
-       unsigned long ticks;
-@@ -1143,7 +1155,8 @@
-       int  :32; int  :32; int  :32; int  :32;
- };
--SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
-+asmlinkage int
-+sys_old_adjtimex(struct timex32 __user *txc_p)
- {
-         struct timex txc;
-       int ret;
-@@ -1254,8 +1267,8 @@
-       return 0;
- }
--SYSCALL_DEFINE3(osf_readv, unsigned long, fd,
--              const struct iovec __user *, vector, unsigned long, count)
-+asmlinkage ssize_t
-+osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long count)
- {
-       if (unlikely(personality(current->personality) == PER_OSF4))
-               if (osf_fix_iov_len(vector, count))
-@@ -1263,8 +1276,8 @@
-       return sys_readv(fd, vector, count);
- }
--SYSCALL_DEFINE3(osf_writev, unsigned long, fd,
--              const struct iovec __user *, vector, unsigned long, count)
-+asmlinkage ssize_t
-+osf_writev(unsigned long fd, const struct iovec __user * vector, unsigned long count)
- {
-       if (unlikely(personality(current->personality) == PER_OSF4))
-               if (osf_fix_iov_len(vector, count))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c
---- linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 23:48:27.000000000 +0200
-@@ -109,8 +109,7 @@
- /* Stubs for the routines in pci_iommu.c: */
- void *
--__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
--                     dma_addr_t *dma_addrp, gfp_t gfp)
-+pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
- {
-       return NULL;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/process.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c
---- linux-2.6.29.owrt/arch/alpha/kernel/process.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c  2009-05-10 23:48:27.000000000 +0200
-@@ -93,8 +93,8 @@
-       if (cpuid != boot_cpuid) {
-               flags |= 0x00040000UL; /* "remain halted" */
-               *pflags = flags;
--              set_cpu_present(cpuid, false);
--              set_cpu_possible(cpuid, false);
-+              cpu_clear(cpuid, cpu_present_map);
-+              cpu_clear(cpuid, cpu_possible_map);
-               halt();
-       }
- #endif
-@@ -120,8 +120,8 @@
- #ifdef CONFIG_SMP
-       /* Wait for the secondaries to halt. */
--      set_cpu_present(boot_cpuid, false);
--      set_cpu_possible(boot_cpuid, false);
-+      cpu_clear(boot_cpuid, cpu_present_map);
-+      cpu_clear(boot_cpuid, cpu_possible_map);
-       while (cpus_weight(cpu_present_map))
-               barrier();
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/signal.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c
---- linux-2.6.29.owrt/arch/alpha/kernel/signal.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c   2009-05-10 23:48:27.000000000 +0200
-@@ -19,7 +19,6 @@
- #include <linux/tty.h>
- #include <linux/binfmts.h>
- #include <linux/bitops.h>
--#include <linux/syscalls.h>
- #include <asm/uaccess.h>
- #include <asm/sigcontext.h>
-@@ -52,8 +51,8 @@
-  * Note that we don't need to acquire the kernel lock for SMP
-  * operation, as all of this is local to this thread.
-  */
--SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask,
--              struct pt_regs *, regs)
-+asmlinkage unsigned long
-+do_osf_sigprocmask(int how, unsigned long newmask, struct pt_regs *regs)
- {
-       unsigned long oldmask = -EINVAL;
-@@ -82,9 +81,9 @@
-       return oldmask;
- }
--SYSCALL_DEFINE3(osf_sigaction, int, sig,
--              const struct osf_sigaction __user *, act,
--              struct osf_sigaction __user *, oact)
-+asmlinkage int 
-+osf_sigaction(int sig, const struct osf_sigaction __user *act,
-+            struct osf_sigaction __user *oact)
- {
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-@@ -113,9 +112,10 @@
-       return ret;
- }
--SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
--              struct sigaction __user *, oact,
--              size_t, sigsetsize, void __user *, restorer)
-+asmlinkage long
-+sys_rt_sigaction(int sig, const struct sigaction __user *act,
-+               struct sigaction __user *oact,
-+               size_t sigsetsize, void __user *restorer)
- {
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/smp.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c
---- linux-2.6.29.owrt/arch/alpha/kernel/smp.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c      2009-05-10 23:48:27.000000000 +0200
-@@ -121,11 +121,10 @@
- {
-       int cpuid = hard_smp_processor_id();
--      if (cpu_online(cpuid)) {
-+      if (cpu_test_and_set(cpuid, cpu_online_map)) {
-               printk("??, cpu 0x%x already present??\n", cpuid);
-               BUG();
-       }
--      set_cpu_online(cpuid, true);
-       /* Turn on machine checks.  */
-       wrmces(7);
-@@ -436,8 +435,8 @@
-                               ((char *)cpubase + i*hwrpb->processor_size);
-                       if ((cpu->flags & 0x1cc) == 0x1cc) {
-                               smp_num_probed++;
--                              set_cpu_possible(i, true);
--                              set_cpu_present(i, true);
-+                              cpu_set(i, cpu_possible_map);
-+                              cpu_set(i, cpu_present_map);
-                               cpu->pal_revision = boot_cpu_palrev;
-                       }
-@@ -470,8 +469,8 @@
-       /* Nothing to do on a UP box, or when told not to.  */
-       if (smp_num_probed == 1 || max_cpus == 0) {
--              init_cpu_possible(cpumask_of(boot_cpuid));
--              init_cpu_present(cpumask_of(boot_cpuid));
-+              cpu_possible_map = cpumask_of_cpu(boot_cpuid);
-+              cpu_present_map = cpumask_of_cpu(boot_cpuid);
-               printk(KERN_INFO "SMP mode deactivated.\n");
-               return;
-       }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/systbls.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S
---- linux-2.6.29.owrt/arch/alpha/kernel/systbls.S      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S  2009-05-10 23:48:27.000000000 +0200
-@@ -17,7 +17,7 @@
-       .quad sys_write
-       .quad alpha_ni_syscall                  /* 5 */
-       .quad sys_close
--      .quad sys_osf_wait4
-+      .quad osf_wait4
-       .quad alpha_ni_syscall
-       .quad sys_link
-       .quad sys_unlink                        /* 10 */
-@@ -27,11 +27,11 @@
-       .quad sys_mknod
-       .quad sys_chmod                         /* 15 */
-       .quad sys_chown
--      .quad sys_osf_brk
-+      .quad osf_brk
-       .quad alpha_ni_syscall
-       .quad sys_lseek
-       .quad sys_getxpid                       /* 20 */
--      .quad sys_osf_mount
-+      .quad osf_mount
-       .quad sys_umount
-       .quad sys_setuid
-       .quad sys_getxuid
-@@ -53,7 +53,7 @@
-       .quad alpha_ni_syscall                  /* 40 */
-       .quad sys_dup
-       .quad sys_alpha_pipe
--      .quad sys_osf_set_program_attributes
-+      .quad osf_set_program_attributes
-       .quad alpha_ni_syscall
-       .quad sys_open                          /* 45 */
-       .quad alpha_ni_syscall
-@@ -81,7 +81,7 @@
-       .quad sys_newlstat
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 70 */
--      .quad sys_osf_mmap
-+      .quad osf_mmap
-       .quad alpha_ni_syscall
-       .quad sys_munmap
-       .quad sys_mprotect
-@@ -94,17 +94,17 @@
-       .quad sys_setgroups                     /* 80 */
-       .quad alpha_ni_syscall
-       .quad sys_setpgid
--      .quad sys_osf_setitimer
-+      .quad osf_setitimer
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 85 */
--      .quad sys_osf_getitimer
-+      .quad osf_getitimer
-       .quad sys_gethostname
-       .quad sys_sethostname
-       .quad sys_getdtablesize
-       .quad sys_dup2                          /* 90 */
-       .quad sys_newfstat
-       .quad sys_fcntl
--      .quad sys_osf_select
-+      .quad osf_select
-       .quad sys_poll
-       .quad sys_fsync                         /* 95 */
-       .quad sys_setpriority
-@@ -123,22 +123,22 @@
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 110 */
-       .quad sys_sigsuspend
--      .quad sys_osf_sigstack
-+      .quad osf_sigstack
-       .quad sys_recvmsg
-       .quad sys_sendmsg
-       .quad alpha_ni_syscall                  /* 115 */
--      .quad sys_osf_gettimeofday
--      .quad sys_osf_getrusage
-+      .quad osf_gettimeofday
-+      .quad osf_getrusage
-       .quad sys_getsockopt
-       .quad alpha_ni_syscall
- #ifdef CONFIG_OSF4_COMPAT
--      .quad sys_osf_readv                     /* 120 */
--      .quad sys_osf_writev
-+      .quad osf_readv                         /* 120 */
-+      .quad osf_writev
- #else
-       .quad sys_readv                         /* 120 */
-       .quad sys_writev
- #endif
--      .quad sys_osf_settimeofday
-+      .quad osf_settimeofday
-       .quad sys_fchown
-       .quad sys_fchmod
-       .quad sys_recvfrom                      /* 125 */
-@@ -154,7 +154,7 @@
-       .quad sys_socketpair                    /* 135 */
-       .quad sys_mkdir
-       .quad sys_rmdir
--      .quad sys_osf_utimes
-+      .quad osf_utimes
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 140 */
-       .quad sys_getpeername
-@@ -172,16 +172,16 @@
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 155 */
--      .quad sys_osf_sigaction
-+      .quad osf_sigaction
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
--      .quad sys_osf_getdirentries
--      .quad sys_osf_statfs                    /* 160 */
--      .quad sys_osf_fstatfs
-+      .quad osf_getdirentries
-+      .quad osf_statfs                        /* 160 */
-+      .quad osf_fstatfs
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
--      .quad sys_osf_getdomainname             /* 165 */
-+      .quad osf_getdomainname                 /* 165 */
-       .quad sys_setdomainname
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-@@ -224,7 +224,7 @@
-       .quad sys_semctl
-       .quad sys_semget                        /* 205 */
-       .quad sys_semop
--      .quad sys_osf_utsname
-+      .quad osf_utsname
-       .quad sys_lchown
-       .quad sys_shmat
-       .quad sys_shmctl                        /* 210 */
-@@ -258,23 +258,23 @@
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 240 */
--      .quad sys_osf_sysinfo
-+      .quad osf_sysinfo
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
--      .quad sys_osf_proplist_syscall
-+      .quad osf_proplist_syscall
-       .quad alpha_ni_syscall                  /* 245 */
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 250 */
--      .quad sys_osf_usleep_thread
-+      .quad osf_usleep_thread
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad sys_sysfs
-       .quad alpha_ni_syscall                  /* 255 */
--      .quad sys_osf_getsysinfo
--      .quad sys_osf_setsysinfo
-+      .quad osf_getsysinfo
-+      .quad osf_setsysinfo
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall
-       .quad alpha_ni_syscall                  /* 260 */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/elf.c linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c
---- linux-2.6.29.owrt/arch/arm/kernel/elf.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c        2009-05-10 23:48:27.000000000 +0200
-@@ -74,9 +74,9 @@
-  */
- int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
- {
--      if (executable_stack != EXSTACK_DISABLE_X)
-+      if (executable_stack != EXSTACK_ENABLE_X)
-               return 1;
--      if (cpu_architecture() < CPU_ARCH_ARMv6)
-+      if (cpu_architecture() <= CPU_ARCH_ARMv6)
-               return 1;
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S
---- linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 23:48:27.000000000 +0200
-@@ -650,7 +650,6 @@
- no_fp:        mov     pc, lr
- __und_usr_unknown:
--      enable_irq
-       mov     r0, sp
-       adr     lr, ret_from_exception
-       b       do_undefinstr
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/entry-common.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S
---- linux-2.6.29.owrt/arch/arm/kernel/entry-common.S   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S       2009-05-10 23:48:27.000000000 +0200
-@@ -111,7 +111,6 @@
-       .globl mcount_call
- mcount_call:
-       bl ftrace_stub
--      ldr lr, [fp, #-4]                       @ restore lr
-       ldmia sp!, {r0-r3, pc}
- ENTRY(ftrace_caller)
-@@ -123,7 +122,6 @@
-       .globl ftrace_call
- ftrace_call:
-       bl ftrace_stub
--      ldr lr, [fp, #-4]                       @ restore lr
-       ldmia sp!, {r0-r3, pc}
- #else
-@@ -135,16 +133,14 @@
-       adr r0, ftrace_stub
-       cmp r0, r2
-       bne trace
--      ldr lr, [fp, #-4]                       @ restore lr
-       ldmia sp!, {r0-r3, pc}
- trace:
--      ldr r1, [fp, #-4]                       @ lr of instrumented routine
-+      ldr r1, [fp, #-4]
-       mov r0, lr
-       sub r0, r0, #MCOUNT_INSN_SIZE
-       mov lr, pc
-       mov pc, r2
--      mov lr, r1                              @ restore lr
-       ldmia sp!, {r0-r3, pc}
- #endif /* CONFIG_DYNAMIC_FTRACE */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/fiq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c
---- linux-2.6.29.owrt/arch/arm/kernel/fiq.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c        2009-05-10 23:48:27.000000000 +0200
-@@ -88,7 +88,7 @@
-  * disable irqs for the duration.  Note - these functions are almost
-  * entirely coded in assembly.
-  */
--void __naked set_fiq_regs(struct pt_regs *regs)
-+void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
- {
-       register unsigned long tmp;
-       asm volatile (
-@@ -106,7 +106,7 @@
-       : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
- }
--void __naked get_fiq_regs(struct pt_regs *regs)
-+void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
- {
-       register unsigned long tmp;
-       asm volatile (
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/irq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c
---- linux-2.6.29.owrt/arch/arm/kernel/irq.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c        2009-05-10 23:48:27.000000000 +0200
-@@ -101,7 +101,7 @@
- /* Handle bad interrupts */
- static struct irq_desc bad_irq_desc = {
-       .handle_irq = handle_bad_irq,
--      .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock),
-+      .lock = SPIN_LOCK_UNLOCKED
- };
- /*
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c
---- linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c      2009-05-10 23:48:27.000000000 +0200
-@@ -13,8 +13,8 @@
- #include <asm/cacheflush.h>
- #include <asm/mach-types.h>
--extern const unsigned char relocate_new_kernel[];
--extern const unsigned int relocate_new_kernel_size;
-+const extern unsigned char relocate_new_kernel[];
-+const extern unsigned int relocate_new_kernel_size;
- extern void setup_mm_for_reboot(char mode);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/setup.c linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c
---- linux-2.6.29.owrt/arch/arm/kernel/setup.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c      2009-05-10 23:48:27.000000000 +0200
-@@ -233,13 +233,12 @@
-       unsigned int cachetype = read_cpuid_cachetype();
-       unsigned int arch = cpu_architecture();
--      if (arch >= CPU_ARCH_ARMv6) {
--              if ((cachetype & (7 << 29)) == 4 << 29) {
--                      /* ARMv7 register format */
--                      cacheid = CACHEID_VIPT_NONALIASING;
--                      if ((cachetype & (3 << 14)) == 1 << 14)
--                              cacheid |= CACHEID_ASID_TAGGED;
--              } else if (cachetype & (1 << 23))
-+      if (arch >= CPU_ARCH_ARMv7) {
-+              cacheid = CACHEID_VIPT_NONALIASING;
-+              if ((cachetype & (3 << 14)) == 1 << 14)
-+                      cacheid |= CACHEID_ASID_TAGGED;
-+      } else if (arch >= CPU_ARCH_ARMv6) {
-+              if (cachetype & (1 << 23))
-                       cacheid = CACHEID_VIPT_ALIASING;
-               else
-                       cacheid = CACHEID_VIPT_NONALIASING;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c        2009-05-10 23:48:27.000000000 +0200
-@@ -697,7 +697,7 @@
-  *  Watchdog
-  * -------------------------------------------------------------------- */
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91cap9_wdt_device = {
-       .name           = "at91_wdt",
-       .id             = -1,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c     2009-05-10 23:48:27.000000000 +0200
-@@ -643,7 +643,7 @@
-  *  Watchdog
-  * -------------------------------------------------------------------- */
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9260_wdt_device = {
-       .name           = "at91_wdt",
-       .id             = -1,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c     2009-05-10 23:48:27.000000000 +0200
-@@ -621,7 +621,7 @@
-  *  Watchdog
-  * -------------------------------------------------------------------- */
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9261_wdt_device = {
-       .name           = "at91_wdt",
-       .id             = -1,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c     2009-05-10 23:48:27.000000000 +0200
-@@ -347,111 +347,6 @@
- void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
- #endif
--/* --------------------------------------------------------------------
-- *  Compact Flash (PCMCIA or IDE)
-- * -------------------------------------------------------------------- */
--
--#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
--    defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
--
--static struct at91_cf_data cf0_data;
--
--static struct resource cf0_resources[] = {
--      [0] = {
--              .start  = AT91_CHIPSELECT_4,
--              .end    = AT91_CHIPSELECT_4 + SZ_256M - 1,
--              .flags  = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
--      }
--};
--
--static struct platform_device cf0_device = {
--      .id             = 0,
--      .dev            = {
--                              .platform_data  = &cf0_data,
--      },
--      .resource       = cf0_resources,
--      .num_resources  = ARRAY_SIZE(cf0_resources),
--};
--
--static struct at91_cf_data cf1_data;
--
--static struct resource cf1_resources[] = {
--      [0] = {
--              .start  = AT91_CHIPSELECT_5,
--              .end    = AT91_CHIPSELECT_5 + SZ_256M - 1,
--              .flags  = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
--      }
--};
--
--static struct platform_device cf1_device = {
--      .id             = 1,
--      .dev            = {
--                              .platform_data  = &cf1_data,
--      },
--      .resource       = cf1_resources,
--      .num_resources  = ARRAY_SIZE(cf1_resources),
--};
--
--void __init at91_add_device_cf(struct at91_cf_data *data)
--{
--      unsigned long ebi0_csa;
--      struct platform_device *pdev;
--
--      if (!data)
--              return;
--
--      /*
--       * assign CS4 or CS5 to SMC with Compact Flash logic support,
--       * we assume SMC timings are configured by board code,
--       * except True IDE where timings are controlled by driver
--       */
--      ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
--      switch (data->chipselect) {
--      case 4:
--              at91_set_A_periph(AT91_PIN_PD6, 0);  /* EBI0_NCS4/CFCS0 */
--              ebi0_csa |= AT91_MATRIX_EBI0_CS4A_SMC_CF1;
--              cf0_data = *data;
--              pdev = &cf0_device;
--              break;
--      case 5:
--              at91_set_A_periph(AT91_PIN_PD7, 0);  /* EBI0_NCS5/CFCS1 */
--              ebi0_csa |= AT91_MATRIX_EBI0_CS5A_SMC_CF2;
--              cf1_data = *data;
--              pdev = &cf1_device;
--              break;
--      default:
--              printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
--                     data->chipselect);
--              return;
--      }
--      at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa);
--
--      if (data->det_pin) {
--              at91_set_gpio_input(data->det_pin, 1);
--              at91_set_deglitch(data->det_pin, 1);
--      }
--
--      if (data->irq_pin) {
--              at91_set_gpio_input(data->irq_pin, 1);
--              at91_set_deglitch(data->irq_pin, 1);
--      }
--
--      if (data->vcc_pin)
--              /* initially off */
--              at91_set_gpio_output(data->vcc_pin, 0);
--
--      /* enable EBI controlled pins */
--      at91_set_A_periph(AT91_PIN_PD5, 1);  /* NWAIT */
--      at91_set_A_periph(AT91_PIN_PD8, 0);  /* CFCE1 */
--      at91_set_A_periph(AT91_PIN_PD9, 0);  /* CFCE2 */
--      at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
--
--      pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
--      platform_device_register(pdev);
--}
--#else
--void __init at91_add_device_cf(struct at91_cf_data *data) {}
--#endif
- /* --------------------------------------------------------------------
-  *  NAND / SmartMedia
-@@ -959,7 +854,7 @@
-  *  Watchdog
-  * -------------------------------------------------------------------- */
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9263_wdt_device = {
-       .name           = "at91_wdt",
-       .id             = -1,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c      2009-05-10 23:48:27.000000000 +0200
-@@ -609,7 +609,7 @@
-  *  Watchdog
-  * -------------------------------------------------------------------- */
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9rl_wdt_device = {
-       .name           = "at91_wdt",
-       .id             = -1,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c    2009-05-10 23:48:27.000000000 +0200
-@@ -490,8 +490,7 @@
- /*--------------------------------------------------------------------------*/
--/*
-- * This lock class tells lockdep that GPIO irqs are in a different
-+/* This lock class tells lockdep that GPIO irqs are in a different
-  * category than their parents, so it won't report false recursion.
-  */
- static struct lock_class_key gpio_lock_class;
-@@ -510,6 +509,9 @@
-               unsigned        id = this->id;
-               unsigned        i;
-+              /* enable PIO controller's clock */
-+              clk_enable(this->clock);
-+
-               __raw_writel(~0, this->regbase + PIO_IDR);
-               for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
-@@ -554,14 +556,7 @@
-               data->chipbase = PIN_BASE + i * 32;
-               data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS;
--              /* enable PIO controller's clock */
--              clk_enable(data->clock);
--
--              /*
--               * Some processors share peripheral ID between multiple GPIO banks.
--               *  SAM9263 (PIOC, PIOD, PIOE)
--               *  CAP9 (PIOA, PIOB, PIOC, PIOD)
--               */
-+              /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */
-               if (last && last->id == data->id)
-                       last->next = data;
-       }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h
---- linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h      2009-05-10 23:48:27.000000000 +0200
-@@ -56,9 +56,6 @@
-       u8      vcc_pin;                /* power switching */
-       u8      rst_pin;                /* card reset */
-       u8      chipselect;             /* EBI Chip Select number */
--      u8      flags;
--#define AT91_CF_TRUE_IDE      0x01
--#define AT91_IDE_SWAP_A0_A2   0x02
- };
- extern void __init at91_add_device_cf(struct at91_cf_data *data);
-@@ -96,7 +93,6 @@
-       u8              enable_pin;     /* chip enable */
-       u8              det_pin;        /* card detect */
-       u8              rdy_pin;        /* ready/busy */
--      u8              rdy_pin_active_low;     /* rdy_pin value is inverted */
-       u8              ale;            /* address line number connected to ALE */
-       u8              cle;            /* address line number connected to CLE */
-       u8              bus_width_16;   /* buswidth is 16 bit */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/pm.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c
---- linux-2.6.29.owrt/arch/arm/mach-at91/pm.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c      2009-05-10 23:48:27.000000000 +0200
-@@ -332,6 +332,7 @@
-                       at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
- error:
-+      sdram_selfrefresh_disable();
-       target_state = PM_SUSPEND_ON;
-       at91_irq_resume();
-       at91_gpio_resume();
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c
---- linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c    2009-05-10 23:48:27.000000000 +0200
-@@ -311,9 +311,6 @@
-       gpio_request(gpio + 7, "nCF_SEL");
-       gpio_direction_output(gpio + 7, 1);
--      /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
--      setup_usb(500, 8);
--
-       return 0;
- }
-@@ -420,6 +417,9 @@
-       platform_add_devices(davinci_evm_devices,
-                            ARRAY_SIZE(davinci_evm_devices));
-       evm_init_i2c();
-+
-+      /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
-+      setup_usb(500, 8);
- }
- static __init void davinci_evm_irq_init(void)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c
---- linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c        2009-05-10 23:48:27.000000000 +0200
-@@ -231,11 +231,6 @@
-               .lpsc = DAVINCI_LPSC_GPIO,
-       },
-       {
--              .name = "usb",
--              .rate = &commonrate,
--              .lpsc = DAVINCI_LPSC_USB,
--      },
--      {
-               .name = "AEMIFCLK",
-               .rate = &commonrate,
-               .lpsc = DAVINCI_LPSC_AEMIF,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c
---- linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c  2009-05-10 23:48:27.000000000 +0200
-@@ -47,7 +47,6 @@
- #elif defined(CONFIG_USB_MUSB_HOST)
-       .mode           = MUSB_HOST,
- #endif
--      .clock          = "usb",
-       .config         = &musb_config,
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h        2009-05-10 23:48:27.000000000 +0200
-@@ -0,0 +1,3 @@
-+/*
-+ * arch/arm/mach-ep93xx/include/mach/gesbc9312.h
-+ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 23:48:27.000000000 +0200
-@@ -10,6 +10,7 @@
- #include "platform.h"
-+#include "gesbc9312.h"
- #include "ts72xx.h"
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 23:48:27.000000000 +0200
-@@ -4,8 +4,6 @@
- #ifndef __ASSEMBLY__
--struct i2c_board_info;
--
- struct ep93xx_eth_data
- {
-       unsigned char   dev_addr[6];
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c
---- linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -42,7 +42,7 @@
-       writel(0, GPIO_EDGE_CAUSE(32));
-       for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) {
--              set_irq_chip(i, &orion_gpio_irq_chip);
-+              set_irq_chip(i, &orion_gpio_irq_level_chip);
-               set_irq_handler(i, handle_level_irq);
-               irq_desc[i].status |= IRQ_LEVEL;
-               set_irq_flags(i, IRQF_VALID);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c
---- linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c    2009-05-10 23:48:27.000000000 +0200
-@@ -27,7 +27,6 @@
- #include <asm/mach/map.h>
- #include <asm/mach/flash.h>
--#include <mach/irqs.h>
- #include <mach/board.h>
- #include <mach/msm_iomap.h>
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c
---- linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c  2009-05-10 23:48:27.000000000 +0200
-@@ -40,7 +40,7 @@
-       writel(0, GPIO_EDGE_CAUSE(0));
-       for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) {
--              set_irq_chip(i, &orion_gpio_irq_chip);
-+              set_irq_chip(i, &orion_gpio_irq_level_chip);
-               set_irq_handler(i, handle_level_irq);
-               irq_desc[i].status |= IRQ_LEVEL;
-               set_irq_flags(i, IRQF_VALID);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c
---- linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c  2009-05-10 23:48:27.000000000 +0200
-@@ -23,8 +23,6 @@
- #include <linux/init.h>
- #include <linux/platform_device.h>
- #include <linux/gpio.h>
--
--#include <mach/irqs.h>
- #include <mach/hardware.h>
- static struct resource imx_csi_resources[] = {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c
---- linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c   2009-05-10 23:48:27.000000000 +0200
-@@ -21,7 +21,6 @@
- #include <asm/mach/arch.h>
- #include <asm/mach/time.h>
--#include <mach/irqs.h>
- #include <mach/hardware.h>
- #include <mach/common.h>
- #include <mach/imx-uart.h>
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c
---- linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c        2009-05-10 23:48:27.000000000 +0200
-@@ -181,7 +181,7 @@
-               }
-               size = OMAP1_MMC_SIZE;
--              omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]);
-+              omap_mmc_add(i, base, size, irq, mmc_data[i]);
-       };
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c
---- linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c  2009-05-10 23:48:27.000000000 +0200
-@@ -28,8 +28,81 @@
- #define DPS_RSTCT2_PER_EN     (1 << 0)
- #define DSP_RSTCT2_WD_PER_EN  (1 << 1)
-+struct mcbsp_internal_clk {
-+      struct clk clk;
-+      struct clk **childs;
-+      int n_childs;
-+};
-+
- #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
--const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
-+static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{
-+      const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
-+      int i;
-+
-+      mclk->n_childs = ARRAY_SIZE(clk_names);
-+      mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
-+                              GFP_KERNEL);
-+
-+      for (i = 0; i < mclk->n_childs; i++) {
-+              /* We fake a platform device to get correct device id */
-+              struct platform_device pdev;
-+
-+              pdev.dev.bus = &platform_bus_type;
-+              pdev.id = mclk->clk.id;
-+              mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
-+              if (IS_ERR(mclk->childs[i]))
-+                      printk(KERN_ERR "Could not get clock %s (%d).\n",
-+                              clk_names[i], mclk->clk.id);
-+      }
-+}
-+
-+static int omap_mcbsp_clk_enable(struct clk *clk)
-+{
-+      struct mcbsp_internal_clk *mclk = container_of(clk,
-+                                      struct mcbsp_internal_clk, clk);
-+      int i;
-+
-+      for (i = 0; i < mclk->n_childs; i++)
-+              clk_enable(mclk->childs[i]);
-+      return 0;
-+}
-+
-+static void omap_mcbsp_clk_disable(struct clk *clk)
-+{
-+      struct mcbsp_internal_clk *mclk = container_of(clk,
-+                                      struct mcbsp_internal_clk, clk);
-+      int i;
-+
-+      for (i = 0; i < mclk->n_childs; i++)
-+              clk_disable(mclk->childs[i]);
-+}
-+
-+static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 1,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 3,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+};
-+
-+#define omap_mcbsp_clks_size  ARRAY_SIZE(omap_mcbsp_clks)
-+#else
-+#define omap_mcbsp_clks_size  0
-+static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
-+static inline void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{ }
- #endif
- static void omap1_mcbsp_request(unsigned int id)
-@@ -94,9 +167,8 @@
-               .rx_irq         = INT_McBSP1RX,
-               .tx_irq         = INT_McBSP1TX,
-               .ops            = &omap1_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 3,
--      },
-+              .clk_name       = "mcbsp_clk",
-+              },
-       {
-               .phys_base      = OMAP1510_MCBSP2_BASE,
-               .dma_rx_sync    = OMAP_DMA_MCBSP2_RX,
-@@ -112,8 +184,7 @@
-               .rx_irq         = INT_McBSP3RX,
-               .tx_irq         = INT_McBSP3TX,
-               .ops            = &omap1_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 3,
-+              .clk_name       = "mcbsp_clk",
-       },
- };
- #define OMAP15XX_MCBSP_PDATA_SZ               ARRAY_SIZE(omap15xx_mcbsp_pdata)
-@@ -131,8 +202,7 @@
-               .rx_irq         = INT_McBSP1RX,
-               .tx_irq         = INT_McBSP1TX,
-               .ops            = &omap1_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 3,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP1610_MCBSP2_BASE,
-@@ -149,8 +219,7 @@
-               .rx_irq         = INT_McBSP3RX,
-               .tx_irq         = INT_McBSP3TX,
-               .ops            = &omap1_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 3,
-+              .clk_name       = "mcbsp_clk",
-       },
- };
- #define OMAP16XX_MCBSP_PDATA_SZ               ARRAY_SIZE(omap16xx_mcbsp_pdata)
-@@ -161,6 +230,15 @@
- int __init omap1_mcbsp_init(void)
- {
-+      int i;
-+
-+      for (i = 0; i < omap_mcbsp_clks_size; i++) {
-+              if (cpu_is_omap15xx() || cpu_is_omap16xx()) {
-+                      omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
-+                      clk_register(&omap_mcbsp_clks[i].clk);
-+              }
-+      }
-+
-       if (cpu_is_omap730())
-               omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ;
-       if (cpu_is_omap15xx())
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c      2009-05-10 23:48:27.000000000 +0200
-@@ -81,7 +81,7 @@
-       }
-       ldp_smc911x_resources[0].start = cs_mem_base + 0x0;
--      ldp_smc911x_resources[0].end   = cs_mem_base + 0xff;
-+      ldp_smc911x_resources[0].end   = cs_mem_base + 0xf;
-       udelay(100);
-       eth_gpio = LDP_SMC911X_GPIO;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c      2009-05-10 23:48:27.000000000 +0200
-@@ -178,9 +178,7 @@
- #ifdef CONFIG_I2C2_OMAP_BEAGLE
-       omap_register_i2c_bus(2, 400, NULL, 0);
- #endif
--      /* Bus 3 is attached to the DVI port where devices like the pico DLP
--       * projector don't work reliably with 400kHz */
--      omap_register_i2c_bus(3, 100, NULL, 0);
-+      omap_register_i2c_bus(3, 400, NULL, 0);
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c  2009-05-10 23:48:27.000000000 +0200
-@@ -565,7 +565,7 @@
-  *
-  * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
-  * find the corresponding register field value.  The return register value is
-- * the value before left-shifting.  Returns ~0 on error
-+ * the value before left-shifting.  Returns 0xffffffff on error
-  */
- u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
- {
-@@ -577,7 +577,7 @@
-       clks = omap2_get_clksel_by_parent(clk, clk->parent);
-       if (clks == NULL)
--              return ~0;
-+              return 0;
-       for (clkr = clks->rates; clkr->div; clkr++) {
-               if ((clkr->flags & cpu_mask) && (clkr->div == div))
-@@ -588,7 +588,7 @@
-               printk(KERN_ERR "clock: Could not find divisor %d for "
-                      "clock %s parent %s\n", div, clk->name,
-                      clk->parent->name);
--              return ~0;
-+              return 0;
-       }
-       return clkr->val;
-@@ -708,7 +708,7 @@
-               return 0;
-       for (clkr = clks->rates; clkr->div; clkr++) {
--              if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
-+              if (clkr->flags & (cpu_mask | DEFAULT_RATE))
-                       break; /* Found the default rate for this platform */
-       }
-@@ -746,7 +746,7 @@
-               return -EINVAL;
-       if (clk->usecount > 0)
--              omap2_clk_disable(clk);
-+              _omap2_clk_disable(clk);
-       /* Set new source value (previous dividers if any in effect) */
-       reg_val = __raw_readl(src_addr) & ~field_mask;
-@@ -759,10 +759,10 @@
-               wmb();
-       }
--      clk->parent = new_parent;
--
-       if (clk->usecount > 0)
--              omap2_clk_enable(clk);
-+              _omap2_clk_enable(clk);
-+
-+      clk->parent = new_parent;
-       /* CLKSEL clocks follow their parents' rates, divided by a divisor */
-       clk->rate = new_parent->rate;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c        2009-05-10 23:48:27.000000000 +0200
-@@ -421,7 +421,6 @@
-                       int nr_controllers)
- {
-       int i;
--      char *name;
-       for (i = 0; i < nr_controllers; i++) {
-               unsigned long base, size;
-@@ -451,14 +450,12 @@
-                       continue;
-               }
--              if (cpu_is_omap2420()) {
-+              if (cpu_is_omap2420())
-                       size = OMAP2420_MMC_SIZE;
--                      name = "mmci-omap";
--              } else {
-+              else
-                       size = HSMMC_SIZE;
--                      name = "mmci-omap-hs";
--              }
--              omap_mmc_add(name, i, base, size, irq, mmc_data[i]);
-+
-+              omap_mmc_add(i, base, size, irq, mmc_data[i]);
-       };
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/id.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/id.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c     2009-05-10 23:48:27.000000000 +0200
-@@ -172,13 +172,9 @@
-                       omap_revision = OMAP3430_REV_ES3_0;
-                       rev_name = "ES3.0";
-                       break;
--              case 4:
--                      omap_revision = OMAP3430_REV_ES3_1;
--                      rev_name = "ES3.1";
--                      break;
-               default:
-                       /* Use the latest known revision as default */
--                      omap_revision = OMAP3430_REV_ES3_1;
-+                      omap_revision = OMAP3430_REV_ES3_0;
-                       rev_name = "Unknown revision\n";
-               }
-       }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c    2009-05-10 23:48:27.000000000 +0200
-@@ -134,7 +134,6 @@
-       .ack    = omap_mask_ack_irq,
-       .mask   = omap_mask_irq,
-       .unmask = omap_unmask_irq,
--      .disable = omap_mask_irq,
- };
- static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c  2009-05-10 23:48:27.000000000 +0200
-@@ -24,7 +24,106 @@
- #include <mach/cpu.h>
- #include <mach/mcbsp.h>
--const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
-+struct mcbsp_internal_clk {
-+      struct clk clk;
-+      struct clk **childs;
-+      int n_childs;
-+};
-+
-+#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
-+static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{
-+      const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
-+      int i;
-+
-+      mclk->n_childs = ARRAY_SIZE(clk_names);
-+      mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
-+                              GFP_KERNEL);
-+
-+      for (i = 0; i < mclk->n_childs; i++) {
-+              /* We fake a platform device to get correct device id */
-+              struct platform_device pdev;
-+
-+              pdev.dev.bus = &platform_bus_type;
-+              pdev.id = mclk->clk.id;
-+              mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
-+              if (IS_ERR(mclk->childs[i]))
-+                      printk(KERN_ERR "Could not get clock %s (%d).\n",
-+                              clk_names[i], mclk->clk.id);
-+      }
-+}
-+
-+static int omap_mcbsp_clk_enable(struct clk *clk)
-+{
-+      struct mcbsp_internal_clk *mclk = container_of(clk,
-+                                      struct mcbsp_internal_clk, clk);
-+      int i;
-+
-+      for (i = 0; i < mclk->n_childs; i++)
-+              clk_enable(mclk->childs[i]);
-+      return 0;
-+}
-+
-+static void omap_mcbsp_clk_disable(struct clk *clk)
-+{
-+      struct mcbsp_internal_clk *mclk = container_of(clk,
-+                                      struct mcbsp_internal_clk, clk);
-+      int i;
-+
-+      for (i = 0; i < mclk->n_childs; i++)
-+              clk_disable(mclk->childs[i]);
-+}
-+
-+static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 1,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 2,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 3,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 4,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+      {
-+              .clk = {
-+                      .name           = "mcbsp_clk",
-+                      .id             = 5,
-+                      .enable         = omap_mcbsp_clk_enable,
-+                      .disable        = omap_mcbsp_clk_disable,
-+              },
-+      },
-+};
-+
-+#define omap_mcbsp_clks_size  ARRAY_SIZE(omap_mcbsp_clks)
-+#else
-+#define omap_mcbsp_clks_size  0
-+static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
-+static inline void omap_mcbsp_clk_init(struct clk *clk)
-+{ }
-+#endif
- static void omap2_mcbsp2_mux_setup(void)
- {
-@@ -57,8 +156,7 @@
-               .rx_irq         = INT_24XX_MCBSP1_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP1_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP24XX_MCBSP2_BASE,
-@@ -67,8 +165,7 @@
-               .rx_irq         = INT_24XX_MCBSP2_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP2_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
- };
- #define OMAP2420_MCBSP_PDATA_SZ               ARRAY_SIZE(omap2420_mcbsp_pdata)
-@@ -86,8 +183,7 @@
-               .rx_irq         = INT_24XX_MCBSP1_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP1_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP24XX_MCBSP2_BASE,
-@@ -96,8 +192,7 @@
-               .rx_irq         = INT_24XX_MCBSP2_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP2_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP2430_MCBSP3_BASE,
-@@ -106,8 +201,7 @@
-               .rx_irq         = INT_24XX_MCBSP3_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP3_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP2430_MCBSP4_BASE,
-@@ -116,8 +210,7 @@
-               .rx_irq         = INT_24XX_MCBSP4_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP4_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP2430_MCBSP5_BASE,
-@@ -126,8 +219,7 @@
-               .rx_irq         = INT_24XX_MCBSP5_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP5_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
- };
- #define OMAP2430_MCBSP_PDATA_SZ               ARRAY_SIZE(omap2430_mcbsp_pdata)
-@@ -145,8 +237,7 @@
-               .rx_irq         = INT_24XX_MCBSP1_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP1_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP34XX_MCBSP2_BASE,
-@@ -155,8 +246,7 @@
-               .rx_irq         = INT_24XX_MCBSP2_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP2_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP34XX_MCBSP3_BASE,
-@@ -165,8 +255,7 @@
-               .rx_irq         = INT_24XX_MCBSP3_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP3_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP34XX_MCBSP4_BASE,
-@@ -175,8 +264,7 @@
-               .rx_irq         = INT_24XX_MCBSP4_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP4_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
-       {
-               .phys_base      = OMAP34XX_MCBSP5_BASE,
-@@ -185,8 +273,7 @@
-               .rx_irq         = INT_24XX_MCBSP5_IRQ_RX,
-               .tx_irq         = INT_24XX_MCBSP5_IRQ_TX,
-               .ops            = &omap2_mcbsp_ops,
--              .clk_names      = clk_names,
--              .num_clks       = 2,
-+              .clk_name       = "mcbsp_clk",
-       },
- };
- #define OMAP34XX_MCBSP_PDATA_SZ               ARRAY_SIZE(omap34xx_mcbsp_pdata)
-@@ -197,6 +284,14 @@
- static int __init omap2_mcbsp_init(void)
- {
-+      int i;
-+
-+      for (i = 0; i < omap_mcbsp_clks_size; i++) {
-+              /* Once we call clk_get inside init, we do not register it */
-+              omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
-+              clk_register(&omap_mcbsp_clks[i].clk);
-+      }
-+
-       if (cpu_is_omap2420())
-               omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ;
-       if (cpu_is_omap2430())
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S
---- linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S      2009-05-10 23:48:28.000000000 +0200
-@@ -93,8 +93,9 @@
-       orr     r4, r4, #0x40           @ enable self refresh on idle req
-       mov     r5, #0x2000             @ set delay (DPLL relock + DLL relock)
-       str     r4, [r2]                @ make it so
-+      mov     r2, #0
-       nop
--      mcr     p15, 0, r3, c7, c0, 4   @ wait for interrupt
-+      mcr     p15, 0, r2, c7, c0, 4   @ wait for interrupt
-       nop
- loop:
-       subs    r5, r5, #0x1            @ awake, wait just a bit
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c
---- linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c       2009-05-10 23:48:28.000000000 +0200
-@@ -118,8 +118,7 @@
-       clockevent_gpt.max_delta_ns =
-               clockevent_delta2ns(0xffffffff, &clockevent_gpt);
-       clockevent_gpt.min_delta_ns =
--              clockevent_delta2ns(3, &clockevent_gpt);
--              /* Timer internal resynch latency. */
-+              clockevent_delta2ns(1, &clockevent_gpt);
-       clockevent_gpt.cpumask = cpumask_of(0);
-       clockevents_register_device(&clockevent_gpt);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c
---- linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c       2009-05-10 23:48:28.000000000 +0200
-@@ -431,10 +431,6 @@
- /*****************************************************************************
-  * XOR engine
-  ****************************************************************************/
--struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
--      .dram           = &orion5x_mbus_dram_info,
--};
--
- static struct resource orion5x_xor_shared_resources[] = {
-       {
-               .name   = "xor low",
-@@ -452,9 +448,6 @@
- static struct platform_device orion5x_xor_shared = {
-       .name           = MV_XOR_SHARED_NAME,
-       .id             = 0,
--      .dev            = {
--              .platform_data  = &orion5x_xor_shared_data,
--      },
-       .num_resources  = ARRAY_SIZE(orion5x_xor_shared_resources),
-       .resource       = orion5x_xor_shared_resources,
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c
---- linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c  2009-05-10 23:48:28.000000000 +0200
-@@ -44,7 +44,7 @@
-        * User can use set_type() if he wants to use edge types handlers.
-        */
-       for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) {
--              set_irq_chip(i, &orion_gpio_irq_chip);
-+              set_irq_chip(i, &orion_gpio_irq_level_chip);
-               set_irq_handler(i, handle_level_irq);
-               irq_desc[i].status |= IRQ_LEVEL;
-               set_irq_flags(i, IRQF_VALID);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c
---- linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c      2009-05-10 23:48:28.000000000 +0200
-@@ -121,16 +121,6 @@
-       if (dma_channels == NULL)
-               return -ENOMEM;
--      /* dma channel priorities on pxa2xx processors:
--       * ch 0 - 3,  16 - 19  <--> (0) DMA_PRIO_HIGH
--       * ch 4 - 7,  20 - 23  <--> (1) DMA_PRIO_MEDIUM
--       * ch 8 - 15, 24 - 31  <--> (2) DMA_PRIO_LOW
--       */
--      for (i = 0; i < num_ch; i++) {
--              DCSR(i) = 0;
--              dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
--      }
--
-       ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
-       if (ret) {
-               printk (KERN_CRIT "Wow!  Can't register IRQ for DMA\n");
-@@ -138,6 +128,14 @@
-               return ret;
-       }
-+      /* dma channel priorities on pxa2xx processors:
-+       * ch 0 - 3,  16 - 19  <--> (0) DMA_PRIO_HIGH
-+       * ch 4 - 7,  20 - 23  <--> (1) DMA_PRIO_MEDIUM
-+       * ch 8 - 15, 24 - 31  <--> (2) DMA_PRIO_LOW
-+       */
-+      for (i = 0; i < num_ch; i++)
-+              dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
-+
-       num_dma_channels = num_ch;
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h
---- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h   2009-05-10 23:48:28.000000000 +0200
-@@ -1,8 +1,6 @@
- #ifndef __ASM_ARCH_REGS_AC97_H
- #define __ASM_ARCH_REGS_AC97_H
--#include <mach/hardware.h>
--
- /*
-  * AC97 Controller registers
-  */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h
---- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h    2009-05-10 23:48:28.000000000 +0200
-@@ -41,9 +41,6 @@
- #elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
- #define SSCR0_SCR     (0x000fff00)    /* Serial Clock Rate (mask) */
- #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */
--#endif
--
--#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
- #define SSCR0_EDSS    (1 << 20)       /* Extended data size select */
- #define SSCR0_NCS     (1 << 21)       /* Network clock select */
- #define SSCR0_RIM     (1 << 22)       /* Receive FIFO overrrun interrupt mask */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c
---- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c   2009-05-10 23:48:28.000000000 +0200
-@@ -88,13 +88,13 @@
- static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0);
- static struct clk_lookup common_clkregs[] = {
--      INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
-+      INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", "NANDCLK"),
- };
- static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
- static struct clk_lookup pxa310_clkregs[] = {
--      INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL),
-+      INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", "MMCCLK"),
- };
- static int __init pxa300_init(void)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c
---- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c   2009-05-10 23:48:28.000000000 +0200
-@@ -83,7 +83,7 @@
- static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0);
- static struct clk_lookup pxa320_clkregs[] = {
--      INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
-+      INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", "NANDCLK"),
- };
- static int __init pxa320_init(void)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c
---- linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c   2009-05-10 23:48:28.000000000 +0200
-@@ -19,7 +19,6 @@
- #include <linux/serial_8250.h>
- #include <linux/ata_platform.h>
- #include <linux/io.h>
--#include <linux/i2c.h>
- #include <asm/elf.h>
- #include <asm/mach-types.h>
-@@ -202,13 +201,8 @@
-       &pata_device,
- };
--static struct i2c_board_info i2c_rtc = {
--      I2C_BOARD_INFO("pcf8583", 0x50)
--};
--
- static int __init rpc_init(void)
- {
--      i2c_register_board_info(0, &i2c_rtc, 1);
-       return platform_add_devices(devs, ARRAY_SIZE(devs));
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c
---- linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c        2009-05-10 23:48:28.000000000 +0200
-@@ -129,7 +129,7 @@
-       .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
- };
--static struct map_desc smdk6410_iodesc[] = {};
-+struct map_desc smdk6410_iodesc[] = {};
- static struct platform_device *smdk6410_devices[] __initdata = {
- #ifdef CONFIG_SMDK6410_SD_CH0
-@@ -146,7 +146,7 @@
- static struct i2c_board_info i2c_devs0[] __initdata = {
-       { I2C_BOARD_INFO("24c08", 0x50), },
--      { I2C_BOARD_INFO("wm8580", 0x1b), },
-+      { I2C_BOARD_INFO("WM8580", 0X1b), },
- };
- static struct i2c_board_info i2c_devs1[] __initdata = {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c
---- linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c       2009-05-10 23:48:28.000000000 +0200
-@@ -289,7 +289,7 @@
- };
- static struct platform_device sa11x0mtd_device = {
--      .name           = "sa1100-mtd",
-+      .name           = "flash",
-       .id             = -1,
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S
---- linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S      2009-05-10 23:48:28.000000000 +0200
-@@ -23,8 +23,7 @@
- #ifdef CONFIG_CPU_32v6K
-       clrex
- #else
--      sub     r1, sp, #4                      @ Get unused stack location
--      strex   r0, r1, [r1]                    @ Clear the exclusive monitor
-+      strex   r0, r1, [sp]                    @ Clear the exclusive monitor
- #endif
-       mrc     p15, 0, r1, c5, c0, 0           @ get FSR
-       mrc     p15, 0, r0, c6, c0, 0           @ get FAR
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c      2009-05-10 23:48:28.000000000 +0200
-@@ -13,7 +13,7 @@
- #include <linux/init.h>
- #include <linux/highmem.h>
--static void __naked
-+static void __attribute__((naked))
- feroceon_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c    2009-05-10 23:48:28.000000000 +0200
-@@ -15,7 +15,7 @@
-  *
-  * FIXME: do we need to handle cache stuff...
-  */
--static void __naked
-+static void __attribute__((naked))
- v3_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\n\
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c  2009-05-10 23:48:28.000000000 +0200
-@@ -44,7 +44,7 @@
-  * instruction.  If your processor does not supply this, you have to write your
-  * own copy_user_highpage that does the right thing.
-  */
--static void __naked
-+static void __attribute__((naked))
- mc_copy_user_page(void *from, void *to)
- {
-       asm volatile(
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c  2009-05-10 23:48:28.000000000 +0200
-@@ -22,7 +22,7 @@
-  * instruction.  If your processor does not supply this, you have to write your
-  * own copy_user_highpage that does the right thing.
-  */
--static void __naked
-+static void __attribute__((naked))
- v4wb_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c  2009-05-10 23:48:28.000000000 +0200
-@@ -20,7 +20,7 @@
-  * dirty data in the cache.  However, we do have to ensure that
-  * subsequent reads are up to date.
-  */
--static void __naked
-+static void __attribute__((naked))
- v4wt_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c  2009-05-10 23:48:28.000000000 +0200
-@@ -29,7 +29,7 @@
-  * if we eventually end up using our copied page.
-  *
-  */
--static void __naked
-+static void __attribute__((naked))
- xsc3_mc_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c
---- linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c        2009-05-10 23:48:28.000000000 +0200
-@@ -42,7 +42,7 @@
-  * Dcache aliasing issue.  The writes will be forwarded to the write buffer,
-  * and merged as appropriate.
-  */
--static void __naked
-+static void __attribute__((naked))
- mc_copy_user_page(void *from, void *to)
- {
-       /*
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c
---- linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c    2009-05-10 23:48:28.000000000 +0200
-@@ -490,30 +490,26 @@
-  */
- void dma_cache_maint(const void *start, size_t size, int direction)
- {
--      void (*inner_op)(const void *, const void *);
--      void (*outer_op)(unsigned long, unsigned long);
-+      const void *end = start + size;
--      BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
-+      BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1));
-       switch (direction) {
-       case DMA_FROM_DEVICE:           /* invalidate only */
--              inner_op = dmac_inv_range;
--              outer_op = outer_inv_range;
-+              dmac_inv_range(start, end);
-+              outer_inv_range(__pa(start), __pa(end));
-               break;
-       case DMA_TO_DEVICE:             /* writeback only */
--              inner_op = dmac_clean_range;
--              outer_op = outer_clean_range;
-+              dmac_clean_range(start, end);
-+              outer_clean_range(__pa(start), __pa(end));
-               break;
-       case DMA_BIDIRECTIONAL:         /* writeback and invalidate */
--              inner_op = dmac_flush_range;
--              outer_op = outer_flush_range;
-+              dmac_flush_range(start, end);
-+              outer_flush_range(__pa(start), __pa(end));
-               break;
-       default:
-               BUG();
-       }
--
--      inner_op(start, start + size);
--      outer_op(__pa(start), __pa(start) + size);
- }
- EXPORT_SYMBOL(dma_cache_maint);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/fault-armv.c linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c
---- linux-2.6.29.owrt/arch/arm/mm/fault-armv.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c     2009-05-10 23:48:28.000000000 +0200
-@@ -66,10 +66,7 @@
-        * fault (ie, is old), we can safely ignore any issues.
-        */
-       if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) {
--              unsigned long pfn = pte_pfn(entry);
--              flush_cache_page(vma, address, pfn);
--              outer_flush_range((pfn << PAGE_SHIFT),
--                                (pfn << PAGE_SHIFT) + PAGE_SIZE);
-+              flush_cache_page(vma, address, pte_pfn(entry));
-               pte_val(entry) &= ~L_PTE_MT_MASK;
-               pte_val(entry) |= shared_pte_mask;
-               set_pte_at(vma->vm_mm, address, pte, entry);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/init.c linux-2.6.29-rc3.owrt/arch/arm/mm/init.c
---- linux-2.6.29.owrt/arch/arm/mm/init.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/init.c   2009-05-10 23:48:28.000000000 +0200
-@@ -382,7 +382,7 @@
-       for_each_node(node)
-               bootmem_free_node(node, mi);
--      high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
-+      high_memory = __va(memend_pfn << PAGE_SHIFT);
-       /*
-        * This doesn't seem to be used by the Linux memory manager any
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/mmap.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c
---- linux-2.6.29.owrt/arch/arm/mm/mmap.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c   2009-05-10 23:48:28.000000000 +0200
-@@ -124,7 +124,7 @@
- {
-       if (addr < PHYS_OFFSET)
-               return 0;
--      if (addr + size >= __pa(high_memory - 1))
-+      if (addr + size > __pa(high_memory))
-               return 0;
-       return 1;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/mmu.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c
---- linux-2.6.29.owrt/arch/arm/mm/mmu.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c    2009-05-10 23:48:28.000000000 +0200
-@@ -693,8 +693,7 @@
-                * Check whether this memory bank would entirely overlap
-                * the vmalloc area.
-                */
--              if (__va(bank->start) >= VMALLOC_MIN ||
--                  __va(bank->start) < PAGE_OFFSET) {
-+              if (__va(bank->start) >= VMALLOC_MIN) {
-                       printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx "
-                              "(vmalloc region overlap).\n",
-                              bank->start, bank->start + bank->size - 1);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h
---- linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,36 +0,0 @@
--#ifndef ASMARM_ARCH_MMC_H
--#define ASMARM_ARCH_MMC_H
--
--#include <linux/mmc/host.h>
--
--struct device;
--
--/* board specific SDHC data, optional.
-- * If not present, a writable card with 3,3V is assumed.
-- */
--struct imxmmc_platform_data {
--      /* Return values for the get_ro callback should be:
--       *   0 for a read/write card
--       *   1 for a read-only card
--       *   -ENOSYS when not supported (equal to NULL callback)
--       *   or a negative errno value when something bad happened
--       */
--      int (*get_ro)(struct device *);
--
--      /* board specific hook to (de)initialize the SD slot.
--       * The board code can call 'handler' on a card detection
--       * change giving data as argument.
--       */
--      int (*init)(struct device *dev, irq_handler_t handler, void *data);
--      void (*exit)(struct device *dev, void *data);
--
--      /* available voltages. If not given, assume
--       * MMC_VDD_32_33 | MMC_VDD_33_34
--       */
--      unsigned int ocr_avail;
--
--      /* adjust slot voltage */
--      void (*setpower)(struct device *, unsigned int vdd);
--};
--
--#endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/common.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c
---- linux-2.6.29.owrt/arch/arm/plat-omap/common.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c  2009-05-10 23:48:28.000000000 +0200
-@@ -200,16 +200,20 @@
- };
- /*
-+ * Rounds down to nearest nsec.
-+ */
-+unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
-+{
-+      return cyc2ns(&clocksource_32k, ticks_32k);
-+}
-+
-+/*
-  * Returns current time from boot in nsecs. It's OK for this to wrap
-  * around for now, as it's just a relative time stamp.
-  */
- unsigned long long sched_clock(void)
- {
--      unsigned long long ret;
--
--      ret = (unsigned long long)omap_32k_read();
--      ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
--      return ret;
-+      return omap_32k_ticks_to_nsecs(omap_32k_read());
- }
- static int __init omap_init_clocksource_32k(void)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/devices.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c
---- linux-2.6.29.owrt/arch/arm/plat-omap/devices.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c 2009-05-10 23:48:28.000000000 +0200
-@@ -200,15 +200,14 @@
- /*
-  * Register MMC devices. Called from mach-omap1 and mach-omap2 device init.
-  */
--int __init omap_mmc_add(const char *name, int id, unsigned long base,
--                              unsigned long size, unsigned int irq,
--                              struct omap_mmc_platform_data *data)
-+int __init omap_mmc_add(int id, unsigned long base, unsigned long size,
-+              unsigned int irq, struct omap_mmc_platform_data *data)
- {
-       struct platform_device *pdev;
-       struct resource res[OMAP_MMC_NR_RES];
-       int ret;
--      pdev = platform_device_alloc(name, id);
-+      pdev = platform_device_alloc("mmci-omap", id);
-       if (!pdev)
-               return -ENOMEM;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/dma.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c
---- linux-2.6.29.owrt/arch/arm/plat-omap/dma.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c     2009-05-10 23:48:28.000000000 +0200
-@@ -709,7 +709,6 @@
-       chan->dev_name = dev_name;
-       chan->callback = callback;
-       chan->data = data;
--      chan->flags = 0;
- #ifndef CONFIG_ARCH_OMAP1
-       if (cpu_class_is_omap2()) {
-@@ -1889,11 +1888,11 @@
-               status = dma_read(CSR(ch));
-       }
--      dma_write(status, CSR(ch));
--
-       if (likely(dma_chan[ch].callback != NULL))
-               dma_chan[ch].callback(ch, status, dma_chan[ch].data);
-+      dma_write(status, CSR(ch));
-+
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h     2009-05-10 23:48:28.000000000 +0200
-@@ -35,7 +35,7 @@
- extern struct sys_timer omap_timer;
- extern void omap_serial_init(void);
- extern void omap_serial_enable_clocks(int enable);
--#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
-+#ifdef CONFIG_I2C_OMAP
- extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
-                                struct i2c_board_info const *info,
-                                unsigned len);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h        2009-05-10 23:48:28.000000000 +0200
-@@ -339,7 +339,6 @@
- #define OMAP3430_REV_ES2_0    0x34301034
- #define OMAP3430_REV_ES2_1    0x34302034
- #define OMAP3430_REV_ES3_0    0x34303034
--#define OMAP3430_REV_ES3_1    0x34304034
- /*
-  * omap_chip bits
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h      2009-05-10 23:48:28.000000000 +0200
-@@ -344,8 +344,7 @@
-       u8 dma_rx_sync, dma_tx_sync;
-       u16 rx_irq, tx_irq;
-       struct omap_mcbsp_ops *ops;
--      char const **clk_names;
--      int num_clks;
-+      char const *clk_name;
- };
- struct omap_mcbsp {
-@@ -377,8 +376,7 @@
-       /* Protect the field .free, while checking if the mcbsp is in use */
-       spinlock_t lock;
-       struct omap_mcbsp_platform_data *pdata;
--      struct clk **clks;
--      int num_clks;
-+      struct clk *clk;
- };
- extern struct omap_mcbsp **mcbsp_ptr;
- extern int omap_mcbsp_count;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h        2009-05-10 23:48:28.000000000 +0200
-@@ -115,9 +115,8 @@
-                               int nr_controllers);
- void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
-                               int nr_controllers);
--int omap_mmc_add(const char *name, int id, unsigned long base,
--                              unsigned long size, unsigned int irq,
--                              struct omap_mmc_platform_data *data);
-+int omap_mmc_add(int id, unsigned long base, unsigned long size,
-+                      unsigned int irq, struct omap_mmc_platform_data *data);
- #else
- static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
-                               int nr_controllers)
-@@ -127,9 +126,8 @@
-                               int nr_controllers)
- {
- }
--static inline int omap_mmc_add(const char *name, int id, unsigned long base,
--                              unsigned long size, unsigned int irq,
--                              struct omap_mmc_platform_data *data)
-+static inline int omap_mmc_add(int id, unsigned long base, unsigned long size,
-+              unsigned int irq, struct omap_mmc_platform_data *data)
- {
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 23:48:28.000000000 +0200
-@@ -108,7 +108,7 @@
-       !defined(CONFIG_ARCH_OMAP15XX) && \
-       !defined(CONFIG_ARCH_OMAP16XX) && \
-       !defined(CONFIG_ARCH_OMAP24XX)
--#warning "Power management for this processor not implemented yet"
-+#error "Power management for this processor not implemented yet"
- #endif
- #ifndef __ASSEMBLER__
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/Makefile linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile
---- linux-2.6.29.owrt/arch/arm/plat-omap/Makefile      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile  2009-05-10 23:48:28.000000000 +0200
-@@ -18,8 +18,7 @@
- obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
- obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
- obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
--i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
--obj-y += $(i2c-omap-m) $(i2c-omap-y)
-+obj-$(CONFIG_I2C_OMAP) += i2c.o
- # OMAP mailbox framework
- obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c
---- linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c   2009-05-10 23:48:28.000000000 +0200
-@@ -214,7 +214,6 @@
- int omap_mcbsp_request(unsigned int id)
- {
-       struct omap_mcbsp *mcbsp;
--      int i;
-       int err;
-       if (!omap_mcbsp_check_valid_id(id)) {
-@@ -226,8 +225,7 @@
-       if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request)
-               mcbsp->pdata->ops->request(id);
--      for (i = 0; i < mcbsp->num_clks; i++)
--              clk_enable(mcbsp->clks[i]);
-+      clk_enable(mcbsp->clk);
-       spin_lock(&mcbsp->lock);
-       if (!mcbsp->free) {
-@@ -278,7 +276,6 @@
- void omap_mcbsp_free(unsigned int id)
- {
-       struct omap_mcbsp *mcbsp;
--      int i;
-       if (!omap_mcbsp_check_valid_id(id)) {
-               printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
-@@ -289,8 +286,7 @@
-       if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free)
-               mcbsp->pdata->ops->free(id);
--      for (i = mcbsp->num_clks - 1; i >= 0; i--)
--              clk_disable(mcbsp->clks[i]);
-+      clk_disable(mcbsp->clk);
-       spin_lock(&mcbsp->lock);
-       if (mcbsp->free) {
-@@ -876,7 +872,6 @@
-       struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data;
-       struct omap_mcbsp *mcbsp;
-       int id = pdev->id - 1;
--      int i;
-       int ret = 0;
-       if (!pdata) {
-@@ -921,25 +916,14 @@
-       mcbsp->dma_rx_sync = pdata->dma_rx_sync;
-       mcbsp->dma_tx_sync = pdata->dma_tx_sync;
--      if (pdata->num_clks) {
--              mcbsp->num_clks = pdata->num_clks;
--              mcbsp->clks = kzalloc(mcbsp->num_clks * sizeof(struct clk *),
--                                      GFP_KERNEL);
--              if (!mcbsp->clks) {
--                      ret = -ENOMEM;
--                      goto exit;
--              }
--              for (i = 0; i < mcbsp->num_clks; i++) {
--                      mcbsp->clks[i] = clk_get(&pdev->dev, pdata->clk_names[i]);
--                      if (IS_ERR(mcbsp->clks[i])) {
--                              dev_err(&pdev->dev,
--                                      "Invalid %s configuration for McBSP%d.\n",
--                                      pdata->clk_names[i], mcbsp->id);
--                              ret = PTR_ERR(mcbsp->clks[i]);
--                              goto err_clk;
--                      }
--              }
--
-+      if (pdata->clk_name)
-+              mcbsp->clk = clk_get(&pdev->dev, pdata->clk_name);
-+      if (IS_ERR(mcbsp->clk)) {
-+              dev_err(&pdev->dev,
-+                      "Invalid clock configuration for McBSP%d.\n",
-+                      mcbsp->id);
-+              ret = PTR_ERR(mcbsp->clk);
-+              goto err_clk;
-       }
-       mcbsp->pdata = pdata;
-@@ -948,9 +932,6 @@
-       return 0;
- err_clk:
--      while (i--)
--              clk_put(mcbsp->clks[i]);
--      kfree(mcbsp->clks);
-       iounmap(mcbsp->io_base);
- err_ioremap:
-       mcbsp->free = 0;
-@@ -961,7 +942,6 @@
- static int __devexit omap_mcbsp_remove(struct platform_device *pdev)
- {
-       struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev);
--      int i;
-       platform_set_drvdata(pdev, NULL);
-       if (mcbsp) {
-@@ -970,18 +950,12 @@
-                               mcbsp->pdata->ops->free)
-                       mcbsp->pdata->ops->free(mcbsp->id);
--              for (i = mcbsp->num_clks - 1; i >= 0; i--) {
--                      clk_disable(mcbsp->clks[i]);
--                      clk_put(mcbsp->clks[i]);
--              }
-+              clk_disable(mcbsp->clk);
-+              clk_put(mcbsp->clk);
-               iounmap(mcbsp->io_base);
--              if (mcbsp->num_clks) {
--                      kfree(mcbsp->clks);
--                      mcbsp->clks = NULL;
--                      mcbsp->num_clks = 0;
--              }
-+              mcbsp->clk = NULL;
-               mcbsp->free = 0;
-               mcbsp->dev = NULL;
-       }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c
---- linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c   2009-05-10 23:48:28.000000000 +0200
-@@ -265,36 +265,51 @@
-  *        polarity    LEVEL          mask
-  *
-  ****************************************************************************/
-+static void gpio_irq_edge_ack(u32 irq)
-+{
-+      int pin = irq_to_gpio(irq);
-+
-+      writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
-+}
--static void gpio_irq_ack(u32 irq)
-+static void gpio_irq_edge_mask(u32 irq)
- {
--      int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
--      if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
--              int pin = irq_to_gpio(irq);
--              writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
--      }
-+      int pin = irq_to_gpio(irq);
-+      u32 u;
-+
-+      u = readl(GPIO_EDGE_MASK(pin));
-+      u &= ~(1 << (pin & 31));
-+      writel(u, GPIO_EDGE_MASK(pin));
-+}
-+
-+static void gpio_irq_edge_unmask(u32 irq)
-+{
-+      int pin = irq_to_gpio(irq);
-+      u32 u;
-+
-+      u = readl(GPIO_EDGE_MASK(pin));
-+      u |= 1 << (pin & 31);
-+      writel(u, GPIO_EDGE_MASK(pin));
- }
--static void gpio_irq_mask(u32 irq)
-+static void gpio_irq_level_mask(u32 irq)
- {
-       int pin = irq_to_gpio(irq);
--      int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
--      u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
--              GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
--      u32 u = readl(reg);
-+      u32 u;
-+
-+      u = readl(GPIO_LEVEL_MASK(pin));
-       u &= ~(1 << (pin & 31));
--      writel(u, reg);
-+      writel(u, GPIO_LEVEL_MASK(pin));
- }
--static void gpio_irq_unmask(u32 irq)
-+static void gpio_irq_level_unmask(u32 irq)
- {
-       int pin = irq_to_gpio(irq);
--      int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
--      u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
--              GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
--      u32 u = readl(reg);
-+      u32 u;
-+
-+      u = readl(GPIO_LEVEL_MASK(pin));
-       u |= 1 << (pin & 31);
--      writel(u, reg);
-+      writel(u, GPIO_LEVEL_MASK(pin));
- }
- static int gpio_irq_set_type(u32 irq, u32 type)
-@@ -316,9 +331,9 @@
-        * Set edge/level type.
-        */
-       if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
--              desc->handle_irq = handle_edge_irq;
-+              desc->chip = &orion_gpio_irq_edge_chip;
-       } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
--              desc->handle_irq = handle_level_irq;
-+              desc->chip = &orion_gpio_irq_level_chip;
-       } else {
-               printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type);
-               return -EINVAL;
-@@ -356,11 +371,19 @@
-       return 0;
- }
--struct irq_chip orion_gpio_irq_chip = {
--      .name           = "orion_gpio",
--      .ack            = gpio_irq_ack,
--      .mask           = gpio_irq_mask,
--      .unmask         = gpio_irq_unmask,
-+struct irq_chip orion_gpio_irq_edge_chip = {
-+      .name           = "orion_gpio_irq_edge",
-+      .ack            = gpio_irq_edge_ack,
-+      .mask           = gpio_irq_edge_mask,
-+      .unmask         = gpio_irq_edge_unmask,
-+      .set_type       = gpio_irq_set_type,
-+};
-+
-+struct irq_chip orion_gpio_irq_level_chip = {
-+      .name           = "orion_gpio_irq_level",
-+      .mask           = gpio_irq_level_mask,
-+      .mask_ack       = gpio_irq_level_mask,
-+      .unmask         = gpio_irq_level_unmask,
-       .set_type       = gpio_irq_set_type,
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h
---- linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h      2009-05-10 23:48:28.000000000 +0200
-@@ -31,7 +31,8 @@
- /*
-  * GPIO interrupt handling.
-  */
--extern struct irq_chip orion_gpio_irq_chip;
-+extern struct irq_chip orion_gpio_irq_edge_chip;
-+extern struct irq_chip orion_gpio_irq_level_chip;
- void orion_gpio_irq_handler(int irqoff);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c        2009-05-10 23:48:28.000000000 +0200
-@@ -248,7 +248,7 @@
-       &clk_48m,
- };
--void __init s3c64xx_register_clocks(void)
-+void s3c64xx_register_clocks(void)
- {
-       struct clk *clkp;
-       int ret;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c      2009-05-10 23:48:28.000000000 +0200
-@@ -417,4 +417,4 @@
-       return 0;
- }
--core_initcall(s3c64xx_gpiolib_init);
-+arch_initcall(s3c64xx_gpiolib_init);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h    2009-05-10 23:48:28.000000000 +0200
-@@ -117,7 +117,7 @@
- #define IRQ_ONENAND1          S3C64XX_IRQ_VIC1(12)
- #define IRQ_NFC                       S3C64XX_IRQ_VIC1(13)
- #define IRQ_CFCON             S3C64XX_IRQ_VIC1(14)
--#define IRQ_USBH              S3C64XX_IRQ_VIC1(15)
-+#define IRQ_UHOST             S3C64XX_IRQ_VIC1(15)
- #define IRQ_SPI0              S3C64XX_IRQ_VIC1(16)
- #define IRQ_SPI1              S3C64XX_IRQ_VIC1(17)
- #define IRQ_IIC                       S3C64XX_IRQ_VIC1(18)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c  2009-05-10 23:48:28.000000000 +0200
-@@ -207,7 +207,7 @@
- static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
- {
--      void __iomem *reg_base = uirq->regs;
-+      void *reg_base = uirq->regs;
-       unsigned int irq;
-       int offs;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c     2009-05-10 23:48:28.000000000 +0200
-@@ -14,15 +14,12 @@
- #include <linux/kernel.h>
- #include <linux/interrupt.h>
--#include <linux/gpio.h>
- #include <linux/irq.h>
- #include <linux/io.h>
- #include <asm/hardware/vic.h>
- #include <plat/regs-irqtype.h>
--#include <plat/regs-gpio.h>
--#include <plat/gpio-cfg.h>
- #include <mach/map.h>
- #include <plat/cpu.h>
-@@ -58,7 +55,7 @@
-       u32 mask;
-       mask = __raw_readl(S3C64XX_EINT0MASK);
--      mask &= ~eint_irq_to_bit(irq);
-+      mask |= eint_irq_to_bit(irq);
-       __raw_writel(mask, S3C64XX_EINT0MASK);
- }
-@@ -77,7 +74,6 @@
- static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
- {
-       int offs = eint_offset(irq);
--      int pin;
-       int shift;
-       u32 ctrl, mask;
-       u32 newvalue = 0;
-@@ -129,15 +125,6 @@
-       ctrl |= newvalue << shift;
-       __raw_writel(ctrl, reg);
--      /* set the GPIO pin appropriately */
--
--      if (offs < 23)
--              pin = S3C64XX_GPN(offs);
--      else
--              pin = S3C64XX_GPM(offs - 23);
--
--      s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
--
-       return 0;
- }
-@@ -194,7 +181,7 @@
-       s3c_irq_demux_eint(20, 27);
- }
--static int __init s3c64xx_init_irq_eint(void)
-+int __init s3c64xx_init_irq_eint(void)
- {
-       int irq;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c        2009-05-10 23:48:28.000000000 +0200
-@@ -36,7 +36,7 @@
-  * ext_xtal_mux for want of an actual name from the manual.
- */
--static struct clk clk_ext_xtal_mux = {
-+struct clk clk_ext_xtal_mux = {
-       .name           = "ext_xtal",
-       .id             = -1,
- };
-@@ -63,7 +63,7 @@
-       void __iomem            *reg_divider;
- };
--static struct clk clk_fout_apll = {
-+struct clk clk_fout_apll = {
-       .name           = "fout_apll",
-       .id             = -1,
- };
-@@ -78,7 +78,7 @@
-       .nr_sources     = ARRAY_SIZE(clk_src_apll_list),
- };
--static struct clksrc_clk clk_mout_apll = {
-+struct clksrc_clk clk_mout_apll = {
-       .clk    = {
-               .name           = "mout_apll",
-               .id             = -1,
-@@ -88,7 +88,7 @@
-       .sources        = &clk_src_apll,
- };
--static struct clk clk_fout_epll = {
-+struct clk clk_fout_epll = {
-       .name           = "fout_epll",
-       .id             = -1,
- };
-@@ -103,7 +103,7 @@
-       .nr_sources     = ARRAY_SIZE(clk_src_epll_list),
- };
--static struct clksrc_clk clk_mout_epll = {
-+struct clksrc_clk clk_mout_epll = {
-       .clk    = {
-               .name           = "mout_epll",
-               .id             = -1,
-@@ -123,7 +123,7 @@
-       .nr_sources     = ARRAY_SIZE(clk_src_mpll_list),
- };
--static struct clksrc_clk clk_mout_mpll = {
-+struct clksrc_clk clk_mout_mpll = {
-       .clk = {
-               .name           = "mout_mpll",
-               .id             = -1,
-@@ -145,7 +145,7 @@
-       return rate;
- }
--static struct clk clk_dout_mpll = {
-+struct clk clk_dout_mpll = {
-       .name           = "dout_mpll",
-       .id             = -1,
-       .parent         = &clk_mout_mpll.clk,
-@@ -189,10 +189,10 @@
- };
- static struct clk *clkset_uhost_list[] = {
--      &clk_48m,
-       &clk_mout_epll.clk,
-       &clk_dout_mpll,
-       &clk_fin_epll,
-+      &clk_48m,
- };
- static struct clk_sources clkset_uhost = {
-@@ -239,12 +239,10 @@
-       rate = clk_round_rate(clk, rate);
-       div = clk_get_rate(clk->parent) / rate;
--      if (div > 16)
--              return -EINVAL;
-       val = __raw_readl(reg);
--      val &= ~(0xf << sclk->shift);
--      val |= (div - 1) << sclk->shift;
-+      val &= ~sclk->mask;
-+      val |= (rate - 1) << sclk->shift;
-       __raw_writel(val, reg);
-       return 0;
-@@ -353,7 +351,7 @@
- static struct clksrc_clk clk_usbhost = {
-       .clk    = {
--              .name           = "usb-bus-host",
-+              .name           = "usb-host-bus",
-               .id             = -1,
-               .ctrlbit        = S3C_CLKCON_SCLK_UHOST,
-               .enable         = s3c64xx_sclk_ctrl,
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/tools/mach-types linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types
---- linux-2.6.29.owrt/arch/arm/tools/mach-types        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types    2009-05-10 23:48:28.000000000 +0200
-@@ -12,7 +12,7 @@
- #
- #   http://www.arm.linux.org.uk/developer/machines/?action=new
- #
--# Last update: Thu Mar 12 18:01:45 2009
-+# Last update: Sun Nov 30 16:39:36 2008
- #
- # machine_is_xxx      CONFIG_xxxx             MACH_TYPE_xxx           number
- #
-@@ -1811,7 +1811,7 @@
- jade                  MACH_JADE               JADE                    1821
- ks8695_softplc                MACH_KS8695_SOFTPLC     KS8695_SOFTPLC          1822
- gprisc3                       MACH_GPRISC3            GPRISC3                 1823
--stamp9g20             MACH_STAMP9G20          STAMP9G20               1824
-+stamp9260             MACH_STAMP9260          STAMP9260               1824
- smdk6430              MACH_SMDK6430           SMDK6430                1825
- smdkc100              MACH_SMDKC100           SMDKC100                1826
- tavorevb              MACH_TAVOREVB           TAVOREVB                1827
-@@ -1993,134 +1993,4 @@
- benzina                       MACH_BENZINA            BENZINA                 2003
- blaze                 MACH_BLAZE              BLAZE                   2004
- linkstation_ls_hgl    MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL      2005
--htckovsky             MACH_HTCVENUS           HTCVENUS                2006
--sony_prs505           MACH_SONY_PRS505        SONY_PRS505             2007
--hanlin_v3             MACH_HANLIN_V3          HANLIN_V3               2008
--sapphira              MACH_SAPPHIRA           SAPPHIRA                2009
--dack_sda_01           MACH_DACK_SDA_01        DACK_SDA_01             2010
--armbox                        MACH_ARMBOX             ARMBOX                  2011
--harris_rvp            MACH_HARRIS_RVP         HARRIS_RVP              2012
--ribaldo                       MACH_RIBALDO            RIBALDO                 2013
--agora                 MACH_AGORA              AGORA                   2014
--omap3_mini            MACH_OMAP3_MINI         OMAP3_MINI              2015
--a9sam6432_b           MACH_A9SAM6432_B        A9SAM6432_B             2016
--usg2410                       MACH_USG2410            USG2410                 2017
--pc72052_i10_revb      MACH_PC72052_I10_REVB   PC72052_I10_REVB        2018
--mx35_exm32            MACH_MX35_EXM32         MX35_EXM32              2019
--topas910              MACH_TOPAS910           TOPAS910                2020
--hyena                 MACH_HYENA              HYENA                   2021
--pospax                        MACH_POSPAX             POSPAX                  2022
--hdl_gx                        MACH_HDL_GX             HDL_GX                  2023
--ctera_4bay            MACH_CTERA_4BAY         CTERA_4BAY              2024
--ctera_plug_c          MACH_CTERA_PLUG_C       CTERA_PLUG_C            2025
--crwea_plug_i          MACH_CRWEA_PLUG_I       CRWEA_PLUG_I            2026
--egauge2                       MACH_EGAUGE2            EGAUGE2                 2027
--didj                  MACH_DIDJ               DIDJ                    2028
--m_s3c2443             MACH_MEISTER            MEISTER                 2029
--htcblackstone         MACH_HTCBLACKSTONE      HTCBLACKSTONE           2030
--cpuat9g20             MACH_CPUAT9G20          CPUAT9G20               2031
--smdk6440              MACH_SMDK6440           SMDK6440                2032
--omap_35xx_mvp         MACH_OMAP_35XX_MVP      OMAP_35XX_MVP           2033
--ctera_plug_i          MACH_CTERA_PLUG_I       CTERA_PLUG_I            2034
--pvg610_100            MACH_PVG610             PVG610                  2035
--hprw6815              MACH_HPRW6815           HPRW6815                2036
--omap3_oswald          MACH_OMAP3_OSWALD       OMAP3_OSWALD            2037
--nas4220b              MACH_NAS4220B           NAS4220B                2038
--htcraphael_cdma               MACH_HTCRAPHAEL_CDMA    HTCRAPHAEL_CDMA         2039
--htcdiamond_cdma               MACH_HTCDIAMOND_CDMA    HTCDIAMOND_CDMA         2040
--scaler                        MACH_SCALER             SCALER                  2041
--zylonite2             MACH_ZYLONITE2          ZYLONITE2               2042
--aspenite              MACH_ASPENITE           ASPENITE                2043
--teton                 MACH_TETON              TETON                   2044
--ttc_dkb                       MACH_TTC_DKB            TTC_DKB                 2045
--bishop2                       MACH_BISHOP2            BISHOP2                 2046
--ippv5                 MACH_IPPV5              IPPV5                   2047
--farm926                       MACH_FARM926            FARM926                 2048
--mmccpu                        MACH_MMCCPU             MMCCPU                  2049
--sgmsfl                        MACH_SGMSFL             SGMSFL                  2050
--tt8000                        MACH_TT8000             TT8000                  2051
--zrn4300lp             MACH_ZRN4300LP          ZRN4300LP               2052
--mptc                  MACH_MPTC               MPTC                    2053
--h6051                 MACH_H6051              H6051                   2054
--pvg610_101            MACH_PVG610_101         PVG610_101              2055
--stamp9261_pc_evb      MACH_STAMP9261_PC_EVB   STAMP9261_PC_EVB        2056
--pelco_odysseus                MACH_PELCO_ODYSSEUS     PELCO_ODYSSEUS          2057
--tny_a9260             MACH_TNY_A9260          TNY_A9260               2058
--tny_a9g20             MACH_TNY_A9G20          TNY_A9G20               2059
--aesop_mp2530f         MACH_AESOP_MP2530F      AESOP_MP2530F           2060
--dx900                 MACH_DX900              DX900                   2061
--cpodc2                        MACH_CPODC2             CPODC2                  2062
--tilt_8925             MACH_TILT_8925          TILT_8925               2063
--davinci_dm357_evm     MACH_DAVINCI_DM357_EVM  DAVINCI_DM357_EVM       2064
--swordfish             MACH_SWORDFISH          SWORDFISH               2065
--corvus                        MACH_CORVUS             CORVUS                  2066
--taurus                        MACH_TAURUS             TAURUS                  2067
--axm                   MACH_AXM                AXM                     2068
--axc                   MACH_AXC                AXC                     2069
--baby                  MACH_BABY               BABY                    2070
--mp200                 MACH_MP200              MP200                   2071
--pcm043                        MACH_PCM043             PCM043                  2072
--hanlin_v3c            MACH_HANLIN_V3C         HANLIN_V3C              2073
--kbk9g20                       MACH_KBK9G20            KBK9G20                 2074
--adsturbog5            MACH_ADSTURBOG5         ADSTURBOG5              2075
--avenger_lite1         MACH_AVENGER_LITE1      AVENGER_LITE1           2076
--suc82x                        MACH_SUC                SUC                     2077
--at91sam7s256          MACH_AT91SAM7S256       AT91SAM7S256            2078
--mendoza                       MACH_MENDOZA            MENDOZA                 2079
--kira                  MACH_KIRA               KIRA                    2080
--mx1hbm                        MACH_MX1HBM             MX1HBM                  2081
--quatro43xx            MACH_QUATRO43XX         QUATRO43XX              2082
--quatro4230            MACH_QUATRO4230         QUATRO4230              2083
--nsb400                        MACH_NSB400             NSB400                  2084
--drp255                        MACH_DRP255             DRP255                  2085
--thoth                 MACH_THOTH              THOTH                   2086
--firestone             MACH_FIRESTONE          FIRESTONE               2087
--asusp750              MACH_ASUSP750           ASUSP750                2088
--ctera_dl              MACH_CTERA_DL           CTERA_DL                2089
--socr                  MACH_SOCR               SOCR                    2090
--htcoxygen             MACH_HTCOXYGEN          HTCOXYGEN               2091
--heroc                 MACH_HEROC              HEROC                   2092
--zeno6800              MACH_ZENO6800           ZENO6800                2093
--sc2mcs                        MACH_SC2MCS             SC2MCS                  2094
--gene100                       MACH_GENE100            GENE100                 2095
--as353x                        MACH_AS353X             AS353X                  2096
--sheevaplug            MACH_SHEEVAPLUG         SHEEVAPLUG              2097
--at91sam9g20           MACH_AT91SAM9G20        AT91SAM9G20             2098
--mv88f6192gtw_fe               MACH_MV88F6192GTW_FE    MV88F6192GTW_FE         2099
--cc9200                        MACH_CC9200             CC9200                  2100
--sm9200                        MACH_SM9200             SM9200                  2101
--tp9200                        MACH_TP9200             TP9200                  2102
--snapperdv             MACH_SNAPPERDV          SNAPPERDV               2103
--avengers_lite         MACH_AVENGERS_LITE      AVENGERS_LITE           2104
--avengers_lite1                MACH_AVENGERS_LITE1     AVENGERS_LITE1          2105
--omap3axon             MACH_OMAP3AXON          OMAP3AXON               2106
--ma8xx                 MACH_MA8XX              MA8XX                   2107
--mp201ek                       MACH_MP201EK            MP201EK                 2108
--davinci_tux           MACH_DAVINCI_TUX        DAVINCI_TUX             2109
--mpa1600                       MACH_MPA1600            MPA1600                 2110
--pelco_troy            MACH_PELCO_TROY         PELCO_TROY              2111
--nsb667                        MACH_NSB667             NSB667                  2112
--rovers5_4mpix         MACH_ROVERS5_4MPIX      ROVERS5_4MPIX           2113
--twocom                        MACH_TWOCOM             TWOCOM                  2114
--ubisys_p9_rcu3r2      MACH_UBISYS_P9_RCU3R2   UBISYS_P9_RCU3R2        2115
--hero_espresso         MACH_HERO_ESPRESSO      HERO_ESPRESSO           2116
--afeusb                        MACH_AFEUSB             AFEUSB                  2117
--t830                  MACH_T830               T830                    2118
--spd8020_cc            MACH_SPD8020_CC         SPD8020_CC              2119
--om_3d7k                       MACH_OM_3D7K            OM_3D7K                 2120
--picocom2              MACH_PICOCOM2           PICOCOM2                2121
--uwg4mx27              MACH_UWG4MX27           UWG4MX27                2122
--uwg4mx31              MACH_UWG4MX31           UWG4MX31                2123
--cherry                        MACH_CHERRY             CHERRY                  2124
--mx51_babbage          MACH_MX51_BABBAGE       MX51_BABBAGE            2125
--s3c2440turkiye                MACH_S3C2440TURKIYE     S3C2440TURKIYE          2126
--tx37                  MACH_TX37               TX37                    2127
--sbc2800_9g20          MACH_SBC2800_9G20       SBC2800_9G20            2128
--benzglb                       MACH_BENZGLB            BENZGLB                 2129
--benztd                        MACH_BENZTD             BENZTD                  2130
--cartesio_plus         MACH_CARTESIO_PLUS      CARTESIO_PLUS           2131
--solrad_g20            MACH_SOLRAD_G20         SOLRAD_G20              2132
--mx27wallace           MACH_MX27WALLACE        MX27WALLACE             2133
--fmzwebmodul           MACH_FMZWEBMODUL        FMZWEBMODUL             2134
--rd78x00_masa          MACH_RD78X00_MASA       RD78X00_MASA            2135
--smallogger            MACH_SMALLOGGER         SMALLOGGER              2136
-+htcvenus              MACH_HTCVENUS           HTCVENUS                2006
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h
---- linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h      2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h  2009-05-10 23:48:28.000000000 +0200
-@@ -116,7 +116,6 @@
-       int     enable_pin;     /* chip enable */
-       int     det_pin;        /* card detect */
-       int     rdy_pin;        /* ready/busy */
--      u8      rdy_pin_active_low;     /* rdy_pin value is inverted */
-       u8      ale;            /* address line number connected to ALE */
-       u8      cle;            /* address line number connected to CLE */
-       u8      bus_width_16;   /* buswidth is 16 bit */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h   2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h       2009-05-10 23:48:28.000000000 +0200
-@@ -1,9 +1,30 @@
- /*
-- * bfin_sport.h - userspace header for bfin sport driver
-+ * File:         include/asm-blackfin/bfin_sport.h
-+ * Based on:
-+ * Author:       Roy Huang (roy.huang@analog.com)
-  *
-- * Copyright 2004-2008 Analog Devices Inc.
-+ * Created:      Thu Aug. 24 2006
-+ * Description:
-  *
-- * Licensed under the GPL-2 or later.
-+ * Modified:
-+ *               Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs:         Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * 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, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-  */
- #ifndef __BFIN_SPORT_H__
-@@ -21,10 +42,11 @@
- #define NORM_FORMAT   0x0
- #define ALAW_FORMAT   0x2
- #define ULAW_FORMAT   0x3
-+struct sport_register;
- /* Function driver which use sport must initialize the structure */
- struct sport_config {
--      /* TDM (multichannels), I2S or other mode */
-+      /*TDM (multichannels), I2S or other mode */
-       unsigned int mode:3;
-       /* if TDM mode is selected, channels must be set */
-@@ -50,18 +72,12 @@
-       int serial_clk;
-       int fsync_clk;
--      unsigned int data_format:2;     /* Normal, u-law or a-law */
-+      unsigned int data_format:2;     /*Normal, u-law or a-law */
-       int word_len;           /* How length of the word in bits, 3-32 bits */
-       int dma_enabled;
- };
--/* Userspace interface */
--#define SPORT_IOC_MAGIC               'P'
--#define SPORT_IOC_CONFIG      _IOWR('P', 0x01, struct sport_config)
--
--#ifdef __KERNEL__
--
- struct sport_register {
-       unsigned short tcr1;
-       unsigned short reserved0;
-@@ -101,6 +117,9 @@
-       unsigned long mrcs3;
- };
-+#define SPORT_IOC_MAGIC               'P'
-+#define SPORT_IOC_CONFIG      _IOWR('P', 0x01, struct sport_config)
-+
- struct sport_dev {
-       struct cdev cdev;       /* Char device structure */
-@@ -130,8 +149,6 @@
-       struct sport_config config;
- };
--#endif
--
- #define SPORT_TCR1    0
- #define       SPORT_TCR2      1
- #define       SPORT_TCLKDIV   2
-@@ -152,4 +169,4 @@
- #define SPORT_MRCS2   22
- #define SPORT_MRCS3   23
--#endif
-+#endif                                /*__BFIN_SPORT_H__*/
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h     2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 23:48:28.000000000 +0200
-@@ -63,23 +63,23 @@
- csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
-                  unsigned short proto, __wsum sum)
- {
--      unsigned int carry;
--      __asm__ ("%0 = %0 + %2;\n\t"
--              "CC = AC0;\n\t"
--              "%1 = CC;\n\t"
--              "%0 = %0 + %1;\n\t"
--              "%0 = %0 + %3;\n\t"
--              "CC = AC0;\n\t"
--              "%1 = CC;\n\t"
--              "%0 = %0 + %1;\n\t"
--              "%0 = %0 + %4;\n\t"
--              "CC = AC0;\n\t"
--              "%1 = CC;\n\t"
--              "%0 = %0 + %1;\n\t"
--              : "=d" (sum), "=&d" (carry)
--              : "d" (daddr), "d" (saddr), "d" ((len + proto) << 8), "0"(sum)
--              : "CC");
-+      __asm__ ("%0 = %0 + %1;\n\t"
-+               "CC = AC0;\n\t"
-+               "if !CC jump 4;\n\t"
-+               "%0 = %0 + %4;\n\t"
-+               "%0 = %0 + %2;\n\t"
-+               "CC = AC0;\n\t"
-+                 "if !CC jump 4;\n\t"
-+                 "%0 = %0 + %4;\n\t"
-+               "%0 = %0 + %3;\n\t"
-+               "CC = AC0;\n\t"
-+                 "if !CC jump 4;\n\t"
-+                 "%0 = %0 + %4;\n\t"
-+                 "NOP;\n\t"
-+               : "=d" (sum)
-+               : "d" (daddr), "d" (saddr), "d" ((ntohs(len)<<16)+proto*256), "d" (1), "0"(sum)
-+               : "CC");
-       return (sum);
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h        2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h    2009-05-10 23:48:28.000000000 +0200
-@@ -13,7 +13,29 @@
- static inline void __delay(unsigned long loops)
- {
--__asm__ __volatile__ (
-+      if (ANOMALY_05000312) {
-+              /* Interrupted loads to loop registers -> bad */
-+              unsigned long tmp;
-+              __asm__ __volatile__(
-+                      "[--SP] = LC0;"
-+                      "[--SP] = LT0;"
-+                      "[--SP] = LB0;"
-+                      "LSETUP (1f,1f) LC0 = %1;"
-+                      "1: NOP;"
-+                      /* We take advantage of the fact that LC0 is 0 at
-+                       * the end of the loop.  Otherwise we'd need some
-+                       * NOPs after the CLI here.
-+                       */
-+                      "CLI %0;"
-+                      "LB0 = [SP++];"
-+                      "LT0 = [SP++];"
-+                      "LC0 = [SP++];"
-+                      "STI %0;"
-+                      : "=d" (tmp)
-+                      : "a" (loops)
-+              );
-+      } else
-+              __asm__ __volatile__ (
-                       "LSETUP(1f, 1f) LC0 = %0;"
-                       "1: NOP;"
-                       :
-@@ -25,15 +47,16 @@
- #include <linux/param.h>      /* needed for HZ */
- /*
-- * close approximation borrowed from m68knommu to avoid 64-bit math
-+ * Use only for very small delays ( < 1 msec).  Should probably use a
-+ * lookup table, really, as the multiplications take much too long with
-+ * short delays.  This is a "reasonable" implementation, though (and the
-+ * first constant multiplications gets optimized away if the delay is
-+ * a constant)
-  */
--
--#define       HZSCALE         (268435456 / (1000000/HZ))
--
- static inline void udelay(unsigned long usecs)
- {
-       extern unsigned long loops_per_jiffy;
--      __delay((((usecs * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6);
-+      __delay(usecs * loops_per_jiffy / (1000000 / HZ));
- }
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h     2009-05-10 23:48:28.000000000 +0200
-@@ -27,6 +27,60 @@
-  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-  */
-+/*
-+*  Number     BF537/6/4    BF561    BF533/2/1
-+*             BF527/5/2
-+*
-+*  GPIO_0       PF0         PF0        PF0
-+*  GPIO_1       PF1         PF1        PF1
-+*  GPIO_2       PF2         PF2        PF2
-+*  GPIO_3       PF3         PF3        PF3
-+*  GPIO_4       PF4         PF4        PF4
-+*  GPIO_5       PF5         PF5        PF5
-+*  GPIO_6       PF6         PF6        PF6
-+*  GPIO_7       PF7         PF7        PF7
-+*  GPIO_8       PF8         PF8        PF8
-+*  GPIO_9       PF9         PF9        PF9
-+*  GPIO_10      PF10        PF10       PF10
-+*  GPIO_11      PF11        PF11       PF11
-+*  GPIO_12      PF12        PF12       PF12
-+*  GPIO_13      PF13        PF13       PF13
-+*  GPIO_14      PF14        PF14       PF14
-+*  GPIO_15      PF15        PF15       PF15
-+*  GPIO_16      PG0         PF16
-+*  GPIO_17      PG1         PF17
-+*  GPIO_18      PG2         PF18
-+*  GPIO_19      PG3         PF19
-+*  GPIO_20      PG4         PF20
-+*  GPIO_21      PG5         PF21
-+*  GPIO_22      PG6         PF22
-+*  GPIO_23      PG7         PF23
-+*  GPIO_24      PG8         PF24
-+*  GPIO_25      PG9         PF25
-+*  GPIO_26      PG10        PF26
-+*  GPIO_27      PG11        PF27
-+*  GPIO_28      PG12        PF28
-+*  GPIO_29      PG13        PF29
-+*  GPIO_30      PG14        PF30
-+*  GPIO_31      PG15        PF31
-+*  GPIO_32      PH0         PF32
-+*  GPIO_33      PH1         PF33
-+*  GPIO_34      PH2         PF34
-+*  GPIO_35      PH3         PF35
-+*  GPIO_36      PH4         PF36
-+*  GPIO_37      PH5         PF37
-+*  GPIO_38      PH6         PF38
-+*  GPIO_39      PH7         PF39
-+*  GPIO_40      PH8         PF40
-+*  GPIO_41      PH9         PF41
-+*  GPIO_42      PH10        PF42
-+*  GPIO_43      PH11        PF43
-+*  GPIO_44      PH12        PF44
-+*  GPIO_45      PH13        PF45
-+*  GPIO_46      PH14        PF46
-+*  GPIO_47      PH15        PF47
-+*/
-+
- #ifndef __ARCH_BLACKFIN_GPIO_H__
- #define __ARCH_BLACKFIN_GPIO_H__
-@@ -241,6 +295,10 @@
- int bfin_gpio_get_value(unsigned gpio);
- void bfin_gpio_set_value(unsigned gpio, int value);
-+#ifndef BF548_FAMILY
-+#define bfin_gpio_set_value(gpio, value)    set_gpio_data(gpio, value)
-+#endif
-+
- #ifdef CONFIG_GPIOLIB
- #include <asm-generic/gpio.h>         /* cansleep wrappers */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h   2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h       2009-05-10 23:48:28.000000000 +0200
-@@ -1,5 +1,5 @@
- /*   -*- linux-c -*-
-- *   include/asm-blackfin/ipipe_base.h
-+ *   include/asm-blackfin/_baseipipe.h
-  *
-  *   Copyright (C) 2007 Philippe Gerum.
-  *
-@@ -27,9 +27,8 @@
- #define IPIPE_NR_XIRQS                NR_IRQS
- #define IPIPE_IRQ_ISHIFT      5       /* 2^5 for 32bits arch. */
--/* Blackfin-specific, per-cpu pipeline status */
--#define IPIPE_SYNCDEFER_FLAG  15
--#define IPIPE_SYNCDEFER_MASK  (1L << IPIPE_SYNCDEFER_MASK)
-+/* Blackfin-specific, global domain flags */
-+#define IPIPE_ROOTLOCK_FLAG   1       /* Lock pipeline for root */
-  /* Blackfin traps -- i.e. exception vector numbers */
- #define IPIPE_NR_FAULTS               52 /* We leave a gap after VEC_ILL_RES. */
-@@ -49,6 +48,11 @@
- #ifndef __ASSEMBLY__
-+#include <linux/bitops.h>
-+
-+extern int test_bit(int nr, const void *addr);
-+
-+
- extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
- static inline void __ipipe_stall_root(void)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h        2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h    2009-05-10 23:48:28.000000000 +0200
-@@ -35,9 +35,9 @@
- #include <asm/atomic.h>
- #include <asm/traps.h>
--#define IPIPE_ARCH_STRING     "1.9-00"
-+#define IPIPE_ARCH_STRING     "1.8-00"
- #define IPIPE_MAJOR_NUMBER    1
--#define IPIPE_MINOR_NUMBER    9
-+#define IPIPE_MINOR_NUMBER    8
- #define IPIPE_PATCH_NUMBER    0
- #ifdef CONFIG_SMP
-@@ -83,9 +83,9 @@
-                               "%2 = CYCLES2\n"                \
-                               "CC = %2 == %0\n"               \
-                               "if ! CC jump 1b\n"             \
--                              : "=d,a" (((unsigned long *)&t)[1]),    \
--                                "=d,a" (((unsigned long *)&t)[0]),    \
--                                "=d,a" (__cy2)                                \
-+                              : "=r" (((unsigned long *)&t)[1]),      \
-+                                "=r" (((unsigned long *)&t)[0]),      \
-+                                "=r" (__cy2)                          \
-                               : /*no input*/ : "CC");                 \
-       t;                                                              \
-       })
-@@ -118,40 +118,35 @@
- #define __ipipe_disable_irq(irq)      (irq_desc[irq].chip->mask(irq))
--static inline int __ipipe_check_tickdev(const char *devname)
--{
--      return 1;
--}
-+#define __ipipe_lock_root()                                   \
-+      set_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
--static inline void __ipipe_lock_root(void)
--{
--      set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
--}
--
--static inline void __ipipe_unlock_root(void)
--{
--      clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
--}
-+#define __ipipe_unlock_root()                                 \
-+      clear_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
- void __ipipe_enable_pipeline(void);
- #define __ipipe_hook_critical_ipi(ipd) do { } while (0)
--#define __ipipe_sync_pipeline  ___ipipe_sync_pipeline
--void ___ipipe_sync_pipeline(unsigned long syncmask);
-+#define __ipipe_sync_pipeline(syncmask)                                       \
-+      do {                                                            \
-+              struct ipipe_domain *ipd = ipipe_current_domain;        \
-+              if (likely(ipd != ipipe_root_domain || !test_bit(IPIPE_ROOTLOCK_FLAG, &ipd->flags))) \
-+                      __ipipe_sync_stage(syncmask);                   \
-+      } while (0)
- void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
- int __ipipe_get_irq_priority(unsigned irq);
-+int __ipipe_get_irqthread_priority(unsigned irq);
-+
- void __ipipe_stall_root_raw(void);
- void __ipipe_unstall_root_raw(void);
- void __ipipe_serial_debug(const char *fmt, ...);
--asmlinkage void __ipipe_call_irqtail(unsigned long addr);
--
- DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
- extern unsigned long __ipipe_core_clock;
-@@ -167,25 +162,42 @@
- #define __ipipe_run_irqtail()  /* Must be a macro */                  \
-       do {                                                            \
-+              asmlinkage void __ipipe_call_irqtail(void);             \
-               unsigned long __pending;                                \
--              CSYNC();                                                \
-+              CSYNC();                                        \
-               __pending = bfin_read_IPEND();                          \
-               if (__pending & 0x8000) {                               \
-                       __pending &= ~0x8010;                           \
-                       if (__pending && (__pending & (__pending - 1)) == 0) \
--                              __ipipe_call_irqtail(__ipipe_irq_tail_hook); \
-+                              __ipipe_call_irqtail();                 \
-               }                                                       \
-       } while (0)
- #define __ipipe_run_isr(ipd, irq)                                     \
-       do {                                                            \
-               if (ipd == ipipe_root_domain) {                         \
--                      local_irq_enable_hw();                          \
--                      if (ipipe_virtual_irq_p(irq))                   \
-+                      /*                                              \
-+                       * Note: the I-pipe implements a threaded interrupt model on \
-+                       * this arch for Linux external IRQs. The interrupt handler we \
-+                       * call here only wakes up the associated IRQ thread. \
-+                       */                                             \
-+                      if (ipipe_virtual_irq_p(irq)) {                 \
-+                              /* No irqtail here; virtual interrupts have no effect \
-+                                 on IPEND so there is no need for processing \
-+                                 deferral. */                         \
-+                              local_irq_enable_nohead(ipd);           \
-                               ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
--                      else                                            \
-+                              local_irq_disable_nohead(ipd);          \
-+                      } else                                          \
-+                              /*                                      \
-+                               * No need to run the irqtail here either; \
-+                               * we can't be preempted by hw IRQs, so \
-+                               * non-Linux IRQs cannot stack over the short \
-+                               * thread wakeup code. Which in turn means \
-+                               * that no irqtail condition could be pending \
-+                               * for domains above Linux in the pipeline. \
-+                               */                                     \
-                               ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
--                      local_irq_disable_hw();                         \
-               } else {                                                \
-                       __clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
-                       local_irq_enable_nohead(ipd);                   \
-@@ -205,24 +217,42 @@
- int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
--#ifdef CONFIG_GENERIC_CLOCKEVENTS
--#define IRQ_SYSTMR            IRQ_CORETMR
--#define IRQ_PRIOTMR           IRQ_CORETMR
--#else
-+#define IS_SYSIRQ(irq)                ((irq) > IRQ_CORETMR && (irq) <= SYS_IRQS)
-+#define IS_GPIOIRQ(irq)               ((irq) >= GPIO_IRQ_BASE && (irq) < NR_IRQS)
-+
- #define IRQ_SYSTMR            IRQ_TIMER0
- #define IRQ_PRIOTMR           CONFIG_IRQ_TIMER0
--#endif
--#ifdef CONFIG_BF561
-+#if defined(CONFIG_BF531) || defined(CONFIG_BF532) || defined(CONFIG_BF533)
-+#define PRIO_GPIODEMUX(irq)   CONFIG_PFA
-+#elif defined(CONFIG_BF534) || defined(CONFIG_BF536) || defined(CONFIG_BF537)
-+#define PRIO_GPIODEMUX(irq)   CONFIG_IRQ_PROG_INTA
-+#elif defined(CONFIG_BF52x)
-+#define PRIO_GPIODEMUX(irq)   ((irq) == IRQ_PORTF_INTA ? CONFIG_IRQ_PORTF_INTA : \
-+                               (irq) == IRQ_PORTG_INTA ? CONFIG_IRQ_PORTG_INTA : \
-+                               (irq) == IRQ_PORTH_INTA ? CONFIG_IRQ_PORTH_INTA : \
-+                               -1)
-+#elif defined(CONFIG_BF561)
-+#define PRIO_GPIODEMUX(irq)   ((irq) == IRQ_PROG0_INTA ? CONFIG_IRQ_PROG0_INTA : \
-+                               (irq) == IRQ_PROG1_INTA ? CONFIG_IRQ_PROG1_INTA : \
-+                               (irq) == IRQ_PROG2_INTA ? CONFIG_IRQ_PROG2_INTA : \
-+                               -1)
- #define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
- #define bfin_write_TIMER_ENABLE(val)  bfin_write_TMRS8_ENABLE(val)
- #define bfin_write_TIMER_STATUS(val)  bfin_write_TMRS8_STATUS(val)
- #define bfin_read_TIMER_STATUS()      bfin_read_TMRS8_STATUS()
- #elif defined(CONFIG_BF54x)
-+#define PRIO_GPIODEMUX(irq)   ((irq) == IRQ_PINT0 ? CONFIG_IRQ_PINT0 : \
-+                               (irq) == IRQ_PINT1 ? CONFIG_IRQ_PINT1 : \
-+                               (irq) == IRQ_PINT2 ? CONFIG_IRQ_PINT2 : \
-+                               (irq) == IRQ_PINT3 ? CONFIG_IRQ_PINT3 : \
-+                               -1)
- #define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
- #define bfin_write_TIMER_ENABLE(val)  bfin_write_TIMER_ENABLE0(val)
- #define bfin_write_TIMER_STATUS(val)  bfin_write_TIMER_STATUS0(val)
- #define bfin_read_TIMER_STATUS(val)   bfin_read_TIMER_STATUS0(val)
-+#else
-+# error "no PRIO_GPIODEMUX() for this part"
- #endif
- #define __ipipe_root_tick_p(regs)     ((regs->ipend & 0x10) != 0)
-@@ -245,6 +275,4 @@
- #endif /* !CONFIG_IPIPE */
--#define ipipe_update_tick_evtdev(evtdev)      do { } while (0)
--
- #endif        /* !__ASM_BLACKFIN_IPIPE_H */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h      2009-05-10 23:48:28.000000000 +0200
-@@ -61,38 +61,20 @@
- #define raw_irqs_disabled_flags(flags)        (!irqs_enabled_from_flags_hw(flags))
- #define local_test_iflag_hw(x)                irqs_enabled_from_flags_hw(x)
--#define local_save_flags(x)                                    \
--      do {                                                     \
--              (x) = __ipipe_test_root() ?                      \
--                      __all_masked_irq_flags : bfin_irq_flags; \
--              barrier();                                       \
--      } while (0)
--
--#define local_irq_save(x)                                      \
--      do {                                                     \
--              (x) = __ipipe_test_and_stall_root() ?            \
-+#define local_save_flags(x)                                           \
-+      do {                                                            \
-+              (x) = __ipipe_test_root() ? \
-                       __all_masked_irq_flags : bfin_irq_flags; \
--              barrier();                                       \
-       } while (0)
--static inline void local_irq_restore(unsigned long x)
--{
--      barrier();
--      __ipipe_restore_root(x == __all_masked_irq_flags);
--}
--
--#define local_irq_disable()                   \
--      do {                                    \
--              __ipipe_stall_root();           \
--              barrier();                      \
-+#define local_irq_save(x)                             \
-+      do {                                            \
-+              (x) = __ipipe_test_and_stall_root();    \
-       } while (0)
--static inline void local_irq_enable(void)
--{
--      barrier();
--      __ipipe_unstall_root();
--}
--
-+#define local_irq_restore(x)  __ipipe_restore_root(x)
-+#define local_irq_disable()   __ipipe_stall_root()
-+#define local_irq_enable()    __ipipe_unstall_root()
- #define irqs_disabled()               __ipipe_test_root()
- #define local_save_flags_hw(x) \
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild
---- linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild     2009-05-10 23:48:28.000000000 +0200
-@@ -1,4 +1,3 @@
- include include/asm-generic/Kbuild.asm
--unifdef-y += bfin_sport.h
- unifdef-y += fixed_code.h
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h     2009-05-10 23:48:28.000000000 +0200
-@@ -1,8 +1,32 @@
--/* Blackfin KGDB header
-+/*
-+ * File:         include/asm-blackfin/kgdb.h
-+ * Based on:
-+ * Author:       Sonic Zhang
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Rev:          $Id: kgdb_bfin_linux-2.6.x.patch 4934 2007-02-13 09:32:11Z sonicz $
-+ *
-+ * Modified:
-+ *               Copyright 2005-2006 Analog Devices Inc.
-+ *
-+ * Bugs:         Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright 2005-2009 Analog Devices Inc.
-+ * 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.
-  *
-- * Licensed under the GPL-2 or later.
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-  */
- #ifndef __ASM_BLACKFIN_KGDB_H__
-@@ -13,18 +37,17 @@
- /* gdb locks */
- #define KGDB_MAX_NO_CPUS 8
--/*
-- * BUFMAX defines the maximum number of characters in inbound/outbound buffers.
-- * At least NUMREGBYTES*2 are needed for register packets.
-- * Longer buffer is needed to list all threads.
-- */
-+/************************************************************************/
-+/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/
-+/* at least NUMREGBYTES*2 are needed for register packets */
-+/* Longer buffer is needed to list all threads */
- #define BUFMAX 2048
- /*
-- * Note that this register image is different from
-- * the register image that Linux produces at interrupt time.
-- *
-- * Linux's register image is defined by struct pt_regs in ptrace.h.
-+ *  Note that this register image is different from
-+ *  the register image that Linux produces at interrupt time.
-+ *  
-+ *  Linux's register image is defined by struct pt_regs in ptrace.h.
-  */
- enum regnames {
-   /* Core Registers */
-@@ -81,14 +104,14 @@
-   BFIN_RETX,
-   BFIN_RETN,
-   BFIN_RETE,
--
-+  
-   /* Pseudo Registers */
-   BFIN_PC,
-   BFIN_CC,
-   BFIN_EXTRA1,                /* Address of .text section.  */
-   BFIN_EXTRA2,                /* Address of .data section.  */
-   BFIN_EXTRA3,                /* Address of .bss section.  */
--  BFIN_FDPIC_EXEC,
-+  BFIN_FDPIC_EXEC, 
-   BFIN_FDPIC_INTERP,
-   /* MMRs */
-@@ -103,7 +126,7 @@
- static inline void arch_kgdb_breakpoint(void)
- {
--      asm("EXCPT 2;");
-+      asm("   EXCPT 2;");
- }
- #define BREAK_INSTR_SIZE      2
- #define CACHE_FLUSH_IS_SAFE   1
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h     2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 23:48:28.000000000 +0200
-@@ -115,7 +115,7 @@
- #define mem_SDRRC       (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num)
- /* Enable SCLK Out */
--#define mem_SDGCTL        (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
-+#define mem_SDGCTL        (0x80000000 | SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
- #else
- #define mem_SDRRC     CONFIG_MEM_SDRRC
- #define mem_SDGCTL    CONFIG_MEM_SDGCTL
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h      2009-05-10 23:48:28.000000000 +0200
-@@ -59,7 +59,6 @@
-       unsigned long icplb_fault_addr;
-       unsigned long retx;
-       unsigned long seqstat;
--      unsigned int __nmi_count;       /* number of times NMI asserted on this CPU */
- };
- extern struct blackfin_pda cpu_pda[];
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h       2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h   2009-05-10 23:48:28.000000000 +0200
-@@ -15,6 +15,6 @@
- extern void native_machine_power_off(void);
- /* common reboot workarounds */
--extern void bfin_reset_boot_spi_cs(unsigned short pin);
-+extern void bfin_gpio_reset_spi0_ssel1(void);
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h
---- linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h      2009-05-10 23:48:28.000000000 +0200
-@@ -122,7 +122,6 @@
- #define TIF_MEMDIE              4
- #define TIF_RESTORE_SIGMASK   5       /* restore signal mask in do_signal() */
- #define TIF_FREEZE              6       /* is freezing for suspend */
--#define TIF_IRQ_SYNC            7       /* sync pipeline stage */
- /* as above, but as bit values */
- #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
-@@ -131,7 +130,6 @@
- #define _TIF_POLLING_NRFLAG   (1<<TIF_POLLING_NRFLAG)
- #define _TIF_RESTORE_SIGMASK  (1<<TIF_RESTORE_SIGMASK)
- #define _TIF_FREEZE             (1<<TIF_FREEZE)
--#define _TIF_IRQ_SYNC           (1<<TIF_IRQ_SYNC)
- #define _TIF_WORK_MASK                0x0000FFFE      /* work to do on interrupt/exception return */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/Kconfig    2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig        2009-05-10 23:48:28.000000000 +0200
-@@ -169,51 +169,26 @@
-       help
-         BF542 Processor Support.
--config BF542M
--      bool "BF542m"
--      help
--        BF542 Processor Support.
--
- config BF544
-       bool "BF544"
-       help
-         BF544 Processor Support.
--config BF544M
--      bool "BF544m"
--      help
--        BF544 Processor Support.
--
- config BF547
-       bool "BF547"
-       help
-         BF547 Processor Support.
--config BF547M
--      bool "BF547m"
--      help
--        BF547 Processor Support.
--
- config BF548
-       bool "BF548"
-       help
-         BF548 Processor Support.
--config BF548M
--      bool "BF548m"
--      help
--        BF548 Processor Support.
--
- config BF549
-       bool "BF549"
-       help
-         BF549 Processor Support.
--config BF549M
--      bool "BF549m"
--      help
--        BF549 Processor Support.
--
- config BF561
-       bool "BF561"
-       help
-@@ -249,39 +224,39 @@
- config BF_REV_MIN
-       int
--      default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
-+      default 0 if (BF51x || BF52x || BF54x)
-       default 2 if (BF537 || BF536 || BF534)
--      default 3 if (BF561 || BF533 || BF532 || BF531 || BF54xM)
-+      default 3 if (BF561 ||BF533 || BF532 || BF531)
-       default 4 if (BF538 || BF539)
- config BF_REV_MAX
-       int
--      default 2 if (BF51x || BF52x || (BF54x && !BF54xM))
--      default 3 if (BF537 || BF536 || BF534 || BF54xM)
-+      default 2 if (BF51x || BF52x || BF54x)
-+      default 3 if (BF537 || BF536 || BF534)
-       default 5 if (BF561 || BF538 || BF539)
-       default 6 if (BF533 || BF532 || BF531)
- choice
-       prompt "Silicon Rev"
--      default BF_REV_0_1 if (BF51x || BF52x || (BF54x && !BF54xM))
-+      default BF_REV_0_1 if (BF51x || BF52x || BF54x)
-       default BF_REV_0_2 if (BF534 || BF536 || BF537)
--      default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF54xM || BF561)
-+      default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF561)
- config BF_REV_0_0
-       bool "0.0"
--      depends on (BF51x || BF52x || (BF54x && !BF54xM))
-+      depends on (BF51x || BF52x || BF54x)
- config BF_REV_0_1
-       bool "0.1"
--      depends on (BF52x || (BF54x && !BF54xM))
-+      depends on (BF52x || BF54x)
- config BF_REV_0_2
-       bool "0.2"
--      depends on (BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM))
-+      depends on (BF52x || BF537 || BF536 || BF534 || BF54x)
- config BF_REV_0_3
-       bool "0.3"
--      depends on (BF54xM || BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
-+      depends on (BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
- config BF_REV_0_4
-       bool "0.4"
-@@ -318,14 +293,9 @@
-       depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
-       default y
--config BF54xM
--      bool
--      depends on (BF542M || BF544M || BF547M || BF548M || BF549M)
--      default y
--
- config BF54x
-       bool
--      depends on (BF542 || BF544 || BF547 || BF548 || BF549 || BF54xM)
-+      depends on (BF542 || BF544 || BF547 || BF548 || BF549)
-       default y
- config MEM_GENERIC_BOARD
-@@ -1129,7 +1099,6 @@
- config PM_WAKEUP_BY_GPIO
-       bool "Allow Wakeup from Standby by GPIO"
--      depends on PM && !BF54x
- config PM_WAKEUP_GPIO_NUMBER
-       int "GPIO number"
-@@ -1169,12 +1138,6 @@
-       default n
-       help
-         Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
--        (all processors, except ADSP-BF549). This option sets
--        the general-purpose wake-up enable (GPWE) control bit to enable
--        wake-up upon detection of an active low signal on the /GPW (PH7) pin.
--        On ADSP-BF549 this option enables the the same functionality on the
--        /MRXON pin also PH7.
--
- endmenu
- menu "CPU Frequency scaling"
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/Kconfig.debug linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug
---- linux-2.6.29.owrt/arch/blackfin/Kconfig.debug      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug  2009-05-10 23:48:28.000000000 +0200
-@@ -21,6 +21,12 @@
- config HAVE_ARCH_KGDB
-       def_bool y
-+config KGDB_TESTCASE
-+      tristate "KGDB: for test case in expect"
-+      default n
-+      help
-+        This is a kgdb test case for automated testing.
-+
- config DEBUG_VERBOSE
-       bool "Verbose fault messages"
-       default y
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c  2009-05-10 23:48:28.000000000 +0200
-@@ -249,13 +249,6 @@
-       spin_lock_irqsave(&mdma_lock, flags);
--      /* Force a sync in case a previous config reset on this channel
--       * occurred.  This is needed so subsequent writes to DMA registers
--       * are not spuriously lost/corrupted.  Do it under irq lock and
--       * without the anomaly version (because we are atomic already).
--       */
--      __builtin_bfin_ssync();
--
-       if (bfin_read_MDMA_S0_CONFIG())
-               while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE))
-                       continue;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c     2009-05-10 23:48:28.000000000 +0200
-@@ -27,6 +27,59 @@
-  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-  */
-+/*
-+*  Number     BF537/6/4    BF561    BF533/2/1    BF549/8/4/2
-+*
-+*  GPIO_0       PF0         PF0        PF0       PA0...PJ13
-+*  GPIO_1       PF1         PF1        PF1
-+*  GPIO_2       PF2         PF2        PF2
-+*  GPIO_3       PF3         PF3        PF3
-+*  GPIO_4       PF4         PF4        PF4
-+*  GPIO_5       PF5         PF5        PF5
-+*  GPIO_6       PF6         PF6        PF6
-+*  GPIO_7       PF7         PF7        PF7
-+*  GPIO_8       PF8         PF8        PF8
-+*  GPIO_9       PF9         PF9        PF9
-+*  GPIO_10      PF10        PF10       PF10
-+*  GPIO_11      PF11        PF11       PF11
-+*  GPIO_12      PF12        PF12       PF12
-+*  GPIO_13      PF13        PF13       PF13
-+*  GPIO_14      PF14        PF14       PF14
-+*  GPIO_15      PF15        PF15       PF15
-+*  GPIO_16      PG0         PF16
-+*  GPIO_17      PG1         PF17
-+*  GPIO_18      PG2         PF18
-+*  GPIO_19      PG3         PF19
-+*  GPIO_20      PG4         PF20
-+*  GPIO_21      PG5         PF21
-+*  GPIO_22      PG6         PF22
-+*  GPIO_23      PG7         PF23
-+*  GPIO_24      PG8         PF24
-+*  GPIO_25      PG9         PF25
-+*  GPIO_26      PG10        PF26
-+*  GPIO_27      PG11        PF27
-+*  GPIO_28      PG12        PF28
-+*  GPIO_29      PG13        PF29
-+*  GPIO_30      PG14        PF30
-+*  GPIO_31      PG15        PF31
-+*  GPIO_32      PH0         PF32
-+*  GPIO_33      PH1         PF33
-+*  GPIO_34      PH2         PF34
-+*  GPIO_35      PH3         PF35
-+*  GPIO_36      PH4         PF36
-+*  GPIO_37      PH5         PF37
-+*  GPIO_38      PH6         PF38
-+*  GPIO_39      PH7         PF39
-+*  GPIO_40      PH8         PF40
-+*  GPIO_41      PH9         PF41
-+*  GPIO_42      PH10        PF42
-+*  GPIO_43      PH11        PF43
-+*  GPIO_44      PH12        PF44
-+*  GPIO_45      PH13        PF45
-+*  GPIO_46      PH14        PF46
-+*  GPIO_47      PH15        PF47
-+*/
-+
- #include <linux/delay.h>
- #include <linux/module.h>
- #include <linux/err.h>
-@@ -66,61 +119,62 @@
- #define AWA_DUMMY_READ(...)  do { } while (0)
- #endif
--static struct gpio_port_t * const gpio_array[] = {
- #if defined(BF533_FAMILY) || defined(BF538_FAMILY)
-+static struct gpio_port_t *gpio_bankb[] = {
-       (struct gpio_port_t *) FIO_FLAG_D,
--#elif defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-+};
-+#endif
-+
-+#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-+static struct gpio_port_t *gpio_bankb[] = {
-       (struct gpio_port_t *) PORTFIO,
-       (struct gpio_port_t *) PORTGIO,
-       (struct gpio_port_t *) PORTHIO,
--#elif defined(BF561_FAMILY)
--      (struct gpio_port_t *) FIO0_FLAG_D,
--      (struct gpio_port_t *) FIO1_FLAG_D,
--      (struct gpio_port_t *) FIO2_FLAG_D,
--#elif defined(BF548_FAMILY)
--      (struct gpio_port_t *)PORTA_FER,
--      (struct gpio_port_t *)PORTB_FER,
--      (struct gpio_port_t *)PORTC_FER,
--      (struct gpio_port_t *)PORTD_FER,
--      (struct gpio_port_t *)PORTE_FER,
--      (struct gpio_port_t *)PORTF_FER,
--      (struct gpio_port_t *)PORTG_FER,
--      (struct gpio_port_t *)PORTH_FER,
--      (struct gpio_port_t *)PORTI_FER,
--      (struct gpio_port_t *)PORTJ_FER,
--#else
--# error no gpio arrays defined
--#endif
- };
--#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
--static unsigned short * const port_fer[] = {
-+static unsigned short *port_fer[] = {
-       (unsigned short *) PORTF_FER,
-       (unsigned short *) PORTG_FER,
-       (unsigned short *) PORTH_FER,
- };
-+#endif
--# if !defined(BF537_FAMILY)
--static unsigned short * const port_mux[] = {
-+#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-+static unsigned short *port_mux[] = {
-       (unsigned short *) PORTF_MUX,
-       (unsigned short *) PORTG_MUX,
-       (unsigned short *) PORTH_MUX,
- };
- static const
--u8 pmux_offset[][16] = {
--#  if defined(BF527_FAMILY)
--      { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
--      { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
--      { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
--#  elif defined(BF518_FAMILY)
--      { 0, 2, 2, 2, 2, 2, 2, 4, 6, 6, 6, 8, 8, 8, 8, 10 }, /* PORTF */
--      { 0, 0, 0, 2, 4, 6, 6, 6, 8, 10, 10, 12, 14, 14, 14, 14 }, /* PORTG */
--      { 0, 0, 0, 0, 2, 2, 4, 6, 10, 10, 10, 10, 10, 10, 10, 10 }, /* PORTH */
--#  endif
-+u8 pmux_offset[][16] =
-+      {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
-+       { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
-+       { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
-+      };
-+#endif
-+
-+#ifdef BF561_FAMILY
-+static struct gpio_port_t *gpio_bankb[] = {
-+      (struct gpio_port_t *) FIO0_FLAG_D,
-+      (struct gpio_port_t *) FIO1_FLAG_D,
-+      (struct gpio_port_t *) FIO2_FLAG_D,
- };
--# endif
-+#endif
-+#ifdef BF548_FAMILY
-+static struct gpio_port_t *gpio_array[] = {
-+      (struct gpio_port_t *)PORTA_FER,
-+      (struct gpio_port_t *)PORTB_FER,
-+      (struct gpio_port_t *)PORTC_FER,
-+      (struct gpio_port_t *)PORTD_FER,
-+      (struct gpio_port_t *)PORTE_FER,
-+      (struct gpio_port_t *)PORTF_FER,
-+      (struct gpio_port_t *)PORTG_FER,
-+      (struct gpio_port_t *)PORTH_FER,
-+      (struct gpio_port_t *)PORTI_FER,
-+      (struct gpio_port_t *)PORTJ_FER,
-+};
- #endif
- static unsigned short reserved_gpio_map[GPIO_BANK_NUM];
-@@ -134,9 +188,35 @@
- } str_ident[MAX_RESOURCES];
- #if defined(CONFIG_PM)
-+#if defined(CONFIG_BF54x)
-+static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
-+#else
-+static unsigned short wakeup_map[GPIO_BANK_NUM];
-+static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
- static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
-+
-+#ifdef BF533_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB};
-+#endif
-+
-+#ifdef BF537_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX};
-+#endif
-+
-+#ifdef BF538_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB};
- #endif
-+#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-+static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB};
-+#endif
-+
-+#ifdef BF561_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB};
-+#endif
-+#endif
-+#endif /* CONFIG_PM */
-+
- inline int check_gpio(unsigned gpio)
- {
- #if defined(BF548_FAMILY)
-@@ -250,10 +330,9 @@
-       {.res = P_SPI0_SSEL3, .offset = 0},
- };
--static void portmux_setup(unsigned short per)
-+static void portmux_setup(unsigned short per, unsigned short function)
- {
-       u16 y, offset, muxreg;
--      u16 function = P_FUNCT2MUX(per);
-       for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) {
-               if (port_mux_lut[y].res == per) {
-@@ -274,33 +353,30 @@
-       }
- }
- #elif defined(BF548_FAMILY)
--inline void portmux_setup(unsigned short per)
-+inline void portmux_setup(unsigned short portno, unsigned short function)
- {
-       u32 pmux;
--      u16 ident = P_IDENT(per);
--      u16 function = P_FUNCT2MUX(per);
--      pmux = gpio_array[gpio_bank(ident)]->port_mux;
-+      pmux = gpio_array[gpio_bank(portno)]->port_mux;
--      pmux &= ~(0x3 << (2 * gpio_sub_n(ident)));
--      pmux |= (function & 0x3) << (2 * gpio_sub_n(ident));
-+      pmux &= ~(0x3 << (2 * gpio_sub_n(portno)));
-+      pmux |= (function & 0x3) << (2 * gpio_sub_n(portno));
--      gpio_array[gpio_bank(ident)]->port_mux = pmux;
-+      gpio_array[gpio_bank(portno)]->port_mux = pmux;
- }
--inline u16 get_portmux(unsigned short per)
-+inline u16 get_portmux(unsigned short portno)
- {
-       u32 pmux;
--      u16 ident = P_IDENT(per);
--      pmux = gpio_array[gpio_bank(ident)]->port_mux;
-+      pmux = gpio_array[gpio_bank(portno)]->port_mux;
--      return (pmux >> (2 * gpio_sub_n(ident)) & 0x3);
-+      return (pmux >> (2 * gpio_sub_n(portno)) & 0x3);
- }
- #elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
--inline void portmux_setup(unsigned short per)
-+inline void portmux_setup(unsigned short portno, unsigned short function)
- {
--      u16 pmux, ident = P_IDENT(per), function = P_FUNCT2MUX(per);
-+      u16 pmux, ident = P_IDENT(portno);
-       u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)];
-       pmux = *port_mux[gpio_bank(ident)];
-@@ -348,71 +424,90 @@
-       unsigned long flags; \
-       local_irq_save_hw(flags); \
-       if (arg) \
--              gpio_array[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
-+              gpio_bankb[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
-       else \
--              gpio_array[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
-+              gpio_bankb[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
-       AWA_DUMMY_READ(name); \
-       local_irq_restore_hw(flags); \
- } \
- EXPORT_SYMBOL(set_gpio_ ## name);
--SET_GPIO(dir)   /* set_gpio_dir() */
--SET_GPIO(inen)  /* set_gpio_inen() */
--SET_GPIO(polar) /* set_gpio_polar() */
--SET_GPIO(edge)  /* set_gpio_edge() */
--SET_GPIO(both)  /* set_gpio_both() */
-+SET_GPIO(dir)
-+SET_GPIO(inen)
-+SET_GPIO(polar)
-+SET_GPIO(edge)
-+SET_GPIO(both)
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define SET_GPIO_SC(name) \
- void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
- { \
-       unsigned long flags; \
--      if (ANOMALY_05000311 || ANOMALY_05000323) \
--              local_irq_save_hw(flags); \
-+      local_irq_save_hw(flags); \
-       if (arg) \
--              gpio_array[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
-+              gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
-       else \
--              gpio_array[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
--      if (ANOMALY_05000311 || ANOMALY_05000323) { \
--              AWA_DUMMY_READ(name); \
--              local_irq_restore_hw(flags); \
--      } \
-+              gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
-+      AWA_DUMMY_READ(name); \
-+      local_irq_restore_hw(flags); \
- } \
- EXPORT_SYMBOL(set_gpio_ ## name);
-+#else
-+#define SET_GPIO_SC(name) \
-+void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
-+{ \
-+      if (arg) \
-+              gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
-+      else \
-+              gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
-+} \
-+EXPORT_SYMBOL(set_gpio_ ## name);
-+#endif
- SET_GPIO_SC(maska)
- SET_GPIO_SC(maskb)
- SET_GPIO_SC(data)
-+#if ANOMALY_05000311 || ANOMALY_05000323
- void set_gpio_toggle(unsigned gpio)
- {
-       unsigned long flags;
--      if (ANOMALY_05000311 || ANOMALY_05000323)
--              local_irq_save_hw(flags);
--      gpio_array[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
--      if (ANOMALY_05000311 || ANOMALY_05000323) {
--              AWA_DUMMY_READ(toggle);
--              local_irq_restore_hw(flags);
--      }
-+      local_irq_save_hw(flags);
-+      gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
-+      AWA_DUMMY_READ(toggle);
-+      local_irq_restore_hw(flags);
-+}
-+#else
-+void set_gpio_toggle(unsigned gpio)
-+{
-+      gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
- }
-+#endif
- EXPORT_SYMBOL(set_gpio_toggle);
- /*Set current PORT date (16-bit word)*/
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define SET_GPIO_P(name) \
- void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
- { \
-       unsigned long flags; \
--      if (ANOMALY_05000311 || ANOMALY_05000323) \
--              local_irq_save_hw(flags); \
--      gpio_array[gpio_bank(gpio)]->name = arg; \
--      if (ANOMALY_05000311 || ANOMALY_05000323) { \
--              AWA_DUMMY_READ(name); \
--              local_irq_restore_hw(flags); \
--      } \
-+      local_irq_save_hw(flags); \
-+      gpio_bankb[gpio_bank(gpio)]->name = arg; \
-+      AWA_DUMMY_READ(name); \
-+      local_irq_restore_hw(flags); \
-+} \
-+EXPORT_SYMBOL(set_gpiop_ ## name);
-+#else
-+#define SET_GPIO_P(name) \
-+void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
-+{ \
-+      gpio_bankb[gpio_bank(gpio)]->name = arg; \
- } \
- EXPORT_SYMBOL(set_gpiop_ ## name);
-+#endif
- SET_GPIO_P(data)
- SET_GPIO_P(dir)
-@@ -424,21 +519,27 @@
- SET_GPIO_P(maskb)
- /* Get a specific bit */
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define GET_GPIO(name) \
- unsigned short get_gpio_ ## name(unsigned gpio) \
- { \
-       unsigned long flags; \
-       unsigned short ret; \
--      if (ANOMALY_05000311 || ANOMALY_05000323) \
--              local_irq_save_hw(flags); \
--      ret = 0x01 & (gpio_array[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
--      if (ANOMALY_05000311 || ANOMALY_05000323) { \
--              AWA_DUMMY_READ(name); \
--              local_irq_restore_hw(flags); \
--      } \
-+      local_irq_save_hw(flags); \
-+      ret = 0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
-+      AWA_DUMMY_READ(name); \
-+      local_irq_restore_hw(flags); \
-       return ret; \
- } \
- EXPORT_SYMBOL(get_gpio_ ## name);
-+#else
-+#define GET_GPIO(name) \
-+unsigned short get_gpio_ ## name(unsigned gpio) \
-+{ \
-+      return (0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio))); \
-+} \
-+EXPORT_SYMBOL(get_gpio_ ## name);
-+#endif
- GET_GPIO(data)
- GET_GPIO(dir)
-@@ -451,21 +552,27 @@
- /*Get current PORT date (16-bit word)*/
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define GET_GPIO_P(name) \
- unsigned short get_gpiop_ ## name(unsigned gpio) \
- { \
-       unsigned long flags; \
-       unsigned short ret; \
--      if (ANOMALY_05000311 || ANOMALY_05000323) \
--              local_irq_save_hw(flags); \
--      ret = (gpio_array[gpio_bank(gpio)]->name); \
--      if (ANOMALY_05000311 || ANOMALY_05000323) { \
--              AWA_DUMMY_READ(name); \
--              local_irq_restore_hw(flags); \
--      } \
-+      local_irq_save_hw(flags); \
-+      ret = (gpio_bankb[gpio_bank(gpio)]->name); \
-+      AWA_DUMMY_READ(name); \
-+      local_irq_restore_hw(flags); \
-       return ret; \
- } \
- EXPORT_SYMBOL(get_gpiop_ ## name);
-+#else
-+#define GET_GPIO_P(name) \
-+unsigned short get_gpiop_ ## name(unsigned gpio) \
-+{ \
-+      return (gpio_bankb[gpio_bank(gpio)]->name);\
-+} \
-+EXPORT_SYMBOL(get_gpiop_ ## name);
-+#endif
- GET_GPIO_P(data)
- GET_GPIO_P(dir)
-@@ -478,26 +585,6 @@
- #ifdef CONFIG_PM
--
--static unsigned short wakeup_map[GPIO_BANK_NUM];
--static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
--
--static const unsigned int sic_iwr_irqs[] = {
--#if defined(BF533_FAMILY)
--      IRQ_PROG_INTB
--#elif defined(BF537_FAMILY)
--      IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX
--#elif defined(BF538_FAMILY)
--      IRQ_PORTF_INTB
--#elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
--      IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB
--#elif defined(BF561_FAMILY)
--      IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB
--#else
--# error no SIC_IWR defined
--#endif
--};
--
- /***********************************************************
- *
- * FUNCTIONS: Blackfin PM Setup API
-@@ -582,18 +669,18 @@
-               mask = wakeup_map[gpio_bank(i)];
-               bank = gpio_bank(i);
--              gpio_bank_saved[bank].maskb = gpio_array[bank]->maskb;
--              gpio_array[bank]->maskb = 0;
-+              gpio_bank_saved[bank].maskb = gpio_bankb[bank]->maskb;
-+              gpio_bankb[bank]->maskb = 0;
-               if (mask) {
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-                       gpio_bank_saved[bank].fer   = *port_fer[bank];
- #endif
--                      gpio_bank_saved[bank].inen  = gpio_array[bank]->inen;
--                      gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
--                      gpio_bank_saved[bank].dir   = gpio_array[bank]->dir;
--                      gpio_bank_saved[bank].edge  = gpio_array[bank]->edge;
--                      gpio_bank_saved[bank].both  = gpio_array[bank]->both;
-+                      gpio_bank_saved[bank].inen  = gpio_bankb[bank]->inen;
-+                      gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
-+                      gpio_bank_saved[bank].dir   = gpio_bankb[bank]->dir;
-+                      gpio_bank_saved[bank].edge  = gpio_bankb[bank]->edge;
-+                      gpio_bank_saved[bank].both  = gpio_bankb[bank]->both;
-                       gpio_bank_saved[bank].reserved =
-                                               reserved_gpio_map[bank];
-@@ -613,7 +700,7 @@
-                       }
-                       bfin_internal_set_wake(sic_iwr_irqs[bank], 1);
--                      gpio_array[bank]->maskb_set = wakeup_map[gpio_bank(i)];
-+                      gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
-               }
-       }
-@@ -634,18 +721,18 @@
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-                       *port_fer[bank]         = gpio_bank_saved[bank].fer;
- #endif
--                      gpio_array[bank]->inen  = gpio_bank_saved[bank].inen;
--                      gpio_array[bank]->dir   = gpio_bank_saved[bank].dir;
--                      gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
--                      gpio_array[bank]->edge  = gpio_bank_saved[bank].edge;
--                      gpio_array[bank]->both  = gpio_bank_saved[bank].both;
-+                      gpio_bankb[bank]->inen  = gpio_bank_saved[bank].inen;
-+                      gpio_bankb[bank]->dir   = gpio_bank_saved[bank].dir;
-+                      gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
-+                      gpio_bankb[bank]->edge  = gpio_bank_saved[bank].edge;
-+                      gpio_bankb[bank]->both  = gpio_bank_saved[bank].both;
-                       reserved_gpio_map[bank] =
-                                       gpio_bank_saved[bank].reserved;
-                       bfin_internal_set_wake(sic_iwr_irqs[bank], 0);
-               }
--              gpio_array[bank]->maskb = gpio_bank_saved[bank].maskb;
-+              gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
-       }
-       AWA_DUMMY_READ(maskb);
- }
-@@ -658,21 +745,21 @@
-               bank = gpio_bank(i);
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
--              gpio_bank_saved[bank].fer = *port_fer[bank];
-+                      gpio_bank_saved[bank].fer   = *port_fer[bank];
- #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
--              gpio_bank_saved[bank].mux = *port_mux[bank];
-+                      gpio_bank_saved[bank].mux   = *port_mux[bank];
- #else
--              if (bank == 0)
--                      gpio_bank_saved[bank].mux = bfin_read_PORT_MUX();
-+                      if (bank == 0)
-+                              gpio_bank_saved[bank].mux   = bfin_read_PORT_MUX();
- #endif
- #endif
--              gpio_bank_saved[bank].data  = gpio_array[bank]->data;
--              gpio_bank_saved[bank].inen  = gpio_array[bank]->inen;
--              gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
--              gpio_bank_saved[bank].dir   = gpio_array[bank]->dir;
--              gpio_bank_saved[bank].edge  = gpio_array[bank]->edge;
--              gpio_bank_saved[bank].both  = gpio_array[bank]->both;
--              gpio_bank_saved[bank].maska = gpio_array[bank]->maska;
-+                      gpio_bank_saved[bank].data  = gpio_bankb[bank]->data;
-+                      gpio_bank_saved[bank].inen  = gpio_bankb[bank]->inen;
-+                      gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
-+                      gpio_bank_saved[bank].dir   = gpio_bankb[bank]->dir;
-+                      gpio_bank_saved[bank].edge  = gpio_bankb[bank]->edge;
-+                      gpio_bank_saved[bank].both  = gpio_bankb[bank]->both;
-+                      gpio_bank_saved[bank].maska  = gpio_bankb[bank]->maska;
-       }
-       AWA_DUMMY_READ(maska);
-@@ -683,27 +770,27 @@
-       int i, bank;
-       for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
--              bank = gpio_bank(i);
-+                      bank = gpio_bank(i);
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
- #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
--              *port_mux[bank] = gpio_bank_saved[bank].mux;
-+                      *port_mux[bank] = gpio_bank_saved[bank].mux;
- #else
--              if (bank == 0)
--                      bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
-+                      if (bank == 0)
-+                              bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
- #endif
--              *port_fer[bank] = gpio_bank_saved[bank].fer;
-+                      *port_fer[bank]         = gpio_bank_saved[bank].fer;
- #endif
--              gpio_array[bank]->inen  = gpio_bank_saved[bank].inen;
--              gpio_array[bank]->dir   = gpio_bank_saved[bank].dir;
--              gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
--              gpio_array[bank]->edge  = gpio_bank_saved[bank].edge;
--              gpio_array[bank]->both  = gpio_bank_saved[bank].both;
-+                      gpio_bankb[bank]->inen  = gpio_bank_saved[bank].inen;
-+                      gpio_bankb[bank]->dir   = gpio_bank_saved[bank].dir;
-+                      gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
-+                      gpio_bankb[bank]->edge  = gpio_bank_saved[bank].edge;
-+                      gpio_bankb[bank]->both  = gpio_bank_saved[bank].both;
--              gpio_array[bank]->data_set = gpio_bank_saved[bank].data
--                                              | gpio_bank_saved[bank].dir;
-+                      gpio_bankb[bank]->data_set = gpio_bank_saved[bank].data
-+                                                      | gpio_bank_saved[bank].dir;
--              gpio_array[bank]->maska = gpio_bank_saved[bank].maska;
-+                      gpio_bankb[bank]->maska = gpio_bank_saved[bank].maska;
-       }
-       AWA_DUMMY_READ(maska);
- }
-@@ -730,12 +817,12 @@
-       for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
-               bank = gpio_bank(i);
--              gpio_bank_saved[bank].fer = gpio_array[bank]->port_fer;
--              gpio_bank_saved[bank].mux = gpio_array[bank]->port_mux;
--              gpio_bank_saved[bank].data = gpio_array[bank]->data;
--              gpio_bank_saved[bank].data = gpio_array[bank]->data;
--              gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
--              gpio_bank_saved[bank].dir = gpio_array[bank]->dir_set;
-+                      gpio_bank_saved[bank].fer  = gpio_array[bank]->port_fer;
-+                      gpio_bank_saved[bank].mux  = gpio_array[bank]->port_mux;
-+                      gpio_bank_saved[bank].data  = gpio_array[bank]->port_data;
-+                      gpio_bank_saved[bank].data  = gpio_array[bank]->port_data;
-+                      gpio_bank_saved[bank].inen  = gpio_array[bank]->port_inen;
-+                      gpio_bank_saved[bank].dir   = gpio_array[bank]->port_dir_set;
-       }
- }
-@@ -744,21 +831,21 @@
-       int i, bank;
-       for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
--              bank = gpio_bank(i);
-+                      bank = gpio_bank(i);
--              gpio_array[bank]->port_mux = gpio_bank_saved[bank].mux;
--              gpio_array[bank]->port_fer = gpio_bank_saved[bank].fer;
--              gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
--              gpio_array[bank]->dir_set = gpio_bank_saved[bank].dir;
--              gpio_array[bank]->data_set = gpio_bank_saved[bank].data
--                                              | gpio_bank_saved[bank].dir;
-+                      gpio_array[bank]->port_mux  = gpio_bank_saved[bank].mux;
-+                      gpio_array[bank]->port_fer  = gpio_bank_saved[bank].fer;
-+                      gpio_array[bank]->port_inen  = gpio_bank_saved[bank].inen;
-+                      gpio_array[bank]->port_dir_set   = gpio_bank_saved[bank].dir;
-+                      gpio_array[bank]->port_set = gpio_bank_saved[bank].data
-+                                                      | gpio_bank_saved[bank].dir;
-       }
- }
- #endif
- unsigned short get_gpio_dir(unsigned gpio)
- {
--      return (0x01 & (gpio_array[gpio_bank(gpio)]->dir_clear >> gpio_sub_n(gpio)));
-+      return (0x01 & (gpio_array[gpio_bank(gpio)]->port_dir_clear >> gpio_sub_n(gpio)));
- }
- EXPORT_SYMBOL(get_gpio_dir);
-@@ -818,7 +905,9 @@
-                */
- #ifdef BF548_FAMILY
--              if (!((per & P_MAYSHARE) && get_portmux(per) == P_FUNCT2MUX(per))) {
-+              u16 funct = get_portmux(ident);
-+
-+              if (!((per & P_MAYSHARE) && (funct == P_FUNCT2MUX(per)))) {
- #else
-               if (!(per & P_MAYSHARE)) {
- #endif
-@@ -842,7 +931,11 @@
-  anyway:
-       reserved_peri_map[gpio_bank(ident)] |= gpio_bit(ident);
--      portmux_setup(per);
-+#ifdef BF548_FAMILY
-+      portmux_setup(ident, P_FUNCT2MUX(per));
-+#else
-+      portmux_setup(per, P_FUNCT2MUX(per));
-+#endif
-       port_setup(ident, PERIPHERAL_USAGE);
-       local_irq_restore_hw(flags);
-@@ -884,6 +977,9 @@
-       if (!(per & P_DEFINED))
-               return;
-+      if (check_gpio(ident) < 0)
-+              return;
-+
-       local_irq_save_hw(flags);
-       if (unlikely(!(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident)))) {
-@@ -960,15 +1056,9 @@
-               local_irq_restore_hw(flags);
-               return -EBUSY;
-       }
--      if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+      if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio)))
-               printk(KERN_NOTICE "bfin-gpio: GPIO %d is already reserved as gpio-irq!"
-                      " (Documentation/blackfin/bfin-gpio-notes.txt)\n", gpio);
--      }
--#ifndef BF548_FAMILY
--      else {  /* Reset POLAR setting when acquiring a gpio for the first time */
--              set_gpio_polar(gpio, 0);
--      }
--#endif
-       reserved_gpio_map[gpio_bank(gpio)] |= gpio_bit(gpio);
-       set_label(gpio, label);
-@@ -988,8 +1078,6 @@
-       if (check_gpio(gpio) < 0)
-               return;
--      might_sleep();
--
-       local_irq_save_hw(flags);
-       if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
-@@ -1070,16 +1158,8 @@
-       local_irq_restore_hw(flags);
- }
--static inline void __bfin_gpio_direction_input(unsigned gpio)
--{
--#ifdef BF548_FAMILY
--      gpio_array[gpio_bank(gpio)]->dir_clear = gpio_bit(gpio);
--#else
--      gpio_array[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
--#endif
--      gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
--}
-+#ifdef BF548_FAMILY
- int bfin_gpio_direction_input(unsigned gpio)
- {
-       unsigned long flags;
-@@ -1090,85 +1170,125 @@
-       }
-       local_irq_save_hw(flags);
--      __bfin_gpio_direction_input(gpio);
--      AWA_DUMMY_READ(inen);
-+      gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
-+      gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
-       local_irq_restore_hw(flags);
-       return 0;
- }
- EXPORT_SYMBOL(bfin_gpio_direction_input);
--void bfin_gpio_irq_prepare(unsigned gpio)
-+int bfin_gpio_direction_output(unsigned gpio, int value)
- {
--#ifdef BF548_FAMILY
-       unsigned long flags;
--#endif
--      port_setup(gpio, GPIO_USAGE);
-+      if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+              gpio_error(gpio);
-+              return -EINVAL;
-+      }
--#ifdef BF548_FAMILY
-       local_irq_save_hw(flags);
--      __bfin_gpio_direction_input(gpio);
-+      gpio_array[gpio_bank(gpio)]->port_inen &= ~gpio_bit(gpio);
-+      gpio_set_value(gpio, value);
-+      gpio_array[gpio_bank(gpio)]->port_dir_set = gpio_bit(gpio);
-       local_irq_restore_hw(flags);
--#endif
-+
-+      return 0;
- }
-+EXPORT_SYMBOL(bfin_gpio_direction_output);
- void bfin_gpio_set_value(unsigned gpio, int arg)
- {
-       if (arg)
--              gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+              gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio);
-       else
--              gpio_array[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
-+              gpio_array[gpio_bank(gpio)]->port_clear = gpio_bit(gpio);
- }
- EXPORT_SYMBOL(bfin_gpio_set_value);
--int bfin_gpio_direction_output(unsigned gpio, int value)
-+int bfin_gpio_get_value(unsigned gpio)
-+{
-+      return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio)));
-+}
-+EXPORT_SYMBOL(bfin_gpio_get_value);
-+
-+void bfin_gpio_irq_prepare(unsigned gpio)
- {
-       unsigned long flags;
--      if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
--              gpio_error(gpio);
--              return -EINVAL;
--      }
-+      port_setup(gpio, GPIO_USAGE);
-       local_irq_save_hw(flags);
--
--      gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
--      gpio_set_value(gpio, value);
--#ifdef BF548_FAMILY
--      gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio);
--#else
--      gpio_array[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
--#endif
--
--      AWA_DUMMY_READ(dir);
-+      gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
-+      gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
-       local_irq_restore_hw(flags);
--
--      return 0;
- }
--EXPORT_SYMBOL(bfin_gpio_direction_output);
-+
-+#else
- int bfin_gpio_get_value(unsigned gpio)
- {
--#ifdef BF548_FAMILY
--      return (1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio)));
--#else
-       unsigned long flags;
-+      int ret;
-       if (unlikely(get_gpio_edge(gpio))) {
--              int ret;
-               local_irq_save_hw(flags);
-               set_gpio_edge(gpio, 0);
-               ret = get_gpio_data(gpio);
-               set_gpio_edge(gpio, 1);
-               local_irq_restore_hw(flags);
-+
-               return ret;
-       } else
-               return get_gpio_data(gpio);
--#endif
- }
- EXPORT_SYMBOL(bfin_gpio_get_value);
-+
-+int bfin_gpio_direction_input(unsigned gpio)
-+{
-+      unsigned long flags;
-+
-+      if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+              gpio_error(gpio);
-+              return -EINVAL;
-+      }
-+
-+      local_irq_save_hw(flags);
-+      gpio_bankb[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
-+      gpio_bankb[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
-+      AWA_DUMMY_READ(inen);
-+      local_irq_restore_hw(flags);
-+
-+      return 0;
-+}
-+EXPORT_SYMBOL(bfin_gpio_direction_input);
-+
-+int bfin_gpio_direction_output(unsigned gpio, int value)
-+{
-+      unsigned long flags;
-+
-+      if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+              gpio_error(gpio);
-+              return -EINVAL;
-+      }
-+
-+      local_irq_save_hw(flags);
-+      gpio_bankb[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
-+
-+      if (value)
-+              gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+      else
-+              gpio_bankb[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
-+
-+      gpio_bankb[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
-+      AWA_DUMMY_READ(dir);
-+      local_irq_restore_hw(flags);
-+
-+      return 0;
-+}
-+EXPORT_SYMBOL(bfin_gpio_direction_output);
-+
- /* If we are booting from SPI and our board lacks a strong enough pull up,
-  * the core can reset and execute the bootrom faster than the resistor can
-  * pull the signal logically high.  To work around this (common) error in
-@@ -1179,15 +1299,23 @@
-  * lives here as we need to force all the GPIO states w/out going through
-  * BUG() checks and such.
-  */
--void bfin_reset_boot_spi_cs(unsigned short pin)
-+void bfin_gpio_reset_spi0_ssel1(void)
- {
--      unsigned short gpio = P_IDENT(pin);
-+      u16 gpio = P_IDENT(P_SPI0_SSEL1);
-+
-       port_setup(gpio, GPIO_USAGE);
--      gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+      gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-       AWA_DUMMY_READ(data_set);
-       udelay(1);
- }
-+void bfin_gpio_irq_prepare(unsigned gpio)
-+{
-+      port_setup(gpio, GPIO_USAGE);
-+}
-+
-+#endif /*BF548_FAMILY */
-+
- #if defined(CONFIG_PROC_FS)
- static int gpio_proc_read(char *buf, char **start, off_t offset,
-                         int len, int *unused_i, void *unused_v)
-@@ -1241,7 +1369,11 @@
- void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value)
- {
-+#ifdef BF548_FAMILY
-       return bfin_gpio_set_value(gpio, value);
-+#else
-+      return set_gpio_data(gpio, value);
-+#endif
- }
- int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c     2009-05-10 23:48:28.000000000 +0200
-@@ -63,8 +63,10 @@
-       dcplb_tbl[cpu][i_d].addr = 0;
-       dcplb_tbl[cpu][i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
-+#if 0
-       icplb_tbl[cpu][i_i].addr = 0;
--      icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_1KB;
-+      icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_4KB;
-+#endif
-       /* Cover kernel memory with 4M pages.  */
-       addr = 0;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c   2009-05-10 23:48:28.000000000 +0200
-@@ -53,13 +53,9 @@
-       i_d = i_i = 0;
--#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
-       /* Set up the zero page.  */
-       d_tbl[i_d].addr = 0;
-       d_tbl[i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
--      i_tbl[i_i].addr = 0;
--      i_tbl[i_i++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
--#endif
-       /* Cover kernel memory with 4M pages.  */
-       addr = 0;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c        2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c    2009-05-10 23:48:28.000000000 +0200
-@@ -163,14 +163,12 @@
-               nr_icplb_supv_miss[cpu]++;
-       base = 0;
--      idx = 0;
--      do {
-+      for (idx = 0; idx < icplb_nr_bounds; idx++) {
-               eaddr = icplb_bounds[idx].eaddr;
-               if (addr < eaddr)
-                       break;
-               base = eaddr;
--      } while (++idx < icplb_nr_bounds);
--
-+      }
-       if (unlikely(idx == icplb_nr_bounds))
-               return CPLB_NO_ADDR_MATCH;
-@@ -210,14 +208,12 @@
-               nr_dcplb_supv_miss[cpu]++;
-       base = 0;
--      idx = 0;
--      do {
-+      for (idx = 0; idx < dcplb_nr_bounds; idx++) {
-               eaddr = dcplb_bounds[idx].eaddr;
-               if (addr < eaddr)
-                       break;
-               base = eaddr;
--      } while (++idx < dcplb_nr_bounds);
--
-+      }
-       if (unlikely(idx == dcplb_nr_bounds))
-               return CPLB_NO_ADDR_MATCH;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c 2009-05-10 23:48:28.000000000 +0200
-@@ -35,8 +35,14 @@
- #include <asm/atomic.h>
- #include <asm/io.h>
-+static int create_irq_threads;
-+
- DEFINE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
-+static DEFINE_PER_CPU(unsigned long, pending_irqthread_mask);
-+
-+static DEFINE_PER_CPU(int [IVG13 + 1], pending_irq_count);
-+
- asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs);
- static void __ipipe_no_irqtail(void);
-@@ -87,7 +93,6 @@
-  */
- void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs)
- {
--      struct ipipe_percpu_domain_data *p = ipipe_root_cpudom_ptr();
-       struct ipipe_domain *this_domain, *next_domain;
-       struct list_head *head, *pos;
-       int m_ack, s = -1;
-@@ -99,6 +104,7 @@
-        * interrupt.
-        */
-       m_ack = (regs == NULL || irq == IRQ_SYSTMR || irq == IRQ_CORETMR);
-+
-       this_domain = ipipe_current_domain;
-       if (unlikely(test_bit(IPIPE_STICKY_FLAG, &this_domain->irqs[irq].control)))
-@@ -108,28 +114,49 @@
-               next_domain = list_entry(head, struct ipipe_domain, p_link);
-               if (likely(test_bit(IPIPE_WIRED_FLAG, &next_domain->irqs[irq].control))) {
-                       if (!m_ack && next_domain->irqs[irq].acknowledge != NULL)
--                              next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
--                      if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
--                              s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
-+                              next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
-+                      if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
-+                              s = __test_and_set_bit(IPIPE_STALL_FLAG,
-+                                                     &ipipe_root_cpudom_var(status));
-                       __ipipe_dispatch_wired(next_domain, irq);
--                      goto out;
-+                              goto finalize;
-+                      return;
-               }
-       }
-       /* Ack the interrupt. */
-       pos = head;
-+
-       while (pos != &__ipipe_pipeline) {
-               next_domain = list_entry(pos, struct ipipe_domain, p_link);
-+              /*
-+               * For each domain handling the incoming IRQ, mark it
-+               * as pending in its log.
-+               */
-               if (test_bit(IPIPE_HANDLE_FLAG, &next_domain->irqs[irq].control)) {
-+                      /*
-+                       * Domains that handle this IRQ are polled for
-+                       * acknowledging it by decreasing priority
-+                       * order. The interrupt must be made pending
-+                       * _first_ in the domain's status flags before
-+                       * the PIC is unlocked.
-+                       */
-                       __ipipe_set_irq_pending(next_domain, irq);
-+
-                       if (!m_ack && next_domain->irqs[irq].acknowledge != NULL) {
--                              next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
-+                              next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
-                               m_ack = 1;
-                       }
-               }
-+
-+              /*
-+               * If the domain does not want the IRQ to be passed
-+               * down the interrupt pipe, exit the loop now.
-+               */
-               if (!test_bit(IPIPE_PASS_FLAG, &next_domain->irqs[irq].control))
-                       break;
-+
-               pos = next_domain->p_link.next;
-       }
-@@ -139,24 +166,18 @@
-        * immediately to the current domain if the interrupt has been
-        * marked as 'sticky'. This search does not go beyond the
-        * current domain in the pipeline. We also enforce the
--       * additional root stage lock (blackfin-specific).
--       */
--      if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
--              s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
-+       * additional root stage lock (blackfin-specific). */
--      /*
--       * If the interrupt preempted the head domain, then do not
--       * even try to walk the pipeline, unless an interrupt is
--       * pending for it.
--       */
--      if (test_bit(IPIPE_AHEAD_FLAG, &this_domain->flags) &&
--          ipipe_head_cpudom_var(irqpend_himask) == 0)
--              goto out;
-+      if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
-+              s = __test_and_set_bit(IPIPE_STALL_FLAG,
-+                                     &ipipe_root_cpudom_var(status));
-+finalize:
-       __ipipe_walk_pipeline(head);
--out:
-+
-       if (!s)
--              __clear_bit(IPIPE_STALL_FLAG, &p->status);
-+              __clear_bit(IPIPE_STALL_FLAG,
-+                          &ipipe_root_cpudom_var(status));
- }
- int __ipipe_check_root(void)
-@@ -166,7 +187,7 @@
- void __ipipe_enable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
- {
--      struct irq_desc *desc = irq_to_desc(irq);
-+      struct irq_desc *desc = irq_desc + irq;
-       int prio = desc->ic_prio;
-       desc->depth = 0;
-@@ -178,7 +199,7 @@
- void __ipipe_disable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
- {
--      struct irq_desc *desc = irq_to_desc(irq);
-+      struct irq_desc *desc = irq_desc + irq;
-       int prio = desc->ic_prio;
-       if (ipd != &ipipe_root &&
-@@ -215,18 +236,15 @@
- {
-       unsigned long flags;
--      /*
--       * We need to run the IRQ tail hook whenever we don't
-+      /* We need to run the IRQ tail hook whenever we don't
-        * propagate a syscall to higher domains, because we know that
-        * important operations might be pending there (e.g. Xenomai
--       * deferred rescheduling).
--       */
-+       * deferred rescheduling). */
--      if (regs->orig_p0 < NR_syscalls) {
-+      if (!__ipipe_syscall_watched_p(current, regs->orig_p0)) {
-               void (*hook)(void) = (void (*)(void))__ipipe_irq_tail_hook;
-               hook();
--              if ((current->flags & PF_EVNOTIFY) == 0)
--                      return 0;
-+              return 0;
-       }
-       /*
-@@ -294,46 +312,112 @@
- {
-       unsigned long flags;
--#ifdef CONFIG_IPIPE_DEBUG
-       if (irq >= IPIPE_NR_IRQS ||
-           (ipipe_virtual_irq_p(irq)
-            && !test_bit(irq - IPIPE_VIRQ_BASE, &__ipipe_virtual_irq_map)))
-               return -EINVAL;
--#endif
-       local_irq_save_hw(flags);
-+
-       __ipipe_handle_irq(irq, NULL);
-+
-       local_irq_restore_hw(flags);
-       return 1;
- }
--asmlinkage void __ipipe_sync_root(void)
-+/* Move Linux IRQ to threads. */
-+
-+static int do_irqd(void *__desc)
- {
--      unsigned long flags;
-+      struct irq_desc *desc = __desc;
-+      unsigned irq = desc - irq_desc;
-+      int thrprio = desc->thr_prio;
-+      int thrmask = 1 << thrprio;
-+      int cpu = smp_processor_id();
-+      cpumask_t cpumask;
-+
-+      sigfillset(&current->blocked);
-+      current->flags |= PF_NOFREEZE;
-+      cpumask = cpumask_of_cpu(cpu);
-+      set_cpus_allowed(current, cpumask);
-+      ipipe_setscheduler_root(current, SCHED_FIFO, 50 + thrprio);
-+
-+      while (!kthread_should_stop()) {
-+              local_irq_disable();
-+              if (!(desc->status & IRQ_SCHEDULED)) {
-+                      set_current_state(TASK_INTERRUPTIBLE);
-+resched:
-+                      local_irq_enable();
-+                      schedule();
-+                      local_irq_disable();
-+              }
-+              __set_current_state(TASK_RUNNING);
-+              /*
-+               * If higher priority interrupt servers are ready to
-+               * run, reschedule immediately. We need this for the
-+               * GPIO demux IRQ handler to unmask the interrupt line
-+               * _last_, after all GPIO IRQs have run.
-+               */
-+              if (per_cpu(pending_irqthread_mask, cpu) & ~(thrmask|(thrmask-1)))
-+                      goto resched;
-+              if (--per_cpu(pending_irq_count[thrprio], cpu) == 0)
-+                      per_cpu(pending_irqthread_mask, cpu) &= ~thrmask;
-+              desc->status &= ~IRQ_SCHEDULED;
-+              desc->thr_handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs));
-+              local_irq_enable();
-+      }
-+      __set_current_state(TASK_RUNNING);
-+      return 0;
-+}
--      BUG_ON(irqs_disabled());
-+static void kick_irqd(unsigned irq, void *cookie)
-+{
-+      struct irq_desc *desc = irq_desc + irq;
-+      int thrprio = desc->thr_prio;
-+      int thrmask = 1 << thrprio;
-+      int cpu = smp_processor_id();
-+
-+      if (!(desc->status & IRQ_SCHEDULED)) {
-+              desc->status |= IRQ_SCHEDULED;
-+              per_cpu(pending_irqthread_mask, cpu) |= thrmask;
-+              ++per_cpu(pending_irq_count[thrprio], cpu);
-+              wake_up_process(desc->thread);
-+      }
-+}
--      local_irq_save_hw(flags);
-+int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc)
-+{
-+      if (desc->thread || !create_irq_threads)
-+              return 0;
--      clear_thread_flag(TIF_IRQ_SYNC);
-+      desc->thread = kthread_create(do_irqd, desc, "IRQ %d", irq);
-+      if (desc->thread == NULL) {
-+              printk(KERN_ERR "irqd: could not create IRQ thread %d!\n", irq);
-+              return -ENOMEM;
-+      }
--      if (ipipe_root_cpudom_var(irqpend_himask) != 0)
--              __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY);
-+      wake_up_process(desc->thread);
--      local_irq_restore_hw(flags);
-+      desc->thr_handler = ipipe_root_domain->irqs[irq].handler;
-+      ipipe_root_domain->irqs[irq].handler = &kick_irqd;
-+
-+      return 0;
- }
--void ___ipipe_sync_pipeline(unsigned long syncmask)
-+void __init ipipe_init_irq_threads(void)
- {
--      struct ipipe_domain *ipd = ipipe_current_domain;
-+      unsigned irq;
-+      struct irq_desc *desc;
--      if (ipd == ipipe_root_domain) {
--              if (test_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status)))
--                      return;
--      }
-+      create_irq_threads = 1;
--      __ipipe_sync_stage(syncmask);
-+      for (irq = 0; irq < NR_IRQS; irq++) {
-+              desc = irq_desc + irq;
-+              if (desc->action != NULL ||
-+                      (desc->status & IRQ_NOREQUEST) != 0)
-+                      ipipe_start_irq_thread(irq, desc);
-+      }
- }
- EXPORT_SYMBOL(show_stack);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c       2009-05-10 23:48:28.000000000 +0200
-@@ -35,7 +35,6 @@
- #include <linux/interrupt.h>
- #include <linux/irq.h>
- #include <asm/trace.h>
--#include <asm/pda.h>
- static atomic_t irq_err_count;
- static spinlock_t irq_controller_lock;
-@@ -92,13 +91,8 @@
-               seq_putc(p, '\n');
-  skip:
-               spin_unlock_irqrestore(&irq_desc[i].lock, flags);
--      } else if (i == NR_IRQS) {
--              seq_printf(p, "NMI: ");
--              for_each_online_cpu(j)
--                      seq_printf(p, "%10u ", cpu_pda[j].__nmi_count);
--              seq_printf(p, "     CORE  Non Maskable Interrupt\n");
-+      } else if (i == NR_IRQS)
-               seq_printf(p, "Err: %10u\n",  atomic_read(&irq_err_count));
--      }
-       return 0;
- }
-@@ -144,15 +138,11 @@
- #endif
-       generic_handle_irq(irq);
--#ifndef CONFIG_IPIPE
--      /*
--       * If we're the only interrupt running (ignoring IRQ15 which
--       * is for syscalls), lower our priority to IRQ14 so that
--       * softirqs run at that level.  If there's another,
--       * lower-level interrupt, irq_exit will defer softirqs to
--       * that. If the interrupt pipeline is enabled, we are already
--       * running at IRQ14 priority, so we don't need this code.
--       */
-+#ifndef CONFIG_IPIPE  /* Useless and bugous over the I-pipe: IRQs are threaded. */
-+      /* If we're the only interrupt running (ignoring IRQ15 which is for
-+         syscalls), lower our priority to IRQ14 so that softirqs run at
-+         that level.  If there's another, lower-level interrupt, irq_exit
-+         will defer softirqs to that.  */
-       CSYNC();
-       pending = bfin_read_IPEND() & ~0x8000;
-       other_ints = pending & (pending - 1);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c     2009-05-10 23:48:28.000000000 +0200
-@@ -20,7 +20,6 @@
- static char cmdline[256];
- static unsigned long len;
--#ifndef CONFIG_SMP
- static int num1 __attribute__((l1_data));
- void kgdb_l1_test(void) __attribute__((l1_text));
-@@ -33,8 +32,6 @@
-       printk(KERN_ALERT "L1(after change) : data variable addr = 0x%p, data value is %d\n", &num1, num1);
-       return ;
- }
--#endif
--
- #if L2_LENGTH
- static int num2 __attribute__((l2));
-@@ -62,12 +59,10 @@
- static int test_proc_output(char *buf)
- {
-       kgdb_test("hello world!", 12, 0x55, 0x10);
--#ifndef CONFIG_SMP
-       kgdb_l1_test();
--#endif
--#if L2_LENGTH
-+      #if L2_LENGTH
-       kgdb_l2_test();
--#endif
-+      #endif
-       return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile
---- linux-2.6.29.owrt/arch/blackfin/kernel/Makefile    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile        2009-05-10 23:48:28.000000000 +0200
-@@ -21,9 +21,5 @@
- obj-$(CONFIG_CPLB_INFO)              += cplbinfo.o
- obj-$(CONFIG_MODULES)                += module.o
- obj-$(CONFIG_KGDB)                   += kgdb.o
--obj-$(CONFIG_KGDB_TESTS)             += kgdb_test.o
-+obj-$(CONFIG_KGDB_TESTCASE)          += kgdb_test.o
- obj-$(CONFIG_EARLY_PRINTK)           += early_printk.o
--
--# the kgdb test puts code into L2 and without linker
--# relaxation, we need to force long calls to/from it
--CFLAGS_kgdb_test.o := -mlong-calls -O0
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c        2009-05-10 23:48:28.000000000 +0200
-@@ -45,7 +45,6 @@
- #include <asm/asm-offsets.h>
- #include <asm/dma.h>
- #include <asm/fixed_code.h>
--#include <asm/cacheflush.h>
- #include <asm/mem_map.h>
- #define TEXT_OFFSET 0
-@@ -241,7 +240,7 @@
-                       } else if (addr >= FIXED_CODE_START
-                           && addr + sizeof(tmp) <= FIXED_CODE_END) {
--                              copy_from_user_page(0, 0, 0, &tmp, (const void *)(addr), sizeof(tmp));
-+                              memcpy(&tmp, (const void *)(addr), sizeof(tmp));
-                               copied = sizeof(tmp);
-                       } else
-@@ -321,7 +320,7 @@
-                       } else if (addr >= FIXED_CODE_START
-                           && addr + sizeof(data) <= FIXED_CODE_END) {
--                              copy_to_user_page(0, 0, 0, (void *)(addr), &data, sizeof(data));
-+                              memcpy((void *)(addr), &data, sizeof(data));
-                               copied = sizeof(data);
-                       } else
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c        2009-05-10 23:48:28.000000000 +0200
-@@ -20,8 +20,8 @@
-  * reset while the Core B bit (on dual core parts) is cleared by
-  * the core reset.
-  */
--__attribute__ ((__l1_text__, __noreturn__))
--static void bfin_reset(void)
-+__attribute__((l1_text))
-+static void _bfin_reset(void)
- {
-       /* Wait for completion of "system" events such as cache line
-        * line fills so that we avoid infinite stalls later on as
-@@ -30,11 +30,7 @@
-        */
-       __builtin_bfin_ssync();
--      /* The bootrom checks to see how it was reset and will
--       * automatically perform a software reset for us when
--       * it starts executing after the core reset.
--       */
--      if (ANOMALY_05000353 || ANOMALY_05000386) {
-+      while (1) {
-               /* Initiate System software reset. */
-               bfin_write_SWRST(0x7);
-@@ -54,11 +50,6 @@
-               /* Clear System software reset */
-               bfin_write_SWRST(0);
--              /* The BF526 ROM will crash during reset */
--#if defined(__ADSPBF522__) || defined(__ADSPBF524__) || defined(__ADSPBF526__)
--              bfin_read_SWRST();
--#endif
--
-               /* Wait for the SWRST write to complete.  Cannot rely on SSYNC
-                * though as the System state is all reset now.
-                */
-@@ -69,11 +60,22 @@
-                       : "a" (15 * 1)
-                       : "LC1", "LB1", "LT1"
-               );
--      }
--      while (1)
-               /* Issue core reset */
-               asm("raise 1");
-+      }
-+}
-+
-+static void bfin_reset(void)
-+{
-+      if (ANOMALY_05000353 || ANOMALY_05000386)
-+              _bfin_reset();
-+      else
-+              /* the bootrom checks to see how it was reset and will
-+               * automatically perform a software reset for us when
-+               * it starts executing boot
-+               */
-+              asm("raise 1;");
- }
- __attribute__((weak))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/setup.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/setup.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
-@@ -60,7 +60,7 @@
- #define BFIN_MEMMAP_MAX               128 /* number of entries in bfin_memmap */
- #define BFIN_MEMMAP_RAM               1
- #define BFIN_MEMMAP_RESERVED  2
--static struct bfin_memmap {
-+struct bfin_memmap {
-       int nr_map;
-       struct bfin_memmap_entry {
-               unsigned long long addr; /* start of memory segment */
-@@ -824,15 +824,7 @@
-       flash_probe();
- #endif
--      printk(KERN_INFO "Boot Mode: %i\n", bfin_read_SYSCR() & 0xF);
--
--      /* Newer parts mirror SWRST bits in SYSCR */
--#if defined(CONFIG_BF53x) || defined(CONFIG_BF561) || \
--    defined(CONFIG_BF538) || defined(CONFIG_BF539)
-       _bfin_swrst = bfin_read_SWRST();
--#else
--      _bfin_swrst = bfin_read_SYSCR();
--#endif
- #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
-       bfin_write_SWRST(_bfin_swrst & ~DOUBLE_FAULT);
-@@ -861,7 +853,7 @@
-       else if (_bfin_swrst & RESET_SOFTWARE)
-               printk(KERN_NOTICE "Reset caused by Software reset\n");
--      printk(KERN_INFO "Blackfin support (C) 2004-2009 Analog Devices, Inc.\n");
-+      printk(KERN_INFO "Blackfin support (C) 2004-2008 Analog Devices, Inc.\n");
-       if (bfin_compiled_revid() == 0xffff)
-               printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU);
-       else if (bfin_compiled_revid() == -1)
-@@ -889,10 +881,6 @@
-                              CPU, bfin_revid());
-       }
--      /* We can't run on BF548-0.1 due to ANOMALY 05000448 */
--      if (bfin_cpuid() == 0x27de && bfin_revid() == 1)
--              panic("You can't run on this processor due to 05000448\n");
--
-       printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n");
-       printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n",
-@@ -1145,12 +1133,12 @@
-               icache_size = 0;
-       seq_printf(m, "cache size\t: %d KB(L1 icache) "
--              "%d KB(L1 dcache%s) %d KB(L2 cache)\n",
-+              "%d KB(L1 dcache-%s) %d KB(L2 cache)\n",
-               icache_size, dcache_size,
- #if defined CONFIG_BFIN_WB
--              "-wb"
-+              "wb"
- #elif defined CONFIG_BFIN_WT
--              "-wt"
-+              "wt"
- #endif
-               "", 0);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/time.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/time.c      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c  2009-05-10 23:48:28.000000000 +0200
-@@ -134,10 +134,7 @@
-       write_seqlock(&xtime_lock);
- #if defined(CONFIG_TICK_SOURCE_SYSTMR0) && !defined(CONFIG_IPIPE)
--      /*
--       * TIMIL0 is latched in __ipipe_grab_irq() when the I-Pipe is
--       * enabled.
--       */
-+/* FIXME: Here TIMIL0 is not set when IPIPE enabled, why? */
-       if (get_gptimer_status(0) & TIMER_STATUS_TIMIL0) {
- #endif
-               do_timer(1);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/traps.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/traps.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
-@@ -673,14 +673,6 @@
-                       verbose_printk("RTI");
-               else if (opcode == 0x0012)
-                       verbose_printk("RTX");
--              else if (opcode == 0x0013)
--                      verbose_printk("RTN");
--              else if (opcode == 0x0014)
--                      verbose_printk("RTE");
--              else if (opcode == 0x0025)
--                      verbose_printk("EMUEXCPT");
--              else if (opcode == 0x0040 && opcode <= 0x0047)
--                      verbose_printk("STI R%i", opcode & 7);
-               else if (opcode >= 0x0050 && opcode <= 0x0057)
-                       verbose_printk("JUMP (P%i)", opcode & 7);
-               else if (opcode >= 0x0060 && opcode <= 0x0067)
-@@ -689,10 +681,6 @@
-                       verbose_printk("CALL (PC+P%i)", opcode & 7);
-               else if (opcode >= 0x0080 && opcode <= 0x0087)
-                       verbose_printk("JUMP (PC+P%i)", opcode & 7);
--              else if (opcode >= 0x0090 && opcode <= 0x009F)
--                      verbose_printk("RAISE 0x%x", opcode & 0xF);
--              else if (opcode >= 0x00A0 && opcode <= 0x00AF)
--                      verbose_printk("EXCPT 0x%x", opcode & 0xF);
-               else if ((opcode >= 0x1000 && opcode <= 0x13FF) || (opcode >= 0x1800 && opcode <= 0x1BFF))
-                       verbose_printk("IF !CC JUMP");
-               else if ((opcode >= 0x1400 && opcode <= 0x17ff) || (opcode >= 0x1c00 && opcode <= 0x1fff))
-@@ -832,8 +820,11 @@
-       decode_address(buf, (unsigned int)stack);
-       printk(KERN_NOTICE " SP: [0x%p] %s\n", stack, buf);
-+      addr = (unsigned int *)((unsigned int)stack & ~0x3F);
-+
-       /* First thing is to look for a frame pointer */
--      for (addr = (unsigned int *)((unsigned int)stack & ~0xF); addr < endstack; addr++) {
-+      for (addr = (unsigned int *)((unsigned int)stack & ~0xF), i = 0;
-+              addr < endstack; addr++, i++) {
-               if (*addr & 0x1)
-                       continue;
-               ins_addr = (unsigned short *)*addr;
-@@ -843,8 +834,7 @@
-               if (fp) {
-                       /* Let's check to see if it is a frame pointer */
--                      while (fp >= (addr - 1) && fp < endstack
--                             && fp && ((unsigned int) fp & 0x3) == 0)
-+                      while (fp >= (addr - 1) && fp < endstack && fp)
-                               fp = (unsigned int *)*fp;
-                       if (fp == 0 || fp == endstack) {
-                               fp = addr - 1;
-@@ -1062,9 +1052,8 @@
-       char buf [150];
-       struct irqaction *action;
-       unsigned int i;
--      unsigned long flags = 0;
-+      unsigned long flags;
-       unsigned int cpu = smp_processor_id();
--      unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
-       verbose_printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\t\t%s\n", print_tainted());
-       verbose_printk(KERN_NOTICE " SEQSTAT: %08lx  IPEND: %04lx  SYSCFG: %04lx\n",
-@@ -1084,22 +1073,17 @@
-       }
-       verbose_printk(KERN_NOTICE "  EXCAUSE   : 0x%lx\n",
-               fp->seqstat & SEQSTAT_EXCAUSE);
--      for (i = 2; i <= 15 ; i++) {
-+      for (i = 6; i <= 15 ; i++) {
-               if (fp->ipend & (1 << i)) {
--                      if (i != 4) {
--                              decode_address(buf, bfin_read32(EVT0 + 4*i));
--                              verbose_printk(KERN_NOTICE "  physical IVG%i asserted : %s\n", i, buf);
--                      } else
--                              verbose_printk(KERN_NOTICE "  interrupts disabled\n");
-+                      decode_address(buf, bfin_read32(EVT0 + 4*i));
-+                      verbose_printk(KERN_NOTICE "  physical IVG%i asserted : %s\n", i, buf);
-               }
-       }
-       /* if no interrupts are going off, don't print this out */
-       if (fp->ipend & ~0x3F) {
-               for (i = 0; i < (NR_IRQS - 1); i++) {
--                      if (!in_atomic)
--                              spin_lock_irqsave(&irq_desc[i].lock, flags);
--
-+                      spin_lock_irqsave(&irq_desc[i].lock, flags);
-                       action = irq_desc[i].action;
-                       if (!action)
-                               goto unlock;
-@@ -1112,8 +1096,7 @@
-                       }
-                       verbose_printk("\n");
- unlock:
--                      if (!in_atomic)
--                              spin_unlock_irqrestore(&irq_desc[i].lock, flags);
-+                      spin_unlock_irqrestore(&irq_desc[i].lock, flags);
-               }
-       }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c      2009-05-10 23:48:28.000000000 +0200
-@@ -46,7 +46,6 @@
- #include <asm/dpmc.h>
- #include <asm/bfin_sdh.h>
- #include <linux/spi/ad7877.h>
--#include <net/dsa.h>
- /*
-  * Name the Board for the /proc/cpuinfo
-@@ -105,33 +104,10 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
--};
--
--#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
--static struct dsa_platform_data ksz8893m_switch_data = {
--      .mii_bus = &bfin_mii_bus.dev,
--      .netdev = &bfin_mac_device.dev,
--      .port_names[0]  = NULL,
--      .port_names[1]  = "eth%d",
--      .port_names[2]  = "eth%d",
--      .port_names[3]  = "cpu",
--};
--
--static struct platform_device ksz8893m_switch_device = {
--      .name           = "dsa",
--      .id             = 0,
--      .num_resources  = 0,
--      .dev.platform_data = &ksz8893m_switch_data,
- };
- #endif
--#endif
- #if defined(CONFIG_MTD_M25P80) \
-       || defined(CONFIG_MTD_M25P80_MODULE)
-@@ -171,20 +147,9 @@
- };
- #endif
--#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--#if defined(CONFIG_NET_DSA_KSZ8893M) \
--      || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
--/* SPI SWITCH CHIP */
--static struct bfin5xx_spi_chip spi_switch_info = {
--      .enable_dma = 0,
--      .bits_per_word = 8,
--};
--#endif
--#endif
--
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -261,28 +226,23 @@
-       },
- #endif
--#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--#if defined(CONFIG_NET_DSA_KSZ8893M) \
--      || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "ksz8893m",
--              .max_speed_hz = 5000000,
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 1,
-+              .chip_select = 0,
-               .platform_data = NULL,
--              .controller_data = &spi_switch_info,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
--#endif
--#endif
--
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -513,6 +473,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
-       {
-@@ -526,6 +487,7 @@
-       },
- #endif
- };
-+#endif
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -622,11 +584,7 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
--#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
--      &ksz8893m_switch_device,
--#endif
- #endif
- #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-@@ -674,8 +632,12 @@
- static int __init ezbrd_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-       return 0;
-@@ -687,7 +649,7 @@
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,12 +2,12 @@
-  * File: include/asm-blackfin/mach-bf518/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
- /* This file shoule be up to date with:
-- *  - Revision B, 02/03/2009; ADSP-BF512/BF514/BF516/BF518 Blackfin Processor Anomaly List
-+ *  - ????
-  */
- #ifndef _MACH_ANOMALY_H_
-@@ -19,8 +19,6 @@
- #define ANOMALY_05000122 (1)
- /* False Hardware Error from an Access in the Shadow of a Conditional Branch */
- #define ANOMALY_05000245 (1)
--/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */
--#define ANOMALY_05000254 (1)
- /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
- #define ANOMALY_05000265 (1)
- /* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
-@@ -55,12 +53,6 @@
- #define ANOMALY_05000443 (1)
- /* Incorrect L1 Instruction Bank B Memory Map Location */
- #define ANOMALY_05000444 (1)
--/* Incorrect Default Hysteresis Setting for RESET, NMI, and BMODE Signals */
--#define ANOMALY_05000452 (1)
--/* PWM_TRIPB Signal Not Available on PG10 */
--#define ANOMALY_05000453 (1)
--/* PPI_FS3 is Driven One Half Cycle Later Than PPI Data */
--#define ANOMALY_05000455 (1)
- /* Anomalies that don't exist on this proc */
- #define ANOMALY_05000125 (0)
-@@ -73,20 +65,15 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
- #define ANOMALY_05000285 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000312 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (0)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (0)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
-        CH_UART0_TX,
-        CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-        CONFIG_UART0_CTS_PIN,
-        CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
-        CH_UART1_TX,
-        CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
-        CONFIG_UART1_CTS_PIN,
-        CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -103,8 +103,6 @@
- #define P_SPI1_SSEL4  (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(2))
- #define P_SPI1_SSEL5  (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(2))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
--
- /* SPORT Port Mux */
- #define P_SPORT0_DRPRI        (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(0))
- #define P_SPORT0_RSCLK        (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c   2009-05-10 23:48:28.000000000 +0200
-@@ -403,13 +403,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -487,9 +482,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip  mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -585,13 +580,23 @@
-               .controller_data = &ad9960_spi_chip_info,
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
--              .max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -788,6 +793,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
-       {
-@@ -803,6 +809,7 @@
-       },
- #endif
- };
-+#endif
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -913,7 +920,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -962,23 +968,27 @@
-       &bfin_gpios_device,
- };
--static int __init cm_init(void)
-+static int __init stamp_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-       return 0;
- }
--arch_initcall(cm_init);
-+arch_initcall(stamp_init);
- void native_machine_restart(char *cmd)
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c      2009-05-10 23:48:28.000000000 +0200
-@@ -208,13 +208,8 @@
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -256,9 +251,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -366,13 +361,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc_dummy",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -585,6 +590,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
-       {
-@@ -598,6 +604,7 @@
-       },
- #endif
- };
-+#endif
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -713,7 +720,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -758,23 +764,27 @@
-       &bfin_gpios_device,
- };
--static int __init ezbrd_init(void)
-+static int __init stamp_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-       return 0;
- }
--arch_initcall(ezbrd_init);
-+arch_initcall(stamp_init);
- void native_machine_restart(char *cmd)
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c      2009-05-10 23:48:28.000000000 +0200
-@@ -425,13 +425,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -835,6 +830,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
-       {
-@@ -848,6 +844,7 @@
-       },
- #endif
- };
-+#endif
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -991,7 +988,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -1052,23 +1048,27 @@
-       &bfin_gpios_device,
- };
--static int __init ezkit_init(void)
-+static int __init stamp_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-       return 0;
- }
--arch_initcall(ezkit_init);
-+arch_initcall(stamp_init);
- void native_machine_restart(char *cmd)
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
-  * File: include/asm-blackfin/mach-bf527/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
-@@ -167,16 +167,12 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
- #define ANOMALY_05000285 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000312 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000363 (0)
- #define ANOMALY_05000412 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
-        CH_UART0_TX,
-        CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-        CONFIG_UART0_CTS_PIN,
-        CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
-        CH_UART1_TX,
-        CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
-        CONFIG_UART1_CTS_PIN,
-        CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -73,8 +73,6 @@
- #define P_HWAIT               (P_DONTCARE)
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
--
- #define P_SPI0_SS     (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
- #define P_SPI0_SSEL1  (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(2))
- #define P_SPI0_SCK    (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(2))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -101,9 +101,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -129,13 +129,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+      {
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -299,8 +309,10 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- };
-+#endif
- static const unsigned int cclk_vlev_datasheet[] =
- {
-@@ -378,8 +390,10 @@
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-       ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       if (ret < 0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c       2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c   2009-05-10 23:48:28.000000000 +0200
-@@ -96,9 +96,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -138,13 +138,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc_dummy",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c      2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,126 @@
-+/*
-+ * File:         arch/blackfin/mach-bf533/generic_board.c
-+ * Based on:     arch/blackfin/mach-bf533/ezkit.c
-+ * Author:       Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created:      2005
-+ * Description:
-+ *
-+ * Modified:
-+ *               Copyright 2005 National ICT Australia (NICTA)
-+ *               Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs:         Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * 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, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+
-+/*
-+ * Name the Board for the /proc/cpuinfo
-+ */
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+static struct platform_device rtc_device = {
-+      .name = "rtc-bfin",
-+      .id   = -1,
-+};
-+#endif
-+
-+/*
-+ *  Driver needs to know address, irq and flag pin.
-+ */
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+      {
-+              .start = 0x20300300,
-+              .end = 0x20300300 + 16,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = IRQ_PROG_INTB,
-+              .end = IRQ_PROG_INTB,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      }, {
-+              .start = IRQ_PF7,
-+              .end = IRQ_PF7,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+
-+static struct platform_device smc91x_device = {
-+      .name = "smc91x",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(smc91x_resources),
-+      .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+      {
-+              .start = 0xFFC00400,
-+              .end = 0xFFC004FF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+      {
-+              .start = IRQ_UART0_RX,
-+              .end = IRQ_UART0_RX+1,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+      {
-+              .start = CH_UART0_RX,
-+              .end = CH_UART0_RX+1,
-+              .flags = IORESOURCE_DMA,
-+      },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+      .name = "bfin_sir",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+      .resource = bfin_sir0_resources,
-+};
-+#endif
-+#endif
-+
-+static struct platform_device *generic_board_devices[] __initdata = {
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+      &rtc_device,
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+      &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+      &bfin_sir0_device,
-+#endif
-+#endif
-+};
-+
-+static int __init generic_board_init(void)
-+{
-+      printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+      return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices));
-+}
-+
-+arch_initcall(generic_board_init);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c   2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c       2009-05-10 23:48:28.000000000 +0200
-@@ -127,8 +127,8 @@
- #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
- /* all SPI peripherals info goes here */
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
- /*
-  * CPOL (Clock Polarity)
-  *  0 - Active high SCK
-@@ -152,13 +152,14 @@
- /* Notice: for blackfin, the speed_hz is the value of register
-  * SPI_BAUD, not the real baudrate */
- static struct spi_board_info bfin_spi_board_info[] __initdata = {
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 2,
-               .bus_num = 1,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-       },
- #endif
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig      2009-05-10 23:48:28.000000000 +0200
-@@ -38,4 +38,9 @@
-       help
-         Core support for IP04/IP04 open hardware IP-PBX.
-+config GENERIC_BF533_BOARD
-+      bool "Generic"
-+      help
-+        Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile     2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf533/boards/Makefile
- #
-+obj-$(CONFIG_GENERIC_BF533_BOARD)      += generic_board.o
- obj-$(CONFIG_BFIN533_STAMP)            += stamp.o
- obj-$(CONFIG_BFIN532_IP0X)             += ip0x.o
- obj-$(CONFIG_BFIN533_EZKIT)            += ezkit.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c      2009-05-10 23:48:28.000000000 +0200
-@@ -441,6 +441,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
-       {
-@@ -460,6 +461,7 @@
-       },
- #endif
- };
-+#endif
- static const unsigned int cclk_vlev_datasheet[] =
- {
-@@ -548,8 +550,10 @@
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-       ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       if (ret < 0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
-  * File: include/asm-blackfin/mach-bf533/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
-@@ -160,7 +160,7 @@
- #define ANOMALY_05000301 (__SILICON_REVISION__ < 6)
- /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
- #define ANOMALY_05000302 (__SILICON_REVISION__ < 5)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
- /* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */
- #define ANOMALY_05000306 (__SILICON_REVISION__ < 5)
-@@ -278,12 +278,9 @@
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -134,7 +134,7 @@
-       CH_UART_TX,
-       CH_UART_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-       CONFIG_UART0_CTS_PIN,
-       CONFIG_UART0_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -54,11 +54,14 @@
- #define P_SPI0_SSEL2  (P_DEFINED | P_IDENT(GPIO_PF2))
- #define P_SPI0_SSEL1  (P_DEFINED | P_IDENT(GPIO_PF1))
- #define P_SPI0_SS     (P_DEFINED | P_IDENT(GPIO_PF0))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
- #define P_TMR2                (P_DONTCARE)
- #define P_TMR1                (P_DONTCARE)
- #define P_TMR0                (P_DONTCARE)
- #define P_TMRCLK      (P_DEFINED | P_IDENT(GPIO_PF1))
-+
-+
-+
-+
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c       2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c   2009-05-10 23:48:28.000000000 +0200
-@@ -108,9 +108,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip  mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -160,13 +160,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
--              .max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 1,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = 7,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -469,13 +479,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -586,7 +591,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c      2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,739 @@
-+/*
-+ * File:         arch/blackfin/mach-bf537/boards/generic_board.c
-+ * Based on:     arch/blackfin/mach-bf533/boards/ezkit.c
-+ * Author:       Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Modified:
-+ *               Copyright 2005 National ICT Australia (NICTA)
-+ *               Copyright 2004-2008 Analog Devices Inc.
-+ *
-+ * Bugs:         Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * 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, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/etherdevice.h>
-+#include <linux/platform_device.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/flash.h>
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+#include <linux/usb/isp1362.h>
-+#endif
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/usb/sl811.h>
-+#include <asm/dma.h>
-+#include <asm/bfin5xx_spi.h>
-+#include <asm/reboot.h>
-+#include <asm/portmux.h>
-+#include <linux/spi/ad7877.h>
-+
-+/*
-+ * Name the Board for the /proc/cpuinfo
-+ */
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+/*
-+ *  Driver needs to know address, irq and flag pin.
-+ */
-+
-+#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
-+#include <linux/usb/isp1760.h>
-+static struct resource bfin_isp1760_resources[] = {
-+      [0] = {
-+              .start  = 0x203C0000,
-+              .end    = 0x203C0000 + 0x000fffff,
-+              .flags  = IORESOURCE_MEM,
-+      },
-+      [1] = {
-+              .start  = IRQ_PF7,
-+              .end    = IRQ_PF7,
-+              .flags  = IORESOURCE_IRQ,
-+      },
-+};
-+
-+static struct isp1760_platform_data isp1760_priv = {
-+      .is_isp1761 = 0,
-+      .port1_disable = 0,
-+      .bus_width_16 = 1,
-+      .port1_otg = 0,
-+      .analog_oc = 0,
-+      .dack_polarity_high = 0,
-+      .dreq_polarity_high = 0,
-+};
-+
-+static struct platform_device bfin_isp1760_device = {
-+      .name           = "isp1760-hcd",
-+      .id             = 0,
-+      .dev = {
-+              .platform_data = &isp1760_priv,
-+      },
-+      .num_resources  = ARRAY_SIZE(bfin_isp1760_resources),
-+      .resource       = bfin_isp1760_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
-+static struct resource bfin_pcmcia_cf_resources[] = {
-+      {
-+              .start = 0x20310000, /* IO PORT */
-+              .end = 0x20312000,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = 0x20311000, /* Attribute Memory */
-+              .end = 0x20311FFF,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = IRQ_PF4,
-+              .end = IRQ_PF4,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
-+      }, {
-+              .start = 6, /* Card Detect PF6 */
-+              .end = 6,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+};
-+
-+static struct platform_device bfin_pcmcia_cf_device = {
-+      .name = "bfin_cf_pcmcia",
-+      .id = -1,
-+      .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
-+      .resource = bfin_pcmcia_cf_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+static struct platform_device rtc_device = {
-+      .name = "rtc-bfin",
-+      .id   = -1,
-+};
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+      {
-+              .name = "smc91x-regs",
-+              .start = 0x20300300,
-+              .end = 0x20300300 + 16,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+
-+              .start = IRQ_PF7,
-+              .end = IRQ_PF7,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+static struct platform_device smc91x_device = {
-+      .name = "smc91x",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(smc91x_resources),
-+      .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
-+static struct resource dm9000_resources[] = {
-+      [0] = {
-+              .start  = 0x203FB800,
-+              .end    = 0x203FB800 + 1,
-+              .flags  = IORESOURCE_MEM,
-+      },
-+      [1] = {
-+              .start  = 0x203FB800 + 4,
-+              .end    = 0x203FB800 + 5,
-+              .flags  = IORESOURCE_MEM,
-+      },
-+      [2] = {
-+              .start  = IRQ_PF9,
-+              .end    = IRQ_PF9,
-+              .flags  = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
-+      },
-+};
-+
-+static struct platform_device dm9000_device = {
-+      .name           = "dm9000",
-+      .id             = -1,
-+      .num_resources  = ARRAY_SIZE(dm9000_resources),
-+      .resource       = dm9000_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
-+static struct resource sl811_hcd_resources[] = {
-+      {
-+              .start = 0x20340000,
-+              .end = 0x20340000,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = 0x20340004,
-+              .end = 0x20340004,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = CONFIG_USB_SL811_BFIN_IRQ,
-+              .end = CONFIG_USB_SL811_BFIN_IRQ,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+
-+#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
-+void sl811_port_power(struct device *dev, int is_on)
-+{
-+      gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
-+      gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
-+
-+}
-+#endif
-+
-+static struct sl811_platform_data sl811_priv = {
-+      .potpg = 10,
-+      .power = 250,       /* == 500mA */
-+#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
-+      .port_power = &sl811_port_power,
-+#endif
-+};
-+
-+static struct platform_device sl811_hcd_device = {
-+      .name = "sl811-hcd",
-+      .id = 0,
-+      .dev = {
-+              .platform_data = &sl811_priv,
-+      },
-+      .num_resources = ARRAY_SIZE(sl811_hcd_resources),
-+      .resource = sl811_hcd_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+static struct resource isp1362_hcd_resources[] = {
-+      {
-+              .start = 0x20360000,
-+              .end = 0x20360000,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = 0x20360004,
-+              .end = 0x20360004,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
-+              .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+
-+static struct isp1362_platform_data isp1362_priv = {
-+      .sel15Kres = 1,
-+      .clknotstop = 0,
-+      .oc_enable = 0,
-+      .int_act_high = 0,
-+      .int_edge_triggered = 0,
-+      .remote_wakeup_connected = 0,
-+      .no_power_switching = 1,
-+      .power_switching_mode = 0,
-+};
-+
-+static struct platform_device isp1362_hcd_device = {
-+      .name = "isp1362-hcd",
-+      .id = 0,
-+      .dev = {
-+              .platform_data = &isp1362_priv,
-+      },
-+      .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
-+      .resource = isp1362_hcd_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+static struct platform_device bfin_mac_device = {
-+      .name = "bfin_mac",
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
-+static struct resource net2272_bfin_resources[] = {
-+      {
-+              .start = 0x20300000,
-+              .end = 0x20300000 + 0x100,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = IRQ_PF7,
-+              .end = IRQ_PF7,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+
-+static struct platform_device net2272_bfin_device = {
-+      .name = "net2272",
-+      .id = -1,
-+      .num_resources = ARRAY_SIZE(net2272_bfin_resources),
-+      .resource = net2272_bfin_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+/* all SPI peripherals info goes here */
-+
-+#if defined(CONFIG_MTD_M25P80) \
-+      || defined(CONFIG_MTD_M25P80_MODULE)
-+static struct mtd_partition bfin_spi_flash_partitions[] = {
-+      {
-+              .name = "bootloader(spi)",
-+              .size = 0x00020000,
-+              .offset = 0,
-+              .mask_flags = MTD_CAP_ROM
-+      }, {
-+              .name = "linux kernel(spi)",
-+              .size = 0xe0000,
-+              .offset = 0x20000
-+      }, {
-+              .name = "file system(spi)",
-+              .size = 0x700000,
-+              .offset = 0x00100000,
-+      }
-+};
-+
-+static struct flash_platform_data bfin_spi_flash_data = {
-+      .name = "m25p80",
-+      .parts = bfin_spi_flash_partitions,
-+      .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
-+      .type = "m25p64",
-+};
-+
-+/* SPI flash chip (m25p64) */
-+static struct bfin5xx_spi_chip spi_flash_chip_info = {
-+      .enable_dma = 0,         /* use dma transfer with this chip*/
-+      .bits_per_word = 8,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_ADC_BF533) \
-+      || defined(CONFIG_SPI_ADC_BF533_MODULE)
-+/* SPI ADC chip */
-+static struct bfin5xx_spi_chip spi_adc_chip_info = {
-+      .enable_dma = 1,         /* use dma transfer with this chip*/
-+      .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_SND_BLACKFIN_AD1836) \
-+      || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
-+static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
-+      .enable_dma = 0,
-+      .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
-+static struct bfin5xx_spi_chip ad9960_spi_chip_info = {
-+      .enable_dma = 0,
-+      .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-+      .bits_per_word = 8,
-+};
-+#endif
-+
-+#if defined(CONFIG_PBX)
-+static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
-+      .ctl_reg        = 0x4, /* send zero */
-+      .enable_dma     = 0,
-+      .bits_per_word  = 8,
-+      .cs_change_per_word = 1,
-+};
-+#endif
-+
-+#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
-+static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
-+      .enable_dma = 0,
-+      .bits_per_word = 16,
-+};
-+
-+static const struct ad7877_platform_data bfin_ad7877_ts_info = {
-+      .model                  = 7877,
-+      .vref_delay_usecs       = 50,   /* internal, no capacitor */
-+      .x_plate_ohms           = 419,
-+      .y_plate_ohms           = 486,
-+      .pressure_max           = 1000,
-+      .pressure_min           = 0,
-+      .stopacq_polarity       = 1,
-+      .first_conversion_delay = 3,
-+      .acquisition_time       = 1,
-+      .averaging              = 1,
-+      .pen_down_acc_interval  = 1,
-+};
-+#endif
-+
-+static struct spi_board_info bfin_spi_board_info[] __initdata = {
-+#if defined(CONFIG_MTD_M25P80) \
-+      || defined(CONFIG_MTD_M25P80_MODULE)
-+      {
-+              /* the modalias must be the same as spi device driver name */
-+              .modalias = "m25p80", /* Name of spi_driver for this device */
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0, /* Framework bus number */
-+              .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
-+              .platform_data = &bfin_spi_flash_data,
-+              .controller_data = &spi_flash_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+#endif
-+
-+#if defined(CONFIG_SPI_ADC_BF533) \
-+      || defined(CONFIG_SPI_ADC_BF533_MODULE)
-+      {
-+              .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
-+              .max_speed_hz = 6250000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0, /* Framework bus number */
-+              .chip_select = 1, /* Framework chip select. */
-+              .platform_data = NULL, /* No spi_driver specific config */
-+              .controller_data = &spi_adc_chip_info,
-+      },
-+#endif
-+
-+#if defined(CONFIG_SND_BLACKFIN_AD1836) \
-+      || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
-+      {
-+              .modalias = "ad1836-spi",
-+              .max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
-+              .controller_data = &ad1836_spi_chip_info,
-+      },
-+#endif
-+#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
-+      {
-+              .modalias = "ad9960-spi",
-+              .max_speed_hz = 10000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 1,
-+              .controller_data = &ad9960_spi_chip_info,
-+      },
-+#endif
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+      {
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+#endif
-+#if defined(CONFIG_PBX)
-+      {
-+              .modalias = "fxs-spi",
-+              .max_speed_hz = 12500000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 8 - CONFIG_J11_JUMPER,
-+              .controller_data = &spi_si3xxx_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "fxo-spi",
-+              .max_speed_hz = 12500000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 8 - CONFIG_J19_JUMPER,
-+              .controller_data = &spi_si3xxx_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+#endif
-+#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
-+      {
-+              .modalias               = "ad7877",
-+              .platform_data          = &bfin_ad7877_ts_info,
-+              .irq                    = IRQ_PF6,
-+              .max_speed_hz   = 12500000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num        = 0,
-+              .chip_select  = 1,
-+              .controller_data = &spi_ad7877_chip_info,
-+      },
-+#endif
-+};
-+
-+/* SPI controller data */
-+static struct bfin5xx_spi_master bfin_spi0_info = {
-+      .num_chipselect = 8,
-+      .enable_dma = 1,  /* master has the ability to do dma transfer */
-+      .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
-+};
-+
-+/* SPI (0) */
-+static struct resource bfin_spi0_resource[] = {
-+      [0] = {
-+              .start = SPI0_REGBASE,
-+              .end   = SPI0_REGBASE + 0xFF,
-+              .flags = IORESOURCE_MEM,
-+              },
-+      [1] = {
-+              .start = CH_SPI,
-+              .end   = CH_SPI,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+};
-+
-+static struct platform_device bfin_spi0_device = {
-+      .name = "bfin-spi",
-+      .id = 0, /* Bus number */
-+      .num_resources = ARRAY_SIZE(bfin_spi0_resource),
-+      .resource = bfin_spi0_resource,
-+      .dev = {
-+              .platform_data = &bfin_spi0_info, /* Passed to driver */
-+      },
-+};
-+#endif  /* spi master and devices */
-+
-+#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
-+static struct platform_device bfin_fb_device = {
-+      .name = "bf537-lq035",
-+};
-+#endif
-+
-+#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
-+static struct platform_device bfin_fb_adv7393_device = {
-+      .name = "bfin-adv7393",
-+};
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
-+static struct resource bfin_uart_resources[] = {
-+      {
-+              .start = 0xFFC00400,
-+              .end = 0xFFC004FF,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = 0xFFC02000,
-+              .end = 0xFFC020FF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+};
-+
-+static struct platform_device bfin_uart_device = {
-+      .name = "bfin-uart",
-+      .id = 1,
-+      .num_resources = ARRAY_SIZE(bfin_uart_resources),
-+      .resource = bfin_uart_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+      {
-+              .start = 0xFFC00400,
-+              .end = 0xFFC004FF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+      {
-+              .start = IRQ_UART0_RX,
-+              .end = IRQ_UART0_RX+1,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+      {
-+              .start = CH_UART0_RX,
-+              .end = CH_UART0_RX+1,
-+              .flags = IORESOURCE_DMA,
-+      },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+      .name = "bfin_sir",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+      .resource = bfin_sir0_resources,
-+};
-+#endif
-+#ifdef CONFIG_BFIN_SIR1
-+static struct resource bfin_sir1_resources[] = {
-+      {
-+              .start = 0xFFC02000,
-+              .end = 0xFFC020FF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+      {
-+              .start = IRQ_UART1_RX,
-+              .end = IRQ_UART1_RX+1,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+      {
-+              .start = CH_UART1_RX,
-+              .end = CH_UART1_RX+1,
-+              .flags = IORESOURCE_DMA,
-+      },
-+};
-+
-+static struct platform_device bfin_sir1_device = {
-+      .name = "bfin_sir",
-+      .id = 1,
-+      .num_resources = ARRAY_SIZE(bfin_sir1_resources),
-+      .resource = bfin_sir1_resources,
-+};
-+#endif
-+#endif
-+
-+#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
-+static struct resource bfin_twi0_resource[] = {
-+      [0] = {
-+              .start = TWI0_REGBASE,
-+              .end   = TWI0_REGBASE + 0xFF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+      [1] = {
-+              .start = IRQ_TWI,
-+              .end   = IRQ_TWI,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+};
-+
-+static struct platform_device i2c_bfin_twi_device = {
-+      .name = "i2c-bfin-twi",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(bfin_twi0_resource),
-+      .resource = bfin_twi0_resource,
-+};
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
-+static struct platform_device bfin_sport0_uart_device = {
-+      .name = "bfin-sport-uart",
-+      .id = 0,
-+};
-+
-+static struct platform_device bfin_sport1_uart_device = {
-+      .name = "bfin-sport-uart",
-+      .id = 1,
-+};
-+#endif
-+
-+static struct platform_device *stamp_devices[] __initdata = {
-+#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
-+      &bfin_pcmcia_cf_device,
-+#endif
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+      &rtc_device,
-+#endif
-+
-+#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
-+      &sl811_hcd_device,
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+      &isp1362_hcd_device,
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+      &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
-+      &dm9000_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+      &bfin_mac_device,
-+#endif
-+
-+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
-+      &net2272_bfin_device,
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
-+      &bfin_isp1760_device,
-+#endif
-+
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+      &bfin_spi0_device,
-+#endif
-+
-+#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
-+      &bfin_fb_device,
-+#endif
-+
-+#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
-+      &bfin_fb_adv7393_device,
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
-+      &bfin_uart_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+      &bfin_sir0_device,
-+#endif
-+#ifdef CONFIG_BFIN_SIR1
-+      &bfin_sir1_device,
-+#endif
-+#endif
-+
-+#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
-+      &i2c_bfin_twi_device,
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
-+      &bfin_sport0_uart_device,
-+      &bfin_sport1_uart_device,
-+#endif
-+};
-+
-+static int __init stamp_init(void)
-+{
-+      printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+      platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+      spi_register_board_info(bfin_spi_board_info,
-+                              ARRAY_SIZE(bfin_spi_board_info));
-+#endif
-+
-+      return 0;
-+}
-+
-+arch_initcall(stamp_init);
-+
-+void native_machine_restart(char *cmd)
-+{
-+      /* workaround reboot hang when booting from SPI */
-+      if ((bfin_read_SYSCR() & 0x7) == 0x3)
-+              bfin_gpio_reset_spi0_ssel1();
-+}
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+void bfin_get_ether_addr(char *addr)
-+{
-+      random_ether_addr(addr);
-+      printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
-+}
-+EXPORT_SYMBOL(bfin_get_ether_addr);
-+#endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig      2009-05-10 23:48:28.000000000 +0200
-@@ -33,4 +33,9 @@
-       help
-         Board supply package for CSP Minotaur
-+config GENERIC_BF537_BOARD
-+      bool "Generic"
-+      help
-+        Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile     2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf537/boards/Makefile
- #
-+obj-$(CONFIG_GENERIC_BF537_BOARD)      += generic_board.o
- obj-$(CONFIG_BFIN537_STAMP)            += stamp.o
- obj-$(CONFIG_BFIN537_BLUETECHNIX_CM)   += cm_bf537.o
- obj-$(CONFIG_BFIN537_BLUETECHNIX_TCM)  += tcm_bf537.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c       2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c   2009-05-10 23:48:28.000000000 +0200
-@@ -61,13 +61,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -134,9 +129,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -156,13 +151,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+      {
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 0,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -319,7 +324,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -373,5 +377,5 @@
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c     2009-05-10 23:48:28.000000000 +0200
-@@ -198,13 +198,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -289,9 +284,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -364,13 +359,23 @@
-               .controller_data = &ad9960_spi_chip_info,
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+      {
-+              .modalias = "spi_mmc_dummy",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = 7,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -524,7 +529,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -554,7 +558,7 @@
- #endif
- };
--static int __init pnav_init(void)
-+static int __init stamp_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-@@ -565,7 +569,7 @@
-       return 0;
- }
--arch_initcall(pnav_init);
-+arch_initcall(stamp_init);
- void bfin_get_ether_addr(char *addr)
- {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c      2009-05-10 23:48:28.000000000 +0200
-@@ -321,13 +321,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -1073,6 +1068,7 @@
- };
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
-       {
-@@ -1106,6 +1102,7 @@
-       },
- #endif
- };
-+#endif
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -1220,7 +1217,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -1288,8 +1284,12 @@
- static int __init stamp_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info,
-                               ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
-       bfin_plat_nand_init();
-       platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-       spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-@@ -1307,7 +1307,7 @@
- {
-       /* workaround reboot hang when booting from SPI */
-       if ((bfin_read_SYSCR() & 0x7) == 0x3)
--              bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+              bfin_gpio_reset_spi0_ssel1();
- }
- /*
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c      2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c  2009-05-10 23:48:28.000000000 +0200
-@@ -108,9 +108,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -160,13 +160,23 @@
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc_dummy",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = 7,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-+              .mode = SPI_MODE_3,
-+      },
-+      {
-+              .modalias = "spi_mmc",
-+              .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-+              .bus_num = 0,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-@@ -471,13 +481,8 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
--      .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
-       .name = "bfin_mac",
--      .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-@@ -588,7 +593,6 @@
- #endif
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--      &bfin_mii_bus,
-       &bfin_mac_device,
- #endif
-@@ -611,7 +615,7 @@
-       &bfin_gpios_device,
- };
--static int __init tcm_bf537_init(void)
-+static int __init cm_bf537_init(void)
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-       platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices));
-@@ -625,7 +629,7 @@
-       return 0;
- }
--arch_initcall(tcm_bf537_init);
-+arch_initcall(cm_bf537_init);
- void bfin_get_ether_addr(char *addr)
- {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
-  * File: include/asm-blackfin/mach-bf537/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
-@@ -110,7 +110,7 @@
- #define ANOMALY_05000301 (1)
- /* SSYNCs After Writes To CAN/DMA MMR Registers Are Not Always Handled Correctly */
- #define ANOMALY_05000304 (__SILICON_REVISION__ < 3)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 3)
- /* SCKELOW Bit Does Not Maintain State Through Hibernate */
- #define ANOMALY_05000307 (__SILICON_REVISION__ < 3)
-@@ -168,12 +168,9 @@
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
-       CH_UART0_TX,
-       CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-       CONFIG_UART0_CTS_PIN,
-       CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
-       CH_UART1_TX,
-       CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
-       CONFIG_UART1_CTS_PIN,
-       CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -31,7 +31,6 @@
- #define P_PPI0_FS1    (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(1))
- #define P_TACLK0      (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(1))
- #define P_TMRCLK      (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(1))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
- #define P_PPI0_D0     (P_DEFINED | P_IDENT(GPIO_PG0) | P_FUNCT(0))
- #define P_PPI0_D1     (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
-  * File: include/asm-blackfin/mach-bf538/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
-@@ -120,17 +120,13 @@
- #define ANOMALY_05000198 (0)
- #define ANOMALY_05000230 (0)
- #define ANOMALY_05000263 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
-       CH_UART0_TX,
-       CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-       CONFIG_UART0_CTS_PIN,
-       CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
-       CH_UART1_TX,
-       CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
-       CONFIG_UART1_CTS_PIN,
-       CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -102,6 +102,5 @@
- #define P_SPI0_SSEL2  (P_DEFINED | P_IDENT(GPIO_PF2))
- #define P_SPI0_SSEL1  (P_DEFINED | P_IDENT(GPIO_PF1))
- #define P_SPI0_SS     (P_DEFINED | P_IDENT(GPIO_PF0))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c      2009-05-10 23:48:28.000000000 +0200
-@@ -781,6 +781,7 @@
- #endif
- #endif
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info0[] = {
- };
-@@ -799,6 +800,7 @@
- #endif
- };
- #endif
-+#endif
- #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
- #include <linux/gpio_keys.h>
-@@ -954,12 +956,14 @@
- {
-       printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(0, bfin_i2c_board_info0,
-                               ARRAY_SIZE(bfin_i2c_board_info0));
- #if !defined(CONFIG_BF542)    /* The BF542 only has 1 TWI */
-       i2c_register_board_info(1, bfin_i2c_board_info1,
-                               ARRAY_SIZE(bfin_i2c_board_info1));
- #endif
-+#endif
-       platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices));
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,12 +2,12 @@
-  * File: include/asm-blackfin/mach-bf548/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
- /* This file shoule be up to date with:
-- *  - Revision H, 01/16/2009; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
-+ *  - Revision G, 08/07/2008; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
-  */
- #ifndef _MACH_ANOMALY_H_
-@@ -91,6 +91,8 @@
- #define ANOMALY_05000371 (__SILICON_REVISION__ < 2)
- /* USB DP/DM Data Pins May Lose State When Entering Hibernate */
- #define ANOMALY_05000372 (__SILICON_REVISION__ < 1)
-+/* Mobile DDR Operation Not Functional */
-+#define ANOMALY_05000377 (1)
- /* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */
- #define ANOMALY_05000378 (__SILICON_REVISION__ < 2)
- /* 16-Bit NAND FLASH Boot Mode Is Not Functional */
-@@ -155,22 +157,8 @@
- #define ANOMALY_05000429 (__SILICON_REVISION__ < 2)
- /* Software System Reset Corrupts PLL_LOCKCNT Register */
- #define ANOMALY_05000430 (__SILICON_REVISION__ >= 2)
--/* Incorrect Use of Stack in Lockbox Firmware During Authentication */
--#define ANOMALY_05000431 (__SILICON_REVISION__ < 3)
--/* OTP Write Accesses Not Supported */
--#define ANOMALY_05000442 (__SILICON_REVISION__ < 1)
- /* IFLUSH Instruction at End of Hardware Loop Causes Infinite Stall */
- #define ANOMALY_05000443 (1)
--/* CDMAPRIO and L2DMAPRIO Bits in the SYSCR Register Are Not Functional */
--#define ANOMALY_05000446 (1)
--/* UART IrDA Receiver Fails on Extended Bit Pulses */
--#define ANOMALY_05000447 (1)
--/* DDR Clock Duty Cycle Spec Violation (tCH, tCL) */
--#define ANOMALY_05000448 (__SILICON_REVISION__ == 1)
--/* Reduced Timing Margins on DDR Output Setup and Hold (tDS and tDH) */
--#define ANOMALY_05000449 (__SILICON_REVISION__ == 1)
--/* USB DMA Mode 1 Short Packet Data Corruption */
--#define ANOMALY_05000450 (1
- /* Anomalies that don't exist on this proc */
- #define ANOMALY_05000125 (0)
-@@ -183,13 +171,10 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h    2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h        2009-05-10 23:48:28.000000000 +0200
-@@ -104,18 +104,6 @@
- #define AMGCTLVAL     (V_AMBEN | V_AMCKEN)
--#if defined(CONFIG_BF542M)
--# define CONFIG_BF542
--#elif defined(CONFIG_BF544M)
--# define CONFIG_BF544
--#elif defined(CONFIG_BF547M)
--# define CONFIG_BF547
--#elif defined(CONFIG_BF548M)
--# define CONFIG_BF548
--#elif defined(CONFIG_BF549M)
--# define CONFIG_BF549
--#endif
--
- #if defined(CONFIG_BF542)
- # define CPU   "BF542"
- # define CPUID 0x27de
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -63,7 +63,7 @@
- #define UART_ENABLE_INTS(x, v) UART_SET_IER(x, v)
- #define UART_DISABLE_INTS(x) UART_CLEAR_IER(x, 0xF)
--#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART2_CTSRTS)
-+#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS)
- # define CONFIG_SERIAL_BFIN_CTSRTS
- # ifndef CONFIG_UART0_CTS_PIN
-@@ -74,12 +74,12 @@
- #  define CONFIG_UART0_RTS_PIN -1
- # endif
--# ifndef CONFIG_UART2_CTS_PIN
--#  define CONFIG_UART2_CTS_PIN -1
-+# ifndef CONFIG_UART1_CTS_PIN
-+#  define CONFIG_UART1_CTS_PIN -1
- # endif
--# ifndef CONFIG_UART2_RTS_PIN
--#  define CONFIG_UART2_RTS_PIN -1
-+# ifndef CONFIG_UART1_RTS_PIN
-+#  define CONFIG_UART1_RTS_PIN -1
- # endif
- #endif
-@@ -130,7 +130,7 @@
-       CH_UART0_TX,
-       CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-       CONFIG_UART0_CTS_PIN,
-       CONFIG_UART0_RTS_PIN,
- #endif
-@@ -144,10 +144,6 @@
-       CH_UART1_TX,
-       CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
--      0,
--      0,
--#endif
-       },
- #endif
- #ifdef CONFIG_SERIAL_BFIN_UART2
-@@ -158,7 +154,7 @@
-       CH_UART2_TX,
-       CH_UART2_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART2_CTSRTS
-       CONFIG_UART2_CTS_PIN,
-       CONFIG_UART2_RTS_PIN,
- #endif
-@@ -172,10 +168,6 @@
-       CH_UART3_TX,
-       CH_UART3_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
--      0,
--      0,
--#endif
-       },
- #endif
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h     2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h 2009-05-10 23:48:28.000000000 +0200
-@@ -195,17 +195,17 @@
- struct gpio_port_t {
-       unsigned short port_fer;
-       unsigned short dummy1;
--      unsigned short data;
-+      unsigned short port_data;
-       unsigned short dummy2;
--      unsigned short data_set;
-+      unsigned short port_set;
-       unsigned short dummy3;
--      unsigned short data_clear;
-+      unsigned short port_clear;
-       unsigned short dummy4;
--      unsigned short dir_set;
-+      unsigned short port_dir_set;
-       unsigned short dummy5;
--      unsigned short dir_clear;
-+      unsigned short port_dir_clear;
-       unsigned short dummy6;
--      unsigned short inen;
-+      unsigned short port_inen;
-       unsigned short dummy7;
-       unsigned int port_mux;
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h      2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h  2009-05-10 23:48:28.000000000 +0200
-@@ -123,8 +123,8 @@
- #define IRQ_MXVR_ERROR                BFIN_IRQ(51)    /* MXVR Status (Error) Interrupt */
- #define IRQ_MXVR_MSG          BFIN_IRQ(52)    /* MXVR Message Interrupt */
- #define IRQ_MXVR_PKT          BFIN_IRQ(53)    /* MXVR Packet Interrupt */
--#define IRQ_EPPI1_ERROR               BFIN_IRQ(54)    /* EPPI1 Error Interrupt */
--#define IRQ_EPPI2_ERROR               BFIN_IRQ(55)    /* EPPI2 Error Interrupt */
-+#define IRQ_EPP1_ERROR                BFIN_IRQ(54)    /* EPPI1 Error Interrupt */
-+#define IRQ_EPP2_ERROR                BFIN_IRQ(55)    /* EPPI2 Error Interrupt */
- #define IRQ_UART3_ERROR               BFIN_IRQ(56)    /* UART3 Status (Error) Interrupt */
- #define IRQ_HOST_ERROR                BFIN_IRQ(57)    /* HOST Status (Error) Interrupt */
- #define IRQ_PIXC_ERROR                BFIN_IRQ(59)    /* PIXC Status (Error) Interrupt */
-@@ -361,8 +361,8 @@
- #define IRQ_UART2_ERR                 IRQ_UART2_ERROR
- #define IRQ_CAN0_ERR                  IRQ_CAN0_ERROR
- #define IRQ_MXVR_ERR                  IRQ_MXVR_ERROR
--#define IRQ_EPPI1_ERR                 IRQ_EPPI1_ERROR
--#define IRQ_EPPI2_ERR                 IRQ_EPPI2_ERROR
-+#define IRQ_EPP1_ERR                  IRQ_EPP1_ERROR
-+#define IRQ_EPP2_ERR                  IRQ_EPP2_ERROR
- #define IRQ_UART3_ERR                 IRQ_UART3_ERROR
- #define IRQ_HOST_ERR                  IRQ_HOST_ERROR
- #define IRQ_PIXC_ERR                  IRQ_PIXC_ERROR
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h  2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -125,7 +125,6 @@
- #define P_KEY_COL2    (P_DEFINED | P_IDENT(GPIO_PD14) | P_FUNCT(3))
- #define P_KEY_COL3    (P_DEFINED | P_IDENT(GPIO_PD15) | P_FUNCT(3))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
- #define P_SPI0_SCK    (P_DEFINED | P_IDENT(GPIO_PE0) | P_FUNCT(0))
- #define P_SPI0_MISO   (P_DEFINED | P_IDENT(GPIO_PE1) | P_FUNCT(0))
- #define P_SPI0_MOSI   (P_DEFINED | P_IDENT(GPIO_PE2) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c       2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c   2009-05-10 23:48:28.000000000 +0200
-@@ -105,9 +105,9 @@
- };
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
--      .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+      .enable_dma = 1,
-       .bits_per_word = 8,
- };
- #endif
-@@ -155,13 +155,14 @@
-               .controller_data = &ad9960_spi_chip_info,
-       },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-       {
--              .modalias = "mmc_spi",
-+              .modalias = "spi_mmc",
-               .max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
-               .bus_num = 0,
--              .chip_select = 5,
--              .controller_data = &mmc_spi_chip_info,
-+              .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+              .platform_data = NULL,
-+              .controller_data = &spi_mmc_chip_info,
-               .mode = SPI_MODE_3,
-       },
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c      2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,113 @@
-+/*
-+ * File:         arch/blackfin/mach-bf561/generic_board.c
-+ * Based on:     arch/blackfin/mach-bf533/ezkit.c
-+ * Author:       Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Modified:
-+ *               Copyright 2005 National ICT Australia (NICTA)
-+ *               Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs:         Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * 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, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+/*
-+ *  Driver needs to know address, irq and flag pin.
-+ */
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+      {
-+              .start = 0x2C010300,
-+              .end = 0x2C010300 + 16,
-+              .flags = IORESOURCE_MEM,
-+      }, {
-+              .start = IRQ_PROG_INTB,
-+              .end = IRQ_PROG_INTB,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      }, {
-+              .start = IRQ_PF9,
-+              .end = IRQ_PF9,
-+              .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+      },
-+};
-+
-+static struct platform_device smc91x_device = {
-+      .name = "smc91x",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(smc91x_resources),
-+      .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+      {
-+              .start = 0xFFC00400,
-+              .end = 0xFFC004FF,
-+              .flags = IORESOURCE_MEM,
-+      },
-+      {
-+              .start = IRQ_UART0_RX,
-+              .end = IRQ_UART0_RX+1,
-+              .flags = IORESOURCE_IRQ,
-+      },
-+      {
-+              .start = CH_UART0_RX,
-+              .end = CH_UART0_RX+1,
-+              .flags = IORESOURCE_DMA,
-+      },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+      .name = "bfin_sir",
-+      .id = 0,
-+      .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+      .resource = bfin_sir0_resources,
-+};
-+#endif
-+#endif
-+
-+static struct platform_device *generic_board_devices[] __initdata = {
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+      &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+      &bfin_sir0_device,
-+#endif
-+#endif
-+};
-+
-+static int __init generic_board_init(void)
-+{
-+      printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+      return platform_add_devices(generic_board_devices,
-+                                  ARRAY_SIZE(generic_board_devices));
-+}
-+
-+arch_initcall(generic_board_init);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig      2009-05-10 23:48:28.000000000 +0200
-@@ -19,4 +19,9 @@
-       help
-         CM-BF561 support for EVAL- and DEV-Board.
-+config GENERIC_BF561_BOARD
-+      bool "Generic"
-+      help
-+        Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile     2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf561/boards/Makefile
- #
-+obj-$(CONFIG_GENERIC_BF561_BOARD)      += generic_board.o
- obj-$(CONFIG_BFIN561_BLUETECHNIX_CM)   += cm_bf561.o
- obj-$(CONFIG_BFIN561_EZKIT)            += ezkit.o
- obj-$(CONFIG_BFIN561_TEPLA)            += tepla.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h      2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
-  * File: include/asm-blackfin/mach-bf561/anomaly.h
-  * Bugs: Enter bugs at http://blackfin.uclinux.org/
-  *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
-  * Licensed under the GPL-2 or later.
-  */
-@@ -224,7 +224,7 @@
- #define ANOMALY_05000301 (1)
- /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
- #define ANOMALY_05000302 (1)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
- /* SCKELOW Bit Does Not Maintain State Through Hibernate */
- #define ANOMALY_05000307 (__SILICON_REVISION__ < 5)
-@@ -283,11 +283,8 @@
- #define ANOMALY_05000273 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000353 (1)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h      2009-05-10 23:48:28.000000000 +0200
-@@ -134,7 +134,7 @@
-       CH_UART_TX,
-       CH_UART_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
-       CONFIG_UART0_CTS_PIN,
-       CONFIG_UART0_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h     2009-05-10 23:48:28.000000000 +0200
-@@ -1106,8 +1106,6 @@
- #define DLEN_8                     0x0        /* PPI Data Length mask for DLEN=8 */
- #define DLEN(x)       (((x-9) & 0x07) << 11)  /* PPI Data Length (only works for x=10-->x=16) */
- #define POL                  0x0000C000       /* PPI Signal Polarities       */
--#define       POLC            0x4000          /* PPI Clock Polarity */
--#define       POLS            0x8000          /* PPI Frame Sync Polarity */
- /* PPI_STATUS Masks */
- #define FLD                0x00000400 /* Field Indicator   */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h      2009-05-10 23:48:28.000000000 +0200
-@@ -85,6 +85,5 @@
- #define P_SPI0_MOSI   (P_DONTCARE)
- #define P_SPI0_MISO   (P_DONTCARE)
- #define P_SPI0_SCK    (P_DONTCARE)
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c
---- linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c      2009-05-10 23:48:28.000000000 +0200
-@@ -62,12 +62,3 @@
- #if (CONFIG_BOOT_LOAD & 0x3)
- # error "The kernel load address must be 4 byte aligned"
- #endif
--
--/* The entire kernel must be able to make a 24bit pcrel call to start of L1 */
--#if ((0xffffffff - L1_CODE_START + 1) + CONFIG_BOOT_LOAD) > 0x1000000
--# error "The kernel load address is too high; keep it below 10meg for safety"
--#endif
--
--#if ANOMALY_05000448
--# error You are using a part with anomaly 05000448, this issue causes random memory read/write failures - that means random crashes.
--#endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S        2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S    2009-05-10 23:48:28.000000000 +0200
-@@ -66,33 +66,11 @@
- /* Invalidate all instruction cache lines assocoiated with this memory area */
- ENTRY(_blackfin_icache_flush_range)
--/*
-- * Walkaround to avoid loading wrong instruction after invalidating icache
-- * and following sequence is met.
-- *
-- * 1) One instruction address is cached in the instruction cache.
-- * 2) This instruction in SDRAM is changed.
-- * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
-- * 4) This instruction is executed again, but the old one is loaded.
-- */
--      P0 = R0;
--      IFLUSH[P0];
-       do_flush IFLUSH, , nop
- ENDPROC(_blackfin_icache_flush_range)
- /* Flush all cache lines assocoiated with this area of memory. */
- ENTRY(_blackfin_icache_dcache_flush_range)
--/*
-- * Walkaround to avoid loading wrong instruction after invalidating icache
-- * and following sequence is met.
-- *
-- * 1) One instruction address is cached in the instruction cache.
-- * 2) This instruction in SDRAM is changed.
-- * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
-- * 4) This instruction is executed again, but the old one is loaded.
-- */
--      P0 = R0;
--      IFLUSH[P0];
-       do_flush FLUSH, IFLUSH
- ENDPROC(_blackfin_icache_dcache_flush_range)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c
---- linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c  2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c      2009-05-10 23:48:28.000000000 +0200
-@@ -14,10 +14,9 @@
- #include <asm/clocks.h>
- #include <asm/mem_init.h>
--#define SDGCTL_WIDTH (1 << 31)        /* SDRAM external data path width */
- #define PLL_CTL_VAL \
-       (((CONFIG_VCO_MULT & 63) << 9) | CLKIN_HALF | \
--       (PLL_BYPASS << 8) | (ANOMALY_05000305 ? 0 : 0x8000))
-+       (PLL_BYPASS << 8) | (ANOMALY_05000265 ? 0x8000 : 0))
- __attribute__((l1_text))
- static void do_sync(void)
-@@ -77,7 +76,7 @@
-       bfin_write_PLL_DIV(CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
- #ifdef EBIU_SDGCTL
-       bfin_write_EBIU_SDRRC(mem_SDRRC);
--      bfin_write_EBIU_SDGCTL((bfin_read_EBIU_SDGCTL() & SDGCTL_WIDTH) | mem_SDGCTL);
-+      bfin_write_EBIU_SDGCTL(mem_SDGCTL);
- #else
-       bfin_write_EBIU_RSTCTL(bfin_read_EBIU_RSTCTL() & ~(SRREQ));
-       do_sync();
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S   2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S       2009-05-10 23:48:28.000000000 +0200
-@@ -376,22 +376,10 @@
- #endif
- #ifdef PINT0_ASSIGN
--      PM_SYS_PUSH(PINT0_MASK_SET)
--      PM_SYS_PUSH(PINT1_MASK_SET)
--      PM_SYS_PUSH(PINT2_MASK_SET)
--      PM_SYS_PUSH(PINT3_MASK_SET)
-       PM_SYS_PUSH(PINT0_ASSIGN)
-       PM_SYS_PUSH(PINT1_ASSIGN)
-       PM_SYS_PUSH(PINT2_ASSIGN)
-       PM_SYS_PUSH(PINT3_ASSIGN)
--      PM_SYS_PUSH(PINT0_INVERT_SET)
--      PM_SYS_PUSH(PINT1_INVERT_SET)
--      PM_SYS_PUSH(PINT2_INVERT_SET)
--      PM_SYS_PUSH(PINT3_INVERT_SET)
--      PM_SYS_PUSH(PINT0_EDGE_SET)
--      PM_SYS_PUSH(PINT1_EDGE_SET)
--      PM_SYS_PUSH(PINT2_EDGE_SET)
--      PM_SYS_PUSH(PINT3_EDGE_SET)
- #endif
-       PM_SYS_PUSH(EBIU_AMBCTL0)
-@@ -726,22 +714,10 @@
-       PM_SYS_POP(EBIU_AMBCTL0)
- #ifdef PINT0_ASSIGN
--      PM_SYS_POP(PINT3_EDGE_SET)
--      PM_SYS_POP(PINT2_EDGE_SET)
--      PM_SYS_POP(PINT1_EDGE_SET)
--      PM_SYS_POP(PINT0_EDGE_SET)
--      PM_SYS_POP(PINT3_INVERT_SET)
--      PM_SYS_POP(PINT2_INVERT_SET)
--      PM_SYS_POP(PINT1_INVERT_SET)
--      PM_SYS_POP(PINT0_INVERT_SET)
-       PM_SYS_POP(PINT3_ASSIGN)
-       PM_SYS_POP(PINT2_ASSIGN)
-       PM_SYS_POP(PINT1_ASSIGN)
-       PM_SYS_POP(PINT0_ASSIGN)
--      PM_SYS_POP(PINT3_MASK_SET)
--      PM_SYS_POP(PINT2_MASK_SET)
--      PM_SYS_POP(PINT1_MASK_SET)
--      PM_SYS_POP(PINT0_MASK_SET)
- #endif
- #ifdef SICA_IWR1
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S        2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S    2009-05-10 23:48:28.000000000 +0200
-@@ -151,6 +151,13 @@
-       jump.s _bfin_return_from_exception;
- ENDPROC(_ex_syscall)
-+ENTRY(_ex_soft_bp)
-+      r7 = retx;
-+      r7 += -2;
-+      retx = r7;
-+      jump.s _ex_trap_c;
-+ENDPROC(_ex_soft_bp)
-+
- ENTRY(_ex_single_step)
-       /* If we just returned from an interrupt, the single step event is
-          for the RTI instruction.  */
-@@ -600,19 +607,6 @@
-       p2 = [p2];
-       [p2+(TASK_THREAD+THREAD_KSP)] = sp;
--#ifdef CONFIG_IPIPE
--      r0 = sp;
--      SP += -12;
--      call ___ipipe_syscall_root;
--      SP += 12;
--      cc = r0 == 1;
--      if cc jump .Lsyscall_really_exit;
--      cc = r0 == -1;
--      if cc jump .Lresume_userspace;
--      r3 = [sp + PT_R3];
--      r4 = [sp + PT_R4];
--      p0 = [sp + PT_ORIG_P0];
--#endif /* CONFIG_IPIPE */
-       /* Check the System Call */
-       r7 = __NR_syscall;
-@@ -667,17 +661,6 @@
-       r7 =  r7 & r4;
- .Lsyscall_resched:
--#ifdef CONFIG_IPIPE
--      cc = BITTST(r7, TIF_IRQ_SYNC);
--      if !cc jump .Lsyscall_no_irqsync;
--      [--sp] = reti;
--      r0 = [sp++];
--      SP += -12;
--      call ___ipipe_sync_root;
--      SP += 12;
--      jump .Lresume_userspace_1;
--.Lsyscall_no_irqsync:
--#endif
-       cc = BITTST(r7, TIF_NEED_RESCHED);
-       if !cc jump .Lsyscall_sigpending;
-@@ -709,10 +692,6 @@
- .Lsyscall_really_exit:
-       r5 = [sp + PT_RESERVED];
-       rets = r5;
--#ifdef CONFIG_IPIPE
--      [--sp] = reti;
--      r5 = [sp++];
--#endif /* CONFIG_IPIPE */
-       rts;
- ENDPROC(_system_call)
-@@ -799,15 +778,6 @@
- ENDPROC(_resume)
- ENTRY(_ret_from_exception)
--#ifdef CONFIG_IPIPE
--      [--sp] = rets;
--      SP += -12;
--      call ___ipipe_check_root
--      SP += 12
--      rets = [sp++];
--      cc = r0 == 0;
--      if cc jump 4f;                /* not on behalf of Linux, get out */
--#endif /* CONFIG_IPIPE */
-       p2.l = lo(IPEND);
-       p2.h = hi(IPEND);
-@@ -864,28 +834,6 @@
-       rts;
- ENDPROC(_ret_from_exception)
--#ifdef CONFIG_IPIPE
--
--_sync_root_irqs:
--      [--sp] = reti;          /* Reenable interrupts */
--      r0 = [sp++];
--      jump.l ___ipipe_sync_root
--
--_resume_kernel_from_int:
--      r0.l = _sync_root_irqs
--      r0.h = _sync_root_irqs
--      [--sp] = rets;
--      [--sp] = ( r7:4, p5:3 );
--      SP += -12;
--      call ___ipipe_call_irqtail
--      SP += 12;
--      ( r7:4, p5:3 ) = [sp++];
--      rets = [sp++];
--      rts
--#else
--#define _resume_kernel_from_int        2f
--#endif
--
- ENTRY(_return_from_int)
-       /* If someone else already raised IRQ 15, do nothing.  */
-       csync;
-@@ -907,7 +855,7 @@
-       r1 = r0 - r1;
-       r2 = r0 & r1;
-       cc = r2 == 0;
--      if !cc jump _resume_kernel_from_int;
-+      if !cc jump 2f;
-       /* Lower the interrupt level to 15.  */
-       p0.l = lo(EVT15);
-@@ -1139,7 +1087,7 @@
-        * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined
-        */
-       .long _ex_syscall       /* 0x00 - User Defined - Linux Syscall */
--      .long _ex_trap_c        /* 0x01 - User Defined - Software breakpoint */
-+      .long _ex_soft_bp       /* 0x01 - User Defined - Software breakpoint */
- #ifdef        CONFIG_KGDB
-       .long _ex_trap_c        /* 0x02 - User Defined - KGDB initial connection
-                                                        and break signal trap */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/head.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/head.S 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S     2009-05-10 23:48:28.000000000 +0200
-@@ -17,19 +17,6 @@
- __INIT
--ENTRY(__init_clear_bss)
--      r2 = r2 - r1;
--      cc = r2 == 0;
--      if cc jump .L_bss_done;
--      r2 >>= 2;
--      p1 = r1;
--      p2 = r2;
--      lsetup (1f, 1f) lc0 = p2;
--1:    [p1++] = r0;
--.L_bss_done:
--      rts;
--ENDPROC(__init_clear_bss)
--
- #define INITIAL_STACK (L1_SCRATCH_START + L1_SCRATCH_LENGTH - 12)
- ENTRY(__start)
-@@ -157,35 +144,6 @@
-       call _init_early_exception_vectors;
- #endif
--