diff options
author | Mika Laitio <lamikr@cc.jyu.fi> | 2005-12-03 22:13:21 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-12-03 22:13:21 +0000 |
commit | ec3bff608d703cd39e2db1d6d747a063385cbe0a (patch) | |
tree | 800c0be60e896bcb24e19d12a0dc439885c2ce11 | |
parent | e279d73e06478c9f5bc1ef2e22e8bc3c047779ec (diff) |
h6300 kernel: update to 2.6.14.3 and remove 2.6.14-rc5
packages/linux/linux-h6300-omap1-2.6.14-rc5/defconfig
packages/linux/linux-h6300-omap1-2.6.14-rc5/h6300_omap1_2614rc5.patch
packages/linux/linux-h6300-omap1_2.6.14-rc5.bb
packages/linux/linux-h6300-omap1_2.6.14.3.bb
packages/linux/linux-h6300-omap1-2.6.14.3/defconfig
packages/linux/linux-h6300-omap1-2.6.14.3/patch-linux-2614-omap2-to-2614_3-omap1-h6300
-rw-r--r-- | packages/linux/linux-h6300-omap1-2.6.14.3/.mtn2git_empty (renamed from packages/linux/linux-h6300-omap1-2.6.14-rc5/.mtn2git_empty) | 0 | ||||
-rw-r--r-- | packages/linux/linux-h6300-omap1-2.6.14.3/defconfig (renamed from packages/linux/linux-h6300-omap1-2.6.14-rc5/defconfig) | 36 | ||||
-rw-r--r-- | packages/linux/linux-h6300-omap1-2.6.14.3/patch-linux-2614-omap2-to-2614_3-omap1-h6300 (renamed from packages/linux/linux-h6300-omap1-2.6.14-rc5/h6300_omap1_2614rc5.patch) | 6989 | ||||
-rw-r--r-- | packages/linux/linux-h6300-omap1_2.6.14.3.bb (renamed from packages/linux/linux-h6300-omap1_2.6.14-rc5.bb) | 8 |
4 files changed, 4580 insertions, 2453 deletions
diff --git a/packages/linux/linux-h6300-omap1-2.6.14-rc5/.mtn2git_empty b/packages/linux/linux-h6300-omap1-2.6.14.3/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/linux-h6300-omap1-2.6.14-rc5/.mtn2git_empty +++ b/packages/linux/linux-h6300-omap1-2.6.14.3/.mtn2git_empty diff --git a/packages/linux/linux-h6300-omap1-2.6.14-rc5/defconfig b/packages/linux/linux-h6300-omap1-2.6.14.3/defconfig index 8e76562fb3..40f2840644 100644 --- a/packages/linux/linux-h6300-omap1-2.6.14-rc5/defconfig +++ b/packages/linux/linux-h6300-omap1-2.6.14.3/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.14-rc5-omap-h6300 -# Sun Oct 30 09:16:57 2005 +# Linux kernel version: 2.6.14.1-omap1-h6300 +# Wed Nov 23 00:43:00 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -1078,7 +1078,37 @@ CONFIG_SOUND=m # # Advanced Linux Sound Architecture # -# CONFIG_SND is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# +# CONFIG_SND_OMAP_AIC23 is not set +CONFIG_SND_OMAP_TSC2101=m + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set + +# +# PCMCIA devices +# # # Open Sound System diff --git a/packages/linux/linux-h6300-omap1-2.6.14-rc5/h6300_omap1_2614rc5.patch b/packages/linux/linux-h6300-omap1-2.6.14.3/patch-linux-2614-omap2-to-2614_3-omap1-h6300 index 435a5f12a2..e7e442e7c2 100644 --- a/packages/linux/linux-h6300-omap1-2.6.14-rc5/h6300_omap1_2614rc5.patch +++ b/packages/linux/linux-h6300-omap1-2.6.14.3/patch-linux-2614-omap2-to-2614_3-omap1-h6300 @@ -1,6 +1,1548 @@ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/Kconfig bt_kernel/arch/arm/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/Kconfig 2005-10-30 17:44:14.719521158 +0200 -+++ bt_kernel/arch/arm/Kconfig 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/arch/arm/configs/omap_h6300_defconfig linux-h6300-omap2-2.6.14.3/arch/arm/configs/omap_h6300_defconfig +--- linux-2.6.14-omap2/arch/arm/configs/omap_h6300_defconfig 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/configs/omap_h6300_defconfig 2005-11-11 04:13:42.000000000 +0200 +@@ -0,0 +1,1538 @@ ++# ++# Automatically generated make config: don't edit ++# Linux kernel version: 2.6.14-omap1-h6300 ++# Thu Nov 10 05:21:43 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 is not set ++CONFIG_BROKEN=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=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_SYSCTL=y ++# CONFIG_AUDIT is not set ++CONFIG_HOTPLUG=y ++CONFIG_KOBJECT_UEVENT=y ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_EMBEDDED=y ++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_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_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODULE_FORCE_UNLOAD=y ++CONFIG_OBSOLETE_MODPARM=y ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++CONFIG_KMOD=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_CAMELOT is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# 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_SA1100 is not set ++# CONFIG_ARCH_S3C2410 is not set ++# CONFIG_ARCH_SHARK is not set ++# CONFIG_ARCH_LH7A40X is not set ++CONFIG_ARCH_OMAP=y ++# CONFIG_ARCH_VERSATILE is not set ++# CONFIG_ARCH_IMX is not set ++# CONFIG_ARCH_H720X is not set ++# CONFIG_ARCH_AAEC2000 is not set ++ ++# ++# TI OMAP Implementations ++# ++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_OMAP16XX is not set ++ ++# ++# OMAP Board Type ++# ++# CONFIG_MACH_OMAP_INNOVATOR is not set ++CONFIG_MACH_OMAP_H6300=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 CPU Speed ++# ++# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set ++CONFIG_OMAP_ARM_168MHZ=y ++CONFIG_OMAP_ARM_150MHZ=y ++CONFIG_OMAP_ARM_120MHZ=y ++CONFIG_OMAP_ARM_60MHZ=y ++CONFIG_OMAP_ARM_30MHZ=y ++CONFIG_OMAP_DSP=y ++CONFIG_OMAP_DSP_MBCMD_VERBOSE=y ++CONFIG_OMAP_DSP_TASK_MULTIOPEN=y ++CONFIG_OMAP_DSP_FBEXPORT=y ++ ++# ++# Processor Type ++# ++CONFIG_CPU_32=y ++CONFIG_CPU_ARM925T=y ++CONFIG_CPU_32v4=y ++CONFIG_CPU_ABRT_EV4T=y ++CONFIG_CPU_CACHE_V4WT=y ++CONFIG_CPU_CACHE_VIVT=y ++CONFIG_CPU_COPY_V4WB=y ++CONFIG_CPU_TLB_V4WBI=y ++ ++# ++# Processor Features ++# ++CONFIG_ARM_THUMB=y ++# CONFIG_CPU_ICACHE_DISABLE is not set ++# CONFIG_CPU_DCACHE_DISABLE is not set ++CONFIG_CPU_DCACHE_WRITETHROUGH=y ++ ++# ++# Bus support ++# ++CONFIG_ISA_DMA_API=y ++ ++# ++# PCCARD (PCMCIA/CardBus) support ++# ++CONFIG_PCCARD=m ++# CONFIG_PCMCIA_DEBUG is not set ++CONFIG_PCMCIA=m ++CONFIG_PCMCIA_LOAD_CIS=y ++CONFIG_PCMCIA_IOCTL=y ++ ++# ++# PC-card bridges ++# ++ ++# ++# Kernel Features ++# ++# CONFIG_SMP is not set ++# 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=y ++CONFIG_LEDS_CPU=y ++CONFIG_ALIGNMENT_TRAP=y ++ ++# ++# Boot options ++# ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=tty0 root=/dev/nfs nfsroot=192.168.2.1:/opt/h6300/rootfs,rsize=8192,wsize=8192 ip=192.168.2.2:192.168.2.1:192.168.2.1:255.0.0.0:ipaq:" ++# CONFIG_XIP_KERNEL is not set ++ ++# ++# CPU Frequency scaling ++# ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_TABLE=y ++CONFIG_CPU_FREQ_DEBUG=y ++CONFIG_CPU_FREQ_STAT=y ++CONFIG_CPU_FREQ_STAT_DETAILS=y ++# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set ++CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set ++ ++# ++# Floating point emulation ++# ++ ++# ++# At least one emulation must be selected ++# ++CONFIG_FPE_NWFPE=y ++CONFIG_FPE_NWFPE_XP=y ++# CONFIG_FPE_FASTFPE is not set ++ ++# ++# Userspace binary formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_BINFMT_AOUT=y ++CONFIG_BINFMT_MISC=y ++# CONFIG_ARTHUR is not set ++ ++# ++# Power management options ++# ++CONFIG_PM=y ++CONFIG_APM=y ++ ++# ++# Networking ++# ++CONFIG_NET=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++# CONFIG_PACKET_MMAP is not set ++CONFIG_UNIX=y ++CONFIG_XFRM=y ++CONFIG_XFRM_USER=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=y ++# 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=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_TUNNEL=m ++CONFIG_INET_DIAG=y ++CONFIG_INET_TCP_DIAG=y ++# CONFIG_TCP_CONG_ADVANCED is not set ++CONFIG_TCP_CONG_BIC=y ++ ++# ++# IP: Virtual Server Configuration ++# ++# CONFIG_IP_VS is not set ++CONFIG_IPV6=y ++CONFIG_IPV6_PRIVACY=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_INET6_TUNNEL=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_NETFILTER=y ++# CONFIG_NETFILTER_DEBUG is not set ++CONFIG_BRIDGE_NETFILTER=y ++# CONFIG_NETFILTER_NETLINK is not set ++ ++# ++# IP: Netfilter Configuration ++# ++CONFIG_IP_NF_CONNTRACK=m ++CONFIG_IP_NF_CT_ACCT=y ++CONFIG_IP_NF_CONNTRACK_MARK=y ++# CONFIG_IP_NF_CONNTRACK_EVENTS is not set ++CONFIG_IP_NF_CT_PROTO_SCTP=m ++CONFIG_IP_NF_FTP=m ++CONFIG_IP_NF_IRC=m ++# CONFIG_IP_NF_NETBIOS_NS is not set ++CONFIG_IP_NF_TFTP=m ++# CONFIG_IP_NF_AMANDA is not set ++# CONFIG_IP_NF_PPTP is not set ++CONFIG_IP_NF_QUEUE=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_LIMIT=m ++CONFIG_IP_NF_MATCH_IPRANGE=m ++CONFIG_IP_NF_MATCH_MAC=m ++CONFIG_IP_NF_MATCH_PKTTYPE=m ++# CONFIG_IP_NF_MATCH_MARK is not set ++# CONFIG_IP_NF_MATCH_MULTIPORT is not set ++# CONFIG_IP_NF_MATCH_TOS is not set ++# CONFIG_IP_NF_MATCH_RECENT is not set ++# CONFIG_IP_NF_MATCH_ECN is not set ++# CONFIG_IP_NF_MATCH_DSCP is not set ++# CONFIG_IP_NF_MATCH_AH_ESP is not set ++# CONFIG_IP_NF_MATCH_LENGTH is not set ++# CONFIG_IP_NF_MATCH_TTL is not set ++# CONFIG_IP_NF_MATCH_TCPMSS is not set ++# CONFIG_IP_NF_MATCH_HELPER is not set ++# CONFIG_IP_NF_MATCH_STATE is not set ++# CONFIG_IP_NF_MATCH_CONNTRACK is not set ++# CONFIG_IP_NF_MATCH_OWNER is not set ++# CONFIG_IP_NF_MATCH_PHYSDEV is not set ++# CONFIG_IP_NF_MATCH_ADDRTYPE is not set ++# CONFIG_IP_NF_MATCH_REALM is not set ++# CONFIG_IP_NF_MATCH_SCTP is not set ++# CONFIG_IP_NF_MATCH_DCCP is not set ++# CONFIG_IP_NF_MATCH_COMMENT is not set ++# CONFIG_IP_NF_MATCH_CONNMARK is not set ++# CONFIG_IP_NF_MATCH_CONNBYTES is not set ++# CONFIG_IP_NF_MATCH_HASHLIMIT is not set ++# CONFIG_IP_NF_MATCH_STRING is not set ++# CONFIG_IP_NF_FILTER is not set ++# CONFIG_IP_NF_TARGET_LOG is not set ++# CONFIG_IP_NF_TARGET_ULOG is not set ++# CONFIG_IP_NF_TARGET_TCPMSS is not set ++# CONFIG_IP_NF_TARGET_NFQUEUE is not set ++# CONFIG_IP_NF_NAT is not set ++CONFIG_IP_NF_MANGLE=m ++# CONFIG_IP_NF_TARGET_TOS is not set ++# CONFIG_IP_NF_TARGET_ECN is not set ++# CONFIG_IP_NF_TARGET_DSCP is not set ++# CONFIG_IP_NF_TARGET_MARK is not set ++# CONFIG_IP_NF_TARGET_CLASSIFY is not set ++# CONFIG_IP_NF_TARGET_TTL is not set ++# CONFIG_IP_NF_TARGET_CONNMARK is not set ++# CONFIG_IP_NF_TARGET_CLUSTERIP is not set ++# CONFIG_IP_NF_RAW is not set ++# CONFIG_IP_NF_ARPTABLES is not set ++ ++# ++# IPv6: Netfilter Configuration (EXPERIMENTAL) ++# ++CONFIG_IP6_NF_QUEUE=m ++CONFIG_IP6_NF_IPTABLES=m ++# CONFIG_IP6_NF_MATCH_LIMIT is not set ++CONFIG_IP6_NF_MATCH_MAC=m ++CONFIG_IP6_NF_MATCH_RT=m ++# CONFIG_IP6_NF_MATCH_OPTS is not set ++# CONFIG_IP6_NF_MATCH_FRAG is not set ++# CONFIG_IP6_NF_MATCH_HL is not set ++# CONFIG_IP6_NF_MATCH_MULTIPORT is not set ++# CONFIG_IP6_NF_MATCH_OWNER is not set ++# CONFIG_IP6_NF_MATCH_MARK is not set ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++# CONFIG_IP6_NF_MATCH_AHESP is not set ++# CONFIG_IP6_NF_MATCH_LENGTH is not set ++# CONFIG_IP6_NF_MATCH_EUI64 is not set ++# CONFIG_IP6_NF_MATCH_PHYSDEV is not set ++CONFIG_IP6_NF_FILTER=m ++# CONFIG_IP6_NF_TARGET_LOG is not set ++# CONFIG_IP6_NF_TARGET_REJECT is not set ++# CONFIG_IP6_NF_TARGET_NFQUEUE is not set ++CONFIG_IP6_NF_MANGLE=m ++# CONFIG_IP6_NF_TARGET_MARK is not set ++# CONFIG_IP6_NF_TARGET_HL is not set ++CONFIG_IP6_NF_RAW=m ++ ++# ++# Bridge: Netfilter Configuration ++# ++CONFIG_BRIDGE_NF_EBTABLES=m ++# CONFIG_BRIDGE_EBT_BROUTE is not set ++# CONFIG_BRIDGE_EBT_T_FILTER is not set ++# CONFIG_BRIDGE_EBT_T_NAT is not set ++# CONFIG_BRIDGE_EBT_802_3 is not set ++# CONFIG_BRIDGE_EBT_AMONG is not set ++# CONFIG_BRIDGE_EBT_ARP is not set ++# CONFIG_BRIDGE_EBT_IP is not set ++# CONFIG_BRIDGE_EBT_LIMIT is not set ++# CONFIG_BRIDGE_EBT_MARK is not set ++# CONFIG_BRIDGE_EBT_PKTTYPE is not set ++# CONFIG_BRIDGE_EBT_STP is not set ++# CONFIG_BRIDGE_EBT_VLAN is not set ++# CONFIG_BRIDGE_EBT_ARPREPLY is not set ++# CONFIG_BRIDGE_EBT_DNAT is not set ++# CONFIG_BRIDGE_EBT_MARK_T is not set ++# CONFIG_BRIDGE_EBT_REDIRECT is not set ++# CONFIG_BRIDGE_EBT_SNAT is not set ++# CONFIG_BRIDGE_EBT_LOG is not set ++# CONFIG_BRIDGE_EBT_ULOG 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=y ++# 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=m ++ ++# ++# IrDA protocols ++# ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++ ++# ++# IrDA options ++# ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++# CONFIG_IRDA_DEBUG is not set ++ ++# ++# Infrared-port device drivers ++# ++ ++# ++# SIR device drivers ++# ++# CONFIG_IRTTY_SIR is not set ++ ++# ++# Dongle support ++# ++ ++# ++# Old SIR device drivers ++# ++# CONFIG_IRPORT_SIR is not set ++ ++# ++# Old Serial dongle support ++# ++ ++# ++# FIR device drivers ++# ++# 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=m ++CONFIG_SMC_IRCC_FIR=m ++# CONFIG_ALI_FIR is not set ++# CONFIG_VIA_FIR is not set ++CONFIG_BT=m ++CONFIG_BT_L2CAP=m ++# CONFIG_BT_SCO is not set ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++ ++# ++# Bluetooth device drivers ++# ++# CONFIG_BT_HCIUSB is not set ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_H4=y ++CONFIG_BT_HCIUART_BCSP=y ++# CONFIG_BT_HCIUART_BCSP_TXCRC is not set ++# CONFIG_BT_HCIBCM203X is not set ++# CONFIG_BT_HCIBPA10X is not set ++# CONFIG_BT_HCIBFUSB is not set ++# CONFIG_BT_HCIDTL1 is not set ++# CONFIG_BT_HCIBT3C is not set ++# CONFIG_BT_HCIBLUECARD is not set ++# CONFIG_BT_HCIBTUART is not set ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_H6300=m ++# CONFIG_IEEE80211 is not set ++ ++# ++# Device Drivers ++# ++ ++# ++# Generic Driver Options ++# ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++CONFIG_FW_LOADER=y ++# CONFIG_DEBUG_DRIVER is not set ++ ++# ++# Memory Technology Devices (MTD) ++# ++CONFIG_MTD=y ++# CONFIG_MTD_DEBUG is not set ++CONFIG_MTD_CONCAT=y ++CONFIG_MTD_PARTITIONS=y ++CONFIG_MTD_REDBOOT_PARTS=y ++CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 ++# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set ++# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set ++# CONFIG_MTD_CMDLINE_PARTS is not set ++# CONFIG_MTD_AFS_PARTS is not set ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++CONFIG_MTD_CFI=m ++CONFIG_MTD_JEDECPROBE=m ++CONFIG_MTD_GEN_PROBE=m ++CONFIG_MTD_CFI_ADV_OPTIONS=y ++CONFIG_MTD_CFI_NOSWAP=y ++# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set ++# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set ++# CONFIG_MTD_CFI_GEOMETRY is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set ++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_I4 is not set ++# CONFIG_MTD_CFI_I8 is not set ++# CONFIG_MTD_OTP is not set ++CONFIG_MTD_CFI_INTELEXT=m ++CONFIG_MTD_CFI_AMDSTD=m ++CONFIG_MTD_CFI_AMDSTD_RETRY=1 ++CONFIG_MTD_CFI_STAA=m ++CONFIG_MTD_CFI_UTIL=m ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++CONFIG_MTD_ABSENT=m ++# CONFIG_MTD_OBSOLETE_CHIPS is not set ++# CONFIG_MTD_XIP is not set ++ ++# ++# Mapping drivers for chip access ++# ++CONFIG_MTD_COMPLEX_MAPPINGS=y ++CONFIG_MTD_PHYSMAP=m ++CONFIG_MTD_PHYSMAP_START=0x8000000 ++CONFIG_MTD_PHYSMAP_LEN=0x4000000 ++CONFIG_MTD_PHYSMAP_BANKWIDTH=2 ++# CONFIG_MTD_ARM_INTEGRATOR is not set ++# CONFIG_MTD_EDB7312 is not set ++# CONFIG_MTD_IMPA7 is not set ++# CONFIG_MTD_OMAP_NOR is not set ++# CONFIG_MTD_PCMCIA is not set ++# CONFIG_MTD_PLATRAM is not set ++ ++# ++# Self-contained MTD device drivers ++# ++CONFIG_MTD_SLRAM=m ++CONFIG_MTD_PHRAM=m ++CONFIG_MTD_MTDRAM=m ++CONFIG_MTDRAM_TOTAL_SIZE=4096 ++CONFIG_MTDRAM_ERASE_SIZE=128 ++CONFIG_MTD_BLKMTD=m ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++CONFIG_MTD_DOC2000=m ++CONFIG_MTD_DOC2001=m ++CONFIG_MTD_DOC2001PLUS=m ++CONFIG_MTD_DOCPROBE=m ++CONFIG_MTD_DOCECC=m ++CONFIG_MTD_DOCPROBE_ADVANCED=y ++CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 ++CONFIG_MTD_DOCPROBE_HIGH=y ++CONFIG_MTD_DOCPROBE_55AA=y ++ ++# ++# NAND Flash Device Drivers ++# ++CONFIG_MTD_NAND=m ++# CONFIG_MTD_NAND_VERIFY_WRITE is not set ++# CONFIG_MTD_NAND_TOTO is not set ++CONFIG_MTD_NAND_IDS=m ++CONFIG_MTD_NAND_DISKONCHIP=m ++CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y ++CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x0 ++# CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH is not set ++CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y ++# CONFIG_MTD_NAND_NANDSIM 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=m ++# CONFIG_BLK_DEV_NBD is not set ++# CONFIG_BLK_DEV_UB is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=16 ++CONFIG_BLK_DEV_RAM_SIZE=16384 ++CONFIG_BLK_DEV_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 ++ ++# ++# ATA/ATAPI/MFM/RLL support ++# ++# CONFIG_IDE 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 ++# ++# CONFIG_IEEE1394 is not set ++ ++# ++# 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=y ++ ++# ++# Obsolete Wireless cards support (pre-802.11) ++# ++CONFIG_STRIP=y ++# CONFIG_PCMCIA_WAVELAN is not set ++# CONFIG_PCMCIA_NETWAVE is not set ++ ++# ++# Wireless 802.11 Frequency Hopping cards support ++# ++# CONFIG_PCMCIA_RAYCS is not set ++ ++# ++# Wireless 802.11b ISA/PCI cards support ++# ++# CONFIG_AIRO is not set ++# CONFIG_HERMES is not set ++CONFIG_ATMEL=y ++ ++# ++# Wireless 802.11b Pcmcia/Cardbus cards support ++# ++# CONFIG_AIRO_CS is not set ++# CONFIG_PCMCIA_ATMEL is not set ++# CONFIG_PCMCIA_WL3501 is not set ++# CONFIG_HOSTAP is not set ++CONFIG_NET_WIRELESS=y ++CONFIG_ACX=m ++# CONFIG_ACX_USB is not set ++CONFIG_ACX_CFI=y ++ ++# ++# PCMCIA network device support ++# ++# CONFIG_NET_PCMCIA is not set ++ ++# ++# Wan interfaces ++# ++# CONFIG_WAN is not set ++CONFIG_PPP=y ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_ASYNC=y ++CONFIG_PPP_SYNC_TTY=y ++CONFIG_PPP_DEFLATE=y ++CONFIG_PPP_BSDCOMP=y ++CONFIG_PPPOE=y ++# CONFIG_SLIP is not set ++# CONFIG_SHAPER is not set ++# CONFIG_NETCONSOLE is not set ++# CONFIG_NETPOLL is not set ++# CONFIG_NET_POLL_CONTROLLER is not set ++ ++# ++# ISDN subsystem ++# ++# CONFIG_ISDN is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++ ++# ++# Userland interfaces ++# ++# CONFIG_INPUT_MOUSEDEV is not set ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_TSDEV=y ++CONFIG_INPUT_TSDEV_SCREEN_X=240 ++CONFIG_INPUT_TSDEV_SCREEN_Y=320 ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++# CONFIG_KEYBOARD_ATKBD is not set ++# CONFIG_KEYBOARD_SUNKBD is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++# CONFIG_KEYBOARD_XTKBD is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++CONFIG_KEYBOARD_OMAP=m ++CONFIG_INPUT_MOUSE=y ++CONFIG_MOUSE_PS2=y ++CONFIG_MOUSE_SERIAL=y ++# CONFIG_MOUSE_VSXXXAA is not set ++# CONFIG_INPUT_JOYSTICK is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_GUNZE is not set ++# CONFIG_TOUCHSCREEN_ELO is not set ++# CONFIG_TOUCHSCREEN_MTOUCH is not set ++# CONFIG_TOUCHSCREEN_MK712 is not set ++CONFIG_TOUCHSCREEN_OMAP=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_UINPUT=m ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++CONFIG_SERIO_LIBPS2=y ++CONFIG_SERIO_RAW=y ++# CONFIG_GAMEPORT is not set ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_HW_CONSOLE=y ++# CONFIG_SERIAL_NONSTANDARD is not set ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_CONSOLE is not set ++# CONFIG_SERIAL_8250_CS is not set ++CONFIG_SERIAL_8250_NR_UARTS=4 ++# CONFIG_SERIAL_8250_EXTENDED is not set ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_CORE=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=256 ++ ++# ++# IPMI ++# ++# CONFIG_IPMI_HANDLER is not set ++ ++# ++# Watchdog Cards ++# ++CONFIG_WATCHDOG=y ++CONFIG_WATCHDOG_NOWAYOUT=y ++ ++# ++# Watchdog Device Drivers ++# ++CONFIG_SOFT_WATCHDOG=m ++ ++# ++# USB-based Watchdog Cards ++# ++# CONFIG_USBPCWATCHDOG is not set ++CONFIG_NVRAM=y ++# CONFIG_RTC is not set ++CONFIG_OMAP_RTC=y ++# CONFIG_DTLK is not set ++# CONFIG_R3964 is not set ++ ++# ++# Ftape, the floppy tape device driver ++# ++ ++# ++# PCMCIA character devices ++# ++# CONFIG_SYNCLINK_CS is not set ++# CONFIG_RAW_DRIVER is not set ++ ++# ++# TPM devices ++# ++ ++# ++# I2C support ++# ++CONFIG_I2C=m ++CONFIG_I2C_CHARDEV=m ++ ++# ++# I2C Algorithms ++# ++CONFIG_I2C_ALGOBIT=m ++CONFIG_I2C_ALGOPCF=m ++CONFIG_I2C_ALGOPCA=m ++ ++# ++# I2C Hardware Bus support ++# ++CONFIG_I2C_PARPORT_LIGHT=m ++# CONFIG_I2C_STUB is not set ++# CONFIG_I2C_PCA_ISA is not set ++CONFIG_I2C_OMAP=m ++ ++# ++# 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_PCA9535=m ++# CONFIG_SENSORS_PCF8591 is not set ++# CONFIG_SENSORS_RTC8564 is not set ++# CONFIG_TPS65010 is not set ++CONFIG_SENSORS_TLV320AIC23=m ++# 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_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 ++ ++# ++# Misc devices ++# ++ ++# ++# Multimedia Capabilities Port drivers ++# ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++ ++# ++# Digital Video Broadcasting 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=y ++# 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 is not set ++# 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=y ++# 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 is not set ++CONFIG_LOGO_LINUX_VGA16=y ++# CONFIG_LOGO_LINUX_CLUT224 is not set ++CONFIG_BACKLIGHT_LCD_SUPPORT=y ++CONFIG_BACKLIGHT_CLASS_DEVICE=y ++CONFIG_BACKLIGHT_DEVICE=y ++CONFIG_LCD_CLASS_DEVICE=y ++CONFIG_LCD_DEVICE=y ++ ++# ++# Telephony Support ++# ++CONFIG_PHONE=m ++# CONFIG_PHONE_IXJ is not set ++CONFIG_GSM_H6300=m ++ ++# ++# Sound ++# ++CONFIG_SOUND=m ++ ++# ++# Advanced Linux Sound Architecture ++# ++# CONFIG_SND is not set ++ ++# ++# Open Sound System ++# ++CONFIG_SOUND_PRIME=m ++CONFIG_SOUND_OMAP=m ++CONFIG_SOUND_OMAP_TSC2101=m ++# 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 ++ ++# ++# USB support ++# ++CONFIG_USB_ARCH_HAS_HCD=y ++CONFIG_USB_ARCH_HAS_OHCI=y ++CONFIG_USB=y ++CONFIG_USB_DEBUG=y ++ ++# ++# Miscellaneous USB options ++# ++CONFIG_USB_DEVICEFS=y ++# CONFIG_USB_BANDWIDTH is not set ++# CONFIG_USB_DYNAMIC_MINORS is not set ++# CONFIG_USB_SUSPEND is not set ++# CONFIG_USB_OTG is not set ++ ++# ++# USB Host Controller Drivers ++# ++# CONFIG_USB_ISP116X_HCD is not set ++CONFIG_USB_OHCI_HCD=y ++# 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_OBSOLETE_OSS_USB_DRIVER is not set ++ ++# ++# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem ++# ++CONFIG_USB_ACM=y ++# 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 Input Devices ++# ++# CONFIG_USB_HID is not set ++ ++# ++# USB HID Boot Protocol drivers ++# ++# CONFIG_USB_KBD 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_MDC800 is not set ++ ++# ++# USB Multimedia devices ++# ++# CONFIG_USB_DABUSB is not set ++ ++# ++# Video4Linux support is needed for USB Multimedia device support ++# ++ ++# ++# USB Network Adapters ++# ++# CONFIG_USB_CATC is not set ++# CONFIG_USB_KAWETH is not set ++# CONFIG_USB_PEGASUS is not set ++# CONFIG_USB_RTL8150 is not set ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=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_ZD1201 is not set ++CONFIG_USB_MON=y ++ ++# ++# USB port drivers ++# ++ ++# ++# USB Serial Converter support ++# ++CONFIG_USB_SERIAL=y ++CONFIG_USB_SERIAL_CONSOLE=y ++CONFIG_USB_SERIAL_GENERIC=y ++# CONFIG_USB_SERIAL_AIRPRIME is not set ++# CONFIG_USB_SERIAL_BELKIN is not set ++# CONFIG_USB_SERIAL_WHITEHEAT is not set ++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set ++# CONFIG_USB_SERIAL_CP2101 is not set ++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set ++# CONFIG_USB_SERIAL_EMPEG is not set ++# CONFIG_USB_SERIAL_FTDI_SIO is not set ++CONFIG_USB_SERIAL_VISOR=y ++CONFIG_USB_SERIAL_IPAQ=y ++# CONFIG_USB_SERIAL_IR is not set ++# CONFIG_USB_SERIAL_EDGEPORT is not set ++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set ++# CONFIG_USB_SERIAL_GARMIN is not set ++# CONFIG_USB_SERIAL_IPW is not set ++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set ++# CONFIG_USB_SERIAL_KEYSPAN is not set ++# CONFIG_USB_SERIAL_KLSI is not set ++# CONFIG_USB_SERIAL_KOBIL_SCT is not set ++# CONFIG_USB_SERIAL_MCT_U232 is not set ++# CONFIG_USB_SERIAL_PL2303 is not set ++# CONFIG_USB_SERIAL_HP4X is not set ++# CONFIG_USB_SERIAL_SAFE is not set ++# CONFIG_USB_SERIAL_TI is not set ++# CONFIG_USB_SERIAL_CYBERJACK is not set ++# CONFIG_USB_SERIAL_XIRCOM is not set ++# CONFIG_USB_SERIAL_OPTION is not set ++# CONFIG_USB_SERIAL_OMNINET is not set ++ ++# ++# USB Miscellaneous drivers ++# ++# CONFIG_USB_EMI62 is not set ++# CONFIG_USB_EMI26 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 DSL modem support ++# ++ ++# ++# USB Gadget Support ++# ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_DEBUG_FILES=y ++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_LH7A40X is not set ++CONFIG_USB_GADGET_OMAP=y ++CONFIG_USB_OMAP=y ++# 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_ETH_RNDIS is not set ++# CONFIG_USB_GADGETFS is not set ++# CONFIG_USB_FILE_STORAGE is not set ++# CONFIG_USB_G_SERIAL is not set ++ ++# ++# MMC/SD Card support ++# ++CONFIG_MMC=y ++# CONFIG_MMC_DEBUG is not set ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BROKEN_RFD=y ++CONFIG_MMC_BULKTRANSFER=y ++CONFIG_MMC_OMAP=y ++# CONFIG_MMC_WBSD is not set ++ ++# ++# Synchronous Serial Interfaces (SSI) ++# ++CONFIG_OMAP_UWIRE=y ++CONFIG_OMAP_TSC2101=y ++ ++# ++# File systems ++# ++CONFIG_EXT2_FS=y ++CONFIG_EXT2_FS_XATTR=y ++CONFIG_EXT2_FS_POSIX_ACL=y ++CONFIG_EXT2_FS_SECURITY=y ++# 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=y ++# 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 is not set ++# CONFIG_AUTOFS_FS is not set ++CONFIG_AUTOFS4_FS=y ++# 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=y ++CONFIG_FAT_DEFAULT_CODEPAGE=437 ++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++# CONFIG_HUGETLBFS 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=y ++CONFIG_JFFS_FS_VERBOSE=0 ++CONFIG_JFFS_PROC_FS=y ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=4 ++CONFIG_JFFS2_FS_WRITEBUFFER=y ++CONFIG_JFFS2_COMPRESSION_OPTIONS=y ++CONFIG_JFFS2_ZLIB=y ++CONFIG_JFFS2_RTIME=y ++CONFIG_JFFS2_RUBIN=y ++# CONFIG_JFFS2_CMODE_NONE is not set ++CONFIG_JFFS2_CMODE_PRIORITY=y ++# CONFIG_JFFS2_CMODE_SIZE is not set ++CONFIG_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=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="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++CONFIG_NLS_ISO8859_1=y ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++CONFIG_NLS_UTF8=y ++ ++# ++# 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=17 ++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 is not set ++# 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 ++CONFIG_DEBUG_ERRORS=y ++CONFIG_DEBUG_LL=y ++# CONFIG_DEBUG_ICEDCC is not set ++ ++# ++# Security options ++# ++# CONFIG_KEYS is not set ++# CONFIG_SECURITY is not set ++ ++# ++# Cryptographic options ++# ++CONFIG_CRYPTO=y ++CONFIG_CRYPTO_HMAC=y ++# CONFIG_CRYPTO_NULL is not set ++# CONFIG_CRYPTO_MD4 is not set ++CONFIG_CRYPTO_MD5=y ++CONFIG_CRYPTO_SHA1=y ++# 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_SERPENT is not set ++# CONFIG_CRYPTO_AES is not set ++# CONFIG_CRYPTO_CAST5 is not set ++# CONFIG_CRYPTO_CAST6 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=m ++# 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=y ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_REED_SOLOMON=m ++CONFIG_REED_SOLOMON_DEC16=y +diff -Naur linux-2.6.14-omap2/arch/arm/Kconfig linux-h6300-omap2-2.6.14.3/arch/arm/Kconfig +--- linux-2.6.14-omap2/arch/arm/Kconfig 2005-12-02 01:53:31.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/Kconfig 2005-10-14 18:55:31.000000000 +0300 @@ -725,6 +725,8 @@ source "drivers/video/Kconfig" @@ -10,9 +1552,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/Kconfig bt_ke source "sound/Kconfig" source "drivers/usb/Kconfig" -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/board-h6300.c bt_kernel/arch/arm/mach-omap1/board-h6300.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/board-h6300.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/arch/arm/mach-omap1/board-h6300.c 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/arch/arm/mach-omap1/board-h6300.c linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/board-h6300.c +--- linux-2.6.14-omap2/arch/arm/mach-omap1/board-h6300.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/board-h6300.c 2005-10-22 03:52:45.000000000 +0300 @@ -0,0 +1,317 @@ +/* + * Modified from board-h6300.c @@ -331,9 +1873,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/bo + .init_machine = h6300_init, + .timer = &omap_timer, +MACHINE_END -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Kconfig bt_kernel/arch/arm/mach-omap1/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Kconfig 2005-10-30 17:44:15.310427101 +0200 -+++ bt_kernel/arch/arm/mach-omap1/Kconfig 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/arch/arm/mach-omap1/Kconfig linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/Kconfig +--- linux-2.6.14-omap2/arch/arm/mach-omap1/Kconfig 2005-12-02 01:53:31.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/Kconfig 2005-10-22 03:52:45.000000000 +0300 @@ -26,6 +26,12 @@ TI OMAP 1510 or 1610 Innovator board support. Say Y here if you have such a board. @@ -347,9 +1889,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Kc config MACH_OMAP_H2 bool "TI H2 Support" depends on ARCH_OMAP1 && ARCH_OMAP16XX -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Makefile bt_kernel/arch/arm/mach-omap1/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Makefile 2005-10-30 17:44:15.334423281 +0200 -+++ bt_kernel/arch/arm/mach-omap1/Makefile 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/arch/arm/mach-omap1/Makefile linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/Makefile +--- linux-2.6.14-omap2/arch/arm/mach-omap1/Makefile 2005-12-02 01:53:31.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/Makefile 2005-10-22 03:52:45.000000000 +0300 @@ -15,7 +15,8 @@ obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o @@ -360,44 +1902,35 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap1/Ma ifeq ($(CONFIG_ARCH_OMAP15XX),y) # Innovator-1510 FPGA -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap2/clock.h bt_kernel/arch/arm/mach-omap2/clock.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/mach-omap2/clock.h 2005-10-30 17:44:15.870337978 +0200 -+++ bt_kernel/arch/arm/mach-omap2/clock.h 2005-10-30 16:32:39.609796000 +0200 -@@ -1469,7 +1469,7 @@ - .parent = &l4_ck, - .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, - .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, -- .enable_bit = 3, -+ .enable_bit = 2, - .recalc = &omap2_followparent_recalc, - }; - -@@ -1478,7 +1478,7 @@ - .parent = &func_48m_ck, - .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, - .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, -- .enable_bit = 3, -+ .enable_bit = 2, - .recalc = &omap2_followparent_recalc, - }; - -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/devices.c bt_kernel/arch/arm/plat-omap/devices.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/devices.c 2005-10-30 17:44:16.144294371 +0200 -+++ bt_kernel/arch/arm/plat-omap/devices.c 2005-10-22 03:52:45.687256000 +0300 -@@ -93,6 +93,9 @@ - (void) platform_device_register(&omap_i2c_device1); - } +diff -Naur linux-2.6.14-omap2/arch/arm/mach-omap1/mux.c linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/mux.c +--- linux-2.6.14-omap2/arch/arm/mach-omap1/mux.c 2005-12-02 01:53:32.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/mach-omap1/mux.c 2005-11-11 04:13:42.000000000 +0200 +@@ -196,6 +196,13 @@ + MUX_CFG("P15_1610_UWIRE_CS3", 8, 12, 1, 1, 22, 0, 1, 1, 1) + MUX_CFG("N15_1610_UWIRE_CS1", 7, 18, 2, 1, 14, 0, NA, 0, 1) -+#else -+static inline void omap_init_i2c(void) {} -+ - #endif ++/* OMAP-1510 uWire */ ++MUX_CFG("P15_1510_UWIRE_CS3", 8, 12, 1, NA, 0, 0, NA, 0, 1) ++MUX_CFG("N14_1510_UWIRE_CS0", 8, 9, 1, NA, 0, 0, NA, 0, 1) ++MUX_CFG("V19_1510_UWIRE_SCLK", 8, 6, 0, NA, 0, 0, NA, 0, 1) ++MUX_CFG("W21_1510_UWIRE_SDO", 8, 3, 0, NA, 0, 0, NA, 0, 1) ++MUX_CFG("U18_1510_UWIRE_SDI", 8, 0, 0, 1, 18, 0, NA, 0, 1) ++ + /* OMAP-1610 Flash */ + MUX_CFG("L3_1610_FLASH_CS2B_OE",10, 6, 1, NA, 0, 0, NA, 0, 1) + MUX_CFG("M8_1610_FLASH_CS2B_WE",10, 3, 1, NA, 0, 0, NA, 0, 1) +@@ -258,6 +265,7 @@ + MUX_CFG("T20_1610_LOW_PWR", 7, 12, 1, NA, 0, 0, NA, 0, 0) - /*-------------------------------------------------------------------------*/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/dma.c bt_kernel/arch/arm/plat-omap/dma.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/dma.c 2005-10-30 17:44:16.167290711 +0200 -+++ bt_kernel/arch/arm/plat-omap/dma.c 2005-10-30 16:32:39.609796000 +0200 -@@ -28,6 +28,7 @@ + /* MCLK Settings */ ++MUX_CFG("R10_1510_MCLK_ON", B, 18, 0, 2, 22, 1, NA, 1, 1) + MUX_CFG("V5_1710_MCLK_ON", B, 15, 0, NA, 0, 0, NA, 0, 0) + MUX_CFG("V5_1710_MCLK_OFF", B, 15, 6, NA, 0, 0, NA, 0, 0) + MUX_CFG("R10_1610_MCLK_ON", B, 18, 0, NA, 22, 0, NA, 1, 0) +diff -Naur linux-2.6.14-omap2/arch/arm/plat-omap/dma.c linux-h6300-omap2-2.6.14.3/arch/arm/plat-omap/dma.c +--- linux-2.6.14-omap2/arch/arm/plat-omap/dma.c 2005-12-02 01:53:32.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/plat-omap/dma.c 2005-11-11 04:13:42.000000000 +0200 +@@ -30,6 +30,7 @@ #include <asm/hardware.h> #include <asm/dma.h> #include <asm/io.h> @@ -405,69 +1938,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/dma #include <asm/arch/tc.h> -@@ -121,7 +122,8 @@ - } - - void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, -- int frame_count, int sync_mode) -+ int frame_count, int sync_mode, -+ int dma_trigger, int src_or_dst_synch) - { - u16 w; - -@@ -179,7 +181,8 @@ - - - void omap_set_dma_src_params(int lch, int src_port, int src_amode, -- unsigned long src_start) -+ unsigned long src_start, -+ int src_ei, int src_fi) - { - u16 w; - -@@ -221,7 +224,14 @@ - case OMAP_DMA_DATA_BURST_DIS: - break; - case OMAP_DMA_DATA_BURST_4: -- w |= (0x01 << 7); -+ if (machine_is_h6300()) -+ { -+ w |= (0x01 << 7); -+ } -+ else -+ { -+ w |= (0x02 << 7); -+ } - break; - case OMAP_DMA_DATA_BURST_8: - /* not supported by current hardware -@@ -235,7 +245,8 @@ - } - - void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, -- unsigned long dest_start) -+ unsigned long dest_start, -+ int dst_ei, int dst_fi) - { - u16 w; - -@@ -277,7 +288,14 @@ - case OMAP_DMA_DATA_BURST_DIS: - break; - case OMAP_DMA_DATA_BURST_4: -- w |= (0x01 << 14); -+ if (machine_is_h6300()) -+ { -+ w |= (0x01 << 14); -+ } -+ else -+ { -+ w |= (0x02 << 14); -+ } - break; - case OMAP_DMA_DATA_BURST_8: - w |= (0x03 << 14); -@@ -769,6 +787,10 @@ +@@ -1086,6 +1087,10 @@ } if (omap_dma_in_1510_mode()) { @@ -478,60 +1949,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/dma omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U); omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L); omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/mcbsp.c bt_kernel/arch/arm/plat-omap/mcbsp.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/plat-omap/mcbsp.c 2005-10-30 17:44:16.477241375 +0200 -+++ bt_kernel/arch/arm/plat-omap/mcbsp.c 2005-10-30 16:32:39.609796000 +0200 -@@ -493,17 +493,20 @@ - omap_set_dma_transfer_params(mcbsp[id].dma_tx_lch, - OMAP_DMA_DATA_TYPE_S16, - length >> 1, 1, -- OMAP_DMA_SYNC_ELEMENT); -+ OMAP_DMA_SYNC_ELEMENT, -+ 0, 0); - - omap_set_dma_dest_params(mcbsp[id].dma_tx_lch, - OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- mcbsp[id].io_base + OMAP_MCBSP_REG_DXR1); -+ mcbsp[id].io_base + OMAP_MCBSP_REG_DXR1, -+ 0, 0); - - omap_set_dma_src_params(mcbsp[id].dma_tx_lch, - OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- buffer); -+ buffer, -+ 0, 0); - - omap_start_dma(mcbsp[id].dma_tx_lch); - wait_for_completion(&(mcbsp[id].tx_dma_completion)); -@@ -533,17 +536,20 @@ - omap_set_dma_transfer_params(mcbsp[id].dma_rx_lch, - OMAP_DMA_DATA_TYPE_S16, - length >> 1, 1, -- OMAP_DMA_SYNC_ELEMENT); -+ OMAP_DMA_SYNC_ELEMENT, -+ 0, 0); - - omap_set_dma_src_params(mcbsp[id].dma_rx_lch, - OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- mcbsp[id].io_base + OMAP_MCBSP_REG_DRR1); -+ mcbsp[id].io_base + OMAP_MCBSP_REG_DRR1, -+ 0, 0); - - omap_set_dma_dest_params(mcbsp[id].dma_rx_lch, - OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- buffer); -+ buffer, -+ 0, 0); - - omap_start_dma(mcbsp[id].dma_rx_lch); - wait_for_completion(&(mcbsp[id].rx_dma_completion)); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/tools/mach-types bt_kernel/arch/arm/tools/mach-types ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/tools/mach-types 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/arch/arm/tools/mach-types 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/arch/arm/tools/mach-types linux-h6300-omap2-2.6.14.3/arch/arm/tools/mach-types +--- linux-2.6.14-omap2/arch/arm/tools/mach-types 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/arch/arm/tools/mach-types 2005-10-22 03:52:45.000000000 +0300 @@ -576,7 +576,7 @@ s3c2460 MACH_S3C2460 S3C2460 560 pdm MACH_PDM PDM 561 @@ -541,9 +1961,125 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/arch/arm/tools/mach-ty rz1700 MACH_RZ1700 RZ1700 564 a716 MACH_A716 A716 565 estk2440a MACH_ESTK2440A ESTK2440A 566 -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Kconfig bt_kernel/drivers/bluetooth/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Kconfig 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/bluetooth/Kconfig 2005-10-04 00:58:34.589442000 +0300 +diff -Naur linux-2.6.14-omap2/arch/i386/kernel/cpu/mtrr/main.c linux-h6300-omap2-2.6.14.3/arch/i386/kernel/cpu/mtrr/main.c +--- linux-2.6.14-omap2/arch/i386/kernel/cpu/mtrr/main.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/arch/i386/kernel/cpu/mtrr/main.c 2005-12-02 01:34:34.000000000 +0200 +@@ -626,6 +626,14 @@ + if (cpuid_eax(0x80000000) >= 0x80000008) { + u32 phys_addr; + phys_addr = cpuid_eax(0x80000008) & 0xff; ++ /* CPUID workaround for Intel 0F33/0F34 CPU */ ++ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL && ++ boot_cpu_data.x86 == 0xF && ++ boot_cpu_data.x86_model == 0x3 && ++ (boot_cpu_data.x86_mask == 0x3 || ++ boot_cpu_data.x86_mask == 0x4)) ++ phys_addr = 36; ++ + size_or_mask = ~((1 << (phys_addr - PAGE_SHIFT)) - 1); + size_and_mask = ~size_or_mask & 0xfff00000; + } else if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR && +diff -Naur linux-2.6.14-omap2/arch/ppc64/Kconfig linux-h6300-omap2-2.6.14.3/arch/ppc64/Kconfig +--- linux-2.6.14-omap2/arch/ppc64/Kconfig 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/arch/ppc64/Kconfig 2005-12-02 01:34:35.000000000 +0200 +@@ -234,6 +234,10 @@ + This option enables hardware multithreading on RS64 cpus. + pSeries systems p620 and p660 have such a cpu type. + ++config NUMA ++ bool "NUMA support" ++ default y if DISCONTIGMEM || SPARSEMEM ++ + config ARCH_SELECT_MEMORY_MODEL + def_bool y + +@@ -249,9 +253,6 @@ + def_bool y + depends on ARCH_DISCONTIGMEM_ENABLE + +-config ARCH_FLATMEM_ENABLE +- def_bool y +- + config ARCH_SPARSEMEM_ENABLE + def_bool y + depends on ARCH_DISCONTIGMEM_ENABLE +@@ -274,10 +275,6 @@ + def_bool y + depends on NEED_MULTIPLE_NODES + +-config NUMA +- bool "NUMA support" +- default y if DISCONTIGMEM || SPARSEMEM +- + config SCHED_SMT + bool "SMT (Hyperthreading) scheduler support" + depends on SMP +diff -Naur linux-2.6.14-omap2/arch/s390/appldata/appldata_base.c linux-h6300-omap2-2.6.14.3/arch/s390/appldata/appldata_base.c +--- linux-2.6.14-omap2/arch/s390/appldata/appldata_base.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/arch/s390/appldata/appldata_base.c 2005-11-23 01:44:02.000000000 +0200 +@@ -592,12 +592,15 @@ + */ + void appldata_unregister_ops(struct appldata_ops *ops) + { ++ void *table; + spin_lock(&appldata_ops_lock); +- unregister_sysctl_table(ops->sysctl_header); + list_del(&ops->list); +- kfree(ops->ctl_table); ++ /* at that point any incoming access will fail */ ++ table = ops->ctl_table; + ops->ctl_table = NULL; + spin_unlock(&appldata_ops_lock); ++ unregister_sysctl_table(ops->sysctl_header); ++ kfree(table); + P_INFO("%s-ops unregistered!\n", ops->name); + } + /********************** module-ops management <END> **************************/ +diff -Naur linux-2.6.14-omap2/arch/x86_64/kernel/setup.c linux-h6300-omap2-2.6.14.3/arch/x86_64/kernel/setup.c +--- linux-2.6.14-omap2/arch/x86_64/kernel/setup.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/arch/x86_64/kernel/setup.c 2005-12-02 01:34:35.000000000 +0200 +@@ -993,6 +993,11 @@ + unsigned eax = cpuid_eax(0x80000008); + c->x86_virt_bits = (eax >> 8) & 0xff; + c->x86_phys_bits = eax & 0xff; ++ /* CPUID workaround for Intel 0F34 CPU */ ++ if (c->x86_vendor == X86_VENDOR_INTEL && ++ c->x86 == 0xF && c->x86_model == 0x3 && ++ c->x86_mask == 0x4) ++ c->x86_phys_bits = 36; + } + + if (c->x86 == 15) +diff -Naur linux-2.6.14-omap2/drivers/block/cfq-iosched.c linux-h6300-omap2-2.6.14.3/drivers/block/cfq-iosched.c +--- linux-2.6.14-omap2/drivers/block/cfq-iosched.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/block/cfq-iosched.c 2005-11-23 01:44:02.000000000 +0200 +@@ -2260,10 +2260,8 @@ + if (!atomic_dec_and_test(&cfqd->ref)) + return; + +- blk_put_queue(q); +- + cfq_shutdown_timer_wq(cfqd); +- q->elevator->elevator_data = NULL; ++ blk_put_queue(q); + + mempool_destroy(cfqd->crq_pool); + kfree(cfqd->crq_hash); +diff -Naur linux-2.6.14-omap2/drivers/block/pktcdvd.c linux-h6300-omap2-2.6.14.3/drivers/block/pktcdvd.c +--- linux-2.6.14-omap2/drivers/block/pktcdvd.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/block/pktcdvd.c 2005-12-02 01:34:35.000000000 +0200 +@@ -1191,7 +1191,7 @@ + struct packet_data *pkt; + int i; + +- for (i = 0; i <= PACKET_NUM_STATES; i++) ++ for (i = 0; i < PACKET_NUM_STATES; i++) + states[i] = 0; + + spin_lock(&pd->cdrw.active_list_lock); +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/Kconfig linux-h6300-omap2-2.6.14.3/drivers/bluetooth/Kconfig +--- linux-2.6.14-omap2/drivers/bluetooth/Kconfig 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/Kconfig 2005-10-04 00:58:34.000000000 +0300 @@ -163,6 +163,16 @@ Say Y here to compile support for virtual HCI devices into the @@ -561,9 +2097,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Kcon endmenu -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Makefile bt_kernel/drivers/bluetooth/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Makefile 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/bluetooth/Makefile 2005-09-28 01:04:13.052737000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/Makefile linux-h6300-omap2-2.6.14.3/drivers/bluetooth/Makefile +--- linux-2.6.14-omap2/drivers/bluetooth/Makefile 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/Makefile 2005-09-28 01:04:13.000000000 +0300 @@ -10,10 +10,11 @@ obj-$(CONFIG_BT_HCIBFUSB) += bfusb.o obj-$(CONFIG_BT_HCIDTL1) += dtl1_cs.o @@ -579,9 +2115,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/Make hci_uart-$(CONFIG_BT_HCIUART_BCSP) += hci_bcsp.o -hci_uart-objs := $(hci_uart-y) +hci_uart-objs := $(hci_uart-y) -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_brf6100.c bt_kernel/drivers/bluetooth/omap/h6300_bt_brf6100.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_brf6100.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/bluetooth/omap/h6300_bt_brf6100.c 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_brf6100.c linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_brf6100.c +--- linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_brf6100.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_brf6100.c 2005-12-02 00:45:30.000000000 +0200 @@ -0,0 +1,153 @@ +/* + * Bluetooth interface driver for TI BRF6100 on h6300 @@ -612,12 +2148,12 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap + + // printk( KERN_NOTICE "h6300 configure bluetooth: %d\n", enable ); + if (enable == 0) { -+ omap_set_gpio_dataout(GPIO_N_BT_RST, 0); // turn off gpio ++ omap_set_gpio_dataout(GPIO_N_BT_RST, 1); // turn off gpio, note 1 == off for negative gpios + mdelay(5); + h6300_clear_led(INDEX_BT_LED); + } + else if (enable == 1) { -+ omap_set_gpio_dataout(GPIO_N_BT_RST, 1); // turn on gpio ++ omap_set_gpio_dataout(GPIO_N_BT_RST, 1); // turn on gpio, note 0 == on for negative gpios + mdelay(5); + } + else if (enable == 2) { @@ -666,7 +2202,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap + + omap_request_gpio(GPIO_N_BT_RST); // ask bt_reset gpio, remember to release in remove_function + omap_set_gpio_direction(GPIO_N_BT_RST, 1); // set gpio direction to be output -+ omap_set_gpio_dataout(GPIO_N_BT_RST, 1); // turn on gpio ++ omap_set_gpio_dataout(GPIO_N_BT_RST, 0); // turn on gpio, note 0 == on for negative gpios + + /* configure bluetooth UART */ + //h6300_gpio_mode(GPIO_NR_H6300_BT_RXD_MD); @@ -736,9 +2272,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap +MODULE_DESCRIPTION("iPAQ h6300 BRF6100 Bluetooth driver."); +MODULE_LICENSE("GPL"); + -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_led.c bt_kernel/drivers/bluetooth/omap/h6300_bt_led.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_led.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/bluetooth/omap/h6300_bt_led.c 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_led.c linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_led.c +--- linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_led.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_led.c 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,41 @@ +/* + * Bluetooth interface driver helper for controlling bluetooth leds available in iPAQ h6300. @@ -781,9 +2317,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap + printk(KERN_NOTICE "h6300_bt_led.c h6300_set_led() done\n"); +} +EXPORT_SYMBOL(h6300_set_led); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_led.h bt_kernel/drivers/bluetooth/omap/h6300_bt_led.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/h6300_bt_led.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/bluetooth/omap/h6300_bt_led.h 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_led.h linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_led.h +--- linux-2.6.14-omap2/drivers/bluetooth/omap/h6300_bt_led.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/h6300_bt_led.h 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,9 @@ +#ifndef H6300_BT_LED_H_ +#define H6300_BT_LED_H_ @@ -794,9 +2330,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap +void h6300_set_led(int led_num, int duty_time, int cycle_time); + +#endif /*H6300_BT_LED_H_*/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/Makefile bt_kernel/drivers/bluetooth/omap/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap/Makefile 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/bluetooth/omap/Makefile 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/bluetooth/omap/Makefile linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/Makefile +--- linux-2.6.14-omap2/drivers/bluetooth/omap/Makefile 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/bluetooth/omap/Makefile 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,6 @@ +# +# Makefile for the Linux iPAQ H6300 BRF6100 Bluetooth device drivers. @@ -804,396 +2340,228 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/bluetooth/omap + +h6300_bt-objs := h6300_bt_led.o h6300_bt_brf6100.o +obj-$(CONFIG_BT_H6300) += h6300_bt.o -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/char/.gitignore bt_kernel/drivers/char/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/char/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/char/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,3 +0,0 @@ --consolemap_deftbl.c --defkeymap.c -- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/keyboard/omap-keypad.c bt_kernel/drivers/input/keyboard/omap-keypad.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/keyboard/omap-keypad.c 2005-10-30 17:44:17.444087478 +0200 -+++ bt_kernel/drivers/input/keyboard/omap-keypad.c 2005-10-30 16:34:01.215220000 +0200 -@@ -5,10 +5,11 @@ - * - * Copyright (C) 2003 Nokia Corporation - * Written by Timo Teräs <ext-timo.teras@nokia.com> -+ * iPAQ h6300 key and joypad support added by Mika Laitio. (2005) - * - * Added support for H2 & H3 Keypad - * Copyright (C) 2004 Texas Instruments -- * -+ * - * 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 -@@ -40,6 +41,7 @@ - #include <asm/arch/mux.h> - - #undef NEW_BOARD_LEARNING_MODE -+//#define NEW_BOARD_LEARNING_MODE 1 +diff -Naur linux-2.6.14-omap2/drivers/char/rtc.c linux-h6300-omap2-2.6.14.3/drivers/char/rtc.c +--- linux-2.6.14-omap2/drivers/char/rtc.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/char/rtc.c 2005-12-02 01:34:35.000000000 +0200 +@@ -149,8 +149,22 @@ + #ifdef RTC_IRQ + static void rtc_dropped_irq(unsigned long data); - static void omap_kp_tasklet(unsigned long); - static void omap_kp_timer(unsigned long); -@@ -48,6 +50,8 @@ - static unsigned char keypad_state[8]; - static unsigned int keypad_irq = INT_KEYBOARD; - -+static int prevJoypadKeycodePressEmulated; -+ - static struct timer_list kp_timer; - DECLARE_TASKLET_DISABLED(kp_tasklet, omap_kp_tasklet, 0); - -@@ -165,6 +169,47 @@ - 0 - }; - -+#define _h6300_KEY_CALENDAR 67 // xmodmap 75 aka F9 -+#define _H6300_KEY_TELEPHONE 68 // xmodmap 76 aka F10 -+#define _H6300_KEY_HOMEPAGE 87 // xmodmap 87 aka Num_Lock -+#define _H6300_KEY_MAIL 88 // xmodmap 88 aka Scroll_Lock +-static void set_rtc_irq_bit(unsigned char bit); +-static void mask_rtc_irq_bit(unsigned char bit); ++static void set_rtc_irq_bit_locked(unsigned char bit); ++static void mask_rtc_irq_bit_locked(unsigned char bit); + -+/* -+ * Following 5 keypad events are not really sent to userspace. -+ * Instead if the good combination of them is sent, then that is send. -+ * (up, right, down, left, enter) -+ */ -+#define _H6300_JOYPAD_UP_RIGHT 1 // 00001 -+#define _H6300_JOYPAD_DOWN_RIGHT 2 // 00010 -+#define _h6300_JOYPAD_DOWN_LEFT 4 // 00100 -+#define _h6300_JOYPAD_UP_LEFT 8 // 01000 -+#define _H6300_JOYPAD_KEY_OK 16 // 10000 -+ -+static int h6300_keymap[] = { -+ KEY(2, 0, _h6300_KEY_CALENDAR), // address button in the bottom left -+ KEY(2, 3, _H6300_KEY_TELEPHONE), // start call button in the bottom -+ KEY(3, 1, _H6300_KEY_HOMEPAGE), // stop call button in the bottom -+ KEY(3, 4, _H6300_KEY_MAIL), // messaging button in the bottom right -+ -+ KEY(0, 0, KEY_VOLUMEUP), // volume up button in the right side -+ KEY(0, 1, KEY_VOLUMEDOWN), // volume down button in the right side -+ KEY(3, 2, KEY_RECORD), // record button in the left side -+ -+ KEY(1, 0, _h6300_JOYPAD_UP_LEFT), -+ KEY(1, 1, _h6300_JOYPAD_DOWN_LEFT), -+ KEY(1, 2, _H6300_JOYPAD_KEY_OK), -+ KEY(1, 3, _H6300_JOYPAD_DOWN_RIGHT), -+ KEY(1, 4, _H6300_JOYPAD_UP_RIGHT), -+ -+ KEY(5, 0, KEY_RIGHT), -+ KEY(5, 1, KEY_DOWN), -+ KEY(5, 2, KEY_LEFT), -+ KEY(5, 3, KEY_UP), -+ KEY(5, 4, KEY_ENTER), -+ -+ 0 -+}; -+ - static int *keymap; - - static irqreturn_t omap_kp_interrupt(int irq, void *dev_id, -@@ -191,7 +236,8 @@ - for (col = 0; col < 8; col++) { - omap_writew(~(1 << col) & 0xff, OMAP_MPUIO_BASE + OMAP_MPUIO_KBC); - -- if (machine_is_omap_osk() || machine_is_omap_h2() || machine_is_omap_h3()) { -+ if (machine_is_omap_osk() || machine_is_omap_h2() || machine_is_omap_h3() || machine_is_h6300()) { -+ // makes keyboard act a little bit slower - udelay(9); - } else { - udelay(4); -@@ -214,16 +260,24 @@ - return -1; - } - -+int is_key_down(unsigned char new_state[], -+ int col, -+ int row) ++static inline void set_rtc_irq_bit(unsigned char bit) +{ -+ return (new_state[col] & (1 << row)) ? 1 : 0; ++ spin_lock_irq(&rtc_lock); ++ set_rtc_irq_bit_locked(bit); ++ spin_unlock_irq(&rtc_lock); +} + - static void omap_kp_tasklet(unsigned long data) - { - unsigned char new_state[8], changed, key_down = 0; - int col, row; - int spurious = 0; -+ int report_key, report_col, report_row, joypad_checked; // joypad specific variables - - /* check for any changes */ - omap_kp_scan_keypad(new_state); -- - /* check for changes and print those */ -+ joypad_checked = 0; - for (col = 0; col < 8; col++) { - changed = new_state[col] ^ keypad_state[col]; - key_down |= new_state[col]; -@@ -245,9 +299,173 @@ - spurious = 1; - continue; - } -- -- input_report_key(&omap_kp_dev, key, -- new_state[col] & (1 << row)); -+ if (machine_is_h6300() && -+ ((col == 1) || (col == 5))) -+ { -+ if (col == 5) -+ { -+ continue; -+ } -+ if ((joypad_checked == 0) && -+ ((key == _H6300_JOYPAD_KEY_OK) || -+ (key == _h6300_JOYPAD_UP_LEFT) || -+ (key == _H6300_JOYPAD_UP_RIGHT) || -+ (key == _H6300_JOYPAD_DOWN_RIGHT) || -+ (key == _h6300_JOYPAD_DOWN_LEFT))) -+ { -+ if (is_key_down(new_state, col, row)) -+ { -+ /* -+ * only enter pressed -+ * 1 0 0 _H6300_JOYPAD_KEY_OK 0 0 -+ * --> 100100 == 36 -+ */ -+ if (new_state[1] == 36) -+ { -+ joypad_checked = 1; -+ prevJoypadKeycodePressEmulated = KEY_ENTER; -+ new_state[5] = 48; //110000 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ report_row = 4; -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ } -+ /* -+ * enter, up_left and up_right sensors pressed. -+ * 1 _H6300_JOYPAD_UP_RIGHT 0 _H6300_JOYPAD_KEY_OK 0 _h6300_JOYPAD_UP_LEFT -+ * --> 110101 == 53 -+ * OR -+ * 1 KEY_UP_RIGHT 0 0 0 _h6300_JOYPAD_UP_LEFT -+ * --> 110001 == 42 -+ * --> move to up -+ */ -+ else if ((new_state[1] == 53) || -+ (new_state[1] == 49)) -+ { -+ joypad_checked = 1; -+ prevJoypadKeycodePressEmulated = KEY_UP; -+ new_state[5] = 40; //101000 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ report_row = 3; -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ } -+ /* -+ * enter, down_left and down_right sensors pressed -+ * --> 101110 == 46 -+ * OR -+ * down_left and down_right -+ * -->101010 == 42 -+ * --> move to down -+ */ -+ else if ((new_state[1] == 46) || -+ (new_state[1] == 42)) -+ { -+ joypad_checked = 1; -+ prevJoypadKeycodePressEmulated = KEY_DOWN; -+ new_state[5] = 34; //100010 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ report_row = 1; -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ } -+ /* -+ * enter, up_right and down_right sensors pressed -+ * --> 111100 == 60 -+ * or -+ * down_right and up_right -+ * --> 111000 == 56 -+ * --> move to right -+ */ -+ else if ((new_state[1] == 60) || -+ (new_state[1] == 56)) -+ { -+ joypad_checked = 1; -+ prevJoypadKeycodePressEmulated = KEY_RIGHT; -+ new_state[5] = 33; //100001 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ report_row = 0; -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ } -+ /* -+ * enter, up_left and down_left sensors pressed -+ * --> 100111 == 39 -+ * or up_left and down_left -+ * --> 100011 == 35 -+ * --> move to left -+ */ -+ else if ((new_state[1] == 39) || -+ (new_state[1] == 35)) -+ { -+ joypad_checked = 1; -+ prevJoypadKeycodePressEmulated = KEY_LEFT; -+ new_state[5] = 36; //100100 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ report_row = 2; -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ } -+ else -+ { -+ //printk("missed new_state = %d\n", new_state[1]); -+ } -+ } -+ else -+ { -+ if (prevJoypadKeycodePressEmulated != 0) -+ { -+ // report key up event -+ joypad_checked = 1; -+ new_state[5] = 32; //100000 -+ report_key = prevJoypadKeycodePressEmulated; -+ report_col = 5; -+ switch(prevJoypadKeycodePressEmulated) -+ { -+ case KEY_RIGHT: -+ report_row = 0; -+ break; -+ case KEY_DOWN: -+ report_row = 1; -+ break; -+ case KEY_LEFT: -+ report_row = 2; -+ break; -+ case KEY_UP: -+ report_row = 3; -+ break; -+ case KEY_ENTER: -+ report_row = 4; -+ break; -+ default: -+ printk(KERN_WARNING "Unknown iPAQ h6300 column 1 key = %d released. This should newer happen!\n", -+ key); -+ report_row = 0; -+ } -+ input_report_key(&omap_kp_dev, -+ report_key, -+ new_state[report_col] & (1 << report_row)); -+ prevJoypadKeycodePressEmulated = 0; -+ } -+ } -+ } -+ } -+ else -+ { -+ input_report_key(&omap_kp_dev, -+ key, -+ new_state[col] & (1 << row)); -+ } ++static void mask_rtc_irq_bit(unsigned char bit) ++{ ++ spin_lock_irq(&rtc_lock); ++ mask_rtc_irq_bit_locked(bit); ++ spin_unlock_irq(&rtc_lock); ++} #endif + + static int rtc_proc_open(struct inode *inode, struct file *file); +@@ -401,18 +415,19 @@ + } + case RTC_PIE_OFF: /* Mask periodic int. enab. bit */ + { +- mask_rtc_irq_bit(RTC_PIE); ++ unsigned long flags; /* can be called from isr via rtc_control() */ ++ spin_lock_irqsave (&rtc_lock, flags); ++ mask_rtc_irq_bit_locked(RTC_PIE); + if (rtc_status & RTC_TIMER_ON) { +- spin_lock_irq (&rtc_lock); + rtc_status &= ~RTC_TIMER_ON; + del_timer(&rtc_irq_timer); +- spin_unlock_irq (&rtc_lock); } ++ spin_unlock_irqrestore (&rtc_lock, flags); + return 0; } -@@ -285,7 +503,12 @@ - } else if (machine_is_omap_perseus2()) { - keymap = p2_keymap; - keypad_irq = INT_730_MPUIO_KEYPAD; -+ } else if (machine_is_h6300()) { -+ keymap = h6300_keymap; -+ // set keyboard to send repeated key events if key is hold down -+ set_bit(EV_REP, omap_kp_dev.evbit); - } else { -+ printk("omap_keypad.c, keyMap = test_keymap\n"); - keymap = test_keymap; + case RTC_PIE_ON: /* Allow periodic ints */ + { +- ++ unsigned long flags; /* can be called from isr via rtc_control() */ + /* + * We don't really want Joe User enabling more + * than 64Hz of interrupts on a multi-user machine. +@@ -421,14 +436,14 @@ + (!capable(CAP_SYS_RESOURCE))) + return -EACCES; + ++ spin_lock_irqsave (&rtc_lock, flags); + if (!(rtc_status & RTC_TIMER_ON)) { +- spin_lock_irq (&rtc_lock); + rtc_irq_timer.expires = jiffies + HZ/rtc_freq + 2*HZ/100; + add_timer(&rtc_irq_timer); + rtc_status |= RTC_TIMER_ON; +- spin_unlock_irq (&rtc_lock); + } +- set_rtc_irq_bit(RTC_PIE); ++ set_rtc_irq_bit_locked(RTC_PIE); ++ spin_unlock_irqrestore (&rtc_lock, flags); + return 0; } + case RTC_UIE_OFF: /* Mask ints from RTC updates. */ +@@ -609,6 +624,7 @@ + { + int tmp = 0; + unsigned char val; ++ unsigned long flags; /* can be called from isr via rtc_control() */ -@@ -335,6 +558,7 @@ + /* + * The max we can do is 8192Hz. +@@ -631,9 +647,9 @@ + if (arg != (1<<tmp)) + return -EINVAL; - omap_writew(0xff, OMAP_MPUIO_BASE + OMAP_MPUIO_GPIO_DEBOUNCING); +- spin_lock_irq(&rtc_lock); ++ spin_lock_irqsave(&rtc_lock, flags); + if (hpet_set_periodic_freq(arg)) { +- spin_unlock_irq(&rtc_lock); ++ spin_unlock_irqrestore(&rtc_lock, flags); + return 0; + } + rtc_freq = arg; +@@ -641,7 +657,7 @@ + val = CMOS_READ(RTC_FREQ_SELECT) & 0xf0; + val |= (16 - tmp); + CMOS_WRITE(val, RTC_FREQ_SELECT); +- spin_unlock_irq(&rtc_lock); ++ spin_unlock_irqrestore(&rtc_lock, flags); + return 0; } -+ prevJoypadKeycodePressEmulated = 0; + #endif +@@ -844,12 +860,15 @@ + #ifndef RTC_IRQ + return -EIO; + #else +- spin_lock_irq(&rtc_task_lock); ++ unsigned long flags; ++ if (cmd != RTC_PIE_ON && cmd != RTC_PIE_OFF && cmd != RTC_IRQP_SET) ++ return -EINVAL; ++ spin_lock_irqsave(&rtc_task_lock, flags); + if (rtc_callback != task) { +- spin_unlock_irq(&rtc_task_lock); ++ spin_unlock_irqrestore(&rtc_task_lock, flags); + return -ENXIO; + } +- spin_unlock_irq(&rtc_task_lock); ++ spin_unlock_irqrestore(&rtc_task_lock, flags); + return rtc_do_ioctl(cmd, arg, 1); + #endif + } +@@ -1306,40 +1325,32 @@ + * meddles with the interrupt enable/disable bits. + */ - /* scan current status and enable interrupt */ - omap_kp_scan_keypad(keypad_state); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/Makefile bt_kernel/drivers/input/touchscreen/omap/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/Makefile 2005-10-30 17:44:17.519075542 +0200 -+++ bt_kernel/drivers/input/touchscreen/omap/Makefile 2005-10-22 03:52:45.687256000 +0300 -@@ -8,5 +8,6 @@ - objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H3) += ts_hx.o - objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += ts_inn1510.o - objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += ts_osk.o -+objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_H6300) += ts_hx.o +-static void mask_rtc_irq_bit(unsigned char bit) ++static void mask_rtc_irq_bit_locked(unsigned char bit) + { + unsigned char val; - omapts-objs := omap_ts.o $(objs-yy) -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/omap_ts.c bt_kernel/drivers/input/touchscreen/omap/omap_ts.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/omap_ts.c 2005-10-30 17:44:17.542071882 +0200 -+++ bt_kernel/drivers/input/touchscreen/omap/omap_ts.c 2005-10-22 03:52:45.687256000 +0300 -@@ -46,7 +46,7 @@ - #define OMAP_TS_NAME "omap_ts" +- spin_lock_irq(&rtc_lock); +- if (hpet_mask_rtc_irq_bit(bit)) { +- spin_unlock_irq(&rtc_lock); ++ if (hpet_mask_rtc_irq_bit(bit)) + return; +- } + val = CMOS_READ(RTC_CONTROL); + val &= ~bit; + CMOS_WRITE(val, RTC_CONTROL); + CMOS_READ(RTC_INTR_FLAGS); - static struct ts_device *__initdata ts_devs[] = { --#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3) -+#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3) || defined(CONFIG_MACH_OMAP_H6300) - &hx_ts, - #endif - #ifdef CONFIG_MACH_OMAP_OSK -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/ts_hx.c bt_kernel/drivers/input/touchscreen/omap/ts_hx.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/input/touchscreen/omap/ts_hx.c 2005-10-30 17:44:17.566068062 +0200 -+++ bt_kernel/drivers/input/touchscreen/omap/ts_hx.c 2005-09-28 02:45:59.570809000 +0300 -@@ -33,6 +33,7 @@ - #include <asm/arch/mux.h> - #include <asm/arch/hardware.h> - #include <asm/hardware/tsc2101.h> -+#include <linux/delay.h> + rtc_irq_data = 0; +- spin_unlock_irq(&rtc_lock); + } - #include "../drivers/ssi/omap-tsc2101.h" - #include "omap_ts.h" -@@ -88,14 +89,19 @@ - } else if (machine_is_omap_h3()) { - gpio = H3_GPIO_NUM; - omap_cfg_reg(W19_1610_GPIO48); -+ } else if (machine_is_h6300 ()) { -+ gpio = 2; -+ omap_cfg_reg(M14_1510_GPIO2); - } else - return -ENODEV; +-static void set_rtc_irq_bit(unsigned char bit) ++static void set_rtc_irq_bit_locked(unsigned char bit) + { + unsigned char val; - ts->irq = OMAP_GPIO_IRQ(gpio); -- if (omap_request_gpio(gpio) != 0) { -- printk(KERN_ERR "hX_ts_init.c: Could not reserve GPIO!\n"); -- return -EINVAL; -- }; -+ if (!machine_is_h6300 ()){ -+ if (omap_request_gpio(gpio) != 0) { -+ printk(KERN_ERR "hX_ts_init.c: Could not reserve GPIO!\n"); -+ return -EINVAL; -+ }; -+ } +- spin_lock_irq(&rtc_lock); +- if (hpet_set_rtc_irq_bit(bit)) { +- spin_unlock_irq(&rtc_lock); ++ if (hpet_set_rtc_irq_bit(bit)) + return; +- } + val = CMOS_READ(RTC_CONTROL); + val |= bit; + CMOS_WRITE(val, RTC_CONTROL); + CMOS_READ(RTC_INTR_FLAGS); - omap_set_gpio_direction(gpio, 1); - set_irq_type(ts->irq, IRQT_FALLING); -@@ -180,5 +186,7 @@ - omap_free_gpio(H2_GPIO_NUM); - else if (machine_is_omap_h3()) - omap_free_gpio(H3_GPIO_NUM); -+ else if (machine_is_h6300()) -+ omap_free_gpio(2); + rtc_irq_data = 0; +- spin_unlock_irq(&rtc_lock); } #endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/busses/i2c-omap.c bt_kernel/drivers/i2c/busses/i2c-omap.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/busses/i2c-omap.c 2005-10-30 17:44:17.091143658 +0200 -+++ bt_kernel/drivers/i2c/busses/i2c-omap.c 2005-10-20 20:53:33.518825000 +0300 + +diff -Naur linux-2.6.14-omap2/drivers/hwmon/it87.c linux-h6300-omap2-2.6.14.3/drivers/hwmon/it87.c +--- linux-2.6.14-omap2/drivers/hwmon/it87.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/hwmon/it87.c 2005-12-02 01:34:35.000000000 +0200 +@@ -522,8 +522,15 @@ + struct i2c_client *client = to_i2c_client(dev); + struct it87_data *data = i2c_get_clientdata(client); + int val = simple_strtol(buf, NULL, 10); ++ u8 reg = it87_read_value(client, IT87_REG_FAN_DIV); + + down(&data->update_lock); ++ switch (nr) { ++ case 0: data->fan_div[nr] = reg & 0x07; break; ++ case 1: data->fan_div[nr] = (reg >> 3) & 0x07; break; ++ case 2: data->fan_div[nr] = (reg & 0x40) ? 3 : 1; break; ++ } ++ + data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); + it87_write_value(client, IT87_REG_FAN_MIN(nr), data->fan_min[nr]); + up(&data->update_lock); +diff -Naur linux-2.6.14-omap2/drivers/hwmon/lm78.c linux-h6300-omap2-2.6.14.3/drivers/hwmon/lm78.c +--- linux-2.6.14-omap2/drivers/hwmon/lm78.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/hwmon/lm78.c 2005-12-02 01:34:35.000000000 +0200 +@@ -451,7 +451,7 @@ + static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char *buf) + { + struct lm78_data *data = lm78_update_device(dev); +- return sprintf(buf, "%d\n", vid_from_reg(82, data->vid)); ++ return sprintf(buf, "%d\n", vid_from_reg(data->vid, 82)); + } + static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL); + +diff -Naur linux-2.6.14-omap2/drivers/hwmon/w83627hf.c linux-h6300-omap2-2.6.14.3/drivers/hwmon/w83627hf.c +--- linux-2.6.14-omap2/drivers/hwmon/w83627hf.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/hwmon/w83627hf.c 2005-12-02 01:34:35.000000000 +0200 +@@ -454,7 +454,9 @@ + (w83627thf == data->type || w83637hf == data->type)) + + /* use VRM9 calculation */ +- data->in_min[0] = (u8)(((val * 100) - 70000 + 244) / 488); ++ data->in_min[0] = ++ SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0, ++ 255); + else + /* use VRM8 (standard) calculation */ + data->in_min[0] = IN_TO_REG(val); +@@ -479,7 +481,9 @@ + (w83627thf == data->type || w83637hf == data->type)) + + /* use VRM9 calculation */ +- data->in_max[0] = (u8)(((val * 100) - 70000 + 244) / 488); ++ data->in_max[0] = ++ SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0, ++ 255); + else + /* use VRM8 (standard) calculation */ + data->in_max[0] = IN_TO_REG(val); +diff -Naur linux-2.6.14-omap2/drivers/i2c/busses/i2c-omap.c linux-h6300-omap2-2.6.14.3/drivers/i2c/busses/i2c-omap.c +--- linux-2.6.14-omap2/drivers/i2c/busses/i2c-omap.c 2005-12-02 01:53:32.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/i2c/busses/i2c-omap.c 2005-10-20 20:53:33.000000000 +0300 @@ -124,10 +124,10 @@ /* I2C System Configuration Register (OMAP_I2C_SYSC): */ #define OMAP_I2C_SYSC_SRST (1 << 1) /* Soft Reset */ @@ -1207,9 +2575,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/busses/i2c static int i2c_debug; module_param(i2c_debug, int, 0); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Kconfig bt_kernel/drivers/i2c/chips/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Kconfig 2005-10-30 17:44:17.176130130 +0200 -+++ bt_kernel/drivers/i2c/chips/Kconfig 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/i2c/chips/Kconfig linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/Kconfig +--- linux-2.6.14-omap2/drivers/i2c/chips/Kconfig 2005-12-02 01:53:32.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/Kconfig 2005-10-14 18:55:31.000000000 +0300 @@ -56,6 +56,16 @@ This driver can also be built as a module. If so, the module will be called pca9539. @@ -1227,9 +2595,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Kcon config SENSORS_PCF8591 tristate "Philips PCF8591" depends on I2C && EXPERIMENTAL -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Makefile bt_kernel/drivers/i2c/chips/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Makefile 2005-10-30 17:44:17.176130130 +0200 -+++ bt_kernel/drivers/i2c/chips/Makefile 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/i2c/chips/Makefile linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/Makefile +--- linux-2.6.14-omap2/drivers/i2c/chips/Makefile 2005-12-02 01:53:32.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/Makefile 2005-10-14 18:55:31.000000000 +0300 @@ -16,6 +16,7 @@ obj-$(CONFIG_SENSORS_TLV320AIC23) += tlv320aic23.o obj-$(CONFIG_GPIOEXPANDER_OMAP) += gpio_expander_omap.o @@ -1238,9 +2606,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/Make ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) EXTRA_CFLAGS += -DDEBUG -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/pca9535.c bt_kernel/drivers/i2c/chips/pca9535.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/pca9535.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/i2c/chips/pca9535.c 2005-10-25 22:23:21.875634000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/i2c/chips/pca9535.c linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/pca9535.c +--- linux-2.6.14-omap2/drivers/i2c/chips/pca9535.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/i2c/chips/pca9535.c 2005-10-25 22:23:21.000000000 +0300 @@ -0,0 +1,414 @@ +/* + Driver for Philips PCA9535 16-bit low power I/O port with interrupt @@ -1656,249 +3024,590 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/chips/pca9 + +module_init(pca9535_init); +module_exit(pca9535_exit); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/i2c-core.c bt_kernel/drivers/i2c/i2c-core.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/i2c/i2c-core.c 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/i2c/i2c-core.c 2005-10-22 03:52:45.687256000 +0300 -@@ -1180,8 +1180,12 @@ - command,size,data); - up(&adapter->bus_lock); - } else -+ { -+ printk("i2c-core, calling i2c_smbus_xfer_emulated!"); - res = i2c_smbus_xfer_emulated(adapter,addr,flags,read_write, - command,size,data); -+ printk("i2c-core, i2c_smbus_xfer_emulated retVal = %d", res); -+ } +diff -Naur linux-2.6.14-omap2/drivers/input/keyboard/omap-keypad.c linux-h6300-omap2-2.6.14.3/drivers/input/keyboard/omap-keypad.c +--- linux-2.6.14-omap2/drivers/input/keyboard/omap-keypad.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/input/keyboard/omap-keypad.c 2005-11-04 03:06:04.000000000 +0200 +@@ -5,10 +5,11 @@ + * + * Copyright (C) 2003 Nokia Corporation + * Written by Timo Teräs <ext-timo.teras@nokia.com> ++ * iPAQ h6300 key and joypad support added by Mika Laitio. (2005) + * + * Added support for H2 & H3 Keypad + * Copyright (C) 2004 Texas Instruments +- * ++ * + * 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 +@@ -40,6 +41,7 @@ + #include <asm/arch/mux.h> - if(res >= 0 && swpec && - size != I2C_SMBUS_QUICK && size != I2C_SMBUS_I2C_BLOCK_DATA && -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/media/video/omap/omap16xxcam.c bt_kernel/drivers/media/video/omap/omap16xxcam.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/media/video/omap/omap16xxcam.c 2005-10-30 17:44:17.750038779 +0200 -+++ bt_kernel/drivers/media/video/omap/omap16xxcam.c 2005-10-30 16:32:39.609796000 +0200 -@@ -325,18 +325,22 @@ - - if (machine_is_omap_h3()) - omap_set_dma_src_params(dmach, OMAP_DMA_PORT_OCP_T1, -- OMAP_DMA_AMODE_CONSTANT, CAM_CAMDATA_REG); -+ OMAP_DMA_AMODE_CONSTANT, CAM_CAMDATA_REG, -+ 0, 0); - else - omap_set_dma_src_params(dmach, OMAP_DMA_PORT_TIPB, -- OMAP_DMA_AMODE_CONSTANT, CAM_CAMDATA_REG); -+ OMAP_DMA_AMODE_CONSTANT, CAM_CAMDATA_REG, -+ 0, 0); + #undef NEW_BOARD_LEARNING_MODE ++//#define NEW_BOARD_LEARNING_MODE 1 - omap_set_dma_dest_params(dmach, OMAP_DMA_PORT_EMIFF, -- OMAP_DMA_AMODE_POST_INC, sg_dma_address(sglist)); -+ OMAP_DMA_AMODE_POST_INC, sg_dma_address(sglist), -+ 0, 0); + static void omap_kp_tasklet(unsigned long); + static void omap_kp_timer(unsigned long); +@@ -48,6 +50,8 @@ + static unsigned char keypad_state[8]; + static unsigned int keypad_irq = INT_KEYBOARD; - omap_set_dma_transfer_params(dmach, OMAP_DMA_DATA_TYPE_S32, - FIFO_TRIGGER_LVL, - sg_dma_len(sglist)/(4 * FIFO_TRIGGER_LVL), -- OMAP_DMA_SYNC_FRAME); -+ OMAP_DMA_SYNC_FRAME, -+ 0, 0); - ++static int prevJoypadKeycodePressEmulated; ++ + static struct timer_list kp_timer; + DECLARE_TASKLET_DISABLED(kp_tasklet, omap_kp_tasklet, 0); - omap_writew(omap_readw(OMAP_DMA_CLNK_CTRL(dmach)) & ~(1<<15), -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/mmc/omap.c bt_kernel/drivers/mmc/omap.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/mmc/omap.c 2005-10-30 17:44:17.905014111 +0200 -+++ bt_kernel/drivers/mmc/omap.c 2005-10-30 16:32:39.609796000 +0200 -@@ -4,6 +4,7 @@ - * Copyright (C) 2004 Nokia Corporation - * Written by Tuukka Tikkanen and Juha Yrjölä <juha.yrjola@nokia.com> - * Misc hacks here and there by Tony Lindgren <tony@atomide.com> -+ * Other hacks (DMA, SD, etc) by David Brownell - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as -@@ -703,20 +704,24 @@ - buf = 0x800f | ((frame - 1) << 8); - omap_set_dma_src_params(dma_ch, OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- data_addr); -+ data_addr, -+ 0, 0); - omap_set_dma_dest_params(dma_ch, OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- sg_dma_address(sg)); -+ sg_dma_address(sg), -+ 0, 0); - omap_set_dma_dest_data_pack(dma_ch, 1); - omap_set_dma_dest_burst_mode(dma_ch, OMAP_DMA_DATA_BURST_4); +@@ -165,6 +169,47 @@ + 0 + }; + ++#define _h6300_KEY_CALENDAR 67 // xmodmap 75 aka F9 ++#define _H6300_KEY_TELEPHONE 68 // xmodmap 76 aka F10 ++#define _H6300_KEY_HOMEPAGE 87 // xmodmap 87 aka Num_Lock ++#define _H6300_KEY_MAIL 88 // xmodmap 88 aka Scroll_Lock ++ ++/* ++ * Following 5 keypad events are not really sent to userspace. ++ * Instead if the good combination of them is sent, then that is send. ++ * (up, right, down, left, enter) ++ */ ++#define _H6300_JOYPAD_UP_RIGHT 1 // 00001 ++#define _H6300_JOYPAD_DOWN_RIGHT 2 // 00010 ++#define _h6300_JOYPAD_DOWN_LEFT 4 // 00100 ++#define _h6300_JOYPAD_UP_LEFT 8 // 01000 ++#define _H6300_JOYPAD_KEY_OK 16 // 10000 ++ ++static int h6300_keymap[] = { ++ KEY(2, 0, _h6300_KEY_CALENDAR), // address button in the bottom left ++ KEY(2, 3, _H6300_KEY_TELEPHONE), // start call button in the bottom ++ KEY(3, 1, _H6300_KEY_HOMEPAGE), // stop call button in the bottom ++ KEY(3, 4, _H6300_KEY_MAIL), // messaging button in the bottom right ++ ++ KEY(0, 0, KEY_VOLUMEUP), // volume up button in the right side ++ KEY(0, 1, KEY_VOLUMEDOWN), // volume down button in the right side ++ KEY(3, 2, KEY_RECORD), // record button in the left side ++ ++ KEY(1, 0, _h6300_JOYPAD_UP_LEFT), ++ KEY(1, 1, _h6300_JOYPAD_DOWN_LEFT), ++ KEY(1, 2, _H6300_JOYPAD_KEY_OK), ++ KEY(1, 3, _H6300_JOYPAD_DOWN_RIGHT), ++ KEY(1, 4, _H6300_JOYPAD_UP_RIGHT), ++ ++ KEY(5, 0, KEY_RIGHT), ++ KEY(5, 1, KEY_DOWN), ++ KEY(5, 2, KEY_LEFT), ++ KEY(5, 3, KEY_UP), ++ KEY(5, 4, KEY_ENTER), ++ ++ 0 ++}; ++ + static int *keymap; + + static irqreturn_t omap_kp_interrupt(int irq, void *dev_id, +@@ -191,7 +236,8 @@ + for (col = 0; col < 8; col++) { + omap_writew(~(1 << col) & 0xff, OMAP_MPUIO_BASE + OMAP_MPUIO_KBC); + +- if (machine_is_omap_osk() || machine_is_omap_h2() || machine_is_omap_h3()) { ++ if (machine_is_omap_osk() || machine_is_omap_h2() || machine_is_omap_h3() || machine_is_h6300()) { ++ // makes keyboard act a little bit slower + udelay(9); + } else { + udelay(4); +@@ -214,26 +260,34 @@ + return -1; + } + ++int is_key_down(unsigned char new_state[], ++ int col, ++ int row) ++{ ++ return (new_state[col] & (1 << row)) ? 1 : 0; ++} ++ + static void omap_kp_tasklet(unsigned long data) + { + unsigned char new_state[8], changed, key_down = 0; + int col, row; + int spurious = 0; ++ int report_key, report_col, report_row, joypad_checked; // joypad specific variables + + /* check for any changes */ + omap_kp_scan_keypad(new_state); +- + /* check for changes and print those */ ++ joypad_checked = 0; + for (col = 0; col < 8; col++) { + changed = new_state[col] ^ keypad_state[col]; + key_down |= new_state[col]; + if (changed == 0) + continue; +- ++ + for (row = 0; row < 8; row++) { + int key; + if (!(changed & (1 << row))) +- continue; ++ continue; + #ifdef NEW_BOARD_LEARNING_MODE + printk(KERN_INFO "omap-keypad: key %d-%d %s\n", col, row, (new_state[col] & (1 << row)) ? "pressed" : "released"); + #else +@@ -245,9 +299,173 @@ + spurious = 1; + continue; + } +- +- input_report_key(&omap_kp_dev, key, +- new_state[col] & (1 << row)); ++ if (machine_is_h6300() && ++ ((col == 1) || (col == 5))) ++ { ++ if (col == 5) ++ { ++ continue; ++ } ++ if ((joypad_checked == 0) && ++ ((key == _H6300_JOYPAD_KEY_OK) || ++ (key == _h6300_JOYPAD_UP_LEFT) || ++ (key == _H6300_JOYPAD_UP_RIGHT) || ++ (key == _H6300_JOYPAD_DOWN_RIGHT) || ++ (key == _h6300_JOYPAD_DOWN_LEFT))) ++ { ++ if (is_key_down(new_state, col, row)) ++ { ++ /* ++ * only enter pressed ++ * 1 0 0 _H6300_JOYPAD_KEY_OK 0 0 ++ * --> 100100 == 36 ++ */ ++ if (new_state[1] == 36) ++ { ++ joypad_checked = 1; ++ prevJoypadKeycodePressEmulated = KEY_ENTER; ++ new_state[5] = 48; //110000 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ report_row = 4; ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ } ++ /* ++ * enter, up_left and up_right sensors pressed. ++ * 1 _H6300_JOYPAD_UP_RIGHT 0 _H6300_JOYPAD_KEY_OK 0 _h6300_JOYPAD_UP_LEFT ++ * --> 110101 == 53 ++ * OR ++ * 1 KEY_UP_RIGHT 0 0 0 _h6300_JOYPAD_UP_LEFT ++ * --> 110001 == 42 ++ * --> move to up ++ */ ++ else if ((new_state[1] == 53) || ++ (new_state[1] == 49)) ++ { ++ joypad_checked = 1; ++ prevJoypadKeycodePressEmulated = KEY_UP; ++ new_state[5] = 40; //101000 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ report_row = 3; ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ } ++ /* ++ * enter, down_left and down_right sensors pressed ++ * --> 101110 == 46 ++ * OR ++ * down_left and down_right ++ * -->101010 == 42 ++ * --> move to down ++ */ ++ else if ((new_state[1] == 46) || ++ (new_state[1] == 42)) ++ { ++ joypad_checked = 1; ++ prevJoypadKeycodePressEmulated = KEY_DOWN; ++ new_state[5] = 34; //100010 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ report_row = 1; ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ } ++ /* ++ * enter, up_right and down_right sensors pressed ++ * --> 111100 == 60 ++ * or ++ * down_right and up_right ++ * --> 111000 == 56 ++ * --> move to right ++ */ ++ else if ((new_state[1] == 60) || ++ (new_state[1] == 56)) ++ { ++ joypad_checked = 1; ++ prevJoypadKeycodePressEmulated = KEY_RIGHT; ++ new_state[5] = 33; //100001 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ report_row = 0; ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ } ++ /* ++ * enter, up_left and down_left sensors pressed ++ * --> 100111 == 39 ++ * or up_left and down_left ++ * --> 100011 == 35 ++ * --> move to left ++ */ ++ else if ((new_state[1] == 39) || ++ (new_state[1] == 35)) ++ { ++ joypad_checked = 1; ++ prevJoypadKeycodePressEmulated = KEY_LEFT; ++ new_state[5] = 36; //100100 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ report_row = 2; ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ } ++ else ++ { ++ //printk("missed new_state = %d\n", new_state[1]); ++ } ++ } ++ else ++ { ++ if (prevJoypadKeycodePressEmulated != 0) ++ { ++ // report key up event ++ joypad_checked = 1; ++ new_state[5] = 32; //100000 ++ report_key = prevJoypadKeycodePressEmulated; ++ report_col = 5; ++ switch(prevJoypadKeycodePressEmulated) ++ { ++ case KEY_RIGHT: ++ report_row = 0; ++ break; ++ case KEY_DOWN: ++ report_row = 1; ++ break; ++ case KEY_LEFT: ++ report_row = 2; ++ break; ++ case KEY_UP: ++ report_row = 3; ++ break; ++ case KEY_ENTER: ++ report_row = 4; ++ break; ++ default: ++ printk(KERN_WARNING "Unknown iPAQ h6300 column 1 key = %d released. This should newer happen!\n", ++ key); ++ report_row = 0; ++ } ++ input_report_key(&omap_kp_dev, ++ report_key, ++ new_state[report_col] & (1 << report_row)); ++ prevJoypadKeycodePressEmulated = 0; ++ } ++ } ++ } ++ } ++ else ++ { ++ input_report_key(&omap_kp_dev, ++ key, ++ new_state[col] & (1 << row)); ++ } + #endif + } + } +@@ -285,7 +503,12 @@ + } else if (machine_is_omap_perseus2()) { + keymap = p2_keymap; + keypad_irq = INT_730_MPUIO_KEYPAD; ++ } else if (machine_is_h6300()) { ++ keymap = h6300_keymap; ++ // set keyboard to send repeated key events if key is hold down ++ set_bit(EV_REP, omap_kp_dev.evbit); } else { - buf = 0x0f80 | ((frame - 1) << 0); - omap_set_dma_dest_params(dma_ch, OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- data_addr); -+ data_addr, -+ 0, 0); - omap_set_dma_src_params(dma_ch, OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- sg_dma_address(sg)); -+ sg_dma_address(sg), -+ 0, 0); - omap_set_dma_src_data_pack(dma_ch, 1); - omap_set_dma_src_burst_mode(dma_ch, OMAP_DMA_DATA_BURST_4); ++ printk("omap_keypad.c, keyMap = test_keymap\n"); + keymap = test_keymap; } -@@ -727,7 +732,8 @@ - OMAP_MMC_WRITE(host->base, BUF, buf); - omap_set_dma_transfer_params(dma_ch, OMAP_DMA_DATA_TYPE_S16, -- frame, count, OMAP_DMA_SYNC_FRAME); -+ frame, count, OMAP_DMA_SYNC_FRAME, -+ 0, 0); - } +@@ -305,7 +528,7 @@ + omap_kp_dev.name = "omap-keypad"; + input_register_device(&omap_kp_dev); - /* a scatterlist segment completed */ -@@ -767,9 +773,6 @@ +- if (machine_is_omap_h2() || machine_is_omap_h3()) { ++ if (machine_is_omap_h2() || machine_is_omap_h3() || machine_is_h6300()) { + omap_cfg_reg(F18_1610_KBC0); + omap_cfg_reg(D20_1610_KBC1); + omap_cfg_reg(D19_1610_KBC2); +@@ -335,6 +558,7 @@ - host->sg_idx++; - if (host->sg_idx < host->sg_len) { -- /* REVISIT we only checked the first segment -- * for being a dma candidate ... -- */ - mmc_omap_prepare_dma(host, host->data); - omap_start_dma(host->dma_ch); + omap_writew(0xff, OMAP_MPUIO_BASE + OMAP_MPUIO_GPIO_DEBOUNCING); + } ++ prevJoypadKeycodePressEmulated = 0; + + /* scan current status and enable interrupt */ + omap_kp_scan_keypad(keypad_state); +diff -Naur linux-2.6.14-omap2/drivers/input/touchscreen/omap/Makefile linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/Makefile +--- linux-2.6.14-omap2/drivers/input/touchscreen/omap/Makefile 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/Makefile 2005-10-22 03:52:45.000000000 +0300 +@@ -8,5 +8,6 @@ + objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H3) += ts_hx.o + objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += ts_inn1510.o + objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += ts_osk.o ++objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_H6300) += ts_hx.o + + omapts-objs := omap_ts.o $(objs-yy) +diff -Naur linux-2.6.14-omap2/drivers/input/touchscreen/omap/omap_ts.c linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/omap_ts.c +--- linux-2.6.14-omap2/drivers/input/touchscreen/omap/omap_ts.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/omap_ts.c 2005-10-22 03:52:45.000000000 +0300 +@@ -46,7 +46,7 @@ + #define OMAP_TS_NAME "omap_ts" + + static struct ts_device *__initdata ts_devs[] = { +-#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3) ++#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3) || defined(CONFIG_MACH_OMAP_H6300) + &hx_ts, + #endif + #ifdef CONFIG_MACH_OMAP_OSK +diff -Naur linux-2.6.14-omap2/drivers/input/touchscreen/omap/ts_hx.c linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/ts_hx.c +--- linux-2.6.14-omap2/drivers/input/touchscreen/omap/ts_hx.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/input/touchscreen/omap/ts_hx.c 2005-09-28 02:45:59.000000000 +0300 +@@ -33,6 +33,7 @@ + #include <asm/arch/mux.h> + #include <asm/arch/hardware.h> + #include <asm/hardware/tsc2101.h> ++#include <linux/delay.h> + + #include "../drivers/ssi/omap-tsc2101.h" + #include "omap_ts.h" +@@ -88,14 +89,19 @@ + } else if (machine_is_omap_h3()) { + gpio = H3_GPIO_NUM; + omap_cfg_reg(W19_1610_GPIO48); ++ } else if (machine_is_h6300 ()) { ++ gpio = 2; ++ omap_cfg_reg(M14_1510_GPIO2); } else -@@ -1089,9 +1092,10 @@ - if (dsor > 250) - dsor = 250; - dsor++; -- } + return -ENODEV; -- /* REVISIT: if (ios->bus_width == MMC_BUS_WIDTH_4) dsor |= 1 << 15; */ -+ if (ios->bus_width == MMC_BUS_WIDTH_4) -+ dsor |= 1 << 15; + ts->irq = OMAP_GPIO_IRQ(gpio); +- if (omap_request_gpio(gpio) != 0) { +- printk(KERN_ERR "hX_ts_init.c: Could not reserve GPIO!\n"); +- return -EINVAL; +- }; ++ if (!machine_is_h6300 ()){ ++ if (omap_request_gpio(gpio) != 0) { ++ printk(KERN_ERR "hX_ts_init.c: Could not reserve GPIO!\n"); ++ return -EINVAL; ++ }; + } - switch (ios->power_mode) { - case MMC_POWER_OFF: -@@ -1132,9 +1136,17 @@ - clk_unuse(host->fclk); + omap_set_gpio_direction(gpio, 1); + set_irq_type(ts->irq, IRQT_FALLING); +@@ -180,5 +186,7 @@ + omap_free_gpio(H2_GPIO_NUM); + else if (machine_is_omap_h3()) + omap_free_gpio(H3_GPIO_NUM); ++ else if (machine_is_h6300()) ++ omap_free_gpio(2); } + #endif +diff -Naur linux-2.6.14-omap2/drivers/isdn/hardware/eicon/os_4bri.c linux-h6300-omap2-2.6.14.3/drivers/isdn/hardware/eicon/os_4bri.c +--- linux-2.6.14-omap2/drivers/isdn/hardware/eicon/os_4bri.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/isdn/hardware/eicon/os_4bri.c 2005-12-02 01:34:35.000000000 +0200 +@@ -16,6 +16,7 @@ + #include "diva_pci.h" + #include "mi_pc.h" + #include "dsrv4bri.h" ++#include "helpers.h" -+static int mmc_omap_get_ro(struct mmc_host *mmc) -+{ -+ struct mmc_omap_host *host = mmc_priv(mmc); -+ -+ return host->wp_pin && omap_get_gpio_datain(host->wp_pin); -+} -+ - static struct mmc_host_ops mmc_omap_ops = { - .request = mmc_omap_request, - .set_ios = mmc_omap_set_ios, -+ .get_ro = mmc_omap_get_ro, - }; - - static int __init mmc_omap_probe(struct device *dev) -@@ -1192,9 +1204,7 @@ - goto out; - } + static void *diva_xdiLoadFileFile = NULL; + static dword diva_xdiLoadFileLength = 0; +@@ -815,7 +816,7 @@ + return (ret); + } -- /* REVISIT: SD-only support, when core merged -- * - if (minfo->wire4) mmc->caps |= MMC_CAP_4_BIT_DATA; -- * - mmc_omap_ops.get_ro uses wp_pin to sense slider -+ /* REVISIT: - * Also, use minfo->cover to decide how to manage - * the card detect sensing. - */ -@@ -1212,6 +1222,9 @@ - host->irq = pdev->resource[1].start; - host->base = (void __iomem *)pdev->resource[0].start; +-void *xdiLoadFile(char *FileName, unsigned long *FileLength, ++void *xdiLoadFile(char *FileName, dword *FileLength, + unsigned long lim) + { + void *ret = diva_xdiLoadFileFile; +diff -Naur linux-2.6.14-omap2/drivers/mmc/mmc.c linux-h6300-omap2-2.6.14.3/drivers/mmc/mmc.c +--- linux-2.6.14-omap2/drivers/mmc/mmc.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/mmc/mmc.c 2005-11-05 00:46:08.000000000 +0200 +@@ -495,6 +495,7 @@ -+ if (minfo->wire4) -+ mmc->caps |= MMC_CAP_4_BIT_DATA; -+ - mmc->ops = &mmc_omap_ops; - mmc->f_min = 400000; - mmc->f_max = 24000000; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/mtd/nand/omap-hw.c bt_kernel/drivers/mtd/nand/omap-hw.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/mtd/nand/omap-hw.c 2005-10-30 17:44:18.133977666 +0200 -+++ bt_kernel/drivers/mtd/nand/omap-hw.c 2005-10-30 16:32:39.609796000 +0200 -@@ -232,25 +232,30 @@ - fifo_reg = NAND_BASE + NND_FIFO; - if (is_write) { - omap_set_dma_dest_params(dma_ch, OMAP_DMA_PORT_TIPB, -- OMAP_DMA_AMODE_CONSTANT, fifo_reg); -+ OMAP_DMA_AMODE_CONSTANT, fifo_reg, -+ 0, 0); - omap_set_dma_src_params(dma_ch, OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- virt_to_phys(addr)); -+ virt_to_phys(addr), -+ 0, 0); - // omap_set_dma_src_burst_mode(dma_ch, OMAP_DMA_DATA_BURST_4); - /* Set POSTWRITE bit */ - nand_write_reg(NND_CTRL, nand_read_reg(NND_CTRL) | (1 << 16)); - } else { - omap_set_dma_src_params(dma_ch, OMAP_DMA_PORT_TIPB, -- OMAP_DMA_AMODE_CONSTANT, fifo_reg); -+ OMAP_DMA_AMODE_CONSTANT, fifo_reg, -+ 0, 0); - omap_set_dma_dest_params(dma_ch, OMAP_DMA_PORT_EMIFF, - OMAP_DMA_AMODE_POST_INC, -- virt_to_phys(addr)); -+ virt_to_phys(addr), -+ 0, 0); - // omap_set_dma_dest_burst_mode(dma_ch, OMAP_DMA_DATA_BURST_8); - /* Set PREFETCH bit */ - nand_write_reg(NND_CTRL, nand_read_reg(NND_CTRL) | (1 << 17)); + case 2: /* MMC v2.0 - v2.2 */ + case 3: /* MMC v3.1 - v3.3 */ ++ case 4: /* MMC v4 */ + card->cid.manfid = UNSTUFF_BITS(resp, 120, 8); + card->cid.oemid = UNSTUFF_BITS(resp, 104, 16); + card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8); +diff -Naur linux-2.6.14-omap2/drivers/net/wan/hdlc_cisco.c linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_cisco.c +--- linux-2.6.14-omap2/drivers/net/wan/hdlc_cisco.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_cisco.c 2005-12-02 01:34:35.000000000 +0200 +@@ -192,7 +192,9 @@ + "uptime %ud%uh%um%us)\n", + dev->name, days, hrs, + min, sec); ++#if 0 + netif_carrier_on(dev); ++#endif + hdlc->state.cisco.up = 1; + } + } +@@ -225,7 +227,9 @@ + hdlc->state.cisco.settings.timeout * HZ)) { + hdlc->state.cisco.up = 0; + printk(KERN_INFO "%s: Link down\n", dev->name); ++#if 0 + netif_carrier_off(dev); ++#endif } - omap_set_dma_transfer_params(dma_ch, OMAP_DMA_DATA_TYPE_S32, block_size / 4, -- block_count, OMAP_DMA_SYNC_FRAME); -+ block_count, OMAP_DMA_SYNC_FRAME, -+ 0, 0); - init_completion(&comp); - len = u32_count << 2; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/irda/omap1610-ir.c bt_kernel/drivers/net/irda/omap1610-ir.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/irda/omap1610-ir.c 2005-10-30 17:44:18.200967003 +0200 -+++ bt_kernel/drivers/net/irda/omap1610-ir.c 2005-10-30 16:32:39.609796000 +0200 -@@ -166,14 +166,16 @@ - static void omap1610_irda_start_rx_dma(struct omap1610_irda *si) + cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ, +@@ -261,8 +265,10 @@ { - /* Configure DMA */ -- omap_set_dma_src_params(si->rx_dma_channel, 0x3, 0x0, (unsigned long)UART3_RHR); -+ omap_set_dma_src_params(si->rx_dma_channel, 0x3, 0x0, (unsigned long)UART3_RHR, -+ 0, 0); + hdlc_device *hdlc = dev_to_hdlc(dev); + del_timer_sync(&hdlc->state.cisco.timer); ++#if 0 + if (netif_carrier_ok(dev)) + netif_carrier_off(dev); ++#endif + hdlc->state.cisco.up = 0; + hdlc->state.cisco.request_sent = 0; + } +diff -Naur linux-2.6.14-omap2/drivers/net/wan/hdlc_fr.c linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_fr.c +--- linux-2.6.14-omap2/drivers/net/wan/hdlc_fr.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_fr.c 2005-12-02 01:34:35.000000000 +0200 +@@ -545,8 +545,10 @@ - omap_enable_dma_irq(si->rx_dma_channel, 0x01); + hdlc->state.fr.reliable = reliable; + if (reliable) { ++#if 0 + if (!netif_carrier_ok(dev)) + netif_carrier_on(dev); ++#endif - omap_set_dma_dest_params(si->rx_dma_channel, 0x0, 0x1, -- si->rx_buf_dma_phys); -+ si->rx_buf_dma_phys, -+ 0, 0); + hdlc->state.fr.n391cnt = 0; /* Request full status */ + hdlc->state.fr.dce_changed = 1; +@@ -560,8 +562,10 @@ + } + } + } else { ++#if 0 + if (netif_carrier_ok(dev)) + netif_carrier_off(dev); ++#endif + + while (pvc) { /* Deactivate all PVCs */ + pvc_carrier(0, pvc); +diff -Naur linux-2.6.14-omap2/drivers/net/wan/hdlc_generic.c linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_generic.c +--- linux-2.6.14-omap2/drivers/net/wan/hdlc_generic.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wan/hdlc_generic.c 2005-12-02 01:34:35.000000000 +0200 +@@ -79,11 +79,13 @@ + hdlc_device *hdlc = dev_to_hdlc(dev); + if (hdlc->proto.start) + return hdlc->proto.start(dev); ++#if 0 + #ifdef DEBUG_LINK + if (netif_carrier_ok(dev)) + printk(KERN_ERR "hdlc_set_carrier_on(): already on\n"); + #endif + netif_carrier_on(dev); ++#endif + } -- omap_set_dma_transfer_params(si->rx_dma_channel, 0x0, 4096, 0x1, 0x0); -+ omap_set_dma_transfer_params(si->rx_dma_channel, 0x0, 4096, 0x1, 0x0, 0, 0); - omap_start_dma(si->rx_dma_channel); +@@ -94,11 +96,13 @@ + if (hdlc->proto.stop) + return hdlc->proto.stop(dev); + ++#if 0 + #ifdef DEBUG_LINK + if (!netif_carrier_ok(dev)) + printk(KERN_ERR "hdlc_set_carrier_off(): already off\n"); + #endif + netif_carrier_off(dev); ++#endif } -@@ -183,14 +185,16 @@ - __ECHO_IN; - /* Configure DMA */ -- omap_set_dma_dest_params(si->tx_dma_channel, 0x03, 0x0, (unsigned long)UART3_THR); -+ omap_set_dma_dest_params(si->tx_dma_channel, 0x03, 0x0, (unsigned long)UART3_THR, -+ 0, 0); - omap_enable_dma_irq(si->tx_dma_channel, 0x01); +@@ -294,8 +298,10 @@ + if (result != 0) + return -EIO; + ++#if 0 + if (netif_carrier_ok(dev)) + netif_carrier_off(dev); /* no carrier until DCD goes up */ ++#endif - omap_set_dma_src_params(si->tx_dma_channel, 0x0, 0x1, -- si->tx_buf_dma_phys); -+ si->tx_buf_dma_phys, -+ 0, 0); + return 0; + } +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/airo.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo.c +--- linux-2.6.14-omap2/drivers/net/wireless/airo.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo.c 2005-11-23 01:44:02.000000000 +0200 +@@ -46,6 +46,8 @@ + #include <linux/pci.h> + #include <asm/uaccess.h> -- omap_set_dma_transfer_params(si->tx_dma_channel, 0x0, size, 0x1, 0x0); -+ omap_set_dma_transfer_params(si->tx_dma_channel, 0x0, size, 0x1, 0x0, 0, 0); ++#include "airo.h" ++ + #ifdef CONFIG_PCI + static struct pci_device_id card_ids[] = { + { 0x14b9, 1, PCI_ANY_ID, PCI_ANY_ID, }, +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/airo_cs.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo_cs.c +--- linux-2.6.14-omap2/drivers/net/wireless/airo_cs.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo_cs.c 2005-11-23 01:44:02.000000000 +0200 +@@ -42,6 +42,8 @@ + #include <asm/io.h> + #include <asm/system.h> - HDBG1(1); ++#include "airo.h" ++ + /* + All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If + you do not define PCMCIA_DEBUG at all, all the debug code will be +@@ -78,10 +80,6 @@ + event handler. + */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/Kconfig bt_kernel/drivers/net/wireless/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/Kconfig 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/net/wireless/Kconfig 2005-10-22 03:52:45.687256000 +0300 +-struct net_device *init_airo_card( int, int, int, struct device * ); +-void stop_airo_card( struct net_device *, int ); +-int reset_airo_card( struct net_device * ); +- + static void airo_config(dev_link_t *link); + static void airo_release(dev_link_t *link); + static int airo_event(event_t event, int priority, +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/airo.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo.h +--- linux-2.6.14-omap2/drivers/net/wireless/airo.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/airo.h 2005-11-23 01:44:02.000000000 +0200 +@@ -0,0 +1,9 @@ ++#ifndef _AIRO_H_ ++#define _AIRO_H_ ++ ++struct net_device *init_airo_card(unsigned short irq, int port, int is_pcmcia, ++ struct device *dmdev); ++int reset_airo_card(struct net_device *dev); ++void stop_airo_card(struct net_device *dev, int freeres); ++ ++#endif /* _AIRO_H_ */ +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/Kconfig linux-h6300-omap2-2.6.14.3/drivers/net/wireless/Kconfig +--- linux-2.6.14-omap2/drivers/net/wireless/Kconfig 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/Kconfig 2005-10-22 03:52:45.000000000 +0300 @@ -483,5 +483,7 @@ depends on NET_RADIO && (ISA || PCI || PPC_PMAC || PCMCIA) default y @@ -1907,17 +3616,41 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/K + endmenu -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/Makefile bt_kernel/drivers/net/wireless/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/Makefile 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/net/wireless/Makefile 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/Makefile linux-h6300-omap2-2.6.14.3/drivers/net/wireless/Makefile +--- linux-2.6.14-omap2/drivers/net/wireless/Makefile 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/Makefile 2005-10-14 18:55:31.000000000 +0300 @@ -39,3 +39,4 @@ # 16-bit wireless PCMCIA client drivers obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o +obj-$(CONFIG_ACX) += tiacx/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_config.h bt_kernel/drivers/net/wireless/tiacx/acx_config.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_config.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/acx_config.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/prism54/islpci_eth.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/prism54/islpci_eth.c +--- linux-2.6.14-omap2/drivers/net/wireless/prism54/islpci_eth.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/prism54/islpci_eth.c 2005-11-23 01:44:02.000000000 +0200 +@@ -97,12 +97,6 @@ + /* lock the driver code */ + spin_lock_irqsave(&priv->slock, flags); + +- /* determine the amount of fragments needed to store the frame */ +- +- frame_size = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; +- if (init_wds) +- frame_size += 6; +- + /* check whether the destination queue has enough fragments for the frame */ + curr_frag = le32_to_cpu(cb->driver_curr_frag[ISL38XX_CB_TX_DATA_LQ]); + if (unlikely(curr_frag - priv->free_data_tx >= ISL38XX_CB_TX_QSIZE)) { +@@ -213,6 +207,7 @@ + /* store the skb address for future freeing */ + priv->data_low_tx[index] = skb; + /* set the proper fragment start address and size information */ ++ frame_size = skb->len; + fragment->size = cpu_to_le16(frame_size); + fragment->flags = cpu_to_le16(0); /* set to 1 if more fragments */ + fragment->address = cpu_to_le32(pci_map_address); +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_config.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_config.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_config.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_config.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,44 @@ +/* temporary hack until proper Kconfig integration */ +#define CONFIG_ACX_PCI 1 @@ -1963,9 +3696,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +/* 0 - normal mode */ +/* 1 - development/debug: probe for IEs on modprobe */ +#define CMD_DISCOVERY 0 -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_func.h bt_kernel/drivers/net/wireless/tiacx/acx_func.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_func.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/acx_func.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_func.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_func.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_func.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_func.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,660 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -2627,9 +4360,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +void __exit acxpci_e_cleanup_module(void); +void __exit acxusb_e_cleanup_module(void); +#endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx.h bt_kernel/drivers/net/wireless/tiacx/acx.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/acx.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,6 @@ +#include "acx_config.h" +#include "wlan_compat.h" @@ -2637,9 +4370,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +#include "wlan_mgmt.h" +#include "acx_struct.h" +#include "acx_func.h" -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_struct.h bt_kernel/drivers/net/wireless/tiacx/acx_struct.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/acx_struct.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/acx_struct.h 2005-10-29 22:02:44.690471000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_struct.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_struct.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/acx_struct.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/acx_struct.h 2005-10-29 22:02:44.000000000 +0300 @@ -0,0 +1,1966 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -4607,9 +6340,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +extern const u8 reg_domain_ids_len; + +extern const struct iw_handler_def acx_ioctl_handler_def; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/cfi.c bt_kernel/drivers/net/wireless/tiacx/cfi.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/cfi.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/cfi.c 2005-10-29 22:02:44.690471000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/cfi.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/cfi.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/cfi.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/cfi.c 2005-10-29 22:02:44.000000000 +0300 @@ -0,0 +1,4779 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -9390,9 +11123,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + + FN_EXIT0; +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/common.c bt_kernel/drivers/net/wireless/tiacx/common.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/common.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/common.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/common.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/common.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/common.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/common.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,6590 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -15984,9 +17717,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + +module_init(acx_e_init_module) +module_exit(acx_e_cleanup_module) -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/conv.c bt_kernel/drivers/net/wireless/tiacx/conv.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/conv.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/conv.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/conv.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/conv.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/conv.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/conv.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,508 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -16496,9 +18229,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + FN_EXIT1((int)NULL); + return NULL; +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/ioctl.c bt_kernel/drivers/net/wireless/tiacx/ioctl.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/ioctl.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/ioctl.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/ioctl.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/ioctl.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/ioctl.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/ioctl.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,3060 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -19560,9 +21293,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + return result; +} +#endif /* WE < 13 */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/Kconfig bt_kernel/drivers/net/wireless/tiacx/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/Kconfig 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/Kconfig 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/Kconfig linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/Kconfig +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/Kconfig 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/Kconfig 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,59 @@ +config ACX + tristate "TI acx100/acx111 802.11b/g wireless chipsets" @@ -19623,9 +21356,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + depends on ACX + ---help--- + Include Compact Flash support. -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/macros.h bt_kernel/drivers/net/wireless/tiacx/macros.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/macros.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/macros.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/macros.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/macros.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/macros.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/macros.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,33 @@ +#ifndef _MACROS_H +#define _MACROS_H @@ -19660,9 +21393,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +} + +#endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/Makefile bt_kernel/drivers/net/wireless/tiacx/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/Makefile 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/Makefile 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/Makefile linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/Makefile +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/Makefile 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/Makefile 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,9 @@ +#Use this if you have proper Kconfig integration: + @@ -19673,9 +21406,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +acx-obj-$(CONFIG_ACX_CFI) += cfi.o + +acx-objs := wlan.o conv.o ioctl.o common.o $(acx-obj-y) -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/pci.c bt_kernel/drivers/net/wireless/tiacx/pci.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/pci.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/pci.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/pci.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/pci.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/pci.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/pci.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,4840 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -24517,9 +26250,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + + FN_EXIT0; +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/setrate.c bt_kernel/drivers/net/wireless/tiacx/setrate.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/setrate.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/setrate.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/setrate.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/setrate.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/setrate.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/setrate.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,213 @@ +/* TODO: stop #including, move into wireless.c + * until then, keep in sync copies in prism54/ and acx/ dirs @@ -24734,9 +26467,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + return -EINVAL; + return 0; +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/usb.c bt_kernel/drivers/net/wireless/tiacx/usb.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/usb.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/usb.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/usb.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/usb.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/usb.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/usb.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,1700 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -26438,9 +28171,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +#endif /* UNUSED */ + +#endif /* ACX_DEBUG */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan.c bt_kernel/drivers/net/wireless/tiacx/wlan.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/wlan.c 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan.c linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan.c +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan.c 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,392 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -26834,9 +28567,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + + /*-- Information elements */ +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_compat.h bt_kernel/drivers/net/wireless/tiacx/wlan_compat.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_compat.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/wlan_compat.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_compat.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_compat.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_compat.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_compat.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,297 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -27135,9 +28868,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + u8 oui[WLAN_IEEE_OUI_LEN] __WLAN_ATTRIB_PACK__; + u16 type __WLAN_ATTRIB_PACK__; +} wlan_snap_t; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_hdr.h bt_kernel/drivers/net/wireless/tiacx/wlan_hdr.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_hdr.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/wlan_hdr.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_hdr.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_hdr.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_hdr.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_hdr.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,497 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -27636,9 +29369,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t +#define WLANSNIFFFRM_rate 0x8041 +#define WLANSNIFFFRM_istx 0x9041 +#define WLANSNIFFFRM_frmlen 0xA041 -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_mgmt.h bt_kernel/drivers/net/wireless/tiacx/wlan_mgmt.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/tiacx/wlan_mgmt.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/net/wireless/tiacx/wlan_mgmt.h 2005-09-28 23:54:23.938287000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_mgmt.h linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_mgmt.h +--- linux-2.6.14-omap2/drivers/net/wireless/tiacx/wlan_mgmt.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/net/wireless/tiacx/wlan_mgmt.h 2005-09-28 23:54:23.000000000 +0300 @@ -0,0 +1,579 @@ +/*********************************************************************** +** Copyright (C) 2003 ACX100 Open Source Project @@ -28219,17 +29952,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/net/wireless/t + ie->virt_bm[0] = 0; + return p + len + 3 + 2; +} -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/pci/.gitignore bt_kernel/drivers/pci/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/pci/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/pci/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,4 +0,0 @@ --classlist.h --devlist.h --gen-devlist -- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-tsc2101.c bt_kernel/drivers/ssi/omap-tsc2101.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-tsc2101.c 2005-10-30 17:44:18.415932786 +0200 -+++ bt_kernel/drivers/ssi/omap-tsc2101.c 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/ssi/omap-tsc2101.c linux-h6300-omap2-2.6.14.3/drivers/ssi/omap-tsc2101.c +--- linux-2.6.14-omap2/drivers/ssi/omap-tsc2101.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/ssi/omap-tsc2101.c 2005-10-22 03:52:45.000000000 +0300 @@ -36,10 +36,11 @@ #include <asm/arch/hardware.h> #include <asm/hardware/tsc2101.h> @@ -28407,9 +30132,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-tsc21 - ("Glue audio driver for the TI OMAP1610/OMAP1710 TSC2101 codec."); + ("Glue audio driver for the TI OMAP1510/1610/OMAP1710 TSC2101 codec."); MODULE_LICENSE("GPL"); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-uwire.c bt_kernel/drivers/ssi/omap-uwire.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-uwire.c 2005-10-30 17:44:18.435929603 +0200 -+++ bt_kernel/drivers/ssi/omap-uwire.c 2005-08-12 13:46:22.016114000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/ssi/omap-uwire.c linux-h6300-omap2-2.6.14.3/drivers/ssi/omap-uwire.c +--- linux-2.6.14-omap2/drivers/ssi/omap-uwire.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/ssi/omap-uwire.c 2005-08-12 13:46:22.000000000 +0300 @@ -212,6 +212,10 @@ omap_cfg_reg(N14_1610_UWIRE_CS0); omap_cfg_reg(P15_1610_UWIRE_CS3); @@ -28421,9 +30146,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/ssi/omap-uwire if (machine_is_omap_perseus2()) { /* configure pins: MPU_UW_nSCS1, MPU_UW_SDO, MPU_UW_SCLK */ int val = omap_readl(OMAP730_IO_CONF_9) & ~0x00EEE000; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Kconfig bt_kernel/drivers/telephony/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Kconfig 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/telephony/Kconfig 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/Kconfig linux-h6300-omap2-2.6.14.3/drivers/telephony/Kconfig +--- linux-2.6.14-omap2/drivers/telephony/Kconfig 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/Kconfig 2005-10-06 02:34:39.000000000 +0300 @@ -41,7 +41,18 @@ help Say Y here to configure in PCMCIA service support for the Quicknet @@ -28444,9 +30169,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Kcon endmenu -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Makefile bt_kernel/drivers/telephony/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Makefile 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/telephony/Makefile 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/Makefile linux-h6300-omap2-2.6.14.3/drivers/telephony/Makefile +--- linux-2.6.14-omap2/drivers/telephony/Makefile 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/Makefile 2005-10-06 02:34:39.000000000 +0300 @@ -2,6 +2,7 @@ # Makefile for drivers/telephony # @@ -28458,9 +30183,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/Make +obj-$(CONFIG_PHONE_IXJ) += ixj.o +obj-$(CONFIG_PHONE_IXJ_PCMCIA) += ixj_pcmcia.o +obj-$(CONFIG_GSM_H6300) += omap/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_led.c bt_kernel/drivers/telephony/omap/h6300_gsm_led.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_led.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/telephony/omap/h6300_gsm_led.c 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_led.c linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_led.c +--- linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_led.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_led.c 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,40 @@ +/* + * GSM interface driver helper for controlling bluetooth leds available in iPAQ h6300. @@ -28502,9 +30227,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap + printk(KERN_NOTICE "h6300_gsm_led.c h6300_set_gsm_led() done\n"); +} +EXPORT_SYMBOL(h6300_set_gsm_led); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_led.h bt_kernel/drivers/telephony/omap/h6300_gsm_led.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_led.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/telephony/omap/h6300_gsm_led.h 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_led.h linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_led.h +--- linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_led.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_led.h 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,10 @@ +#ifndef H6300_GSM_LED_H_ +#define H6300_GSM_LED_H_ @@ -28516,9 +30241,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap + + +#endif /*H6300_GSM_LED_H_*/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_p5186.c bt_kernel/drivers/telephony/omap/h6300_gsm_p5186.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/h6300_gsm_p5186.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/telephony/omap/h6300_gsm_p5186.c 2005-10-20 20:57:07.074687000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_p5186.c linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_p5186.c +--- linux-2.6.14-omap2/drivers/telephony/omap/h6300_gsm_p5186.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/h6300_gsm_p5186.c 2005-10-20 20:57:07.000000000 +0300 @@ -0,0 +1,171 @@ +/* + * Wavecom P5186 GPRS and GSM module driver for iPAQ h6300. @@ -28691,9 +30416,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap +MODULE_DESCRIPTION("iPAQ h6300 Wavecom P5186 GPRS and GSM module driver."); +MODULE_LICENSE("GPL"); + -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/Makefile bt_kernel/drivers/telephony/omap/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap/Makefile 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/telephony/omap/Makefile 2005-10-06 02:34:39.057478000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/telephony/omap/Makefile linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/Makefile +--- linux-2.6.14-omap2/drivers/telephony/omap/Makefile 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/telephony/omap/Makefile 2005-10-06 02:34:39.000000000 +0300 @@ -0,0 +1,6 @@ +# +# Makefile for the Linux iPAQ H6300 BRF6100 Bluetooth device drivers. @@ -28701,83 +30426,155 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/telephony/omap + +h6300_gsm-objs := h6300_gsm_led.o h6300_gsm_p5186.o +obj-$(CONFIG_GSM_H6300) += h6300_gsm.o -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/usb/gadget/omap_udc.c bt_kernel/drivers/usb/gadget/omap_udc.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/usb/gadget/omap_udc.c 2005-10-30 17:44:18.495920054 +0200 -+++ bt_kernel/drivers/usb/gadget/omap_udc.c 2005-10-30 16:32:39.609796000 +0200 -@@ -622,17 +622,24 @@ - || (cpu_is_omap15xx() && length < ep->maxpacket)) { - txdma_ctrl = UDC_TXN_EOT | length; - omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S8, -- length, 1, sync_mode); -+ length, 1, sync_mode, 0, 0); - } else { - length = min(length / ep->maxpacket, - (unsigned) UDC_TXN_TSC + 1); - txdma_ctrl = length; -- omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, -- ep->ep.maxpacket >> 1, length, sync_mode); -+ if (machine_is_h6300()) -+ omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S8, -+ ep->ep.maxpacket, length, sync_mode, -+ 0, 0); -+ else -+ omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, -+ ep->ep.maxpacket >> 1, length, sync_mode, -+ 0, 0); - length *= ep->maxpacket; - } - omap_set_dma_src_params(ep->lch, OMAP_DMA_PORT_EMIFF, -- OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual); -+ OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual, -+ 0, 0); +diff -Naur linux-2.6.14-omap2/drivers/usb/core/sysfs.c linux-h6300-omap2-2.6.14.3/drivers/usb/core/sysfs.c +--- linux-2.6.14-omap2/drivers/usb/core/sysfs.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/usb/core/sysfs.c 2005-11-23 01:44:02.000000000 +0200 +@@ -292,30 +292,23 @@ + { + struct usb_interface *intf; + struct usb_device *udev; +- int len; ++ struct usb_host_interface *alt; - omap_start_dma(ep->lch); - ep->dma_counter = dma_csac(ep->lch); -@@ -675,11 +682,19 @@ - packets = (req->req.length - req->req.actual) / ep->ep.maxpacket; - packets = min(packets, (unsigned)UDC_RXN_TC + 1); - req->dma_bytes = packets * ep->ep.maxpacket; -- omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, -- ep->ep.maxpacket >> 1, packets, -- OMAP_DMA_SYNC_ELEMENT); -+ if (machine_is_h6300()) -+ omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S8, -+ ep->ep.maxpacket, packets, -+ OMAP_DMA_SYNC_ELEMENT, -+ 0, 0); -+ else -+ omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, -+ ep->ep.maxpacket >> 1, packets, -+ OMAP_DMA_SYNC_ELEMENT, -+ 0, 0); - omap_set_dma_dest_params(ep->lch, OMAP_DMA_PORT_EMIFF, -- OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual); -+ OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual, -+ 0, 0); - ep->dma_counter = DMA_DEST_LAST(ep->lch); + intf = to_usb_interface(dev); + udev = interface_to_usbdev(intf); ++ alt = intf->cur_altsetting; - UDC_RXDMA_REG(ep->dma_channel) = UDC_RXN_STOP | (packets - 1); -@@ -822,7 +837,8 @@ - omap_set_dma_dest_params(ep->lch, - OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG)); -+ (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG), -+ 0, 0); - } - } else { - status = omap_request_dma(OMAP_DMA_USB_W2FC_RX0 - 1 + channel, -@@ -833,7 +849,8 @@ - omap_set_dma_src_params(ep->lch, - OMAP_DMA_PORT_TIPB, - OMAP_DMA_AMODE_CONSTANT, -- (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG)); -+ (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG), -+ 0, 0); - /* EMIFF */ - omap_set_dma_dest_burst_mode(ep->lch, - OMAP_DMA_DATA_BURST_4); -@@ -2103,7 +2120,7 @@ +- len = sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic", +- le16_to_cpu(udev->descriptor.idVendor), +- le16_to_cpu(udev->descriptor.idProduct), +- le16_to_cpu(udev->descriptor.bcdDevice), +- udev->descriptor.bDeviceClass, +- udev->descriptor.bDeviceSubClass, +- udev->descriptor.bDeviceProtocol); +- buf += len; +- +- if (udev->descriptor.bDeviceClass == 0) { +- struct usb_host_interface *alt = intf->cur_altsetting; +- +- return len + sprintf(buf, "%02Xisc%02Xip%02X\n", +- alt->desc.bInterfaceClass, +- alt->desc.bInterfaceSubClass, +- alt->desc.bInterfaceProtocol); +- } else { +- return len + sprintf(buf, "*isc*ip*\n"); +- } ++ return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02X" ++ "ic%02Xisc%02Xip%02X\n", ++ le16_to_cpu(udev->descriptor.idVendor), ++ le16_to_cpu(udev->descriptor.idProduct), ++ le16_to_cpu(udev->descriptor.bcdDevice), ++ udev->descriptor.bDeviceClass, ++ udev->descriptor.bDeviceSubClass, ++ udev->descriptor.bDeviceProtocol, ++ alt->desc.bInterfaceClass, ++ alt->desc.bInterfaceSubClass, ++ alt->desc.bInterfaceProtocol); + } + static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL); + +diff -Naur linux-2.6.14-omap2/drivers/usb/core/usb.c linux-h6300-omap2-2.6.14.3/drivers/usb/core/usb.c +--- linux-2.6.14-omap2/drivers/usb/core/usb.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/drivers/usb/core/usb.c 2005-11-23 01:44:02.000000000 +0200 +@@ -557,6 +557,7 @@ + { + struct usb_interface *intf; + struct usb_device *usb_dev; ++ struct usb_host_interface *alt; + int i = 0; + int length = 0; + +@@ -573,7 +574,8 @@ + + intf = to_usb_interface(dev); + usb_dev = interface_to_usbdev (intf); +- ++ alt = intf->cur_altsetting; ++ + if (usb_dev->devnum < 0) { + pr_debug ("usb %s: already deleted?\n", dev->bus_id); + return -ENODEV; +@@ -615,46 +617,27 @@ + usb_dev->descriptor.bDeviceProtocol)) + return -ENOMEM; + +- if (usb_dev->descriptor.bDeviceClass == 0) { +- struct usb_host_interface *alt = intf->cur_altsetting; ++ if (add_hotplug_env_var(envp, num_envp, &i, ++ buffer, buffer_size, &length, ++ "INTERFACE=%d/%d/%d", ++ alt->desc.bInterfaceClass, ++ alt->desc.bInterfaceSubClass, ++ alt->desc.bInterfaceProtocol)) ++ return -ENOMEM; + +- /* 2.4 only exposed interface zero. in 2.5, hotplug +- * agents are called for all interfaces, and can use +- * $DEVPATH/bInterfaceNumber if necessary. +- */ +- if (add_hotplug_env_var(envp, num_envp, &i, +- buffer, buffer_size, &length, +- "INTERFACE=%d/%d/%d", +- alt->desc.bInterfaceClass, +- alt->desc.bInterfaceSubClass, +- alt->desc.bInterfaceProtocol)) +- return -ENOMEM; +- +- if (add_hotplug_env_var(envp, num_envp, &i, +- buffer, buffer_size, &length, +- "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", +- le16_to_cpu(usb_dev->descriptor.idVendor), +- le16_to_cpu(usb_dev->descriptor.idProduct), +- le16_to_cpu(usb_dev->descriptor.bcdDevice), +- usb_dev->descriptor.bDeviceClass, +- usb_dev->descriptor.bDeviceSubClass, +- usb_dev->descriptor.bDeviceProtocol, +- alt->desc.bInterfaceClass, +- alt->desc.bInterfaceSubClass, +- alt->desc.bInterfaceProtocol)) +- return -ENOMEM; +- } else { +- if (add_hotplug_env_var(envp, num_envp, &i, +- buffer, buffer_size, &length, +- "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*", +- le16_to_cpu(usb_dev->descriptor.idVendor), +- le16_to_cpu(usb_dev->descriptor.idProduct), +- le16_to_cpu(usb_dev->descriptor.bcdDevice), +- usb_dev->descriptor.bDeviceClass, +- usb_dev->descriptor.bDeviceSubClass, +- usb_dev->descriptor.bDeviceProtocol)) +- return -ENOMEM; +- } ++ if (add_hotplug_env_var(envp, num_envp, &i, ++ buffer, buffer_size, &length, ++ "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", ++ le16_to_cpu(usb_dev->descriptor.idVendor), ++ le16_to_cpu(usb_dev->descriptor.idProduct), ++ le16_to_cpu(usb_dev->descriptor.bcdDevice), ++ usb_dev->descriptor.bDeviceClass, ++ usb_dev->descriptor.bDeviceSubClass, ++ usb_dev->descriptor.bDeviceProtocol, ++ alt->desc.bInterfaceClass, ++ alt->desc.bInterfaceSubClass, ++ alt->desc.bInterfaceProtocol)) ++ return -ENOMEM; + + envp[i] = NULL; + +diff -Naur linux-2.6.14-omap2/drivers/usb/gadget/omap_udc.c linux-h6300-omap2-2.6.14.3/drivers/usb/gadget/omap_udc.c +--- linux-2.6.14-omap2/drivers/usb/gadget/omap_udc.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/usb/gadget/omap_udc.c 2005-11-11 04:13:42.000000000 +0200 +@@ -59,7 +59,8 @@ + #undef USB_TRACE + + /* bulk DMA seems to be behaving for both IN and OUT */ +-#define USE_DMA ++//#define USE_DMA ++#undef USE_DMA + + /* ISO too */ + #define USE_ISO +@@ -2109,7 +2110,7 @@ /* boards that don't have VBUS sensing can't autogate 48MHz; * can't enter deep sleep while a gadget driver is active. */ @@ -28786,7 +30583,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/usb/gadget/oma omap_vbus_session(&udc->gadget, 1); done: -@@ -2121,7 +2138,7 @@ +@@ -2127,7 +2128,7 @@ if (!driver || driver != udc->driver) return -EINVAL; @@ -28795,7 +30592,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/usb/gadget/oma omap_vbus_session(&udc->gadget, 0); if (udc->transceiver) -@@ -2729,7 +2746,7 @@ +@@ -2735,7 +2736,7 @@ hmc = HMC_1510; type = "(unknown)"; @@ -28804,20 +30601,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/usb/gadget/oma /* just set up software VBUS detect, and then * later rig it so we always report VBUS. * FIXME without really sensing VBUS, we can't -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/logo/.gitignore bt_kernel/drivers/video/logo/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/logo/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/drivers/video/logo/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,7 +0,0 @@ --# --# Generated files --# --*_mono.c --*_vga16.c --*_clut224.c --*_gray256.c -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/lcd_h6300.c bt_kernel/drivers/video/omap/lcd_h6300.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/lcd_h6300.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/video/omap/lcd_h6300.c 2005-10-30 16:32:39.609796000 +0200 +diff -Naur linux-2.6.14-omap2/drivers/video/omap/lcd_h6300.c linux-h6300-omap2-2.6.14.3/drivers/video/omap/lcd_h6300.c +--- linux-2.6.14-omap2/drivers/video/omap/lcd_h6300.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/video/omap/lcd_h6300.c 2005-11-11 04:13:42.000000000 +0200 @@ -0,0 +1,107 @@ +/* + * File: drivers/video/omap_new/lcd-h6300.c @@ -28861,7 +30647,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/lcd + if ((h6300_lcd_ck = clk_get (NULL, "lcd_ck")) == NULL) { + printk(KERN_ERR "Unable to get the clock LCD_CK!!!\n"); + return -EPERM; -+ } clk_enable (h6300_lcd_ck); ++ } clk_enable(h6300_lcd_ck); +*/ + DBGLEAVE(1); + printk(KERN_INFO "lcd_h6300.c: h6300_panel_init() done\n"); @@ -28873,7 +30659,7 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/lcd + DBGENTER(1); +/* + if (h6300_lcd_ck) { -+ clk_disable (h6300_lcd_ck); ++ clk_disable(h6300_lcd_ck); + clk_put (h6300_lcd_ck); + h6300_lcd_ck = NULL; + } @@ -28926,9 +30712,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/lcd + .disable = h6300_panel_disable, + .get_caps = h6300_panel_get_caps, +}; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/Makefile bt_kernel/drivers/video/omap/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/Makefile 2005-10-30 17:44:18.730882654 +0200 -+++ bt_kernel/drivers/video/omap/Makefile 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/video/omap/Makefile linux-h6300-omap2-2.6.14.3/drivers/video/omap/Makefile +--- linux-2.6.14-omap2/drivers/video/omap/Makefile 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/video/omap/Makefile 2005-10-22 03:52:45.000000000 +0300 @@ -21,6 +21,7 @@ objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1510.o objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o @@ -28937,338 +30723,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/Mak omapfb-objs := $(objs-yy) -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/omapfb.h bt_kernel/drivers/video/omap/omapfb.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/omapfb.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/drivers/video/omap/omapfb.h 2005-08-12 13:46:22.016114000 +0300 -@@ -0,0 +1,325 @@ -+/* -+ * 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_panel h6300_panel; -+ -+extern struct lcd_ctrl omapfb_lcdc_ctrl; -+ -+#endif /* __KERNEL__ */ -+ -+#endif /* __OMAPFB_H */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/omapfb_main.c bt_kernel/drivers/video/omap/omapfb_main.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/omapfb_main.c 2005-10-30 17:44:18.967844936 +0200 -+++ bt_kernel/drivers/video/omap/omapfb_main.c 2005-10-24 19:16:46.600530000 +0300 +diff -Naur linux-2.6.14-omap2/drivers/video/omap/omapfb_main.c linux-h6300-omap2-2.6.14.3/drivers/video/omap/omapfb_main.c +--- linux-2.6.14-omap2/drivers/video/omap/omapfb_main.c 2005-12-02 01:53:33.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/drivers/video/omap/omapfb_main.c 2005-10-24 19:16:46.000000000 +0300 @@ -89,6 +89,7 @@ extern struct lcd_panel innovator1610_panel; extern struct lcd_panel innovator1510_panel; @@ -29287,92 +30744,94 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/drivers/video/omap/oma #ifdef CONFIG_MACH_OMAP_INNOVATOR -@@ -260,18 +264,40 @@ - u_int blue, u_int transp, int update_hw_pal) - { - struct omapfb_device *fbdev = (struct omapfb_device *)info->par; -- u16 pal; - int r = 0; +diff -Naur linux-2.6.14-omap2/fs/exec.c linux-h6300-omap2-2.6.14.3/fs/exec.c +--- linux-2.6.14-omap2/fs/exec.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/fs/exec.c 2005-11-23 01:44:02.000000000 +0200 +@@ -593,6 +593,7 @@ + struct signal_struct *sig = tsk->signal; + struct sighand_struct *newsighand, *oldsighand = tsk->sighand; + spinlock_t *lock = &oldsighand->siglock; ++ struct task_struct *leader = NULL; + int count; -- if (regno < 16) { -- pal = ((red >> 11) << 11) | ((green >> 10) << 5) | (blue >> 11); -- ((u32 *)(info->pseudo_palette))[regno] = pal; -- } -+ switch (fbdev->color_mode) { -+ case OMAPFB_COLOR_YUV422: -+ case OMAPFB_COLOR_YUV420: -+ r = -EINVAL; -+ break; -+ case OMAPFB_COLOR_CLUT_8BPP: -+ case OMAPFB_COLOR_CLUT_4BPP: -+ case OMAPFB_COLOR_CLUT_2BPP: -+ case OMAPFB_COLOR_CLUT_1BPP: -+ if (fbdev->ctrl->setcolreg) -+ r = fbdev->ctrl->setcolreg(regno, red, green, blue, -+ transp, update_hw_pal); -+ /* Fallthrough */ -+ case OMAPFB_COLOR_RGB565: -+ if (r != 0) -+ break; + /* +@@ -668,7 +669,7 @@ + * and to assume its PID: + */ + if (!thread_group_leader(current)) { +- struct task_struct *leader = current->group_leader, *parent; ++ struct task_struct *parent; + struct dentry *proc_dentry1, *proc_dentry2; + unsigned long exit_state, ptrace; -- if (fbdev->ctrl->setcolreg) -- r = fbdev->ctrl->setcolreg(regno, red, green, blue, transp, -- update_hw_pal); -+ if (regno < 0) { -+ r = -EINVAL; -+ break; -+ } +@@ -677,6 +678,7 @@ + * It should already be zombie at this point, most + * of the time. + */ ++ leader = current->group_leader; + while (leader->exit_state != EXIT_ZOMBIE) + yield(); -+ if (regno < 16) { -+ u16 pal; -+ pal = ((red >> 11) << 11) | ((green >> 10) << 5) | -+ (blue >> 11); -+ ((u32 *)(info->pseudo_palette))[regno] = pal; -+ } -+ break; -+ default: -+ BUG(); -+ } - return r; - } +@@ -736,7 +738,6 @@ + proc_pid_flush(proc_dentry2); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/.gitignore bt_kernel/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,30 +0,0 @@ --# --# NOTE! Don't add files that are generated in specific --# subdirectories here. Add them in the ".gitignore" file --# in that subdirectory instead. --# --# Normal rules --# --.* --*.o --*.a --*.s --*.ko --*.mod.c -- --# --# Top-level generic files --# --vmlinux* --System.map --Module.symvers -- --# --# Generated include files --# --include/asm --include/config --include/linux/autoconf.h --include/linux/compile.h --include/linux/version.h -- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/board-h6300.h bt_kernel/include/asm-arm/arch-omap/board-h6300.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/board-h6300.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/board-h6300.h 2005-08-12 13:46:22.016114000 +0300 + BUG_ON(exit_state != EXIT_ZOMBIE); +- release_task(leader); + } + + /* +@@ -746,8 +747,11 @@ + sig->flags = 0; + + no_thread_group: +- BUG_ON(atomic_read(&sig->count) != 1); + exit_itimers(sig); ++ if (leader) ++ release_task(leader); ++ ++ BUG_ON(atomic_read(&sig->count) != 1); + + if (atomic_read(&oldsighand->count) == 1) { + /* +diff -Naur linux-2.6.14-omap2/fs/locks.c linux-h6300-omap2-2.6.14.3/fs/locks.c +--- linux-2.6.14-omap2/fs/locks.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/fs/locks.c 2005-12-02 01:34:35.000000000 +0200 +@@ -1418,7 +1418,7 @@ + lock_kernel(); + + error = __setlease(filp, arg, &flp); +- if (error) ++ if (error || arg == F_UNLCK) + goto out_unlock; + + error = fasync_helper(fd, filp, 1, &flp->fl_fasync); +diff -Naur linux-2.6.14-omap2/fs/xfs/Kconfig linux-h6300-omap2-2.6.14.3/fs/xfs/Kconfig +--- linux-2.6.14-omap2/fs/xfs/Kconfig 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/fs/xfs/Kconfig 2005-11-23 01:44:02.000000000 +0200 +@@ -24,7 +24,7 @@ + default y + + config XFS_QUOTA +- tristate "XFS Quota support" ++ bool "XFS Quota support" + depends on XFS_FS + help + If you say Y here, you will be able to set limits for disk usage on +diff -Naur linux-2.6.14-omap2/include/asm-alpha/barrier.h linux-h6300-omap2-2.6.14.3/include/asm-alpha/barrier.h +--- linux-2.6.14-omap2/include/asm-alpha/barrier.h 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/include/asm-alpha/barrier.h 2005-11-23 01:44:02.000000000 +0200 +@@ -1,6 +1,8 @@ + #ifndef __BARRIER_H + #define __BARRIER_H + ++#include <asm/compiler.h> ++ + #define mb() \ + __asm__ __volatile__("mb": : :"memory") + +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/board-h6300.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/board-h6300.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/board-h6300.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/board-h6300.h 2005-08-12 13:46:22.000000000 +0300 @@ -0,0 +1,40 @@ +/* + * linux/include/asm-arm/arch-omap/board-innovator.h @@ -29414,65 +30873,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o +#define NR_IRQS IH_BOARD_BASE + NR_FPGA_IRQS + +#endif /* __ASM_ARCH_H6300_H */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/cpu.h bt_kernel/include/asm-arm/arch-omap/cpu.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/cpu.h 2005-10-30 17:44:19.208806581 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/cpu.h 2005-10-30 16:32:39.609796000 +0200 -@@ -215,4 +215,9 @@ - # define cpu_is_omap2420() 1 - #endif - -+/* Macros to detect if we have OMAP1 or OMAP2 */ -+#define cpu_class_is_omap1() (cpu_is_omap730() || cpu_is_omap15xx() || \ -+ cpu_is_omap16xx()) -+#define cpu_class_is_omap2() cpu_is_omap24xx() -+ - #endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/dma.h bt_kernel/include/asm-arm/arch-omap/dma.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/dma.h 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/include/asm-arm/arch-omap/dma.h 2005-10-30 16:32:39.609796000 +0200 -@@ -217,19 +217,22 @@ - extern void omap_stop_dma(int lch); - extern void omap_set_dma_transfer_params(int lch, int data_type, - int elem_count, int frame_count, -- int sync_mode); -+ int sync_mode, -+ int dma_trigger, int src_or_dst_synch); - extern void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, - u32 color); - - extern void omap_set_dma_src_params(int lch, int src_port, int src_amode, -- unsigned long src_start); -+ unsigned long src_start, -+ int src_ei, int src_fi); - extern void omap_set_dma_src_index(int lch, int eidx, int fidx); - extern void omap_set_dma_src_data_pack(int lch, int enable); - extern void omap_set_dma_src_burst_mode(int lch, - enum omap_dma_burst_mode burst_mode); - - extern void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode, -- unsigned long dest_start); -+ unsigned long dest_start, -+ int dst_ei, int dst_fi); - extern void omap_set_dma_dest_index(int lch, int eidx, int fidx); - extern void omap_set_dma_dest_data_pack(int lch, int enable); - extern void omap_set_dma_dest_burst_mode(int lch, -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/hardware.h bt_kernel/include/asm-arm/arch-omap/hardware.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/hardware.h 2005-10-30 17:44:19.364781754 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/hardware.h 2005-10-22 03:52:45.687256000 +0300 -@@ -290,6 +290,10 @@ - #include "board-innovator.h" - #endif - -+#ifdef CONFIG_MACH_OMAP_H6300 -+#include "board-h6300.h" -+#endif -+ - #ifdef CONFIG_MACH_OMAP_H2 - #include "board-h2.h" - #endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/h6300_uart_info.h bt_kernel/include/asm-arm/arch-omap/h6300_uart_info.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/h6300_uart_info.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/h6300_uart_info.h 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/h6300_uart_info.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/h6300_uart_info.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/h6300_uart_info.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/h6300_uart_info.h 2005-10-14 18:55:31.000000000 +0300 @@ -0,0 +1,33 @@ +/* + * Support file for calling h6300 uart configuration functions. @@ -29507,9 +30910,35 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o +}; + +#endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/mux.h bt_kernel/include/asm-arm/arch-omap/mux.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/mux.h 2005-10-30 17:44:19.465765680 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/mux.h 2005-10-14 18:55:31.156317000 +0300 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/hardware.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/hardware.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/hardware.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/hardware.h 2005-10-22 03:52:45.000000000 +0300 +@@ -290,6 +290,10 @@ + #include "board-innovator.h" + #endif + ++#ifdef CONFIG_MACH_OMAP_H6300 ++#include "board-h6300.h" ++#endif ++ + #ifdef CONFIG_MACH_OMAP_H2 + #include "board-h2.h" + #endif +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/irqs.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/irqs.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/irqs.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/irqs.h 2005-11-11 04:13:42.000000000 +0200 +@@ -237,7 +237,7 @@ + #define INT_24XX_SDMA_IRQ1 13 + #define INT_24XX_SDMA_IRQ2 14 + #define INT_24XX_SDMA_IRQ3 15 +-#define INT_24XX_DSS_IRQ 25 ++#define INT_24XX_DSS_IRQ 25 + #define INT_24XX_GPIO_BANK1 29 + #define INT_24XX_GPIO_BANK2 30 + #define INT_24XX_GPIO_BANK3 31 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/mux.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/mux.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/mux.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/mux.h 2005-10-14 18:55:31.000000000 +0300 @@ -316,6 +316,13 @@ P15_1610_UWIRE_CS3, N15_1610_UWIRE_CS1, @@ -29532,9 +30961,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o V5_1710_MCLK_ON, V5_1710_MCLK_OFF, R10_1610_MCLK_ON, -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/omapfb.h bt_kernel/include/asm-arm/arch-omap/omapfb.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/omapfb.h 2005-10-30 17:44:19.557751038 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/omapfb.h 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/omapfb.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/omapfb.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/omapfb.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/omapfb.h 2005-11-11 04:13:42.000000000 +0200 @@ -267,6 +267,7 @@ extern struct lcd_panel osk_panel; extern struct lcd_panel innovator1610_panel; @@ -29543,9 +30972,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o #ifdef CONFIG_ARCH_OMAP1 extern struct lcd_ctrl omap1_lcd_ctrl; -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/omap_serial.h bt_kernel/include/asm-arm/arch-omap/omap_serial.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/omap_serial.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/omap_serial.h 2005-10-04 00:58:34.589442000 +0300 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/omap_serial.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/omap_serial.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/omap_serial.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/omap_serial.h 2005-10-04 00:58:34.000000000 +0300 @@ -0,0 +1,62 @@ +/* + * Omap/h6300 serial driver private interface. @@ -29609,9 +31038,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o +extern struct platform_device btuart_device; + +#endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/pca9535.h bt_kernel/include/asm-arm/arch-omap/pca9535.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-omap/pca9535.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/include/asm-arm/arch-omap/pca9535.h 2005-10-25 03:24:45.525766000 +0300 +diff -Naur linux-2.6.14-omap2/include/asm-arm/arch-omap/pca9535.h linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/pca9535.h +--- linux-2.6.14-omap2/include/asm-arm/arch-omap/pca9535.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/include/asm-arm/arch-omap/pca9535.h 2005-10-25 03:24:45.000000000 +0300 @@ -0,0 +1,39 @@ +#ifndef _PCA9535_H +#define _PCA9535_H @@ -29652,1117 +31081,1827 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/include/asm-arm/arch-o +extern int pca9535_gpio_direction(int gpio, unsigned char direction); + +#endif -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/lib/.gitignore bt_kernel/lib/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/lib/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/lib/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,6 +0,0 @@ --# --# Generated files --# --gen_crc32table --crc32table.h +diff -Naur linux-2.6.14-omap2/include/linux/proc_fs.h linux-h6300-omap2-2.6.14.3/include/linux/proc_fs.h +--- linux-2.6.14-omap2/include/linux/proc_fs.h 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/include/linux/proc_fs.h 2005-11-23 01:44:02.000000000 +0200 +@@ -66,6 +66,7 @@ + write_proc_t *write_proc; + atomic_t count; /* use count */ + int deleted; /* delete flag */ ++ void *set; + }; + + struct kcore_list { +diff -Naur linux-2.6.14-omap2/include/linux/sysctl.h linux-h6300-omap2-2.6.14.3/include/linux/sysctl.h +--- linux-2.6.14-omap2/include/linux/sysctl.h 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/include/linux/sysctl.h 2005-11-23 01:44:02.000000000 +0200 +@@ -24,6 +24,7 @@ + #include <linux/compiler.h> + + struct file; ++struct completion; + + #define CTL_MAXNAME 10 /* how many path components do we allow in a + call to sysctl? In other words, what is +@@ -925,6 +926,8 @@ + { + ctl_table *ctl_table; + struct list_head ctl_entry; ++ int used; ++ struct completion *unregistering; + }; + + struct ctl_table_header * register_sysctl_table(ctl_table * table, +diff -Naur linux-2.6.14-omap2/include/net/ipv6.h linux-h6300-omap2-2.6.14.3/include/net/ipv6.h +--- linux-2.6.14-omap2/include/net/ipv6.h 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/include/net/ipv6.h 2005-12-02 01:34:35.000000000 +0200 +@@ -237,6 +237,8 @@ + int newtype, + struct ipv6_opt_hdr __user *newopt, + int newoptlen); ++struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space, ++ struct ipv6_txoptions *opt); + + extern int ip6_frag_nqueues; + extern atomic_t ip6_frag_mem; +diff -Naur linux-2.6.14-omap2/kernel/ptrace.c linux-h6300-omap2-2.6.14.3/kernel/ptrace.c +--- linux-2.6.14-omap2/kernel/ptrace.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/kernel/ptrace.c 2005-11-23 01:44:02.000000000 +0200 +@@ -152,7 +152,7 @@ + retval = -EPERM; + if (task->pid <= 1) + goto bad; +- if (task == current) ++ if (task->tgid == current->tgid) + goto bad; + /* the same process cannot be attached many times */ + if (task->ptrace & PT_PTRACED) +diff -Naur linux-2.6.14-omap2/kernel/signal.c linux-h6300-omap2-2.6.14.3/kernel/signal.c +--- linux-2.6.14-omap2/kernel/signal.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/kernel/signal.c 2005-12-02 01:34:35.000000000 +0200 +@@ -406,6 +406,8 @@ + + void exit_signal(struct task_struct *tsk) + { ++ atomic_dec(&tsk->signal->live); ++ + write_lock_irq(&tasklist_lock); + __exit_signal(tsk); + write_unlock_irq(&tasklist_lock); +@@ -1522,7 +1524,7 @@ + + psig = tsk->parent->sighand; + spin_lock_irqsave(&psig->siglock, flags); +- if (sig == SIGCHLD && ++ if (!tsk->ptrace && sig == SIGCHLD && + (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN || + (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) { + /* +diff -Naur linux-2.6.14-omap2/kernel/sysctl.c linux-h6300-omap2-2.6.14.3/kernel/sysctl.c +--- linux-2.6.14-omap2/kernel/sysctl.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/kernel/sysctl.c 2005-11-23 01:44:02.000000000 +0200 +@@ -169,7 +169,7 @@ + + extern struct proc_dir_entry *proc_sys_root; + +-static void register_proc_table(ctl_table *, struct proc_dir_entry *); ++static void register_proc_table(ctl_table *, struct proc_dir_entry *, void *); + static void unregister_proc_table(ctl_table *, struct proc_dir_entry *); + #endif + +@@ -992,10 +992,51 @@ + + extern void init_irq_proc (void); + ++static DEFINE_SPINLOCK(sysctl_lock); ++ ++/* called under sysctl_lock */ ++static int use_table(struct ctl_table_header *p) ++{ ++ if (unlikely(p->unregistering)) ++ return 0; ++ p->used++; ++ return 1; ++} ++ ++/* called under sysctl_lock */ ++static void unuse_table(struct ctl_table_header *p) ++{ ++ if (!--p->used) ++ if (unlikely(p->unregistering)) ++ complete(p->unregistering); ++} ++ ++/* called under sysctl_lock, will reacquire if has to wait */ ++static void start_unregistering(struct ctl_table_header *p) ++{ ++ /* ++ * if p->used is 0, nobody will ever touch that entry again; ++ * we'll eliminate all paths to it before dropping sysctl_lock ++ */ ++ if (unlikely(p->used)) { ++ struct completion wait; ++ init_completion(&wait); ++ p->unregistering = &wait; ++ spin_unlock(&sysctl_lock); ++ wait_for_completion(&wait); ++ spin_lock(&sysctl_lock); ++ } ++ /* ++ * do not remove from the list until nobody holds it; walking the ++ * list in do_sysctl() relies on that. ++ */ ++ list_del_init(&p->ctl_entry); ++} ++ + void __init sysctl_init(void) + { + #ifdef CONFIG_PROC_FS +- register_proc_table(root_table, proc_sys_root); ++ register_proc_table(root_table, proc_sys_root, &root_table_header); + init_irq_proc(); + #endif + } +@@ -1004,6 +1045,7 @@ + void __user *newval, size_t newlen) + { + struct list_head *tmp; ++ int error = -ENOTDIR; + + if (nlen <= 0 || nlen >= CTL_MAXNAME) + return -ENOTDIR; +@@ -1012,20 +1054,30 @@ + if (!oldlenp || get_user(old_len, oldlenp)) + return -EFAULT; + } ++ spin_lock(&sysctl_lock); + tmp = &root_table_header.ctl_entry; + do { + struct ctl_table_header *head = + list_entry(tmp, struct ctl_table_header, ctl_entry); + void *context = NULL; +- int error = parse_table(name, nlen, oldval, oldlenp, ++ ++ if (!use_table(head)) ++ continue; ++ ++ spin_unlock(&sysctl_lock); ++ ++ error = parse_table(name, nlen, oldval, oldlenp, + newval, newlen, head->ctl_table, + &context); + kfree(context); ++ ++ spin_lock(&sysctl_lock); ++ unuse_table(head); + if (error != -ENOTDIR) +- return error; +- tmp = tmp->next; +- } while (tmp != &root_table_header.ctl_entry); +- return -ENOTDIR; ++ break; ++ } while ((tmp = tmp->next) != &root_table_header.ctl_entry); ++ spin_unlock(&sysctl_lock); ++ return error; + } + + asmlinkage long sys_sysctl(struct __sysctl_args __user *args) +@@ -1236,12 +1288,16 @@ + return NULL; + tmp->ctl_table = table; + INIT_LIST_HEAD(&tmp->ctl_entry); ++ tmp->used = 0; ++ tmp->unregistering = NULL; ++ spin_lock(&sysctl_lock); + if (insert_at_head) + list_add(&tmp->ctl_entry, &root_table_header.ctl_entry); + else + list_add_tail(&tmp->ctl_entry, &root_table_header.ctl_entry); ++ spin_unlock(&sysctl_lock); + #ifdef CONFIG_PROC_FS +- register_proc_table(table, proc_sys_root); ++ register_proc_table(table, proc_sys_root, tmp); + #endif + return tmp; + } +@@ -1255,10 +1311,13 @@ + */ + void unregister_sysctl_table(struct ctl_table_header * header) + { +- list_del(&header->ctl_entry); ++ might_sleep(); ++ spin_lock(&sysctl_lock); ++ start_unregistering(header); + #ifdef CONFIG_PROC_FS + unregister_proc_table(header->ctl_table, proc_sys_root); + #endif ++ spin_unlock(&sysctl_lock); + kfree(header); + } + +@@ -1269,7 +1328,7 @@ + #ifdef CONFIG_PROC_FS + + /* Scan the sysctl entries in table and add them all into /proc */ +-static void register_proc_table(ctl_table * table, struct proc_dir_entry *root) ++static void register_proc_table(ctl_table * table, struct proc_dir_entry *root, void *set) + { + struct proc_dir_entry *de; + int len; +@@ -1305,13 +1364,14 @@ + de = create_proc_entry(table->procname, mode, root); + if (!de) + continue; ++ de->set = set; + de->data = (void *) table; + if (table->proc_handler) + de->proc_fops = &proc_sys_file_operations; + } + table->de = de; + if (de->mode & S_IFDIR) +- register_proc_table(table->child, de); ++ register_proc_table(table->child, de, set); + } + } + +@@ -1336,6 +1396,13 @@ + continue; + } + ++ /* ++ * In any case, mark the entry as goner; we'll keep it ++ * around if it's busy, but we'll know to do nothing with ++ * its fields. We are under sysctl_lock here. ++ */ ++ de->data = NULL; ++ + /* Don't unregister proc entries that are still being used.. */ + if (atomic_read(&de->count)) + continue; +@@ -1349,27 +1416,38 @@ + size_t count, loff_t *ppos) + { + int op; +- struct proc_dir_entry *de; ++ struct proc_dir_entry *de = PDE(file->f_dentry->d_inode); + struct ctl_table *table; + size_t res; +- ssize_t error; +- +- de = PDE(file->f_dentry->d_inode); +- if (!de || !de->data) +- return -ENOTDIR; +- table = (struct ctl_table *) de->data; +- if (!table || !table->proc_handler) +- return -ENOTDIR; +- op = (write ? 002 : 004); +- if (ctl_perm(table, op)) +- return -EPERM; ++ ssize_t error = -ENOTDIR; + +- res = count; - -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/Makefile bt_kernel/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/Makefile 2005-10-30 17:44:14.606539141 +0200 -+++ bt_kernel/Makefile 2005-10-22 03:52:45.687256000 +0300 +- error = (*table->proc_handler) (table, write, file, buf, &res, ppos); +- if (error) +- return error; +- return res; ++ spin_lock(&sysctl_lock); ++ if (de && de->data && use_table(de->set)) { ++ /* ++ * at that point we know that sysctl was not unregistered ++ * and won't be until we finish ++ */ ++ spin_unlock(&sysctl_lock); ++ table = (struct ctl_table *) de->data; ++ if (!table || !table->proc_handler) ++ goto out; ++ error = -EPERM; ++ op = (write ? 002 : 004); ++ if (ctl_perm(table, op)) ++ goto out; ++ ++ /* careful: calling conventions are nasty here */ ++ res = count; ++ error = (*table->proc_handler)(table, write, file, ++ buf, &res, ppos); ++ if (!error) ++ error = res; ++ out: ++ spin_lock(&sysctl_lock); ++ unuse_table(de->set); ++ } ++ spin_unlock(&sysctl_lock); ++ return error; + } + + static int proc_opensys(struct inode *inode, struct file *file) +diff -Naur linux-2.6.14-omap2/Makefile linux-h6300-omap2-2.6.14.3/Makefile +--- linux-2.6.14-omap2/Makefile 2005-12-02 01:53:31.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/Makefile 2005-12-02 01:34:34.000000000 +0200 +@@ -1,7 +1,7 @@ + VERSION = 2 + PATCHLEVEL = 6 + SUBLEVEL = 14 +-EXTRAVERSION = ++EXTRAVERSION = .3 + NAME=Affluent Albatross + + # *DOCUMENTATION* @@ -11,7 +11,7 @@ # expect to learn how to build the kernel reading this file. # Add custom flags here to avoid conflict with updates --EXTRAVERSION := $(EXTRAVERSION)-omap1 -+EXTRAVERSION := $(EXTRAVERSION)-omap-h6300 +-EXTRAVERSION := $(EXTRAVERSION)-omap2 ++EXTRAVERSION := $(EXTRAVERSION)-omap1-h6300 # Do not print "Entering directory ..." MAKEFLAGS += --no-print-directory -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/basic/.gitignore bt_kernel/scripts/basic/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/basic/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/scripts/basic/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,3 +0,0 @@ --fixdep --split-include --docproc -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/.gitignore bt_kernel/scripts/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/scripts/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,4 +0,0 @@ --conmakehash --kallsyms --pnmtologo -- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/kconfig/.gitignore bt_kernel/scripts/kconfig/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/kconfig/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/scripts/kconfig/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,16 +0,0 @@ --# --# Generated files --# --config* --lex.*.c --*.tab.c --*.tab.h -- --# --# configuration programs --# --conf --mconf --qconf --gconf --kxgettext -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/mod/.gitignore bt_kernel/scripts/mod/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/scripts/mod/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/scripts/mod/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,4 +0,0 @@ --elfconfig.h --mk_elfconfig --modpost -- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/Kconfig bt_kernel/sound/arm/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/Kconfig 2005-10-30 17:44:20.184651252 +0200 -+++ bt_kernel/sound/arm/Kconfig 2005-10-14 18:55:31.156317000 +0300 -@@ -15,6 +15,13 @@ - To compile this driver as a module, choose M here: the module - will be called snd-sa11xx-uda1341. +diff -Naur linux-2.6.14-omap2/net/core/datagram.c linux-h6300-omap2-2.6.14.3/net/core/datagram.c +--- linux-2.6.14-omap2/net/core/datagram.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/core/datagram.c 2005-11-23 01:44:02.000000000 +0200 +@@ -213,6 +213,10 @@ + { + int i, err, fraglen, end = 0; + struct sk_buff *next = skb_shinfo(skb)->frag_list; ++ ++ if (!len) ++ return 0; ++ + next_skb: + fraglen = skb_headlen(skb); + i = -1; +diff -Naur linux-2.6.14-omap2/net/ipv4/ipvs/ip_vs_core.c linux-h6300-omap2-2.6.14.3/net/ipv4/ipvs/ip_vs_core.c +--- linux-2.6.14-omap2/net/ipv4/ipvs/ip_vs_core.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/ipvs/ip_vs_core.c 2005-11-23 01:44:02.000000000 +0200 +@@ -1009,11 +1009,10 @@ + if (sysctl_ip_vs_expire_nodest_conn) { + /* try to expire the connection immediately */ + ip_vs_conn_expire_now(cp); +- } else { +- /* don't restart its timer, and silently +- drop the packet. */ +- __ip_vs_conn_put(cp); + } ++ /* don't restart its timer, and silently ++ drop the packet. */ ++ __ip_vs_conn_put(cp); + return NF_DROP; + } + +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_ftp.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_ftp.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_ftp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_ftp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -29,9 +29,9 @@ + static DEFINE_SPINLOCK(ip_ftp_lock); + + #define MAX_PORTS 8 +-static short ports[MAX_PORTS]; ++static unsigned short ports[MAX_PORTS]; + static int ports_c; +-module_param_array(ports, short, &ports_c, 0400); ++module_param_array(ports, ushort, &ports_c, 0400); + + static int loose; + module_param(loose, int, 0600); +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_irc.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_irc.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_irc.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_irc.c 2005-12-02 01:34:35.000000000 +0200 +@@ -34,7 +34,7 @@ + #include <linux/moduleparam.h> + + #define MAX_PORTS 8 +-static short ports[MAX_PORTS]; ++static unsigned short ports[MAX_PORTS]; + static int ports_c; + static int max_dcc_channels = 8; + static unsigned int dcc_timeout = 300; +@@ -52,7 +52,7 @@ + MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>"); + MODULE_DESCRIPTION("IRC (DCC) connection tracking helper"); + MODULE_LICENSE("GPL"); +-module_param_array(ports, short, &ports_c, 0400); ++module_param_array(ports, ushort, &ports_c, 0400); + MODULE_PARM_DESC(ports, "port numbers of IRC servers"); + module_param(max_dcc_channels, int, 0400); + MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC session"); +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_netlink.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_netlink.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_netlink.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_netlink.c 2005-12-02 01:34:35.000000000 +0200 +@@ -58,14 +58,17 @@ + const struct ip_conntrack_tuple *tuple) + { + struct ip_conntrack_protocol *proto; ++ int ret = 0; + + NFA_PUT(skb, CTA_PROTO_NUM, sizeof(u_int8_t), &tuple->dst.protonum); + + proto = ip_conntrack_proto_find_get(tuple->dst.protonum); +- if (proto && proto->tuple_to_nfattr) +- return proto->tuple_to_nfattr(skb, tuple); ++ if (likely(proto && proto->tuple_to_nfattr)) { ++ ret = proto->tuple_to_nfattr(skb, tuple); ++ ip_conntrack_proto_put(proto); ++ } + +- return 0; ++ return ret; + + nfattr_failure: + return -1; +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_proto_icmp.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_proto_icmp.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_proto_icmp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_proto_icmp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -296,7 +296,8 @@ + struct ip_conntrack_tuple *tuple) + { + if (!tb[CTA_PROTO_ICMP_TYPE-1] +- || !tb[CTA_PROTO_ICMP_CODE-1]) ++ || !tb[CTA_PROTO_ICMP_CODE-1] ++ || !tb[CTA_PROTO_ICMP_ID-1]) + return -1; + + tuple->dst.u.icmp.type = +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_proto_tcp.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_proto_tcp.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_proto_tcp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_proto_tcp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -362,6 +362,11 @@ + struct nfattr *attr = cda[CTA_PROTOINFO_TCP-1]; + struct nfattr *tb[CTA_PROTOINFO_TCP_MAX]; + ++ /* updates could not contain anything about the private ++ * protocol info, in that case skip the parsing */ ++ if (!attr) ++ return 0; ++ + if (nfattr_parse_nested(tb, CTA_PROTOINFO_TCP_MAX, attr) < 0) + goto nfattr_failure; + +@@ -813,6 +818,7 @@ + { + [TH_SYN] = 1, + [TH_SYN|TH_ACK] = 1, ++ [TH_SYN|TH_PUSH] = 1, + [TH_SYN|TH_ACK|TH_PUSH] = 1, + [TH_RST] = 1, + [TH_RST|TH_ACK] = 1, +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_tftp.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_tftp.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_conntrack_tftp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_conntrack_tftp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -26,9 +26,9 @@ + MODULE_LICENSE("GPL"); + + #define MAX_PORTS 8 +-static short ports[MAX_PORTS]; ++static unsigned short ports[MAX_PORTS]; + static int ports_c; +-module_param_array(ports, short, &ports_c, 0400); ++module_param_array(ports, ushort, &ports_c, 0400); + MODULE_PARM_DESC(ports, "port numbers of tftp servers"); + + #if 0 +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_core.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_core.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_core.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_core.c 2005-12-02 01:34:35.000000000 +0200 +@@ -66,10 +66,8 @@ + * removed until we've grabbed the reference */ + preempt_disable(); + p = __ip_nat_proto_find(protonum); +- if (p) { +- if (!try_module_get(p->me)) +- p = &ip_nat_unknown_protocol; +- } ++ if (!try_module_get(p->me)) ++ p = &ip_nat_unknown_protocol; + preempt_enable(); + + return p; +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_helper_pptp.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_helper_pptp.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_helper_pptp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_helper_pptp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -73,6 +73,7 @@ + struct ip_conntrack_tuple t; + struct ip_ct_pptp_master *ct_pptp_info; + struct ip_nat_pptp *nat_pptp_info; ++ struct ip_nat_range range; + + ct_pptp_info = &master->help.ct_pptp_info; + nat_pptp_info = &master->nat.help.nat_pptp_info; +@@ -110,7 +111,30 @@ + DEBUGP("not found!\n"); + } + +- ip_nat_follow_master(ct, exp); ++ /* This must be a fresh one. */ ++ BUG_ON(ct->status & IPS_NAT_DONE_MASK); ++ ++ /* Change src to where master sends to */ ++ range.flags = IP_NAT_RANGE_MAP_IPS; ++ range.min_ip = range.max_ip ++ = ct->master->tuplehash[!exp->dir].tuple.dst.ip; ++ if (exp->dir == IP_CT_DIR_ORIGINAL) { ++ range.flags |= IP_NAT_RANGE_PROTO_SPECIFIED; ++ range.min = range.max = exp->saved_proto; ++ } ++ /* hook doesn't matter, but it has to do source manip */ ++ ip_nat_setup_info(ct, &range, NF_IP_POST_ROUTING); ++ ++ /* For DST manip, map port here to where it's expected. */ ++ range.flags = IP_NAT_RANGE_MAP_IPS; ++ range.min_ip = range.max_ip ++ = ct->master->tuplehash[!exp->dir].tuple.src.ip; ++ if (exp->dir == IP_CT_DIR_REPLY) { ++ range.flags |= IP_NAT_RANGE_PROTO_SPECIFIED; ++ range.min = range.max = exp->saved_proto; ++ } ++ /* hook doesn't matter, but it has to do destination manip */ ++ ip_nat_setup_info(ct, &range, NF_IP_PRE_ROUTING); + } + + /* outbound packets == from PNS to PAC */ +@@ -213,7 +237,7 @@ + + /* alter expectation for PNS->PAC direction */ + invert_tuplepr(&inv_t, &expect_orig->tuple); +- expect_orig->saved_proto.gre.key = htons(nat_pptp_info->pac_call_id); ++ expect_orig->saved_proto.gre.key = htons(ct_pptp_info->pns_call_id); + expect_orig->tuple.src.u.gre.key = htons(nat_pptp_info->pns_call_id); + expect_orig->tuple.dst.u.gre.key = htons(ct_pptp_info->pac_call_id); + inv_t.src.ip = reply_t->src.ip; +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_proto_gre.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_proto_gre.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_proto_gre.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_proto_gre.c 2005-12-02 01:34:35.000000000 +0200 +@@ -139,8 +139,8 @@ + break; + case GRE_VERSION_PPTP: + DEBUGP("call_id -> 0x%04x\n", +- ntohl(tuple->dst.u.gre.key)); +- pgreh->call_id = htons(ntohl(tuple->dst.u.gre.key)); ++ ntohs(tuple->dst.u.gre.key)); ++ pgreh->call_id = tuple->dst.u.gre.key; + break; + default: + DEBUGP("can't nat unknown GRE version\n"); +diff -Naur linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_proto_unknown.c linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_proto_unknown.c +--- linux-2.6.14-omap2/net/ipv4/netfilter/ip_nat_proto_unknown.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/netfilter/ip_nat_proto_unknown.c 2005-12-02 01:34:35.000000000 +0200 +@@ -62,7 +62,7 @@ + + struct ip_nat_protocol ip_nat_unknown_protocol = { + .name = "unknown", +- .me = THIS_MODULE, ++ /* .me isn't set: getting a ref to this cannot fail. */ + .manip_pkt = unknown_manip_pkt, + .in_range = unknown_in_range, + .unique_tuple = unknown_unique_tuple, +diff -Naur linux-2.6.14-omap2/net/ipv4/tcp_bic.c linux-h6300-omap2-2.6.14.3/net/ipv4/tcp_bic.c +--- linux-2.6.14-omap2/net/ipv4/tcp_bic.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv4/tcp_bic.c 2005-11-23 01:44:02.000000000 +0200 +@@ -27,7 +27,7 @@ + */ + + static int fast_convergence = 1; +-static int max_increment = 32; ++static int max_increment = 16; + static int low_window = 14; + static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */ + static int low_utilization_threshold = 153; +diff -Naur linux-2.6.14-omap2/net/ipv6/datagram.c linux-h6300-omap2-2.6.14.3/net/ipv6/datagram.c +--- linux-2.6.14-omap2/net/ipv6/datagram.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv6/datagram.c 2005-12-02 01:34:35.000000000 +0200 +@@ -437,7 +437,7 @@ + break; + case IPPROTO_AH: + nexthdr = ptr[0]; +- len = (ptr[1] + 1) << 2; ++ len = (ptr[1] + 2) << 2; + break; + default: + nexthdr = ptr[0]; +diff -Naur linux-2.6.14-omap2/net/ipv6/exthdrs.c linux-h6300-omap2-2.6.14.3/net/ipv6/exthdrs.c +--- linux-2.6.14-omap2/net/ipv6/exthdrs.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv6/exthdrs.c 2005-12-02 01:34:35.000000000 +0200 +@@ -628,6 +628,7 @@ + if (!tot_len) + return NULL; + ++ tot_len += sizeof(*opt2); + opt2 = sock_kmalloc(sk, tot_len, GFP_ATOMIC); + if (!opt2) + return ERR_PTR(-ENOBUFS); +@@ -668,7 +669,26 @@ + + return opt2; + out: +- sock_kfree_s(sk, p, tot_len); ++ sock_kfree_s(sk, opt2, opt2->tot_len); + return ERR_PTR(err); + } + ++struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space, ++ struct ipv6_txoptions *opt) ++{ ++ /* ++ * ignore the dest before srcrt unless srcrt is being included. ++ * --yoshfuji ++ */ ++ if (opt && opt->dst0opt && !opt->srcrt) { ++ if (opt_space != opt) { ++ memcpy(opt_space, opt, sizeof(*opt_space)); ++ opt = opt_space; ++ } ++ opt->opt_nflen -= ipv6_optlen(opt->dst0opt); ++ opt->dst0opt = NULL; ++ } ++ ++ return opt; ++} ++ +diff -Naur linux-2.6.14-omap2/net/ipv6/ip6_flowlabel.c linux-h6300-omap2-2.6.14.3/net/ipv6/ip6_flowlabel.c +--- linux-2.6.14-omap2/net/ipv6/ip6_flowlabel.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv6/ip6_flowlabel.c 2005-12-02 01:34:35.000000000 +0200 +@@ -225,20 +225,16 @@ + struct ip6_flowlabel * fl, + struct ipv6_txoptions * fopt) + { +- struct ipv6_txoptions * fl_opt = fl ? fl->opt : NULL; ++ struct ipv6_txoptions * fl_opt = fl->opt; + +- if (fopt == NULL || fopt->opt_flen == 0) { +- if (!fl_opt || !fl_opt->dst0opt || fl_opt->srcrt) +- return fl_opt; +- } ++ if (fopt == NULL || fopt->opt_flen == 0) ++ return fl_opt; + + if (fl_opt != NULL) { + opt_space->hopopt = fl_opt->hopopt; +- opt_space->dst0opt = fl_opt->srcrt ? fl_opt->dst0opt : NULL; ++ opt_space->dst0opt = fl_opt->dst0opt; + opt_space->srcrt = fl_opt->srcrt; + opt_space->opt_nflen = fl_opt->opt_nflen; +- if (fl_opt->dst0opt && !fl_opt->srcrt) +- opt_space->opt_nflen -= ipv6_optlen(fl_opt->dst0opt); + } else { + if (fopt->opt_nflen == 0) + return fopt; +diff -Naur linux-2.6.14-omap2/net/ipv6/raw.c linux-h6300-omap2-2.6.14.3/net/ipv6/raw.c +--- linux-2.6.14-omap2/net/ipv6/raw.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv6/raw.c 2005-12-02 01:34:35.000000000 +0200 +@@ -756,7 +756,9 @@ + } + if (opt == NULL) + opt = np->opt; +- opt = fl6_merge_options(&opt_space, flowlabel, opt); ++ if (flowlabel) ++ opt = fl6_merge_options(&opt_space, flowlabel, opt); ++ opt = ipv6_fixup_options(&opt_space, opt); + + fl.proto = proto; + rawv6_probe_proto_opt(&fl, msg); +diff -Naur linux-2.6.14-omap2/net/ipv6/udp.c linux-h6300-omap2-2.6.14.3/net/ipv6/udp.c +--- linux-2.6.14-omap2/net/ipv6/udp.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/ipv6/udp.c 2005-12-02 01:34:35.000000000 +0200 +@@ -778,7 +778,9 @@ + } + if (opt == NULL) + opt = np->opt; +- opt = fl6_merge_options(&opt_space, flowlabel, opt); ++ if (flowlabel) ++ opt = fl6_merge_options(&opt_space, flowlabel, opt); ++ opt = ipv6_fixup_options(&opt_space, opt); + + fl->proto = IPPROTO_UDP; + ipv6_addr_copy(&fl->fl6_dst, daddr); +diff -Naur linux-2.6.14-omap2/net/netfilter/nf_queue.c linux-h6300-omap2-2.6.14.3/net/netfilter/nf_queue.c +--- linux-2.6.14-omap2/net/netfilter/nf_queue.c 2005-10-28 03:02:08.000000000 +0300 ++++ linux-h6300-omap2-2.6.14.3/net/netfilter/nf_queue.c 2005-12-02 01:34:35.000000000 +0200 +@@ -117,7 +117,7 @@ + + /* QUEUE == DROP if noone is waiting, to be safe. */ + read_lock(&queue_handler_lock); +- if (!queue_handler[pf]->outfn) { ++ if (!queue_handler[pf] || !queue_handler[pf]->outfn) { + read_unlock(&queue_handler_lock); + kfree_skb(*skb); + return 1; +diff -Naur linux-2.6.14-omap2/sound/arm/Kconfig linux-h6300-omap2-2.6.14.3/sound/arm/Kconfig +--- linux-2.6.14-omap2/sound/arm/Kconfig 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/Kconfig 2005-11-13 02:15:10.000000000 +0200 +@@ -45,5 +45,15 @@ + To compile this driver as a module, choose M here: the module + will be called snd-omap-aic23. ++ +config SND_OMAP_TSC2101 + tristate "OMAP TSC2101 driver (iPaq H63xx)" -+ depends ARCH_OMAP1 ++ depends ARCH_OMAP && SND + select SND_PCM + help + ALSA driver for TI TSC2101. + - config SND_ARMAACI - tristate "ARM PrimeCell PL041 AC Link support" - depends on SND && ARM_AMBA -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/Makefile bt_kernel/sound/arm/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/Makefile 2005-10-30 17:44:20.234643295 +0200 -+++ bt_kernel/sound/arm/Makefile 2005-10-14 18:55:31.156317000 +0300 ++ To compile this driver as a module, choose M here: the module ++ will be called snd-omap-tsc2101. + + endmenu +diff -Naur linux-2.6.14-omap2/sound/arm/Makefile linux-h6300-omap2-2.6.14.3/sound/arm/Makefile +--- linux-2.6.14-omap2/sound/arm/Makefile 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/Makefile 2005-11-13 02:15:10.000000000 +0200 @@ -16,3 +16,6 @@ obj-$(CONFIG_SND_OMAP_AIC23) += snd-omap-aic23.o snd-omap-aic23-objs := omap-aic23.o omap-alsa-dma.o omap-alsa-mixer.o + -+obj-$(CONFIG_SND) += \ -+ omap/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/Makefile bt_kernel/sound/arm/omap/Makefile ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/Makefile 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/sound/arm/omap/Makefile 2005-08-12 13:46:22.016114000 +0300 -@@ -0,0 +1,8 @@ -+# -+# Makefile for ALSA -+# ++obj-$(CONFIG_SND_OMAP_TSC2101) += snd-omap-tsc2101.o ++snd-omap-tsc2101-objs := omap-tsc2101.o omap-alsa-dma.o +diff -Naur linux-2.6.14-omap2/sound/arm/omap-aic23.c linux-h6300-omap2-2.6.14.3/sound/arm/omap-aic23.c +--- linux-2.6.14-omap2/sound/arm/omap-aic23.c 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-aic23.c 2005-11-13 02:15:10.000000000 +0200 +@@ -262,144 +262,6 @@ + } + + /* +- * DMA functions +- * Depends on omap-aic23-dma.c functions and (omap) dma.c +- * +- */ +-#define DMA_BUF_SIZE 1024 * 8 +- +-static int audio_dma_request(struct audio_stream *s, +- void (*callback) (void *)) +-{ +- int err; +- +- err = omap_request_sound_dma(s->dma_dev, s->id, s, &s->lch); +- if (err < 0) +- printk(KERN_ERR "unable to grab audio dma 0x%x\n", +- s->dma_dev); +- return err; +-} +- +-static int audio_dma_free(struct audio_stream *s) +-{ +- int err = 0; +- +- err = omap_free_sound_dma(s, &s->lch); +- if (err < 0) +- printk(KERN_ERR "Unable to free audio dma channels!\n"); +- return err; +-} +- +-/* +- * This function should calculate the current position of the dma in the +- * buffer. It will help alsa middle layer to continue update the buffer. +- * Its correctness is crucial for good functioning. +- */ +-static u_int audio_get_dma_pos(struct audio_stream *s) +-{ +- snd_pcm_substream_t *substream = s->stream; +- snd_pcm_runtime_t *runtime = substream->runtime; +- unsigned int offset; +- unsigned long flags; +- dma_addr_t count; +- ADEBUG(); +- +- /* this must be called w/ interrupts locked as requested in dma.c */ +- spin_lock_irqsave(&s->dma_lock, flags); +- +- /* For the current period let's see where we are */ +- count = omap_get_dma_src_addr_counter(s->lch[s->dma_q_head]); +- +- spin_unlock_irqrestore(&s->dma_lock, flags); +- +- /* Now, the position related to the end of that period */ +- offset = bytes_to_frames(runtime, s->offset) - bytes_to_frames(runtime, count); +- +- if (offset >= runtime->buffer_size || offset < 0) +- offset = 0; +- +- return offset; +-} +- +-/* +- * this stops the dma and clears the dma ptrs +- */ +-static void audio_stop_dma(struct audio_stream *s) +-{ +- unsigned long flags; +- ADEBUG(); +- +- spin_lock_irqsave(&s->dma_lock, flags); +- s->active = 0; +- s->period = 0; +- s->periods = 0; +- +- /* this stops the dma channel and clears the buffer ptrs */ +- omap_audio_stop_dma(s); +- +- omap_clear_sound_dma(s); +- +- spin_unlock_irqrestore(&s->dma_lock, flags); +-} +- +-/* +- * Main dma routine, requests dma according where you are in main alsa buffer +- */ +-static void audio_process_dma(struct audio_stream *s) +-{ +- snd_pcm_substream_t *substream = s->stream; +- snd_pcm_runtime_t *runtime; +- unsigned int dma_size; +- unsigned int offset; +- int ret; +- +- runtime = substream->runtime; +- if (s->active) { +- dma_size = frames_to_bytes(runtime, runtime->period_size); +- offset = dma_size * s->period; +- snd_assert(dma_size <= DMA_BUF_SIZE,); +- ret = +- omap_start_sound_dma(s, +- (dma_addr_t) runtime->dma_area + +- offset, dma_size); +- if (ret) { +- printk(KERN_ERR +- "audio_process_dma: cannot queue DMA buffer (%i)\n", +- ret); +- return; +- } +- +- s->period++; +- s->period %= runtime->periods; +- s->periods++; +- s->offset = offset; +- } +-} +- +-/* +- * This is called when dma IRQ occurs at the end of each transmited block +- */ +-void audio_dma_callback(void *data) +-{ +- struct audio_stream *s = data; +- +- /* +- * If we are getting a callback for an active stream then we inform +- * the PCM middle layer we've finished a period +- */ +- if (s->active) +- snd_pcm_period_elapsed(s->stream); +- +- spin_lock(&s->dma_lock); +- if (s->periods > 0) { +- s->periods--; +- } +- audio_process_dma(s); +- spin_unlock(&s->dma_lock); +-} +- +- +-/* + * Alsa section + * PCM settings and callbacks + */ +diff -Naur linux-2.6.14-omap2/sound/arm/omap-aic23.h linux-h6300-omap2-2.6.14.3/sound/arm/omap-aic23.h +--- linux-2.6.14-omap2/sound/arm/omap-aic23.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-aic23.h 2005-11-13 02:15:10.000000000 +0200 +@@ -43,6 +43,7 @@ + #include <asm/arch/dma.h> + #include <sound/core.h> + #include <sound/pcm.h> ++#include "omap-alsa-dma.h" + + #define DEFAULT_OUTPUT_VOLUME 0x60 + #define DEFAULT_INPUT_VOLUME 0x00 /* 0 ==> mute line in */ +@@ -67,27 +68,6 @@ + #define DEFAULT_ANALOG_AUDIO_CONTROL DAC_SELECTED | STE_ENABLED | BYPASS_ON | INSEL_MIC | MICB_20DB + + /* +- * Buffer management for alsa and dma +- */ +-struct audio_stream { +- char *id; /* identification string */ +- int stream_id; /* numeric identification */ +- int dma_dev; /* dma number of that device */ +- int *lch; /* Chain of channels this stream is linked to */ +- char started; /* to store if the chain was started or not */ +- int dma_q_head; /* DMA Channel Q Head */ +- int dma_q_tail; /* DMA Channel Q Tail */ +- char dma_q_count; /* DMA Channel Q Count */ +- int active:1; /* we are using this stream for transfer now */ +- int period; /* current transfer period */ +- int periods; /* current count of periods registerd in the DMA engine */ +- spinlock_t dma_lock; /* for locking in DMA operations */ +- snd_pcm_substream_t *stream; /* the pcm stream */ +- unsigned linked:1; /* dma channels linked */ +- int offset; /* store start position of the last period in the alsa buffer */ +-}; +- +-/* + * Alsa card structure for aic23 + */ + struct snd_card_omap_aic23 { +@@ -99,7 +79,6 @@ + + /*********** Function Prototypes *************************/ + +-void audio_dma_callback(void *); + int snd_omap_mixer(struct snd_card_omap_aic23 *); + void snd_omap_init_mixer(void); + /* Clock functions */ +diff -Naur linux-2.6.14-omap2/sound/arm/omap-alsa-dma.c linux-h6300-omap2-2.6.14.3/sound/arm/omap-alsa-dma.c +--- linux-2.6.14-omap2/sound/arm/omap-alsa-dma.c 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-alsa-dma.c 2005-11-13 02:15:10.000000000 +0200 +@@ -440,6 +440,134 @@ + return; + } + ++int audio_dma_request(struct audio_stream *s, ++ void (*callback) (void *)) ++{ ++ int err; + -+snd-omap-tsc2101-objs := tsc2101_main.o tsc2101_mix.o tsc2101_pcm.o ++ err = omap_request_sound_dma(s->dma_dev, s->id, s, &s->lch); ++ if (err < 0) ++ printk(KERN_ERR "unable to grab audio dma 0x%x\n", ++ s->dma_dev); ++ return err; ++} + -+# Toplevel Module Dependency -+obj-$(CONFIG_SND_OMAP_TSC2101) += snd-omap-tsc2101.o -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/omap-tsc2101.h bt_kernel/sound/arm/omap/omap-tsc2101.h ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/omap-tsc2101.h 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/sound/arm/omap/omap-tsc2101.h 2005-08-20 00:24:45.622662000 +0300 -@@ -0,0 +1,81 @@ -+/* -+ * OMAP tsc2101 soundcard -+ * Copyright (c) by Everett Coleman II <gcc80x86@fuzzyneural.net> -+ * -+ * 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 __SOUND_OMAP_TSC2101_H -+# define __SOUND_OMAP_TSC2101_H 1 -+ -+# include <sound/driver.h> -+# include <linux/init.h> -+# include <sound/core.h> -+# include <sound/initval.h> -+# include <sound/control.h> -+# include <sound/pcm.h> -+# include <asm/arch/dma.h> -+# include <asm/hardware/tsc2101.h> -+# include <../drivers/ssi/omap-tsc2101.h> -+ -+# define TSC2101_AUDIO_CODEC_REGISTERS 2 -+# define OUTPUT_VOLUME_MIN 0 -+# define OUTPUT_VOLUME_MAX 127 -+# define AUDIO_RATE_DEFAULT 44100 -+# define AUDIO_BPS_DEFAULT 16 -+ -+# define AUDIO_DMA_BUF_SIZE (8 * 1024) -+ -+# define AUDIO_DMA_RX OMAP_DMA_MCBSP1_RX -+# define AUDIO_DMA_TX OMAP_DMA_MCBSP1_TX -+# define AUDIO_MCBSP OMAP_MCBSP1 -+ -+# define DEBUG 1 -+# ifdef DEBUG -+# define dprintk(x, y...) printk (x, ##y); -+# else -+# define dprintk(x, y...) {} -+# endif /* DEBUG */ -+ -+//# define DUMP_TSC2101_REGISTERS -+ -+typedef struct audio_stream { -+ char *id; -+ int sid; -+ int dev; -+ int channel; -+ spinlock_t lock; -+ unsigned int offset, period, position; -+ u8 active; -+ snd_pcm_substream_t *stream; -+} audio_stream_t; -+ -+typedef struct snd_card_tsc2101 { -+ snd_card_t *card; -+ snd_pcm_t *pcm; ++int audio_dma_free(struct audio_stream *s) ++{ ++ int err = 0; ++ ++ err = omap_free_sound_dma(s, &s->lch); ++ if (err < 0) ++ printk(KERN_ERR "Unable to free audio dma channels!\n"); ++ return err; ++} + -+ long samplerate; -+ audio_stream_t s[2]; -+} snd_card_tsc2101_t; -+ -+# ifdef DUMP_TSC2101_REGISTERS -+void dump_tsc2101_reg (void); -+# endif /* DUMP_TSC2101_REGISTERS */ -+ -+int snd_tsc2101_setup_mix (snd_card_tsc2101_t *); -+int snd_tsc2101_setup_pcm (snd_card_tsc2101_t *); -+void snd_tsc2101_disable_pcm (snd_card_tsc2101_t *); -+ -+#endif /* __SOUND_OMAP_TSC2101_H */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_main.c bt_kernel/sound/arm/omap/tsc2101_main.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_main.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/sound/arm/omap/tsc2101_main.c 2005-08-12 13:46:22.016114000 +0300 -@@ -0,0 +1,109 @@ +/* -+ * OMAP tsc2101 soundcard -+ * Copyright (c) by Everett Coleman II <gcc80x86@fuzzyneural.net> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * ++ * This function should calculate the current position of the dma in the ++ * buffer. It will help alsa middle layer to continue update the buffer. ++ * Its correctness is crucial for good functioning. + */ ++u_int audio_get_dma_pos(struct audio_stream *s) ++{ ++ snd_pcm_substream_t *substream = s->stream; ++ snd_pcm_runtime_t *runtime = substream->runtime; ++ unsigned int offset; ++ unsigned long flags; ++ dma_addr_t count; + -+#include <asm/hardware.h> -+#include <asm/mach-types.h> -+#include "omap-tsc2101.h" ++ /* this must be called w/ interrupts locked as requested in dma.c */ ++ spin_lock_irqsave(&s->dma_lock, flags); + -+#ifdef DUMP_TSC2101_REGISTERS -+void -+dump_tsc2101_reg (void) { -+ int i=0; -+ printk ("TSC2101 Register DUMP:\n"); -+ for (i=0; i <= 0x27; i++) { -+ printk ("0x%02x: %04x ", i, omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, i)); -+ if ((i % 4) == 3) -+ printk ("\n"); -+ } printk ("\n"); -+} /* dump_tsc2101_reg */ -+#endif /* DUMP_TSC2101_REGISTERS */ -+ -+/* Globals -+ **********/ -+static struct snd_card_tsc2101 *tsc2101=NULL; -+static char *id=NULL; -+ -+/* Module init/exit Functions -+ ****************************/ -+static void -+snd_tsc2101_free (snd_card_t *card) { -+ snd_card_tsc2101_t *chip=card->private_data; ++ /* For the current period let's see where we are */ ++ count = omap_get_dma_src_addr_counter(s->lch[s->dma_q_head]); + -+ tsc2101=0; -+ card->private_data=0; -+ kfree (chip); -+} /* snd_tsc2101_free */ ++ spin_unlock_irqrestore(&s->dma_lock, flags); + -+static int __init -+alsa_card_tsc2101_init (void) { -+ int err=0; -+ snd_card_t *card; ++ /* Now, the position related to the end of that period */ ++ offset = bytes_to_frames(runtime, s->offset) - bytes_to_frames(runtime, count); + -+ if (!machine_is_h6300 ()) -+ return -ENODEV; ++ if (offset >= runtime->buffer_size || offset < 0) ++ offset = 0; + -+ if ((card=snd_card_new (-1, id, THIS_MODULE, sizeof (snd_card_tsc2101_t))) == 0) -+ return -ENOMEM; -+ if ((tsc2101=kcalloc (1, sizeof (*tsc2101), GFP_KERNEL)) == 0) -+ return -ENOMEM; ++ return offset; ++} + -+ card->private_data=(void *)tsc2101; -+ card->private_free=snd_tsc2101_free; ++/* ++ * this stops the dma and clears the dma ptrs ++ */ ++void audio_stop_dma(struct audio_stream *s) ++{ ++ unsigned long flags; + -+ tsc2101->card=card; -+ tsc2101->samplerate=AUDIO_RATE_DEFAULT; ++ spin_lock_irqsave(&s->dma_lock, flags); ++ s->active = 0; ++ s->period = 0; ++ s->periods = 0; + -+ if ((err=snd_tsc2101_setup_pcm (tsc2101)) < 0) -+ goto nodev; -+ if ((err=snd_tsc2101_setup_mix (tsc2101)) < 0) -+ goto nodev; ++ /* this stops the dma channel and clears the buffer ptrs */ ++ omap_audio_stop_dma(s); + -+ // TODO: PM ++ omap_clear_sound_dma(s); + -+ strncpy (card->driver, "TSC2101", sizeof (card->driver)); -+ strncpy (card->shortname, "OMAP TSC2101", sizeof (card->shortname)); -+ strncpy (card->longname, "TI OMAP TSC2101 Audio Codec", sizeof (card->longname)); ++ spin_unlock_irqrestore(&s->dma_lock, flags); ++} + -+ if ((err=snd_card_register (card)) == 0) { -+ printk (KERN_INFO "TSC2101 audio support initialized\n"); -+ return 0; ++/* ++ * Main dma routine, requests dma according where you are in main alsa buffer ++ */ ++void audio_process_dma(struct audio_stream *s) ++{ ++ snd_pcm_substream_t *substream = s->stream; ++ snd_pcm_runtime_t *runtime; ++ unsigned int dma_size; ++ unsigned int offset; ++ int ret; ++ ++ runtime = substream->runtime; ++ if (s->active) { ++ dma_size = frames_to_bytes(runtime, runtime->period_size); ++ offset = dma_size * s->period; ++ snd_assert(dma_size <= DMA_BUF_SIZE,); ++ ret = ++ omap_start_sound_dma(s, ++ (dma_addr_t) runtime->dma_area + ++ offset, dma_size); ++ if (ret) { ++ printk(KERN_ERR ++ "audio_process_dma: cannot queue DMA buffer (%i)\n", ++ ret); ++ return; ++ } ++ ++ s->period++; ++ s->period %= runtime->periods; ++ s->periods++; ++ s->offset = offset; + } ++} + -+nodev: -+ snd_tsc2101_disable_pcm (tsc2101); -+ snd_card_free (card); -+ return err; -+} /* alsa_card_tsc2101_init */ ++/* ++ * This is called when dma IRQ occurs at the end of each transmited block ++ */ ++void audio_dma_callback(void *data) ++{ ++ struct audio_stream *s = data; + -+static void __exit -+alsa_card_tsc2101_exit (void) { -+ snd_tsc2101_disable_pcm (tsc2101); -+ snd_card_free(tsc2101->card); -+} /* alsa_card_tsc2101_exit */ ++ /* ++ * If we are getting a callback for an active stream then we inform ++ * the PCM middle layer we've finished a period ++ */ ++ if (s->active) ++ snd_pcm_period_elapsed(s->stream); + -+module_init(alsa_card_tsc2101_init) -+module_exit(alsa_card_tsc2101_exit) ++ spin_lock(&s->dma_lock); ++ if (s->periods > 0) { ++ s->periods--; ++ } ++ audio_process_dma(s); ++ spin_unlock(&s->dma_lock); ++} + -+MODULE_AUTHOR("Everett Coleman II <gcc80x86@fuzzyneural.net>"); -+MODULE_DESCRIPTION("TI TSC2101 Audio Driver"); -+MODULE_LICENSE("GPL"); + MODULE_AUTHOR("Texas Instruments"); + MODULE_DESCRIPTION + ("Common DMA handling for Audio driver on OMAP processors"); +diff -Naur linux-2.6.14-omap2/sound/arm/omap-alsa-dma.h linux-h6300-omap2-2.6.14.3/sound/arm/omap-alsa-dma.h +--- linux-2.6.14-omap2/sound/arm/omap-alsa-dma.h 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-alsa-dma.h 2005-11-13 02:15:10.000000000 +0200 +@@ -30,7 +30,13 @@ + + /************************** INCLUDES *************************************/ + +-#include "omap-aic23.h" ++/* h6300 tsc2101 changes start */ ++//#include "omap-aic23.h" ++#include <sound/driver.h> ++#include <asm/arch/dma.h> ++#include <sound/core.h> ++#include <sound/pcm.h> ++/* h6300 tsc2101 changes end */ + + /************************** GLOBAL MACROS *************************************/ + +@@ -39,8 +45,33 @@ + #define DMA_FREE(s) omap_free_sound_dma(s, &s->lch) + #define DMA_CLEAR(s) omap_clear_sound_dma(s) + ++/* h6300 tsc2101 changes start */ ++#define DMA_BUF_SIZE 1024 * 8 + -+module_param(id, charp, 0444); -+MODULE_PARM_DESC(id, "ID string for OMAP TSC2101 soundcard."); -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_mix.c bt_kernel/sound/arm/omap/tsc2101_mix.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_mix.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/sound/arm/omap/tsc2101_mix.c 2005-08-12 13:46:22.016114000 +0300 -@@ -0,0 +1,211 @@ + /************************** GLOBAL DATA STRUCTURES *********************************/ + +/* -+ * OMAP tsc2101 soundcard -+ * Copyright (c) by Everett Coleman II <gcc80x86@fuzzyneural.net> -+ * -+ * 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 -+ * ++ * Buffer management for alsa and dma + */ ++struct audio_stream { ++ char *id; /* identification string */ ++ int stream_id; /* numeric identification */ ++ int dma_dev; /* dma number of that device */ ++ int *lch; /* Chain of channels this stream is linked to */ ++ char started; /* to store if the chain was started or not */ ++ int dma_q_head; /* DMA Channel Q Head */ ++ int dma_q_tail; /* DMA Channel Q Tail */ ++ char dma_q_count; /* DMA Channel Q Count */ ++ int active:1; /* we are using this stream for transfer now */ ++ int period; /* current transfer period */ ++ int periods; /* current count of periods registerd in the DMA engine */ ++ spinlock_t dma_lock; /* for locking in DMA operations */ ++ snd_pcm_substream_t *stream; /* the pcm stream */ ++ unsigned linked:1; /* dma channels linked */ ++ int offset; /* store start position of the last period in the alsa buffer */ ++}; ++/* h6300 tsc2101 changes end */ + -+#include "omap-tsc2101.h" + typedef void (*dma_callback_t) (int lch, u16 ch_status, void *data); + + /**************** ARCH SPECIFIC FUNCIONS *******************************************/ +@@ -54,6 +85,14 @@ + int omap_start_sound_dma(struct audio_stream *s, dma_addr_t dma_ptr, + u_int dma_size); + ++/* h6300 tsc2101 changes start */ + void omap_audio_stop_dma(struct audio_stream *s); ++void audio_dma_callback(void *); ++void audio_process_dma(struct audio_stream *s); ++u_int audio_get_dma_pos(struct audio_stream *s); ++int audio_dma_request(struct audio_stream *s, void (*callback) (void *)); ++int audio_dma_free(struct audio_stream *s); ++void audio_stop_dma(struct audio_stream *s); ++/* h6300 tsc2101 changes end */ + + #endif +diff -Naur linux-2.6.14-omap2/sound/arm/omap-tsc2101.c linux-h6300-omap2-2.6.14.3/sound/arm/omap-tsc2101.c +--- linux-2.6.14-omap2/sound/arm/omap-tsc2101.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-tsc2101.c 2005-11-13 02:15:10.000000000 +0200 +@@ -0,0 +1,665 @@ ++#include <linux/config.h> ++#include <sound/driver.h> ++#include <linux/module.h> ++#include <linux/device.h> ++#include <linux/moduleparam.h> ++#include <linux/init.h> ++#include <linux/errno.h> ++#include <linux/ioctl.h> ++#include <linux/delay.h> ++#include <linux/slab.h> + -+static int -+__pcm_playback_volume_info (snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) { -+ uinfo->type =SNDRV_CTL_ELEM_TYPE_INTEGER; -+ uinfo->count=2; -+ uinfo->value.integer.min=OUTPUT_VOLUME_MIN; -+ uinfo->value.integer.max=OUTPUT_VOLUME_MAX; -+ return 0; -+} /* __pcm_playback_volume_info */ ++#ifdef CONFIG_PM ++#include <linux/pm.h> ++#endif + -+# define dgc_dalvl_extract(x) ((x & 0x7f00) >> 8) -+# define dgc_darvl_extract(x) ((x & 0x007f)) -+static int -+__pcm_playback_volume_get (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL); -+ ucontrol->value.integer.value[0]=dgc_dalvl_extract(val); // L -+ ucontrol->value.integer.value[1]=dgc_darvl_extract(val); // R -+ return 0; -+} /* __pcm_playback_volume_get */ ++#include <asm/hardware.h> ++#include <asm/mach-types.h> ++#include <asm/arch/dma.h> ++#include <asm/hardware/tsc2101.h> ++#include <../drivers/ssi/omap-tsc2101.h> ++#include <asm/arch/mcbsp.h> + -+static int -+__pcm_playback_volume_put (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL); -+ int count=0; -+ if (dgc_dalvl_extract(val) != ucontrol->value.integer.value[0]) { -+ val=(val & ~DGC_DALVL(OUTPUT_VOLUME_MAX)) | -+ DGC_DALVL(ucontrol->value.integer.value[0]); -+ count++; -+ } /* L */ ++#include <sound/core.h> ++#include <sound/pcm.h> ++#include <sound/initval.h> ++#include <sound/memalloc.h> + -+ if (dgc_darvl_extract(val) != ucontrol->value.integer.value[1]) { -+ val=(val & ~DGC_DARVL(OUTPUT_VOLUME_MAX)) | -+ DGC_DARVL((u16)ucontrol->value.integer.value[1]); -+ count++; -+ } /* R */ ++#include "omap-alsa-dma.h" ++#include "omap-tsc2101.h" + -+ if (count) -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL, val); ++//#undef DEBUG ++#define DEBUG + -+ return count; -+} /* __pcm_playback_volume_put */ ++#ifdef DEBUG ++#define ADEBUG() printk("XXX Alsa debug f:%s, l:%d\n", __FUNCTION__, __LINE__) ++#else ++#define ADEBUG() /* nop */ ++#endif + -+static int -+__pcm_playback_switch_info (snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) { -+ uinfo->type =SNDRV_CTL_ELEM_TYPE_BOOLEAN; -+ uinfo->count=2; -+ uinfo->value.integer.min=0; -+ uinfo->value.integer.max=1; -+ return 0; -+} /* __pcm_playback_switch_info */ ++#define TSC2101_MASTER + -+static int -+__pcm_playback_switch_get (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL); -+ ucontrol->value.integer.value[0]=(val & DGC_DALMU) == DGC_DALMU; // L -+ ucontrol->value.integer.value[1]=(val & DGC_DARMU) == DGC_DARMU; // R -+ return 0; -+} /* __pcm_playback_switch_get */ ++#define DEFAULT_BITPERSAMPLE 16 ++#define AUDIO_RATE_DEFAULT 44100 ++#define AUDIO_MCBSP OMAP_MCBSP1 ++#define NUMBER_SAMPLE_RATES_SUPPORTED 16 ++#define PAGE2_AUDIO_CODEC_REGISTERS (2) + -+static int -+__pcm_playback_switch_put (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL); -+ int count=0; ++MODULE_AUTHOR("Everett Coleman, Daniel Petrini, David Cohen, Anderson Briglia - INdT"); ++MODULE_LICENSE("GPL"); ++MODULE_DESCRIPTION("OMAP TSC2101 driver for ALSA"); ++MODULE_SUPPORTED_DEVICE("{{TSC2101,OMAP TSC2101}}"); ++MODULE_ALIAS("omap_mcbsp.1"); + -+ if (((val & DGC_DALMU) == DGC_DALMU) != ucontrol->value.integer.value[0]) { -+ val=(val & ~DGC_DALMU) | -+ (ucontrol->value.integer.value[0] ? DGC_DALMU : 0); -+ count++; -+ } /* L */ -+ if (((val & DGC_DARMU) == DGC_DARMU) != ucontrol->value.integer.value[1]) { -+ val=(val & ~DGC_DARMU) | -+ (ucontrol->value.integer.value[1] ? DGC_DARMU : 0); -+ count++; -+ } /* R */ ++static char *id = NULL; ++MODULE_PARM_DESC(id, "OMAP ALSA Driver for TSC2101 chip."); + -+ if (count) -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_DAC_GAIN_CTRL, val); -+ return count; -+} /* __pcm_playback_switch_put */ ++static struct snd_card_omap_tsc2101 *omap_tsc2101 = NULL; + -+static int -+__line_playback_volume_info (snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) { -+ uinfo->type =SNDRV_CTL_ELEM_TYPE_INTEGER; -+ uinfo->count=1; -+ uinfo->value.integer.min=OUTPUT_VOLUME_MIN; -+ uinfo->value.integer.max=OUTPUT_VOLUME_MAX; -+ return 0; -+} /* __line_playback_volume_info */ ++static struct omap_mcbsp_reg_cfg initial_config_mcbsp = { ++#ifdef CONFIG_MACH_H6300 ++ .spcr2 = 0x0005, ++ .spcr1 = 0x0005, ++ .rcr2 = 0x8041, ++ .rcr1 = 0x8041, ++ .xcr2 = 0x00a1, ++ .xcr1 = 0x00a1, ++ .srgr2 = 0xb000, ++ .srgr1 = 0xb000, ++ .pcr0 = 0x0081, ++#else ++ .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), ++ .spcr1 = RINTM(3) | RRST, ++ .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | ++ RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), ++ .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), ++ .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | ++ XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, ++ .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), ++ .srgr1 = FWID(15), ++ .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), + -+#define hgc_adpga_hed_extract(x) ((x & 0x7f00) >> 8) -+static int -+__line_playback_volume_get (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL); -+ ucontrol->value.integer.value[0]=hgc_adpga_hed_extract(val); -+ return 0; -+} /* __line_playback_volume_get */ ++ /* platform specific initialization */ ++# if defined(CONFIG_MACH_OMAP_H2) ++ .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, ++# elif defined(CONFIG_MACH_OMAP_H3) + -+static int -+__line_playback_volume_put (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL); -+ int count=0; -+ if (hgc_adpga_hed_extract(val) != ucontrol->value.integer.value[0]) { -+ val=(val & ~HGC_ADPGA_HED(OUTPUT_VOLUME_MAX)) | -+ HGC_ADPGA_HED((u16)ucontrol->value.integer.value[0]); -+ count++; -+ } -+ if (count) -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL, val); -+ return count; -+} /* __line_playback_volume_put */ ++# ifndef TSC2101_MASTER ++ .pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP, ++# else ++ .pcr0 = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP, ++# endif /* !TSC2101_MASTER */ ++# endif /* CONFIG_MACH_OMAP_H2 */ ++#endif /* CONFIG_MACH_H6300 */ ++}; + -+static int -+__line_playback_switch_info (snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) { -+ uinfo->type =SNDRV_CTL_ELEM_TYPE_BOOLEAN; -+ uinfo->count=1; -+ uinfo->value.integer.min=0; -+ uinfo->value.integer.max=1; -+ return 0; -+} /* __line_playback_switch_info */ ++static unsigned int rates[] = { ++ 7350, 8000, 8018, 8727, ++ 8820, 9600, 11025, 12000, ++ 14700, 16000, 22050, 24000, ++ 29400, 32000, 44100, 48000 ++}; + -+static int -+__line_playback_switch_get (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL); -+ ucontrol->value.integer.value[0]=(val & HGC_ADMUT_HED) == HGC_ADMUT_HED; -+ return 0; -+} /* __line_playback_switch_get */ ++static snd_pcm_hw_constraint_list_t hw_constraints_rates = { ++ .count = ARRAY_SIZE(rates), ++ .list = rates, ++ .mask = 0, ++}; + -+static int -+__line_playback_switch_put (snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) { -+ u16 val=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL); -+ int count=0; ++struct sample_rate_reg_info { ++ u16 sample_rate; ++ u8 divisor; ++ u8 fs_44kHz; ++}; + -+ if (((val & HGC_ADMUT_HED) == HGC_ADMUT_HED) != ucontrol->value.integer.value[0]) { -+ val=(val & ~HGC_ADMUT_HED) | -+ (ucontrol->value.integer.value[0] ? HGC_ADMUT_HED : 0); -+ count++; -+ } -+ -+ if (count) -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_HEADSET_GAIN_CTRL, val); -+ return count; -+} /* __line_playback_switch_put */ -+ -+ -+static snd_kcontrol_new_t tsc2101_control[] __devinitdata={ -+ { .name = "PCM Playback Volume", -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .index = 0, -+ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, -+ .info = __pcm_playback_volume_info, -+ .get = __pcm_playback_volume_get, -+ .put = __pcm_playback_volume_put, -+ }, { -+ .name = "PCM Playback Switch", -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .index = 0, -+ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, -+ .info = __pcm_playback_switch_info, -+ .get = __pcm_playback_switch_get, -+ .put = __pcm_playback_switch_put, -+ }, { -+ .name = "Line Playback Volume", -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .index = 1, -+ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, -+ .info = __line_playback_volume_info, -+ .get = __line_playback_volume_get, -+ .put = __line_playback_volume_put, -+ }, { -+ .name = "Line Playback Switch", -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .index = 1, -+ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, -+ .info = __line_playback_switch_info, -+ .get = __line_playback_switch_get, -+ .put = __line_playback_switch_put, -+ } ++static const struct sample_rate_reg_info ++reg_info[NUMBER_SAMPLE_RATES_SUPPORTED] = { ++ {48000, 0, 0}, {44100, 0, 1}, {32000, 1, 0}, {29400, 1, 1}, ++ {24000, 2, 0}, {22050, 2, 1}, {16000, 3, 0}, {14700, 3, 1}, ++ {12000, 4, 0}, {11025, 4, 1}, {9600, 5, 0}, {8820, 5, 1}, ++ {8727, 6, 0}, {8018, 6, 1}, {8000, 7, 0}, {7350, 7, 1} +}; + -+int -+snd_tsc2101_setup_mix (snd_card_tsc2101_t *tsc2101) { -+ int i=0, err=0; ++static snd_pcm_hardware_t snd_omap_tsc2101_capture = { ++ .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | ++ SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), ++ .formats = (SNDRV_PCM_FMTBIT_S16_LE), ++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | ++ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | ++ SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | ++ SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | ++ SNDRV_PCM_RATE_KNOT), ++ .rate_min = 7350, ++ .rate_max = 48000, ++ .channels_min = 2, ++ .channels_max = 2, ++ .buffer_bytes_max = 128 * 1024, ++ .period_bytes_min = 32, ++ .period_bytes_max = 8 * 1024, ++ .periods_min = 16, ++ .periods_max = 255, ++ .fifo_size = 0, ++}; + -+ if (!tsc2101) -+ return -EINVAL; -+ for (i=0; i < ARRAY_SIZE(tsc2101_control); i++) -+ if ((err=snd_ctl_add (tsc2101->card, snd_ctl_new1 (&tsc2101_control[i], tsc2101->card))) < 0) -+ return err; -+ return 0; -+} /* snd_tsc2101_setup_mix */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_pcm.c bt_kernel/sound/arm/omap/tsc2101_pcm.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap/tsc2101_pcm.c 1970-01-01 02:00:00.000000000 +0200 -+++ bt_kernel/sound/arm/omap/tsc2101_pcm.c 2005-08-31 01:22:50.289885000 +0300 -@@ -0,0 +1,555 @@ -+/* -+ * OMAP tsc2101 soundcard -+ * Copyright (c) by Everett Coleman II <gcc80x86@fuzzyneural.net> -+ * -+ * 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 -+ * -+ */ ++static snd_pcm_hardware_t snd_omap_tsc2101_playback = { ++ .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | ++ SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), ++ .formats = (SNDRV_PCM_FMTBIT_S16_LE), ++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | ++ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | ++ SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | ++ SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | ++ SNDRV_PCM_RATE_KNOT), ++ .rate_min = 7350, ++ .rate_max = 48000, ++ .channels_min = 2, ++ .channels_max = 2, ++ .buffer_bytes_max = 128 * 1024, ++ .period_bytes_min = 32, ++ .period_bytes_max = 8 * 1024, ++ .periods_min = 16, ++ .periods_max = 255, ++ .fifo_size = 0, ++}; + -+#include <asm/arch/mcbsp.h> -+#include <linux/delay.h> -+#include <asm/arch/gpio.h> -+#include "omap-tsc2101.h" ++static __inline__ void ++audio_tsc2101_write (u8 address, u16 data) { ++ omap_tsc2101_write (PAGE2_AUDIO_CODEC_REGISTERS, address, data); ++} /* audio_tsc2101_write */ ++ ++static __inline__ u16 ++audio_tsc2101_read (u8 address) { ++ return (omap_tsc2101_read(PAGE2_AUDIO_CODEC_REGISTERS, address)); ++} /* audio_tsc2101_read */ + -+static snd_pcm_hardware_t pcm_hardware[2] = { -+ { -+ .info = -+ SNDRV_PCM_INFO_INTERLEAVED | -+ SNDRV_PCM_INFO_BLOCK_TRANSFER | -+ SNDRV_PCM_INFO_MMAP | -+ SNDRV_PCM_INFO_MMAP_VALID | -+ SNDRV_PCM_INFO_PAUSE | -+ SNDRV_PCM_INFO_RESUME, -+ .formats = SNDRV_PCM_FMTBIT_U16_LE, -+ .rates = -+ SNDRV_PCM_RATE_8000_44100 | -+ SNDRV_PCM_RATE_KNOT, -+ .rate_min = 7350, -+ .rate_max = 48000, -+ .channels_min = 2, -+ .channels_max = 2, -+ .buffer_bytes_max = 128 * 1024, -+ .period_bytes_min = 64, -+ .period_bytes_max = AUDIO_DMA_BUF_SIZE, -+ .periods_min = 2, -+ .periods_max = 255, -+ .fifo_size = 0, -+ }, { -+ .info = -+ SNDRV_PCM_INFO_INTERLEAVED | -+ SNDRV_PCM_INFO_BLOCK_TRANSFER | -+ SNDRV_PCM_INFO_MMAP | -+ SNDRV_PCM_INFO_MMAP_VALID | -+ SNDRV_PCM_INFO_PAUSE | -+ SNDRV_PCM_INFO_RESUME, -+ .formats = SNDRV_PCM_FMTBIT_U16_LE, -+ .rates = -+ SNDRV_PCM_RATE_8000_44100 | -+ SNDRV_PCM_RATE_KNOT, -+ .rate_min = 7350, -+ .rate_max = 48000, -+ .channels_min = 2, -+ .channels_max = 2, -+ .buffer_bytes_max = 128 * 1024, -+ .period_bytes_min = 64, -+ .period_bytes_max = AUDIO_DMA_BUF_SIZE, -+ .periods_min = 2, -+ .periods_max = 255, -+ .fifo_size = 0, -+ } -+}; + -+static unsigned int rate_list[] = { -+ 7350, 8000, 8018, 8727, -+ 8820, 9600, 11025, 12000, -+ 14700, 16000, 22050, 24000, -+ 29400, 32000, 44100, 48000 -+}; + -+static snd_pcm_hw_constraint_list_t rate_constraint = { -+ .count = ARRAY_SIZE (rate_list), -+ .list = rate_list, -+ .mask = 0, -+}; + + -+static int -+__tsc2101_open (snd_pcm_substream_t *substream) { -+ snd_pcm_runtime_t *runtime = substream->runtime; -+ snd_card_tsc2101_t *chip = snd_pcm_substream_chip (substream); -+ int sid = substream->pstr->stream, err; + -+ dprintk ("[%s]\n", __FUNCTION__); -+ chip->s[sid].stream = substream; -+ runtime->hw = pcm_hardware[sid]; + -+ if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0) -+ return err; -+ if ((err = snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &rate_constraint)) < 0) -+ return err; + -+ dprintk ("[%s] pass\n", __FUNCTION__); ++ ++ ++void ++snd_omap_tsc2101_free (snd_card_t * card) { ++ struct snd_card_omap_tsc2101 *chip = card->private_data; ++ ADEBUG(); ++ ++ /* TODO ++ * Turn off codec after it is done. ++ * Can't do it immediately, since it may still have ++ * buffered data. ++ */ ++ ++ ++ ++ ++ audio_dma_free (&chip->s[SNDRV_PCM_STREAM_PLAYBACK]); ++ audio_dma_free (&chip->s[SNDRV_PCM_STREAM_CAPTURE]); ++} /* snd_omap_tsc2101_free */ ++ ++#ifdef CONFIG_PM ++static int ++snd_omap_tsc2101_suspend (snd_card_t * card, pm_message_t state) { ++ // TODO: function + return 0; -+} /* __tsc2101_open */ ++} /* snd_omap_tsc2101_suspend */ + +static int -+__tsc2101_close (snd_pcm_substream_t *substream) { -+ snd_card_tsc2101_t *chip = snd_pcm_substream_chip (substream); -+ dprintk ("[%s]\n", __FUNCTION__); -+ chip->s[substream->pstr->stream].stream = 0; -+ dprintk ("[%s] pass\n", __FUNCTION__); ++snd_omap_tsc2101_resume (snd_card_t * card) { ++ // TODO: function + return 0; -+} /* __tsc2101_close */ ++} /* snd_omap_tsc2101_resume */ + +static int -+__tsc2101_hw_params (snd_pcm_substream_t *substream, snd_pcm_hw_params_t *hw_params) { -+ dprintk ("[%s> pass\n", __FUNCTION__); -+ return snd_pcm_lib_malloc_pages (substream, params_buffer_bytes (hw_params)); -+} /* __tsc2101_hw_params */ ++omap_tsc2101_suspend (struct device *dev, pm_message_t state, u32 level) { ++ // TODO: function ++ return 0; ++} /* omap_tsc2101_suspend */ + +static int -+__tsc2101_hw_free (snd_pcm_substream_t *substream) { -+ dprintk ("[%s> pass\n", __FUNCTION__); -+ return snd_pcm_lib_free_pages (substream); -+} /* __tsc2101_hw_free */ -+ -+static struct omap_mcbsp_reg_cfg mcbsp_cfg = { -+// .pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP, -+// .pcr0 = CLKXP | CLKRP, -+ .pcr0 = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP, ++omap_tsc2101_resume (struct device *dev, u32 level) { ++ // TODO: function ++ return 0; ++} /* omap_tsc2101_resume */ + -+// .spcr2 = FREE | FRST | GRST | XRST | XINTM(3) | XEMPTY, -+// .spcr1 = RINTM(3) | RRST | RFULL, -+ .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), -+ .spcr1 = RINTM(3) | RRST, ++#else ++# define snd_omap_tsc2101_suspend NULL ++# define snd_omap_tsc2101_resume NULL ++# define omap_tsc2101_suspend NULL ++# define omap_tsc2101_resume NULL ++#endif /* CONFIG_PM */ + -+ .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | -+ RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), -+ .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), -+ .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | -+ XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, -+ .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), -+ .srgr1 = FWID(15), -+ .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), -+}; ++static inline void ++tsc2101_configure (void) { ++ audio_tsc2101_write (TSC2101_CODEC_POWER_CTRL, 0x0000); + -+static int -+__set_samplerate (snd_card_tsc2101_t *tsc2101, long sample_rate) { -+ static u8 div_list[] = { -+ 7, 7, 6, 6, -+ 5, 5, 4, 4, -+ 3, 3, 2, 2, -+ 1, 1, 0, 0 -+ }; -+ int i = 0, clkgdv = 0; -+ u8 khz = 0; -+ u16 data = 0; ++ /*Mute Analog Sidetone */ ++ /*Select MIC_INHED input for headset */ ++ /*Cell Phone In not connected */ ++ audio_tsc2101_write (TSC2101_MIXER_PGA_CTRL, ++ MPC_ASTMU | MPC_ASTG(0x40) | MPC_MICADC); + -+ dprintk ("[%s]\n", __FUNCTION__); -+ udelay (125); -+ for (i=rate_constraint.count-1; i >= 0 ; i--) -+ if (sample_rate >= rate_list[i]) -+ break; -+ if (i == -1) -+ i=0; -+ khz=(i%2) ? 0 : 1; ++ /* Set record source */ ++ // TODO:MIXER tsc2101_update (SET_RECSRC, tsc2101_local.recsrc); + -+ dprintk ("rate=%u\n", rate_list[i]); ++ /* ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled */ ++ /* 1dB AGC hysteresis */ ++ /* MICes bias 2V */ ++ audio_tsc2101_write (TSC2101_AUDIO_CTRL_4, AC4_MB_HED(0)); + -+ data=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_AUDIO_CTRL_1); -+ data &= ~(AC1_DACFS(0x07) | AC1_ADCFS(0x07)); -+ data |= AC1_DACFS(div_list[i]) -+ | AC1_ADCFS(div_list[i]); -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_AUDIO_CTRL_1, data); ++ /* Set codec output volume */ ++ audio_tsc2101_write (TSC2101_DAC_GAIN_CTRL, 0x0000); + -+ data=omap_tsc2101_read (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_AUDIO_CTRL_3); -+ data &= ~(AC3_REFFS | AC3_SLVMS); -+ data |= (khz) ? AC3_REFFS : 0; -+ data |= AC3_SLVMS; -+ omap_tsc2101_write (TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_AUDIO_CTRL_3, data); ++ /* DAC left and right routed to SPK2 */ ++ /* SPK1/2 unmuted */ ++ audio_tsc2101_write (TSC2101_AUDIO_CTRL_5, ++ AC5_DAC2SPK1(3) | AC5_AST2SPK1 | AC5_KCL2SPK1 | ++ AC5_DAC2SPK2(3) | AC5_AST2SPK2 | AC5_KCL2SPK2 | ++ AC5_HDSCPTC); + -+ if (khz) { -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_PLL_PROG_1, -+ PLL1_PLLSEL | PLL1_PVAL(1) | PLL1_I_VAL(7)); -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_PLL_PROG_2, -+ PLL2_D_VAL(0x1490)); ++ /* OUT8P/N muted, CPOUT muted */ + -+ } else { -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_PLL_PROG_1, -+ PLL1_PLLSEL | PLL1_PVAL(1) | PLL1_I_VAL(8)); -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_PLL_PROG_2, -+ PLL2_D_VAL(0x780)); -+ } ++ audio_tsc2101_write (TSC2101_AUDIO_CTRL_6, ++ AC6_MUTLSPK | AC6_MUTSPK2 | AC6_LDSCPTC | ++ AC6_VGNDSCPTC); + -+ tsc2101->samplerate=rate_list[i]; ++ /* Headset/Hook switch detect disabled */ ++ audio_tsc2101_write (TSC2101_AUDIO_CTRL_7, 0x0000); + -+ mcbsp_cfg.srgr1 = -+ (FWID(AUDIO_BPS_DEFAULT - 1) | CLKGDV(clkgdv)); -+ mcbsp_cfg.srgr2 = -+ ((GSYNC | CLKSP | FSGM | FPER(AUDIO_BPS_DEFAULT * 2 - 1))); ++ /* Left line input volume control */ ++ // TODO:MIXER tsc2101_update (SET_LINE, tsc2101_local.line); + -+ omap_mcbsp_config(AUDIO_MCBSP, &mcbsp_cfg); -+ dprintk ("[%s] pass\n", __FUNCTION__); -+ return 0; -+} /* __set_samplerate */ ++ /* mic input volume control */ ++ // TODO:MIXER tsc2101_update(SET_MIC, tsc2101_local.mic); ++ ++ /* Left/Right headphone channel volume control */ ++ /* Zero-cross detect on */ ++ // TODO:MIXER tsc2101_update (SET_VOLUME, tsc2101_local.volume); ++} /* tsc2101_configure */ + +static int -+__tsc2101_prepare (snd_pcm_substream_t *substream) { ++snd_card_omap_tsc2101_open (snd_pcm_substream_t * substream) { ++ struct snd_card_omap_tsc2101 *chip = snd_pcm_substream_chip(substream); + snd_pcm_runtime_t *runtime = substream->runtime; -+ snd_card_tsc2101_t *chip = snd_pcm_substream_chip (substream); -+ audio_stream_t *s = &chip->s[substream->pstr->stream]; ++ int stream_id = substream->pstr->stream; ++ int err; ++ ADEBUG(); + -+ dprintk ("[%s]\n", __FUNCTION__); -+ __set_samplerate (chip, runtime->rate); ++ chip->s[stream_id].stream = substream; ++ ++// TODO: turn audio on, power on ++ ++ if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) ++ runtime->hw = snd_omap_tsc2101_playback; ++ else ++ runtime->hw = snd_omap_tsc2101_capture; ++ if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0) ++ return err; ++ if ((err = snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hw_constraints_rates)) < 0) ++ return err; ++ return 0; ++} /* snd_card_omap_tsc2101_open */ + -+ // set FMT here ???? -+ s->period =0; -+ s->offset =0; -+ s->position=0; -+ dprintk ("[%s] pass\n", __FUNCTION__); ++static int ++snd_card_omap_tsc2101_close (snd_pcm_substream_t *substream) { ++ struct snd_card_omap_tsc2101 *chip = snd_pcm_substream_chip(substream); ++ ADEBUG(); ++ ++ // TODO: omap_tsc2101_clock_off(); ++ chip->s[substream->pstr->stream].stream = NULL; + return 0; -+} /* __tsc2101_prepare */ ++} /* snd_card_omap_tsc2101_close */ + -+# define DCSR_ERROR 0x3 -+# define DCSR_END_BLOCK (1 << 5) -+# define DCCR_EN (1 << 7) -+static void -+tsc2101_playback_callback (int channel, u16 ch_status, void *data) { -+ audio_stream_t *s=(audio_stream_t *)data; ++static int ++snd_omap_tsc2101_hw_params (snd_pcm_substream_t *substream, snd_pcm_hw_params_t *hw_params) { ++ return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); ++} /* snd_omap_tsc2101_hw_params */ + -+ dprintk ("[%s]\n", __FUNCTION__); ++static int ++snd_omap_tsc2101_hw_free (snd_pcm_substream_t *substream) { ++ return snd_pcm_lib_free_pages(substream); ++} /* snd_omap_tsc2101_hw_free */ + -+ if (ch_status & DCSR_ERROR) { -+ omap_writew (omap_readw (OMAP_DMA_CCR (channel)) & -+ ~DCCR_EN, OMAP_DMA_CCR (channel)); -+ printk (KERN_ERR "[%s] DCSR_ERROR!\n", __FUNCTION__); -+ dprintk ("[%s] x-fail\n", __FUNCTION__); -+ return; -+ } ++static int ++omap_tsc2101_set_samplerate (struct snd_card_omap_tsc2101 *omap_tsc2101, long rate) { ++ u8 count = 0; ++ u16 data = 0; ++ int clkgdv = 0; ++ ++ if (rate >= 48000) ++ rate = 48000; ++ else if (rate >= 44100) ++ rate = 44100; ++ else if (rate >= 32000) ++ rate = 32000; ++ else if (rate >= 29400) ++ rate = 29400; ++ else if (rate >= 24000) ++ rate = 24000; ++ else if (rate >= 22050) ++ rate = 22050; ++ else if (rate >= 16000) ++ rate = 16000; ++ else if (rate >= 14700) ++ rate = 14700; ++ else if (rate >= 12000) ++ rate = 12000; ++ else if (rate >= 11025) ++ rate = 11025; ++ else if (rate >= 9600) ++ rate = 9600; ++ else if (rate >= 8820) ++ rate = 8820; ++ else if (rate >= 8727) ++ rate = 8727; ++ else if (rate >= 8018) ++ rate = 8018; ++ else if (rate >= 8000) ++ rate = 8000; ++ else ++ rate = 7350; + -+ if (!(ch_status & DCSR_END_BLOCK)) { -+ dprintk ("[%s] y-fail\n", __FUNCTION__); -+ return; -+ } ++ /* wait for any frame to complete */ ++ udelay(125); + -+ if (s->active) { -+ unsigned int dma_size; -+ unsigned int offset; -+ snd_pcm_runtime_t *runtime; ++ /* Search for the right sample rate */ ++ while ((reg_info[count].sample_rate != rate) && ++ (count < NUMBER_SAMPLE_RATES_SUPPORTED)) { ++ count++; ++ } ++ if (count == NUMBER_SAMPLE_RATES_SUPPORTED) { ++ printk(KERN_ERR "Invalid Sample Rate %d requested\n", ++ (int)rate); ++ return -EPERM; ++ } + -+ snd_pcm_period_elapsed (s->stream); ++ /* Set AC1 */ ++ data = audio_tsc2101_read(TSC2101_AUDIO_CTRL_1); ++ /*Clear prev settings */ ++ data &= ~(AC1_DACFS(0x07) | AC1_ADCFS(0x07)); ++ data |= ++ AC1_DACFS(reg_info[count].divisor) | AC1_ADCFS(reg_info[count]. ++ divisor); ++ audio_tsc2101_write(TSC2101_AUDIO_CTRL_1, data); ++ ++ /* Set the AC3 */ ++ data = audio_tsc2101_read(TSC2101_AUDIO_CTRL_3); ++ /*Clear prev settings */ ++ data &= ~(AC3_REFFS | AC3_SLVMS); ++ data |= (reg_info[count].fs_44kHz) ? AC3_REFFS : 0; ++#ifdef TSC2101_MASTER ++ data |= AC3_SLVMS; ++#endif /* #ifdef TSC2101_MASTER */ ++ audio_tsc2101_write(TSC2101_AUDIO_CTRL_3, data); ++ ++ /* program the PLLs */ ++ if (reg_info[count].fs_44kHz) { ++ /* 44.1 khz - 12 MHz Mclk */ ++ audio_tsc2101_write(TSC2101_PLL_PROG_1, PLL1_PLLSEL | PLL1_PVAL(1) | PLL1_I_VAL(7)); /* PVAL 1; I_VAL 7 */ ++ audio_tsc2101_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x1490)); /* D_VAL 5264 */ ++ } else { ++ /* 48 khz - 12 Mhz Mclk */ ++ audio_tsc2101_write(TSC2101_PLL_PROG_1, PLL1_PLLSEL | PLL1_PVAL(1) | PLL1_I_VAL(8)); /* PVAL 1; I_VAL 8 */ ++ audio_tsc2101_write(TSC2101_PLL_PROG_2, PLL2_D_VAL(0x780)); /* D_VAL 1920 */ ++ } + -+ spin_lock (&s->lock); -+ runtime=s->stream->runtime; ++ omap_tsc2101->samplerate = rate; + -+ dma_size = frames_to_bytes(runtime, runtime->period_size); -+ offset = dma_size * s->period; -+ snd_assert(dma_size <= AUDIO_DMA_BUF_SIZE,); ++ /* Set the sample rate */ ++#ifndef TSC2101_MASTER ++ clkgdv = ++ DEFAULT_MCBSP_CLOCK / (rate * ++ (DEFAULT_BITPERSAMPLE * 2 - 1)); ++ if (clkgdv) ++ initial_config_mcbsp.srgr1 = ++ (FWID(DEFAULT_BITPERSAMPLE - 1) | CLKGDV(clkgdv)); ++ else ++ return (1); + -+ dprintk ("pb: offset=%08lx size=%u period=%u\n", (unsigned long)(runtime->dma_area + offset), dma_size, s->period); -+#if 0 -+ omap_set_dma_transfer_params(channel, OMAP_DMA_DATA_TYPES16, 32, dma_size/(2*32), OMAP_DMA_SYNC_ELEMENT); -+ omap_set_dma_dest_params(channel, OMAP_DMA_PORT_MPUI, OMAP_DMA_AMODE_CONSTANT, (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1)); -+ omap_set_dma_src_params(channel, 0x00, 0x01, (unsigned long)(runtime->dma_area + offset)); -+ omap_start_dma (channel); ++ /* Stereo Mode */ ++ initial_config_mcbsp.srgr2 = ++ (CLKSM | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1)); +#else -+// omap_set_gpio_dataout (2, 1); -+ omap_set_dma_transfer_params (channel, -+ OMAP_DMA_DATA_TYPE_S16, -+ dma_size >> 1, 1, -+ OMAP_DMA_SYNC_ELEMENT -+ ); -+ omap_set_dma_dest_params (channel, -+// OMAP_DMA_PORT_TIPB, -+ OMAP_DMA_PORT_MPUI, -+ OMAP_DMA_AMODE_CONSTANT, -+ (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1) -+ ); -+ omap_set_dma_src_params (channel, -+ OMAP_DMA_PORT_EMIFF, -+ OMAP_DMA_AMODE_POST_INC, -+ runtime->dma_area + offset -+ ); -+ omap_start_dma (channel); -+// omap_set_gpio_dataout (2, 0); -+#endif -+ -+ s->period++; -+ s->period %= runtime->periods; -+// s->periods++; ++ initial_config_mcbsp.srgr1 = ++ (FWID(DEFAULT_BITPERSAMPLE - 1) | CLKGDV(clkgdv)); ++ initial_config_mcbsp.srgr2 = ++ ((GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1))); + -+ s->offset = offset; ++#endif /* end of #ifdef TSC2101_MASTER */ ++ omap_mcbsp_config(AUDIO_MCBSP, &initial_config_mcbsp); ++ return 0; ++} /* omap_tsc2101_set_samplerate */ + -+ spin_unlock (&s->lock); -+ } ++static int ++snd_omap_tsc2101_prepare (snd_pcm_substream_t *substream) { ++ struct snd_card_omap_tsc2101 *chip = snd_pcm_substream_chip(substream); ++ snd_pcm_runtime_t *runtime = substream->runtime; ++ struct audio_stream *s = &chip->s[substream->pstr->stream]; + -+ dprintk ("[%s] pass\n", __FUNCTION__); -+} /* tsc2101_playback_callback */ ++ /* set requested samplerate */ ++ omap_tsc2101_set_samplerate (chip, runtime->rate); + -+static void -+tsc2101_capture_callback (int channel, u16 ch_status, void *data) { -+ dprintk ("[%s]\n", __FUNCTION__); -+ omap_start_dma (channel); -+ dprintk ("[%s] pass\n", __FUNCTION__); -+} /* tsc2101_capture_callback */ ++ s->period = 0; ++ s->periods = 0; ++ return 0; ++} /* snd_omap_tsc2101_prepare */ + +static int -+__tsc2101_trigger (snd_pcm_substream_t *substream, int command) { -+ snd_card_tsc2101_t *chip = snd_pcm_substream_chip (substream); -+ audio_stream_t *s = &chip->s[substream->pstr->stream]; -+ int err=0; -+ -+ dprintk ("[%s]\n", __FUNCTION__); -+ -+ switch (command) { -+ case SNDRV_PCM_TRIGGER_START: -+ dprintk ("[%s] command=start(%d)\n", __FUNCTION__, command); -+ s->active++; -+ omap_clear_dma (s->channel); -+ if (s->sid == SNDRV_PCM_STREAM_PLAYBACK) -+ tsc2101_playback_callback (s->channel, 32, (void *)s); -+ else -+ tsc2101_capture_callback (s->channel, 32, (void *)s); -+ break; -+ -+ case SNDRV_PCM_TRIGGER_STOP: -+ dprintk ("[%s] command=stop(%d)\n", __FUNCTION__, command); -+ // TODO: be sure that all data has been xfered -+ s->active--; -+ spin_lock (&s->lock); -+ omap_clear_dma (s->channel); -+ omap_stop_dma (s->channel); -+ spin_unlock (&s->lock); -+ break; -+ -+ case SNDRV_PCM_TRIGGER_SUSPEND: -+ dprintk ("[%s] command=suspend(%d)\n", __FUNCTION__, command); -+ case SNDRV_PCM_TRIGGER_RESUME: -+ dprintk ("[%s] command=resume(%d)\n", __FUNCTION__, command); -+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH: -+ dprintk ("[%s] command=pause.push(%d)\n", __FUNCTION__, command); -+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: -+ dprintk ("[%s] command=pause.release(%d)\n", __FUNCTION__, command); -+ default: -+ err = -EINVAL; -+ break; -+ } /* switch (command) */ ++snd_omap_tsc2101_trigger (snd_pcm_substream_t *substream, int cmd) { ++ struct snd_card_omap_tsc2101 *chip = snd_pcm_substream_chip(substream); ++ int stream_id = substream->pstr->stream; ++ struct audio_stream *s = &chip->s[stream_id]; ++ int err = 0; ++ ADEBUG(); + -+ dprintk ("[%s] exit (%d)\n", __FUNCTION__, err); ++ /* note local interrupts are already disabled in the midlevel code */ ++ spin_lock(&s->dma_lock); ++ switch (cmd) { ++ case SNDRV_PCM_TRIGGER_START: ++ /* requested stream startup */ ++ s->active = 1; ++ audio_process_dma(s); ++ break; ++ case SNDRV_PCM_TRIGGER_STOP: ++ /* requested stream shutdown */ ++ audio_stop_dma(s); ++ break; ++ default: ++ err = -EINVAL; ++ break; ++ } ++ spin_unlock(&s->dma_lock); + return err; -+} /* __tsc2101_trigger */ ++} /* snd_omap_tsc2101_trigger */ + +static snd_pcm_uframes_t -+__tsc2101_pointer (snd_pcm_substream_t *substream) { -+ snd_card_tsc2101_t *chip = snd_pcm_substream_chip (substream); -+ snd_pcm_runtime_t *runtime = substream->runtime; -+ audio_stream_t *s = &chip->s[substream->pstr->stream]; -+ unsigned long flags; -+ snd_pcm_uframes_t offset; -+ dma_addr_t ptr; -+ -+ dprintk ("[%s]\n", __FUNCTION__); -+ -+ spin_lock_irqsave (&s->lock, flags); -+ ptr=omap_get_dma_src_pos (s->channel); -+ dprintk ("xxxx: [%08lx,%08lx] ptr=%08lx:%08lx\n", -+ (unsigned long)runtime->dma_area, -+ (unsigned long)runtime->dma_addr, -+ (unsigned long)ptr, -+ (unsigned long)runtime->buffer_size); -+ spin_unlock_irqrestore (&s->lock, flags); -+ -+ offset=bytes_to_frames (runtime, ptr - runtime->dma_addr); -+ if ((offset >= runtime->buffer_size) || (offset < 0)) -+ offset=0; -+ dprintk ("[%s] pass:%lu\n", __FUNCTION__, offset); -+ return offset; -+} /* __tsc2101_pointer */ -+ -+static snd_pcm_ops_t playback_ops = { -+ .open = __tsc2101_open, -+ .close = __tsc2101_close, ++snd_omap_tsc2101_pointer (snd_pcm_substream_t *substream) { ++ struct snd_card_omap_tsc2101 *chip = snd_pcm_substream_chip(substream); ++ return audio_get_dma_pos(&chip->s[substream->pstr->stream]); ++} /* snd_omap_tsc2101_pointer */ ++ ++static snd_pcm_ops_t snd_card_omap_tsc2101_playback_ops = { ++ .open = snd_card_omap_tsc2101_open, ++ .close = snd_card_omap_tsc2101_close, + .ioctl = snd_pcm_lib_ioctl, -+ .hw_params = __tsc2101_hw_params, -+ .hw_free = __tsc2101_hw_free, -+ .prepare = __tsc2101_prepare, -+ .trigger = __tsc2101_trigger, -+ .pointer = __tsc2101_pointer, ++ .hw_params = snd_omap_tsc2101_hw_params, ++ .hw_free = snd_omap_tsc2101_hw_free, ++ .prepare = snd_omap_tsc2101_prepare, ++ .trigger = snd_omap_tsc2101_trigger, ++ .pointer = snd_omap_tsc2101_pointer, +}; + -+static snd_pcm_ops_t capture_ops = { -+ .open = __tsc2101_open, -+ .close = __tsc2101_close, ++static snd_pcm_ops_t snd_card_omap_tsc2101_capture_ops = { ++ .open = snd_card_omap_tsc2101_open, ++ .close = snd_card_omap_tsc2101_close, + .ioctl = snd_pcm_lib_ioctl, -+ .hw_params = __tsc2101_hw_params, -+ .hw_free = __tsc2101_hw_free, -+ .prepare = __tsc2101_prepare, -+ .trigger = __tsc2101_trigger, -+ .pointer = __tsc2101_pointer, ++ .hw_params = snd_omap_tsc2101_hw_params, ++ .hw_free = snd_omap_tsc2101_hw_free, ++ .prepare = snd_omap_tsc2101_prepare, ++ .trigger = snd_omap_tsc2101_trigger, ++ .pointer = snd_omap_tsc2101_pointer, +}; + +static void -+tsc2101_audio_init (snd_card_tsc2101_t *tsc2101) { -+ dprintk ("[%s]\n", __FUNCTION__); -+ omap_set_gpio_dataout (2, 0); -+ omap_set_gpio_direction (2, 0); -+ -+ /* initialize mcbsp */ ++omap_tsc2101_audio_init (struct snd_card_omap_tsc2101 *omap_tsc2101) { ++ /* Setup DMA stuff */ ++ omap_tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].id = "Alsa TSC2101 out"; ++ omap_tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].stream_id = ++ SNDRV_PCM_STREAM_PLAYBACK; ++ omap_tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].dma_dev = ++ OMAP_DMA_MCBSP1_TX; ++ ++ omap_tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].id = "Alsa TSC2101 in"; ++ omap_tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].stream_id = ++ SNDRV_PCM_STREAM_CAPTURE; ++ omap_tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].dma_dev = ++ OMAP_DMA_MCBSP1_RX; ++ ++ /* configuring the McBSP */ + omap_mcbsp_request (AUDIO_MCBSP); ++ ++ /* if configured, then stop mcbsp */ + omap_mcbsp_stop (AUDIO_MCBSP); + -+ omap_mcbsp_config (AUDIO_MCBSP, &mcbsp_cfg); ++ omap_mcbsp_config (AUDIO_MCBSP, &initial_config_mcbsp); + omap_mcbsp_start (AUDIO_MCBSP); + -+ omap_tsc2101_enable (); -+#if 0 -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, -+ TSC2101_CODEC_POWER_CTRL, -+ 0x0000); -+ omap_tsc2101_write ( -+ TSC2101_AUDIO_CODEC_REGISTERS, -+ TSC2101_AUDIO_CTRL_5, -+ AC5_DAC2SPK1(3) | AC5_AST2SPK1 | AC5_KCL2SPK1 | -+ AC5_DAC2SPK2(3) | AC5_AST2SPK2 | AC5_KCL2SPK2 | -+ AC5_HDSCPTC); -+#else -+#ifdef DUMP_TSC2101_REGISTERS -+ dump_tsc2101_reg (); -+#endif /* DUMP_TSC2101_REGISTERS */ ++ tsc2101_configure (); ++} /* omap_tsc2101_audio_init */ + -+ omap_tsc2101_write (2, TSC2101_CODEC_POWER_CTRL, 0x0000); ++static int __init ++snd_card_omap_tsc2101_pcm (struct snd_card_omap_tsc2101 *omap_tsc2101, int device) { ++ snd_pcm_t *pcm; ++ int err; ++ ADEBUG(); + -+ /*Mute Analog Sidetone */ -+ /*Select MIC_INHED input for headset */ -+ /*Cell Phone In not connected */ -+ omap_tsc2101_write (2, TSC2101_MIXER_PGA_CTRL, -+ MPC_ASTMU | MPC_ASTG(0x40) | MPC_MICADC); ++ if ((err = snd_pcm_new (omap_tsc2101->card, "TSC2101 PCM", device, 1, 1, &pcm)) < 0) ++ return err; + -+ /* Set record source */ -+ omap_tsc2101_write (2, TSC2101_MIXER_PGA_CTRL, MPC_MICSEL(0)); ++ snd_pcm_lib_preallocate_pages_for_all (pcm, ++ SNDRV_DMA_TYPE_CONTINUOUS, ++ snd_dma_continuous_data (GFP_KERNEL), ++ 128 * 1024, 128 * 1024); + -+ /* ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled */ -+ /* 1dB AGC hysteresis */ -+ /* MICes bias 2V */ -+ omap_tsc2101_write (2, TSC2101_AUDIO_CTRL_4, AC4_MB_HED(0)); ++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, ++ &snd_card_omap_tsc2101_playback_ops); ++ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, ++ &snd_card_omap_tsc2101_capture_ops); + -+ /* Set codec output volume */ -+ omap_tsc2101_write (2, TSC2101_DAC_GAIN_CTRL, 0x0000); ++ pcm->private_data = omap_tsc2101; ++ pcm->info_flags = 0; ++ strcpy (pcm->name, "omap tsc2101 pcm"); + -+ /* DAC left and right routed to SPK2 */ -+ /* SPK1/2 unmuted */ -+ omap_tsc2101_write (2, TSC2101_AUDIO_CTRL_5, -+ AC5_DAC2SPK1(3) | AC5_AST2SPK1 | AC5_KCL2SPK1 | -+ AC5_DAC2SPK2(3) | AC5_AST2SPK2 | AC5_KCL2SPK2 | -+ AC5_HDSCPTC); ++ omap_tsc2101_audio_init (omap_tsc2101); + -+ /* OUT8P/N muted, CPOUT muted */ ++ audio_dma_request(&omap_tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK], ++ audio_dma_callback); ++ audio_dma_request(&omap_tsc2101->s[SNDRV_PCM_STREAM_CAPTURE], ++ audio_dma_callback); + -+ omap_tsc2101_write (2, TSC2101_AUDIO_CTRL_6, -+ AC6_MUTLSPK | AC6_MUTSPK2 | AC6_LDSCPTC | -+ AC6_VGNDSCPTC); ++ omap_tsc2101->pcm = pcm; ++ return 0; ++} /* snd_card_omap_tsc2101_pcm */ + -+ /* Headset/Hook switch detect disabled */ -+ omap_tsc2101_write (2, TSC2101_AUDIO_CTRL_7, 0x0000); ++static int __init ++snd_omap_tsc2101_probe (struct device *dev) { ++ int err = 0; ++ snd_card_t *card; ++ ADEBUG(); + -+ /* mic input volume control */ -+ omap_tsc2101_write(2, TSC2101_HANDSET_GAIN_CTRL, HNGC_ADPGA_HND(25)); -+#endif ++ if ((card = snd_card_new (-1, id, THIS_MODULE, sizeof (omap_tsc2101))) == NULL) ++ return -ENOMEM; ++ if ((omap_tsc2101 = kcalloc (1, sizeof (*omap_tsc2101), GFP_KERNEL)) == NULL) ++ return -ENOMEM; + -+#ifdef DUMP_TSC2101_REGISTERS -+ dump_tsc2101_reg (); -+#endif /* DUMP_TSC2101_REGISTERS */ ++ card->private_data = (void *)omap_tsc2101; ++ card->private_free = snd_omap_tsc2101_free; ++ omap_tsc2101->card = card; ++ omap_tsc2101->samplerate = AUDIO_RATE_DEFAULT; + -+ __set_samplerate (tsc2101, tsc2101->samplerate); -+ dprintk ("[%s] pass\n", __FUNCTION__); -+} /* tsc2101_audio_init */ ++ spin_lock_init(&omap_tsc2101->s[0].dma_lock); ++ spin_lock_init(&omap_tsc2101->s[1].dma_lock); + -+int -+snd_tsc2101_setup_pcm (snd_card_tsc2101_t *tsc2101) { -+ snd_pcm_t *pcm=0; -+ int err=0; ++ // TODO: setup mixer (fail, goto nodev) + -+ dprintk ("[%s]\n", __FUNCTION__); -+ if (!tsc2101) -+ return -EINVAL; -+ if ((err=snd_pcm_new (tsc2101->card, "TSC2101 PCM", 0, 1, 1, &pcm)) < 0) -+ return err; ++ if ((err = snd_card_omap_tsc2101_pcm (omap_tsc2101, 0)) < 0) ++ goto nodev; + -+ if ((err=snd_pcm_lib_preallocate_pages_for_all (pcm, SNDRV_DMA_TYPE_CONTINUOUS, snd_dma_continuous_data (GFP_KERNEL), 128, 128*1024)) < 0) -+ return err; ++ snd_card_set_pm_callback (card, snd_omap_tsc2101_suspend, snd_omap_tsc2101_resume, omap_tsc2101); + -+ snd_pcm_set_ops (pcm, SNDRV_PCM_STREAM_PLAYBACK, &playback_ops); -+ snd_pcm_set_ops (pcm, SNDRV_PCM_STREAM_CAPTURE, &capture_ops); ++ strcpy (card->driver, "TSC2101"); ++ strcpy (card->shortname, "TI TSC2101"); ++ strcpy (card->longname, "TI OMAP TSC2101"); + -+ pcm->private_data=tsc2101; -+ pcm->info_flags = 0; -+ strncpy (pcm->name, "TSC2101 PCM", sizeof (pcm->name)); -+ -+ spin_lock_init (&tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].lock); -+ tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].id = "TSC2101 out"; -+ tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].sid = SNDRV_PCM_STREAM_PLAYBACK; -+ tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].dev = AUDIO_DMA_TX; -+ if ((err=omap_request_dma ( -+ tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].dev, -+ tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].id, -+ tsc2101_playback_callback, -+ (void *)&tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK], -+ &tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].channel)) < 0) -+ return err; -+ dprintk ("TX dev=%u channel=%u\n", tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].dev, tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].channel); -+ -+ spin_lock_init (&tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].lock); -+ tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].id = "TSC2101 in"; -+ tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].sid = SNDRV_PCM_STREAM_CAPTURE; -+ tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].dev = AUDIO_DMA_RX; -+ if ((err=omap_request_dma ( -+ tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].dev, -+ tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].id, -+ tsc2101_capture_callback, -+ (void *)&tsc2101->s[SNDRV_PCM_STREAM_CAPTURE], -+ &tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].channel)) < 0) -+ return err; -+ dprintk ("RX dev=%u channel=%u\n", tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].dev, tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].channel); ++ // TODO: init mixer + -+ tsc2101_audio_init (tsc2101); ++ if ((err = snd_card_register (card)) == 0) { ++ printk(KERN_INFO "TSC2101 audio support initialized\n"); ++ dev_set_drvdata(dev, card); ++ return 0; ++ } ++ ++nodev: ++ printk (KERN_ERR "failed to initialize TSC2101\n"); ++ snd_omap_tsc2101_free (card); ++ return err; ++} /* snd_omap_tsc2101_probe */ + -+ tsc2101->pcm=pcm; -+ dprintk ("[%s] pass\n", __FUNCTION__); ++static int ++snd_omap_tsc2101_remove (struct device *dev) { ++ snd_card_t *card = dev_get_drvdata(dev); ++ struct snd_card_omap_tsc2101 *chip = card->private_data; ++ ++ snd_card_free(card); ++ omap_tsc2101 = NULL; ++ card->private_data = NULL; ++ kfree (chip); ++ dev_set_drvdata (dev, NULL); + return 0; -+} /* snd_tsc2101_setup_pcm */ ++} /* snd_omap_tsc2101_remove */ ++ ++static struct device_driver omap_alsa_driver = { ++ .name = "omap_mcbsp", ++ .bus = &platform_bus_type, ++ .probe = snd_omap_tsc2101_probe, ++ .remove = snd_omap_tsc2101_remove, ++ .suspend = omap_tsc2101_suspend, ++ .resume = omap_tsc2101_resume, ++}; + -+void -+snd_tsc2101_disable_pcm (snd_card_tsc2101_t *tsc2101) { -+ dprintk ("[%s]\n", __FUNCTION__); -+ omap_stop_dma (tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].channel); -+ omap_free_dma (tsc2101->s[SNDRV_PCM_STREAM_PLAYBACK].channel); -+ omap_stop_dma (tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].channel); -+ omap_free_dma (tsc2101->s[SNDRV_PCM_STREAM_CAPTURE].channel); ++static void ++omap_alsa_device_release (struct device *dev) { ++ /* Nothing */ ++} + -+ set_current_state(TASK_INTERRUPTIBLE); -+ schedule_timeout(2); ++static struct platform_device omap_alsa_device = { ++ .name = "omap_mcbsp", ++ .id = -1, ++ .dev = { ++ .release = omap_alsa_device_release, ++ }, ++}; + -+ omap_mcbsp_stop (AUDIO_MCBSP); -+ omap_mcbsp_free (AUDIO_MCBSP); -+ -+ omap_tsc2101_write(TSC2101_AUDIO_CODEC_REGISTERS, TSC2101_CODEC_POWER_CTRL, ~(CPC_SP1PWDN | CPC_SP2PWDN | CPC_BASSBC)); -+ omap_tsc2101_disable (); -+ dprintk ("[%s] pass\n", __FUNCTION__); -+} /* snd_tsc2101_disable_pcm */ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap-alsa-dma.c bt_kernel/sound/arm/omap-alsa-dma.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/arm/omap-alsa-dma.c 2005-10-30 17:44:20.392618150 +0200 -+++ bt_kernel/sound/arm/omap-alsa-dma.c 2005-10-30 16:32:39.609796000 +0200 -@@ -325,9 +325,11 @@ - int cfn = dma_size / (2 * cen); - FN_IN; - omap_set_dma_dest_params(channel, 0x05, 0x00, -- (OMAP1610_MCBSP1_BASE + 0x806)); -- omap_set_dma_src_params(channel, 0x00, 0x01, dma_ptr); -- omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00); -+ (OMAP1610_MCBSP1_BASE + 0x806), -+ 0, 0); -+ omap_set_dma_src_params(channel, 0x00, 0x01, dma_ptr, -+ 0, 0); -+ omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00, 0, 0); - FN_OUT(0); - return 0; - } -@@ -341,9 +343,10 @@ - int cfn = dma_size / (2 * cen); - FN_IN; - omap_set_dma_src_params(channel, 0x05, 0x00, -- (OMAP1610_MCBSP1_BASE + 0x802)); -- omap_set_dma_dest_params(channel, 0x00, 0x01, dma_ptr); -- omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00); -+ (OMAP1610_MCBSP1_BASE + 0x802), -+ 0, 0); -+ omap_set_dma_dest_params(channel, 0x00, 0x01, dma_ptr, 0, 0); -+ omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00, 0, 0); - FN_OUT(0); - return 0; - } -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/Kconfig bt_kernel/sound/oss/Kconfig ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/Kconfig 2005-10-30 17:44:20.459607487 +0200 -+++ bt_kernel/sound/oss/Kconfig 2005-10-22 03:52:45.687256000 +0300 ++static int __init ++omap_tsc2101_init (void) { ++ int err; ++ ++ ADEBUG(); ++ if ((err = platform_device_register (&omap_alsa_device)) != 0) ++ return err; ++ if ((err = driver_register (&omap_alsa_driver)) != 0) ++ platform_device_unregister (&omap_alsa_device); ++ return err; ++} /* omap_tsc2101_init */ ++ ++static void __exit ++omap_tsc2101_exit (void) { ++ ADEBUG(); ++ driver_unregister (&omap_alsa_driver); ++ platform_device_unregister (&omap_alsa_device); ++} /* omap_tsc2101_exit */ ++ ++module_init (omap_tsc2101_init); ++module_exit (omap_tsc2101_exit); +diff -Naur linux-2.6.14-omap2/sound/arm/omap-tsc2101.h linux-h6300-omap2-2.6.14.3/sound/arm/omap-tsc2101.h +--- linux-2.6.14-omap2/sound/arm/omap-tsc2101.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/arm/omap-tsc2101.h 2005-11-13 02:15:10.000000000 +0200 +@@ -0,0 +1,13 @@ ++#ifndef __OMAP_AUDIO_TSC2101_H ++#define __OMAP_AUDIO_TSC2101_H ++ ++# include "omap-alsa-dma.h" ++ ++struct snd_card_omap_tsc2101 { ++ snd_card_t *card; ++ snd_pcm_t *pcm; ++ long samplerate; ++ struct audio_stream s[2]; /* playback & capture */ ++}; ++ ++#endif /* __OMAP_AUDIO_TSC2101_H */ +diff -Naur linux-2.6.14-omap2/sound/oss/Kconfig linux-h6300-omap2-2.6.14.3/sound/oss/Kconfig +--- linux-2.6.14-omap2/sound/oss/Kconfig 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/oss/Kconfig 2005-10-22 03:52:45.000000000 +0300 @@ -12,7 +12,7 @@ config SOUND_OMAP_TSC2101 @@ -30772,40 +32911,9 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/Kconfig bt_k select OMAP_TSC2101 select OMAP_UWIRE if ARCH_OMAP ---help--- -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/omap-audio-dma-intfc.c bt_kernel/sound/oss/omap-audio-dma-intfc.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/omap-audio-dma-intfc.c 2005-10-30 17:44:20.656576134 +0200 -+++ bt_kernel/sound/oss/omap-audio-dma-intfc.c 2005-10-30 16:32:39.609796000 +0200 -@@ -701,9 +701,10 @@ - int cfn = dma_size / (2 * cen); - FN_IN; - omap_set_dma_dest_params(channel, 0x05, 0x00, -- (OMAP1610_MCBSP1_BASE + 0x806)); -- omap_set_dma_src_params(channel, 0x00, 0x01, dma_ptr); -- omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00); -+ (OMAP1610_MCBSP1_BASE + 0x806), -+ 0, 0); -+ omap_set_dma_src_params(channel, 0x00, 0x01, dma_ptr, 0, 0); -+ omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00, 0, 0); - FN_OUT(0); - return 0; - } -@@ -716,9 +717,10 @@ - int cfn = dma_size / (2 * cen); - FN_IN; - omap_set_dma_src_params(channel, 0x05, 0x00, -- (OMAP1610_MCBSP1_BASE + 0x802)); -- omap_set_dma_dest_params(channel, 0x00, 0x01, dma_ptr); -- omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00); -+ (OMAP1610_MCBSP1_BASE + 0x802), -+ 0, 0); -+ omap_set_dma_dest_params(channel, 0x00, 0x01, dma_ptr, 0, 0); -+ omap_set_dma_transfer_params(channel, dt, cen, cfn, 0x00, 0, 0); - FN_OUT(0); - return 0; - } -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/omap-audio-tsc2101.c bt_kernel/sound/oss/omap-audio-tsc2101.c ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/omap-audio-tsc2101.c 2005-10-30 17:44:20.697569609 +0200 -+++ bt_kernel/sound/oss/omap-audio-tsc2101.c 2005-10-22 03:52:45.687256000 +0300 +diff -Naur linux-2.6.14-omap2/sound/oss/omap-audio-tsc2101.c linux-h6300-omap2-2.6.14.3/sound/oss/omap-audio-tsc2101.c +--- linux-2.6.14-omap2/sound/oss/omap-audio-tsc2101.c 2005-12-02 01:53:34.000000000 +0200 ++++ linux-h6300-omap2-2.6.14.3/sound/oss/omap-audio-tsc2101.c 2005-10-22 03:52:45.000000000 +0300 @@ -48,7 +48,7 @@ #include "omap-audio.h" #include "omap-audio-dma-intfc.h" @@ -30868,14 +32976,3 @@ diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/sound/oss/omap-audio-t }; /***************************** MODULES SPECIFIC FUNCTION PROTOTYPES ********************/ -diff -Naur /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/usr/.gitignore bt_kernel/usr/.gitignore ---- /home/lamikr/own/h6340/kernel/linux-2.6.14-rc5/usr/.gitignore 2005-10-20 09:23:05.000000000 +0300 -+++ bt_kernel/usr/.gitignore 1970-01-01 02:00:00.000000000 +0200 -@@ -1,7 +0,0 @@ --# --# Generated files --# --gen_init_cpio --initramfs_data.cpio --initramfs_data.cpio.gz --initramfs_list diff --git a/packages/linux/linux-h6300-omap1_2.6.14-rc5.bb b/packages/linux/linux-h6300-omap1_2.6.14.3.bb index 5053f95c27..3e40f1278a 100644 --- a/packages/linux/linux-h6300-omap1_2.6.14-rc5.bb +++ b/packages/linux/linux-h6300-omap1_2.6.14.3.bb @@ -3,12 +3,12 @@ MAINTAINER = "Mika Laitio <lamikr@cc.jyu.fi>" SECTION = "kernel" LICENSE = "GPL" -SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.14-rc5.tar.bz2 \ - http://www.muru.com/linux/omap/patches/patch-2.6.14-rc5-omap1.bz2;patch=1 \ - file://h6300_omap1_2614rc5.patch;patch=1 \ +SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 \ + http://www.muru.com/linux/omap/patches/patch-2.6.14-omap2.bz2;patch=1 \ + file://patch-linux-2614-omap2-to-2614_3-omap1-h6300;patch=1 \ file://defconfig" -S = "${WORKDIR}/linux-2.6.14-rc5" +S = "${WORKDIR}/linux-2.6.14" inherit kernel |