]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] ARM: OMAP: FB support for OMAP2
authorImre Deak <imre.deak@nokia.com>
Wed, 19 Oct 2005 19:53:29 +0000 (22:53 +0300)
committerTony Lindgren <tony@atomide.com>
Wed, 19 Oct 2005 19:53:29 +0000 (22:53 +0300)
included in this FB patch:
- OMAP2 support with overlay, colorkey handling
- the palmte patch posted by Romain Goyet. The palette loading is
  changed a bit, so that it works ok with other platforms as well.
- registering the FB device through plat-omap/devices.c instead of doing
  it from the driver itself. Boards have to specify the OMAP_TAG_LCD
  config in the related board-*.c with in order to have FB support.
- pixel clock divider calculation based on the panel->pixel_clock
  instead of the wired panel->pcd
- support for external controllers both on SOSSI (OMAP1) and
  RFBI (OMAP2), kudos to Juha for this
- removal of the OMAP1 2D gfx stuff, it didn't really improve the
  performance:(
- double buffering IOCTL API, as this can be done in a more standard
  way through FBIOPUT_VSCREENINFO
- update of the affected omap_*_defconfigs
- minor formatting changes and typo fixes

Still TODO:
- OMAP2 Rotation, scaling of video planes
- OMAP2 digit-out (aka tv-out)
- moving the frame buffer to an alternative locating (onchip SRAM)

I tested it with H2 and H4 but it might break on other OMAP1 boards as
there were changes also in the old parts.

37 files changed:
arch/arm/configs/omap_h2_1610_defconfig
arch/arm/configs/omap_h3_1710_defconfig
arch/arm/configs/omap_h4_2420_defconfig
arch/arm/configs/omap_innovator_1510_defconfig
arch/arm/configs/omap_innovator_1610_defconfig
arch/arm/configs/omap_osk_5912_defconfig
arch/arm/configs/omap_perseus2_730_defconfig
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap2/board-h4.c
arch/arm/plat-omap/devices.c
drivers/video/Kconfig
drivers/video/omap/Kconfig [new file with mode: 0644]
drivers/video/omap/Makefile
drivers/video/omap/debug.h
drivers/video/omap/dispc.c [new file with mode: 0644]
drivers/video/omap/dispc.h [new file with mode: 0644]
drivers/video/omap/lcd_h2.c
drivers/video/omap/lcd_h3.c
drivers/video/omap/lcd_h4.c [new file with mode: 0644]
drivers/video/omap/lcd_inn1510.c
drivers/video/omap/lcd_inn1610.c
drivers/video/omap/lcd_osk.c
drivers/video/omap/lcd_p2.c
drivers/video/omap/lcd_palmte.c [new file with mode: 0644]
drivers/video/omap/lcdc.c [moved from drivers/video/omap/omap_lcdc.c with 52% similarity]
drivers/video/omap/omapfb.h [deleted file]
drivers/video/omap/omapfb_main.c
drivers/video/omap/rfbi.c [new file with mode: 0644]
drivers/video/omap/sossi.c
drivers/video/omap/sossi.h
include/asm-arm/arch-omap/irqs.h
include/asm-arm/arch-omap/omapfb.h [new file with mode: 0644]

index 8cb032e02a2711524fc07da0cb0c8822a24571dc..1cf919a752ca69a1e207d4c6725384908f63c72b 100644 (file)
@@ -1,13 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-rc3-omap1
-# Mon Oct  4 10:15:30 2004
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:57:57 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
 CONFIG_UID16=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
 
 #
 # Code maturity level options
@@ -15,33 +15,40 @@ CONFIG_GENERIC_IOMAP=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
 CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_HOTPLUG is not set
+CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -51,6 +58,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 # CONFIG_KMOD is not set
 
 #
@@ -74,12 +82,35 @@ CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_VERSATILE_PB is not set
+# CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
 
 #
 # TI OMAP Implementations
 #
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_RESET_CLOCKS is not set
+CONFIG_OMAP_BOOT_TAG=y
+# CONFIG_OMAP_BOOT_REASON is not set
+# CONFIG_OMAP_GPIO_SWITCH is not set
+CONFIG_OMAP_MUX=y
+CONFIG_OMAP_MUX_DEBUG=y
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MPU_TIMER=y
+# CONFIG_OMAP_32K_TIMER is not set
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
 
 #
 # OMAP Core Type
@@ -87,7 +118,6 @@ CONFIG_ARCH_OMAP=y
 # CONFIG_ARCH_OMAP730 is not set
 # CONFIG_ARCH_OMAP15XX is not set
 CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
 
 #
 # OMAP Board Type
@@ -95,21 +125,14 @@ CONFIG_ARCH_OMAP_OTG=y
 # CONFIG_MACH_OMAP_INNOVATOR is not set
 CONFIG_MACH_OMAP_H2=y
 # CONFIG_MACH_OMAP_H3 is not set
-# CONFIG_MACH_OMAP_H4 is not set
 # CONFIG_MACH_OMAP_OSK is not set
 # CONFIG_MACH_OMAP_GENERIC is not set
 
 #
-# OMAP Feature Selections
+# OMAP CPU Speed
 #
-CONFIG_OMAP_BOOT_TAG=y
-# CONFIG_OMAP_BOOT_REASON is not set
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+# CONFIG_OMAP_ARM_216MHZ is not set
 # CONFIG_OMAP_ARM_192MHZ is not set
 # CONFIG_OMAP_ARM_168MHZ is not set
 # CONFIG_OMAP_ARM_120MHZ is not set
@@ -124,6 +147,7 @@ CONFIG_CPU_32=y
 CONFIG_CPU_ARM926T=y
 CONFIG_CPU_32v5=y
 CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_COPY_V4WB=y
 CONFIG_CPU_TLB_V4WBI=y
 
@@ -137,42 +161,150 @@ CONFIG_ARM_THUMB=y
 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
 
 #
-# General setup
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_LEDS=y
+# CONFIG_LEDS_TIMER is not set
+# CONFIG_LEDS_CPU is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
 #
-# CONFIG_ZBOOT_ROM is not set
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x10600000,8M ramdisk_size=8192"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
 
 #
-# At least one math emulation must be selected
+# At least one emulation must be selected
 #
 CONFIG_FPE_NWFPE=y
 # CONFIG_FPE_NWFPE_XP is not set
 # CONFIG_FPE_FASTFPE is not set
 # CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
 CONFIG_BINFMT_ELF=y
 CONFIG_BINFMT_AOUT=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
 
 #
-# Generic Driver Options
+# Power management options
 #
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_DEBUG_DRIVER=y
 # CONFIG_PM is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x10600000,8M ramdisk_size=8192"
-CONFIG_LEDS=y
-# CONFIG_LEDS_TIMER is not set
-# CONFIG_LEDS_CPU is not set
-CONFIG_ALIGNMENT_TRAP=y
 
 #
-# Parallel port support
+# Networking
 #
-# CONFIG_PARPORT is not set
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+CONFIG_DEBUG_DRIVER=y
 
 #
 # Memory Technology Devices (MTD)
@@ -180,8 +312,8 @@ CONFIG_ALIGNMENT_TRAP=y
 CONFIG_MTD=y
 CONFIG_MTD_DEBUG=y
 CONFIG_MTD_DEBUG_VERBOSE=3
-CONFIG_MTD_PARTITIONS=y
 # CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
 # CONFIG_MTD_REDBOOT_PARTS is not set
 CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_AFS_PARTS is not set
@@ -219,6 +351,7 @@ CONFIG_MTD_CFI_UTIL=y
 # CONFIG_MTD_RAM is not set
 # CONFIG_MTD_ROM is not set
 # CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
 
 #
 # Mapping drivers for chip access
@@ -227,16 +360,17 @@ CONFIG_MTD_CFI_UTIL=y
 # CONFIG_MTD_PHYSMAP is not set
 # CONFIG_MTD_ARM_INTEGRATOR is not set
 # CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_OMAP_NORv2 is not set
+# CONFIG_MTD_OMAP_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
 
 #
 # Self-contained MTD device drivers
 #
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_OMAP_NOR is not set
 # CONFIG_MTD_MTDRAM is not set
 # CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
 
 #
 # Disk-On-Chip Device Drivers
@@ -250,6 +384,11 @@ CONFIG_MTD_CFI_UTIL=y
 #
 # CONFIG_MTD_NAND is not set
 
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
 #
 # Plug and Play support
 #
@@ -257,98 +396,71 @@ CONFIG_MTD_CFI_UTIL=y
 #
 # Block devices
 #
-# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
-# Multi-device support (RAID and LVM)
+# IO Schedulers
 #
-# CONFIG_MD is not set
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
 
 #
-# Networking support
+# SCSI device support
 #
-CONFIG_NET=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
 
 #
-# Networking options
+# Multi-device support (RAID and LVM)
 #
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
+# CONFIG_MD is not set
 
 #
-# SCTP Configuration (EXPERIMENTAL)
+# Fusion MPT device support
 #
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
+# CONFIG_FUSION is not set
 
 #
-# QoS and/or fair queueing
+# IEEE 1394 (FireWire) support
 #
-# CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
 
 #
-# Network testing
+# I2O device support
+#
+
+#
+# Network device support
 #
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
-CONFIG_NET_VENDOR_SMC=y
 CONFIG_SMC91X=y
-# CONFIG_SMC9194 is not set
+# CONFIG_DM9000 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -385,23 +497,8 @@ CONFIG_SLIP_COMPRESSED=y
 # CONFIG_SLIP_MODE_SLIP6 is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_SCSI is not set
-
-#
-# Fusion MPT device support
-#
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
 # ISDN subsystem
@@ -425,16 +522,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_EVBUG=y
 
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -445,6 +532,14 @@ CONFIG_SERIO_SERPORT=y
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_UINPUT=y
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
 #
 # Character devices
 #
@@ -464,7 +559,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_8250_OMAP=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
@@ -490,7 +584,8 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # USB-based Watchdog Cards
 #
 # CONFIG_USBPCWATCHDOG is not set
-# CONFIG_OMAP16XX_WATCHDOG is not set
+# CONFIG_OMAP_WATCHDOG is not set
+# CONFIG_OMAP_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
 CONFIG_OMAP_RTC=y
@@ -500,9 +595,12 @@ CONFIG_OMAP_RTC=y
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_DRM is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
@@ -519,214 +617,103 @@ CONFIG_I2C=y
 #
 # I2C Hardware Bus support
 #
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_ISA is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_PCA_ISA is not set
 CONFIG_I2C_OMAP=y
 
 #
-# Hardware Sensors Chip support
-#
-# CONFIG_I2C_SENSOR is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-
-#
-# Other I2C Chip support
+# Miscellaneous I2C Chip support
 #
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_SENSORS_RTC8564 is not set
 CONFIG_ISP1301_OMAP=y
 CONFIG_TPS65010=y
 # CONFIG_SENSORS_TLV320AIC23 is not set
 # CONFIG_GPIOEXPANDER_OMAP is not set
+# CONFIG_SENSORS_MAX6875 is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_I2C_DEBUG_CHIP is not set
 
 #
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
+# Hardware Monitoring support
 #
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-# CONFIG_VFAT_FS is not set
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=2
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
 
 #
-# Network File Systems
+# Misc devices
 #
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-# CONFIG_EXPORTFS is not set
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
 
 #
-# Partition Types
+# Multimedia Capabilities Port drivers
 #
-# CONFIG_PARTITION_ADVANCED is not set
 
 #
-# Native Language Support
+# Multimedia devices
 #
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
+# CONFIG_VIDEO_DEV is not set
 
 #
-# Profiling support
+# Digital Video Broadcasting Devices
 #
-# CONFIG_PROFILING is not set
+# CONFIG_DVB is not set
 
 #
 # Graphics support
 #
 CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
 CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_INTERNAL_LCDC=y
-# CONFIG_FB_OMAP_EXTERNAL_LCDC is not set
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
 # CONFIG_FB_OMAP_DMA_TUNE is not set
 # CONFIG_FB_VIRTUAL is not set
 
@@ -747,19 +734,18 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
 #
 # CONFIG_SOUND is not set
 
-#
-# Misc devices
-#
-
 #
 # USB support
 #
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 
@@ -776,10 +762,11 @@ CONFIG_USB_OTG_WHITELIST=y
 #
 # USB Host Controller Drivers
 #
-# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811HS is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
 
 #
 # USB Device Class drivers
@@ -787,10 +774,14 @@ CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_BLUETOOTH_TTY is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
 # CONFIG_USB_STORAGE is not set
 
 #
-# USB Human Interface Devices (HID)
+# USB Input Devices
 #
 # CONFIG_USB_HID is not set
 
@@ -801,12 +792,17 @@ CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_MOUSE is not set
 # CONFIG_USB_AIPTEK is not set
 # CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
 # CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
 # CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
 
 #
 # USB Imaging devices
@@ -823,13 +819,14 @@ CONFIG_USB_OHCI_HCD=y
 #
 
 #
-# USB Network adaptors
+# USB Network Adapters
 #
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_KAWETH is not set
 # CONFIG_USB_PEGASUS is not set
 # CONFIG_USB_RTL8150 is not set
 # CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
 
 #
 # USB port drivers
@@ -845,29 +842,35 @@ CONFIG_USB_OHCI_HCD=y
 #
 # CONFIG_USB_EMI62 is not set
 # CONFIG_USB_EMI26 is not set
-# CONFIG_USB_TIGL is not set
 # CONFIG_USB_AUERSWALD is not set
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
 # CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
 CONFIG_USB_TEST=y
 
+#
+# USB DSL modem support
+#
+
 #
 # USB Gadget Support
 #
 CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
 # CONFIG_USB_GADGET_NET2280 is not set
 # CONFIG_USB_GADGET_PXA2XX is not set
 # CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_SA1100 is not set
 # CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
 CONFIG_USB_GADGET_OMAP=y
 CONFIG_USB_OMAP=y
-# CONFIG_USB_OMAP_PROC is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
 # CONFIG_USB_GADGET_DUALSPEED is not set
 # CONFIG_USB_ZERO is not set
 CONFIG_USB_ETH=y
@@ -876,25 +879,180 @@ CONFIG_USB_ETH_RNDIS=y
 # CONFIG_USB_FILE_STORAGE is not set
 # CONFIG_USB_G_SERIAL is not set
 
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
 #
 # Synchronous Serial Interfaces (SSI)
 #
 CONFIG_OMAP_UWIRE=y
+# CONFIG_OMAP_TSC2101 is not set
 
 #
-# MMC/SD Card support
+# File systems
 #
-# CONFIG_MMC is not set
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+# CONFIG_VFAT_FS is not set
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=2
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
 
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_MAGIC_SYSRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_DEBUG_USER=y
 # CONFIG_DEBUG_WAITQ is not set
@@ -904,6 +1062,7 @@ CONFIG_DEBUG_ERRORS=y
 #
 # Security options
 #
+# CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 
 #
@@ -911,10 +1070,15 @@ CONFIG_DEBUG_ERRORS=y
 #
 # CONFIG_CRYPTO is not set
 
+#
+# Hardware crypto devices
+#
+
 #
 # Library routines
 #
 # CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
 CONFIG_ZLIB_INFLATE=y
index b55601787430eae49228d049514c0c434149e57f..a32749d8f76ed460aa4614e8736e0d865c94797a 100644 (file)
@@ -1,13 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-rc3-omap1
-# Mon Oct  4 10:15:35 2004
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:58:27 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
 CONFIG_UID16=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
 
 #
 # Code maturity level options
@@ -15,33 +15,40 @@ CONFIG_GENERIC_IOMAP=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
 CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_HOTPLUG is not set
+CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -51,6 +58,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 # CONFIG_KMOD is not set
 
 #
@@ -74,12 +82,33 @@ CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_VERSATILE_PB is not set
+# CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
 
 #
 # TI OMAP Implementations
 #
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_RESET_CLOCKS is not set
+# CONFIG_OMAP_BOOT_TAG is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MPU_TIMER=y
+# CONFIG_OMAP_32K_TIMER is not set
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
 
 #
 # OMAP Core Type
@@ -87,7 +116,6 @@ CONFIG_ARCH_OMAP=y
 # CONFIG_ARCH_OMAP730 is not set
 # CONFIG_ARCH_OMAP15XX is not set
 CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
 
 #
 # OMAP Board Type
@@ -95,20 +123,14 @@ CONFIG_ARCH_OMAP_OTG=y
 # CONFIG_MACH_OMAP_INNOVATOR is not set
 # CONFIG_MACH_OMAP_H2 is not set
 CONFIG_MACH_OMAP_H3=y
-# CONFIG_MACH_OMAP_H4 is not set
 # CONFIG_MACH_OMAP_OSK is not set
 # CONFIG_MACH_OMAP_GENERIC is not set
 
 #
-# OMAP Feature Selections
+# OMAP CPU Speed
 #
-# CONFIG_OMAP_BOOT_TAG is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+# CONFIG_OMAP_ARM_216MHZ is not set
 # CONFIG_OMAP_ARM_192MHZ is not set
 CONFIG_OMAP_ARM_168MHZ=y
 # CONFIG_OMAP_ARM_120MHZ is not set
@@ -123,6 +145,7 @@ CONFIG_CPU_32=y
 CONFIG_CPU_ARM926T=y
 CONFIG_CPU_32v5=y
 CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_COPY_V4WB=y
 CONFIG_CPU_TLB_V4WBI=y
 
@@ -136,68 +159,74 @@ CONFIG_ARM_THUMB=y
 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
 
 #
-# General setup
+# Bus support
 #
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0x10C08000
-CONFIG_ZBOOT_ROM_BSS=0x10200000
+CONFIG_ISA_DMA_API=y
 
 #
-# At least one math emulation must be selected
+# PCCARD (PCMCIA/CardBus) support
 #
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
-# CONFIG_BINFMT_MISC is not set
+# CONFIG_PCCARD is not set
 
 #
-# Generic Driver Options
+# Kernel Features
 #
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_PM is not set
 # CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 initrd=0x10A00000,8M root=/dev/ram0 rw ip=dhcp devfs=mount"
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_LEDS=y
+# CONFIG_LEDS_TIMER is not set
+# CONFIG_LEDS_CPU is not set
 CONFIG_ALIGNMENT_TRAP=y
 
 #
-# Parallel port support
+# Boot options
 #
-# CONFIG_PARPORT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x10C08000
+CONFIG_ZBOOT_ROM_BSS=0x10200000
+# CONFIG_ZBOOT_ROM is not set
+CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 initrd=0x10A00000,8M root=/dev/ram0 rw ip=dhcp devfs=mount"
+# CONFIG_XIP_KERNEL is not set
 
 #
-# Memory Technology Devices (MTD)
+# CPU Frequency scaling
 #
-# CONFIG_MTD is not set
+# CONFIG_CPU_FREQ is not set
 
 #
-# Plug and Play support
+# Floating point emulation
 #
 
 #
-# Block devices
+# At least one emulation must be selected
 #
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
 
 #
-# Multi-device support (RAID and LVM)
+# Userspace binary formats
 #
-# CONFIG_MD is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
 
 #
-# Networking support
+# Networking
 #
 CONFIG_NET=y
 
@@ -206,12 +235,12 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_BOOTP=y
@@ -225,9 +254,18 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
 # CONFIG_IPV6 is not set
 # CONFIG_NETFILTER is not set
 
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
 #
 # SCTP Configuration (EXPERIMENTAL)
 #
@@ -244,11 +282,6 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
 # CONFIG_NET_SCHED is not set
 # CONFIG_NET_CLS_ROUTE is not set
 
@@ -256,8 +289,6 @@ CONFIG_IP_PNP_BOOTP=y
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_HAMRADIO is not set
 CONFIG_IRDA=y
 
@@ -303,22 +334,108 @@ CONFIG_IRDA=y
 #
 # CONFIG_USB_IRDA is not set
 # CONFIG_SIGMATEL_FIR is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
 CONFIG_OMAP1610_IR=y
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VIA_FIR is not set
 # CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
-CONFIG_NET_VENDOR_SMC=y
 CONFIG_SMC91X=y
-# CONFIG_SMC9194 is not set
+# CONFIG_DM9000 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -355,23 +472,8 @@ CONFIG_SLIP_COMPRESSED=y
 # CONFIG_SLIP_MODE_SLIP6 is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_SCSI is not set
-
-#
-# Fusion MPT device support
-#
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
 # ISDN subsystem
@@ -395,16 +497,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
 
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -420,6 +512,14 @@ CONFIG_KEYBOARD_OMAP=y
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
 #
 # Character devices
 #
@@ -439,7 +539,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_8250_OMAP=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
@@ -465,7 +564,8 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # USB-based Watchdog Cards
 #
 # CONFIG_USBPCWATCHDOG is not set
-# CONFIG_OMAP16XX_WATCHDOG is not set
+# CONFIG_OMAP_WATCHDOG is not set
+# CONFIG_OMAP_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
 CONFIG_OMAP_RTC=y
@@ -475,9 +575,12 @@ CONFIG_OMAP_RTC=y
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_DRM is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
@@ -494,54 +597,77 @@ CONFIG_I2C=y
 #
 # I2C Hardware Bus support
 #
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_ISA is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_PCA_ISA is not set
 CONFIG_I2C_OMAP=y
 
 #
-# Hardware Sensors Chip support
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+CONFIG_ISP1301_OMAP=m
+CONFIG_TPS65010=y
+# CONFIG_SENSORS_TLV320AIC23 is not set
+CONFIG_GPIOEXPANDER_OMAP=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring support
 #
-# CONFIG_I2C_SENSOR is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
 # CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
 # CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
 # CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
 # CONFIG_SENSORS_LM75 is not set
 # CONFIG_SENSORS_LM77 is not set
 # CONFIG_SENSORS_LM78 is not set
 # CONFIG_SENSORS_LM80 is not set
 # CONFIG_SENSORS_LM83 is not set
 # CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
 # CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
 # CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
 
 #
-# Other I2C Chip support
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
 #
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_ISP1301_OMAP is not set
-CONFIG_TPS65010=y
-# CONFIG_SENSORS_TLV320AIC23 is not set
-CONFIG_GPIOEXPANDER_OMAP=y
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
 
 #
 # Multimedia devices
@@ -560,6 +686,7 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_TUNER_3036 is not set
 # CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_VIDEO_OMAP_CAMERA is not set
 
 #
 # Radio Adapters
@@ -571,112 +698,21 @@ CONFIG_VIDEO_DEV=y
 #
 # CONFIG_DVB is not set
 
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-# CONFIG_EXT2_FS_POSIX_ACL is not set
-# CONFIG_EXT2_FS_SECURITY is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_DEVFS_FS=y
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-# CONFIG_EXPORTFS is not set
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-
-#
-# Native Language Support
-#
-# CONFIG_NLS is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
 #
 # Graphics support
 #
 CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
 CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_INTERNAL_LCDC=y
-# CONFIG_FB_OMAP_EXTERNAL_LCDC is not set
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
 # CONFIG_FB_OMAP_DMA_TUNE is not set
 # CONFIG_FB_VIRTUAL is not set
 
@@ -697,6 +733,7 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
@@ -712,24 +749,18 @@ CONFIG_SOUND=y
 # Open Sound System
 #
 CONFIG_SOUND_PRIME=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_OMAP is not set
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
 # CONFIG_SOUND_OSS is not set
 # CONFIG_SOUND_TVMIXER is not set
 # CONFIG_SOUND_AD1980 is not set
 
-#
-# Misc devices
-#
-
 #
 # USB support
 #
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 
@@ -744,23 +775,27 @@ CONFIG_USB=m
 #
 # USB Host Controller Drivers
 #
-# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811HS is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
 
 #
 # USB Device Class drivers
 #
-# CONFIG_USB_AUDIO is not set
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
 # CONFIG_USB_BLUETOOTH_TTY is not set
-# CONFIG_USB_MIDI is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
 # CONFIG_USB_STORAGE is not set
 
 #
-# USB Human Interface Devices (HID)
+# USB Input Devices
 #
 # CONFIG_USB_HID is not set
 
@@ -771,12 +806,17 @@ CONFIG_USB_OHCI_HCD=m
 # CONFIG_USB_MOUSE is not set
 # CONFIG_USB_AIPTEK is not set
 # CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
 # CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
 # CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
 
 #
 # USB Imaging devices
@@ -795,15 +835,17 @@ CONFIG_USB_OHCI_HCD=m
 # CONFIG_USB_SE401 is not set
 # CONFIG_USB_SN9C102 is not set
 # CONFIG_USB_STV680 is not set
+# CONFIG_USB_PWC is not set
 
 #
-# USB Network adaptors
+# USB Network Adapters
 #
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_KAWETH is not set
 # CONFIG_USB_PEGASUS is not set
 # CONFIG_USB_RTL8150 is not set
 # CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
 
 #
 # USB port drivers
@@ -819,24 +861,25 @@ CONFIG_USB_OHCI_HCD=m
 #
 # CONFIG_USB_EMI62 is not set
 # CONFIG_USB_EMI26 is not set
-# CONFIG_USB_TIGL is not set
 # CONFIG_USB_AUERSWALD is not set
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
 # CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
 
 #
-# USB Gadget Support
+# USB DSL modem support
 #
-# CONFIG_USB_GADGET is not set
 
 #
-# Synchronous Serial Interfaces (SSI)
+# USB Gadget Support
 #
-CONFIG_OMAP_UWIRE=y
+# CONFIG_USB_GADGET is not set
 
 #
 # MMC/SD Card support
@@ -845,19 +888,135 @@ CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_BLOCK=y
 # CONFIG_MMC_BLOCK_BROKEN_RFD is not set
+# CONFIG_MMC_BULKTRANSFER is not set
 CONFIG_MMC_OMAP=y
-CONFIG_MMC_OMAP16XX_BLOCK1=y
-# CONFIG_MMC_OMAP16XX_BLOCK2 is not set
+# CONFIG_MMC_WBSD is not set
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+CONFIG_OMAP_UWIRE=y
+# CONFIG_OMAP_TSC2101 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+# CONFIG_NLS is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
 
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_MAGIC_SYSRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_DEBUG_USER=y
 # CONFIG_DEBUG_WAITQ is not set
@@ -868,6 +1027,7 @@ CONFIG_DEBUG_LL=y
 #
 # Security options
 #
+# CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 
 #
@@ -875,9 +1035,14 @@ CONFIG_DEBUG_LL=y
 #
 # CONFIG_CRYPTO is not set
 
+#
+# Hardware crypto devices
+#
+
 #
 # Library routines
 #
 CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
index 153d59fd84b82a67e88205c1d927183fc919843b..d8417779db1fb2f0458c5d407f65de1baafbe215 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.14-rc1-omap1
-# Tue Oct 11 22:28:40 2005
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:58:50 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
@@ -139,6 +139,10 @@ CONFIG_CPU_TLB_V6=y
 # Processor Features
 #
 CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
 
 #
 # Bus support
@@ -264,7 +268,6 @@ CONFIG_TCP_CONG_BIC=y
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NETFILTER_NETLINK is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
@@ -624,13 +627,38 @@ CONFIG_MENELAUS=y
 #
 # Graphics support
 #
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_VIRTUAL is not set
 
 #
 # Console display driver support
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
index fc5850b3215f87defc6c9ba8bfdcd81c879bf418..28c087ec921046e3022a02a10d23461d226ca88c 100644 (file)
@@ -1,12 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-rc1-omap1
-# Wed Sep  8 14:14:10 2004
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:55:19 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
 CONFIG_UID16=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
 
 #
 # Code maturity level options
@@ -14,30 +15,41 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_HOTPLUG is not set
+CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -47,6 +59,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
 
 #
@@ -61,6 +74,7 @@ CONFIG_KMOD=y
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_IOP3XX is not set
 # CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_L7200 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_RPC is not set
@@ -69,41 +83,58 @@ CONFIG_KMOD=y
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_VERSATILE_PB is not set
+# CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
 
 #
 # TI OMAP Implementations
 #
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_RESET_CLOCKS is not set
+# CONFIG_OMAP_BOOT_TAG is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MPU_TIMER=y
+# CONFIG_OMAP_32K_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
 
 #
 # OMAP Core Type
 #
 # CONFIG_ARCH_OMAP730 is not set
 CONFIG_ARCH_OMAP15XX=y
-# CONFIG_ARCH_OMAP1610 is not set
-# CONFIG_ARCH_OMAP1710 is not set
-# CONFIG_ARCH_OMAP5912 is not set
+# CONFIG_ARCH_OMAP16XX is not set
 
 #
 # OMAP Board Type
 #
 CONFIG_MACH_OMAP_INNOVATOR=y
+# CONFIG_MACH_VOICEBLUE is not set
+# CONFIG_MACH_NETSTAR is not set
+# CONFIG_MACH_OMAP_PALMTE is not set
 # CONFIG_MACH_OMAP_GENERIC is not set
 
 #
-# OMAP Feature Selections
+# OMAP CPU Speed
 #
-# CONFIG_OMAP_BOOT_TAG is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
 CONFIG_OMAP_ARM_168MHZ=y
+# CONFIG_OMAP_ARM_150MHZ is not set
 # CONFIG_OMAP_ARM_120MHZ is not set
 # CONFIG_OMAP_ARM_60MHZ is not set
 # CONFIG_OMAP_ARM_30MHZ is not set
+# CONFIG_OMAP_DSP is not set
 
 #
 # Processor Type
@@ -113,6 +144,7 @@ CONFIG_CPU_ARM925T=y
 CONFIG_CPU_32v4=y
 CONFIG_CPU_ABRT_EV4T=y
 CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_COPY_V4WB=y
 CONFIG_CPU_TLB_V4WBI=y
 
@@ -125,70 +157,73 @@ CONFIG_ARM_THUMB=y
 CONFIG_CPU_DCACHE_WRITETHROUGH=y
 
 #
-# General setup
+# Bus support
 #
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ISA_DMA_API=y
 
 #
-# At least one math emulation must be selected
+# PCCARD (PCMCIA/CardBus) support
 #
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+# CONFIG_PCCARD is not set
 
 #
-# Generic Driver Options
+# Kernel Features
 #
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_DEBUG_DRIVER is not set
-CONFIG_PM=y
 CONFIG_PREEMPT=y
-# CONFIG_APM is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/nfs ip=bootp noinitrd"
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_LEDS=y
+# CONFIG_LEDS_TIMER is not set
+# CONFIG_LEDS_CPU is not set
 CONFIG_ALIGNMENT_TRAP=y
 
 #
-# Parallel port support
+# Boot options
 #
-# CONFIG_PARPORT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/nfs ip=bootp noinitrd"
+# CONFIG_XIP_KERNEL is not set
 
 #
-# Memory Technology Devices (MTD)
+# CPU Frequency scaling
 #
-# CONFIG_MTD is not set
+# CONFIG_CPU_FREQ is not set
 
 #
-# Plug and Play support
+# Floating point emulation
 #
 
 #
-# Block devices
+# At least one emulation must be selected
 #
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
 
 #
-# Multi-device support (RAID and LVM)
+# Userspace binary formats
 #
-# CONFIG_MD is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
 
 #
-# Networking support
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_APM is not set
+
+#
+# Networking
 #
 CONFIG_NET=y
 
@@ -197,12 +232,12 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_BOOTP=y
@@ -216,9 +251,18 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
 # CONFIG_IPV6 is not set
 # CONFIG_NETFILTER is not set
 
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
 #
 # SCTP Configuration (EXPERIMENTAL)
 #
@@ -235,11 +279,6 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
 # CONFIG_NET_SCHED is not set
 # CONFIG_NET_CLS_ROUTE is not set
 
@@ -247,61 +286,64 @@ CONFIG_IP_PNP_BOOTP=y
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+# CONFIG_IEEE80211 is not set
 
 #
-# Ethernet (10 or 100Mbit)
+# Device Drivers
 #
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_SMC91X=y
-# CONFIG_NET_VENDOR_SMC is not set
 
 #
-# Ethernet (1000 Mbit)
+# Generic Driver Options
 #
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
 
 #
-# Ethernet (10000 Mbit)
+# Memory Technology Devices (MTD)
 #
+# CONFIG_MTD is not set
 
 #
-# Token Ring devices
+# Parallel port support
 #
+# CONFIG_PARPORT is not set
 
 #
-# Wireless LAN (non-hamradio)
+# Plug and Play support
 #
-# CONFIG_NET_RADIO is not set
 
 #
-# Wan interfaces
+# Block devices
 #
-# CONFIG_WAN is not set
-CONFIG_PPP=y
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=y
-CONFIG_PPP_BSDCOMP=y
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
 
 #
 # SCSI device support
 #
+# CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_PROC_FS=y
 
@@ -314,6 +356,7 @@ CONFIG_CHR_DEV_ST=y
 CONFIG_BLK_DEV_SR=y
 # CONFIG_BLK_DEV_SR_VENDOR is not set
 CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
 
 #
 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -327,18 +370,24 @@ CONFIG_SCSI_MULTI_LUN=y
 #
 # CONFIG_SCSI_SPI_ATTRS is not set
 # CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
 
 #
 # SCSI low-level drivers
 #
-# CONFIG_SCSI_AIC7XXX_OLD is not set
 # CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_EATA_PIO is not set
 # CONFIG_SCSI_DEBUG is not set
 
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
 #
 # Fusion MPT device support
 #
+# CONFIG_FUSION is not set
 
 #
 # IEEE 1394 (FireWire) support
@@ -348,6 +397,63 @@ CONFIG_SCSI_MULTI_LUN=y
 # I2O device support
 #
 
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
 #
 # ISDN subsystem
 #
@@ -370,16 +476,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
 # CONFIG_INPUT_EVDEV is not set
 # CONFIG_INPUT_EVBUG is not set
 
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=y
-# CONFIG_SERIO_I8042 is not set
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-
 #
 # Input Device Drivers
 #
@@ -396,6 +492,14 @@ CONFIG_OMAP_PS2=m
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
 #
 # Character devices
 #
@@ -415,12 +519,10 @@ CONFIG_SERIAL_8250_NR_UARTS=4
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_8250_OMAP=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_LEGACY_PTYS is not set
-# CONFIG_QIC02_TAPE is not set
 
 #
 # IPMI
@@ -433,7 +535,6 @@ CONFIG_UNIX98_PTYS=y
 # CONFIG_WATCHDOG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
 CONFIG_OMAP_RTC=y
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
@@ -441,10 +542,12 @@ CONFIG_OMAP_RTC=y
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
@@ -461,51 +564,74 @@ CONFIG_I2C=y
 #
 # I2C Hardware Bus support
 #
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_ISA is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_PCA_ISA is not set
 # CONFIG_I2C_OMAP is not set
 
 #
-# Hardware Sensors Chip support
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring support
 #
-# CONFIG_I2C_SENSOR is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
 # CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
 # CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
 # CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
 # CONFIG_SENSORS_LM75 is not set
 # CONFIG_SENSORS_LM77 is not set
 # CONFIG_SENSORS_LM78 is not set
 # CONFIG_SENSORS_LM80 is not set
 # CONFIG_SENSORS_LM83 is not set
 # CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
 # CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
 # CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
 
 #
-# Other I2C Chip support
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
 #
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
 
 #
 # Multimedia devices
@@ -518,189 +644,40 @@ CONFIG_I2C=y
 # CONFIG_DVB is not set
 
 #
-# File systems
+# Graphics support
 #
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_QUOTA is not set
-CONFIG_AUTOFS_FS=y
-CONFIG_AUTOFS4_FS=y
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_DMA_TUNE is not set
+# CONFIG_FB_VIRTUAL is not set
 
 #
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-# CONFIG_EXPORTFS is not set
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-# CONFIG_FB_MODE_HELPERS is not set
-CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_DMA_TUNE=y
-# CONFIG_FB_OMAP_OLD is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
+# Console display driver support
 #
 # CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
 # CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
 # CONFIG_FONT_PEARL_8x8 is not set
 # CONFIG_FONT_ACORN_8x8 is not set
 # CONFIG_FONT_MINI_4x6 is not set
 # CONFIG_FONT_SUN8x16 is not set
 # CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
 
 #
 # Logo configuration
@@ -709,19 +686,18 @@ CONFIG_LOGO=y
 CONFIG_LOGO_LINUX_MONO=y
 CONFIG_LOGO_LINUX_VGA16=y
 CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
 #
 # CONFIG_SOUND is not set
 
-#
-# Misc devices
-#
-
 #
 # USB support
 #
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB=y
 CONFIG_USB_DEBUG=y
 
@@ -732,14 +708,16 @@ CONFIG_USB_DEVICEFS=y
 # CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
 
 #
 # USB Host Controller Drivers
 #
-# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811HS is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
 
 #
 # USB Device Class drivers
@@ -747,19 +725,22 @@ CONFIG_USB_OHCI_HCD=y
 # CONFIG_USB_BLUETOOTH_TTY is not set
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
 CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_RW_DETECT is not set
 CONFIG_USB_STORAGE_DATAFAB=y
 CONFIG_USB_STORAGE_FREECOM=y
 CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
+# CONFIG_USB_STORAGE_USBAT is not set
 CONFIG_USB_STORAGE_SDDR09=y
 CONFIG_USB_STORAGE_SDDR55=y
 CONFIG_USB_STORAGE_JUMPSHOT=y
 
 #
-# USB Human Interface Devices (HID)
+# USB Input Devices
 #
 CONFIG_USB_HID=y
 CONFIG_USB_HIDINPUT=y
@@ -767,19 +748,23 @@ CONFIG_USB_HIDINPUT=y
 # CONFIG_USB_HIDDEV is not set
 # CONFIG_USB_AIPTEK is not set
 # CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
 # CONFIG_USB_KBTAB is not set
 # CONFIG_USB_POWERMATE is not set
 # CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
 # CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
 
 #
 # USB Imaging devices
 #
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
 
 #
 # USB Multimedia devices
@@ -791,36 +776,22 @@ CONFIG_USB_HIDINPUT=y
 #
 
 #
-# USB Network adaptors
+# USB Network Adapters
 #
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_KAWETH is not set
 # CONFIG_USB_PEGASUS is not set
 CONFIG_USB_RTL8150=y
 CONFIG_USB_USBNET=y
-
-#
-# USB Host-to-Host Cables
-#
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_GENESYS=y
-CONFIG_USB_NET1080=y
-CONFIG_USB_PL2301=y
-
-#
-# Intelligent USB Devices/Gadgets
-#
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_ZAURUS=y
-CONFIG_USB_CDCETHER=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_AX8817X=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_MON=y
 
 #
 # USB port drivers
@@ -836,25 +807,26 @@ CONFIG_USB_AX8817X=y
 #
 # CONFIG_USB_EMI62 is not set
 # CONFIG_USB_EMI26 is not set
-# CONFIG_USB_TIGL is not set
 # CONFIG_USB_AUERSWALD is not set
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
 # CONFIG_USB_LED is not set
 # CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
 # CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
 # CONFIG_USB_TEST is not set
 
 #
-# USB Gadget Support
+# USB DSL modem support
 #
-# CONFIG_USB_GADGET is not set
 
 #
-# Synchronous Serial Interfaces (SSI)
+# USB Gadget Support
 #
-# CONFIG_OMAP_UWIRE is not set
+# CONFIG_USB_GADGET is not set
 
 #
 # MMC/SD Card support
@@ -863,17 +835,197 @@ CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK_BROKEN_RFD=y
+# CONFIG_MMC_BULKTRANSFER is not set
 CONFIG_MMC_OMAP=y
+# CONFIG_MMC_WBSD is not set
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+# CONFIG_OMAP_UWIRE is not set
+# CONFIG_OMAP_TSC2101 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
 
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 CONFIG_DEBUG_KERNEL=y
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
 # CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_WAITQ is not set
@@ -883,6 +1035,7 @@ CONFIG_FRAME_POINTER=y
 #
 # Security options
 #
+# CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 
 #
@@ -896,6 +1049,8 @@ CONFIG_CRYPTO_MD5=y
 # CONFIG_CRYPTO_SHA1 is not set
 # CONFIG_CRYPTO_SHA256 is not set
 # CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
 CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set
@@ -906,15 +1061,21 @@ CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_TEA is not set
 # CONFIG_CRYPTO_ARC4 is not set
 # CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_TEST is not set
 
+#
+# Hardware crypto devices
+#
+
 #
 # Library routines
 #
 CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
 CONFIG_ZLIB_INFLATE=y
index 460c7a18d5a48f991f09d6053118a01868bbcf80..7baf3bcf46b9e464073f1e4d9b786d16f749218c 100644 (file)
@@ -1,13 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-rc3-omap1
-# Mon Oct  4 10:15:49 2004
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:55:48 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
 CONFIG_UID16=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
 
 #
 # Code maturity level options
@@ -15,32 +15,39 @@ CONFIG_GENERIC_IOMAP=y
 CONFIG_EXPERIMENTAL=y
 CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
 CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_HOTPLUG is not set
+CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
 # CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
 
 #
 # Loadable module support
@@ -50,6 +57,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
 
 #
@@ -73,12 +81,33 @@ CONFIG_KMOD=y
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_VERSATILE_PB is not set
+# CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
 
 #
 # TI OMAP Implementations
 #
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_RESET_CLOCKS is not set
+# CONFIG_OMAP_BOOT_TAG is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MPU_TIMER=y
+# CONFIG_OMAP_32K_TIMER is not set
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
 
 #
 # OMAP Core Type
@@ -86,7 +115,6 @@ CONFIG_ARCH_OMAP=y
 # CONFIG_ARCH_OMAP730 is not set
 # CONFIG_ARCH_OMAP15XX is not set
 CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
 
 #
 # OMAP Board Type
@@ -94,20 +122,14 @@ CONFIG_ARCH_OMAP_OTG=y
 CONFIG_MACH_OMAP_INNOVATOR=y
 # CONFIG_MACH_OMAP_H2 is not set
 # CONFIG_MACH_OMAP_H3 is not set
-# CONFIG_MACH_OMAP_H4 is not set
 # CONFIG_MACH_OMAP_OSK is not set
 # CONFIG_MACH_OMAP_GENERIC is not set
 
 #
-# OMAP Feature Selections
+# OMAP CPU Speed
 #
-# CONFIG_OMAP_BOOT_TAG is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+# CONFIG_OMAP_ARM_216MHZ is not set
 CONFIG_OMAP_ARM_192MHZ=y
 # CONFIG_OMAP_ARM_168MHZ is not set
 # CONFIG_OMAP_ARM_120MHZ is not set
@@ -122,6 +144,7 @@ CONFIG_CPU_32=y
 CONFIG_CPU_ARM926T=y
 CONFIG_CPU_32v5=y
 CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_COPY_V4WB=y
 CONFIG_CPU_TLB_V4WBI=y
 
@@ -135,67 +158,71 @@ CONFIG_CPU_DCACHE_WRITETHROUGH=y
 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
 
 #
-# General setup
+# Bus support
 #
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ISA_DMA_API=y
 
 #
-# At least one math emulation must be selected
+# PCCARD (PCMCIA/CardBus) support
 #
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-# CONFIG_VFP is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+# CONFIG_PCCARD is not set
 
 #
-# Generic Driver Options
+# Kernel Features
 #
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_PM is not set
 # CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="mem=32M console=tty0 console=ttyS0,115200 initrd=0x10200000,8M root=/dev/ram0 rw"
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
 # CONFIG_LEDS is not set
 CONFIG_ALIGNMENT_TRAP=y
 
 #
-# Parallel port support
+# Boot options
 #
-# CONFIG_PARPORT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=32M console=tty0 console=ttyS0,115200 initrd=0x10200000,8M root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
 
 #
-# Memory Technology Devices (MTD)
+# CPU Frequency scaling
 #
-# CONFIG_MTD is not set
+# CONFIG_CPU_FREQ is not set
 
 #
-# Plug and Play support
+# Floating point emulation
 #
 
 #
-# Block devices
+# At least one emulation must be selected
 #
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
 
 #
-# Multi-device support (RAID and LVM)
+# Userspace binary formats
 #
-# CONFIG_MD is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
 
 #
-# Networking support
+# Networking
 #
 CONFIG_NET=y
 
@@ -204,12 +231,12 @@ CONFIG_NET=y
 #
 CONFIG_PACKET=m
 # CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK_DEV is not set
 CONFIG_UNIX=y
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_BOOTP=y
@@ -223,9 +250,18 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
 # CONFIG_IPV6 is not set
 # CONFIG_NETFILTER is not set
 
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
 #
 # SCTP Configuration (EXPERIMENTAL)
 #
@@ -242,11 +278,6 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
 # CONFIG_NET_SCHED is not set
 # CONFIG_NET_CLS_ROUTE is not set
 
@@ -254,24 +285,103 @@ CONFIG_IP_PNP_BOOTP=y
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
-# CONFIG_NET_VENDOR_SMC is not set
 CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -305,23 +415,8 @@ CONFIG_PPP_MULTILINK=y
 # CONFIG_SLIP is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_SCSI is not set
-
-#
-# Fusion MPT device support
-#
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
 # ISDN subsystem
@@ -345,16 +440,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_EVDEV is not set
 # CONFIG_INPUT_EVBUG is not set
 
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_RAW is not set
-
 #
 # Input Device Drivers
 #
@@ -370,6 +455,14 @@ CONFIG_KEYBOARD_OMAP=y
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
 
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
 #
 # Character devices
 #
@@ -389,7 +482,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_8250_OMAP=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
@@ -405,6 +497,7 @@ CONFIG_LEGACY_PTY_COUNT=256
 # Watchdog Cards
 #
 # CONFIG_WATCHDOG is not set
+# CONFIG_OMAP_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
 # CONFIG_OMAP_RTC is not set
@@ -414,14 +507,32 @@ CONFIG_LEGACY_PTY_COUNT=256
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_DRM is not set
 # CONFIG_RAW_DRIVER is not set
 
+#
+# TPM devices
+#
+
 #
 # I2C support
 #
 # CONFIG_I2C is not set
 
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
 #
 # Multimedia devices
 #
@@ -432,21 +543,99 @@ CONFIG_LEGACY_PTY_COUNT=256
 #
 # CONFIG_DVB is not set
 
+#
+# Graphics support
+#
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_DMA_TUNE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB is not set
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Synchronous Serial Interfaces (SSI)
+#
+# CONFIG_OMAP_UWIRE is not set
+# CONFIG_OMAP_TSC2101 is not set
+
 #
 # File systems
 #
 CONFIG_EXT2_FS=y
 # CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
 # CONFIG_EXT3_FS is not set
 # CONFIG_JBD is not set
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
 # CONFIG_XFS_FS is not set
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
 # CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
 CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
 
 #
 # CD-ROM/DVD Filesystems
@@ -466,13 +655,10 @@ CONFIG_AUTOFS4_FS=y
 #
 CONFIG_PROC_FS=y
 CONFIG_SYSFS=y
-CONFIG_DEVFS_FS=y
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
 # CONFIG_TMPFS is not set
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
 
 #
 # Miscellaneous filesystems
@@ -496,13 +682,14 @@ CONFIG_RAMFS=y
 #
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
 # CONFIG_NFS_V4 is not set
 # CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
 # CONFIG_ROOT_NFS is not set
 CONFIG_LOCKD=y
 CONFIG_LOCKD_V4=y
-# CONFIG_EXPORTFS is not set
+CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
 # CONFIG_RPCSEC_GSS_KRB5 is not set
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -511,11 +698,13 @@ CONFIG_SUNRPC=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
 
 #
 # Partition Types
 #
 # CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
 
 #
 # Native Language Support
@@ -527,81 +716,20 @@ CONFIG_SUNRPC=y
 #
 # CONFIG_PROFILING is not set
 
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_INTERNAL_LCDC=y
-# CONFIG_FB_OMAP_EXTERNAL_LCDC is not set
-# CONFIG_FB_OMAP_DMA_TUNE is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Misc devices
-#
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# Synchronous Serial Interfaces (SSI)
-#
-# CONFIG_OMAP_UWIRE is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
 # CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_INFO is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_USER is not set
 
 #
 # Security options
 #
+# CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 
 #
@@ -609,9 +737,14 @@ CONFIG_FRAME_POINTER=y
 #
 # CONFIG_CRYPTO is not set
 
+#
+# Hardware crypto devices
+#
+
 #
 # Library routines
 #
 # CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
index dae95ee1c50a241bf1ea4757e2108fac97002600..d190420599d426f8a38ff1f1a48b96c638a1b5d9 100644 (file)
@@ -1,14 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12-rc6-omap1
-# Wed Jun  8 16:04:54 2005
+# Linux kernel version: 2.6.14-rc4-omap1
+# Tue Oct 18 17:56:19 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
 CONFIG_UID16=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_IOMAP=y
 
 #
 # Code maturity level options
@@ -22,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
 # General setup
 #
 CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_POSIX_MQUEUE is not set
@@ -31,6 +31,7 @@ CONFIG_SYSCTL=y
 CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -83,6 +84,7 @@ CONFIG_ARCH_OMAP=y
 # CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_IMX is not set
 # CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
 
 #
 # TI OMAP Implementations
@@ -91,6 +93,23 @@ CONFIG_ARCH_OMAP_OTG=y
 CONFIG_ARCH_OMAP1=y
 # CONFIG_ARCH_OMAP2 is not set
 
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+# CONFIG_OMAP_BOOT_TAG is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
+
 #
 # OMAP Core Type
 #
@@ -105,6 +124,7 @@ CONFIG_ARCH_OMAP16XX=y
 # CONFIG_MACH_OMAP_H2 is not set
 # CONFIG_MACH_OMAP_H3 is not set
 CONFIG_MACH_OMAP_OSK=y
+# CONFIG_OMAP_OSK_MISTRAL is not set
 # CONFIG_MACH_OMAP_GENERIC is not set
 
 #
@@ -119,24 +139,6 @@ CONFIG_OMAP_ARM_192MHZ=y
 # CONFIG_OMAP_ARM_30MHZ is not set
 # CONFIG_OMAP_DSP is not set
 
-#
-# OMAP Feature Selections
-#
-CONFIG_OMAP_RESET_CLOCKS=y
-# CONFIG_OMAP_BOOT_TAG is not set
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-CONFIG_OMAP_MUX_WARNINGS=y
-# CONFIG_OMAP_MPU_TIMER is not set
-CONFIG_OMAP_32K_TIMER=y
-CONFIG_OMAP_32K_TIMER_HZ=128
-# CONFIG_OMAP_DM_TIMER is not set
-CONFIG_NO_IDLE_HZ=y
-CONFIG_NO_IDLE_HZ_ENABLED=y
-CONFIG_OMAP_LL_DEBUG_UART1=y
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-# CONFIG_OMAP_LL_DEBUG_UART3 is not set
-
 #
 # Processor Type
 #
@@ -168,19 +170,27 @@ CONFIG_ISA_DMA_API=y
 CONFIG_PCCARD=y
 # CONFIG_PCMCIA_DEBUG is not set
 CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
 
 #
 # PC-card bridges
 #
-# CONFIG_TCIC is not set
 CONFIG_OMAP_CF=y
 
 #
 # Kernel Features
 #
-# CONFIG_SMP is not set
 # CONFIG_PREEMPT is not set
-# CONFIG_DISCONTIGMEM is not set
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
 # CONFIG_LEDS is not set
 CONFIG_ALIGNMENT_TRAP=y
 
@@ -223,6 +233,75 @@ CONFIG_BINFMT_ELF=y
 CONFIG_PM=y
 # CONFIG_APM is not set
 
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
 #
 # Device Drivers
 #
@@ -232,7 +311,7 @@ CONFIG_PM=y
 #
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=y
 
 #
 # Memory Technology Devices (MTD)
@@ -288,6 +367,7 @@ CONFIG_MTD_CFI_UTIL=y
 # CONFIG_MTD_ARM_INTEGRATOR is not set
 # CONFIG_MTD_EDB7312 is not set
 CONFIG_MTD_OMAP_NOR=y
+# CONFIG_MTD_PLATRAM is not set
 
 #
 # Self-contained MTD device drivers
@@ -330,7 +410,6 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_CDROM_PKTCDVD is not set
 
 #
@@ -372,6 +451,7 @@ CONFIG_BLK_DEV_IDECS=m
 #
 # SCSI device support
 #
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -382,6 +462,7 @@ CONFIG_BLK_DEV_IDECS=m
 #
 # Fusion MPT device support
 #
+# CONFIG_FUSION is not set
 
 #
 # IEEE 1394 (FireWire) support
@@ -392,82 +473,26 @@ CONFIG_BLK_DEV_IDECS=m
 #
 
 #
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
-
-#
-# Network testing
+# Network device support
 #
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
 CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -506,6 +531,8 @@ CONFIG_PPP_MULTILINK=y
 # CONFIG_SLIP is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
 # ISDN subsystem
@@ -590,6 +617,7 @@ CONFIG_LEGACY_PTY_COUNT=256
 # Watchdog Cards
 #
 # CONFIG_WATCHDOG is not set
+# CONFIG_OMAP_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
 # CONFIG_OMAP_RTC is not set
@@ -599,7 +627,6 @@ CONFIG_LEGACY_PTY_COUNT=256
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_DRM is not set
 
 #
 # PCMCIA character devices
@@ -627,21 +654,43 @@ CONFIG_I2C_CHARDEV=y
 #
 # I2C Hardware Bus support
 #
-# CONFIG_I2C_ISA is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
 # CONFIG_I2C_STUB is not set
 # CONFIG_I2C_PCA_ISA is not set
 CONFIG_I2C_OMAP=y
 
 #
-# Hardware Sensors Chip support
+# Miscellaneous I2C Chip support
 #
-# CONFIG_I2C_SENSOR is not set
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TPS65010=y
+# CONFIG_SENSORS_TLV320AIC23 is not set
+# CONFIG_GPIOEXPANDER_OMAP is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
 # CONFIG_SENSORS_ADM1026 is not set
 # CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_FSCHER is not set
 # CONFIG_SENSORS_FSCPOS is not set
@@ -660,31 +709,21 @@ CONFIG_I2C_OMAP=y
 # CONFIG_SENSORS_LM92 is not set
 # CONFIG_SENSORS_MAX1619 is not set
 # CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
 
 #
-# Other I2C Chip support
+# Misc devices
 #
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_ISP1301_OMAP is not set
-CONFIG_TPS65010=y
-# CONFIG_SENSORS_TLV320AIC23 is not set
-# CONFIG_GPIOEXPANDER_OMAP is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
 
 #
-# Misc devices
+# Multimedia Capabilities Port drivers
 #
 
 #
@@ -710,9 +749,9 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
 # CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_INTERNAL_LCDC=y
-# CONFIG_FB_OMAP_EXTERNAL_LCDC is not set
-CONFIG_FB_OMAP_DMA_TUNE=y
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_DMA_TUNE is not set
 # CONFIG_FB_VIRTUAL is not set
 
 #
@@ -725,11 +764,13 @@ CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
 # CONFIG_FONT_8x16 is not set
 # CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
 # CONFIG_FONT_PEARL_8x8 is not set
 # CONFIG_FONT_ACORN_8x8 is not set
 # CONFIG_FONT_MINI_4x6 is not set
 # CONFIG_FONT_SUN8x16 is not set
 # CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
 
 #
 # Logo configuration
@@ -766,28 +807,28 @@ CONFIG_USB_ARCH_HAS_OHCI=y
 # Synchronous Serial Interfaces (SSI)
 #
 CONFIG_OMAP_UWIRE=y
-# CONFIG_OMAP_TSC2101 is not set
+CONFIG_OMAP_TSC2101=y
 
 #
 # File systems
 #
 CONFIG_EXT2_FS=y
 # CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
 # CONFIG_EXT3_FS is not set
 # CONFIG_JBD is not set
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
-
-#
-# XFS support
-#
+# CONFIG_FS_POSIX_ACL is not set
 # CONFIG_XFS_FS is not set
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
 CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
 
 #
 # CD-ROM/DVD Filesystems
@@ -810,11 +851,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 #
 CONFIG_PROC_FS=y
 CONFIG_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
 # CONFIG_TMPFS is not set
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
 
 #
 # Miscellaneous filesystems
@@ -829,8 +869,7 @@ CONFIG_RAMFS=y
 # CONFIG_JFFS_FS is not set
 CONFIG_JFFS2_FS=y
 CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC is not set
+CONFIG_JFFS2_FS_WRITEBUFFER=y
 # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
 CONFIG_JFFS2_ZLIB=y
 CONFIG_JFFS2_RTIME=y
@@ -847,12 +886,14 @@ CONFIG_JFFS2_RTIME=y
 #
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
 # CONFIG_NFS_V4 is not set
 # CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
 CONFIG_ROOT_NFS=y
 CONFIG_LOCKD=y
 CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
 # CONFIG_RPCSEC_GSS_KRB5 is not set
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -861,6 +902,7 @@ CONFIG_SUNRPC=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
 
 #
 # Partition Types
@@ -946,6 +988,7 @@ CONFIG_FRAME_POINTER=y
 # Library routines
 #
 # CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
 CONFIG_ZLIB_INFLATE=y
index a2a11f752b2b5538e517f5384d967392db2db4c0..7e08ad3dadca8f780dd6eed2540c56dae81e16fd 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc4-omap1
-# Wed Oct 12 15:10:00 2005
+# Tue Oct 18 17:57:11 2005
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
@@ -623,8 +623,8 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
 # CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_OMAP=y
-CONFIG_FB_OMAP_INTERNAL_LCDC=y
-# CONFIG_FB_OMAP_EXTERNAL_LCDC is not set
+CONFIG_FB_OMAP_LCDC_INTERNAL=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
 # CONFIG_FB_OMAP_DMA_TUNE is not set
 CONFIG_FB_VIRTUAL=y
 
index 61dc5b213d470562360d04a7bbcc925b1b54450f..ef372a9ce6ff210e3153616ec9916edc3d034e87 100644 (file)
@@ -162,10 +162,16 @@ static struct omap_uart_config h2_uart_config __initdata = {
        .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
 };
 
+static struct omap_lcd_config h2_lcd_config __initdata = {
+       .panel_name     = "h2",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel h2_config[] = {
        { OMAP_TAG_USB,           &h2_usb_config },
        { OMAP_TAG_MMC,           &h2_mmc_config },
        { OMAP_TAG_UART,        &h2_uart_config },
+       { OMAP_TAG_LCD,         &h2_lcd_config },
 };
 
 static void __init h2_init(void)
index 92b0a99d3181a2b972b2559a5e9295d448233abc..c17793bc8f761cf0088068c520722bdea0aa591a 100644 (file)
@@ -170,10 +170,16 @@ static struct omap_uart_config h3_uart_config __initdata = {
        .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
 };
 
+static struct omap_lcd_config h3_lcd_config __initdata = {
+       .panel_name     = "h3",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel h3_config[] = {
        { OMAP_TAG_USB,         &h3_usb_config },
        { OMAP_TAG_MMC,         &h3_mmc_config },
        { OMAP_TAG_UART,        &h3_uart_config },
+       { OMAP_TAG_LCD,         &h3_lcd_config },
 };
 
 static void __init h3_init(void)
index c1618850438ff0f698d92da381dab2c31e9c61ec..f201b651c2ea20a4ac143caf298490d548c44e67 100644 (file)
@@ -199,6 +199,11 @@ static struct omap_usb_config innovator1510_usb_config __initdata = {
        .register_dev   = 1,
        .pins[0]        = 2,
 };
+
+static struct omap_lcd_config innovator1510_lcd_config __initdata = {
+       .panel_name     = "inn1510",
+       .ctrl_name      = "internal",
+};
 #endif
 
 #ifdef CONFIG_ARCH_OMAP16XX
@@ -216,6 +221,11 @@ static struct omap_usb_config h2_usb_config __initdata = {
 
        .pins[1]        = 3,
 };
+
+static struct omap_lcd_config innovator1610_lcd_config __initdata = {
+       .panel_name     = "inn1610",
+       .ctrl_name      = "internal",
+};
 #endif
 
 static struct omap_mmc_config innovator_mmc_config __initdata = {
@@ -234,6 +244,7 @@ static struct omap_uart_config innovator_uart_config __initdata = {
 
 static struct omap_board_config_kernel innovator_config[] = {
        { OMAP_TAG_USB,         NULL },
+       { OMAP_TAG_LCD,         NULL },
        { OMAP_TAG_MMC,         &innovator_mmc_config },
        { OMAP_TAG_UART,        &innovator_uart_config },
 };
@@ -252,12 +263,16 @@ static void __init innovator_init(void)
 #endif
 
 #ifdef CONFIG_ARCH_OMAP15XX
-       if (cpu_is_omap1510())
+       if (cpu_is_omap1510()) {
                innovator_config[0].data = &innovator1510_usb_config;
+               innovator_config[1].data = &innovator1510_lcd_config;
+       }
 #endif
 #ifdef CONFIG_ARCH_OMAP16XX
-       if (cpu_is_omap1610())
+       if (cpu_is_omap1610()) {
                innovator_config[0].data = &h2_usb_config;
+               innovator_config[1].data = &innovator1610_lcd_config;
+       }
 #endif
        omap_board_config = innovator_config;
        omap_board_config_size = ARRAY_SIZE(innovator_config);
index b5600568e90559705cdb7378621241bc890d36d6..a495fbcb460947cb65d90c020ce88ad7cbd106a7 100644 (file)
@@ -195,9 +195,15 @@ static struct omap_uart_config osk_uart_config __initdata = {
        .enabled_uarts = (1 << 0),
 };
 
+static struct omap_lcd_config osk_lcd_config __initdata = {
+       .panel_name     = "osk",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel osk_config[] = {
        { OMAP_TAG_USB,           &osk_usb_config },
        { OMAP_TAG_UART,                &osk_uart_config },
+       { OMAP_TAG_LCD,                 &osk_lcd_config },
 };
 
 #ifdef CONFIG_OMAP_OSK_MISTRAL
index b8aea2da7ea1b1ae3153aac03139bd0af3a6c306..ec7c4d63f293520c9a838860a1410b4a9ba75cb4 100644 (file)
@@ -53,9 +53,15 @@ static struct omap_mmc_config palmte_mmc_config __initdata = {
        },
 };
 
+static struct omap_lcd_config palmte_lcd_config __initdata = {
+       .panel_name     = "palmte",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel palmte_config[] = {
        { OMAP_TAG_USB, &palmte_usb_config },
        { OMAP_TAG_MMC, &palmte_mmc_config },
+       { OMAP_TAG_LCD, &palmte_lcd_config },
 };
 
 static void __init omap_generic_init(void)
index 43021aa628be50149b4dbf91d8e63754b91a6de6..1670146568dde32a325fbe9e03a50c01d5967876 100644 (file)
@@ -114,8 +114,14 @@ static struct omap_uart_config perseus2_uart_config __initdata = {
        .enabled_uarts = ((1 << 0) | (1 << 1)),
 };
 
+static struct omap_lcd_config perseus2_lcd_config __initdata = {
+       .panel_name     = "p2",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel perseus2_config[] = {
        { OMAP_TAG_UART,        &perseus2_uart_config },
+       { OMAP_TAG_LCD,         &perseus2_lcd_config },
 };
 
 static void __init omap_perseus2_init(void)
index 6c15efca003b897815b92517b1ad1e7d2a29dad9..81d02e81df60e106fb91f1125dba9ff28b5f06be 100644 (file)
@@ -147,7 +147,7 @@ static struct omap_uart_config h4_uart_config __initdata = {
 
 static struct omap_mmc_config h4_mmc_config __initdata = {
        .mmc [0] = {
-               .enabled        = 1,
+               .enabled        = 1,
                .wire4          = 1,
                .wp_pin         = -1,
                .power_pin      = -1,
@@ -155,9 +155,15 @@ static struct omap_mmc_config h4_mmc_config __initdata = {
        },
 };
 
+static struct omap_lcd_config h4_lcd_config __initdata = {
+       .panel_name     = "h4",
+       .ctrl_name      = "internal",
+};
+
 static struct omap_board_config_kernel h4_config[] = {
        { OMAP_TAG_UART,        &h4_uart_config },
        { OMAP_TAG_MMC,         &h4_mmc_config },
+       { OMAP_TAG_LCD,         &h4_lcd_config },
 };
 
 static void __init omap_h4_init(void)
index e6e4713993733bd4a79053ac26c6af6cd3a58c19..f199012c4a14a67a41189a1f275255c7f8a842d6 100644 (file)
@@ -341,6 +341,42 @@ static void omap_init_rng(void)
 static inline void omap_init_rng(void) {}
 #endif
 
+#if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE)
+
+static struct omap_lcd_config omap_fb_conf;
+
+static u64 omap_fb_dma_mask = ~(u32)0;
+
+static struct platform_device omap_fb_device = {
+       .name           = "omapfb",
+       .id             = -1,
+       .dev = {
+               .release                = omap_nop_release,
+               .dma_mask               = &omap_fb_dma_mask,
+               .coherent_dma_mask      = ~(u32)0,
+               .platform_data          = &omap_fb_conf,
+       },
+       .num_resources = 0,
+};
+
+static inline void omap_init_fb(void)
+{
+       const struct omap_lcd_config *conf;
+
+       conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
+       if (conf == NULL)
+               return;
+
+       omap_fb_conf = *conf;
+       platform_device_register(&omap_fb_device);
+}
+
+#else
+
+static inline void omap_init_fb(void) {}
+
+#endif
+
 /*
  * This gets called after board-specific INIT_MACHINE, and initializes most
  * on-chip peripherals accessible on this board (except for few like USB):
index 4cce85df9e45a5b5ddd575959ad88aef2d223b3c..0864f571dea709b29686f2fdde2db779f6eee424 100644 (file)
@@ -1543,47 +1543,7 @@ config FB_S3C2410_DEBUG
          Turn on debugging messages. Note that you can set/unset at run time
          through sysfs
 
-config FB_OMAP
-       tristate "OMAP frame buffer support (EXPERIMENTAL)"
-        depends on FB && ARCH_OMAP1
-       select FB_SOFT_CURSOR
-        help
-          This is the new frame buffer device driver with 2D acceleration
-          for OMAP boards.
-
-config FB_OMAP_INTERNAL_LCDC
-       bool "OMAP internal LCD controller support"
-       depends on FB_OMAP
-       default y
-       help
-         Say Y here, if you want to have support for the internal OMAP
-         LCD controller. If unsure, say Y.
-
-config FB_OMAP_EXTERNAL_LCDC
-       bool "OMAP external LCD controller support"
-       depends on FB_OMAP
-       help
-         Say Y here, if you want to have support for boards with an
-         external LCD controller connected to the SoSSI interface.
-
-config FB_OMAP_MANUAL_UPDATE
-       bool "Default to manual update mode"
-       depends on FB_OMAP_EXTERNAL_LCDC
-       help
-         Say Y here, if your user-space applications are capable of
-         notifying the frame buffer driver when a change has occured in
-          the frame buffer content and thus a reload of the image data is
-          required. If unsure, say N.
-
-config FB_OMAP_DMA_TUNE
-        bool "Set DMA SDRAM access priority high"
-        depends on FB_OMAP
-        help
-          On systems in which video memory is in system memory
-          (SDRAM) this will speed up graphics DMA operations.
-          If you have such a system and want to use rotation
-          answer yes. Answer no if you have a dedicated video
-          memory, or don't use any of the accelerated features.
+source "drivers/video/omap/Kconfig"
 
 config FB_VIRTUAL
        tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
new file mode 100644 (file)
index 0000000..5fd4aa5
--- /dev/null
@@ -0,0 +1,40 @@
+config FB_OMAP
+       tristate "OMAP frame buffer support (EXPERIMENTAL)"
+        depends on FB
+       select FB_SOFT_CURSOR
+        help
+          Frame buffer driver for OMAP based boards.
+
+config FB_OMAP_LCDC_INTERNAL
+       bool "Internal LCD controller support"
+       depends on FB_OMAP
+       help
+         Say Y here, if you want to have support for the internal OMAP
+         LCD controller. If unsure, say Y.
+
+config FB_OMAP_LCDC_EXTERNAL
+       bool "External LCD controller support"
+       depends on FB_OMAP
+       help
+         Say Y here, if you want to have support for boards with an
+         external LCD controller connected to the SoSSI/RFBI interface. 
+
+config FB_OMAP_MANUAL_UPDATE
+       bool "Default to manual update mode"
+       depends on FB_OMAP && FB_OMAP_LCDC_EXTERNAL
+       help
+         Say Y here, if your user-space applications are capable of
+         notifying the frame buffer driver when a change has occured in
+          the frame buffer content and thus a reload of the image data to
+         the external frame buffer is required. If unsure, say N.
+
+config FB_OMAP_DMA_TUNE
+        bool "Set DMA SDRAM access priority high"
+        depends on FB_OMAP && ARCH_OMAP1
+        help
+          On systems in which video memory is in system memory
+          (SDRAM) this will speed up graphics DMA operations.
+          If you have such a system and want to use rotation
+          answer yes. Answer no if you have a dedicated video
+          memory, or don't use any of the accelerated features.
+
index 569ff54ec922af7d3555309dce4c53c2684c3127..391bf3f836bcd9e6f02067ff2526b0bafe24c8f0 100644 (file)
@@ -5,14 +5,22 @@
 obj-$(CONFIG_FB_OMAP) += omapfb.o
 
 objs-yy := omapfb_main.o
-objs-y$(CONFIG_FB_OMAP_INTERNAL_LCDC) += omap_lcdc.o
-objs-y$(CONFIG_FB_OMAP_EXTERNAL_LCDC) += sossi.o
-objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H3) += lcd_h3.o
+
+objs-y$(CONFIG_ARCH_OMAP2) += dispc.o
+
+objs-$(CONFIG_ARCH_OMAP1)$(CONFIG_FB_OMAP_LCDC_INTERNAL) += lcdc.o
+
+objs-$(CONFIG_ARCH_OMAP1)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += sossi.o
+objs-$(CONFIG_ARCH_OMAP2)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += rfbi.o
+
+objs-y$(CONFIG_MACH_OMAP_H4) += lcd_h4.o
+objs-y$(CONFIG_MACH_OMAP_H3) += lcd_h3.o
 objs-y$(CONFIG_MACH_OMAP_H2) += lcd_h2.o
+objs-y$(CONFIG_MACH_OMAP_PALMTE) += lcd_palmte.o
 objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1610.o
 objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1510.o
-objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
-objs-$(CONFIG_ARCH_OMAP730)$(CONFIG_MACH_OMAP_PERSEUS2) += lcd_p2.o
+objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
+objs-y$(CONFIG_MACH_OMAP_PERSEUS2) += lcd_p2.o
 
 omapfb-objs := $(objs-yy)
 
index cbc5db8d52928e5e5a5b55a5929fef7756867020..835f28b6418073008ee74a18a367170db9b8b7d4 100644 (file)
 #ifndef __OMAPFB_DEBUG_H
 #define __OMAPFB_DEBUG_H
 
-#ifdef OMAPFB_DBG
-
-#define DBG_BUF_SIZE           2048
-#define MAX_DBG_INDENT_LEVEL   5
-#define DBG_INDENT_SIZE                3
-#define MAX_DBG_MESSAGES       0
-
-static int dbg_indent;
-static int dbg_cnt;
-static char dbg_buf[DBG_BUF_SIZE];
-static spinlock_t dbg_spinlock = SPIN_LOCK_UNLOCKED;
-
-static inline void dbg_print(int level, const char *fmt, ...)
-{
-       if (level <= OMAPFB_DBG) {
-               if (!MAX_DBG_MESSAGES || dbg_cnt < MAX_DBG_MESSAGES) {
-                       va_list args;
-                       int     ind = dbg_indent;
-                       unsigned long flags;
+#include <asm/io.h>
 
-                       spin_lock_irqsave(&dbg_spinlock, flags);
-                       dbg_cnt++;
-                       if (ind > MAX_DBG_INDENT_LEVEL)
-                               ind = MAX_DBG_INDENT_LEVEL;
-
-                       printk("%*s", ind * DBG_INDENT_SIZE, "");
-                       va_start(args, fmt);
-                       vsnprintf(dbg_buf, sizeof(dbg_buf), fmt, args);
-                       printk(dbg_buf);
-                       va_end(args);
-                       spin_unlock_irqrestore(&dbg_spinlock, flags);
-               }
-       }
-}
-
-#define DBGPRINT       dbg_print
-
-#define DBGENTER(level)        do { \
-               dbg_print(level, "%s: Enter\n", __FUNCTION__); \
-               dbg_indent++; \
-       } while (0)
+#ifdef OMAPFB_DBG
 
-#define DBGLEAVE(level)        do { \
-               dbg_indent--; \
-               dbg_print(level, "%s: Leave\n", __FUNCTION__); \
-       } while (0)
+#define DBGPRINT(level, fmt, ...) if (level <= OMAPFB_DBG) do { \
+                                       printk(KERN_DEBUG "%s: "fmt, \
+                                               __FUNCTION__, ## __VA_ARGS__); \
+                                 } while (0)
+#define DBGENTER(level) DBGPRINT(level, "Enter\n")
+#define DBGLEAVE(level)        DBGPRINT(level, "Leave\n")
 
 static inline void dump_dma_regs(int lch)
 {
+#ifdef CONFIG_ARCH_OMAP1
 #define _R(x) __REG16(OMAP_DMA_##x(lch))
 
-       dbg_print(4, "\nCSDP  :%#06x CCR      :%#06x CSSA_U  :%#06x "
+       DBGPRINT(4, "\nCSDP  :%#06x CCR      :%#06x CSSA_U  :%#06x "
                    "\nCDSA_L:%#06x CDSA_U   :%#06x CEN     :%#06x "
                    "\nCFN   :%#06x CSFI     :%#06x CSEI    :%#06x "
                    "\nCSAC  :%#06x CICR     :%#06x CSR     :%04x "
@@ -90,6 +55,7 @@ static inline void dump_dma_regs(int lch)
                    _R(CDFI), _R(COLOR_L), _R(COLOR_U),
                    _R(CCR2), _R(CLNK_CTRL), _R(LCH_CTRL));
 #undef _R
+#endif
 }
 
 #define DUMP_DMA_REGS(lch) dump_dma_regs(lch)
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
new file mode 100644 (file)
index 0000000..eb85628
--- /dev/null
@@ -0,0 +1,838 @@
+/*
+ * File: drivers/video/omap/omap2/dispc.c
+ *
+ * OMAP2 display controller support
+ *
+ * Copyright (C) 2005 Nokia Corporation
+ * Author: Imre Deak <imre.deak@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <linux/kernel.h>
+#include <linux/dma-mapping.h>
+
+#include <asm/io.h>
+
+#include <asm/arch/omapfb.h>
+
+#include <asm/hardware/clock.h>
+
+#include "dispc.h"
+
+/* #define OMAPFB_DBG  2 */
+
+#include "debug.h"
+
+#define MODULE_NAME                    "omapfb-dispc"
+
+#define DISPC_BASE                     0x48050400
+
+/* DISPC common */
+#define DISPC_REVISION                 0x0000
+#define DISPC_SYSCONFIG                        0x0010
+#define DISPC_SYSSTATUS                        0x0014
+#define DISPC_IRQSTATUS                        0x0018
+#define DISPC_IRQENABLE                        0x001C
+#define DISPC_CONTROL                  0x0040
+#define DISPC_CONFIG                   0x0044
+#define DISPC_CAPABLE                  0x0048
+#define DISPC_DEFAULT_COLOR0           0x004C
+#define DISPC_DEFAULT_COLOR1           0x0050
+#define DISPC_TRANS_COLOR0             0x0054
+#define DISPC_TRANS_COLOR1             0x0058
+#define DISPC_LINE_STATUS              0x005C
+#define DISPC_LINE_NUMBER              0x0060
+#define DISPC_TIMING_H                 0x0064
+#define DISPC_TIMING_V                 0x0068
+#define DISPC_POL_FREQ                 0x006C
+#define DISPC_DIVISOR                  0x0070
+#define DISPC_SIZE_DIG                 0x0078
+#define DISPC_SIZE_LCD                 0x007C
+
+#define DISPC_DATA_CYCLE1              0x01D4
+#define DISPC_DATA_CYCLE2              0x01D8
+#define DISPC_DATA_CYCLE3              0x01DC
+
+/* DISPC GFX plane */
+#define DISPC_GFX_BA0                  0x0080
+#define DISPC_GFX_BA1                  0x0084
+#define DISPC_GFX_POSITION             0x0088
+#define DISPC_GFX_SIZE                 0x008C
+#define DISPC_GFX_ATTRIBUTES           0x00A0
+#define DISPC_GFX_FIFO_THRESHOLD       0x00A4
+#define DISPC_GFX_FIFO_SIZE_STATUS     0x00A8
+#define DISPC_GFX_ROW_INC              0x00AC
+#define DISPC_GFX_PIXEL_INC            0x00B0
+#define DISPC_GFX_WINDOW_SKIP          0x00B4
+#define DISPC_GFX_TABLE_BA             0x00B8
+
+/* DISPC Video plane 1/2 */
+#define DISPC_VID1_BASE                        0x00BC
+#define DISPC_VID2_BASE                        0x014C
+
+/* Offsets into DISPC_VID1/2_BASE */
+#define DISPC_VID_BA0                  0x0000
+#define DISPC_VID_BA1                  0x0004
+#define DISPC_VID_POSITION             0x0008
+#define DISPC_VID_SIZE                 0x000C
+#define DISPC_VID_ATTRIBUTES           0x0010
+#define DISPC_VID_FIFO_THRESHOLD       0x0014
+#define DISPC_VID_FIFO_SIZE_STATUS     0x0018
+#define DISPC_VID_ROW_INC              0x001C
+#define DISPC_VID_PIXEL_INC            0x0020
+#define DISPC_VID_FIR                  0x0024
+#define DISPC_VID_PICTURE_SIZE         0x0028
+#define DISPC_VID_ACCU0                        0x002C
+#define DISPC_VID_ACCU1                        0x0030
+
+/* 8 elements in 8 byte increments */
+#define DISPC_VID_FIR_COEF_H0          0x0034
+/* 8 elements in 8 byte increments */
+#define DISPC_VID_FIR_COEF_HV0         0x0038
+/* 5 elements in 4 byte increments */
+#define DISPC_VID_CONV_COEF0           0x0074
+
+#define DISPC_IRQ_FRAMEMASK            0x0001
+#define DISPC_IRQ_VSYNC                        0x0002
+#define DISPC_IRQ_EVSYNC_EVEN          0x0004
+#define DISPC_IRQ_EVSYNC_ODD           0x0008
+#define DISPC_IRQ_ACBIAS_COUNT_STAT    0x0010
+#define DISPC_IRQ_PROG_LINE_NUM                0x0020
+#define DISPC_IRQ_GFX_FIFO_UNDERFLOW   0x0040
+#define DISPC_IRQ_GFX_END_WIN          0x0080
+#define DISPC_IRQ_PAL_GAMMA_MASK       0x0100
+#define DISPC_IRQ_OCP_ERR              0x0200
+#define DISPC_IRQ_VID1_FIFO_UNDERFLOW  0x0400
+#define DISPC_IRQ_VID1_END_WIN         0x0800
+#define DISPC_IRQ_VID2_FIFO_UNDERFLOW  0x1000
+#define DISPC_IRQ_VID2_END_WIN         0x2000
+#define DISPC_IRQ_SYNC_LOST            0x4000
+
+#define DISPC_IRQ_MASK_ALL             0x7fff
+
+#define DISPC_IRQ_MASK_ERROR           (DISPC_IRQ_GFX_FIFO_UNDERFLOW | \
+                                            DISPC_IRQ_VID1_FIFO_UNDERFLOW | \
+                                            DISPC_IRQ_VID2_FIFO_UNDERFLOW | \
+                                            DISPC_IRQ_SYNC_LOST)
+
+#define MAX_PALETTE_SIZE               256 * 16
+
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
+#define FLD_MASK(pos, len)     (((1 << len) - 1) << pos)
+
+#define MOD_REG_FLD(reg, mask, val) \
+       dispc_write_reg((reg), (dispc_read_reg(reg) & ~(mask)) | (val));
+
+static struct {
+       u32             base;
+       void            *vram_virt;
+       dma_addr_t      vram_phys;
+       int             vram_size;
+
+       int             ext_mode;
+
+       unsigned long   enabled_irqs;
+       void            (*irq_callback)(void *);
+       void            *irq_callback_data;
+       struct completion       frame_done;
+
+       struct clk      *dss_ick, *dss1_fck;
+       struct clk      *dss_54m_fck;
+
+       int             active_plane_mask;
+
+       enum omapfb_update_mode update_mode;
+       struct omapfb_device    *fbdev;
+} dispc;
+
+static void inline dispc_write_reg(int idx, u32 val)
+{
+       __raw_writel(val, dispc.base + idx);
+}
+
+static u32 inline dispc_read_reg(int idx)
+{
+       u32 l = __raw_readl(dispc.base + idx);
+       return l;
+}
+
+/* Select RFBI or bypass mode */
+static void enable_rfbi_mode(int enable)
+{
+       u32 l;
+
+       l = dispc_read_reg(DISPC_CONTROL);
+       /* Enable RFBI, GPIO0/1 */
+       l &= ~((1 << 11) | (1 << 15) | (1 << 16));
+       l |= enable ? (1 << 11) : 0;
+       /* RFBI En: GPIO0/1=10  RFBI Dis: GPIO0/1=11 */
+       l |= 1 << 15;
+       l |= enable ? 0 : (1 << 16);
+       dispc_write_reg(DISPC_CONTROL, l);
+}
+
+static void set_lcd_data_lines(int data_lines)
+{
+       u32 l;
+       int code = 0;
+
+       switch (data_lines) {
+       case 12:
+               code = 0;
+               break;
+       case 16:
+               code = 1;
+               break;
+       case 18:
+               code = 2;
+               break;
+       case 24:
+               code = 3;
+               break;
+       default:
+               BUG();
+       }
+
+       l = dispc_read_reg(DISPC_CONTROL);
+       l &= ~(0x03 << 8);
+       l |= code << 8;
+       dispc_write_reg(DISPC_CONTROL, l);
+}
+
+static void set_load_mode(int mode)
+{
+       BUG_ON(mode & ~(DISPC_LOAD_CLUT_ONLY | DISPC_LOAD_FRAME_ONLY |
+                       DISPC_LOAD_CLUT_ONCE_FRAME));
+       MOD_REG_FLD(DISPC_CONFIG, 0x03 << 1, mode << 1);
+}
+
+void omap_dispc_set_lcd_size(int x, int y)
+{
+       BUG_ON((x > (1 << 11)) || (y > (1 << 11)));
+       MOD_REG_FLD(DISPC_SIZE_LCD, FLD_MASK(16, 11) | FLD_MASK(0, 11),
+                       ((y - 1) << 16) | (x - 1));
+}
+EXPORT_SYMBOL(omap_dispc_set_lcd_size);
+
+void omap_dispc_set_digit_size(int x, int y)
+{
+       BUG_ON((x > (1 << 11)) || (y > (1 << 11)));
+       MOD_REG_FLD(DISPC_SIZE_DIG, FLD_MASK(16, 11) | FLD_MASK(0, 11),
+                       ((y - 1) << 16) | (x - 1));
+}
+EXPORT_SYMBOL(omap_dispc_set_digit_size);
+
+static void setup_plane_fifo(int plane)
+{
+       const u32 ftrs_reg[] = { DISPC_GFX_FIFO_THRESHOLD,
+                               DISPC_VID1_BASE + DISPC_VID_FIFO_THRESHOLD,
+                               DISPC_VID2_BASE + DISPC_VID_FIFO_THRESHOLD };
+       const u32 fsz_reg[] = { DISPC_GFX_FIFO_SIZE_STATUS,
+                               DISPC_VID1_BASE + DISPC_VID_FIFO_SIZE_STATUS,
+                               DISPC_VID2_BASE + DISPC_VID_FIFO_SIZE_STATUS };
+
+       u32 l;
+
+       BUG_ON(plane > 2);
+
+       l = dispc_read_reg(fsz_reg[plane]);
+       l &= FLD_MASK(0, 9);
+       /* HIGH=3/4 LOW=1/4 */
+       MOD_REG_FLD(ftrs_reg[plane], FLD_MASK(16, 9) | FLD_MASK(0, 9),
+                       ((l * 3 / 4) << 16) | (l / 4));
+}
+
+void omap_dispc_enable_lcd_out(int enable)
+{
+       MOD_REG_FLD(DISPC_CONTROL, 1, enable ? 1 : 0);
+}
+EXPORT_SYMBOL(omap_dispc_enable_lcd_out);
+
+void omap_dispc_enable_digit_out(int enable)
+{
+       MOD_REG_FLD(DISPC_CONTROL, 1 << 1, enable ? 1 << 1 : 0);
+}
+EXPORT_SYMBOL(omap_dispc_enable_digit_out);
+
+static int omap_dispc_setup_plane(int plane, int channel_out,
+                                 unsigned long offset, int screen_width,
+                                 int pos_x, int pos_y, int width, int height,
+                                 int color_mode)
+{
+       const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
+                               DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
+                               DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
+       const u32 ba_reg[] = { DISPC_GFX_BA0, DISPC_VID1_BASE + DISPC_VID_BA0,
+                               DISPC_VID2_BASE + DISPC_VID_BA0 };
+       const u32 ps_reg[] = { DISPC_GFX_POSITION,
+                               DISPC_VID1_BASE + DISPC_VID_POSITION,
+                               DISPC_VID2_BASE + DISPC_VID_POSITION };
+       const u32 sz_reg[] = { DISPC_GFX_SIZE, DISPC_VID1_BASE + DISPC_VID_SIZE,
+                               DISPC_VID2_BASE + DISPC_VID_SIZE };
+       const u32 ri_reg[] = { DISPC_GFX_ROW_INC,
+                               DISPC_VID1_BASE + DISPC_VID_ROW_INC,
+                               DISPC_VID2_BASE + DISPC_VID_ROW_INC };
+       int chout_shift, burst_shift;
+       int chout_val;
+       int color_code;
+       int bpp;
+       u32 l;
+
+       DBGENTER(1);
+
+       switch (plane) {
+       case OMAPFB_PLANE_GFX:
+               burst_shift = 6;
+               chout_shift = 8;
+               break;
+       case OMAPFB_PLANE_VID1:
+       case OMAPFB_PLANE_VID2:
+               burst_shift = 14;
+               chout_shift = 16;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       switch (channel_out) {
+       case OMAPFB_CHANNEL_OUT_LCD:
+               chout_val = 0;
+               break;
+       case OMAPFB_CHANNEL_OUT_DIGIT:
+               chout_val = 1;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       switch (color_mode) {
+       case OMAPFB_COLOR_RGB565:
+               color_code = DISPC_RGB_16_BPP;
+               bpp = 16;
+               break;
+       case OMAPFB_COLOR_YUV422:
+               if (plane != 0)
+                       return -EINVAL;
+               color_code = DISPC_UYVY_422;
+               bpp = 16;
+               break;
+       case OMAPFB_COLOR_YUV420:
+               if (plane != 0)
+                       return -EINVAL;
+               color_code = DISPC_YUV2_422;
+               bpp = 12;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       l = dispc_read_reg(at_reg[plane]);
+
+       l &= ~(0x0f << 1);
+       l |= color_code << 1;
+
+       l &= ~(0x03 << burst_shift);
+       l |= DISPC_BURST_8x32 << burst_shift;
+
+       l &= ~(1 << chout_shift);
+       l |= chout_val << chout_shift;
+
+       dispc_write_reg(at_reg[plane], l);
+
+
+       dispc_write_reg(ba_reg[plane],
+                      dispc.vram_phys + PAGE_ALIGN(MAX_PALETTE_SIZE) + offset);
+
+       MOD_REG_FLD(ps_reg[plane],
+                   FLD_MASK(16, 11) | FLD_MASK(0, 11), (pos_y << 16) | pos_x);
+
+       MOD_REG_FLD(sz_reg[plane], FLD_MASK(16, 11) | FLD_MASK(0, 11),
+                       ((height - 1) << 16) | (width - 1));
+
+       dispc_write_reg(ri_reg[plane], (screen_width - width) * bpp / 8 + 1);
+
+       return 0;
+}
+
+static int omap_dispc_enable_plane(int plane, int enable)
+{
+       const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
+                               DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
+                               DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
+       DBGENTER(1);
+
+       if ((unsigned int)plane > 2)
+               return -EINVAL;
+       MOD_REG_FLD(at_reg[plane], 1, enable ? 1 : 0);
+
+       return 0;
+}
+
+static int omap_dispc_set_color_key(struct omapfb_color_key *ck)
+{
+       u32 df_reg, tr_reg;
+       int shift, val;
+
+       switch (ck->channel_out) {
+       case OMAPFB_CHANNEL_OUT_LCD:
+               df_reg = DISPC_DEFAULT_COLOR0;
+               tr_reg = DISPC_TRANS_COLOR0;
+               shift = 10;
+               break;
+       case OMAPFB_CHANNEL_OUT_DIGIT:
+               df_reg = DISPC_DEFAULT_COLOR1;
+               tr_reg = DISPC_TRANS_COLOR1;
+               shift = 12;
+               break;
+       default:
+               return -EINVAL;
+       }
+       switch (ck->key_type) {
+       case OMAPFB_COLOR_KEY_DISABLED:
+               val = 0;
+               break;
+       case OMAPFB_COLOR_KEY_GFX_DST:
+               val = 1;
+               break;
+       case OMAPFB_COLOR_KEY_VID_SRC:
+               val = 3;
+               break;
+       default:
+               return -EINVAL;
+       }
+       MOD_REG_FLD(DISPC_CONFIG, FLD_MASK(shift, 2), val << shift);
+
+       if (val != 0)
+               dispc_write_reg(tr_reg, ck->trans_key);
+       dispc_write_reg(df_reg, ck->background);
+
+       return 0;
+}
+
+static void load_palette(void)
+{
+}
+
+static int omap_dispc_set_update_mode(enum omapfb_update_mode mode)
+{
+       int r = 0;
+
+       DBGENTER(1);
+
+       if (mode != dispc.update_mode) {
+               switch (mode) {
+               case OMAPFB_AUTO_UPDATE:
+                       omap_dispc_enable_lcd_out(1);
+                       dispc.update_mode = mode;
+                       break;
+               case OMAPFB_UPDATE_DISABLED:
+                       init_completion(&dispc.frame_done);
+                       omap_dispc_enable_lcd_out(0);
+                       if (!wait_for_completion_timeout(&dispc.frame_done,
+                                       msecs_to_jiffies(500))) {
+                               pr_err("timeout waiting for FRAME DONE\n");
+                       }
+                       dispc.update_mode = mode;
+                       break;
+               default:
+                       r = -EINVAL;
+               }
+       }
+
+       DBGLEAVE(1);
+
+       return r;
+}
+
+static enum omapfb_update_mode omap_dispc_get_update_mode(void)
+{
+       return dispc.update_mode;
+}
+
+static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
+{
+       unsigned long fck, lck;
+
+       *lck_div = 1;
+       pck = max(1, pck);
+       fck = clk_get_rate(dispc.dss1_fck);
+       lck = fck;
+       *pck_div = lck / pck;
+       if (is_tft)
+               *pck_div = max(2, *pck_div);
+       else
+               *pck_div = max(3, *pck_div);
+       if (*pck_div > 255) {
+               *pck_div = 255;
+               lck = pck * *pck_div;
+               *lck_div = fck / lck;
+               BUG_ON(*lck_div < 1);
+               if (*lck_div > 255) {
+                       *lck_div = 255;
+                       printk(KERN_WARNING
+                               MODULE_NAME ": pixclock %d kHz too low.\n",
+                                pck / 1000);
+               }
+       }
+}
+
+static void set_lcd_timings(void)
+{
+       u32 l;
+       int lck_div, pck_div;
+       struct lcd_panel *panel = dispc.fbdev->panel;
+       int is_tft = panel->config & OMAP_LCDC_PANEL_TFT;
+       unsigned long fck;
+
+       DBGENTER(1);
+
+       /* TFT dither, TFT/STN */
+       l = (1 << 7) | (1 << 3);
+       MOD_REG_FLD(DISPC_CONTROL, l, is_tft ? l : 0);
+
+       l = dispc_read_reg(DISPC_TIMING_H);
+       l &= ~(FLD_MASK(0, 6) | FLD_MASK(8, 8) | FLD_MASK(20, 8));
+       l |= ( max(1, (min(64,  panel->hsw))) - 1 ) << 0;
+       l |= ( max(1, (min(256, panel->hfp))) - 1 ) << 8;
+       l |= ( max(1, (min(256, panel->hbp))) - 1 ) << 20;
+       dispc_write_reg(DISPC_TIMING_H, l);
+
+       l = dispc_read_reg(DISPC_TIMING_V);
+       l &= ~(FLD_MASK(0, 6) | FLD_MASK(8, 8) | FLD_MASK(20, 8));
+       l |= ( max(1, (min(64,  panel->vsw))) - 1 ) << 0;
+       l |= ( max(0, (min(255, panel->vfp))) - 0 ) << 8;
+       l |= ( max(0, (min(255, panel->vbp))) - 0 ) << 20;
+       dispc_write_reg(DISPC_TIMING_V, l);
+
+       l = dispc_read_reg(DISPC_POL_FREQ);
+       l &= ~FLD_MASK(12, 6);
+       l |= (panel->config & OMAP_LCDC_SIGNAL_MASK) << 12;
+       l |= panel->acb & 0xff;
+       dispc_write_reg(DISPC_POL_FREQ, l);
+
+       calc_ck_div(is_tft, panel->pixel_clock * 1000, &lck_div, &pck_div);
+
+       l = dispc_read_reg(DISPC_DIVISOR);
+       l &= ~(FLD_MASK(16, 8) | FLD_MASK(0, 8));
+       l |= (lck_div << 16) | (pck_div << 0);
+       dispc_write_reg(DISPC_DIVISOR, l);
+
+       /* update panel info with the exact clock */
+       fck = clk_get_rate(dispc.dss1_fck);
+       panel->pixel_clock = fck / lck_div / pck_div / 1000;
+}
+
+int omap_dispc_request_irq(void (*callback)(void *data), void *data)
+{
+       int r = 0;
+
+       BUG_ON(callback == NULL);
+
+       if (dispc.irq_callback)
+               r = -EBUSY;
+       else {
+               dispc.irq_callback = callback;
+               dispc.irq_callback_data = data;
+       }
+
+       return r;
+}
+EXPORT_SYMBOL(omap_dispc_request_irq);
+
+void omap_dispc_enable_irqs(int irq_mask)
+{
+       dispc.enabled_irqs = irq_mask;
+       irq_mask |= DISPC_IRQ_MASK_ERROR;
+       MOD_REG_FLD(DISPC_IRQENABLE, 0x7fff, irq_mask);
+}
+EXPORT_SYMBOL(omap_dispc_enable_irqs);
+
+void omap_dispc_disable_irqs(int irq_mask)
+{
+       dispc.enabled_irqs &= ~irq_mask;
+       irq_mask &= ~DISPC_IRQ_MASK_ERROR;
+       MOD_REG_FLD(DISPC_IRQENABLE, 0x7fff, irq_mask);
+}
+EXPORT_SYMBOL(omap_dispc_disable_irqs);
+
+void omap_dispc_free_irq(void)
+{
+       omap_dispc_disable_irqs(DISPC_IRQ_MASK_ALL);
+       dispc.irq_callback = NULL;
+       dispc.irq_callback_data = NULL;
+}
+EXPORT_SYMBOL(omap_dispc_free_irq);
+
+static irqreturn_t omap_dispc_irq_handler(int irq, void *dev, struct pt_regs *regs)
+{
+       u32 stat = dispc_read_reg(DISPC_IRQSTATUS);
+       static int jabber;
+
+       DBGENTER(2);
+
+       if (stat & DISPC_IRQ_FRAMEMASK)
+               complete(&dispc.frame_done);
+
+       if (stat & DISPC_IRQ_MASK_ERROR) {
+               if (jabber++ < 5) {
+                       pr_err("irq error status %04x\n", stat);
+               } else {
+                       pr_err("disable irq\n");
+                       dispc_write_reg(DISPC_IRQENABLE, 0);
+               }
+       }
+
+       if ((stat & dispc.enabled_irqs) && dispc.irq_callback)
+               dispc.irq_callback(dispc.irq_callback_data);
+
+       dispc_write_reg(DISPC_IRQSTATUS, stat);
+
+       return IRQ_HANDLED;
+}
+
+static int get_dss_clocks(void)
+{
+       if (IS_ERR((dispc.dss_ick = clk_get(dispc.fbdev->dev, "dss_ick")))) {
+               pr_err("can't get dss_ick");
+               return PTR_ERR(dispc.dss_ick);
+       }
+
+       if (IS_ERR((dispc.dss1_fck = clk_get(dispc.fbdev->dev, "dss1_fck")))) {
+               pr_err("can't get dss1_fck");
+               clk_put(dispc.dss_ick);
+               return PTR_ERR(dispc.dss1_fck);
+       }
+
+       if (IS_ERR((dispc.dss_54m_fck =
+                               clk_get(dispc.fbdev->dev, "dss_54m_fck")))) {
+               pr_err("can't get dss_54m_fck");
+               clk_put(dispc.dss_ick);
+               clk_put(dispc.dss1_fck);
+               return PTR_ERR(dispc.dss_54m_fck);
+       }
+
+       return 0;
+}
+
+static void put_dss_clocks(void)
+{
+       clk_put(dispc.dss_54m_fck);
+       clk_put(dispc.dss1_fck);
+       clk_put(dispc.dss_ick);
+}
+
+static void enable_lcd_clocks(int enable)
+{
+       if (enable) {
+               clk_use(dispc.dss_ick);
+               clk_use(dispc.dss1_fck);
+       } else {
+               clk_unuse(dispc.dss1_fck);
+               clk_unuse(dispc.dss_ick);
+       }
+}
+
+static void enable_digit_clocks(int enable)
+{
+       if (enable)
+               clk_use(dispc.dss_54m_fck);
+       else
+               clk_unuse(dispc.dss_54m_fck);
+}
+
+static void omap_dispc_suspend(void)
+{
+       DBGENTER(1);
+
+       if (dispc.update_mode == OMAPFB_AUTO_UPDATE) {
+               init_completion(&dispc.frame_done);
+               omap_dispc_enable_lcd_out(0);
+               if (!wait_for_completion_timeout(&dispc.frame_done,
+                               msecs_to_jiffies(500))) {
+                       pr_err("timeout waiting for FRAME DONE\n");
+               }
+               enable_lcd_clocks(0);
+       }
+
+       DBGLEAVE(1);
+}
+
+static void omap_dispc_resume(void)
+{
+       DBGENTER(1);
+
+       if (dispc.update_mode == OMAPFB_AUTO_UPDATE) {
+               enable_lcd_clocks(1);
+               set_lcd_timings();
+               load_palette();
+               omap_dispc_enable_lcd_out(1);
+       }
+
+       DBGLEAVE(1);
+}
+
+/* Called when used in bypass mode */
+static int alloc_vram(int req_size)
+{
+       int frame_size;
+       struct lcd_panel *panel = dispc.fbdev->panel;
+
+       frame_size = PAGE_ALIGN(panel->x_res * panel->bpp / 8 * panel->y_res);
+       if (req_size > frame_size)
+               frame_size = req_size;
+       dispc.vram_size = PAGE_ALIGN(MAX_PALETTE_SIZE) + frame_size;
+       dispc.vram_virt = dma_alloc_writecombine(dispc.fbdev->dev,
+                       dispc.vram_size, &dispc.vram_phys, GFP_KERNEL);
+
+       if (dispc.vram_virt == 0) {
+               pr_err("unable to allocate fb DMA memory\n");
+               return -ENOMEM;
+       }
+
+       return 0;
+}
+
+static void free_vram(void)
+{
+       dma_free_writecombine(dispc.fbdev->dev, dispc.vram_size,
+                             dispc.vram_virt, dispc.vram_phys);
+}
+
+static void omap_dispc_get_vram_layout(unsigned long *size, void **virt,
+                                       dma_addr_t *phys)
+{
+       *size = dispc.vram_size - PAGE_ALIGN(MAX_PALETTE_SIZE);
+       *virt = (u8 *)dispc.vram_virt + PAGE_ALIGN(MAX_PALETTE_SIZE);
+       *phys = dispc.vram_phys + PAGE_ALIGN(MAX_PALETTE_SIZE);
+}
+
+static int omap_dispc_init(struct omapfb_device *fbdev, int ext_mode,
+                          int req_vram_size)
+{
+       int r;
+       u32 l;
+       struct lcd_panel *panel = fbdev->panel;
+       int tmo = 10000;
+
+       DBGENTER(1);
+
+       memset(&dispc, 0, sizeof(dispc));
+
+       dispc.base = io_p2v(DISPC_BASE);
+       dispc.fbdev = fbdev;
+       dispc.ext_mode = ext_mode;
+
+       if ((r = get_dss_clocks()) < 0)
+               goto fail0;
+
+       enable_lcd_clocks(1);
+       /* Reset monitoring works only w/ the 54M clk */
+       enable_digit_clocks(1);
+
+       l = dispc_read_reg(DISPC_REVISION);
+       pr_info(MODULE_NAME ": version %d.%d\n", l >> 4 & 0x0f, l & 0x0f);
+
+       /* Soft reset */
+       MOD_REG_FLD(DISPC_SYSCONFIG, 1 << 1, 1 << 1);
+
+       while (!(dispc_read_reg(DISPC_SYSSTATUS) & 1)) {
+               if (!--tmo) {
+                       pr_err("soft reset failed\n");
+                       r = -ENODEV;
+                       enable_digit_clocks(0);
+                       goto fail1;
+               }
+       }
+
+       enable_digit_clocks(0);
+
+       if (!ext_mode && (r = alloc_vram(req_vram_size)) < 0)
+               goto fail1;
+
+       /* Set logic clock to the fck for now */
+       MOD_REG_FLD(DISPC_DIVISOR, FLD_MASK(16, 8), 1);
+
+       setup_plane_fifo(0);
+       setup_plane_fifo(1);
+       setup_plane_fifo(2);
+
+       l = dispc_read_reg(DISPC_IRQSTATUS);
+       dispc_write_reg(l, DISPC_IRQSTATUS);
+
+       /* Enable those that we handle always */
+       omap_dispc_enable_irqs(DISPC_IRQ_FRAMEMASK);
+
+       if ((r = request_irq(INT_24XX_DSS_IRQ, omap_dispc_irq_handler,
+                          0, MODULE_NAME, NULL)) < 0) {
+               pr_err("can't get DSS IRQ\n");
+               goto fail2;
+       }
+
+       set_lcd_data_lines(panel->data_lines);
+       set_load_mode(DISPC_LOAD_FRAME_ONLY);
+
+       if (!ext_mode) {
+               omap_dispc_set_lcd_size(panel->x_res, panel->y_res);
+               set_lcd_timings();
+       }
+       enable_rfbi_mode(ext_mode);
+
+       DBGLEAVE(1);
+       return 0;
+fail2:
+       if (ext_mode)
+               free_vram();
+fail1:
+       enable_lcd_clocks(0);
+       put_dss_clocks();
+fail0:
+       DBGLEAVE(1);
+        return r;
+}
+
+static void omap_dispc_cleanup(void)
+{
+       free_irq(INT_24XX_DSS_IRQ, NULL);
+       enable_lcd_clocks(0);
+       put_dss_clocks();
+       if (dispc.ext_mode)
+               free_vram();
+}
+
+static unsigned long omap_dispc_get_caps(void)
+{
+       return 0;
+}
+
+struct lcd_ctrl omap2_int_ctrl = {
+       .name                   = "internal",
+       .init                   = omap_dispc_init,
+       .cleanup                = omap_dispc_cleanup,
+       .get_vram_layout        = omap_dispc_get_vram_layout,
+       .get_caps               = omap_dispc_get_caps,
+       .set_update_mode        = omap_dispc_set_update_mode,
+       .get_update_mode        = omap_dispc_get_update_mode,
+       .update_window          = NULL,
+       .suspend                = omap_dispc_suspend,
+       .resume                 = omap_dispc_resume,
+       .setup_plane            = omap_dispc_setup_plane,
+       .enable_plane           = omap_dispc_enable_plane,
+       .set_color_key          = omap_dispc_set_color_key,
+};
+
+MODULE_DESCRIPTION("TI OMAP LCDC controller");
+MODULE_LICENSE("GPL");
diff --git a/drivers/video/omap/dispc.h b/drivers/video/omap/dispc.h
new file mode 100644 (file)
index 0000000..eb1512b
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _DISPC_H
+#define _DISPC_H
+
+#include <linux/interrupt.h>
+
+#define DISPC_PLANE_GFX                        0
+#define DISPC_PLANE_VID1               1
+#define DISPC_PLANE_VID2               2
+
+#define DISPC_RGB_1_BPP                        0x00
+#define DISPC_RGB_2_BPP                        0x01
+#define DISPC_RGB_4_BPP                        0x02
+#define DISPC_RGB_8_BPP                        0x03
+#define DISPC_RGB_12_BPP               0x04
+#define DISPC_RGB_16_BPP               0x06
+#define DISPC_RGB_24_BPP               0x08
+#define DISPC_RGB_24_BPP_UNPACK_32     0x09
+#define DISPC_YUV2_422                 0x0a
+#define DISPC_UYVY_422                 0x0b
+
+#define DISPC_BURST_4x32               0
+#define DISPC_BURST_8x32               1
+#define DISPC_BURST_16x32              2
+
+#define DISPC_LOAD_CLUT_AND_FRAME      0x00
+#define DISPC_LOAD_CLUT_ONLY           0x01
+#define DISPC_LOAD_FRAME_ONLY          0x02
+#define DISPC_LOAD_CLUT_ONCE_FRAME     0x03
+
+#define DISPC_TFT_DATA_LINES_12                0
+#define DISPC_TFT_DATA_LINES_16                1
+#define DISPC_TFT_DATA_LINES_18                2
+#define DISPC_TFT_DATA_LINES_24                3
+
+extern void omap_dispc_set_lcd_size(int width, int height);
+
+extern void omap_dispc_enable_lcd_out(int enable);
+extern void omap_dispc_enable_digit_out(int enable);
+
+extern int  omap_dispc_request_irq(void (*callback)(void *data), void *data);
+extern void omap_dispc_free_irq(void);
+
+#endif
index 981cf1e23415df7ec9622ba62aa0d8eb5a8a8d12..1021739b342984dc05197105a3ac037b6a191573 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * File: drivers/video/omap_new/lcd-h2.c
+ * File: drivers/video/omap/lcd-h2.c
  *
- * LCD panel support for the TI OMAP H2 board 
+ * LCD panel support for the TI OMAP H2 board
  *
  * Copyright (C) 2004 Nokia Corporation
  * Author: Imre Deak <imre.deak@nokia.com>
 #include <linux/module.h>
 
 #include <asm/arch/mux.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 #include "../drivers/ssi/omap-uwire.h"
 
+#define MODULE_NAME            "omapfb-lcd_h2"
 #define TSC2101_UWIRE_CS       1
 
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
 static int tsc2101_write_reg(int page, int reg, u16 data)
 {
        u16     cmd;
@@ -45,13 +47,14 @@ static int tsc2101_write_reg(int page, int reg, u16 data)
        if (omap_uwire_data_transfer(TSC2101_UWIRE_CS, cmd, 16, 0, NULL, 1))
                r = -1;
        else
-               r = omap_uwire_data_transfer(TSC2101_UWIRE_CS, data, 16, 0, NULL, 0);
+               r = omap_uwire_data_transfer(TSC2101_UWIRE_CS, data, 16, 0,
+                                            NULL, 0);
 
        DBGLEAVE(1);
        return r;
 }
 
-static int h2_panel_init(struct lcd_panel *panel)
+static int h2_panel_init(struct omapfb_device *fbdev)
 {
        unsigned long uwire_flags;
        DBGENTER(1);
@@ -66,13 +69,13 @@ static int h2_panel_init(struct lcd_panel *panel)
        return 0;
 }
 
-static void h2_panel_cleanup(struct lcd_panel *panel)
+static void h2_panel_cleanup(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static int h2_panel_enable(struct lcd_panel *panel)
+static int h2_panel_enable(void)
 {
        int r;
 
@@ -87,7 +90,7 @@ static int h2_panel_enable(struct lcd_panel *panel)
        return r;
 }
 
-static void h2_panel_disable(struct lcd_panel *panel)
+static void h2_panel_disable(void)
 {
        DBGENTER(1);
 
@@ -95,39 +98,36 @@ static void h2_panel_disable(struct lcd_panel *panel)
         * page2, GPIO config reg, GPIO(0,1) to out and deasserted
         */
        if (tsc2101_write_reg(2, 0x23, 0x8800))
-               PRNERR("failed to disable LCD panel\n");
+               pr_err("failed to disable LCD panel\n");
 
        DBGLEAVE(1);
 }
 
-static unsigned long h2_panel_get_caps(struct lcd_panel *panel)
+static unsigned long h2_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode240x320 = {
-       .x_res = 240,
-       .y_res = 320,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 12,
-       .hfp = 14,
-       .hbp = 72 - 12,
-       .vsw = 1,
-       .vfp = 1,
-       .vbp = 0,
-       .pcd = 12,
-};
-
 struct lcd_panel h2_panel = {
-       .name       = "h2",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode240x320,
-       
-       .init    = h2_panel_init,
-       .cleanup = h2_panel_cleanup,
-       .enable  = h2_panel_enable,
-       .disable = h2_panel_disable,
-       .get_caps= h2_panel_get_caps,
+       .name           = "h2",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 240,
+       .y_res          = 320,
+       .pixel_clock    = 5000,
+       .hsw            = 12,
+       .hfp            = 12,
+       .hbp            = 46,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 0,
+
+       .init           = h2_panel_init,
+       .cleanup        = h2_panel_cleanup,
+       .enable         = h2_panel_enable,
+       .disable        = h2_panel_disable,
+       .get_caps       = h2_panel_get_caps,
 };
 
index e7e9fc50f0bb32be1b64617cac126266c732f60d..78b10c0b5f9942359ab8c8528a894def0b5439d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * File: drivers/video/omap_new/lcd-h3.c
+ * File: drivers/video/omap/lcd-h3.c
  *
- * LCD panel support for the TI OMAP H3 board 
+ * LCD panel support for the TI OMAP H3 board
  *
  * Copyright (C) 2004 Nokia Corporation
  * Author: Imre Deak <imre.deak@nokia.com>
 
 #include <asm/arch/gpio.h>
 #include <asm/arch/tps65010.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 
-static int h3_panel_init(struct lcd_panel *panel)
+#define MODULE_NAME    "omapfb-lcd_h3"
+
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
+static int h3_panel_init(struct omapfb_device *fbdev)
 {
        DBGENTER(1);
        DBGLEAVE(1);
        return 0;
 }
 
-static void h3_panel_cleanup(struct lcd_panel *panel)
+static void h3_panel_cleanup(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static int h3_panel_enable(struct lcd_panel *panel)
+static int h3_panel_enable(void)
 {
        int r = 0;
 
@@ -56,13 +59,13 @@ static int h3_panel_enable(struct lcd_panel *panel)
        if (!r)
                r = tps65010_set_gpio_out_value(GPIO2, HIGH);
        if (r)
-               PRNERR("Unable to turn on LCD panel\n");
+               pr_err("Unable to turn on LCD panel\n");
 
        DBGLEAVE(1);
        return r;
 }
 
-static void h3_panel_disable(struct lcd_panel *panel)
+static void h3_panel_disable(void)
 {
        int r = 0;
 
@@ -73,39 +76,37 @@ static void h3_panel_disable(struct lcd_panel *panel)
        if (!r)
                tps65010_set_gpio_out_value(GPIO2, LOW);
        if (r)
-               PRNERR("Unable to turn off LCD panel\n");
+               pr_err("Unable to turn off LCD panel\n");
 
        DBGLEAVE(1);
 }
 
-static unsigned long h3_panel_get_caps(struct lcd_panel *panel)
+static unsigned long h3_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode240x320 = {
-       .x_res = 240,
-       .y_res = 320,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 12,
-       .hfp = 14,
-       .hbp = 72 - 12,
-       .vsw = 1,
-       .vfp = 1,
-       .vbp = 0,
-       .pcd = 2,
-};
-
 struct lcd_panel h3_panel = {
-       .name       = "h3",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode240x320,
-
-       .init    = h3_panel_init,
-       .cleanup = h3_panel_cleanup,
-       .enable  = h3_panel_enable,
-       .disable = h3_panel_disable,
-       .get_caps= h3_panel_get_caps,
+       .name           = "h3",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .data_lines     = 16,
+       .bpp            = 16,
+       .x_res          = 240,
+       .y_res          = 320,
+       .pixel_clock    = 12500,
+       .hsw            = 12,
+       .hfp            = 14,
+       .hbp            = 72 - 12,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 0,
+       .pcd            = 2,
+
+       .init           = h3_panel_init,
+       .cleanup        = h3_panel_cleanup,
+       .enable         = h3_panel_enable,
+       .disable        = h3_panel_disable,
+       .get_caps       = h3_panel_get_caps,
 };
 
diff --git a/drivers/video/omap/lcd_h4.c b/drivers/video/omap/lcd_h4.c
new file mode 100644 (file)
index 0000000..4817247
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * File: drivers/video/omap/lcd-h4.c
+ *
+ * LCD panel support for the TI OMAP H4 board
+ *
+ * Copyright (C) 2004 Nokia Corporation
+ * Author: Imre Deak <imre.deak@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <linux/module.h>
+
+#include <asm/arch/omapfb.h>
+
+/* #define OMAPFB_DBG 1 */
+
+#include "debug.h"
+
+static int h4_panel_init(struct omapfb_device *fbdev)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+       return 0;
+}
+
+static void h4_panel_cleanup(void)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+}
+
+static int h4_panel_enable(void)
+{
+
+       DBGENTER(1);
+       DBGLEAVE(1);
+       return 0;
+}
+
+static void h4_panel_disable(void)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+}
+
+static unsigned long h4_panel_get_caps(void)
+{
+       return 0;
+}
+
+struct lcd_panel h4_panel = {
+       .name           = "h4",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 240,
+       .y_res          = 320,
+       .pixel_clock    = 6250,
+       .hsw            = 15,
+       .hfp            = 15,
+       .hbp            = 60,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 1,
+
+       .init           = h4_panel_init,
+       .cleanup        = h4_panel_cleanup,
+       .enable         = h4_panel_enable,
+       .disable        = h4_panel_disable,
+       .get_caps       = h4_panel_get_caps,
+};
+
index 45f1bdfc733be0f97ec7d1c2f12353d678948567..d6ae2f6533c39baf8a5c352c15dceed900297c77 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * File: drivers/video/omap_new/lcd-inn1510.c
+ * File: drivers/video/omap/lcd-inn1510.c
  *
  * LCD panel support for the TI OMAP1510 Innovator board
  *
 #include <asm/io.h>
 
 #include <asm/arch/fpga.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 
-static int innovator1510_panel_init(struct lcd_panel *panel)
+static int innovator1510_panel_init(struct omapfb_device *fbdev)
 {
        DBGENTER(1);
        DBGLEAVE(1);
        return 0;
 }
 
-static void innovator1510_panel_cleanup(struct lcd_panel *panel)
+static void innovator1510_panel_cleanup(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static int innovator1510_panel_enable(struct lcd_panel *panel)
+static int innovator1510_panel_enable(void)
 {
        DBGENTER(1);
 
@@ -56,7 +55,7 @@ static int innovator1510_panel_enable(struct lcd_panel *panel)
        return 0;
 }
 
-static void innovator1510_panel_disable(struct lcd_panel *panel)
+static void innovator1510_panel_disable(void)
 {
        DBGENTER(1);
 
@@ -65,34 +64,32 @@ static void innovator1510_panel_disable(struct lcd_panel *panel)
        DBGLEAVE(1);
 }
 
-static unsigned long innovator1510_panel_get_caps(struct lcd_panel *panel)
+static unsigned long innovator1510_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode240x320 = {
-       .x_res = 240,
-       .y_res = 320,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 40,
-       .hfp = 40,
-       .hbp = 72,
-       .vsw = 1,
-       .vfp = 1,
-       .vbp = 0,
-       .pcd = 12,
-};
-
 struct lcd_panel innovator1510_panel = {
-       .name       = "inn1510",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode240x320,
-
-       .init    = innovator1510_panel_init,
-       .cleanup = innovator1510_panel_cleanup,
-       .enable  = innovator1510_panel_enable,
-       .disable = innovator1510_panel_disable,
-       .get_caps= innovator1510_panel_get_caps,
+       .name           = "inn1510",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 240,
+       .y_res          = 320,
+       .pixel_clock    = 12500,
+       .hsw            = 40,
+       .hfp            = 40,
+       .hbp            = 72,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 0,
+       .pcd            = 12,
+
+       .init           = innovator1510_panel_init,
+       .cleanup        = innovator1510_panel_cleanup,
+       .enable         = innovator1510_panel_enable,
+       .disable        = innovator1510_panel_disable,
+       .get_caps       = innovator1510_panel_get_caps,
 };
 
index 2d31695088b689237feb8689cba05ff5aef77124..bf71485e4274227f73572923cc0d6ba3c3cc2d1e 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * File: drivers/video/omap_new/lcd-inn1610.c
+ * File: drivers/video/omap/lcd-inn1610.c
  *
- * LCD panel support for the TI OMAP1610 Innovator board 
+ * LCD panel support for the TI OMAP1610 Innovator board
  *
  * Copyright (C) 2004 Nokia Corporation
  * Author: Imre Deak <imre.deak@nokia.com>
 #include <linux/module.h>
 
 #include <asm/arch/gpio.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 
-static int innovator1610_panel_init(struct lcd_panel *panel)
+#define MODULE_NAME    "omapfb-lcd_h3"
+
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
+static int innovator1610_panel_init(struct omapfb_device *fbdev)
 {
        int r = 0;
 
        DBGENTER(1);
 
        if (omap_request_gpio(14)) {
-               PRNERR("can't request GPIO 14\n");
+               pr_err("can't request GPIO 14\n");
                r = -1;
                goto exit;
        }
        if (omap_request_gpio(15)) {
-               PRNERR("can't request GPIO 15\n");
+               pr_err("can't request GPIO 15\n");
                omap_free_gpio(14);
                r = -1;
                goto exit;
@@ -56,7 +59,7 @@ exit:
        return r;
 }
 
-static void innovator1610_panel_cleanup(struct lcd_panel *panel)
+static void innovator1610_panel_cleanup(void)
 {
        DBGENTER(1);
 
@@ -66,7 +69,7 @@ static void innovator1610_panel_cleanup(struct lcd_panel *panel)
        DBGLEAVE(1);
 }
 
-static int innovator1610_panel_enable(struct lcd_panel *panel)
+static int innovator1610_panel_enable(void)
 {
        DBGENTER(1);
 
@@ -78,7 +81,7 @@ static int innovator1610_panel_enable(struct lcd_panel *panel)
        return 0;
 }
 
-static void innovator1610_panel_disable(struct lcd_panel *panel)
+static void innovator1610_panel_disable(void)
 {
        DBGENTER(1);
 
@@ -89,34 +92,32 @@ static void innovator1610_panel_disable(struct lcd_panel *panel)
        DBGLEAVE(1);
 }
 
-static unsigned long innovator1610_panel_get_caps(struct lcd_panel *panel)
+static unsigned long innovator1610_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode320x240 = {
-       .x_res = 320,
-       .y_res = 240,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 40,
-       .hfp = 40,
-       .hbp = 72,
-       .vsw = 1,
-       .vfp = 1,
-       .vbp = 0,
-       .pcd = 12,
-};
-
 struct lcd_panel innovator1610_panel = {
-       .name       = "inn1610",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode320x240,
-       
-       .init    = innovator1610_panel_init,
-       .cleanup = innovator1610_panel_cleanup,
-       .enable  = innovator1610_panel_enable,
-       .disable = innovator1610_panel_disable,
-       .get_caps= innovator1610_panel_get_caps,
+       .name           = "inn1610",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 320,
+       .y_res          = 240,
+       .pixel_clock    = 12500,
+       .hsw            = 40,
+       .hfp            = 40,
+       .hbp            = 72,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 0,
+       .pcd            = 12,
+
+       .init           = innovator1610_panel_init,
+       .cleanup        = innovator1610_panel_cleanup,
+       .enable         = innovator1610_panel_enable,
+       .disable        = innovator1610_panel_disable,
+       .get_caps       = innovator1610_panel_get_caps,
 };
 
index 4a48832541e62b8191d5b887000f1d63b7135431..54808d60feaae9f33f6882464b90609bb3f9c46e 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * File: drivers/video/omap_new/lcd-osk.c
+ * File: drivers/video/omap/lcd-osk.c
  *
- * LCD panel support for the TI OMAP OSK board 
+ * LCD panel support for the TI OMAP OSK board
  *
  * Copyright (C) 2004 Nokia Corporation
  * Author: Imre Deak <imre.deak@nokia.com>
  */
 
 #include <linux/module.h>
+
 #include <asm/arch/gpio.h>
 #include <asm/arch/mux.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 
-static int osk_panel_init(struct lcd_panel *panel)
+static int osk_panel_init(struct omapfb_device *fbdev)
 {
        DBGENTER(1);
        DBGLEAVE(1);
        return 0;
 }
 
-static void osk_panel_cleanup(struct lcd_panel *panel)
+static void osk_panel_cleanup(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static int osk_panel_enable(struct lcd_panel *panel)
+static int osk_panel_enable(void)
 {
        DBGENTER(1);
 
@@ -68,7 +68,7 @@ static int osk_panel_enable(struct lcd_panel *panel)
        return 0;
 }
 
-static void osk_panel_disable(struct lcd_panel *panel)
+static void osk_panel_disable(void)
 {
        DBGENTER(1);
 
@@ -84,34 +84,32 @@ static void osk_panel_disable(struct lcd_panel *panel)
        DBGLEAVE(1);
 }
 
-static unsigned long osk_panel_get_caps(struct lcd_panel *panel)
+static unsigned long osk_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode240x320 = {
-       .x_res = 240,
-       .y_res = 320,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 40,
-       .hfp = 40,
-       .hbp = 72,
-       .vsw = 1,
-       .vfp = 1,
-       .vbp = 0,
-       .pcd = 12,
-};
-
 struct lcd_panel osk_panel = {
-       .name       = "osk",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode240x320,
-
-       .init    = osk_panel_init,
-       .cleanup = osk_panel_cleanup,
-       .enable  = osk_panel_enable,
-       .disable = osk_panel_disable,
-       .get_caps= osk_panel_get_caps,
+       .name           = "osk",
+       .config         = OMAP_LCDC_PANEL_TFT,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 240,
+       .y_res          = 320,
+       .pixel_clock    = 12500,
+       .hsw            = 40,
+       .hfp            = 40,
+       .hbp            = 72,
+       .vsw            = 1,
+       .vfp            = 1,
+       .vbp            = 0,
+       .pcd            = 12,
+
+       .init           = osk_panel_init,
+       .cleanup        = osk_panel_cleanup,
+       .enable         = osk_panel_enable,
+       .disable        = osk_panel_disable,
+       .get_caps       = osk_panel_get_caps,
 };
 
index 64be10f1902d3aa2aca2af33a878257ee0e3b30d..5a3e2dbf79089f24f63dd7b9c9a36b8396c52d29 100644 (file)
@@ -1,13 +1,13 @@
 /*
- * File: drivers/video/omap_new/lcd-p2.c
+ * File: drivers/video/omap/lcd-p2.c
  *
- * LCD panel support for the TI OMAP P2 board 
+ * LCD panel support for the TI OMAP P2 board
  *
  * Authors:
  *   jekyll <jekyll@mail.jekyll.idv.tw>
  *   B Jp <lastjp_fr@yahoo.fr>
  *   Brian Swetland <swetland@android.com>
- * 
+ *
  * 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
 
 #include <linux/module.h>
 #include <linux/delay.h>
+
 #include <asm/arch/mux.h>
 #include <asm/arch/gpio.h>
-
-#include "omapfb.h"
+#include <asm/arch/omapfb.h>
 
 /*
  * File: epson-md-tft.h
@@ -152,20 +152,20 @@ const unsigned short INIT_SCSTART[2] = { 0x00, 0x00 };
 
 #define LCD_UWIRE_CS 0
 
-static int p2_panel_init(struct lcd_panel *panel)
+static int p2_panel_init(struct omapfb_device *fbdev)
 {
        DBGENTER(1);
        DBGLEAVE(1);
        return 0;
 }
 
-static void p2_panel_cleanup(struct lcd_panel *panel)
+static void p2_panel_cleanup(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static int p2_panel_enable(struct lcd_panel *panel)
+static int p2_panel_enable(void)
 {
        int i;
        unsigned long value;
@@ -195,8 +195,8 @@ static int p2_panel_enable(struct lcd_panel *panel)
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_GSSET, 9, 0,NULL,1);
        omap_uwire_data_transfer(LCD_UWIRE_CS, (INIT_GSSET | 0x100), 9, 0,NULL,1);
 
-       /* DISCTL */ 
-       omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_DISCTL, 9, 0,NULL,1); 
+       /* DISCTL */
+       omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_DISCTL, 9, 0,NULL,1);
        for (i = 0; i < (sizeof(INIT_DISCTL)/sizeof(unsigned short)); i++)
                omap_uwire_data_transfer(LCD_UWIRE_CS, (INIT_DISCTL[i] | 0x100), 9, 0,NULL,1);
 
@@ -209,7 +209,7 @@ static int p2_panel_enable(struct lcd_panel *panel)
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_GCP16, 9, 0,NULL,1);
        for (i = 0; i < (sizeof(INIT_GCP16)/sizeof(unsigned short)); i++)
                omap_uwire_data_transfer(LCD_UWIRE_CS, (INIT_GCP16[i] | 0x100), 9, 0,NULL,1);
-       
+
        /* MD_CSET */
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_MD_CSET, 9, 0,NULL,1);
        for (i = 0; i < (sizeof(INIT_MD_CSET)/sizeof(unsigned short)); i++)
@@ -251,16 +251,16 @@ static int p2_panel_enable(struct lcd_panel *panel)
 
        /* 3500KEND */
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_3500KEND, 9, 0,NULL,1);
-       
+
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_SLPOUT, 9, 0,NULL,1);
-       
+
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_VOLCTL, 9, 0,NULL,1);
        omap_uwire_data_transfer(LCD_UWIRE_CS, (INIT_VOLCTL_Ton | 0x100), 9, 0,NULL,1);
-       
+
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_VOLCTL, 9, 0,NULL,1);
 
        omap_uwire_data_transfer(LCD_UWIRE_CS, (INIT_VOLCTL | 0x100), 9, 0,NULL,1);
-       
+
        omap_uwire_data_transfer(LCD_UWIRE_CS, LCD_DISON, 9, 0,NULL,1);
 
        /* enable backlight */
@@ -271,41 +271,37 @@ static int p2_panel_enable(struct lcd_panel *panel)
        return 0;
 }
 
-static void p2_panel_disable(struct lcd_panel *panel)
+static void p2_panel_disable(void)
 {
        DBGENTER(1);
        DBGLEAVE(1);
 }
 
-static unsigned long p2_panel_get_caps(struct lcd_panel *panel)
+static unsigned long p2_panel_get_caps(void)
 {
        return 0;
 }
 
-static struct lcdc_video_mode mode176x220 = {
-       .x_res = 176,
-       .y_res = 220,
-       .pixel_clock = 12500,
-       .bpp = 16,
-       .hsw = 5,
-       .hfp = 1,
-       .hbp = 1,
-       .vsw = 2,
-       .vfp = 12,
-       .vbp = 1,
-       .pcd = 4,
-       .flags = OMAP_LCDC_INV_PIX_CLOCK,
-};
-
 struct lcd_panel p2_panel = {
-       .name       = "p2",
-       .config     = LCD_PANEL_TFT,
-       .video_mode = &mode176x220,
-       
-       .init    = p2_panel_init,
-       .cleanup = p2_panel_cleanup,
-       .enable  = p2_panel_enable,
-       .disable = p2_panel_disable,
-       .get_caps= p2_panel_get_caps,
+       .name           = "p2",
+       .config         = OMAP_LCDC_PANEL_TFT | OMAP_LCDC_INV_PIX_CLOCK,
+
+       .bpp            = 16,
+       .data_lines     = 16,
+       .x_res          = 176,
+       .y_res          = 220,
+       .pixel_clock    = 12500,
+       .hsw            = 5,
+       .hfp            = 1,
+       .hbp            = 1,
+       .vsw            = 2,
+       .vfp            = 12,
+       .vbp            = 1,
+
+       .init           = p2_panel_init,
+       .cleanup        = p2_panel_cleanup,
+       .enable         = p2_panel_enable,
+       .disable        = p2_panel_disable,
+       .get_caps       = p2_panel_get_caps,
 };
 
diff --git a/drivers/video/omap/lcd_palmte.c b/drivers/video/omap/lcd_palmte.c
new file mode 100644 (file)
index 0000000..3f25b73
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * File: drivers/video/omap/lcd_palmte.c
+ *
+ * LCD panel support for the Palm Tungsten E
+ *
+ * Original version : Romain Goyet
+ * Current version : Laurent Gonzalez
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <linux/module.h>
+
+#include <asm/io.h>
+#include <asm/arch/fpga.h>
+
+#include "omapfb.h"
+
+/* #define OMAPFB_DBG 1 */
+
+#include "debug.h"
+
+static int palmte_panel_init(struct lcd_panel *panel)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+       return 0;
+}
+
+static void palmte_panel_cleanup(struct lcd_panel *panel)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+}
+
+static int palmte_panel_enable(struct lcd_panel *panel)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+       return 0;
+}
+
+static void palmte_panel_disable(struct lcd_panel *panel)
+{
+       DBGENTER(1);
+       DBGLEAVE(1);
+}
+
+static unsigned long palmte_panel_get_caps(struct lcd_panel *panel)
+{
+       return 0;
+}
+
+struct lcd_panel palmte_panel = {
+       .name           = "palmte",
+       .config         = OMAP_LCDC_PANEL_TFT | OMAP_LCDC_INV_VSYNC |
+                         OMAP_LCDC_INV_HSYNC | OMAP_LCDC_HSVS_RISING_EDGE |
+                         OMAP_LCDC_HSVS_OPPOSITE;
+
+       .data_lines     = 16,
+       .bpp            = 8,
+       .pixel_clock    = 12500,
+       .x_res          = 320,
+       .y_res          = 320,
+       .hsw            = 4,
+       .hfp            = 8,
+       .hbp            = 28,
+       .vsw            = 1,
+       .vfp            = 8,
+       .vbp            = 7,
+       .pcd            = 5,
+
+       .init           = palmte_panel_init,
+       .cleanup        = palmte_panel_cleanup,
+       .enable         = palmte_panel_enable,
+       .disable        = palmte_panel_disable,
+       .get_caps       = palmte_panel_get_caps,
+};
+
similarity index 52%
rename from drivers/video/omap/omap_lcdc.c
rename to drivers/video/omap/lcdc.c
index fdc3af2cdadc7213829012fabc1d7e7422860932..fd5e1371f554805363af927073eea0f3301d8c27 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * linux/arch/arm/mach-omap/omap_lcdc.c
+ * File: drivers/video/omap/omap1/lcdc.c
  *
- * OMAP internal LCD controller
+ * OMAP1 internal LCD controller
  *
  * Copyright (C) 2004 Nokia Corporation
  * Author: Imre Deak <imre.deak@nokia.com>
@@ -19,7 +19,7 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */                                    
+ */
 
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/err.h>
 #include <linux/mm.h>
 #include <linux/fb.h>
+#include <linux/dma-mapping.h>
 
 #include <asm/arch/dma.h>
+#include <asm/arch/omapfb.h>
+
 #include <asm/mach-types.h>
 #include <asm/hardware/clock.h>
 
-#include "omapfb.h"
+/* #define OMAPFB_DBG 2 */
+
 #include "debug.h"
 
+#define MODULE_NAME                    "omapfb-lcdc"
+
 #define OMAP_LCDC_BASE                 0xfffec000
 #define OMAP_LCDC_SIZE                 256
 #define OMAP_LCDC_IRQ                  INT_LCD_CTRL
@@ -71,6 +77,8 @@
 
 #define MAX_PALETTE_SIZE               PAGE_SIZE
 
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
 enum lcdc_load_mode {
        OMAP_LCDC_LOAD_PALETTE,
        OMAP_LCDC_LOAD_FRAME,
@@ -78,11 +86,26 @@ enum lcdc_load_mode {
 };
 
 static struct omap_lcd_controller {
-       enum fb_update_mode     update_mode;
+       enum omapfb_update_mode update_mode;
+
+       unsigned long           frame_offset;
+       int                     screen_width;
+
+       enum omapfb_color_format        color_mode;
+       int                     bpp;
+       int                     palette_org;
+       int                     palette_code;
+       int                     palette_size;
+
        unsigned int            irq_mask;
        struct completion       last_frame_complete;
        struct completion       palette_load_complete;
        struct clk              *lcd_ck;
+       struct omapfb_device    *fbdev;
+
+       dma_addr_t              vram_phys;
+       void                    *vram_virt;
+       unsigned long           vram_size;
 } omap_lcdc;
 
 static void inline enable_irqs(int mask)
@@ -132,7 +155,6 @@ static void disable_controller_async(void)
        u32 l;
        u32 mask;
 
-       init_completion(&omap_lcdc.last_frame_complete);
        l = omap_readl(OMAP_LCDC_CONTROL);
        mask = OMAP_LCDC_CTRL_LCD_EN | OMAP_LCDC_IRQ_MASK;
        /* Preserve the DONE mask, since we still want to get the
@@ -143,57 +165,39 @@ static void disable_controller_async(void)
        omap_writel(l, OMAP_LCDC_CONTROL);
 }
 
-static void last_frame_timeout(unsigned long data)
-{
-       printk(KERN_ERR "omap_lcdc: timeout waiting for DONE flag\n");
-       complete(&omap_lcdc.last_frame_complete);
-}
-
-static void inline wait_for_frame_done(void)
-{
-       struct timer_list timeout;
-
-       init_timer(&timeout);
-       timeout.function = last_frame_timeout;
-       timeout.expires = jiffies + msecs_to_jiffies(500);
-       add_timer(&timeout);
-       wait_for_completion(&omap_lcdc.last_frame_complete);
-       del_timer_sync(&timeout);
-}
-
 static void disable_controller(void)
 {
+       init_completion(&omap_lcdc.last_frame_complete);
        disable_controller_async();
-       wait_for_frame_done();
+       if (!wait_for_completion_timeout(&omap_lcdc.last_frame_complete,
+                               msecs_to_jiffies(500)))
+               pr_err("timeout waiting for FRAME DONE\n");
 }
 
 static void reset_controller(u32 status)
 {
-        static unsigned long reset_count = 0;
-        static unsigned long last_jiffies = 0;
-
-        disable_controller_async();
-        reset_count++;
-        if (reset_count == 1 ||
-            time_after(jiffies, last_jiffies + HZ)) {
-                printk(KERN_ERR "omap_lcdc: resetting "
-                                 "(status %#010x,reset count %lu)\n",
-                                  status, reset_count);
-                last_jiffies = jiffies;
-        }
-        if (reset_count < 100) {
-                enable_controller();
-        } else {
-                reset_count = 0;
-                printk(KERN_ERR "omap_lcdc: too many reset attempts, "
-                                "giving up.\n");
-        }
+       static unsigned long reset_count = 0;
+       static unsigned long last_jiffies = 0;
+
+       disable_controller_async();
+       reset_count++;
+       if (reset_count == 1 || time_after(jiffies, last_jiffies + HZ)) {
+               pr_err("resetting (status %#010x,reset count %lu)\n",
+                         status, reset_count);
+               last_jiffies = jiffies;
+       }
+       if (reset_count < 100) {
+               enable_controller();
+       } else {
+               reset_count = 0;
+               pr_err("too many reset attempts, giving up.\n");
+       }
 }
 
 /* Configure the LCD DMA according to the current mode specified by parameters
- * in fbdev and fbdev->var.
+ * in omap_lcdc.fbdev and fbdev->var.
  */
-static void setup_lcd_dma(struct omapfb_device *fbdev)
+static void setup_lcd_dma(void)
 {
        static const int dma_elem_type[] = {
                0,
@@ -202,46 +206,50 @@ static void setup_lcd_dma(struct omapfb_device *fbdev)
                0,
                OMAP_DMA_DATA_TYPE_S32,
        };
-       struct fb_var_screeninfo *var = &fbdev->fb_info->var;
+       struct fb_var_screeninfo *var = &omap_lcdc.fbdev->fb_info->var;
+       struct lcd_panel *panel = omap_lcdc.fbdev->panel;
        unsigned long   src;
        int             esize, xelem, yelem;
 
-       src = fbdev->lcddma_handle + fbdev->vis_frame_org + fbdev->view_org;
+       src = omap_lcdc.vram_phys + PAGE_ALIGN(MAX_PALETTE_SIZE) +
+               omap_lcdc.frame_offset;
+
        switch (var->rotate) {
        case 0:
-               esize = fbdev->mirror || (src & 3) ? 2 : 4;
-               xelem = var->xres * var->bits_per_pixel / 8 / esize;
-               yelem = var->yres;
+               esize = omap_lcdc.fbdev->mirror || (src & 3) ? 2 : 4;
+               xelem = panel->x_res * omap_lcdc.bpp / 8 / esize;
+               yelem = panel->y_res;
                break;
        case 90:
        case 180:
        case 270:
+               if (cpu_is_omap15xx()) {
+                       BUG();
+               }
                esize = 2;
-               xelem = var->xres * var->bits_per_pixel / 16;
-               yelem = var->yres;
+               xelem = panel->y_res * omap_lcdc.bpp / 16;
+               yelem = panel->x_res;
                break;
        default:
                BUG();
                return;
        }
-       DBGPRINT(1, "setup_dma: src=%#010x esize=%d xelem=%d yelem=%d\n",
+       DBGPRINT(1, "setup_dma: src %#010lx esize %d xelem %d yelem %d\n",
                 src, esize, xelem, yelem);
        omap_set_lcd_dma_b1(src, xelem, yelem, dma_elem_type[esize]);
        omap_set_lcd_dma_single_transfer(0);
-       if (!cpu_is_omap1510()) {
+       if (!cpu_is_omap15xx()) {
                /* Set virtual xres elem size */
                omap_set_lcd_dma_b1_vxres(
-                       fbdev->fb_info->fix.line_length / esize);
+                       omap_lcdc.screen_width * omap_lcdc.bpp / 8 / esize);
                /* Setup transformations */
                omap_set_lcd_dma_b1_rotation(var->rotate);
-               omap_set_lcd_dma_b1_mirror(fbdev->mirror);
-               omap_set_lcd_dma_b1_scale(fbdev->xscale, fbdev->yscale);
+               omap_set_lcd_dma_b1_mirror(omap_lcdc.fbdev->mirror);
        }
        omap_setup_lcd_dma();
 }
 
-static irqreturn_t lcdc_irq_handler(int irq, void *dev_id,
-                                        struct pt_regs *fp)
+static irqreturn_t lcdc_irq_handler(int irq, void *dev_id, struct pt_regs *fp)
 {
        u32 status;
 
@@ -288,65 +296,99 @@ static irqreturn_t lcdc_irq_handler(int irq, void *dev_id,
  * been transferred. Then it'll be safe to reconfigure both the LCD controller
  * as well as the LCD DMA.
  */
-static void omap_lcdc_change_mode(struct omapfb_device *fbdev)
+static int omap_lcdc_setup_plane(int plane, int channel_out,
+                                unsigned long offset, int screen_width,
+                                int pos_x, int pos_y, int width, int height,
+                                int color_mode)
 {
+       struct fb_var_screeninfo *var = &omap_lcdc.fbdev->fb_info->var;
+       struct lcd_panel *panel = omap_lcdc.fbdev->panel;
+       int rot_x, rot_y;
+
        DBGENTER(1);
 
-       omap_stop_lcd_dma();
-       disable_controller();
-       setup_lcd_dma(fbdev);
-       enable_controller();
+       if (var->rotate == 0) {
+               rot_x = panel->x_res;
+               rot_y = panel->y_res;
+       } else {
+               rot_x = panel->y_res;
+               rot_y = panel->x_res;
+       }
+       if (plane != 0 || channel_out != 0 || pos_x != 0 || pos_y != 0 ||
+           width != rot_x || height != rot_y) {
+               DBGPRINT(1, "invalid plane params plane %d pos_x %d "
+                       "pos_y %d w %d h %d\n", plane, pos_x, pos_y,
+                       width, height);
+               return -EINVAL;
+       }
+
+       omap_lcdc.frame_offset = offset;
+       omap_lcdc.screen_width = screen_width;
+       omap_lcdc.color_mode = color_mode;
+
+       switch (color_mode) {
+       case OMAPFB_COLOR_CLUT_8BPP:
+               omap_lcdc.bpp = 8;
+               omap_lcdc.palette_code = 0x3000;
+               omap_lcdc.palette_size = 512;
+               break;
+       case OMAPFB_COLOR_RGB565:
+               omap_lcdc.bpp = 16;
+               omap_lcdc.palette_code = 0x4000;
+               omap_lcdc.palette_size = 32;
+               break;
+       default:
+               /* FIXME: other BPPs.
+                * bpp1: code  0,     size 256
+                * bpp2: code  0x1000 size 256
+                * bpp4: code  0x2000 size 256
+                * bpp12: code 0x4000 size 32
+                */
+               DBGPRINT(1, "invalid color mode %d\n", color_mode);
+               return -1;
+       }
+
+       omap_lcdc.palette_org = PAGE_ALIGN(MAX_PALETTE_SIZE) -
+                                       omap_lcdc.palette_size;
+
+       if (omap_lcdc.update_mode == OMAPFB_AUTO_UPDATE) {
+               disable_controller();
+               omap_stop_lcd_dma();
+               setup_lcd_dma();
+               enable_controller();
+       }
 
        DBGLEAVE(1);
+
+       return 0;
+}
+
+static int omap_lcdc_enable_plane(int plane, int enable)
+{
+       if (plane != 0 || enable != 1)
+               return -EINVAL;
+
+       return 0;
 }
 
 /* Configure the LCD DMA for a palette load operation and do the palette
  * downloading synchronously. We don't use the frame+palette load mode of
  * the controller, since the palette can always be downloaded seperately.
  */
-static void load_palette(struct omapfb_device *fbdev)
+static void load_palette(void)
 {
-       u8              *palette;
-       u32             code;
-       unsigned long   size;
-       unsigned long   palette_org;
+       u16     *palette;
 
        DBGENTER(1);
 
-       switch (fbdev->panel->video_mode->bpp) {
-       case 1:
-               /* 0 is already set */
-               code = 0;
-               size = 256;
-               break;
-       case 2:
-               code = 0x1000;
-               size = 256;
-               break;
-       case 4:
-               code = 0x2000;
-               size = 256;
-               break;
-       case 8:
-               code = 0x3000;
-               size = 256;
-               break;
-       case 12:
-       case 16:
-               code = 0x4000;
-               size = 32;
-               break;
-       default:
-               BUG();
-               return;
-       }
-       palette_org = MAX_PALETTE_SIZE - size;
-       palette = fbdev->lcddma_base + palette_org;
-       memset(palette, 0, size);
-       *(u32 *)palette = code;
+       palette = (u16 *)((u8 *)omap_lcdc.vram_virt + omap_lcdc.palette_org);
+
+       *(u16 *)palette &= 0x0fff;
+       *(u16 *)palette |= omap_lcdc.palette_code;
+
+       omap_set_lcd_dma_b1(omap_lcdc.vram_phys + omap_lcdc.palette_org,
+               omap_lcdc.palette_size / 4 + 1, 1, OMAP_DMA_DATA_TYPE_S32);
 
-       omap_set_lcd_dma_b1(fbdev->lcddma_handle + palette_org,
-                           size / 4 + 1, 1, OMAP_DMA_DATA_TYPE_S32);
        omap_set_lcd_dma_single_transfer(1);
        omap_setup_lcd_dma();
 
@@ -354,7 +396,9 @@ static void load_palette(struct omapfb_device *fbdev)
        enable_irqs(OMAP_LCDC_IRQ_LOADED_PALETTE);
        set_load_mode(OMAP_LCDC_LOAD_PALETTE);
        enable_controller();
-       wait_for_completion(&omap_lcdc.palette_load_complete);
+       if (!wait_for_completion_timeout(&omap_lcdc.palette_load_complete,
+                               msecs_to_jiffies(500)))
+               pr_err("timeout waiting for FRAME DONE\n");
        /* The controller gets disabled in the irq handler */
        disable_irqs(OMAP_LCDC_IRQ_LOADED_PALETTE);
        omap_stop_lcd_dma();
@@ -362,74 +406,88 @@ static void load_palette(struct omapfb_device *fbdev)
        DBGLEAVE(1);
 }
 
-static void inline setup_regs(struct omapfb_device *fbdev)
+static void calc_ck_div(int is_tft, int pck, int *pck_div)
+{
+       unsigned long lck;
+
+       pck = max(1, pck);
+       lck = clk_get_rate(omap_lcdc.lcd_ck);
+       *pck_div = lck / pck;
+       if (is_tft)
+               *pck_div = max(2, *pck_div);
+       else
+               *pck_div = max(3, *pck_div);
+       if (*pck_div > 255) {
+               /* FIXME: try to adjust logic clock divider as well */
+               *pck_div = 255;
+               printk(KERN_WARNING MODULE_NAME ": pixclock %d kHz too low.\n",
+                               pck / 1000);
+       }
+}
+
+static void inline setup_regs(void)
 {
        u32 l;
-       struct lcdc_video_mode *mode = fbdev->panel->video_mode;
-       int tft = fbdev->panel->config & LCD_PANEL_TFT;
-       int signal_levels = fbdev->panel->signals;
+       struct lcd_panel *panel = omap_lcdc.fbdev->panel;
+       int is_tft = panel->config & OMAP_LCDC_PANEL_TFT;
+       unsigned long lck;
+       int pcd;
 
        l = omap_readl(OMAP_LCDC_CONTROL);
        l &= ~OMAP_LCDC_CTRL_LCD_TFT;
-       l |= tft ? OMAP_LCDC_CTRL_LCD_TFT : 0;
+       l |= is_tft ? OMAP_LCDC_CTRL_LCD_TFT : 0;
+#ifdef CONFIG_MACH_OMAP_PALMTE
+/* FIXME:if (machine_is_omap_palmte()) { */
+               /* PalmTE uses alternate TFT setting in 8BPP mode */
+               l |= (tft && fbdev->panel->video_mode->bpp == 8) ? 0x810000 : 0;
+/*     } */
+#endif
        omap_writel(l, OMAP_LCDC_CONTROL);
 
        l = omap_readl(OMAP_LCDC_TIMING2);
        l &= ~(((1 << 6) - 1) << 20);
-       l |= signal_levels << 20;
+       l |= (panel->config & OMAP_LCDC_SIGNAL_MASK) << 20;
        omap_writel(l, OMAP_LCDC_TIMING2);
 
-       l = mode->x_res - 1;
-       l |= (mode->hsw - 1) << 10;
-       l |= (mode->hfp - 1) << 16;
-       l |= (mode->hbp - 1) << 24;
+       l = panel->x_res - 1;
+       l |= (panel->hsw - 1) << 10;
+       l |= (panel->hfp - 1) << 16;
+       l |= (panel->hbp - 1) << 24;
        omap_writel(l, OMAP_LCDC_TIMING0);
 
-       l = mode->y_res - 1;
-       l |= (mode->vsw - 1) << 10;
-       l |= mode->vfp << 16;
-       l |= mode->vbp << 24;
+       l = panel->y_res - 1;
+       l |= (panel->vsw - 1) << 10;
+       l |= panel->vfp << 16;
+       l |= panel->vbp << 24;
        omap_writel(l, OMAP_LCDC_TIMING1);
 
        l = omap_readl(OMAP_LCDC_TIMING2);
        l &= ~0xff;
 
-       if (!cpu_is_omap730())
-               l |= mode->pcd;
+       lck = clk_get_rate(omap_lcdc.lcd_ck);
 
-       if (machine_is_omap_perseus2()) {
-               u32 clock1, clock2;
-               int pcd;
-
-               clock1 = mode->pixel_clock * 1000;
-               clock2 = clk_get_rate(omap_lcdc.lcd_ck);
-
-               if (clock1 != 0) {
-                       pcd = clock2 / clock1;
-                       if (pcd > 255)
-                               pcd = 0;
-               } else {
-                       pcd = 0;
-               }
-               
-               if (pcd == 0)
-                       l |= mode->pcd;
-               else
-                       l |= pcd;
+       if (!panel->pcd)
+               calc_ck_div(is_tft, panel->pixel_clock * 1000, &pcd);
+       else {
+               printk(KERN_WARNING
+                   MODULE_NAME ": Pixel clock divider value is obsolete.\n"
+                   MODULE_NAME ": Try to set pixel_clock to %lu and pcd to 0 "
+                   "in drivers/video/omap/lcd_%s.c and submit a patch.\n",
+                       lck / panel->pcd / 1000, panel->name);
 
-//             printk("%% ck1: %d  ck2: %d  pcd: %d %%\n",clock1, clock2, pcd);        
+               pcd = panel->pcd;
        }
-
-       l |= mode->acb << 8;
-       if (mode->flags & OMAP_LCDC_INV_PIX_CLOCK)
-               l |= 1 << 22;
+       l |= pcd & 0xff;
+       l |= panel->acb << 8;
        omap_writel(l, OMAP_LCDC_TIMING2);
+
+       /* update panel info with the exact clock */
+       panel->pixel_clock = lck / pcd / 1000;
 }
 
 /* Configure the LCD controller, download the color palette and start a looped
  * DMA transfer of the frame image data. */
-static int omap_lcdc_set_update_mode(struct omapfb_device *fbdev,
-                                    enum fb_update_mode mode)
+static int omap_lcdc_set_update_mode(enum omapfb_update_mode mode)
 {
        int r = 0;
 
@@ -437,12 +495,12 @@ static int omap_lcdc_set_update_mode(struct omapfb_device *fbdev,
 
        if (mode != omap_lcdc.update_mode) {
                switch (mode) {
-               case FB_AUTO_UPDATE:
-                       setup_regs(fbdev);
-                       load_palette(fbdev);
+               case OMAPFB_AUTO_UPDATE:
+                       setup_regs();
+                       load_palette();
 
                        /* Setup and start LCD DMA */
-                       setup_lcd_dma(fbdev);
+                       setup_lcd_dma();
 
                        set_load_mode(OMAP_LCDC_LOAD_FRAME);
                        enable_irqs(OMAP_LCDC_IRQ_DONE);
@@ -450,7 +508,7 @@ static int omap_lcdc_set_update_mode(struct omapfb_device *fbdev,
                        enable_controller();
                        omap_lcdc.update_mode = mode;
                        break;
-               case FB_UPDATE_DISABLED:
+               case OMAPFB_UPDATE_DISABLED:
                        disable_controller();
                        omap_stop_lcd_dma();
                        omap_lcdc.update_mode = mode;
@@ -458,48 +516,63 @@ static int omap_lcdc_set_update_mode(struct omapfb_device *fbdev,
                default:
                        r = -EINVAL;
                }
-       }       
+       }
 
        DBGLEAVE(1);
        return r;
 }
 
-static enum fb_update_mode omap_lcdc_get_update_mode(struct omapfb_device *fbdev)
+static enum omapfb_update_mode omap_lcdc_get_update_mode(void)
 {
        return omap_lcdc.update_mode;
 }
 
-static void omap_lcdc_suspend(struct omapfb_device *fbdev)
+static void omap_lcdc_suspend(void)
 {
-       if (omap_lcdc.update_mode == FB_AUTO_UPDATE) {
+       if (omap_lcdc.update_mode == OMAPFB_AUTO_UPDATE) {
                disable_controller();
                omap_stop_lcd_dma();
        }
 }
 
-static void omap_lcdc_resume(struct omapfb_device *fbdev)
+static void omap_lcdc_resume(void)
 {
-       if (omap_lcdc.update_mode == FB_AUTO_UPDATE) {
-               setup_regs(fbdev);
-               load_palette(fbdev);
-               setup_lcd_dma(fbdev);
+       if (omap_lcdc.update_mode == OMAPFB_AUTO_UPDATE) {
+               setup_regs();
+               load_palette();
+               setup_lcd_dma();
                set_load_mode(OMAP_LCDC_LOAD_FRAME);
                enable_irqs(OMAP_LCDC_IRQ_DONE);
                enable_controller();
        }
 }
 
-static int omap_lcdc_init(struct omapfb_device *fbdev)
+static void omap_lcdc_get_vram_layout(unsigned long *size, void **virt,
+                                       dma_addr_t *phys)
+{
+       *size = omap_lcdc.vram_size - PAGE_ALIGN(MAX_PALETTE_SIZE);
+       *virt = (u8 *)omap_lcdc.vram_virt + PAGE_ALIGN(MAX_PALETTE_SIZE);
+       *phys = omap_lcdc.vram_phys + PAGE_ALIGN(MAX_PALETTE_SIZE);
+}
+
+static int omap_lcdc_init(struct omapfb_device *fbdev, int ext_mode,
+                         int req_vram_size)
 {
        int r;
        u32 l;
        int rate;
        struct clk *tc_ck;
+       struct lcd_panel *panel = fbdev->panel;
+       int frame_size;
 
        DBGENTER(1);
 
        omap_lcdc.irq_mask = 0;
 
+       omap_lcdc.fbdev = fbdev;
+
+       pr_info(MODULE_NAME ": init\n");
+
        l = 0;
        omap_writel(l, OMAP_LCDC_CONTROL);
 
@@ -508,14 +581,14 @@ static int omap_lcdc_init(struct omapfb_device *fbdev)
         */
        omap_lcdc.lcd_ck = clk_get(NULL, "lcd_ck");
        if (IS_ERR(omap_lcdc.lcd_ck)) {
-               printk(KERN_ERR "omap_lcdc: unable to access LCD clock\n");
+               pr_err("unable to access LCD clock\n");
                r = PTR_ERR(omap_lcdc.lcd_ck);
                goto fail0;
        }
 
        tc_ck = clk_get(NULL, "tc_ck");
        if (IS_ERR(tc_ck)) {
-               printk(KERN_ERR "omap_lcdc: unable to access TC clock\n");
+               pr_err("unable to access TC clock\n");
                r = PTR_ERR(tc_ck);
                goto fail1;
        }
@@ -527,28 +600,43 @@ static int omap_lcdc_init(struct omapfb_device *fbdev)
                rate /= 3;
        r = clk_set_rate(omap_lcdc.lcd_ck, rate);
        if (r) {
-               printk(KERN_ERR "omap_lcdc: failed to adjust LCD rate\n");
+               pr_err("failed to adjust LCD rate\n");
                goto fail1;
        }
        clk_use(omap_lcdc.lcd_ck);
 
-       r = request_irq(OMAP_LCDC_IRQ, lcdc_irq_handler, 0, "omap-lcdc", fbdev);
+       r = request_irq(OMAP_LCDC_IRQ, lcdc_irq_handler, 0, "omap-lcdc",
+                       omap_lcdc.fbdev);
        if (r) {
-               printk(KERN_ERR "omap_lcdc: unable to get IRQ\n");
+               pr_err("unable to get IRQ\n");
                goto fail2;
        }
 
        r = omap_request_lcd_dma(NULL, NULL);
        if (r) {
-               printk(KERN_ERR "omap_lcdc: unable to get LCD DMA\n");
+               pr_err("unable to get LCD DMA\n");
                goto fail3;
        }
 
-       printk(KERN_INFO "OMAP LCD controller initialized.\n");
+       frame_size = panel->x_res * panel->bpp * panel->y_res / 8;
+       if (req_vram_size > frame_size)
+               frame_size = req_vram_size;
+       omap_lcdc.vram_size = PAGE_ALIGN(MAX_PALETTE_SIZE) + frame_size;
+       omap_lcdc.vram_virt = dma_alloc_writecombine(fbdev->dev,
+                       omap_lcdc.vram_size, &omap_lcdc.vram_phys, GFP_KERNEL);
+
+       if (omap_lcdc.vram_virt == NULL) {
+               pr_err("unable to allocate fb DMA memory\n");
+               r = -ENOMEM;
+               goto fail4;
+       }
+
        DBGLEAVE(1);
        return 0;
+fail4:
+       omap_free_lcd_dma();
 fail3:
-       free_irq(OMAP_LCDC_IRQ, fbdev);
+       free_irq(OMAP_LCDC_IRQ, omap_lcdc.fbdev);
 fail2:
        clk_unuse(omap_lcdc.lcd_ck);
 fail1:
@@ -558,41 +646,62 @@ fail0:
         return r;
 }
 
-static void omap_lcdc_cleanup(struct omapfb_device *fbdev)
+static void omap_lcdc_cleanup(void)
 {
+       dma_free_writecombine(omap_lcdc.fbdev->dev, omap_lcdc.vram_size,
+                             omap_lcdc.vram_virt, omap_lcdc.vram_phys);
        omap_free_lcd_dma();
-       free_irq(OMAP_LCDC_IRQ, fbdev);
+       free_irq(OMAP_LCDC_IRQ, omap_lcdc.fbdev);
        clk_unuse(omap_lcdc.lcd_ck);
        clk_put(omap_lcdc.lcd_ck);
 }
 
-static void omap_lcdc_get_mem_layout(struct omapfb_device *fbdev,
-                                    unsigned long *size, unsigned long *fb_org)
+static unsigned long omap_lcdc_get_caps(void)
 {
-       struct lcdc_video_mode *mode = fbdev->panel->video_mode;
-
-       *size = MAX_PALETTE_SIZE;
-       *fb_org = *size;
-       *size += mode->x_res * mode->bpp / 8 * mode->y_res;
+       return 0;
 }
 
-static unsigned long omap_lcdc_get_caps(struct omapfb_device *fbdev)
+static int omap_lcdc_setcolreg(u_int regno, u16 red, u16 green, u16 blue,
+                              u16 transp, int update_hw_pal)
 {
+       u16 *palette;
+
+       if (omap_lcdc.color_mode != OMAPFB_COLOR_CLUT_8BPP || regno > 255)
+               return -EINVAL;
+
+       palette = (u16 *)((u8*)omap_lcdc.vram_virt +
+                       PAGE_ALIGN(MAX_PALETTE_SIZE) - omap_lcdc.palette_size);
+
+       palette[regno] &= ~0x0fff;
+       palette[regno] |= ((red >> 12) << 8) | ((green >> 12) << 4 ) |
+                          (blue >> 12);
+
+       if (update_hw_pal) {
+               disable_controller();
+               omap_stop_lcd_dma();
+               load_palette();
+               setup_lcd_dma();
+               set_load_mode(OMAP_LCDC_LOAD_FRAME);
+               enable_controller();
+       }
+
        return 0;
 }
 
-struct lcd_ctrl omapfb_lcdc_ctrl = {
+struct lcd_ctrl omap1_int_ctrl = {
        .name                   = "internal",
        .init                   = omap_lcdc_init,
        .cleanup                = omap_lcdc_cleanup,
-       .get_mem_layout         = omap_lcdc_get_mem_layout,
+       .get_vram_layout        = omap_lcdc_get_vram_layout,
        .get_caps               = omap_lcdc_get_caps,
        .set_update_mode        = omap_lcdc_set_update_mode,
        .get_update_mode        = omap_lcdc_get_update_mode,
        .update_window          = NULL,
-       .suspend                = omap_lcdc_suspend, 
+       .suspend                = omap_lcdc_suspend,
        .resume                 = omap_lcdc_resume,
-       .change_mode            = omap_lcdc_change_mode,
+       .setup_plane            = omap_lcdc_setup_plane,
+       .enable_plane           = omap_lcdc_enable_plane,
+       .setcolreg              = omap_lcdc_setcolreg,
 };
 
 MODULE_DESCRIPTION("TI OMAP LCDC controller");
diff --git a/drivers/video/omap/omapfb.h b/drivers/video/omap/omapfb.h
deleted file mode 100644 (file)
index 33f2086..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * File: drivers/video/omap_new/omapfb.c
- *
- * Framebuffer driver for TI OMAP boards
- *
- * Copyright (C) 2004 Nokia Corporation
- * Author: Imre Deak <imre.deak@nokia.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#ifndef __OMAPFB_H
-#define __OMAPFB_H
-
-/* IOCTL commands. */
-
-#define OMAP_IOW(num, dtype)   _IOW('O', num, dtype)
-#define OMAP_IOR(num, dtype)   _IOR('O', num, dtype)
-#define OMAP_IOWR(num, dtype)  _IOWR('O', num, dtype)
-#define OMAP_IO(num)           _IO('O', num)
-
-#define OMAPFB_FILLRECT                OMAP_IOW(0, struct fb_fillrect)
-#define OMAPFB_COPYAREA                OMAP_IOW(1, struct fb_copyarea)
-#define OMAPFB_IMAGEBLIT       OMAP_IOW(2, struct fb_image)
-
-#define OMAPFB_TRANSPARENT_BLIT        OMAP_IOW(30, struct fb_image)
-#define OMAPFB_MIRROR          OMAP_IOW(31, int)
-#define OMAPFB_SCALE           OMAP_IOW(32, struct fb_scale)
-#define OMAPFB_SELECT_VIS_FRAME        OMAP_IOW(33, int)
-#define OMAPFB_SELECT_SRC_FRAME OMAP_IOW(34, int)
-#define OMAPFB_SELECT_DST_FRAME        OMAP_IOW(35, int)
-#define OMAPFB_GET_FRAME_OFFSET        OMAP_IOWR(36, struct fb_frame_offset)
-#define OMAPFB_SYNC_GFX                OMAP_IO(37)
-#define OMAPFB_VSYNC           OMAP_IO(38)
-#define OMAPFB_LATE_ACTIVATE   OMAP_IO(39)
-#define OMAPFB_SET_UPDATE_MODE OMAP_IOW(40, enum fb_update_mode)
-#define OMAPFB_UPDATE_WINDOW   OMAP_IOW(41, struct fb_update_window)
-#define OMAPFB_GET_CAPS                OMAP_IOR(42, unsigned long)
-#define OMAPFB_GET_UPDATE_MODE OMAP_IOW(43, enum fb_update_mode)
-#define OMAPFB_GET_GFX_STATUS  OMAP_IOR(44, unsigned long)
-
-#define FBCAPS_GENERIC_MASK    0x00000fff
-#define FBCAPS_LCDC_MASK       0x00fff000
-#define FBCAPS_PANEL_MASK      0xff000000
-
-#define FBCAPS_MANUAL_UPDATE   0x00001000
-#define FBCAPS_SET_BACKLIGHT   0x01000000
-
-enum omapfb_gfx_status {
-       OMAPFB_GFX_STATUS_OK    = 0,
-       OMAPFB_GFX_STATUS_CHANGED
-};
-
-#define OMAPFB_UPDATE_FAILED   0x01
-#define OMAPFB_FILLRECT_FAILED 0x02
-#define OMAPFB_COPYAREA_FAILED 0x04
-#define OMAPFB_IMGBLIT_FAILED  0x08
-
-struct fb_copyarea_ext {
-       __u32 dx;
-       __u32 dy;
-       __u32 width;
-       __u32 height;
-       __u32 sx;
-       __u32 sy;
-       __u32 trans_color;
-       __u32 rev_dir;
-};
-
-struct fb_scale {
-       unsigned int xscale, yscale;
-};
-
-struct fb_frame_offset {
-       unsigned int idx;
-       unsigned long offset;
-};
-
-struct fb_update_window {
-       unsigned int x, y;
-       unsigned int width, height;
-};
-
-enum fb_update_mode {
-       FB_UPDATE_DISABLED = 0,
-       FB_AUTO_UPDATE,
-       FB_MANUAL_UPDATE
-};
-
-#ifdef __KERNEL__
-
-#include <linux/completion.h>
-#include <linux/interrupt.h>
-#include <linux/fb.h>
-
-#define OMAPFB_DEVICE "omapfb"
-#define OMAPFB_DRIVER "omapfb"
-
-#define PRNERR(fmt, args...)  printk(KERN_ERR OMAPFB_DRIVER ": " fmt, ## args)
-
-#define GFX_FIFO_SIZE 2
-
-#define LCD_PANEL_TFT 0x01
-
-#define OMAP_LCDC_INV_VSYNC             0x01
-#define OMAP_LCDC_INV_HSYNC             0x02
-#define OMAP_LCDC_INV_PIX_CLOCK         0x04
-#define OMAP_LCDC_INV_OUTPUT_EN         0x08
-#define OMAP_LCDC_HSVS_RISING_EDGE      0x10
-#define OMAP_LCDC_HSVS_OPPOSITE         0x20
-
-struct lcdc_video_mode {
-       u16     x_res, y_res;
-       u32     pixel_clock;    /* In kHz */
-       int     bpp;
-       u8      hsw;            /* Horizontal synchronization pulse width */
-       u8      hfp;            /* Horizontal front porch */
-       u8      hbp;            /* Horizontal back porch */
-       u8      vsw;            /* Vertical synchronization pulse width */
-       u8      vfp;            /* Vertical front porch */
-       u8      vbp;            /* Vertical back porch */
-       u8      acb;            /* ac-bias pin frequency */
-       u8      pcd;            /* Pixel clock divider (this will change) */
-       u8  flags;
-};
-
-struct lcd_panel {
-       const char *name;
-       int  config;
-       int  signals;
-       struct lcdc_video_mode *video_mode;
-
-       int  (*init)    (struct lcd_panel *panel);
-       void (*cleanup) (struct lcd_panel *panel);
-       int  (*enable)  (struct lcd_panel *panel);
-       void (*disable) (struct lcd_panel *panel);
-       unsigned long (*get_caps)(struct lcd_panel *panel);
-       int           (*set_bklight_level)(struct lcd_panel *panel,
-                                          unsigned int level);
-       unsigned int  (*get_bklight_level)(struct lcd_panel *panel);
-       unsigned int  (*get_bklight_max)  (struct lcd_panel *panel);
-};
-
-struct omapfb_device;
-
-struct lcd_ctrl {
-       const char      *name;
-       void            *data;
-       int             (*init)           (struct omapfb_device *fbdev);
-       void            (*cleanup)        (struct omapfb_device *fbdev);
-       void            (*get_mem_layout) (struct omapfb_device *fbdev,
-                                          unsigned long *size,
-                                          unsigned long *fb_org);
-       unsigned long   (*get_caps)       (struct omapfb_device *fbdev);
-       int             (*set_update_mode)(struct omapfb_device *fbdev,
-                                          enum fb_update_mode mode);
-       enum fb_update_mode (*get_update_mode)(struct omapfb_device *fbdev);
-       int             (*update_window)  (struct omapfb_device *fbdev,
-                                          struct fb_update_window *win);
-       void            (*suspend)        (struct omapfb_device *fbdev);
-       void            (*resume)         (struct omapfb_device *fbdev);
-       void            (*change_mode)    (struct omapfb_device *fbdev);
-};
-
-enum omapfb_state {
-       OMAPFB_DISABLED = 0,
-       OMAPFB_SUSPENDED= 99,
-       OMAPFB_ACTIVE   = 100
-};
-
-struct gfx_lchannel {
-       int                     lch_num;
-       struct gfx_lchannel     *next, *prev;
-};
-
-struct gfx_dma {
-       spinlock_t              spinlock;
-
-       struct completion       sync_complete;          /* Signalled when the
-                                                          fifo gets empty */
-       volatile int            done;                   /* Indicates the
-                                                          end of a DMA chain
-                                                          transfer */
-       struct gfx_lchannel     fifo[GFX_FIFO_SIZE];
-       struct gfx_lchannel     *f_head, *f_tail;       /* Process and insert
-                                                          points on the
-                                                          fifo */
-       struct gfx_lchannel     *f_chain_end;           /* Points to the new
-                                                          chain end */
-       struct semaphore        f_free;                 /* # of free lch-s */
-       int                     f_run;                  /* # of active lch-s */
-       int                     f_wait;                 /* # of lch-s
-                                                          waiting */
-       struct tasklet_struct   dequeue_tasklet;        /* Processes new DMA
-                                                          chain  transfers on
-                                                          the fifo */
-};
-
-#define OMAPFB_RQUEUE_SIZE 20
-
-struct omapfb_fillrect_params
-{
-       struct fb_info          *fbi;
-       struct fb_fillrect      rect; 
-};
-
-struct omapfb_copyarea_params
-{
-       struct fb_info          *fbi;
-       struct fb_copyarea_ext  area;
-};
-
-struct omapfb_update_window_params
-{
-       struct fb_info          *fbi;
-       struct fb_update_window win;
-};
-
-struct omapfb_imageblit_params
-{
-       struct fb_info  *fbi;
-       struct fb_image image;
-       int             flags;
-};
-
-union req_params
-{
-       /* All possible requests are to be listed here */
-       struct omapfb_fillrect_params           fillrect;
-       struct omapfb_copyarea_params           copyarea;
-       struct omapfb_update_window_params      update_window;
-       struct omapfb_imageblit_params          imageblit;
-};
-
-struct omapfb_request
-{
-       struct list_head        entry;
-       int                     (*function)(void *par);
-       union req_params        par;
-};
-
-struct omapfb_rqueue
-{
-       spinlock_t              lock;
-       struct list_head        free_list;
-       struct list_head        pending_list;
-       struct completion       rqueue_empty;
-       struct semaphore        free_sema;
-       struct omapfb_request   req_pool[OMAPFB_RQUEUE_SIZE];
-       struct work_struct      work;
-       unsigned long           status;
-};
-
-struct omapfb_device {
-       int                     state;
-       int                     ext_lcdc;               /* Using external
-                                                           LCD controller */
-       void                    *lcddma_base;           /* MPU virtual
-                                                          address */
-       dma_addr_t              lcddma_handle;          /* Bus physical
-                                                          address */
-       unsigned long           lcddma_mem_size;
-       unsigned long           palette_org;            /* Palette offset into
-                                                          lcddma_base/handle */
-       unsigned long           frame0_org, frame1_org; /* Frame offsets for
-                                                          back and front
-                                                          frame buffers into
-                                                          lcddma_base/handle */
-       unsigned long           vis_frame_org;          /* Offset of visible
-                                                          frame buffer.
-                                                          = frame0/1_org */
-       unsigned long           src_frame_org;          /* Offset of source
-                                                          frame for drawing
-                                                          operations.
-                                                          = frame0/1_org */
-       unsigned long           dst_frame_org;          /* Offset of dest
-                                                          frame for drawing
-                                                          operations.
-                                                          = frame0/1_org */
-       unsigned long           view_org;               /* View offset into
-                                                          lcddma_base/handle+
-                                                          vis_frame_org.
-                                                          Used for panning */
-       unsigned long           palette_size;
-       int                     xscale, yscale, mirror; /* transformations.
-                                                          rotate is stored in
-                                                          fb_info->var */
-
-       u32                     pseudo_palette[17];
-
-       struct gfx_dma          gfx;                    /* Accelerator */
-       struct omapfb_rqueue    rqueue;
-       struct lcd_panel        *panel;                 /* LCD panel */
-       struct lcd_ctrl         *ctrl;                  /* LCD controller */
-
-       struct fb_info          *fb_info;               /* Linux fbdev
-                                                          framework data */
-       struct device           *dev;
-};
-
-extern struct lcd_panel h3_panel;
-extern struct lcd_panel h2_panel;
-extern struct lcd_panel p2_panel;
-extern struct lcd_panel osk_panel;
-extern struct lcd_panel innovator1610_panel;
-extern struct lcd_panel innovator1510_panel;
-
-extern struct lcd_ctrl omapfb_lcdc_ctrl;
-
-#endif /* __KERNEL__ */
-
-#endif /* __OMAPFB_H */
index 430cef90d11fef87dbb7b5cf1d4179beab36dfc6..59b0f0f4517d282e9d062a98f67938d082fb5b81 100644 (file)
 #include <asm/arch/irqs.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/board.h>
+#include <asm/arch/omapfb.h>
 
-#include "omapfb.h"
-
-// #define OMAPFB_DBG_FIFO 1
-// #define OMAPFB_DBG 1
+/* #define OMAPFB_DBG 1 */
 
 #include "debug.h"
 
-#define COPY_MODE_REV_DIR      0x01
-#define COPY_MODE_TRANSPARENT  0x02
-#define COPY_MODE_IMAGE                0x04
+#define OMAPFB_DRIVER  "omapfb"
+#define MODULE_NAME    "omapfb"
 
-#ifdef OMAPFB_DBG_FIFO
-struct gfx_stat {
-       unsigned long f_run[GFX_FIFO_SIZE];
-} stat;
-#endif
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
 
 static unsigned int    def_accel;
 static unsigned long   def_vram;
-static long            def_vxres;
-static long            def_vyres;
+static unsigned long   def_vxres;
+static unsigned long   def_vyres;
 static unsigned int    def_rotate;
 static unsigned int    def_mirror;
 
@@ -78,8 +71,8 @@ static struct caps_table_struct {
         unsigned long flag;
         const char *name;
 } omapfb_caps_table[] = {
-       { FBCAPS_MANUAL_UPDATE, "manual update" },
-       { FBCAPS_SET_BACKLIGHT, "backlight setting" },
+       { OMAPFB_CAPS_MANUAL_UPDATE, "manual update" },
+       { OMAPFB_CAPS_SET_BACKLIGHT, "backlight setting" },
 };
 
 /*
@@ -87,6 +80,16 @@ static struct caps_table_struct {
  * LCD panel
  * ---------------------------------------------------------------------------
  */
+extern struct lcd_panel h4_panel;
+extern struct lcd_panel h3_panel;
+extern struct lcd_panel h2_panel;
+extern struct lcd_panel p2_panel;
+extern struct lcd_panel osk_panel;
+extern struct lcd_panel palmte_panel;
+extern struct lcd_panel innovator1610_panel;
+extern struct lcd_panel innovator1510_panel;
+extern struct lcd_panel lph8923_panel;
+
 static struct lcd_panel *panels[] = {
 #ifdef CONFIG_MACH_OMAP_H2
        &h2_panel,
@@ -94,367 +97,62 @@ static struct lcd_panel *panels[] = {
 #ifdef CONFIG_MACH_OMAP_H3
        &h3_panel,
 #endif
+#ifdef CONFIG_MACH_OMAP_H4
+       &h4_panel,
+#endif
 #ifdef CONFIG_MACH_OMAP_PERSEUS2
        &p2_panel,
 #endif
 #ifdef CONFIG_MACH_OMAP_OSK
        &osk_panel,
 #endif
+#ifdef CONFIG_MACH_OMAP_PALMTE
+       &palmte_panel,
+#endif
+
 #ifdef CONFIG_MACH_OMAP_INNOVATOR
+
 #ifdef CONFIG_ARCH_OMAP15XX
        &innovator1510_panel,
 #endif
 #ifdef CONFIG_ARCH_OMAP16XX
        &innovator1610_panel,
 #endif
+
 #endif
 };
 
+extern struct lcd_ctrl omap1_int_ctrl;
+extern struct lcd_ctrl omap2_int_ctrl;
+extern struct lcd_ctrl hwa742_ctrl;
+extern struct lcd_ctrl blizzard_ctrl;
+
 static struct lcd_ctrl *ctrls[] = {
-#ifdef CONFIG_FB_OMAP_INTERNAL_LCDC
-       &omapfb_lcdc_ctrl,
+#ifdef CONFIG_FB_OMAP_LCDC_INTERNAL
+#ifdef CONFIG_ARCH_OMAP1
+       &omap1_int_ctrl,
+#else
+       &omap2_int_ctrl,
+#endif
 #endif
 };
 
-static struct omapfb_request *omapfb_rqueue_alloc_req(struct omapfb_rqueue *rq)
-{
-       struct omapfb_request *req;
-
-       down(&rq->free_sema);
-       spin_lock(&rq->lock);
-       req = list_entry(rq->free_list.next, struct omapfb_request, entry);
-       list_del(&req->entry);
-       spin_unlock(&rq->lock);
-       return req;
-}
-
-static void __omapfb_rqueue_free_req(struct omapfb_rqueue *rq,
-                                    struct omapfb_request *req)
-{
-       list_add(&req->entry, &rq->free_list);
-       up(&rq->free_sema);
-}
-
-static void omapfb_rqueue_process(void *data)
-{
-       struct omapfb_rqueue *rq = data;
-
-       spin_lock(&rq->lock);
-       while (!list_empty(&rq->pending_list)) {
-               struct omapfb_request *req;
-
-               req = list_entry(rq->pending_list.next,
-                                  struct omapfb_request, entry);
-               list_del(&req->entry);
-               spin_unlock(&rq->lock);
-               rq->status |= req->function(&req->par);
-               spin_lock(&rq->lock);
-               __omapfb_rqueue_free_req(rq, req);
-       }
-       complete(&rq->rqueue_empty);
-       spin_unlock(&rq->lock);
-}
-
-static void omapfb_rqueue_schedule_req(struct omapfb_rqueue *rq,
-                                      struct omapfb_request *req)
-{
-       spin_lock(&rq->lock);
-       list_add_tail(&req->entry, &rq->pending_list);
-       spin_unlock(&rq->lock);
-       schedule_work(&rq->work);
-}
-
-static void omapfb_rqueue_sync(struct omapfb_rqueue *rq)
-{
-       int wait = 0;
-
-       spin_lock(&rq->lock);
-       if (!list_empty(&rq->pending_list)) {
-               wait = 1;
-               init_completion(&rq->rqueue_empty);
-       }
-       spin_unlock(&rq->lock);
-       if (wait)
-               wait_for_completion(&rq->rqueue_empty);
-}
-
-static void omapfb_rqueue_reset(struct omapfb_rqueue *rq, unsigned long *status)
-{
-       omapfb_rqueue_sync(rq);
-       spin_lock(&rq->lock);
-       *status = rq->status;
-       rq->status = 0;
-       spin_unlock(&rq->lock);
-}
-
-static void omapfb_rqueue_init(struct omapfb_rqueue *rq)
-{
-       int i;
-
-       spin_lock_init(&rq->lock);
-       sema_init(&rq->free_sema, OMAPFB_RQUEUE_SIZE);
-       init_completion(&rq->rqueue_empty);
-       INIT_WORK(&rq->work, omapfb_rqueue_process, rq);
-       INIT_LIST_HEAD(&rq->free_list);
-       INIT_LIST_HEAD(&rq->pending_list);
-       for (i = 0; i < OMAPFB_RQUEUE_SIZE; i++)
-               list_add(&rq->req_pool[i].entry, &rq->free_list);
-}
-
-static void omapfb_rqueue_cleanup(struct omapfb_rqueue *rq)
-{
-}
-
-/*
- * ---------------------------------------------------------------------------
- * gfx DMA
- * ---------------------------------------------------------------------------
- */
-/* Get a new logical channel from the gfx fifo. */
-static void inline gfxdma_get_lch(struct gfx_dma *gfx, int *lch)
-{
-       DBGENTER(3);
-
-       down(&gfx->f_free);
-
-       spin_lock_bh(&gfx->spinlock);
-
-       *lch = gfx->f_tail->lch_num;
-       gfx->f_tail = gfx->f_tail->next;
-
-       spin_unlock_bh(&gfx->spinlock);
-
-       DBGLEAVE(3);
-}
-
-/* Set basic transfer params for the logical channel */
-static inline void gfxdma_set_lch_params(int lch, int data_type,
-                                        int enumber, int fnumber,
-                                        unsigned long src_start, int src_amode,
-                                        unsigned long dst_start, int dst_amode)
-{
-       omap_set_dma_transfer_params(lch, data_type, enumber, fnumber, 0);
-       omap_set_dma_src_params(lch, OMAP_DMA_PORT_EMIFF,
-                               src_amode, src_start);
-       omap_set_dma_dest_params(lch, OMAP_DMA_PORT_EMIFF,
-                                dst_amode, dst_start);
-}
-
-/* Set element and frame indexes for the logical channel, to support
- * image transformations
- */
-static inline void gfxdma_set_lch_index(int lch, int src_eidx, int src_fidx,
-                                       int dst_eidx, int dst_fidx)
-{
-       omap_set_dma_src_index(lch, src_eidx, src_fidx);
-       omap_set_dma_dest_index(lch, dst_eidx, dst_fidx);
-}
-
-/* Set color parameter for the logical channel, to support constant fill and
- * transparent copy operations
- */
-static inline void gfxdma_set_lch_color(int lch, u32 color,
-                                       enum omap_dma_color_mode mode)
-{
-       omap_set_dma_color_mode(lch, mode, color);
-}
-
-
-/* Start a new transfer consisting of a single DMA logical channel,
- * or a chain (f_run > 1). Can be called in interrupt context.
- * gfx->spinlock must be held.
- */
-static void inline gfxdma_start_chain(struct gfx_dma *gfx)
-{
-       DBGENTER(3);
-
-       gfx->f_run = gfx->f_wait;
-#ifdef OMAPFB_DBG_FIFO
-       stat.f_run[gfx->f_run - 1]++;
+#ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
+#ifdef CONFIG_ARCH_OMAP1
+extern struct lcd_ctrl_extif sossi_extif;
+#else
+extern struct lcd_ctrl_extif rfbi_extif;
+#endif
 #endif
-       gfx->f_wait = 0;
-       omap_enable_dma_irq(gfx->f_chain_end->lch_num, OMAP_DMA_BLOCK_IRQ);
-       /* Let it go */
-       DBGPRINT(1, "start %d\n", gfx->f_head->lch_num);
-       omap_start_dma(gfx->f_head->lch_num);
-       gfx->f_chain_end = gfx->f_chain_end->next;
-
-       DBGLEAVE(3);
-}
-
-/* Enqueue a logical channel, that has been set up. If no other transfers
- * are pending start this new one right away. */
-static void inline gfxdma_enqueue(struct gfx_dma *gfx, int lch)
-{
-       DBGENTER(3);
-
-       spin_lock_bh(&gfx->spinlock);
-       DBGPRINT(3, "run:%d wait:%d\n", gfx->f_run, gfx->f_wait);
-       if (gfx->f_wait) {
-               DBGPRINT(1, "link %d, %d\n", gfx->f_chain_end->lch_num, lch);
-               omap_dma_link_lch(gfx->f_chain_end->lch_num, lch);
-               gfx->f_chain_end = gfx->f_chain_end->next;
-       }
-       omap_disable_dma_irq(lch, OMAP_DMA_BLOCK_IRQ);
-
-       gfx->f_wait++;
-
-       if (!gfx->f_run)
-               gfxdma_start_chain(gfx);
-       spin_unlock_bh(&gfx->spinlock);
-
-       DBGLEAVE(3);
-}
-
-/* Called by DMA core when the last transfer ended, or there is an error
- * condition. We dispatch handling of the end of transfer case to a tasklet.
- * Called in interrupt context.
- */
-static void gfxdma_handler(int lch, u16 ch_status, void *data)
-{
-       struct gfx_dma *gfx = (struct gfx_dma *)data;
-       int done = 0;
-
-       DBGENTER(3);
-
-       DBGPRINT(4, "lch=%d status=%#010x\n", lch, ch_status);
-       if (unlikely(ch_status & (OMAP_DMA_TOUT_IRQ | OMAP_DMA_DROP_IRQ))) {
-               PRNERR("gfx DMA error. status=%#010x\n", ch_status);
-               done = 1;
-       } else if (likely(ch_status & OMAP_DMA_BLOCK_IRQ))
-               done = 1;
-       if (likely(done)) {
-               gfx->done = 1;
-               tasklet_schedule(&gfx->dequeue_tasklet);
-       }
-
-       DBGLEAVE(3);
-}
-
-/* Let the DMA core know that the last transfer has ended. If there are
- * pending transfers in the fifo start them now.
- * Called in interrupt context.
- */
-static void gfxdma_dequeue_tasklet(unsigned long data)
-{
-       struct gfx_dma *gfx = (struct gfx_dma *)data;
-       struct gfx_lchannel *f_chain;
-
-       DBGENTER(3);
-
-       /* start an already programmed transfer
-        */
-       while (likely(gfx->done)) {
-               gfx->done = 0;
-               spin_lock(&gfx->spinlock);
-               f_chain = gfx->f_head;
-               omap_stop_dma(f_chain->lch_num);
-               /* Would be better w/o a loop.. */
-               while (gfx->f_run--) {
-                       if (gfx->f_run)
-                               omap_dma_unlink_lch(f_chain->lch_num,
-                                                   f_chain->next->lch_num);
-                       f_chain = f_chain->next;
-                       up(&gfx->f_free);
-               }
-               gfx->f_run = 0;
-               gfx->f_head = f_chain;
-               if (likely(gfx->f_wait))
-                       gfxdma_start_chain(gfx);
-               else
-                       complete(&gfx->sync_complete);
-               spin_unlock(&gfx->spinlock);
-       }
-
-       DBGLEAVE(3);
-}
-
-/* Wait till any pending transfers end. */
-static void gfxdma_sync(struct gfx_dma *gfx)
-{
-       int wait = 0;
-
-       DBGENTER(1);
-
-       for (;;) {
-               spin_lock_bh(&gfx->spinlock);
-               if (gfx->f_run + gfx->f_wait) {
-                       wait = 1;
-                       init_completion(&gfx->sync_complete);
-               }
-               spin_unlock_bh(&gfx->spinlock);
-               if (wait) {
-                       wait_for_completion(&gfx->sync_complete);
-                       wait = 0;
-               } else
-                       break;
-       }
-
-       DBGLEAVE(1);
-}
 
-/* Initialize the gfx DMA object.
- * Allocate DMA logical channels according to the fifo size.
- * Set the channel parameters that will be the same for all transfers.
- */
-static int gfxdma_init(struct gfx_dma *gfx)
+static void omapfb_rqueue_lock(struct omapfb_device *fbdev)
 {
-       int                     r = 0;
-       int                     i;
-
-       DBGENTER(1);
-
-       for (i = 0; i < GFX_FIFO_SIZE; i++) {
-               int next_idx;
-               int lch_num;
-
-               r = omap_request_dma(0, OMAPFB_DRIVER,
-                                    gfxdma_handler, gfx, &lch_num);
-               if (r) {
-                       int j;
-
-                       PRNERR("unable to get GFX DMA %d\n", i);
-                       for (j = 0; j < i; j++)
-                               omap_free_dma(lch_num);
-                       r = -1;
-                       goto exit;
-               }
-               omap_set_dma_src_data_pack(lch_num, 1);
-               omap_set_dma_src_burst_mode(lch_num, OMAP_DMA_DATA_BURST_4);
-               omap_set_dma_dest_data_pack(lch_num, 1);
-               omap_set_dma_dest_burst_mode(lch_num, OMAP_DMA_DATA_BURST_4);
-
-               gfx->fifo[i].lch_num = lch_num;
-
-               next_idx = i < GFX_FIFO_SIZE - 1 ? i + 1 : 0;
-               gfx->fifo[next_idx].prev = &gfx->fifo[i];
-               gfx->fifo[i].next = &gfx->fifo[next_idx];
-       }
-       gfx->f_head = gfx->f_tail = gfx->f_chain_end = &gfx->fifo[0];
-       sema_init(&gfx->f_free, GFX_FIFO_SIZE);
-
-       spin_lock_init(&gfx->spinlock);
-
-       tasklet_init(&gfx->dequeue_tasklet, gfxdma_dequeue_tasklet,
-                    (unsigned long)gfx);
-
-       init_completion(&gfx->sync_complete);
-exit:
-       DBGLEAVE(1);
-       return r;
+       down(&fbdev->rqueue_sema);
 }
 
-/* Clean up the gfx DMA object */
-static void gfxdma_cleanup(struct gfx_dma *gfx)
+static void omapfb_rqueue_unlock(struct omapfb_device *fbdev)
 {
-       int i;
-
-       DBGENTER(1);
-
-       for (i = 0; i < GFX_FIFO_SIZE; i++)
-               omap_free_dma(gfx->fifo[i].lch_num);
-
-       DBGLEAVE(1);
+       up(&fbdev->rqueue_sema);
 }
 
 /*
@@ -478,48 +176,26 @@ static const int dma_elem_type[] = {
  */
 static int ctrl_init(struct omapfb_device *fbdev)
 {
-       unsigned long mem_size;
        int r;
 
        DBGENTER(1);
 
-       r = fbdev->ctrl->init(fbdev);
-       if (r < 0)
+       r = fbdev->ctrl->init(fbdev, 0, def_vram);
+       if (r < 0) {
+               pr_err("controller initialization failed\n");
                goto exit;
-       fbdev->ctrl->get_mem_layout(fbdev, &mem_size, &fbdev->frame0_org);
-
-       if (def_vram) {
-               if (mem_size > def_vram) {
-                       PRNERR("specified frame buffer memory too small\n");
-                       r = -ENOMEM;
-                       goto cleanup_ctrl;
-               }
-               mem_size = def_vram;
-       }
-       fbdev->lcddma_mem_size = PAGE_SIZE << get_order(mem_size);
-       fbdev->lcddma_base = dma_alloc_writecombine(fbdev->dev,
-                                                   fbdev->lcddma_mem_size,
-                                                   &fbdev->lcddma_handle,
-                                                   GFP_KERNEL);
-       if (fbdev->lcddma_base == NULL) {
-               PRNERR("unable to allocate fb DMA memory\n");
-               r = -ENOMEM;
-               goto cleanup_ctrl;
        }
 
-       memset(fbdev->lcddma_base, 0, fbdev->lcddma_mem_size);
+       fbdev->ctrl->get_vram_layout(&fbdev->vram_size, &fbdev->vram_virt_base,
+                                    &fbdev->vram_phys_base);
+       memset((void *)fbdev->vram_virt_base, 0, fbdev->vram_size);
 
-       DBGPRINT(1, "lcddma_base=%#10x lcddma_handle=%#10x lcddma_mem_size=%d"
-                "palette_size=%d frame0_org=%d palette_org=%d\n",
-                fbdev->lcddma_base, fbdev->lcddma_handle,
-                fbdev->lcddma_mem_size,
-                fbdev->palette_size,
-                fbdev->frame0_org, fbdev->palette_org);
+       DBGPRINT(1, "vram_phys %08x vram_virt %p vram_size=%lu\n",
+                fbdev->vram_phys_base, fbdev->vram_virt_base,
+                fbdev->vram_size);
 
        DBGLEAVE(1);
        return 0;
-cleanup_ctrl:
-        fbdev->ctrl->cleanup(fbdev);
 exit:
        DBGLEAVE(1);
        return r;
@@ -527,14 +203,26 @@ exit:
 
 static void ctrl_cleanup(struct omapfb_device *fbdev)
 {
-       fbdev->ctrl->cleanup(fbdev);
-       dma_free_writecombine(fbdev->dev, fbdev->lcddma_mem_size,
-                             fbdev->lcddma_base, fbdev->lcddma_handle);
+       fbdev->ctrl->cleanup();
 }
 
-static void ctrl_change_mode(struct omapfb_device *fbdev)
+static int ctrl_change_mode(struct omapfb_device *fbdev)
 {
-       fbdev->ctrl->change_mode(fbdev);
+       int r;
+       unsigned long offset;
+       struct fb_var_screeninfo *var = &fbdev->fb_info->var;
+
+       DBGPRINT(1, "xoffset %d yoffset %d line_length %d bits_per_pixel %d\n",
+               var->xoffset, var->yoffset, fbdev->fb_info->fix.line_length,
+               var->bits_per_pixel);
+       offset = var->yoffset * fbdev->fb_info->fix.line_length +
+                var->xoffset * var->bits_per_pixel / 8;
+       r = fbdev->ctrl->setup_plane(OMAPFB_PLANE_GFX, OMAPFB_CHANNEL_OUT_LCD,
+                                offset, var->xres_virtual, 0, 0, var->xres,
+                                var->yres, fbdev->color_mode);
+       DBGLEAVE(1);
+
+       return r;
 }
 
 /*
@@ -546,39 +234,19 @@ static void ctrl_change_mode(struct omapfb_device *fbdev)
 static int omapfb_open(struct fb_info *info, int user)
 {
        DBGENTER(1);
-
-#ifdef OMAPFB_DBG_FIFO
-       memset(&stat, 0, sizeof(stat));
-#endif
-
        DBGLEAVE(1);
        return 0;
 }
 
+static void omapfb_sync(struct fb_info *info);
+
 /* Called when the omapfb device is closed. We make sure that any pending
  * gfx DMA operations are ended, before we return. */
 static int omapfb_release(struct fb_info *info, int user)
 {
-       struct omapfb_device *dev = (struct omapfb_device *)info->par;
-       int sync = 0;
-
        DBGENTER(1);
 
-       spin_lock_bh(&dev->gfx.spinlock);
-       if (dev->gfx.f_run)
-               sync = 1;
-       spin_unlock_bh(&dev->gfx.spinlock);
-       if (sync) {
-               gfxdma_sync(&dev->gfx);
-       }
-#ifdef OMAPFB_DBG_FIFO
-       {
-               int i;
-               for (i = 0; i < GFX_FIFO_SIZE; i++)
-                       printk(KERN_INFO "f_run[%d]=%lu\n", i + 1,
-                                       stat.f_run[i]);
-       }
-#endif
+       omapfb_sync(info);
 
        DBGLEAVE(1);
        return 0;
@@ -588,499 +256,111 @@ static int omapfb_release(struct fb_info *info, int user)
  * palette if one is available. For now we support only 16bpp and thus store
  * the entry only to the pseudo palette.
  */
-static int omapfb_setcolreg(u_int regno, u_int red, u_int green,
-                           u_int blue, u_int transp,
-                           struct fb_info *info)
+static int _setcolreg(struct fb_info *info, u_int regno, u_int red, u_int green,
+                       u_int blue, u_int transp, int update_hw_pal)
 {
+       struct omapfb_device *fbdev = (struct omapfb_device *)info->par;
        u16 pal;
        int r = 0;
 
-       DBGENTER(2);
-
-       if (regno >= 16) {
-               r = -1;
-               goto exit;
+       if (regno < 16) {
+               pal = ((red >> 11) << 11) | ((green >> 10) << 5) | (blue >> 11);
+               ((u32 *)(info->pseudo_palette))[regno] = pal;
        }
-       pal = ((red >> 11) << 11) | ((green >> 10) << 5) | (blue >> 11);
-       ((u32 *)(info->pseudo_palette))[regno] = pal;
-
-exit:
-       DBGLEAVE(2);
-       return r;
-}
 
-static int omapfb_suspend(struct device *dev, pm_message_t mesg, u32 level);
-static int omapfb_resume(struct device *dev, u32 level);
+       if (fbdev->ctrl->setcolreg)
+               r = fbdev->ctrl->setcolreg(regno, red, green, blue, transp,
+                                               update_hw_pal);
 
-static int omapfb_blank(int blank, struct fb_info *info)
-{
-       struct omapfb_device *fbdev = (struct omapfb_device *)info->par;
-       int r = 0;
-
-       DBGENTER(1);
-       switch (blank) {
-       case VESA_NO_BLANKING:
-               omapfb_resume(fbdev->dev, 0);
-               break;
-       case VESA_POWERDOWN:
-        omapfb_suspend(fbdev->dev, PMSG_SUSPEND, 0);
-               break;
-       default:
-               r = -EINVAL;
-       }
-
-       DBGLEAVE(1);
        return r;
 }
 
-/* Setup a constant fill DMA transfer. Destination must be elem size aligned. */
-static inline void fill_block(struct omapfb_device *fbdev,
-                             unsigned long dst, unsigned long enumber,
-                             unsigned long height, int esize, u32 color)
-{
-       unsigned long   fidx;
-       int             lch;
-
-       DBGPRINT(2, "dst:%#010x enumber:%d height:%d esize:%d color:%#010x\n",
-                dst, enumber, height, esize, color);
-       fidx = fbdev->fb_info->fix.line_length - enumber * esize + 1;
-       gfxdma_get_lch(&fbdev->gfx, &lch);
-       gfxdma_set_lch_params(lch, dma_elem_type[esize], enumber, height,
-                             0, OMAP_DMA_AMODE_CONSTANT,
-                             dst, OMAP_DMA_AMODE_DOUBLE_IDX);
-       gfxdma_set_lch_index(lch, 0, 0, 1, fidx);
-       gfxdma_set_lch_color(lch, color, OMAP_DMA_CONSTANT_FILL);
-       gfxdma_enqueue(&fbdev->gfx, lch);
-
-       DUMP_DMA_REGS(lch);
-}
-
-/* Fill the specified rectangle with a solid color.
- * ROP_XOR and bpp<8 can't be handled by the DMA hardware.
- * When frame flipping is in effect use the destination frame.
- * We'll make our best to use the largest possible elem size, doing the fill
- * in more parts if alignment requires us to do so.
- */
-static int omapfb_fillrect(void *data)
+static int omapfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
+                           u_int transp, struct fb_info *info)
 {
-       struct omapfb_fillrect_params *par = data;
-       struct omapfb_device *fbdev = (struct omapfb_device *)par->fbi->par;
-
-       int             dx = par->rect.dx, dy = par->rect.dy;
-       int             vxres = par->fbi->var.xres_virtual;
-       int             vyres = par->fbi->var.yres_virtual;
-       int             width = par->rect.width, height = par->rect.height;
-       unsigned long   dst;
-       u32             color;
-       int             bpp;
-       int             enumber, esize;
-       int             r = 0;
+       int r = 0;
 
        DBGENTER(2);
-       bpp = par->fbi->var.bits_per_pixel;
-       /* bpp < 8 is tbd.
-        * We can't do ROP_XOR with DMA
-        * If IRQs are disabled we can't use DMA
-        */
-       if (bpp < 8 || par->rect.rop == ROP_XOR || irqs_disabled()) {
-               r = OMAPFB_FILLRECT_FAILED;
-               goto exit;
-       }
-       /* Clipping */
-       if (!width || !height || dx > vxres || dy > vyres)
-               goto exit;
-       if (dx + width > vxres)
-               width = vxres - dx;
-       if (dy + height > vyres)
-               height = vyres - dy;
-
-       if (bpp == 12)
-               bpp = 16;
-       width = width * bpp / 8;
 
-       dst = fbdev->lcddma_handle + fbdev->dst_frame_org;
-       dst += dx * bpp / 8 + dy * par->fbi->fix.line_length;
-
-       color = par->rect.color;
-       switch (bpp) {
-       case 8:
-               color |= color << 8;
-               /* Fall through */
-       case 16:
-               color |= color << 16;
-       }
+       _setcolreg(info, regno, red, green, blue, transp, 1);
 
-       if ((dst & 3) || width < 4) {
-               if (!(dst & 1) && width > 1) {
-                       esize = 2;
-                       enumber = 1;
-                       width -= 2;
-               } else {
-                       esize = 1;
-                       enumber = 4 - (esize & 3);
-                       if (enumber > width)
-                               enumber = width;
-                       width -= enumber;
-               }
-               fill_block(fbdev, dst, enumber, height, esize, color);
-               dst = (dst + 3) & ~3;
-       }
-       if (width) {
-               enumber = width / 4;
-               fill_block(fbdev, dst, enumber, height, 4, color);
-               dst += enumber * 4;
-               width -= enumber * 4;
-       }
-       if (width) {
-               if (width == 2) {
-                       esize = 2;
-                       enumber = 1;
-               } else {
-                       esize = 1;
-                       enumber = width;
-               }
-               fill_block(fbdev, dst, enumber, height, esize, color);
-       }
-
-exit:
        DBGLEAVE(2);
-       return r;
-}
 
-static int omapfb_schedule_fillrect(struct fb_info *fbi,
-                                    const struct fb_fillrect *rect)
-{
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
-       struct omapfb_request *req;
-
-       if ((req = omapfb_rqueue_alloc_req(&fbdev->rqueue)) == NULL)
-               return -ENOMEM;
-       req->function = omapfb_fillrect;
-       req->par.fillrect.fbi = fbi;
-       req->par.fillrect.rect = *rect;
-       omapfb_rqueue_schedule_req(&fbdev->rqueue, req);
-       return fbdev->rqueue.status ? OMAPFB_GFX_STATUS_CHANGED : 0;
+       return r;
 }
 
-/* Setup a gfx DMA transfer to a rectangular area.
- * A color parameter can be specified for transparent copy.
- * Transfer direction can be setup to use either incremental or decremental
- * addresses.
- * Source and destination must be elem size aligned.
- */
-static inline void transfer_block(struct omapfb_device *fbdev,
-                                 unsigned long src, unsigned long dst,
-                                 unsigned long img_width,
-                                 unsigned long enumber, unsigned long height,
-                                 int esize, u32 trans_color, int flags)
+static int omapfb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
 {
-       s16     eidx;
-       s16     s_fidx, d_fidx;
-       int     lch;
-
-       eidx = 1;
-       s_fidx = img_width - enumber * esize + 1;
-       d_fidx = fbdev->fb_info->fix.line_length - enumber * esize + 1;
-       if (flags & COPY_MODE_REV_DIR) {
-               eidx = -2 * esize + 1;
-               s_fidx = -s_fidx + eidx + 1;
-               d_fidx = -d_fidx + eidx + 1;
-       }
+       int count, index, r;
+       u16 *red, *green, *blue, *transp;
+       u16 trans = 0xffff;
 
-       DBGPRINT(2, "src:%#010x dst:%#010x enumber:%d height:%d "
-                "esize:%d eidx:%d s_fidx:%d d_fidx bg_color:%#010x flags:%d\n",
-                src, dst, enumber, height, esize, eidx, s_fidx, d_fidx,
-                bg_color, flags);
-
-       gfxdma_get_lch(&fbdev->gfx, &lch);
-       gfxdma_set_lch_params(lch, dma_elem_type[esize], enumber, height,
-                             src, OMAP_DMA_AMODE_DOUBLE_IDX,
-                             dst, OMAP_DMA_AMODE_DOUBLE_IDX);
-       gfxdma_set_lch_index(lch, eidx, s_fidx, eidx, d_fidx);
-       if (flags & COPY_MODE_TRANSPARENT)
-               gfxdma_set_lch_color(lch, trans_color,
-                                    OMAP_DMA_TRANSPARENT_COPY);
-       else
-               gfxdma_set_lch_color(lch, 0, OMAP_DMA_COLOR_DIS);
-       gfxdma_enqueue(&fbdev->gfx, lch);
-
-       DUMP_DMA_REGS(lch);
-}
+       red     = cmap->red;
+       green   = cmap->green;
+       blue    = cmap->blue;
+       transp  = cmap->transp;
+       index   = cmap->start;
 
-/* Copy a rectangular area or an image to another rectangular area.
- * A color parameter can be specified for transparent copy.
- * Transfer direction can be setup to use either incremental or decremental
- * addresses.
- * Currently both source and destination area must be entirely contained in
- * frame buffer memory.
- * The largest possible transfer elem size will be determined according to
- * source and destination address alignment, dividing the transfer into more
- * parts if necessary.
- */
-static inline void copy_data(struct omapfb_device *fbdev,
-                            unsigned long src, unsigned long dst,
-                            unsigned long width, unsigned long height,
-                            u32 trans_color, int flags)
-{
-       struct fb_info   *fbi = fbdev->fb_info;
-       int              esize, stripe_esize;
-       int              step, rest, enumber;
-       unsigned long    img_width;
-       static const int esize_arr[] = {4, 1, 2, 1};
-       int              rev;
-
-       /* Check alignment constraints */
-       esize = esize_arr[(src ^ dst) & 3];
-
-       rev = flags & COPY_MODE_REV_DIR;
-       if (rev) {
-               rest = src & (esize - 1);
-               if (rest > width)
-                       rest = width;
-               src -= rest ? rest : esize;
-               dst -= rest ? rest : esize;
-       } else {
-               rest = esize - (src & (esize - 1));
-               if (rest > width)
-                       rest = width;
-       }
-       if (width < esize)
-               rest = width;
-
-       img_width = flags & COPY_MODE_IMAGE ? width : fbi->fix.line_length;
-
-       DBGPRINT(2, "\nrev=%d src=%#010lx dst=%#010lx \n"
-                "esize=%d width=%d rest=%d\n",
-                rev, src, dst, esize, width, rest);
-       if (rest) {
-               /* Transfer this unaligned stripe, so that afterwards
-                * we have both src and dst 16bit or 32bit aligned.
-                */
-               if (rest == 2) {
-                       /* Area body is 32bit aligned */
-                       stripe_esize = 2;
-                       enumber = 1;
-                       step = rev ? -esize : 2;
-                       width -= 2;
-               } else {
-                       stripe_esize = 1;
-                       enumber = rest;
-                       step = rev ? -esize : rest;
-               }
-               transfer_block(fbdev, src, dst, img_width, enumber, height,
-                              stripe_esize, trans_color, flags);
-               src += step;
-               dst += step;
-       }
-       if (width) {
-               /* Transfer area body */
-               enumber = (width & ~(esize - 1)) / esize;
-               transfer_block(fbdev, src, dst, img_width, enumber, height,
-                              esize, trans_color, flags);
-               step = enumber * esize;
-               width -= step;
-               if (rev)
-                       step = -step + esize - width;
-               src += step;
-               dst += step;
-       }
-       if (width) {
-               /* Transfer the remaining unaligned stripe */
-               if (width == 2) {
-                       stripe_esize = 2;
-                       enumber = 1;
-               } else {
-                       stripe_esize = 1;
-                       enumber = width;
-               }
-               transfer_block(fbdev, src, dst, img_width, enumber, height,
-                              stripe_esize, trans_color, flags);
+       for (count = 0; count < cmap->len; count++) {
+               if (transp)
+                       trans = *transp++;
+               r = _setcolreg(info, index++, *red++, *green++, *blue++, trans,
+                               count == cmap->len - 1);
+               if (r != 0)
+                       return r;
        }
 
-       DBGLEAVE(2);
+       return 0;
 }
 
-/* Copy a rectangular area in the frame buffer to another rectangular area.
- * Calculate the source and destination addresses.
- * Transfer direction will be determined taking care of possible area
- * overlapping.
- * Currently both source and destination area must be entirely contained in
- * frame buffer memory, in case of frame flipping source and destination frame
- * respectively.
- */
-static int omapfb_copyarea(void *data)
-{
-       struct omapfb_copyarea_params *par = data;
-       struct omapfb_device *fbdev = (struct omapfb_device *)par->fbi->par;
-
-       int             width = par->area.width, height = par->area.height;
-       int             sx = par->area.sx, sy = par->area.sy;
-       int             dx = par->area.dx, dy = par->area.dy;
-       unsigned long   dst, dst_ofs, src, src_ofs;
-       unsigned long   end_ofs;
-       int             bpp = par->fbi->var.bits_per_pixel;
-       int             flags;
-       int             r = 0;
-
-       DBGENTER(2);
 
-       if (!width || !height)
-               goto exit;
+static void omapfb_update_full_screen(struct omapfb_device *fbdev);
 
-       /* Bpp < 8 is tbd. If IRQs are disabled we can't use DMA */
-       if (bpp < 8 || irqs_disabled()) {
-               r = OMAPFB_COPYAREA_FAILED;
-               goto exit;
-       }
-
-       src = fbdev->lcddma_handle;
-       dst = src;
-       src_ofs = fbdev->src_frame_org + sx * bpp / 8 +
-                 sy * par->fbi->fix.line_length;
-       dst_ofs = fbdev->dst_frame_org + dx * bpp / 8 +
-                 dy * par->fbi->fix.line_length;
-       end_ofs = (height - 1) * par->fbi->fix.line_length + width * bpp / 8;
-       src += src_ofs;
-       dst += dst_ofs;
-
-       DBGPRINT(2, "src:%#010lx dst:%#010lx end_ofs:%#010lx\n",
-                   src, dst, end_ofs);
-
-       /* Currently we support only transfers where both source and destination
-        * area is contained entirely in fbmem. This is because of DMA memory
-        * constraints.
-        */
-       if (src_ofs + end_ofs > fbdev->lcddma_mem_size ||
-           dst_ofs + end_ofs > fbdev->lcddma_mem_size) {
-               r = OMAPFB_COPYAREA_FAILED;
-               goto exit;
-       }
-
-       flags = 0;
-       if (par->area.rev_dir) {
-               flags = COPY_MODE_REV_DIR;
-               src += end_ofs;
-               dst += end_ofs;
-       }
-       if (par->area.trans_color != -1)
-               flags |= COPY_MODE_TRANSPARENT;
-
-       width = width * bpp / 8;
-       copy_data(fbdev, src, dst, width, height, par->area.trans_color, flags);
-exit:
-       DBGLEAVE(2);
-       return r;
-}
-
-static int omapfb_schedule_copyarea(struct fb_info *fbi,
-                                    const struct fb_copyarea_ext *area)
+static int omapfb_blank(int blank, struct fb_info *fbi)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
-       struct omapfb_request *req;
-
-       if ((req = omapfb_rqueue_alloc_req(&fbdev->rqueue)) == NULL)
-               return -ENOMEM;
-       req->function = omapfb_copyarea;
-       req->par.copyarea.fbi = fbi;
-       req->par.copyarea.area = *area;
-       omapfb_rqueue_schedule_req(&fbdev->rqueue, req);
-       return fbdev->rqueue.status ? OMAPFB_GFX_STATUS_CHANGED : 0;
-}
-
-/* Copy an image to a rectangular area in the frame buffer.
- * A color parameter can be specified for transparent copy.
- * Calculate the source and destination addresses.
- * Transfer direction will be determined taking care of possible area
- * overlapping.
- * Currently both source and destination area must be entirely contained in
- * frame buffer memory, in case of frame flipping source and destination frame
- * respectively.
- */
-static int do_imageblit(void *data)
-{
-       struct omapfb_imageblit_params *par = data;
-       struct omapfb_device *fbdev = (struct omapfb_device *)par->fbi->par;
-
-       int             width = par->image.width, height = par->image.height;
-       int             dx = par->image.dx, dy = par->image.dy;
-       const char      *img_data = par->image.data;
-       unsigned long   dst, dst_ofs;
-       unsigned long   dst_end_ofs;
-       int             bpp = par->fbi->var.bits_per_pixel;
-       u32             bg_color;
-       int             r = 0;
-
-       DBGENTER(2);
-
-       if (!width || !height)
-               goto exit;
-
-       /* bpp conversion is not supported, let the default function handle it.
-        * Note that image->depth is either 1 for monochrome image, or equals
-        * bpp of the current video mode, so we can't rely on it.
-        * If IRQs are disabled we can't use DMA.
-        */
-       if (bpp < 8 || par->image.depth != bpp || irqs_disabled()) {
-               r = OMAPFB_IMGBLIT_FAILED;
-               goto exit;
-       }
-
-       dst = fbdev->lcddma_handle;
-       dst_ofs = fbdev->dst_frame_org +
-                 dx * bpp / 8 + dy * par->fbi->fix.line_length;
-       dst_end_ofs = (height - 1) * par->fbi->fix.line_length +
-                 width * bpp / 8;
-       dst += dst_ofs;
-
-       DBGPRINT(2, "data:%#010lx dst:%#010lx dst_end_ofs:%#010lx\n",
-                   img_data, dst, dst_end_ofs);
-
-        /* Check that both source and destination is DMA -able */
-       if (dst_ofs + dst_end_ofs > fbdev->lcddma_mem_size) {
-               r = OMAPFB_IMGBLIT_FAILED;
-               goto exit;
-       }
+       int r = 0;
 
-       if (((unsigned long)img_data < (unsigned long)fbdev->lcddma_base) ||
-           ((unsigned long)img_data + width * bpp / 8 * height >
-            (unsigned long)fbdev->lcddma_base + fbdev->lcddma_mem_size)) {
-               r = OMAPFB_IMGBLIT_FAILED;
-               goto exit;
-       }
+       DBGENTER(1);
 
-       bg_color = par->image.bg_color;
-       if (par->flags & COPY_MODE_TRANSPARENT) {
-               switch (bpp) {
-               case 8:
-                       bg_color |= bg_color << 8;
-                       /* Fall through */
-               case 16:
-                       bg_color |= bg_color << 16;
+       omapfb_rqueue_lock(fbdev);
+       switch (blank) {
+       case VESA_NO_BLANKING:
+               if (fbdev->state == OMAPFB_SUSPENDED) {
+                       fbdev->panel->enable();
+                       if (fbdev->ctrl->resume)
+                               fbdev->ctrl->resume();
+                       fbdev->state = OMAPFB_ACTIVE;
+                       if (fbdev->ctrl->get_update_mode() ==
+                                       OMAPFB_MANUAL_UPDATE)
+                               omapfb_update_full_screen(fbdev);
+               }
+               break;
+       case VESA_POWERDOWN:
+               if (fbdev->state == OMAPFB_ACTIVE) {
+                       if (fbdev->ctrl->suspend)
+                               fbdev->ctrl->suspend();
+                       fbdev->panel->disable();
+                       fbdev->state = OMAPFB_SUSPENDED;
                }
+               break;
+       default:
+               r = -EINVAL;
        }
+       omapfb_rqueue_unlock(fbdev);
 
-       width = width * bpp / 8;
-       copy_data(fbdev, (unsigned long)img_data, dst, width, height,
-                 bg_color, par->flags | COPY_MODE_IMAGE);
-exit:
-       DBGLEAVE(2);
+       DBGLEAVE(1);
        return r;
 }
 
-static int omapfb_schedule_imageblit(struct fb_info *fbi,
-                                     const struct fb_image *image, int flags)
+static void omapfb_sync(struct fb_info *fbi)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
-       struct omapfb_request *req;
-
-       if ((req = omapfb_rqueue_alloc_req(&fbdev->rqueue)) == NULL)
-               return -ENOMEM;
-       req->function = do_imageblit;
-       req->par.imageblit.fbi = fbi;
-       req->par.imageblit.image = *image;
-       req->par.imageblit.flags = flags;
-       omapfb_rqueue_schedule_req(&fbdev->rqueue, req);
-       return fbdev->rqueue.status ? OMAPFB_GFX_STATUS_CHANGED : 0;
+
+       omapfb_rqueue_lock(fbdev);
+       if (fbdev->ctrl->sync)
+               fbdev->ctrl->sync();
+       omapfb_rqueue_unlock(fbdev);
 }
 
 /* Set fb_info.fix fields and also updates fbdev.
@@ -1091,10 +371,9 @@ static void set_fb_fix(struct omapfb_device *fbdev)
        struct fb_info           *fbi = fbdev->fb_info;
        struct fb_fix_screeninfo *fix = &fbi->fix;
        struct fb_var_screeninfo *var = &fbi->var;
-       int frame_size;
 
        strncpy(fix->id, OMAPFB_DRIVER, sizeof(fix->id));
-       fix->type               = FB_TYPE_PACKED_PIXELS;
+       fix->type = FB_TYPE_PACKED_PIXELS;
        switch (var->bits_per_pixel) {
        case 16:
                fix->visual = FB_VISUAL_TRUECOLOR;
@@ -1108,20 +387,8 @@ static void set_fb_fix(struct omapfb_device *fbdev)
        }
        fix->accel              = FB_ACCEL_OMAP1610;
        fix->line_length        = var->xres_virtual * var->bits_per_pixel / 8;
-       fix->smem_len           = fbdev->lcddma_mem_size - fbdev->frame0_org;
-       fix->smem_start         = fbdev->lcddma_handle + fbdev->frame0_org;
-
-       /* Set the second frame buffer offset for flipping if there is
-        * room for it. */
-       frame_size = fix->line_length * var->yres;
-       fbdev->frame1_org = fbdev->frame0_org + frame_size;
-       if (fbdev->frame1_org + frame_size > fbdev->lcddma_mem_size)
-               fbdev->frame1_org = 0;
-       fbdev->vis_frame_org = fbdev->src_frame_org = fbdev->dst_frame_org =
-               fbdev->frame0_org;
-
-       fbdev->view_org = var->yoffset * fix->line_length +
-                         var->xoffset * var->bits_per_pixel / 8;
+       fix->smem_len           = fbdev->vram_size;
+       fix->smem_start         = fbdev->vram_phys_base;
 }
 
 /* Check the values in var against our capabilities and in case of out of
@@ -1133,30 +400,41 @@ static int set_fb_var(struct omapfb_device *fbdev,
        int             bpp;
        unsigned long   max_frame_size;
        unsigned long   line_size;
+       struct lcd_panel *panel = fbdev->panel;
+
+       bpp = var->bits_per_pixel = panel->bpp;
+
+       switch (bpp) {
+       case 16:
+               fbdev->color_mode = OMAPFB_COLOR_RGB565;
+               break;
+       case 8:
+               fbdev->color_mode = OMAPFB_COLOR_CLUT_8BPP;
+               break;
+       default:
+               /* FIXME: other BPPs not yet supported */
+               return -EINVAL;
+       }
 
-       bpp = var->bits_per_pixel = fbdev->panel->video_mode->bpp;
-       if (bpp != 16)
-               /* Not yet supported */
-               return -1;
        switch (var->rotate) {
        case 0:
        case 180:
-               var->xres = fbdev->panel->video_mode->x_res;
-               var->yres = fbdev->panel->video_mode->y_res;
+               var->xres = fbdev->panel->x_res;
+               var->yres = fbdev->panel->y_res;
                break;
        case 90:
        case 270:
-               var->xres = fbdev->panel->video_mode->y_res;
-               var->yres = fbdev->panel->video_mode->x_res;
+               var->xres = fbdev->panel->y_res;
+               var->yres = fbdev->panel->x_res;
                break;
        default:
-               return -1;
+               return -EINVAL;
        }
        if (var->xres_virtual < var->xres)
                var->xres_virtual = var->xres;
        if (var->yres_virtual < var->yres)
                var->yres_virtual = var->yres;
-       max_frame_size = fbdev->lcddma_mem_size - fbdev->frame0_org;
+       max_frame_size = fbdev->vram_size;
        line_size = var->xres_virtual * bpp / 8;
        if (line_size * var->yres_virtual > max_frame_size) {
                /* Try to keep yres_virtual first */
@@ -1184,15 +462,16 @@ static int set_fb_var(struct omapfb_device *fbdev,
        var->grayscale          = 0;
        var->nonstd             = 0;
 
-       /* TODO: video timing params, sync */
-       var->pixclock           = -1;
-       var->left_margin        = -1;
-       var->right_margin       = -1;
-       var->upper_margin       = -1;
-       var->lower_margin       = -1;
-       var->hsync_len          = -1;
-       var->vsync_len          = -1;
+       /* pixclock in ps, the rest in pixclock */
+       var->pixclock           = 10000000 / (panel->pixel_clock / 100);
+       var->left_margin        = panel->hfp;
+       var->right_margin       = panel->hbp;
+       var->upper_margin       = panel->vfp;
+       var->lower_margin       = panel->vbp;
+       var->hsync_len          = panel->hsw;
+       var->vsync_len          = panel->vsw;
 
+       /* TODO: get these from panel->config */
        var->vmode              = FB_VMODE_NONINTERLACED;
        var->sync               = 0;
 
@@ -1214,7 +493,6 @@ static void omapfb_rotate(struct fb_info *fbi, int rotate)
                if (set_fb_var(fbdev, &new_var) == 0 &&
                    memcmp(&new_var, &fbi->var, sizeof(new_var))) {
                        memcpy(&fbi->var, &new_var, sizeof(new_var));
-                       set_fb_fix(fbdev);
                        ctrl_change_mode(fbdev);
                }
        }
@@ -1242,7 +520,6 @@ static int omapfb_pan_display(struct fb_var_screeninfo *var,
                        r = -EINVAL;
                else {
                        memcpy(&fbi->var, &new_var, sizeof(new_var));
-                       set_fb_fix(fbdev);
                        ctrl_change_mode(fbdev);
                }
        }
@@ -1252,9 +529,8 @@ static int omapfb_pan_display(struct fb_var_screeninfo *var,
 }
 
 /* Set mirror to vertical axis and switch to the new mode. */
-static int omapfb_mirror(struct fb_info *fbi, int mirror)
+static int omapfb_mirror(struct omapfb_device *fbdev, int mirror)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
        int r = 0;
 
        DBGENTER(1);
@@ -1264,33 +540,7 @@ static int omapfb_mirror(struct fb_info *fbi, int mirror)
                r = -EINVAL;
        else if (mirror != fbdev->mirror) {
                fbdev->mirror = mirror;
-               ctrl_change_mode(fbdev);
-       }
-
-       DBGLEAVE(1);
-       return r;
-}
-
-/* Set x,y scale and switch to the new mode */
-static int omapfb_scale(struct fb_info *fbi,
-                     unsigned int xscale, unsigned int yscale)
-{
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
-       int r = 0;
-
-       DBGENTER(1);
-
-       if (cpu_is_omap1510())
-               r = -EINVAL;
-       else if (xscale != fbdev->xscale || yscale != fbdev->yscale) {
-               if (fbi->var.xres * xscale > fbi->var.xres_virtual ||
-                   fbi->var.yres * yscale > fbi->var.yres_virtual)
-                       r = -EINVAL;
-               else {
-                       fbdev->xscale = xscale;
-                       fbdev->yscale = yscale;
-                       ctrl_change_mode(fbdev);
-               }
+               r = ctrl_change_mode(fbdev);
        }
 
        DBGLEAVE(1);
@@ -1318,114 +568,122 @@ static int omapfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi)
  */
 static int omapfb_set_par(struct fb_info *fbi)
 {
+       int r;
        struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
 
        DBGENTER(1);
 
        set_fb_fix(fbdev);
-       ctrl_change_mode(fbdev);
+       r = ctrl_change_mode(fbdev);
 
        DBGLEAVE(1);
-       return 0;
+       return r;
 }
 
-/* Frame flipping support. Assign the primary or the secondary frame to the
- * visible frame, as well as the source and destination frames for graphics
- * operations like rectangle fill and area copy. Flipping is only possible
- * if we have enough video memory for the secondary frame.
- */
-static int omapfb_select_vis_frame(struct fb_info *fbi, unsigned int vis_idx)
+static int omapfb_update_win(struct omapfb_device *fbdev,
+                               struct omapfb_update_window *win)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
+       struct fb_var_screeninfo *var = &fbdev->fb_info->var;
+       int ret;
 
-       if (vis_idx > 1 || (vis_idx == 1 && !fbdev->frame1_org))
+       if (win->x >= var->xres || win->y >= var->yres)
                return -EINVAL;
-       fbdev->vis_frame_org = vis_idx ? fbdev->frame1_org : fbdev->frame0_org;
-       ctrl_change_mode(fbdev);
-       return 0;
+
+       if (!fbdev->ctrl->update_window ||
+           fbdev->ctrl->get_update_mode() != OMAPFB_MANUAL_UPDATE)
+               return -ENODEV;
+
+       if (win->x + win->width >= var->xres)
+               win->width = var->xres - win->x;
+       if (win->y + win->height >= var->yres)
+               win->height = var->yres - win->y;
+       if (!win->width || !win->height)
+               return 0;
+
+       omapfb_rqueue_lock(fbdev);
+       ret = fbdev->ctrl->update_window(win, NULL, 0);
+       omapfb_rqueue_unlock(fbdev);
+
+       return ret;
 }
 
-static int omapfb_select_src_frame(struct fb_info *fbi, unsigned int src_idx)
+static void omapfb_update_full_screen(struct omapfb_device *fbdev)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
+       struct omapfb_update_window win;
 
-       if (src_idx > 1 || (src_idx == 1 && !fbdev->frame1_org))
-               return -EINVAL;
-       fbdev->src_frame_org = src_idx ? fbdev->frame1_org : fbdev->frame0_org;
-       return 0;
+       win.x = 0;
+       win.y = 0;
+       win.width = fbdev->panel->x_res;
+       win.height = fbdev->panel->y_res;
+       win.format = 0;
+
+       omapfb_rqueue_lock(fbdev);
+       fbdev->ctrl->update_window(&win, NULL, 0);
+       omapfb_rqueue_unlock(fbdev);
 }
 
-static int omapfb_select_dst_frame(struct fb_info *fbi, unsigned int dst_idx)
+static int omapfb_setup_plane(struct omapfb_device *fbdev,
+                             struct omapfb_setup_plane *sp)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
+       int r;
 
-       if (dst_idx > 1 || (dst_idx == 1 && !fbdev->frame1_org))
-               return -EINVAL;
-       fbdev->dst_frame_org = dst_idx ? fbdev->frame1_org : fbdev->frame0_org;
-       DBGPRINT(1, "dst_frame_org=%#010x\n", fbdev->dst_frame_org);
-       return 0;
+       omapfb_rqueue_lock(fbdev);
+       r = fbdev->ctrl->setup_plane(sp->plane, sp->channel_out, sp->offset,
+                                sp->width, sp->pos_x, sp->pos_y, sp->width,
+                                sp->height, sp->color_mode);
+       omapfb_rqueue_unlock(fbdev);
+
+       return r;
 }
 
-/* Get the address of the primary and secondary frames */
-static int omapfb_get_frame_offset(struct fb_info *fbi,
-                                  struct fb_frame_offset *fb_offset)
+static int omapfb_enable_plane(struct omapfb_device *fbdev, int plane,
+                               int enable)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
+       int r;
 
-       if (fb_offset->idx > 1)
-               return -EINVAL;
-       if (fb_offset->idx == 1 && !fbdev->frame1_org)
-               return -EINVAL;
-       fb_offset->offset = fb_offset->idx ? fbdev->frame1_org :
-               fbdev->frame0_org;
-       return 0;
+       omapfb_rqueue_lock(fbdev);
+       r = fbdev->ctrl->enable_plane(plane, enable);
+       omapfb_rqueue_unlock(fbdev);
+
+       return r;
 }
 
-static int omapfb_update_window(void *data)
+static int omapfb_set_color_key(struct omapfb_device *fbdev,
+                               struct omapfb_color_key *ck)
 {
-       struct omapfb_update_window_params *par = data;
-       struct omapfb_device *fbdev = (struct omapfb_device *)par->fbi->par;
+       int r;
 
-       gfxdma_sync(&fbdev->gfx);
-       if (fbdev->ctrl->update_window(fbdev, &par->win))
-               return OMAPFB_UPDATE_FAILED;
-       else
-               return 0;
+       if (!fbdev->ctrl->set_color_key)
+               return -ENODEV;
+
+       omapfb_rqueue_lock(fbdev);
+       r = fbdev->ctrl->set_color_key(ck);
+       omapfb_rqueue_unlock(fbdev);
+
+       return r;
 }
 
-static int omapfb_schedule_update_window(struct fb_info *fbi,
-                                        struct fb_update_window *win)
+static int omapfb_set_update_mode(struct omapfb_device *fbdev,
+                                  enum omapfb_update_mode mode)
 {
-       struct omapfb_device *fbdev = (struct omapfb_device *)fbi->par;
-       struct omapfb_request *req;
+       int r;
 
-       if (!fbdev->ctrl->update_window ||
-           win->x >= fbi->var.xres || win->y >= fbi->var.yres)
-               return -EINVAL;
-       if (win->x + win->width >= fbi->var.xres)
-               win->width = fbi->var.xres - win->x;
-       if (win->y + win->height >= fbi->var.yres)
-               win->height = fbi->var.yres - win->y;
-       if (!win->width || !win->height)
-               return 0;
-       if ((req = omapfb_rqueue_alloc_req(&fbdev->rqueue)) == NULL)
-               return -ENOMEM;
-       req->function = omapfb_update_window;
-       req->par.update_window.fbi = fbi;
-       req->par.update_window.win = *win;
-       omapfb_rqueue_schedule_req(&fbdev->rqueue, req);
-       return fbdev->rqueue.status ? OMAPFB_GFX_STATUS_CHANGED : 0;
+       omapfb_rqueue_lock(fbdev);
+       r = fbdev->ctrl->set_update_mode(mode);
+       omapfb_rqueue_unlock(fbdev);
+
+       return r;
 }
 
-static int omapfb_schedule_full_update(struct fb_info *fbi)
+static enum omapfb_update_mode omapfb_get_update_mode(struct omapfb_device *fbdev)
 {
-       struct fb_update_window win;
+       int r;
 
-       win.x = 0;
-       win.y = 0;
-       win.width = fbi->var.xres;
-       win.height = fbi->var.yres;
-       return omapfb_schedule_update_window(fbi, &win);
+       omapfb_rqueue_lock(fbdev);
+       r = fbdev->ctrl->get_update_mode();
+       omapfb_rqueue_unlock(fbdev);
+
+       return r;
 }
 
 static unsigned long omapfb_get_caps(struct fb_info *fbi)
@@ -1434,15 +692,29 @@ static unsigned long omapfb_get_caps(struct fb_info *fbi)
        unsigned long caps;
 
        caps = 0;
-       caps |= fbdev->panel->get_caps(fbdev->panel);
-       caps |= fbdev->ctrl->get_caps(fbdev);
+       caps |= fbdev->panel->get_caps();
+       caps |= fbdev->ctrl->get_caps();
        return caps;
 }
 
-static int omapfb_set_update_mode(struct omapfb_device *fbdev,
-                                 enum fb_update_mode new_mode);
+/* For lcd testing */
+void omapfb_write_first_pixel(struct omapfb_device *fbdev, u16 pixval)
+{
+       omapfb_rqueue_lock(fbdev);
+       *(u16 *)fbdev->vram_virt_base = pixval;
+       if (fbdev->ctrl->get_update_mode() == OMAPFB_MANUAL_UPDATE) {
+               struct omapfb_update_window win;
 
-static enum fb_update_mode omapfb_get_update_mode(struct omapfb_device *fbdev);
+               win.x = 0;
+               win.y = 0;
+               win.width = 1;
+               win.height = 1;
+               win.format = 0;
+               fbdev->ctrl->update_window(&win, NULL, 0);
+       }
+       omapfb_rqueue_unlock(fbdev);
+}
+EXPORT_SYMBOL(omapfb_write_first_pixel);
 
 /* Ioctl interface. Part of the kernel mode frame buffer API is duplicated
  * here to be accessible by user mode code. In addition transparent copy
@@ -1456,19 +728,15 @@ static int omapfb_ioctl(struct inode *inode, struct file *file,
        struct omapfb_device    *fbdev = (struct omapfb_device *)fbi->par;
        struct fb_ops           *ops = fbi->fbops;
        union {
-               struct fb_fillrect      rect;
-               struct fb_copyarea_ext  area;
-               struct fb_image         image;
-               struct fb_scale         scale;
-               struct fb_frame_offset  frame_offset;
-               struct fb_update_window update_window;
-               unsigned int            frame_idx;
-               unsigned int            mirror;
-               enum fb_update_mode     update_mode;
+               struct omapfb_update_window     update_window;
+               struct omapfb_setup_plane       setup_plane;
+               struct omapfb_enable_plane      enable_plane;
+               struct omapfb_color_key         color_key;
+               enum omapfb_update_mode         update_mode;
                unsigned long           caps;
-               unsigned long           rqueue_status;
+               unsigned int            mirror;
        } p;
-       int                     r = 0;
+       int r = 0;
 
        DBGENTER(2);
 
@@ -1476,85 +744,17 @@ static int omapfb_ioctl(struct inode *inode, struct file *file,
        DBGPRINT(2, "cmd=%010x\n", cmd);
        switch (cmd)
        {
-       case OMAPFB_FILLRECT:
-               if (copy_from_user(&p.rect, (void __user *)arg, sizeof(p.rect)))
-                       r = -EFAULT;
-               else
-                       r = omapfb_schedule_fillrect(fbi, &p.rect);
-               break;
-       case OMAPFB_COPYAREA:
-               if (copy_from_user(&p.area, (void __user *)arg, sizeof(p.area)))
-                       r = -EFAULT;
-               else
-                       r = omapfb_schedule_copyarea(fbi, &p.area);
-               break;
-       case OMAPFB_IMAGEBLIT:
-               if (copy_from_user(&p.image, (void __user *)arg,
-                                               sizeof(p.image)))
-                       r = -EFAULT;
-               else
-                       r = omapfb_schedule_imageblit(fbi, &p.image, 0);
-               break;
-       case OMAPFB_TRANSPARENT_BLIT:
-               if (copy_from_user(&p.image, (void __user *)arg,
-                                               sizeof(p.image)))
-                       r = -EFAULT;
-               else
-                       r = omapfb_schedule_imageblit(fbi, &p.image,
-                                                     COPY_MODE_TRANSPARENT);
-               break;
        case OMAPFB_MIRROR:
                if (get_user(p.mirror, (int __user *)arg))
                        r = -EFAULT;
                else
-                       omapfb_mirror(fbi, p.mirror);
-               break;
-       case OMAPFB_SCALE:
-               if (copy_from_user(&p.scale, (void __user *)arg,
-                                               sizeof(p.scale)))
-                       r = -EFAULT;
-               else
-                       r = omapfb_scale(fbi, p.scale.xscale, p.scale.yscale);
-               break;
-       case OMAPFB_SELECT_VIS_FRAME:
-               if (get_user(p.frame_idx, (int __user *)arg))
-                       r = -EFAULT;
-               else
-                       r = omapfb_select_vis_frame(fbi, p.frame_idx);
-               break;
-       case OMAPFB_SELECT_SRC_FRAME:
-               if (get_user(p.frame_idx, (int __user *)arg))
-                       r = - EFAULT;
-               else
-                       r = omapfb_select_src_frame(fbi, p.frame_idx);
-               break;
-       case OMAPFB_SELECT_DST_FRAME:
-               if (get_user(p.frame_idx, (int __user *)arg))
-                       r = -EFAULT;
-               else
-                       r = omapfb_select_dst_frame(fbi, p.frame_idx);
-               break;
-       case OMAPFB_GET_FRAME_OFFSET:
-               if (copy_from_user(&p.frame_offset, (void __user *)arg,
-                                  sizeof(p.frame_offset)))
-                       r = -EFAULT;
-               else {
-                       r = omapfb_get_frame_offset(fbi, &p.frame_offset);
-                       if (copy_to_user((void __user *)arg, &p.frame_offset,
-                                        sizeof(p.frame_offset)))
-                               r = -EFAULT;
-               }
+                       omapfb_mirror(fbdev, p.mirror);
                break;
        case OMAPFB_SYNC_GFX:
-               omapfb_rqueue_sync(&fbdev->rqueue);
+               omapfb_sync(fbi);
                break;
        case OMAPFB_VSYNC:
                break;
-       case OMAPFB_LATE_ACTIVATE:
-               printk(KERN_WARNING OMAPFB_DRIVER
-                       ": LATE_ACTIVATE obsoleted by SET_UPDATE_MODE.\n");
-//             r = -EINVAL;
-               break;
        case OMAPFB_SET_UPDATE_MODE:
                if (get_user(p.update_mode, (int __user *)arg))
                        r = -EFAULT;
@@ -1563,7 +763,8 @@ static int omapfb_ioctl(struct inode *inode, struct file *file,
                break;
        case OMAPFB_GET_UPDATE_MODE:
                p.update_mode = omapfb_get_update_mode(fbdev);
-               if (put_user(p.update_mode, (enum fb_update_mode __user *)arg))
+               if (put_user(p.update_mode,
+                                       (enum omapfb_update_mode __user *)arg))
                        r = -EFAULT;
                break;
        case OMAPFB_UPDATE_WINDOW:
@@ -1571,18 +772,65 @@ static int omapfb_ioctl(struct inode *inode, struct file *file,
                                   sizeof(p.update_window)))
                        r = -EFAULT;
                else
-                       r = omapfb_schedule_update_window(fbi, &p.update_window);
+                       r = omapfb_update_win(fbdev, &p.update_window);
+               break;
+       case OMAPFB_SETUP_PLANE:
+               if (copy_from_user(&p.setup_plane, (void __user *)arg,
+                                  sizeof(p.setup_plane)))
+                       r = -EFAULT;
+               else
+                       r = omapfb_setup_plane(fbdev, &p.setup_plane);
+               break;
+       case OMAPFB_ENABLE_PLANE:
+               if (copy_from_user(&p.enable_plane, (void __user *)arg,
+                                  sizeof(p.enable_plane)))
+                       r = -EFAULT;
+               else
+                       r = omapfb_enable_plane(fbdev,
+                               p.enable_plane.plane, p.enable_plane.enable);
+               break;
+       case OMAPFB_SET_COLOR_KEY:
+               if (copy_from_user(&p.color_key, (void __user *)arg,
+                                  sizeof(p.color_key)))
+                       r = -EFAULT;
+               else
+                       r = omapfb_set_color_key(fbdev, &p.color_key);
                break;
        case OMAPFB_GET_CAPS:
                p.caps = omapfb_get_caps(fbi);
                if (put_user(p.caps, (unsigned long __user *)arg))
                        r = -EFAULT;
                break;
-       case OMAPFB_GET_GFX_STATUS:
-               omapfb_rqueue_reset(&fbdev->rqueue, &p.rqueue_status);
-               if (put_user(p.rqueue_status, (unsigned long *)arg))
-                       r = -EFAULT;
-               break;
+       case OMAPFB_LCD_TEST:
+               {
+                       int test_num;
+
+                       if (get_user(test_num, (int __user *)arg)) {
+                               r = -EFAULT;
+                               break;
+                       }
+                       if (!fbdev->panel->run_test) {
+                               r = -EINVAL;
+                               break;
+                       }
+                       r = fbdev->panel->run_test(test_num);
+                       break;
+               }
+       case OMAPFB_CTRL_TEST:
+               {
+                       int test_num;
+
+                       if (get_user(test_num, (int __user *)arg)) {
+                               r = -EFAULT;
+                               break;
+                       }
+                       if (!fbdev->ctrl->run_test) {
+                               r = -EINVAL;
+                               break;
+                       }
+                       r = fbdev->ctrl->run_test(test_num);
+                       break;
+               }
        default:
                r = -EINVAL;
        }
@@ -1599,6 +847,7 @@ static struct fb_ops omapfb_ops = {
        .fb_open        = omapfb_open,
        .fb_release     = omapfb_release,
        .fb_setcolreg   = omapfb_setcolreg,
+       .fb_setcmap     = omapfb_setcmap,
        .fb_fillrect    = cfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
@@ -1613,7 +862,7 @@ static struct fb_ops omapfb_ops = {
 
 /*
  * ---------------------------------------------------------------------------
- * Sysfs interface 
+ * Sysfs interface
  * ---------------------------------------------------------------------------
  */
 /* omapfbX sysfs entries */
@@ -1646,27 +895,31 @@ static DEVICE_ATTR(caps_num, 0444, omapfb_show_caps_num, NULL);
 static DEVICE_ATTR(caps_text, 0444, omapfb_show_caps_text, NULL);
 
 /* panel sysfs entries */
-static ssize_t omapfb_show_panel_name(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t omapfb_show_panel_name(struct device *dev,
+                                     struct device_attribute *attr, char *buf)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
 
        return snprintf(buf, PAGE_SIZE, "%s\n", fbdev->panel->name);
 }
 
-static ssize_t omapfb_show_bklight_level(struct device *dev,struct device_attribute *attr, char *buf)
+static ssize_t omapfb_show_bklight_level(struct device *dev,
+                                        struct device_attribute *attr,
+                                        char *buf)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
        int r;
 
        if (fbdev->panel->get_bklight_level) {
                r = snprintf(buf, PAGE_SIZE, "%d\n",
-                            fbdev->panel->get_bklight_level(fbdev->panel));
+                            fbdev->panel->get_bklight_level());
        } else
                r = -ENODEV;
        return r;
 }
 
-static ssize_t omapfb_store_bklight_level(struct device *dev, struct device_attribute *attr,
+static ssize_t omapfb_store_bklight_level(struct device *dev,
+                                         struct device_attribute *attr,
                                          const char *buf, size_t size)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
@@ -1676,8 +929,7 @@ static ssize_t omapfb_store_bklight_level(struct device *dev, struct device_attr
                unsigned int level;
 
                if (sscanf(buf, "%10d", &level) == 1) {
-                       r = fbdev->panel->set_bklight_level(fbdev->panel,
-                                                           level);
+                       r = fbdev->panel->set_bklight_level(level);
                } else
                        r = -EINVAL;
        } else
@@ -1685,14 +937,15 @@ static ssize_t omapfb_store_bklight_level(struct device *dev, struct device_attr
        return r ? r : size;
 }
 
-static ssize_t omapfb_show_bklight_max(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t omapfb_show_bklight_max(struct device *dev,
+                                      struct device_attribute *attr, char *buf)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
        int r;
 
        if (fbdev->panel->get_bklight_level) {
                r = snprintf(buf, PAGE_SIZE, "%d\n",
-                            fbdev->panel->get_bklight_max(fbdev->panel));
+                            fbdev->panel->get_bklight_max());
        } else
                r = -ENODEV;
        return r;
@@ -1717,7 +970,8 @@ static struct attribute_group panel_attr_grp = {
 };
 
 /* ctrl sysfs entries */
-static ssize_t omapfb_show_ctrl_name(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t omapfb_show_ctrl_name(struct device *dev,
+                                    struct device_attribute *attr, char *buf)
 {
        struct omapfb_device *fbdev = (struct omapfb_device *)dev->driver_data;
 
@@ -1743,7 +997,7 @@ static int omapfb_register_sysfs(struct omapfb_device *fbdev)
 
        if ((r = device_create_file(fbdev->dev, &dev_attr_caps_num)))
                goto fail0;
-       
+
        if ((r = device_create_file(fbdev->dev, &dev_attr_caps_text)))
                goto fail1;
 
@@ -1761,7 +1015,7 @@ fail2:
 fail1:
        device_remove_file(fbdev->dev, &dev_attr_caps_num);
 fail0:
-       PRNERR("unable to register sysfs interface\n");
+       pr_err("unable to register sysfs interface\n");
        return r;
 }
 
@@ -1789,11 +1043,12 @@ static int fbinfo_init(struct omapfb_device *fbdev)
 
        DBGENTER(1);
 
-       BUG_ON(!fbdev->lcddma_base);
+       BUG_ON(!fbdev->vram_virt_base);
+
        info->fbops = &omapfb_ops;
        info->flags = FBINFO_FLAG_DEFAULT;
-       info->screen_base = (char __iomem *) fbdev->lcddma_base
-                               + fbdev->frame0_org;
+       info->screen_base = (char __iomem *)fbdev->vram_virt_base;
+
        info->pseudo_palette = fbdev->pseudo_palette;
 
        var->accel_flags  = def_accel ? FB_ACCELF_TEXT : 0;
@@ -1808,7 +1063,7 @@ static int fbinfo_init(struct omapfb_device *fbdev)
 
        r = fb_alloc_cmap(&info->cmap, 16, 0);
        if (r != 0)
-               PRNERR("unable to allocate color map memory\n");
+               pr_err("unable to allocate color map memory\n");
 
        DBGLEAVE(1);
        return r;
@@ -1832,22 +1087,18 @@ static void omapfb_free_resources(struct omapfb_device *fbdev, int state)
        switch (state) {
        case OMAPFB_ACTIVE:
                unregister_framebuffer(fbdev->fb_info);
-       case 8:
-               omapfb_unregister_sysfs(fbdev);
-       case 7:
-               omapfb_set_update_mode(fbdev, FB_UPDATE_DISABLED);
        case 6:
-               fbdev->panel->disable(fbdev->panel);
+               omapfb_unregister_sysfs(fbdev);
+               omapfb_set_update_mode(fbdev, OMAPFB_UPDATE_DISABLED);
        case 5:
-               gfxdma_cleanup(&fbdev->gfx);
+               fbdev->panel->disable();
        case 4:
                fbinfo_cleanup(fbdev);
        case 3:
                ctrl_cleanup(fbdev);
        case 2:
-               fbdev->panel->cleanup(fbdev->panel);
+               fbdev->panel->cleanup();
        case 1:
-               omapfb_rqueue_cleanup(&fbdev->rqueue);
                dev_set_drvdata(fbdev->dev, NULL);
                framebuffer_release(fbdev->fb_info);
        case 0:
@@ -1860,32 +1111,16 @@ static void omapfb_free_resources(struct omapfb_device *fbdev, int state)
 
 static int omapfb_find_panel(struct omapfb_device *fbdev)
 {
-       const struct omap_lcd_config *cfg;
+       const struct omap_lcd_config *conf;
        char name[17];
        int i;
 
+       conf = (struct omap_lcd_config *)fbdev->dev->platform_data;
        fbdev->panel = NULL;
-       cfg = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
-       if (cfg == NULL) {
-               const char *def_name = NULL;
-
-               if (machine_is_omap_h2())
-                       def_name = "h2";
-               if (machine_is_omap_h3())
-                       def_name = "h3";
-               if (machine_is_omap_perseus2())
-                       def_name = "p2";
-               if (machine_is_omap_osk())
-                       def_name = "osk";
-               if (machine_is_omap_innovator() && cpu_is_omap1610())
-                       def_name = "inn1610";
-               if (machine_is_omap_innovator() && cpu_is_omap1510())
-                       def_name = "inn1510";
-               if (def_name == NULL)
-                       return -1;
-               strncpy(name, def_name, sizeof(name) - 1);
-       } else
-               strncpy(name, cfg->panel_name, sizeof(name) - 1);
+       if (conf == NULL)
+               return -1;
+
+       strncpy(name, conf->panel_name, sizeof(name) - 1);
        name[sizeof(name) - 1] = 0;
        for (i = 0; i < ARRAY_SIZE(panels); i++) {
                if (strcmp(panels[i]->name, name) == 0) {
@@ -1893,58 +1128,59 @@ static int omapfb_find_panel(struct omapfb_device *fbdev)
                        break;
                }
        }
+
        if (fbdev->panel == NULL)
                return -1;
-       return 0;
+
+       return 0;
 }
 
 static int omapfb_find_ctrl(struct omapfb_device *fbdev)
 {
-       const struct omap_lcd_config *cfg;
+       struct omap_lcd_config *conf;
        char name[17];
        int i;
 
+       conf = (struct omap_lcd_config *)fbdev->dev->platform_data;
+
        fbdev->ctrl = NULL;
-       cfg = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
-       if (cfg == NULL) {
-               strcpy(name, "internal");
-       } else
-               strncpy(name, cfg->ctrl_name, sizeof(name) - 1);
-       name[sizeof(name) - 1] = 0;
+       if (conf == NULL)
+               return -1;
+
+       strncpy(name, conf->ctrl_name, sizeof(name) - 1);
+       name[sizeof(name) - 1] = '\0';
+
+       if (strcmp(name, "internal") == 0) {
+               fbdev->ctrl = fbdev->int_ctrl;
+               return 0;
+       }
+
        for (i = 0; i < ARRAY_SIZE(ctrls); i++) {
                if (strcmp(ctrls[i]->name, name) == 0) {
                        fbdev->ctrl = ctrls[i];
                        break;
                }
        }
+
        if (fbdev->ctrl == NULL)
                return -1;
+
        return 0;
 }
 
 static void check_required_callbacks(struct omapfb_device *fbdev)
 {
-#define _C(x) (fbdev->ctrl->x)
-#define _P(x) (fbdev->panel->x)
+#define _C(x) (fbdev->ctrl->x != NULL)
+#define _P(x) (fbdev->panel->x != NULL)
+       BUG_ON(fbdev->ctrl == NULL || fbdev->panel == NULL);
        BUG_ON(!(_C(init) && _C(cleanup) && _C(get_caps) &&
-                _C(get_mem_layout) && _C(set_update_mode) && _C(change_mode) &&
+                _C(set_update_mode) && _C(setup_plane) && _C(enable_plane) &&
                 _P(init) && _P(cleanup) && _P(enable) && _P(disable) &&
                 _P(get_caps)));
 #undef _P
 #undef _C
 }
 
-static int omapfb_set_update_mode(struct omapfb_device *fbdev,
-                                 enum fb_update_mode mode)
-{
-       return fbdev->ctrl->set_update_mode(fbdev, mode);
-}
-
-static enum fb_update_mode omapfb_get_update_mode(struct omapfb_device *fbdev)
-{
-       return fbdev->ctrl->get_update_mode(fbdev);
-}
-
 /* Called by LDM binding to probe and attach a new device.
  * Initialization sequence:
  *   1. allocate system fb_info structure
@@ -1963,7 +1199,9 @@ static int omapfb_probe(struct device *dev)
        struct omapfb_device    *fbdev = NULL;
        struct fb_info          *fbi;
        int                     init_state;
-       int                     r = 0;
+       unsigned long           phz, hhz, vhz;
+       struct lcd_panel        *panel;
+       int                     r = 0;
 
        DBGENTER(1);
 
@@ -1971,43 +1209,55 @@ static int omapfb_probe(struct device *dev)
 
        pdev = to_platform_device(dev);
        if (pdev->num_resources != 0) {
-               PRNERR("probed for an unknown device\n");
+               pr_err("probed for an unknown device\n");
                r = -ENODEV;
                goto cleanup;
        }
 
        fbi = framebuffer_alloc(sizeof(struct omapfb_device), dev);
-       if (!fbi) {
-               PRNERR("unable to allocate memory for device info\n");
+       if (fbi == NULL) {
+               pr_err("unable to allocate memory for device info\n");
                r = -ENOMEM;
                goto cleanup;
        }
+       init_state++;
 
        fbdev = (struct omapfb_device *)fbi->par;
        fbdev->fb_info = fbi;
        fbdev->dev = dev;
        dev_set_drvdata(dev, fbdev);
 
-       init_state++;
+       init_MUTEX(&fbdev->rqueue_sema);
+
+#ifdef CONFIG_ARCH_OMAP1
+       fbdev->int_ctrl = &omap1_int_ctrl;
+#ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
+       fbdev->ext_if = &sossi_extif;
+#endif
+#else  /* OMAP2 */
+       fbdev->int_ctrl = &omap2_int_ctrl;
+#ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
+       fbdev->ext_if = &rfbi_extif;
+#endif
+#endif
        if (omapfb_find_ctrl(fbdev) < 0) {
-               PRNERR("LCD controller not found, board not supported\n");
+               pr_err("LCD controller not found, board not supported\n");
                r = -ENODEV;
                goto cleanup;
-       }               
+       }
+
        if (omapfb_find_panel(fbdev) < 0) {
-               PRNERR("LCD panel not found, board not supported\n");
+               pr_err("LCD panel not found, board not supported\n");
                r = -ENODEV;
                goto cleanup;
        }
 
        check_required_callbacks(fbdev);
-       
-       printk(KERN_INFO OMAPFB_DRIVER ": configured for panel %s\n",
-              fbdev->panel->name);
 
-       omapfb_rqueue_init(&fbdev->rqueue);
 
-       r = fbdev->panel->init(fbdev->panel);
+       pr_info(MODULE_NAME ": configured for panel %s\n", fbdev->panel->name);
+
+       r = fbdev->panel->init(fbdev);
        if (r)
                goto cleanup;
        init_state++;
@@ -2022,26 +1272,26 @@ static int omapfb_probe(struct device *dev)
                goto cleanup;
        init_state++;
 
-       r = gfxdma_init(&fbdev->gfx);
-       if (r)
-               goto cleanup;
-       init_state++;
-
 #ifdef CONFIG_FB_OMAP_DMA_TUNE
        /* Set DMA priority for EMIFF access to highest */
        omap_set_dma_priority(OMAP_DMA_PORT_EMIFF, 15);
 #endif
 
-       r = fbdev->panel->enable(fbdev->panel);
+       r = fbdev->panel->enable();
        if (r)
                goto cleanup;
        init_state++;
 
-       r = omapfb_set_update_mode(fbdev, manual_update ?
-                                  FB_MANUAL_UPDATE : FB_AUTO_UPDATE);
-       if (r)
+       r = ctrl_change_mode(fbdev);
+       if (r) {
+               pr_err("mode setting failed\n");
                goto cleanup;
-       init_state++;
+       }
+
+       omapfb_enable_plane(fbdev, 0, 1);
+
+       omapfb_set_update_mode(fbdev, manual_update ?
+                                  OMAPFB_MANUAL_UPDATE : OMAPFB_AUTO_UPDATE);
 
        r = omapfb_register_sysfs(fbdev);
        if (r)
@@ -2050,14 +1300,21 @@ static int omapfb_probe(struct device *dev)
 
        r = register_framebuffer(fbdev->fb_info);
        if (r != 0) {
-               PRNERR("register_framebuffer failed\n");
+               pr_err("register_framebuffer failed\n");
                goto cleanup;
        }
 
        fbdev->state = OMAPFB_ACTIVE;
 
-       printk(KERN_INFO "OMAP framebuffer initialized vram=%lu\n",
-                        fbdev->lcddma_mem_size);
+       panel = fbdev->panel;
+       phz = panel->pixel_clock * 1000;
+       hhz = phz * 10 / (panel->hfp + panel->x_res + panel->hbp + panel->hsw);
+       vhz = hhz / (panel->vfp + panel->y_res + panel->vbp + panel->vsw);
+
+       pr_info(MODULE_NAME ": initialized vram=%lu "
+                       "pixclock %lu kHz hfreq %lu.%lu kHz vfreq %lu.%lu Hz\n",
+                       fbdev->vram_size,
+                       phz / 1000, hhz / 10000, hhz % 10, vhz / 10, vhz % 10);
 
        DBGLEAVE(1);
        return 0;
@@ -2092,14 +1349,10 @@ static int omapfb_suspend(struct device *dev, pm_message_t mesg, u32 level)
 
        DBGENTER(1);
 
-       if (fbdev->state == OMAPFB_ACTIVE) {
-               if (fbdev->ctrl->suspend)
-                       fbdev->ctrl->suspend(fbdev);
-               fbdev->panel->disable(fbdev->panel);
-               fbdev->state = OMAPFB_SUSPENDED;
-       }
+       omapfb_blank(VESA_POWERDOWN, fbdev->fb_info);
 
        DBGLEAVE(1);
+
        return 0;
 }
 
@@ -2110,40 +1363,14 @@ static int omapfb_resume(struct device *dev, u32 level)
 
        DBGENTER(1);
 
-       if (fbdev->state == OMAPFB_SUSPENDED) {
-               fbdev->panel->enable(fbdev->panel);
-               if (fbdev->ctrl->resume)
-                       fbdev->ctrl->resume(fbdev);
-               fbdev->state = OMAPFB_ACTIVE;
-               if (manual_update)
-                       omapfb_schedule_full_update(fbdev->fb_info);
-       }
+       omapfb_blank(VESA_NO_BLANKING, fbdev->fb_info);
 
        DBGLEAVE(1);
        return 0;
 }
 
-static void omapfb_release_dev(struct device *dev)
-{
-       DBGENTER(1);
-       DBGLEAVE(1);
-}
-
-static u64 omapfb_dmamask = ~(u32)0;
-
-static struct platform_device omapfb_device = {
-       .name           = OMAPFB_DEVICE,
-       .id             = -1,
-       .dev = {
-               .release  = omapfb_release_dev,
-               .dma_mask = &omapfb_dmamask,
-               .coherent_dma_mask = 0xffffffff,
-       },
-       .num_resources = 0,
-};
-
 static struct device_driver omapfb_driver = {
-       .name           = OMAPFB_DRIVER,
+       .name           = OMAPFB_DRIVER,
        .bus            = &platform_bus_type,
        .probe          = omapfb_probe,
        .remove         = omapfb_remove,
@@ -2171,16 +1398,18 @@ static int __init omapfb_setup(char *options)
                        char *suffix;
                        def_vram = (simple_strtoul(this_opt + 5, &suffix, 0));
                        switch (suffix[0]) {
+                       case '\0':
+                               break;
                        case 'm':
                        case 'M':
-                               def_vram *= 1024 * 1024;
-                               break;
+                               def_vram *= 1024;
+                               /* Fall through */
                        case 'k':
                        case 'K':
                                def_vram *= 1024;
                                break;
                        default:
-                               PRNERR("invalid vram suffix\n");
+                               pr_err("invalid vram suffix\n");
                                r = -1;
                        }
                }
@@ -2195,7 +1424,7 @@ static int __init omapfb_setup(char *options)
                else if (!strncmp(this_opt, "manual_update", 13))
                        manual_update = 1;
                else {
-                       PRNERR("invalid option\n");
+                       pr_err("invalid option\n");
                        r = -1;
                }
        }
@@ -2216,7 +1445,7 @@ static int __init omapfb_init(void)
 #ifndef MODULE
        {
                char *option;
-               
+
                if (fb_get_options("omapfb", &option)) {
                        r = -ENODEV;
                        goto exit;
@@ -2224,16 +1453,9 @@ static int __init omapfb_init(void)
                omapfb_setup(option);
        }
 #endif
-       /* Register the device with LDM */
-       if (platform_device_register(&omapfb_device)) {
-               PRNERR("failed to register omapfb device\n");
-               r = -ENODEV;
-               goto exit;
-       }
        /* Register the driver with LDM */
        if (driver_register(&omapfb_driver)) {
-               PRNERR("failed to register omapfb driver\n");
-               platform_device_unregister(&omapfb_device);
+               pr_err("failed to register omapfb driver\n");
                r = -ENODEV;
                goto exit;
        }
@@ -2248,7 +1470,6 @@ static void __exit omapfb_cleanup(void)
        DBGENTER(1);
 
        driver_unregister(&omapfb_driver);
-       platform_device_unregister(&omapfb_device);
 
        DBGLEAVE(1);
 }
diff --git a/drivers/video/omap/rfbi.c b/drivers/video/omap/rfbi.c
new file mode 100644 (file)
index 0000000..439c0ae
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * File: drivers/video/omap/omap2/rfbi.c
+ *
+ * OMAP2 Remote Frame Buffer Interface support
+ *
+ * Copyright (C) 2005 Nokia Corporation
+ * Author: Juha Yrjölä <juha.yrjola@nokia.com>
+ *        Imre Deak <imre.deak@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/i2c.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+
+#include <asm/io.h>
+#include <asm/hardware/clock.h>
+
+#include <asm/arch/omapfb.h>
+
+#include "dispc.h"
+
+#define MODULE_NAME "omapfb-rfbi"
+
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
+#define RFBI_BASE              0x48050800
+#define RFBI_REVISION          0x0000
+#define RFBI_SYSCONFIG         0x0010
+#define RFBI_SYSSTATUS         0x0014
+#define RFBI_CONTROL           0x0040
+#define RFBI_PIXEL_CNT         0x0044
+#define RFBI_LINE_NUMBER       0x0048
+#define RFBI_CMD               0x004c
+#define RFBI_PARAM             0x0050
+#define RFBI_DATA              0x0054
+#define RFBI_READ              0x0058
+#define RFBI_STATUS            0x005c
+#define RFBI_CONFIG0           0x0060
+#define RFBI_ONOFF_TIME0       0x0064
+#define RFBI_CYCLE_TIME0       0x0068
+#define RFBI_DATA_CYCLE1_0     0x006c
+#define RFBI_DATA_CYCLE2_0     0x0070
+#define RFBI_DATA_CYCLE3_0     0x0074
+#define RFBI_VSYNC_WIDTH       0x0090
+#define RFBI_HSYNC_WIDTH       0x0094
+
+#define DISPC_BASE             0x48050400
+#define DISPC_CONTROL          0x0040
+
+static struct {
+       u32             base;
+       void            (*lcdc_callback)(void *data);
+       void            *lcdc_callback_data;
+       unsigned long   l4_khz;
+} rfbi;
+
+static inline void rfbi_write_reg(int idx, u32 val)
+{
+       __raw_writel(val, rfbi.base + idx);
+}
+
+static inline u32 rfbi_read_reg(int idx)
+{
+       return __raw_readl(rfbi.base + idx);
+}
+
+static int ns_to_dss_ticks(int time)
+{
+       unsigned long tick_ps;
+       int ret;
+
+       /* Calculate in picosecs to yield more exact results */
+       tick_ps = 1000000000 / (rfbi.l4_khz);
+
+       ret = (time * 1000 + tick_ps - 1) / tick_ps;
+
+       return ret * 2;
+}
+
+static void print_timings(void)
+{
+       u32 l;
+
+       DBGPRINT(1, "Tick time %lu ps\n", 1000000000 / rfbi.l4_khz);
+       l = rfbi_read_reg(RFBI_ONOFF_TIME0);
+       DBGPRINT(1, "CSONTIME %d, CSOFFTIME %d, WEONTIME %d, WEOFFTIME %d, "
+              "REONTIME %d, REOFFTIME %d\n",
+              l & 0x0f, (l >> 4) & 0x3f, (l >> 10) & 0x0f, (l >> 14) & 0x3f,
+              (l >> 20) & 0x0f, (l >> 24) & 0x3f);
+       l = rfbi_read_reg(RFBI_CYCLE_TIME0);
+       DBGPRINT(1, "WECYCLETIME %d, RECYCLETIME %d, CSPULSEWIDTH %d, "
+              "ACCESSTIME %d\n",
+              (l & 0x3f), (l >> 6) & 0x3f, (l >> 12) & 0x3f, (l >> 22) & 0x3f);
+}
+
+static void rfbi_set_timings(const struct extif_timings *t)
+{
+       u32 l;
+       int on, off;
+
+       on = ns_to_l4_ticks(t->cs_on_time) & 0x0f;
+       l = on;
+       off = ns_to_l4_ticks(t->cs_off_time) & 0x3f;
+       if (off <= on)
+               off = on + 2;
+       l |= off << 4;
+
+       on = ns_to_l4_ticks(t->we_on_time) & 0x0f;
+       l |= on << 10;
+       off = ns_to_l4_ticks(t->we_off_time) & 0x3f;
+       if (off <= on)
+               off = on + 2;
+       l |= off << 14;
+
+       l |= (ns_to_l4_ticks(t->re_on_time) & 0x0f) << 20;
+       l |= (ns_to_l4_ticks(t->re_off_time) & 0x3f) << 24;
+       rfbi_write_reg(RFBI_ONOFF_TIME0, l);
+
+       l = ns_to_l4_ticks(t->we_cycle_time) & 0x3f;
+       l |= (ns_to_l4_ticks(t->re_cycle_time) & 0x3f) << 6;
+       l |= (ns_to_l4_ticks(t->cs_pulse_width) & 0x3f) << 12;
+       l |= (ns_to_l4_ticks(t->access_time) & 0x3f) << 22;
+       rfbi_write_reg(RFBI_CYCLE_TIME0, l);
+}
+
+static void rfbi_write_command(u32 cmd)
+{
+       rfbi_write_reg(RFBI_CMD, cmd);
+}
+
+static u32 rfbi_read_data(void)
+{
+       u32 val;
+
+       rfbi_write_reg(RFBI_READ, 0);
+       val = rfbi_read_reg(RFBI_READ);
+       return val;
+}
+
+static void rfbi_write_data(u32 val)
+{
+       rfbi_write_reg(RFBI_PARAM, val);
+}
+
+static void rfbi_transfer_area(int width, int height,
+                               void (callback)(void * data), void *data)
+{
+       u32 w;
+
+       BUG_ON(callback == NULL);
+
+       dispc_set_lcd_size(width, height);
+
+       rfbi.lcdc_callback = callback;
+       rfbi.lcdc_callback_data = data;
+
+       rfbi_write_reg(RFBI_PIXEL_CNT, width * height);
+
+       w = rfbi_read_reg(RFBI_CONTROL);
+       /* Enable, Internal trigger */
+       rfbi_write_reg(RFBI_CONTROL, w | (1 << 0) | (1 << 4));
+
+       dispc_enable_lcd_out(1);
+}
+
+static inline void _stop_transfer(void)
+{
+       u32 w;
+
+       w = rfbi_read_reg(RFBI_CONTROL);
+       rfbi_write_reg(RFBI_CONTROL, w & ~(1 << 0));
+}
+
+static void rfbi_dma_callback(void *data)
+{
+       _stop_transfer();
+       rfbi.lcdc_callback(rfbi.lcdc_callback_data);
+}
+
+static int rfbi_init(void)
+{
+       u32 l;
+       int r;
+       struct clk *dss_ick;
+
+       memset(&rfbi, 0, sizeof(rfbi));
+       rfbi.base = io_p2v(RFBI_BASE);
+
+       l = rfbi_read_reg(RFBI_REVISION);
+       pr_info(MODULE_NAME ": version %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
+
+       dss_ick = clk_get(NULL, "dss_ick");
+       if (IS_ERR(dss_ick)) {
+               pr_err("can't get dss_ick\n");
+               return PTR_ERR(dss_ick);
+       }
+       rfbi.l4_khz = clk_get_rate(dss_ick) / 1000;
+       clk_put(dss_ick);
+
+       /* Reset */
+       rfbi_write_reg(RFBI_SYSCONFIG, 1 << 1);
+       while (!(rfbi_read_reg(RFBI_SYSSTATUS) & (1 << 0)));
+
+       l = rfbi_read_reg(RFBI_SYSCONFIG);
+       /* Enable autoidle and smart-idle */
+       l |= (1 << 0) | (2 << 3);
+       rfbi_write_reg(RFBI_SYSCONFIG, l);
+
+       /* 16-bit interface, ITE trigger mode, 16-bit data */
+       l = (0x03 << 0) | (0x00 << 2) | (0x01 << 5) | (0x02 << 7);
+       l |= (0 << 9) | (1 << 20) | (1 << 21);
+       rfbi_write_reg(RFBI_CONFIG0, l);
+
+       l = 0x10;
+       rfbi_write_reg(RFBI_DATA_CYCLE1_0, l);
+       rfbi_write_reg(RFBI_DATA_CYCLE2_0, l);
+       rfbi_write_reg(RFBI_DATA_CYCLE3_0, l);
+
+       l = rfbi_read_reg(RFBI_CONTROL);
+       /* Select CS0 */
+       l = (0x01 << 2);
+       rfbi_write_reg(RFBI_CONTROL, l);
+
+       if ((r = dispc_request_irq(rfbi_dma_callback, NULL)) < 0) {
+               pr_err("can't get DISPC irq\n");
+               return r;
+       }
+
+       return 0;
+}
+
+static void rfbi_cleanup(void)
+{
+       dispc_free_irq();
+}
+
+struct lcd_ctrl_extif rfbi_extif = {
+       .init                   = rfbi_init,
+       .cleanup                = rfbi_cleanup,
+       .set_timings            = rfbi_set_timings,
+       .write_command          = rfbi_write_command,
+       .read_data              = rfbi_read_data,
+       .write_data             = rfbi_write_data,
+       .transfer_area          = rfbi_transfer_area,
+};
+
index b2006d77e256244cc958ab4c26851b4738cfb542..e2145ebd56a1bb000568904570129307bf7e9117 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * File: drivers/video/omap_new/omapfb_main.c
+ * File: drivers/video/omap/omap1/sossi.c
  *
- * Special optimiSed Screen Interface driver for TI OMAP boards
+ * OMAP1 Special OptimiSed Screen Interface support
  *
- * Copyright (C) 2004 Nokia Corporation
+ * Copyright (C) 2004-2005 Nokia Corporation
  * Author: Juha Yrjölä <juha.yrjola@nokia.com>
  *
  * This program is free software; you can redistribute it and/or modify it
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/mm.h>
+#include <asm/hardware/clock.h>
 #include <asm/io.h>
 
 #include "sossi.h"
 
+#define MODULE_NAME            "omapfb-sossi"
+
 #define OMAP_SOSSI_BASE         0xfffbac00
 #define SOSSI_ID_REG           0x00
 #define SOSSI_INIT1_REG                0x04
@@ -44,6 +47,8 @@
 #define DMA_LCD_CTRL      0xfffee3c4
 #define DMA_LCD_LCH_CTRL  0xfffee3ea
 
+#define pr_err(fmt, args...) printk(KERN_ERR MODULE_NAME ": " fmt, ## args)
+
 static int sossi_base = IO_ADDRESS(OMAP_SOSSI_BASE);
 
 static inline u32 sossi_read_reg(int reg)
@@ -86,37 +91,19 @@ static void sossi_clear_bits(int reg, u32 bits)
         sossi_write_reg(reg, sossi_read_reg(reg) & ~bits);
 }
 
-#if 1
-void sossi_dump(void)
-{
-       printk("  INIT1:    0x%08x\n", sossi_read_reg(SOSSI_INIT1_REG));
-       printk("  INIT2:    0x%08x\n", sossi_read_reg(SOSSI_INIT2_REG));
-       printk("  INIT3:    0x%08x\n", sossi_read_reg(SOSSI_INIT3_REG));
-       printk("  TEARING:  0x%08x\n", sossi_read_reg(SOSSI_TEARING_REG));
-       printk("  INIT1B:   0x%08x\n", sossi_read_reg(SOSSI_INIT1B_REG));
-}
-#endif
-
-static void sossi_dma_init(void)
-{
-       /* OMAP3.1 mapping disable */
-       omap_writel(omap_readl(DMA_GSCR) | (1 << 3), DMA_GSCR);
-       /* Logical channel type to b0100 */
-       omap_writew(omap_readw(DMA_LCD_LCH_CTRL) | (1 << 2), DMA_LCD_LCH_CTRL);
-       /* LCD_DMA dest port to 1 */
-       omap_writew(omap_readw(DMA_LCD_CTRL) | (1 << 8), DMA_LCD_CTRL);
-       /* LCD_CCR OMAP31 comp mode */
-       omap_writew(omap_readw(DMA_LCD_CCR) | (1 << 10), DMA_LCD_CCR);
-}
-
 #define MOD_CONF_CTRL_1   0xfffe1110
 #define CONF_SOSSI_RESET_R      (1 << 23)
 #define CONF_MOD_SOSSI_CLK_EN_R (1 << 16)
 
+static struct clk *dpll_clk;
+
 int sossi_init(void)
 {
        u32 l, k;
 
+       dpll_clk = clk_get(NULL, "ck_dpll1");
+       BUG_ON(dpll_clk == NULL);
+
        /* Reset and enable the SoSSI module */
        l = omap_readl(MOD_CONF_CTRL_1);
        l |= CONF_SOSSI_RESET_R;
@@ -125,15 +112,11 @@ int sossi_init(void)
        omap_writel(l, MOD_CONF_CTRL_1);
 
        l |= CONF_MOD_SOSSI_CLK_EN_R;
-       /* FIXME: Hardcode divide ratio 3 */
-       l |= 2 << 17;
        omap_writel(l, MOD_CONF_CTRL_1);
 
        omap_writel(omap_readl(ARM_IDLECT2) | (1 << 11), ARM_IDLECT2);
        omap_writel(omap_readl(ARM_IDLECT1) | (1 << 6), ARM_IDLECT1);
 
-       sossi_dma_init();
-
        l = sossi_read_reg(SOSSI_INIT2_REG);
        /* Enable and reset the SoSSI block */
        l |= (1 << 0) | (1 << 1);
@@ -145,14 +128,15 @@ int sossi_init(void)
        sossi_write_reg(SOSSI_ID_REG, 0);
        l = sossi_read_reg(SOSSI_ID_REG);
        k = sossi_read_reg(SOSSI_ID_REG);
-       
+
        if (l != 0x55555555 || k != 0xaaaaaaaa) {
-               printk(KERN_ERR "Invalid SoSSI sync pattern: %08x, %08x\n", l, k);
+               pr_err("Invalid SoSSI sync pattern: %08x, %08x\n", l, k);
                return -ENODEV;
        }
        l = sossi_read_reg(SOSSI_ID_REG); /* Component code */
        l = sossi_read_reg(SOSSI_ID_REG);
-       printk(KERN_INFO "SoSSI rev. %d.%d initialized\n", l >> 16, l & 0xffff);
+       pr_info(KERN_INFO MODULE_NAME ": version %d.%d initialized\n",
+                       l >> 16, l & 0xffff);
 
        l = sossi_read_reg(SOSSI_INIT1_REG);
        l |= (1 << 19); /* DMA_MODE */
@@ -162,25 +146,83 @@ int sossi_init(void)
        return 0;
 }
 
-static void set_timings(int tw0, int tw1)
+static unsigned long get_sossi_clk_rate(int div)
+{
+       return (clk_get_rate(dpll_clk)) / div;
+}
+
+static unsigned long get_sossi_clk_period(int div)
+{
+       /* In picoseconds */
+       return 1000000000 / (get_sossi_clk_rate(div) / 1000);
+}
+
+static int ns_to_sossi_ticks(int time, int div)
+{
+       unsigned long tick_ps;
+
+       /* Calculate in picosecs to yield more exact results */
+       tick_ps = get_sossi_clk_period(div);
+
+       return (time * 1000 + tick_ps - 1) / tick_ps;
+}
+
+static int set_timings(int div, int tw0, int tw1)
 {
        u32 l;
 
+       if (tw1 * 1000 > 64 * get_sossi_clk_period(div))
+               return -1;
+       if (tw0 * 1000 > 16 * get_sossi_clk_period(div))
+               return -1;
+
+       l = omap_readl(MOD_CONF_CTRL_1);
+       l &= ~(7 << 17);
+       l |= (div - 1) << 17;
+       omap_writel(l, MOD_CONF_CTRL_1);
+
+       tw0 = ns_to_sossi_ticks(tw0, div) - 1;
+       tw1 = ns_to_sossi_ticks(tw1, div) - 1;
+       if (tw0 < 0)
+               tw0 = 0;
+       if (tw1 < 0)
+               tw1 = 0;
+#if 0
+       printk("Using TW0 = %d, TW1 = %d, div = %d, period = %d ps\n",
+              tw0, tw1, div, get_sossi_clk_period(div));
+#endif
        l = sossi_read_reg(SOSSI_INIT1_REG);
        l &= ~((0x0f << 20) | (0x3f << 24));
        l |= ((tw0 & 0x0f) << 20) | ((tw1 & 0x3f) << 24);
        sossi_write_reg(SOSSI_INIT1_REG, l);
+
+       return 0;
 }
 
 static struct sossi {
        int bus_pick_width;
 } sossi;
 
-void sossi_set_xfer_params(int tw0, int tw1, int bus_pick_count, int bus_pick_width)
+void sossi_set_timings(int min_time, int min_tw0, int min_tw1)
+{
+       int div;
+
+       for (div = 1; div <= 8; div++) {
+               if (min_time * 1000 > get_sossi_clk_period(div))
+                       continue;
+               if (set_timings(div, min_tw0, min_tw1) == 0)
+                       break;
+       }
+       if (div == 9) {
+               pr_err("DPLL frequency too high for SoSSI\n");
+               BUG();
+       }
+}
+
+void sossi_set_xfer_params(int bus_pick_count, int bus_pick_width)
 {
        u32 l;
 
-       set_timings(tw0, tw1);  
        sossi.bus_pick_width = bus_pick_width;
        l = ((bus_pick_count - 1) << 5) | ((bus_pick_width - 1) & 0x1f);
        sossi_write_reg(SOSSI_INIT3_REG, l);
@@ -234,27 +276,27 @@ static void set_cycles(unsigned int len)
 void sossi_send_cmd(const void *data, unsigned int len)
 {
        sossi_clear_bits(SOSSI_INIT1_REG, 1 << 18);
-        set_cycles(len);
+       set_cycles(len);
        send_data(data, len);
 }
 
 void sossi_send_data(const void *data, unsigned int len)
 {
        sossi_set_bits(SOSSI_INIT1_REG, 1 << 18);
-        set_cycles(len);
+       set_cycles(len);
        send_data(data, len);
 }
 
 void sossi_prepare_dma_transfer(unsigned int count)
 {
        sossi_set_bits(SOSSI_INIT1_REG, 1 << 18);
-        set_cycles(count);
+       set_cycles(count);
 }
 
 void sossi_send_data_const32(u32 data, unsigned int count)
 {
        sossi_set_bits(SOSSI_INIT1_REG, 1 << 18);
-        set_cycles(count * 4);
+       set_cycles(count * 4);
        while (count > 0) {
                sossi_write_reg(SOSSI_FIFO_REG, data);
                count--;
@@ -283,7 +325,7 @@ void sossi_read_data(void *data, unsigned int len)
        /* Before reading we must check if some writings are going on */
        while (!(sossi_read_reg(SOSSI_INIT2_REG) & (1 << 3)));
        sossi_set_bits(SOSSI_INIT1_REG, 1 << 18);
-        set_cycles(len);
+       set_cycles(len);
        while (len >= 4) {
                *(u32 *) data = sossi_read_reg(SOSSI_FIFO_REG);
                len -= 4;
index 4cd18d7de1eea37b924fa21075f61b202adbdc00..b71a4b9c63b3715d5542d6deaec4685533dca864 100644 (file)
@@ -5,7 +5,8 @@
 #define SOSSI_FLAG_VS_INVERTED          0x02
 
 extern int sossi_init(void);
-extern void sossi_set_xfer_params(int tw0, int tw1, int bus_pick_count, int bus_pick_width);
+extern void sossi_set_xfer_params(int bus_pick_count, int bus_pick_width);
+extern void sossi_set_timings(int tick_ns, int tw0_ns, int tw1_ns);
 extern void sossi_start_transfer(void);
 extern void sossi_stop_transfer(void);
 extern void sossi_send_cmd(const void *data, unsigned int len);
index 20d66797172144691cbb1a0db9e47aad47ef1480..e2ada491fed8e2119bf710b08f1ae8a3b563ec49 100644 (file)
 #define INT_730_NAND           (63 + IH2_BASE)
 
 #define INT_24XX_SYS_NIRQ      7
+#define INT_24XX_DSS_IRQ       25
 #define INT_24XX_GPIO_BANK1    29
 #define INT_24XX_GPIO_BANK2    30
 #define INT_24XX_GPIO_BANK3    31
diff --git a/include/asm-arm/arch-omap/omapfb.h b/include/asm-arm/arch-omap/omapfb.h
new file mode 100644 (file)
index 0000000..ccda46f
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * File: include/asm-arm/arch-omap/omapfb.h
+ *
+ * Framebuffer driver for TI OMAP boards
+ *
+ * Copyright (C) 2004 Nokia Corporation
+ * Author: Imre Deak <imre.deak@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifndef __OMAPFB_H
+#define __OMAPFB_H
+
+/* IOCTL commands. */
+
+#define OMAP_IOW(num, dtype)   _IOW('O', num, dtype)
+#define OMAP_IOR(num, dtype)   _IOR('O', num, dtype)
+#define OMAP_IOWR(num, dtype)  _IOWR('O', num, dtype)
+#define OMAP_IO(num)           _IO('O', num)
+
+#define OMAPFB_MIRROR          OMAP_IOW(31, int)
+#define OMAPFB_SYNC_GFX                OMAP_IO(37)
+#define OMAPFB_VSYNC           OMAP_IO(38)
+#define OMAPFB_SET_UPDATE_MODE OMAP_IOW(40, enum omapfb_update_mode)
+#define OMAPFB_GET_CAPS                OMAP_IOR(42, unsigned long)
+#define OMAPFB_GET_UPDATE_MODE OMAP_IOW(43, enum omapfb_update_mode)
+#define OMAPFB_LCD_TEST                OMAP_IOW(45, int)
+#define OMAPFB_CTRL_TEST       OMAP_IOW(46, int)
+#define OMAPFB_UPDATE_WINDOW   OMAP_IOW(47, struct omapfb_update_window)
+#define OMAPFB_SETUP_PLANE     OMAP_IOW(48, struct omapfb_setup_plane)
+#define OMAPFB_ENABLE_PLANE    OMAP_IOW(49, struct omapfb_enable_plane)
+#define OMAPFB_SET_COLOR_KEY   OMAP_IOW(50, struct omapfb_color_key)
+
+#define OMAPFB_CAPS_GENERIC_MASK       0x00000fff
+#define OMAPFB_CAPS_LCDC_MASK          0x00fff000
+#define OMAPFB_CAPS_PANEL_MASK         0xff000000
+
+#define OMAPFB_CAPS_MANUAL_UPDATE      0x00001000
+#define OMAPFB_CAPS_SET_BACKLIGHT      0x01000000
+
+/* Values from DSP must map to lower 16-bits */
+#define OMAPFB_FORMAT_MASK         0x00ff
+#define OMAPFB_FORMAT_FLAG_DOUBLE  0x0100
+
+enum omapfb_color_format {
+       OMAPFB_COLOR_RGB565 = 0,
+       OMAPFB_COLOR_YUV422,
+       OMAPFB_COLOR_YUV420,
+       OMAPFB_COLOR_CLUT_8BPP,
+       OMAPFB_COLOR_CLUT_4BPP,
+       OMAPFB_COLOR_CLUT_2BPP,
+       OMAPFB_COLOR_CLUT_1BPP,
+};
+
+struct omapfb_update_window {
+       u32 x, y;
+       u32 width, height;
+       u32 format;
+};
+
+enum omapfb_plane {
+       OMAPFB_PLANE_GFX = 0,
+       OMAPFB_PLANE_VID1,
+       OMAPFB_PLANE_VID2,
+};
+
+enum omapfb_channel_out {
+       OMAPFB_CHANNEL_OUT_LCD = 0,
+       OMAPFB_CHANNEL_OUT_DIGIT,
+};
+
+struct omapfb_setup_plane {
+       u8  plane;
+       u8  channel_out;
+       u32 offset;
+       u32 pos_x, pos_y;
+       u32 width, height;
+       u32 color_mode;
+};
+
+struct omapfb_enable_plane {
+       u8  plane;
+       u8  enable;
+};
+
+enum omapfb_color_key_type {
+       OMAPFB_COLOR_KEY_DISABLED = 0,
+       OMAPFB_COLOR_KEY_GFX_DST,
+       OMAPFB_COLOR_KEY_VID_SRC,
+};
+
+struct omapfb_color_key {
+       u8  channel_out;
+       u32 background;
+       u32 trans_key;
+       u8  key_type;
+};
+
+enum omapfb_update_mode {
+       OMAPFB_UPDATE_DISABLED = 0,
+       OMAPFB_AUTO_UPDATE,
+       OMAPFB_MANUAL_UPDATE
+};
+
+#ifdef __KERNEL__
+
+#include <linux/completion.h>
+#include <linux/interrupt.h>
+#include <linux/fb.h>
+
+#define OMAP_LCDC_INV_VSYNC             0x0001
+#define OMAP_LCDC_INV_HSYNC             0x0002
+#define OMAP_LCDC_INV_PIX_CLOCK         0x0004
+#define OMAP_LCDC_INV_OUTPUT_EN         0x0008
+#define OMAP_LCDC_HSVS_RISING_EDGE      0x0010
+#define OMAP_LCDC_HSVS_OPPOSITE         0x0020
+
+#define OMAP_LCDC_SIGNAL_MASK          0x003f
+
+#define OMAP_LCDC_PANEL_TFT            0x0100
+
+#ifdef CONFIG_ARCH_OMAP1
+#define OMAPFB_PLANE_NUM               1
+#else
+#define OMAPFB_PLANE_NUM               3
+#endif
+
+struct omapfb_device;
+
+struct lcd_panel {
+       const char      *name;
+       int             config;         /* TFT/STN, signal inversion */
+       int             bpp;            /* Pixel format in fb mem */
+       int             data_lines;     /* Lines on LCD HW interface */
+
+       int             x_res, y_res;
+       int             pixel_clock;    /* In kHz */
+       int             hsw;            /* Horizontal synchronization
+                                          pulse width */
+       int             hfp;            /* Horizontal front porch */
+       int             hbp;            /* Horizontal back porch */
+       int             vsw;            /* Vertical synchronization
+                                          pulse width */
+       int             vfp;            /* Vertical front porch */
+       int             vbp;            /* Vertical back porch */
+       int             acb;            /* ac-bias pin frequency */
+       int             pcd;            /* pixel clock divider.
+                                          Obsolete use pixel_clock instead */
+
+       int             (*init)         (struct omapfb_device *fbdev);
+       void            (*cleanup)      (void);
+       int             (*enable)       (void);
+       void            (*disable)      (void);
+       unsigned long   (*get_caps)     (void);
+       int             (*set_bklight_level)(unsigned int level);
+       unsigned int    (*get_bklight_level)(void);
+       unsigned int    (*get_bklight_max)  (void);
+       int             (*run_test)     (int test_num);
+};
+
+struct omapfb_device;
+
+struct extif_timings {
+       int cs_on_time;
+       int cs_off_time;
+       int we_on_time;
+       int we_off_time;
+       int re_on_time;
+       int re_off_time;
+       int we_cycle_time;
+       int re_cycle_time;
+       int cs_pulse_width;
+       int access_time;
+};
+
+struct lcd_ctrl_extif {
+       int  (*init)            (void);
+       void (*cleanup)         (void);
+       void (*set_timings)     (struct extif_timings timings);
+       void (*write_command)   (u32 cmd);
+       u32  (*read_data)       (void);
+       void (*write_data)      (u32 data);
+       void (*transfer_area)   (int width, int height,
+                                void (callback)(void * data), void *data);
+};
+
+struct lcd_ctrl {
+       const char      *name;
+       void            *data;
+
+       int             (*init)           (struct omapfb_device *fbdev,
+                                          int ext_mode, int req_vram_size);
+       void            (*cleanup)        (void);
+       void            (*get_vram_layout)(unsigned long *size,
+                                          void **virt_base,
+                                          dma_addr_t *phys_base);
+       unsigned long   (*get_caps)       (void);
+       int             (*set_update_mode)(enum omapfb_update_mode mode);
+       enum omapfb_update_mode (*get_update_mode)(void);
+       int             (*setup_plane)    (int plane, int channel_out,
+                                          unsigned long offset,
+                                          int screen_width,
+                                          int pos_x, int pos_y, int width,
+                                          int height, int color_mode);
+       int             (*enable_plane)   (int plane, int enable);
+       int             (*update_window)  (struct omapfb_update_window *win,
+                                          void (*callback)(void *),
+                                          void *callback_data);
+       void            (*sync)           (void);
+       void            (*suspend)        (void);
+       void            (*resume)         (void);
+       int             (*run_test)       (int test_num);
+       int             (*setcolreg)      (u_int regno, u16 red, u16 green,
+                                          u16 blue, u16 transp,
+                                          int update_hw_mem);
+       int             (*set_color_key)  (struct omapfb_color_key *ck);
+
+};
+
+enum omapfb_state {
+       OMAPFB_DISABLED = 0,
+       OMAPFB_SUSPENDED= 99,
+       OMAPFB_ACTIVE   = 100
+};
+
+struct omapfb_device {
+       int                     state;
+       int                     ext_lcdc;               /* Using external
+                                                           LCD controller */
+       struct semaphore        rqueue_sema;
+
+       void                    *vram_virt_base;
+       dma_addr_t              vram_phys_base;
+       unsigned long           vram_size;
+
+       int                     color_mode;
+       int                     palette_size;
+       int                     mirror;
+       u32                     pseudo_palette[17];
+
+       struct lcd_panel        *panel;                 /* LCD panel */
+       struct lcd_ctrl         *ctrl;                  /* LCD controller */
+       struct lcd_ctrl         *int_ctrl;              /* internal LCD ctrl */
+       struct lcd_ctrl_extif   *ext_if;                /* LCD ctrl external
+                                                          interface */
+       struct fb_info          *fb_info;
+
+       struct device           *dev;
+};
+
+extern struct lcd_panel h3_panel;
+extern struct lcd_panel h2_panel;
+extern struct lcd_panel p2_panel;
+extern struct lcd_panel osk_panel;
+extern struct lcd_panel innovator1610_panel;
+extern struct lcd_panel innovator1510_panel;
+
+#ifdef CONFIG_ARCH_OMAP1
+extern struct lcd_ctrl omap1_lcd_ctrl;
+#else
+extern struct lcd_ctrl omap2_disp_ctrl;
+#endif
+
+extern void omapfb_write_first_pixel(struct omapfb_device *fbdev, u16 pixval);
+
+#endif /* __KERNEL__ */
+
+#endif /* __OMAPFB_H */