#
# 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
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
# 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
#
# 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
# CONFIG_ARCH_OMAP730 is not set
# CONFIG_ARCH_OMAP15XX is not set
CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
#
# OMAP Board Type
# 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
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
# 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)
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
# 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
# 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
#
# CONFIG_MTD_NAND is not set
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
#
# Plug and Play support
#
#
# 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)
# 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
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
#
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
#
#
# Non-8250 serial port support
#
-CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=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
#
# Ftape, the floppy tape device driver
#
-# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
+#
+# TPM devices
+#
+
#
# I2C support
#
#
# 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
# 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
#
# 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
# 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
# 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
#
#
-# 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
#
# 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
# 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
#
# Security options
#
+# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
#
# 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
#
# 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
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
# 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
#
# 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
# CONFIG_ARCH_OMAP730 is not set
# CONFIG_ARCH_OMAP15XX is not set
CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
#
# OMAP Board Type
# 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
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
# 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
#
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
# 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_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
# 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
#
# 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)
# 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
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
#
# 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
#
#
# Non-8250 serial port support
#
-CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=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
#
# Ftape, the floppy tape device driver
#
-# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
+#
+# TPM devices
+#
+
#
# I2C support
#
#
# 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
# 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
#
# 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
# 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
# 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
#
# 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
# 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
# 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
#
# 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
# 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
#
# Security options
#
+# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
#
# 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
#
# 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
# 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
# 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
#
# 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
#
# 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
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
# 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
#
# 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
# 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
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
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
#
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
# 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_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
# 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
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
#
# 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
# 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
#
# 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
#
# 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
#
#
# 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
# 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
#
# 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
#
#
# 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
# 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
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
# 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
# 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
# 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
#
#
-# 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
#
# 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
# 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
#
# Security options
#
+# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
# 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
# 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
#
# 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
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
# 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
#
# 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
# CONFIG_ARCH_OMAP730 is not set
# CONFIG_ARCH_OMAP15XX is not set
CONFIG_ARCH_OMAP16XX=y
-CONFIG_ARCH_OMAP_OTG=y
#
# OMAP Board Type
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
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
# 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
#
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
# 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_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
# 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)
# 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
# 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
#
# 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
#
#
# Non-8250 serial port support
#
-CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# 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
#
# 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
#
#
# 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
#
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
#
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
# 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_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
#
#
# 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
#
# 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
# General setup
#
CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
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
# 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=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
#
# 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
#
# 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
#
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
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
#
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=y
#
# Memory Technology Devices (MTD)
# 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
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
#
#
# SCSI device support
#
+# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
#
#
# Fusion MPT device support
#
+# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
-# 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)
# 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
# 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
#
# Ftape, the floppy tape device driver
#
-# CONFIG_DRM is not set
#
# PCMCIA character devices
#
# 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
# 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
#
#
# 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
#
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
# 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
#
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
# 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
#
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_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
# 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
#
# 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
# 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
.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)
.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)
.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
.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 = {
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 },
};
#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);
.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
},
};
+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)
.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)
static struct omap_mmc_config h4_mmc_config __initdata = {
.mmc [0] = {
- .enabled = 1,
+ .enabled = 1,
.wire4 = 1,
.wp_pin = -1,
.power_pin = -1,
},
};
+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)
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):
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!)"
--- /dev/null
+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.
+
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)
#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 "
_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)
--- /dev/null
+/*
+ * 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");
--- /dev/null
+#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
/*
- * 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;
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);
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;
return r;
}
-static void h2_panel_disable(struct lcd_panel *panel)
+static void h2_panel_disable(void)
{
DBGENTER(1);
* 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,
};
/*
- * 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;
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;
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,
};
--- /dev/null
+/*
+ * 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,
+};
+
/*
- * 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);
return 0;
}
-static void innovator1510_panel_disable(struct lcd_panel *panel)
+static void innovator1510_panel_disable(void)
{
DBGENTER(1);
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,
};
/*
- * 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;
return r;
}
-static void innovator1610_panel_cleanup(struct lcd_panel *panel)
+static void innovator1610_panel_cleanup(void)
{
DBGENTER(1);
DBGLEAVE(1);
}
-static int innovator1610_panel_enable(struct lcd_panel *panel)
+static int innovator1610_panel_enable(void)
{
DBGENTER(1);
return 0;
}
-static void innovator1610_panel_disable(struct lcd_panel *panel)
+static void innovator1610_panel_disable(void)
{
DBGENTER(1);
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,
};
/*
- * 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);
return 0;
}
-static void osk_panel_disable(struct lcd_panel *panel)
+static void osk_panel_disable(void)
{
DBGENTER(1);
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,
};
/*
- * 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
#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;
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);
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++)
/* 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 */
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,
};
--- /dev/null
+/*
+ * 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,
+};
+
/*
- * 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>
* 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
#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,
};
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)
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
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,
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;
* 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();
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();
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;
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);
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;
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);
*/
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;
}
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:
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");
+++ /dev/null
-/*
- * 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 */
#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;
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" },
};
/*
* 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,
#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);
}
/*
*/
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;
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;
}
/*
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;
* 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.
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;
}
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
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 */
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;
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);
}
}
r = -EINVAL;
else {
memcpy(&fbi->var, &new_var, sizeof(new_var));
- set_fb_fix(fbdev);
ctrl_change_mode(fbdev);
}
}
}
/* 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);
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);
*/
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)
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
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);
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;
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:
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;
}
.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,
/*
* ---------------------------------------------------------------------------
- * Sysfs interface
+ * Sysfs interface
* ---------------------------------------------------------------------------
*/
/* omapfbX sysfs entries */
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;
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
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;
};
/* 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;
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;
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;
}
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;
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;
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:
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) {
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
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);
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++;
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)
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;
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;
}
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,
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;
}
}
else if (!strncmp(this_opt, "manual_update", 13))
manual_update = 1;
else {
- PRNERR("invalid option\n");
+ pr_err("invalid option\n");
r = -1;
}
}
#ifndef MODULE
{
char *option;
-
+
if (fb_get_options("omapfb", &option)) {
r = -ENODEV;
goto exit;
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;
}
DBGENTER(1);
driver_unregister(&omapfb_driver);
- platform_device_unregister(&omapfb_device);
DBGLEAVE(1);
}
--- /dev/null
+/*
+ * 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,
+};
+
/*
- * 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
#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)
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;
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);
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 */
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);
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--;
/* 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;
#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);
#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
--- /dev/null
+/*
+ * 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 */