diff options
Diffstat (limited to 'packages/linux')
149 files changed, 11752 insertions, 15313 deletions
diff --git a/packages/linux/handhelds-pxa-2.6/ipaq-pxa270/defconfig b/packages/linux/handhelds-pxa-2.6/ipaq-pxa270/defconfig index f90fb80edf..9bd18034ed 100644 --- a/packages/linux/handhelds-pxa-2.6/ipaq-pxa270/defconfig +++ b/packages/linux/handhelds-pxa-2.6/ipaq-pxa270/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.12-hh2 -# Mon Aug 15 19:13:48 2005 +# Linux kernel version: 2.6.12-hh1 +# Wed Jul 13 18:54:32 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -102,7 +102,6 @@ CONFIG_PXA27x=y CONFIG_PXA_KEYS=y # CONFIG_ARCH_ESERIES is not set # CONFIG_MACH_A620 is not set -# CONFIG_MACH_A716 is not set # CONFIG_ARCH_H1900 is not set # CONFIG_ARCH_H2200 is not set # CONFIG_ARCH_H3900 is not set @@ -125,9 +124,6 @@ CONFIG_HX4700_LEDS=m # CONFIG_ARCH_ROVERP1 is not set # CONFIG_ARCH_ROVERP5P is not set # CONFIG_PXA_SHARPSL is not set -# CONFIG_SA1100_H3100 is not set -# CONFIG_SA1100_H3600 is not set -# CONFIG_SA1100_H3800 is not set # # Linux As Bootloader @@ -153,32 +149,24 @@ CONFIG_ARM_THUMB=y CONFIG_XSCALE_PMU=y # -# Compaq/iPAQ Platforms -# -CONFIG_PXA_IPAQ=y - -# -# XScale-based iPAQ +# Bus support # -CONFIG_IPAQ_HANDHELD=y +CONFIG_ISA_DMA_API=y # -# Compaq/iPAQ Drivers +# Compaq/iPAQ Options # +CONFIG_PXA_IPAQ=y # -# Compaq/HP iPAQ Drivers +# XScale-based iPAQ # +CONFIG_IPAQ_HANDHELD=y # CONFIG_IPAQ_SLEEVE is not set # CONFIG_IPAQ_SAMCOP is not set # CONFIG_IPAQ_HAMCOP is not set # -# Bus support -# -CONFIG_ISA_DMA_API=y - -# # PCCARD (PCMCIA/CardBus) support # CONFIG_PCCARD=m @@ -377,6 +365,7 @@ CONFIG_BLK_DEV_IDECS=m # CONFIG_BLK_DEV_IDECD is not set # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_IDE_TASK_IOCTL is not set # @@ -699,6 +688,7 @@ CONFIG_NET_RADIO=y # # CONFIG_AIRO_CS is not set # CONFIG_PCMCIA_WL3501 is not set +# CONFIG_PCMCIA_ACX100 is not set CONFIG_NET_WIRELESS=y # CONFIG_HOSTAP is not set @@ -745,6 +735,7 @@ CONFIG_INPUT=y # Userland interfaces # # CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_TSDEV is not set CONFIG_INPUT_EVDEV=m @@ -1047,8 +1038,6 @@ CONFIG_SND_GENERIC_PM=y # # ALSA ARM devices # -# CONFIG_SND_A716 is not set -# CONFIG_SND_H1910 is not set # CONFIG_SND_H2200 is not set CONFIG_SND_HX4700=m # CONFIG_SND_PXA2XX_UDA1380 is not set @@ -1099,7 +1088,7 @@ CONFIG_USB_PXA27X=m # CONFIG_USB_ZERO is not set CONFIG_USB_ETH=m # CONFIG_USB_ETH_RNDIS is not set -# CONFIG_USB_GADGETFS is not set +CONFIG_USB_GADGETFS=m CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set CONFIG_USB_G_SERIAL=m @@ -1131,7 +1120,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y # CONFIG_EXT2_FS_SECURITY is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set -CONFIG_FS_MBCACHE=m +CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y @@ -1242,7 +1231,7 @@ CONFIG_MSDOS_PARTITION=y # Native Language Support # CONFIG_NLS=m -CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=m # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/.mtn2git_empty b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/.mtn2git_empty +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/.mtn2git_empty diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/add-elpp-stuff.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/add-elpp-stuff.patch index 04ab185f4f..04ab185f4f 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/add-elpp-stuff.patch +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/add-elpp-stuff.patch diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/add-oz-release-string.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/add-oz-release-string.patch index 22a6fd3943..22a6fd3943 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/add-oz-release-string.patch +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/add-oz-release-string.patch diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/connectplus-remove-ide-HACK.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/connectplus-remove-ide-HACK.patch index 4414b21191..4414b21191 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/connectplus-remove-ide-HACK.patch +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/connectplus-remove-ide-HACK.patch diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-c7x0 b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-c7x0 index 9dd7c230e7..20b44b7197 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-c7x0 +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-c7x0 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.13-rc3-mm1 -# Sun Jul 24 18:32:14 2005 +# Linux kernel version: 2.6.15-rc2 +# Fri Nov 25 17:06:09 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -22,23 +22,19 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 # General setup # CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_POSIX_MQUEUE is not set CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set - -# -# Class Based Kernel Resource Management -# -# CONFIG_CKRM is not set CONFIG_SYSCTL=y # CONFIG_AUDIT is not set CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" CONFIG_EMBEDDED=y -# CONFIG_DELAY_ACCT is not set CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set @@ -68,6 +64,23 @@ CONFIG_OBSOLETE_MODPARM=y CONFIG_KMOD=y # +# Block layer +# + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# # System Type # # CONFIG_ARCH_CLPS7500 is not set @@ -89,6 +102,7 @@ CONFIG_ARCH_PXA=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set # CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_AAEC2000 is not set @@ -101,6 +115,8 @@ CONFIG_ARCH_PXA=y # CONFIG_ARCH_PXA_IDP is not set CONFIG_PXA_SHARPSL=y # CONFIG_MACH_HX2750 is not set +CONFIG_PXA_SHARPSL_25x=y +# CONFIG_PXA_SHARPSL_27x is not set # CONFIG_MACH_POODLE is not set CONFIG_MACH_CORGI=y CONFIG_MACH_SHEPHERD=y @@ -109,6 +125,7 @@ CONFIG_MACH_HUSKY=y CONFIG_PXA25x=y # CONFIG_PXA_KEYS is not set CONFIG_PXA_SHARP_C7xx=y +CONFIG_PXA_SSP=y # # Processor Type @@ -145,15 +162,13 @@ CONFIG_PCMCIA_IOCTL=y # # PC-card bridges # -# CONFIG_TCIC is not set CONFIG_PCMCIA_PXA2XX=y # # Kernel Features # -# CONFIG_SMP is not set CONFIG_PREEMPT=y -# CONFIG_NO_IDLE_HZ is not set +CONFIG_NO_IDLE_HZ=y # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y @@ -161,6 +176,8 @@ CONFIG_FLATMEM_MANUAL=y # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 CONFIG_ALIGNMENT_TRAP=y # @@ -168,10 +185,27 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 " +CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" # 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 is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +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=y +CONFIG_CPU_FREQ_PXA25x=y + +# # Floating point emulation # @@ -194,6 +228,8 @@ CONFIG_BINFMT_MISC=m # Power management options # CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set CONFIG_APM=y # @@ -223,8 +259,8 @@ CONFIG_SYN_COOKIES=y # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_TUNNEL is not set -# CONFIG_IP_TCPDIAG is not set -# CONFIG_IP_TCPDIAG_IPV6 is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_BIC=y @@ -243,16 +279,24 @@ CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK is not set + +# # IP: Netfilter Configuration # CONFIG_IP_NF_CONNTRACK=m # CONFIG_IP_NF_CT_ACCT is not set # CONFIG_IP_NF_CONNTRACK_MARK is not set +# 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=m +# CONFIG_IP_NF_PPTP is not set CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_LIMIT=m @@ -276,13 +320,16 @@ CONFIG_IP_NF_MATCH_OWNER=m CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_MATCH_REALM=m CONFIG_IP_NF_MATCH_SCTP=m +# CONFIG_IP_NF_MATCH_DCCP is not set CONFIG_IP_NF_MATCH_COMMENT=m CONFIG_IP_NF_MATCH_HASHLIMIT=m +# CONFIG_IP_NF_MATCH_STRING is not set CONFIG_IP_NF_FILTER=m # CONFIG_IP_NF_TARGET_REJECT is not set CONFIG_IP_NF_TARGET_LOG=m CONFIG_IP_NF_TARGET_ULOG=m CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_TARGET_NFQUEUE is not set CONFIG_IP_NF_NAT=m CONFIG_IP_NF_NAT_NEEDED=y # CONFIG_IP_NF_TARGET_MASQUERADE is not set @@ -300,6 +347,7 @@ CONFIG_IP_NF_MANGLE=m # 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_RAW=m # CONFIG_IP_NF_TARGET_NOTRACK is not set CONFIG_IP_NF_ARPTABLES=m @@ -326,11 +374,19 @@ CONFIG_IP6_NF_MATCH_LENGTH=m CONFIG_IP6_NF_MATCH_EUI64=m 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 # +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# # SCTP Configuration (EXPERIMENTAL) # # CONFIG_IP_SCTP is not set @@ -346,6 +402,10 @@ CONFIG_IP6_NF_RAW=m # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# # CONFIG_NET_SCHED is not set CONFIG_NET_CLS_ROUTE=y @@ -353,11 +413,6 @@ CONFIG_NET_CLS_ROUTE=y # Network testing # # CONFIG_NET_PKTGEN is not set -# CONFIG_KGDBOE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NETPOLL_RX is not set -# CONFIG_NETPOLL_TRAP is not set -# CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_HAMRADIO is not set CONFIG_IRDA=m @@ -427,7 +482,6 @@ CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y CONFIG_BT_HCIUART_BCSP=y -CONFIG_BT_HCIUART_BCSP_TXCRC=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m @@ -436,7 +490,11 @@ CONFIG_BT_HCIBT3C=m CONFIG_BT_HCIBLUECARD=m CONFIG_BT_HCIBTUART=m CONFIG_BT_HCIVHCI=m -# CONFIG_IEEE80211 is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_CRYPT_CCMP is not set +# CONFIG_IEEE80211_CRYPT_TKIP is not set # # Device Drivers @@ -451,6 +509,11 @@ CONFIG_FW_LOADER=y # CONFIG_DEBUG_DRIVER is not set # +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# # Memory Technology Devices (MTD) # CONFIG_MTD=y @@ -469,6 +532,7 @@ CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set # # RAM/ROM/Flash chip drivers @@ -524,6 +588,11 @@ CONFIG_MTD_NAND_SHARPSL=y # CONFIG_MTD_NAND_NANDSIM is not set # +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# # Parallel port support # # CONFIG_PARPORT is not set @@ -542,16 +611,7 @@ CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_UB is not set # CONFIG_BLK_DEV_RAM is not set CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_INITRAMFS_SOURCE="" # 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 # @@ -585,6 +645,7 @@ CONFIG_IDE_GENERIC=y # # SCSI device support # +# CONFIG_RAID_ATTRS is not set CONFIG_SCSI=m CONFIG_SCSI_PROC_FS=y @@ -612,10 +673,12 @@ CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set # # SCSI low-level drivers # +# CONFIG_ISCSI_TCP is not set # CONFIG_SCSI_SATA is not set # CONFIG_SCSI_DEBUG is not set @@ -656,6 +719,11 @@ CONFIG_NETDEVICES=y # CONFIG_TUN is not set # +# PHY device support +# +# CONFIG_PHYLIB is not set + +# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y @@ -708,7 +776,6 @@ CONFIG_PCMCIA_SPECTRUM=m CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_CS=m -# CONFIG_ACX is not set CONFIG_NET_WIRELESS=y # @@ -733,13 +800,15 @@ CONFIG_PPP=m # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set # CONFIG_SLIP is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set # # ISDN subsystem @@ -771,6 +840,7 @@ CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set CONFIG_KEYBOARD_CORGI=y +# CONFIG_KEYBOARD_SPITZ is not set # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TOUCHSCREEN=y @@ -836,11 +906,15 @@ CONFIG_SA1100_RTC=y # PCMCIA character devices # # CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set # CONFIG_RAW_DRIVER is not set # # TPM devices # +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set # # I2C support @@ -860,11 +934,9 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_PXA=y # CONFIG_I2C_PXA_SLAVE is not set -CONFIG_I2C_ISA=m # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_STUB is not set # CONFIG_I2C_PCA_ISA is not set -# CONFIG_I2C_SENSOR is not set # # Miscellaneous I2C Chip support @@ -877,6 +949,7 @@ CONFIG_I2C_ISA=m # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_RTC8564 is not set # CONFIG_SENSORS_MAX6875 is not set +# CONFIG_RTC_X1205_I2C is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -885,48 +958,29 @@ CONFIG_I2C_ISA=m # # Hardware Monitoring support # -CONFIG_HWMON=y -# 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_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_HWMON is not set +# CONFIG_HWMON_VID is not set # # Misc devices # # -# SoC drivers +# Multimedia Capabilities Port drivers +# + +# +# Multi-Function Devices +# + +# +# LED devices # -# CONFIG_SOC is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_CORGI=y +CONFIG_LEDS_TRIGGER_TIMER=y # # Multimedia devices @@ -944,7 +998,10 @@ CONFIG_VIDEO_DEV=m # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set # CONFIG_TUNER_3036 is not set +# CONFIG_VIDEO_EM28XX is not set # CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_VIDEO_AUDIO_DECODER is not set +# CONFIG_VIDEO_DECODER is not set # # Radio Adapters @@ -963,14 +1020,12 @@ CONFIG_FB=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SOFT_CURSOR=y # CONFIG_FB_MACMODES is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_ELPP is not set +# CONFIG_FB_S1D13XXX is not set # CONFIG_FB_PXA is not set CONFIG_FB_W100=y -# CONFIG_FB_S1D13XXX is not set # CONFIG_FB_VIRTUAL is not set # @@ -979,6 +1034,7 @@ CONFIG_FB_W100=y # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set CONFIG_FONTS=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y @@ -1002,12 +1058,6 @@ CONFIG_BACKLIGHT_DEVICE=y CONFIG_BACKLIGHT_CORGI=y # -# Speakup console speech -# -# CONFIG_SPEAKUP is not set -CONFIG_SPEAKUP_DEFAULT="none" - -# # Sound # CONFIG_SOUND=y @@ -1015,49 +1065,97 @@ CONFIG_SOUND=y # # Advanced Linux Sound Architecture # -# CONFIG_SND is not set +CONFIG_SND=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQ_DUMMY is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_DETECT is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_VIRMIDI 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_PXA2XX_PCM=m +CONFIG_SND_PXA2XX_AC97=m + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set + +# +# PCMCIA devices +# + +# +# SoC audio support +# +CONFIG_SND_SOC=m + +# +# Soc Platforms +# +CONFIG_SND_PXA2xx_SOC=m +# CONFIG_SND_PXA2xx_SOC_AC97 is not set +CONFIG_SND_PXA2xx_SOC_I2S=m +# CONFIG_SND_PXA2xx_SOC_SSP is not set + +# +# PXA2xx machine support +# +# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set +CONFIG_SND_PXA2xx_SOC_CORGI=m + +# +# Soc Codecs +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_WM8753 is not set +CONFIG_SND_SOC_WM8731=m +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8971 is not set # # Open Sound System # -CONFIG_SOUND_PRIME=y -# CONFIG_SOUND_BT878 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set +CONFIG_SOUND_PRIME=m +# CONFIG_OBSOLETE_OSS_DRIVER is not set # CONFIG_SOUND_MSNDCLAS is not set # CONFIG_SOUND_MSNDPIN is not set -CONFIG_SOUND_OSS=y +CONFIG_SOUND_OSS=m # CONFIG_SOUND_TRACEINIT is not set # CONFIG_SOUND_DMAP is not set # CONFIG_SOUND_AD1816 is not set -# CONFIG_SOUND_SGALAXY is not set # CONFIG_SOUND_ADLIB is not set # CONFIG_SOUND_ACI_MIXER is not set -# CONFIG_SOUND_CS4232 is not set -# CONFIG_SOUND_SSCAPE is not set -# CONFIG_SOUND_GUS is not set # CONFIG_SOUND_VMIDI is not set # CONFIG_SOUND_TRIX is not set # CONFIG_SOUND_MSS is not set # CONFIG_SOUND_MPU401 is not set -# CONFIG_SOUND_NM256 is not set -# CONFIG_SOUND_MAD16 is not set # CONFIG_SOUND_PAS is not set # CONFIG_SOUND_PSS is not set -CONFIG_SOUND_CORGI=y # CONFIG_SOUND_SB is not set -# CONFIG_SOUND_AWE32_SYNTH is not set -# CONFIG_SOUND_WAVEFRONT is not set -# CONFIG_SOUND_MAUI is not set -# CONFIG_SOUND_YM3812 is not set -# CONFIG_SOUND_OPL3SA1 is not set # CONFIG_SOUND_OPL3SA2 is not set # CONFIG_SOUND_UART6850 is not set # CONFIG_SOUND_AEDSP16 is not set # CONFIG_SOUND_TVMIXER is not set -# CONFIG_SOUND_AD1980 is not set # # USB support @@ -1086,17 +1184,16 @@ CONFIG_USB_SL811_CS=m # # USB Device Class drivers # -CONFIG_USB_AUDIO=m +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m # -# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # -CONFIG_USB_MIDI=m -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set @@ -1164,30 +1261,14 @@ CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y -CONFIG_USB_KC2190=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# 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=m # CONFIG_USB_ZD1201 is not set CONFIG_USB_MON=y @@ -1201,6 +1282,7 @@ CONFIG_USB_MON=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y # CONFIG_USB_SERIAL_AIRPRIME is not set +# CONFIG_USB_SERIAL_ANYDATA is not set CONFIG_USB_SERIAL_BELKIN=m # CONFIG_USB_SERIAL_WHITEHEAT is not set CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m @@ -1253,7 +1335,6 @@ CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m CONFIG_USB_LED=m CONFIG_USB_CYTHERM=m -# CONFIG_USB_GOTEMP is not set CONFIG_USB_PHIDGETKIT=m CONFIG_USB_PHIDGETSERVO=m CONFIG_USB_IDMOUSE=m @@ -1304,14 +1385,9 @@ CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XIP is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set -# CONFIG_REISER4_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set - -# -# XFS support -# # CONFIG_XFS_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set @@ -1320,11 +1396,6 @@ CONFIG_INOTIFY=y CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set - -# -# Caches -# -# CONFIG_FSCACHE is not set # CONFIG_FUSE_FS is not set # @@ -1348,12 +1419,9 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_SYSFS=y -# CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y -# CONFIG_TMPFS_XATTR is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y -# CONFIG_CONFIGFS_FS is not set # CONFIG_RELAYFS_FS is not set # @@ -1361,7 +1429,6 @@ CONFIG_RAMFS=y # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set -# CONFIG_ASFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set @@ -1371,6 +1438,7 @@ CONFIG_RAMFS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_COMPRESSION_OPTIONS=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y @@ -1404,7 +1472,10 @@ CONFIG_RPCSEC_GSS_KRB5=m CONFIG_SMB_FS=m CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp437" -# CONFIG_CIFS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -1497,7 +1568,9 @@ CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set CONFIG_FRAME_POINTER=y +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_DEBUG_USER is not set # CONFIG_DEBUG_WAITQ is not set CONFIG_DEBUG_ERRORS=y @@ -1547,6 +1620,7 @@ CONFIG_CRYPTO_TEST=m # Library routines # CONFIG_CRC_CCITT=y +# CONFIG_CRC16 is not set CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-collie b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-collie index 9f51b61169..354d0c2854 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-collie +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-collie @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.11-rc2 -# Sat Jan 22 20:41:45 2005 +# Linux kernel version: 2.6.14-git3 +# Thu Nov 3 09:37:28 2005 # CONFIG_ARM=y CONFIG_MMU=y CONFIG_UID16=y CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -18,11 +17,13 @@ CONFIG_EXPERIMENTAL=y CONFIG_BROKEN=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_POSIX_MQUEUE is not set @@ -30,14 +31,17 @@ CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set CONFIG_SYSCTL=y # CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set +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 is not set @@ -47,6 +51,7 @@ 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 @@ -83,6 +88,7 @@ CONFIG_ARCH_SA1100=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 # # SA11x0 Implementations @@ -101,8 +107,6 @@ CONFIG_SA1100_COLLIE=y # CONFIG_SA1100_SHANNON is not set # CONFIG_SA1100_SIMPAD is not set # CONFIG_SA1100_SSP is not set -CONFIG_SHARP_LOCOMO=y -CONFIG_SHARP_SCOOP=y # # Processor Type @@ -114,68 +118,177 @@ CONFIG_CPU_ABRT_EV4=y CONFIG_CPU_CACHE_V4WB=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_TLB_V4WB=y -CONFIG_CPU_MINICACHE=y # # Processor Features # +CONFIG_SHARP_LOCOMO=y +CONFIG_SHARP_PARAM=y +CONFIG_SHARP_SCOOP=y # -# General setup +# Bus support # -CONFIG_DISCONTIGMEM=y CONFIG_ISA=y +CONFIG_ISA_DMA_API=y + +# +# PCCARD (PCMCIA/CardBus) support +# +CONFIG_PCCARD=y +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y + +# +# PC-card bridges +# +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +CONFIG_PCMCIA_SA1100=y + +# +# Kernel Features +# +# CONFIG_SMP is not set +CONFIG_PREEMPT=y +CONFIG_NO_IDLE_HZ=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_DISCONTIGMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_NEED_MULTIPLE_NODES=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M debug" # CONFIG_XIP_KERNEL is not set -# CONFIG_CPU_FREQ is not set # -# PCCARD (PCMCIA/CardBus) support +# CPU Frequency scaling # -# CONFIG_PCCARD is not set +# CONFIG_CPU_FREQ is not set # -# PC-card bridges +# Floating point emulation # # -# At least one math emulation must be selected +# At least one emulation must be selected # CONFIG_FPE_NWFPE=y # CONFIG_FPE_NWFPE_XP is not set # CONFIG_FPE_FASTFPE is not set + +# +# Userspace binary formats +# CONFIG_BINFMT_ELF=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_MISC=m +# CONFIG_ARTHUR is not set # -# Generic Driver Options +# Power management options # -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=m -# CONFIG_DEBUG_DRIVER is not set CONFIG_PM=y -CONFIG_PREEMPT=y CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2" -# CONFIG_LEDS is not set -CONFIG_ALIGNMENT_TRAP=y # -# Parallel port support +# Networking # -# CONFIG_PARPORT is not set +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_SCHED is not set +# CONFIG_NET_CLS_ROUTE is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_DEBUG_DRIVER is not set # # Memory Technology Devices (MTD) # CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_REDBOOT_PARTS is not set # CONFIG_MTD_CMDLINE_PARTS is not set # CONFIG_MTD_AFS_PARTS is not set @@ -216,7 +329,7 @@ CONFIG_MTD_SHARP=y # Mapping drivers for chip access # # CONFIG_MTD_COMPLEX_MAPPINGS is not set -CONFIG_MTD_SA1100=y +# CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers @@ -240,6 +353,11 @@ CONFIG_MTD_SA1100=y # CONFIG_MTD_NAND is not set # +# Parallel port support +# +# CONFIG_PARPORT is not set + +# # Plug and Play support # # CONFIG_PNP is not set @@ -247,7 +365,6 @@ CONFIG_MTD_SA1100=y # # Block devices # -# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y @@ -257,7 +374,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=1024 CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" # CONFIG_CDROM_PKTCDVD is not set # @@ -265,101 +381,145 @@ CONFIG_INITRAMFS_SOURCE="" # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" CONFIG_ATA_OVER_ETH=m # +# 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 # -# Networking support +# Fusion MPT device support # -CONFIG_NET=y +# CONFIG_FUSION is not set # -# Networking options +# IEEE 1394 (FireWire) support # -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -# CONFIG_NETLINK_DEV is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_IP_TCPDIAG=y -# CONFIG_IP_TCPDIAG_IPV6 is not set -# CONFIG_IPV6 is not set -# CONFIG_NETFILTER is not set +# CONFIG_IEEE1394 is not set # -# SCTP Configuration (EXPERIMENTAL) +# I2O device support # -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_BRIDGE is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set # -# QoS and/or fair queueing +# Network device support # -# CONFIG_NET_SCHED is not set -# CONFIG_NET_CLS_ROUTE is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set # -# Network testing +# PHY device support # -# CONFIG_NET_PKTGEN is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -# CONFIG_NETDEVICES is not set +# CONFIG_PHYLIB is not set # -# ATA/ATAPI/MFM/RLL support +# Ethernet (10 or 100Mbit) # -# CONFIG_IDE is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set # -# SCSI device support +# Ethernet (1000 Mbit) # -# CONFIG_SCSI is not set # -# Fusion MPT device support +# Ethernet (10000 Mbit) # # -# IEEE 1394 (FireWire) support +# Token Ring devices # -# CONFIG_IEEE1394 is not set # -# I2O device support +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y + +# +# Obsolete Wireless cards support (pre-802.11) +# +# CONFIG_STRIP is not set +# 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_HERMES=m +# CONFIG_ATMEL is not set + +# +# Wireless 802.11b Pcmcia/Cardbus cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +# CONFIG_AIRO_CS is not set +# CONFIG_PCMCIA_WL3501 is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_CS=m +CONFIG_NET_WIRELESS=y + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + # # ISDN subsystem @@ -381,17 +541,7 @@ CONFIG_INPUT_TSDEV_SCREEN_X=240 CONFIG_INPUT_TSDEV_SCREEN_Y=320 CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVBUG=y - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -CONFIG_SERIO=y -# CONFIG_SERIO_SERPORT is not set -# CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_LIBPS2 is not set -# CONFIG_SERIO_RAW is not set +# CONFIG_INPUT_POWER is not set # # Input Device Drivers @@ -409,6 +559,15 @@ CONFIG_KEYBOARD_LOCOMO=y # CONFIG_INPUT_MISC is not set # +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# # Character devices # CONFIG_VT=y @@ -441,17 +600,26 @@ CONFIG_UNIX98_PTYS=y # # CONFIG_WATCHDOG is not set # CONFIG_NVRAM is not set -# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # # Ftape, the floppy tape device driver # -# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set # CONFIG_RAW_DRIVER is not set # +# TPM devices +# +# CONFIG_TELCLOCK is not set + +# # I2C support # CONFIG_I2C=m @@ -468,54 +636,48 @@ CONFIG_I2C_ALGOBIT=m # I2C Hardware Bus support # # CONFIG_I2C_ELEKTOR is not set -CONFIG_I2C_ISA=m # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_STUB is not set # CONFIG_I2C_PCA_ISA is not set # -# Hardware Sensors Chip support -# -# CONFIG_I2C_SENSOR 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_ASB100 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_FSCHER is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_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_MAX1619 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set - -# -# Other I2C Chip support +# Miscellaneous I2C Chip support # +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set # CONFIG_SENSORS_EEPROM is not set # CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_RTC8564 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_RTC_X1205_I2C is not set +# CONFIG_MAX7310 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 is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP_SA11X0 is not set + +# +# SoC drivers +# +# CONFIG_SOC is not set + +# # Multimedia devices # CONFIG_VIDEO_DEV=m @@ -556,12 +718,87 @@ CONFIG_VIDEO_DEV=m # CONFIG_DVB is not set # +# Graphics support +# +CONFIG_FB=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_MACMODES is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_10x18 is not set + +# +# Logo configuration +# +# CONFIG_LOGO is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +# CONFIG_USB_ARCH_HAS_OHCI is not set +# CONFIG_USB is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# 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 is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_DUALSPEED is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# # 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 @@ -571,10 +808,12 @@ 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 is not set +# CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems @@ -597,15 +836,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_SYSFS=y -CONFIG_DEVFS_FS=y -CONFIG_DEVFS_MOUNT=y -# CONFIG_DEVFS_DEBUG is not set -# CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y -# CONFIG_TMPFS_XATTR is not set # CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set # # Miscellaneous filesystems @@ -620,11 +855,11 @@ CONFIG_RAMFS=y # CONFIG_JFFS_FS is not set CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_JFFS2_FS_NOR_ECC is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_SUMMARY=y # CONFIG_JFFS2_RUBIN is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set @@ -638,12 +873,12 @@ CONFIG_CRAMFS=y # # CONFIG_NFS_FS is not set # CONFIG_NFSD is not set -# CONFIG_EXPORTFS 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 @@ -701,96 +936,25 @@ CONFIG_NLS_UTF8=m # CONFIG_PROFILING is not set # -# Graphics support -# -CONFIG_FB=y -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -# CONFIG_MDA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set - -# -# Logo configuration -# -# CONFIG_LOGO is not set -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# USB support -# -# CONFIG_USB is not set -CONFIG_USB_ARCH_HAS_HCD=y -# CONFIG_USB_ARCH_HAS_OHCI is not set - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -# - -# -# USB Gadget Support -# -CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG_FILES is not set -# CONFIG_USB_GADGET_NET2280 is not set -# CONFIG_USB_GADGET_PXA2XX is not set -# CONFIG_USB_GADGET_GOKU is not set -CONFIG_USB_GADGET_SA1100=y -CONFIG_USB_SA1100=y -# CONFIG_USB_GADGET_LH7A40X is not set -# CONFIG_USB_GADGET_DUMMY_HCD is not set -# CONFIG_USB_GADGET_OMAP is not set -# CONFIG_USB_GADGET_DUALSPEED is not set -# CONFIG_USB_ZERO is not set -# CONFIG_USB_ETH 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 is not set - -# # Kernel hacking # +# CONFIG_PRINTK_TIME is not set CONFIG_DEBUG_KERNEL=y CONFIG_MAGIC_SYSRQ=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHEDSTATS is not set # CONFIG_DEBUG_SLAB is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_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_DEBUG_VM is not set CONFIG_FRAME_POINTER=y +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_DEBUG_USER is not set # CONFIG_DEBUG_WAITQ is not set CONFIG_DEBUG_ERRORS=y @@ -815,6 +979,7 @@ CONFIG_DEBUG_ERRORS=y # Library routines # # CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set CONFIG_CRC32=y # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-cxx00 b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-cxx00 index f838a497a3..b1748c9268 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-cxx00 +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-cxx00 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.13-mm3 -# Fri Sep 16 13:04:01 2005 +# Linux kernel version: 2.6.15-rc2 +# Fri Nov 25 16:39:44 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -64,6 +64,23 @@ CONFIG_OBSOLETE_MODPARM=y CONFIG_KMOD=y # +# Block layer +# + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# # System Type # # CONFIG_ARCH_CLPS7500 is not set @@ -85,6 +102,7 @@ CONFIG_ARCH_PXA=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set # CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_AAEC2000 is not set @@ -105,7 +123,9 @@ CONFIG_MACH_BORZOI=y # CONFIG_MACH_TOSA is not set CONFIG_PXA27x=y # CONFIG_PXA_KEYS is not set +CONFIG_IWMMXT=y CONFIG_PXA_SHARP_Cxx00=y +CONFIG_PXA_SSP=y # # Processor Type @@ -142,14 +162,13 @@ CONFIG_PCMCIA_IOCTL=y # # PC-card bridges # -# CONFIG_TCIC is not set CONFIG_PCMCIA_PXA2XX=y # # Kernel Features # CONFIG_PREEMPT=y -# CONFIG_NO_IDLE_HZ is not set +CONFIG_NO_IDLE_HZ=y # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y @@ -158,6 +177,7 @@ CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 CONFIG_ALIGNMENT_TRAP=y # @@ -165,10 +185,15 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rw debug" +CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rw fbcon=rotate:1 debug" # CONFIG_XIP_KERNEL is not set # +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# # Floating point emulation # @@ -191,6 +216,8 @@ CONFIG_BINFMT_MISC=m # Power management options # CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set CONFIG_APM=y # @@ -220,8 +247,8 @@ CONFIG_SYN_COOKIES=y # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_TUNNEL is not set -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_BIC=y @@ -240,6 +267,11 @@ CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK is not set + +# # IP: Netfilter Configuration # CONFIG_IP_NF_CONNTRACK=m @@ -252,6 +284,7 @@ CONFIG_IP_NF_IRC=m # CONFIG_IP_NF_NETBIOS_NS is not set CONFIG_IP_NF_TFTP=m CONFIG_IP_NF_AMANDA=m +# CONFIG_IP_NF_PPTP is not set CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_LIMIT=m @@ -284,6 +317,7 @@ CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_LOG=m CONFIG_IP_NF_TARGET_ULOG=m CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_TARGET_NFQUEUE is not set CONFIG_IP_NF_NAT=m CONFIG_IP_NF_NAT_NEEDED=y # CONFIG_IP_NF_TARGET_MASQUERADE is not set @@ -329,6 +363,7 @@ CONFIG_IP6_NF_MATCH_EUI64=m 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 @@ -355,6 +390,10 @@ CONFIG_IP6_NF_RAW=m # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# # CONFIG_NET_SCHED is not set CONFIG_NET_CLS_ROUTE=y @@ -362,7 +401,6 @@ CONFIG_NET_CLS_ROUTE=y # Network testing # # CONFIG_NET_PKTGEN is not set -# CONFIG_NETFILTER_NETLINK is not set # CONFIG_HAMRADIO is not set CONFIG_IRDA=m @@ -432,7 +470,6 @@ CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y CONFIG_BT_HCIUART_BCSP=y -CONFIG_BT_HCIUART_BCSP_TXCRC=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m @@ -460,6 +497,11 @@ CONFIG_FW_LOADER=y # CONFIG_DEBUG_DRIVER is not set # +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# # Memory Technology Devices (MTD) # CONFIG_MTD=y @@ -478,6 +520,7 @@ CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set # # RAM/ROM/Flash chip drivers @@ -533,6 +576,11 @@ CONFIG_MTD_NAND_SHARPSL=y # CONFIG_MTD_NAND_NANDSIM is not set # +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# # Parallel port support # # CONFIG_PARPORT is not set @@ -552,14 +600,6 @@ CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_RAM is not set CONFIG_BLK_DEV_RAM_COUNT=16 # 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 # @@ -624,11 +664,6 @@ CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_SAS_ATTRS is not set # -# SCSI Transport Layers -# -# CONFIG_SAS_CLASS is not set - -# # SCSI low-level drivers # # CONFIG_ISCSI_TCP is not set @@ -729,7 +764,6 @@ CONFIG_PCMCIA_SPECTRUM=m CONFIG_HOSTAP=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_CS=m -# CONFIG_ACX is not set CONFIG_NET_WIRELESS=y # @@ -754,17 +788,14 @@ CONFIG_PPP=m # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set # CONFIG_SLIP is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set -# CONFIG_KGDBOE is not set # CONFIG_NETPOLL is not set -# CONFIG_NETPOLL_RX is not set -# CONFIG_NETPOLL_TRAP is not set # CONFIG_NET_POLL_CONTROLLER is not set # @@ -863,23 +894,60 @@ CONFIG_SA1100_RTC=y # PCMCIA character devices # # CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set # CONFIG_RAW_DRIVER is not set # # TPM devices # +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set # # I2C support # -# CONFIG_I2C is not set +CONFIG_I2C=y +# CONFIG_I2C_CHARDEV is not set + +# +# I2C Algorithms +# +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# +CONFIG_I2C_PXA=y +# CONFIG_I2C_PXA_SLAVE is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_PCA_ISA is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_RTC8564 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_RTC_X1205_I2C 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 is not set # CONFIG_HWMON_VID is not set -# CONFIG_HWMON_DEBUG_CHIP is not set # # Misc devices @@ -890,9 +958,17 @@ CONFIG_HWMON=y # # -# SoC drivers +# Multi-Function Devices +# + +# +# LED devices # -# CONFIG_SOC is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_SPITZ=y +CONFIG_LEDS_TRIGGER_TIMER=y # # Multimedia devices @@ -911,15 +987,13 @@ CONFIG_FB=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SOFT_CURSOR=y # CONFIG_FB_MACMODES is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_ELPP is not set +# CONFIG_FB_S1D13XXX is not set CONFIG_FB_PXA=y -# CONFIG_FB_W100 is not set # CONFIG_FB_PXA_PARAMETERS is not set -# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_W100 is not set # CONFIG_FB_VIRTUAL is not set # @@ -928,6 +1002,7 @@ CONFIG_FB_PXA=y # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FONTS=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y @@ -952,14 +1027,84 @@ CONFIG_LCD_DEVICE=y CONFIG_BACKLIGHT_CORGI=y # -# Speakup console speech +# Sound # -# CONFIG_SPEAKUP is not set +CONFIG_SOUND=m # -# Sound +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQ_DUMMY is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +# CONFIG_SND_DEBUG_DETECT is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_VIRMIDI 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_PXA2XX_PCM=m +CONFIG_SND_PXA2XX_AC97=m + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set + +# +# PCMCIA devices +# + +# +# SoC audio support +# +CONFIG_SND_SOC=m + +# +# Soc Platforms +# +CONFIG_SND_PXA2xx_SOC=m +# CONFIG_SND_PXA2xx_SOC_AC97 is not set +CONFIG_SND_PXA2xx_SOC_I2S=m +# CONFIG_SND_PXA2xx_SOC_SSP is not set + +# +# PXA2xx machine support # -# CONFIG_SOUND is not set +# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set +CONFIG_SND_PXA2xx_SOC_CORGI=m + +# +# Soc Codecs +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8731 is not set +CONFIG_SND_SOC_WM8750=m +# CONFIG_SND_SOC_WM8971 is not set + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # USB support @@ -991,15 +1136,16 @@ CONFIG_USB_SL811_CS=m # # USB Device Class drivers # +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m # -# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set @@ -1011,7 +1157,6 @@ CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set # # USB Input Devices @@ -1084,6 +1229,7 @@ CONFIG_USB_MON=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y # CONFIG_USB_SERIAL_AIRPRIME is not set +# CONFIG_USB_SERIAL_ANYDATA is not set CONFIG_USB_SERIAL_BELKIN=m # CONFIG_USB_SERIAL_WHITEHEAT is not set CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m @@ -1137,7 +1283,6 @@ CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m CONFIG_USB_LED=m CONFIG_USB_CYTHERM=m -# CONFIG_USB_GOTEMP is not set CONFIG_USB_PHIDGETKIT=m CONFIG_USB_PHIDGETSERVO=m CONFIG_USB_IDMOUSE=m @@ -1176,7 +1321,6 @@ CONFIG_USB_G_SERIAL=m CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set CONFIG_MMC_BLOCK=y -# CONFIG_MMC_BULKTRANSFER is not set CONFIG_MMC_PXA=y # CONFIG_MMC_WBSD is not set @@ -1184,21 +1328,16 @@ CONFIG_MMC_PXA=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_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISER4_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set -CONFIG_FS_POSIX_ACL=y +# CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set -# CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y @@ -1233,14 +1372,12 @@ CONFIG_TMPFS=y # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_RELAYFS_FS is not set -# CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set -# CONFIG_ASFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set @@ -1250,6 +1387,7 @@ CONFIG_RAMFS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_COMPRESSION_OPTIONS=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y @@ -1283,7 +1421,10 @@ CONFIG_RPCSEC_GSS_KRB5=m CONFIG_SMB_FS=m CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp437" -# CONFIG_CIFS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -1366,7 +1507,7 @@ CONFIG_OPROFILE=m CONFIG_DEBUG_KERNEL=y CONFIG_MAGIC_SYSRQ=y CONFIG_LOG_BUF_SHIFT=14 -CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_DETECT_SOFTLOCKUP is not set # CONFIG_SCHEDSTATS is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_PREEMPT is not set @@ -1376,12 +1517,13 @@ CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set CONFIG_FRAME_POINTER=y +# CONFIG_RCU_TORTURE_TEST is not set # 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 +# CONFIG_DEBUG_LL is not set # # Security options diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-ipaq-pxa270 b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-ipaq-pxa270 index 8b41380784..fe4cf247c1 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-ipaq-pxa270 +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-ipaq-pxa270 @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.11 -# Thu Apr 14 17:15:01 2005 +# Linux kernel version: 2.6.15-rc1-git7 +# Sat Nov 19 23:13:51 2005 # CONFIG_ARM=y CONFIG_MMU=y CONFIG_UID16=y CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -18,36 +17,40 @@ CONFIG_EXPERIMENTAL=y CONFIG_BROKEN=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y # CONFIG_SWAP is not set # CONFIG_SYSVIPC is not set # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set -# CONFIG_MINIMAL_OOPS is not set +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_USELIB=y -CONFIG_CORE_DUMP=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 @@ -61,6 +64,23 @@ CONFIG_OBSOLETE_MODPARM=y # CONFIG_KMOD is not set # +# Block layer +# + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# # System Type # # CONFIG_ARCH_CLPS7500 is not set @@ -82,120 +102,202 @@ CONFIG_ARCH_PXA=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set # CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_AAEC2000 is not set # # Intel PXA2xx Implementations # -# CONFIG_PXA25x is not set -CONFIG_PXA27x=y # CONFIG_ARCH_LUBBOCK is not set # CONFIG_MACH_MAINSTONE is not set # CONFIG_ARCH_PXA_IDP is not set -CONFIG_PXA_KEYS=y -# CONFIG_ARCH_ESERIES is not set -# CONFIG_MACH_A620 is not set -# CONFIG_ARCH_H1900 is not set -# CONFIG_ARCH_H2200 is not set -# CONFIG_ARCH_H3900 is not set -# CONFIG_MACH_H4000 is not set -# CONFIG_MACH_H4700 is not set +# CONFIG_PXA_SHARPSL is not set CONFIG_MACH_HX2750=y -# CONFIG_ARCH_H5400 is not set -# CONFIG_MACH_HIMALAYA is not set -# CONFIG_ARCH_AXIMX5 is not set -# CONFIG_ARCH_AXIMX3 is not set -# CONFIG_ARCH_ROVERP1 is not set -# CONFIG_ARCH_ROVERP5P is not set - -# -# Linux As Bootloader -# -# CONFIG_LAB is not set +CONFIG_PXA27x=y +CONFIG_PXA_KEYS=y +CONFIG_PXA_SSP=y # # Processor Type # CONFIG_CPU_32=y CONFIG_CPU_XSCALE=y -# CONFIG_CPU_XSCALE_PXA250 is not set CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5T=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_MINICACHE=y # # Processor Features # -# CONFIG_ARM_FASTCALL is not set CONFIG_ARM_THUMB=y CONFIG_XSCALE_PMU=y # -# Compaq/iPAQ Options +# Bus support # -CONFIG_PXA_IPAQ=y +CONFIG_ISA_DMA_API=y # -# XScale-based iPAQ +# PCCARD (PCMCIA/CardBus) support # -CONFIG_IPAQ_HANDHELD=y -# CONFIG_IPAQ_SLEEVE is not set -# CONFIG_IPAQ_SAMCOP is not set -# CONFIG_IPAQ_HAMCOP is not set +CONFIG_PCCARD=y +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_IOCTL=y # -# General setup +# PC-card bridges +# +CONFIG_PCMCIA_PXA2XX=y + +# +# Kernel Features +# +CONFIG_PREEMPT=y +CONFIG_NO_IDLE_HZ=y +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="keepinitrd" # CONFIG_XIP_KERNEL is not set # -# PCCARD (PCMCIA/CardBus) support +# CPU Frequency scaling # -CONFIG_PCCARD=y -# CONFIG_PCMCIA_DEBUG is not set -CONFIG_PCMCIA=y +# CONFIG_CPU_FREQ is not set # -# PC-card bridges +# Floating point emulation # -# CONFIG_TCIC is not set -CONFIG_PCMCIA_PXA2XX=y # -# At least one math emulation must be selected +# At least one emulation must be selected # CONFIG_FPE_NWFPE=y # CONFIG_FPE_NWFPE_XP is not set # CONFIG_FPE_FASTFPE is not set + +# +# Userspace binary formats +# CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set +CONFIG_APM=y + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_CRYPT_CCMP is not set +# CONFIG_IEEE80211_CRYPT_TKIP is not set + +# +# Device Drivers +# # # Generic Driver Options # CONFIG_STANDALONE=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set -# CONFIG_FW_LOADER is not set -CONFIG_SOC_DEVICE=y -CONFIG_DOCKING_HOTPLUG=y +CONFIG_FW_LOADER=y # CONFIG_DEBUG_DRIVER is not set -CONFIG_PM=y -CONFIG_PREEMPT=y -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd" -CONFIG_ALIGNMENT_TRAP=y # -# Parallel port support +# Connector - unified userspace <-> kernelspace linker # -# CONFIG_PARPORT is not set +# CONFIG_CONNECTOR is not set # # Memory Technology Devices (MTD) @@ -216,6 +318,7 @@ CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set # # RAM/ROM/Flash chip drivers @@ -254,10 +357,7 @@ CONFIG_MTD_CFI_UTIL=y # # CONFIG_MTD_COMPLEX_MAPPINGS is not set # CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_MULTI_PHYSMAP is not set # CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_IPAQ=y -# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_SHARP_SL is not set # CONFIG_MTD_PLATRAM is not set @@ -283,13 +383,22 @@ CONFIG_MTD_IPAQ=y # CONFIG_MTD_NAND is not set # +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# # Plug and Play support # # # Block devices # -# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set @@ -298,85 +407,64 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=8192 CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" # CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set # -# IO Schedulers +# ATA/ATAPI/MFM/RLL support # -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_ATA_OVER_ETH is not set +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y # -# Multi-device support (RAID and LVM) +# Please see Documentation/ide.txt for help/info on IDE drives # -# CONFIG_MD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_IDE_TASK_IOCTL is not set # -# Networking support +# IDE chipset support/bugfixes # -CONFIG_NET=y +CONFIG_IDE_GENERIC=y +# CONFIG_IDE_ARM is not set +# CONFIG_BLK_DEV_IDEDMA is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_HD is not set # -# Networking options +# SCSI device support # -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -# CONFIG_NETLINK_DEV is not set -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_IP_TCPDIAG=y -# CONFIG_IP_TCPDIAG_IPV6 is not set -# CONFIG_IPV6 is not set -# CONFIG_NETFILTER is not set +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set # -# SCTP Configuration (EXPERIMENTAL) +# Multi-device support (RAID and LVM) # -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -# CONFIG_BRIDGE is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set +# CONFIG_MD is not set # -# QoS and/or fair queueing +# Fusion MPT device support # -# CONFIG_NET_SCHED is not set -# CONFIG_NET_CLS_ROUTE is not set +# CONFIG_FUSION is not set # -# Network testing +# IEEE 1394 (FireWire) support +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# + +# +# Network device support # -# CONFIG_NET_PKTGEN is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set # CONFIG_BONDING is not set @@ -384,11 +472,17 @@ CONFIG_NETDEVICES=y # CONFIG_TUN is not set # +# PHY device support +# +# CONFIG_PHYLIB is not set + +# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y -# CONFIG_MII is not set +CONFIG_MII=m # CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set # # Ethernet (1000 Mbit) @@ -405,67 +499,70 @@ CONFIG_NET_ETHERNET=y # # Wireless LAN (non-hamradio) # -# CONFIG_NET_RADIO is not set -# CONFIG_HOSTAP is not set - -# -# PCMCIA network device support -# -# CONFIG_NET_PCMCIA is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_SHAPER is not set -# CONFIG_NETCONSOLE is not set +CONFIG_NET_RADIO=y # -# ATA/ATAPI/MFM/RLL support +# Obsolete Wireless cards support (pre-802.11) # -CONFIG_IDE=y -CONFIG_BLK_DEV_IDE=y +# CONFIG_STRIP is not set +# CONFIG_PCMCIA_WAVELAN is not set +# CONFIG_PCMCIA_NETWAVE is not set # -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_IDE_TASK_IOCTL is not set - -# -# IDE chipset support/bugfixes +# Wireless 802.11 Frequency Hopping cards support # -CONFIG_IDE_GENERIC=y -# CONFIG_IDE_ARM is not set -# CONFIG_BLK_DEV_IDEDMA is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_HD is not set +# CONFIG_PCMCIA_RAYCS is not set # -# SCSI device support +# Wireless 802.11b ISA/PCI cards support # -# CONFIG_SCSI is not set +# CONFIG_AIRO is not set +CONFIG_HERMES=m +# CONFIG_ATMEL is not set # -# Fusion MPT device support +# Wireless 802.11b Pcmcia/Cardbus cards support # +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +# CONFIG_AIRO_CS is not set +# CONFIG_PCMCIA_WL3501 is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_CS=m +CONFIG_NET_WIRELESS=y # -# IEEE 1394 (FireWire) support +# PCMCIA network device support # -# CONFIG_IEEE1394 is not set +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_AXNET is not set # -# I2O device support +# Wan interfaces # +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set # # ISDN subsystem @@ -488,13 +585,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_TSDEV is not set CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set +# CONFIG_INPUT_POWER is not set # # Input Device Drivers @@ -504,10 +595,19 @@ CONFIG_SOUND_GAMEPORT=y # 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_TSC2101=y # CONFIG_INPUT_MISC is not set # +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# # Character devices # CONFIG_VT=y @@ -523,7 +623,6 @@ CONFIG_HW_CONSOLE=y # # Non-8250 serial port support # -# CONFIG_SERIAL_DZ is not set CONFIG_SERIAL_PXA=y CONFIG_SERIAL_PXA_CONSOLE=y CONFIG_SERIAL_CORE=y @@ -533,21 +632,6 @@ CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # -# I2C support -# -# CONFIG_I2C is not set - -# -# L3 serial bus support -# -# CONFIG_L3 is not set - -# -# Mice -# -# CONFIG_BUSMOUSE is not set - -# # IPMI # # CONFIG_IPMI_HANDLER is not set @@ -557,30 +641,50 @@ CONFIG_LEGACY_PTY_COUNT=256 # # CONFIG_WATCHDOG is not set # CONFIG_NVRAM is not set -# CONFIG_RTC is not set +# CONFIG_SA1100_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # # Ftape, the floppy tape device driver # -# CONFIG_DRM is not set # # PCMCIA character devices # # CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set # CONFIG_RAW_DRIVER is not set # -# SoC drivers +# TPM devices # -# CONFIG_SOC_MQ11XX is not set -# CONFIG_SOC_T7L66XB is not set -# CONFIG_SOC_TC6393XB is not set -# CONFIG_SOC_ASIC2 is not set -# CONFIG_SOC_ASIC3 is not set -CONFIG_SOC_TSC2101=y +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Hardware Monitoring support +# +CONFIG_HWMON is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# + +# +# Multi-Function Devices +# +CONFIG_MFD_TSC2101=y # # Multimedia devices @@ -593,25 +697,92 @@ CONFIG_SOC_TSC2101=y # CONFIG_DVB is not set # +# Graphics support +# +CONFIG_FB=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA=y +# CONFIG_FB_PXA_PARAMETERS is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +# CONFIG_LOGO 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 +CONFIG_BACKLIGHT_HX2750=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_BLOCK=y +CONFIG_MMC_PXA=y +# CONFIG_MMC_WBSD is not set + +# # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set - -# -# XFS support -# +# CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y # CONFIG_QUOTA is not set CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems @@ -634,12 +805,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_PROC_FS=y CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set # CONFIG_TMPFS is not set # CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set # # Miscellaneous filesystems @@ -655,12 +825,12 @@ CONFIG_RAMFS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_SUMMARY is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_SUMMARY=y # CONFIG_JFFS2_RUBIN is not set -# CONFIG_JFFS3_FS is not set -# CONFIG_JFFS3_COMPRESSION_OPTIONS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set @@ -678,6 +848,7 @@ CONFIG_CRAMFS=y # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set # # Partition Types @@ -749,94 +920,25 @@ CONFIG_NLS_UTF8=y # CONFIG_PROFILING is not set # -# Graphics support -# -CONFIG_FB=y -# CONFIG_FB_MODES is not set -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_VSFB is not set -# CONFIG_FB_IMAGEON is not set -CONFIG_FB_PXA=y -# CONFIG_FB_W100 is not set -# CONFIG_FB_PXA_PARAMETERS is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y - -# -# Logo configuration -# -# CONFIG_LOGO 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 -CONFIG_BACKLIGHT_HX2750=y - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# -# CONFIG_BATTERY_MONITOR is not set - -# -# Dallas's 1-wire bus -# -# CONFIG_W1 is not set - -# -# USB support -# -# CONFIG_USB is not set -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -CONFIG_MMC=y -# CONFIG_MMC_DEBUG is not set -CONFIG_MMC_BLOCK=y -CONFIG_MMC_PXA=y -# CONFIG_MMC_TMIO is not set - -# # Kernel hacking # +# CONFIG_PRINTK_TIME is not set CONFIG_DEBUG_KERNEL=y # CONFIG_MAGIC_SYSRQ is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHEDSTATS is not set # CONFIG_DEBUG_SLAB is not set CONFIG_DEBUG_PREEMPT=y # 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_DEBUG_VM is not set CONFIG_FRAME_POINTER=y +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_DEBUG_USER is not set # CONFIG_DEBUG_WAITQ is not set CONFIG_DEBUG_ERRORS=y @@ -861,6 +963,7 @@ CONFIG_CRYPTO=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 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set @@ -869,7 +972,7 @@ CONFIG_CRYPTO=y # 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_ARC4=m # CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_ANUBIS is not set CONFIG_CRYPTO_DEFLATE=y @@ -884,7 +987,8 @@ CONFIG_CRYPTO_CRC32C=y # # Library routines # -# CONFIG_CRC_CCITT is not set +CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set CONFIG_CRC32=y CONFIG_LIBCRC32C=y CONFIG_ZLIB_INFLATE=y diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-poodle b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-poodle index a0810f8381..34e9ddfb86 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-poodle +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-poodle @@ -259,8 +259,8 @@ CONFIG_INITRAMFS_SOURCE="" # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m # CONFIG_ATA_OVER_ETH is not set # @@ -375,15 +375,20 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # -# CONFIG_HERMES is not set +CONFIG_HERMES=m # CONFIG_ATMEL is not set # # Wireless 802.11b Pcmcia/Cardbus cards support # +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m # CONFIG_AIRO_CS is not set # CONFIG_PCMCIA_WL3501 is not set -CONFIG_NET_WIRELESS=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_CS=m +CONFIG_NET_WIRELESS=yt # # PCMCIA network device support @@ -407,7 +412,7 @@ CONFIG_PPP=m # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m # CONFIG_PPPOE is not set # CONFIG_SLIP is not set @@ -711,6 +716,7 @@ CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_NAND=y # CONFIG_JFFS2_FS_NOR_ECC is not set CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RUBIN=y diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-tosa b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-tosa index dd1e70fa03..0c39ed8544 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/defconfig-tosa +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/defconfig-tosa @@ -150,7 +150,7 @@ CONFIG_PCMCIA_PXA2XX=y # Kernel Features # CONFIG_PREEMPT=y -# CONFIG_NO_IDLE_HZ is not set +CONFIG_NO_IDLE_HZ=y # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y @@ -558,9 +558,9 @@ CONFIG_BLK_DEV_RAM_COUNT=16 # IO Schedulers # CONFIG_IOSCHED_NOOP=y -# CONFIG_IOSCHED_AS is not set -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=m +CONFIG_IOSCHED_CFQ=m # CONFIG_ATA_OVER_ETH is not set # @@ -710,15 +710,19 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # -# CONFIG_HERMES is not set +CONFIG_HERMES=m # CONFIG_ATMEL is not set # # Wireless 802.11b Pcmcia/Cardbus cards support # +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m # CONFIG_AIRO_CS is not set # CONFIG_PCMCIA_WL3501 is not set -# CONFIG_HOSTAP is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_CS=m CONFIG_NET_WIRELESS=y # @@ -743,7 +747,7 @@ CONFIG_PPP=m # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m # CONFIG_PPP_MPPE is not set # CONFIG_PPPOE is not set @@ -900,41 +904,7 @@ CONFIG_I2C_PXA=y # # 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 +# CONFIG_HWMON is not set # # Misc devices @@ -1368,6 +1338,7 @@ CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RUBIN=y diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/dtl1_cs-add-socket-revE.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/dtl1_cs-add-socket-revE.patch index 9fe3bd06d3..9fe3bd06d3 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/dtl1_cs-add-socket-revE.patch +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/dtl1_cs-add-socket-revE.patch diff --git a/packages/linux/linux-openzaurus-2.6.14-rc1/pxa-serial-hack.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/pxa-serial-hack.patch index 7892a0f929..b3a7f786ea 100644 --- a/packages/linux/linux-openzaurus-2.6.14-rc1/pxa-serial-hack.patch +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/pxa-serial-hack.patch @@ -1,8 +1,8 @@ -Index: linux-2.6.13/drivers/serial/8250.c +Index: linux-2.6.14/drivers/serial/8250.c =================================================================== ---- linux-2.6.13.orig/drivers/serial/8250.c 2005-09-15 09:26:00.000000000 +0100 -+++ linux-2.6.13/drivers/serial/8250.c 2005-09-15 09:28:49.000000000 +0100 -@@ -2312,7 +2312,12 @@ +--- linux-2.6.14.orig/drivers/serial/8250.c 2005-11-07 18:10:50.000000000 +0000 ++++ linux-2.6.14/drivers/serial/8250.c 2005-11-07 19:01:21.000000000 +0000 +@@ -2333,7 +2333,12 @@ .devfs_name = "tts/", .dev_name = "ttyS", .major = TTY_MAJOR, @@ -15,20 +15,11 @@ Index: linux-2.6.13/drivers/serial/8250.c .nr = UART_NR, .cons = SERIAL8250_CONSOLE, }; -Index: linux-2.6.13/drivers/serial/serial_core.c +Index: linux-2.6.14/drivers/serial/serial_core.c =================================================================== ---- linux-2.6.13.orig/drivers/serial/serial_core.c 2005-09-15 09:26:00.000000000 +0100 -+++ linux-2.6.13/drivers/serial/serial_core.c 2005-09-15 09:30:16.000000000 +0100 -@@ -1969,7 +1969,7 @@ - } - - printk(KERN_INFO "%s%d at %s (irq = %d) is a %s\n", -- drv->dev_name, port->line, address, port->irq, uart_type(port)); -+ drv->dev_name, port->line + drv->name_base, address, port->irq, uart_type(port)); - } - - static void -@@ -2133,6 +2133,7 @@ +--- linux-2.6.14.orig/drivers/serial/serial_core.c 2005-11-07 18:10:50.000000000 +0000 ++++ linux-2.6.14/drivers/serial/serial_core.c 2005-11-07 19:01:21.000000000 +0000 +@@ -2126,6 +2126,7 @@ normal->driver_name = drv->driver_name; normal->devfs_name = drv->devfs_name; normal->name = drv->dev_name; @@ -36,11 +27,11 @@ Index: linux-2.6.13/drivers/serial/serial_core.c normal->major = drv->major; normal->minor_start = drv->minor; normal->type = TTY_DRIVER_TYPE_SERIAL; -Index: linux-2.6.13/include/linux/serial_core.h +Index: linux-2.6.14/include/linux/serial_core.h =================================================================== ---- linux-2.6.13.orig/include/linux/serial_core.h 2005-09-15 09:26:03.000000000 +0100 -+++ linux-2.6.13/include/linux/serial_core.h 2005-09-15 09:28:49.000000000 +0100 -@@ -318,6 +318,7 @@ +--- linux-2.6.14.orig/include/linux/serial_core.h 2005-11-07 18:10:56.000000000 +0000 ++++ linux-2.6.14/include/linux/serial_core.h 2005-11-07 19:01:21.000000000 +0000 +@@ -322,6 +322,7 @@ const char *driver_name; const char *dev_name; const char *devfs_name; @@ -48,11 +39,11 @@ Index: linux-2.6.13/include/linux/serial_core.h int major; int minor; int nr; -Index: linux-2.6.13/drivers/serial/serial_cs.c +Index: linux-2.6.14/drivers/serial/serial_cs.c =================================================================== ---- linux-2.6.13.orig/drivers/serial/serial_cs.c 2005-09-15 09:26:00.000000000 +0100 -+++ linux-2.6.13/drivers/serial/serial_cs.c 2005-09-15 09:28:49.000000000 +0100 -@@ -298,7 +298,7 @@ +--- linux-2.6.14.orig/drivers/serial/serial_cs.c 2005-10-28 01:02:08.000000000 +0100 ++++ linux-2.6.14/drivers/serial/serial_cs.c 2005-11-07 19:01:21.000000000 +0000 +@@ -294,7 +294,7 @@ kio_addr_t iobase, int irq) { struct uart_port port; @@ -61,7 +52,7 @@ Index: linux-2.6.13/drivers/serial/serial_cs.c memset(&port, 0, sizeof (struct uart_port)); port.iobase = iobase; -@@ -315,10 +315,16 @@ +@@ -311,10 +311,16 @@ return -EINVAL; } diff --git a/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch new file mode 100644 index 0000000000..18bf4268fc --- /dev/null +++ b/packages/linux/linux-openzaurus-2.6.14+2.6.15-rc2/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch @@ -0,0 +1,155 @@ + +From: Petr Vandrovec <vandrove@vc.cvut.cz> + +Patch below adds support for using different prescaler than 16 for 16c950 +chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash +card, which comes (apparently) with 806kHz clocks, and so you have to +program prescaler for division by 7, and DLAB to 1, to get 115200Bd. + +To get card properly running you also have to add lines below to +/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but +50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code +specifying baud_rate in serial_cs, I assume that specifying it in +serial.opts is right way to do this type of things. + +Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible +baud rate passed to uart code was uartclk / 16 while correct value for +these devices (and for 16c950) is uartclk / 4. + +Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with +baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such +devices exist, but we should not ignore spd_cust, user probably knows why +he asked for spd_cust. + +serial.opts: + +case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in +'0279,950b-2-GPRS Modem---') + SERIAL_OPTS="baud_base 50400" + ;; +esac + +Cc: David Woodhouse <dwmw2@infradead.org> +Signed-off-by: Andrew Morton <akpm@osdl.org> +--- + + drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++----------- + 1 files changed, 64 insertions(+), 18 deletions(-) + +diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c +--- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700 ++++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700 +@@ -1653,24 +1653,58 @@ static void serial8250_shutdown(struct u + serial_unlink_irq_chain(up); + } + +-static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud) ++static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud, ++ unsigned int *prescaler) + { +- unsigned int quot; +- +- /* +- * Handle magic divisors for baud rates above baud_base on +- * SMSC SuperIO chips. ++ /* ++ * Use special handling only if user did not supply its own divider. ++ * spd_cust is defined in terms of baud_base, so always use default ++ * prescaler when spd_cust is requested. + */ +- if ((port->flags & UPF_MAGIC_MULTIPLIER) && +- baud == (port->uartclk/4)) +- quot = 0x8001; +- else if ((port->flags & UPF_MAGIC_MULTIPLIER) && +- baud == (port->uartclk/8)) +- quot = 0x8002; +- else +- quot = uart_get_divisor(port, baud); + +- return quot; ++ *prescaler = 16; ++ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) { ++ unsigned int quot = port->uartclk / baud; ++ ++ /* ++ * Handle magic divisors for baud rates above baud_base on ++ * SMSC SuperIO chips. ++ */ ++ if (port->flags & UPF_MAGIC_MULTIPLIER) { ++ if (quot == 4) { ++ return 0x8001; ++ } else if (quot == 8) { ++ return 0x8002; ++ } ++ } ++ if (port->type == PORT_16C950) { ++ /* ++ * This computes TCR value (4 to 16), not CPR value (which can ++ * be between 1.000 and 31.875) - chip I have uses XTAL of ++ * 806400Hz, and so a division by 7 is required to get 115200Bd. ++ * I'm leaving CPR disabled for now, until someone will ++ * hit even more exotic XTAL (it is needed to get 500kbps ++ * or 1000kbps from 18.432MHz XTAL, but I have no device ++ * which would benefit from doing that). ++ * ++ * If we can use divide by 16, use it. Otherwise look for ++ * better prescaler, from 15 to 4. If quotient cannot ++ * be divided by any integer value between 4 and 15, use 4. ++ */ ++ if (quot & 0x0F) { ++ unsigned int div; ++ ++ for (div = 15; div > 4; div--) { ++ if (quot % div == 0) { ++ break; ++ } ++ } ++ *prescaler = div; ++ return quot / div; ++ } ++ } ++ } ++ return uart_get_divisor(port, baud); + } + + static void +@@ -1680,7 +1714,7 @@ serial8250_set_termios(struct uart_port + struct uart_8250_port *up = (struct uart_8250_port *)port; + unsigned char cval, fcr = 0; + unsigned long flags; +- unsigned int baud, quot; ++ unsigned int baud, quot, prescaler; + + switch (termios->c_cflag & CSIZE) { + case CS5: +@@ -1712,8 +1746,13 @@ serial8250_set_termios(struct uart_port + /* + * Ask the core to calculate the divisor for us. + */ +- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); +- quot = serial8250_get_divisor(port, baud); ++ ++ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) { ++ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4); ++ } else { ++ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); ++ } ++ quot = serial8250_get_divisor(port, baud, &prescaler); + + /* + * Oxford Semi 952 rev B workaround +@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port + serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */ + + /* ++ * Program prescaler for 16C950 chips. ++ */ ++ if (up->port.type == PORT_16C950) { ++ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler); ++ } ++ ++ /* + * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR + * is written without DLAB set, this mode will be disabled. + */ +_ diff --git a/packages/linux/linux-openzaurus.inc b/packages/linux/linux-openzaurus.inc index cb43f5aef1..4bd71d7601 100644 --- a/packages/linux/linux-openzaurus.inc +++ b/packages/linux/linux-openzaurus.inc @@ -3,7 +3,7 @@ SECTION = "kernel" MAINTAINER = "Richard Purdie <rpurdie@rpsys.net>, Michael 'Mickey' Lauer <mickey@vanille.de>" LICENSE = "GPL" -DOSRC = "http://www.do13.in-berlin.de/openzaurus/patches" +DOSRC = "http://www.do13.de/openzaurus/patches" RPSRC = "http://www.rpsys.net/openzaurus/patches" JLSRC = "http://www.cs.wisc.edu/~lenz/zaurus/files" BASRC = "http://www.orca.cx/zaurus/patches" @@ -21,8 +21,8 @@ COMPATIBLE_HOST = "arm.*-linux" CMDLINE_CON = "console=ttyS0,115200n8 console=tty1 noinitrd" CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 " -CMDLINE_ROOT_poodle = "root=/dev/mtdblock1 rootfstype=jffs2 " CMDLINE_ROOT_spitz = "root=/dev/hda1 rootfstype=ext3 rw " +CMDLINE_ROOT_borzoi = "root=/dev/hda1 rootfstype=ext3 rw " ############################################################## # Configure memory/ramdisk split for collie @@ -93,9 +93,10 @@ do_configure() { do_compile_append() { case ${MACHINE} in c7x0 | akita | poodle | spitz | borzoi | tosa ) - size=`ls arch/${ARCH}/boot/${KERNEL_IMAGETYPE} -s | cut -d ' ' -f 1` - if [ $size -ge 1271 ]; then + size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'` + if [ $size -ge 1302000 ]; then rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE} + echo "Size is $size" die "This kernel is too big for your PXA Zaurus and will destroy data if you flash it. Please reduce the size of the kernel by making more of it modular." fi ;; diff --git a/packages/linux/linux-openzaurus_2.6.14+2.6.15-rc2.bb b/packages/linux/linux-openzaurus_2.6.14+2.6.15-rc2.bb new file mode 100644 index 0000000000..9687967d92 --- /dev/null +++ b/packages/linux/linux-openzaurus_2.6.14+2.6.15-rc2.bb @@ -0,0 +1,94 @@ +include linux-openzaurus.inc + +PR = "r2" + +#DEFAULT_PREFERENCE = "-1" + +# Handy URLs +# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \ +# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz \ +# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.15-rc1.bz2;patch=1 \ +# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.15-rc2-git1.bz2;patch=1 \ +# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \ +# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1 \ + +# Patches submitted upstream are towards top of this list +# Hacks should clearly named and at the bottom +SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.15-rc2.tar.bz2 \ + ${RPSRC}/pxa_ohci_platform-r5.patch;patch=1 \ + ${RPSRC}/pxa_ohci_suspend-r5.patch;patch=1 \ + ${RPSRC}/pxa_ohci_fixes-r0.patch;patch=1 \ + ${RPSRC}/spitz_ohci-r0.patch;patch=1 \ + ${RPSRC}/enable_iwmmxt-r0.patch;patch=1 \ + ${RPSRC}/pxa_i2c_fixes-r4.patch;patch=1 \ + ${RPSRC}/ide_not_removable-r0.patch;patch=1 \ + ${RPSRC}/led_core-r0.patch;patch=1 \ + ${RPSRC}/led_triggers-r0.patch;patch=1 \ + ${RPSRC}/led_trig_timer-r0.patch;patch=1 \ + ${RPSRC}/led_zaurus-r0.patch;patch=1 \ + ${RPSRC}/led_locomo-r0.patch;patch=1 \ + ${RPSRC}/led_ide-r0.patch;patch=1 \ + ${RPSRC}/led_nand-r0.patch;patch=1 \ + ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \ + ${RPSRC}/pxa_rtc-r2.patch;patch=1 \ + ${RPSRC}/input_power-r4.patch;patch=1 \ + ${RPSRC}/arm_apm_pm_legacy-r1.patch;patch=1 \ + ${RPSRC}/collie_mtd_sharp-r0.patch;patch=1 \ + ${RPSRC}/jffs2_longfilename-r0.patch;patch=1 \ + ${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \ + ${RPSRC}/ipaq/hx2750_base-r24.patch;patch=1 \ + ${RPSRC}/ipaq/hx2750_bl-r4.patch;patch=1 \ + ${RPSRC}/ipaq/hx2750_pcmcia-r2.patch;patch=1 \ + ${RPSRC}/ipaq/pxa_keys-r5.patch;patch=1 \ + ${RPSRC}/ipaq/tsc2101-r12.patch;patch=1 \ + ${RPSRC}/ipaq/hx2750_test1-r3.patch;patch=1 \ + ${DOSRC}/tosa-platform-device-r0.patch;patch=1 \ + ${DOSRC}/tc6393-device-r8.patch;patch=1 \ + ${DOSRC}/tc6393_nand-r7.patch;patch=1 \ + ${DOSRC}/tosa-keyboard-r9.patch;patch=1 \ + ${DOSRC}/tosa-pxaac97-r5.patch;patch=1 \ + ${DOSRC}/tosa-tc6393-r1.patch;patch=1 \ + ${DOSRC}/tosa-power-r9.patch;patch=1 \ + ${DOSRC}/tc6393fb-r9.patch;patch=1 \ + ${DOSRC}/tosa-lcd-r6.patch;patch=1 \ + ${DOSRC}/tosa-bl-r9.patch;patch=1 \ + ${DOSRC}/tosa-bluetooth-r2.patch;patch=1 \ + ${RPSRC}/pcmcia_dev_ids-r2.patch;patch=1 \ + ${RPSRC}/mmc_timeout-r0.patch;patch=1 \ + ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1 \ + ${RPSRC}/alsa/alsa-soc-0.7.patch;patch=1 \ + ${RPSRC}/alsa_snd_corgi-r2.patch;patch=1 \ + ${RPSRC}/soc_platform_upd-r1.patch;patch=1 \ + file://add-oz-release-string.patch;patch=1 \ + file://pxa-serial-hack.patch;patch=1 \ + ${RPSRC}/jl1/pxa-linking-bug.patch;patch=1 \ + file://dtl1_cs-add-socket-revE.patch;patch=1 \ + file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \ + file://connectplus-remove-ide-HACK.patch;patch=1 \ + file://defconfig-c7x0 \ + file://defconfig-ipaq-pxa270 \ + file://defconfig-collie \ + file://defconfig-poodle \ + file://defconfig-cxx00 \ + file://defconfig-tosa " + +# Old things we don't care about anymore +# ${RPSRC}/corgi_snd-r14.patch;patch=1 \ +# file://add-elpp-stuff.patch;patch=1 + +# These patches would really help collie/poodle but we +# need someone to maintain them +# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1 +# (Pavel Machek's git tree has updated versions of this?) +# Also parts were recently committed to mainline by rmk (drivers/mfd/) +# ${JLSRC}/zaurus-base-2.6.11.diff.gz;patch=1 +# (This is mostly in mainline now?) +# ${JLSRC}/zaurus-local-2.6.11.diff.gz;patch=1 \ +# ${JLSRC}/zaurus-leds-2.6.11.diff.gz;patch=1 \ + +SRC_URI_append_tosa = "${DOSRC}/nand-readid-r1.patch;patch=1 \ + ${DOSRC}/ac97codec-rename-revert-r0.patch;patch=1 \ + ${DOSRC}/wm97xx-touch-lg2-r0.patch;patch=1 \ + ${DOSRC}/wm9712-pm-r0.patch;patch=1 " + +S = "${WORKDIR}/linux-2.6.15-rc2" diff --git a/packages/linux/linux-openzaurus_2.6.14-git3.bb b/packages/linux/linux-openzaurus_2.6.14-git3.bb index c5552f2b83..c30c207eac 100644 --- a/packages/linux/linux-openzaurus_2.6.14-git3.bb +++ b/packages/linux/linux-openzaurus_2.6.14-git3.bb @@ -1,8 +1,8 @@ include linux-openzaurus.inc -PR = "r4" +PR = "r6" -DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE = "+1" # Handy URLs # http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \ @@ -16,38 +16,37 @@ DEFAULT_PREFERENCE = "-1" # Hacks should clearly named and at the bottom SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz \ http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.14-git3.bz2;patch=1 \ - ${RPSRC}/revert_bootmem-r1.patch;patch=1 \ - ${RPSRC}/pxa_pmops_static-r2.patch;patch=1 \ - ${RPSRC}/pxa_ohci_platform-r2.patch;patch=1 \ - ${RPSRC}/pxa_ohci_suspend-r2.patch;patch=1 \ - ${RPSRC}/akita_mtd_fix-r0.patch;patch=1 \ - ${RPSRC}/spitz_cf-r7.patch;patch=1 \ - ${RPSRC}/sharpsl_pm-r12.patch;patch=1 \ - ${RPSRC}/corgi_pm-r5.patch;patch=1 \ - ${RPSRC}/spitz_pm-r8.patch;patch=1 \ - ${RPSRC}/spitz_base_extras-r11.patch;patch=1 \ - ${RPSRC}/max7310-r1.patch;patch=1 \ + ${RPSRC}/archive/revert_bootmem-r1.patch;patch=1 \ + ${RPSRC}/archive/pxa_pmops_static-r2.patch;patch=1 \ + ${RPSRC}/archive/pxa_ohci_platform-r2.patch;patch=1 \ + ${RPSRC}/archive/pxa_ohci_suspend-r2.patch;patch=1 \ + ${RPSRC}/archive/akita_mtd_fix-r0.patch;patch=1 \ + ${RPSRC}/archive/spitz_cf-r7.patch;patch=1 \ + ${RPSRC}/archive/sharpsl_pm-r12.patch;patch=1 \ + ${RPSRC}/archive/corgi_pm-r5.patch;patch=1 \ + ${RPSRC}/archive/spitz_pm-r8.patch;patch=1 \ + ${RPSRC}/archive/spitz_base_extras-r12.patch;patch=1 \ ${RPSRC}/enable_iwmmxt-r0.patch;patch=1 \ - ${RPSRC}/pxa_i2c_fixes-r3.patch;patch=1 \ + ${RPSRC}/archive/pxa_i2c_fixes-r3.patch;patch=1 \ ${RPSRC}/ide_not_removable-r0.patch;patch=1 \ ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \ - ${RPSRC}/pxa_rtc-r1.patch;patch=1 \ - ${RPSRC}/input_power-r2.patch;patch=1 \ + ${RPSRC}/archive/pxa_rtc-r1.patch;patch=1 \ + ${RPSRC}/archive/input_power-r2.patch;patch=1 \ ${RPSRC}/jffs2_longfilename-r0.patch;patch=1 \ - ${RPSRC}/corgi_snd-r14.patch;patch=1 \ + ${RPSRC}/archive/corgi_snd-r14.patch;patch=1 \ ${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \ - ${RPSRC}/fbdev/fbdev-r0.patch;patch=1 \ - ${RPSRC}/fbdev/fbdev1-r0.patch;patch=1 \ - ${RPSRC}/fbdev/fbdev2-r0.patch;patch=1 \ - ${RPSRC}/fbdev/fbdev3-r0.patch;patch=1 \ - ${RPSRC}/fbdev/con_rotate-r0.patch;patch=1 \ - ${RPSRC}/fbdev/con_rotate1-r1.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_base-r22.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_bl-r3.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_pcmcia-r1.patch;patch=1 \ - ${RPSRC}/ipaq/pxa_keys-r3.patch;patch=1 \ - ${RPSRC}/ipaq/tsc2101-r9.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_test1-r2.patch;patch=1 \ + ${RPSRC}/archive/fbdev-r0.patch;patch=1 \ + ${RPSRC}/archive/fbdev1-r0.patch;patch=1 \ + ${RPSRC}/archive/fbdev2-r0.patch;patch=1 \ + ${RPSRC}/archive/fbdev3-r0.patch;patch=1 \ + ${RPSRC}/archive/con_rotate-r0.patch;patch=1 \ + ${RPSRC}/archive/con_rotate1-r1.patch;patch=1 \ + ${RPSRC}/archive/hx2750_base-r22.patch;patch=1 \ + ${RPSRC}/archive/hx2750_bl-r3.patch;patch=1 \ + ${RPSRC}/archive/hx2750_pcmcia-r1.patch;patch=1 \ + ${RPSRC}/archive/pxa_keys-r3.patch;patch=1 \ + ${RPSRC}/archive/tsc2101-r9.patch;patch=1 \ + ${RPSRC}/archive/hx2750_test1-r2.patch;patch=1 \ ${DOSRC}/tc6393-device-r5.patch;patch=1 \ ${DOSRC}/tc6393_nand-r6.patch;patch=1 \ ${DOSRC}/tosa-machine-base-r12.patch;patch=1 \ @@ -62,7 +61,7 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz \ ${RPSRC}/mmc_timeout-r0.patch;patch=1 \ ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1 \ ${RPSRC}/alsa/alsa_soc_0.5-r0.patch;patch=1 \ - ${RPSRC}/alsa_snd_corgi-r0.patch;patch=1 \ + ${RPSRC}/archive/alsa_snd_corgi-r0.patch;patch=1 \ file://add-oz-release-string.patch;patch=1 \ file://pxa-serial-hack.patch;patch=1 \ ${RPSRC}/jl1/pxa-linking-bug.patch;patch=1 \ diff --git a/packages/linux/linux-openzaurus_2.6.14-rc1.bb b/packages/linux/linux-openzaurus_2.6.14-rc1.bb deleted file mode 100644 index f50dba5d0d..0000000000 --- a/packages/linux/linux-openzaurus_2.6.14-rc1.bb +++ /dev/null @@ -1,101 +0,0 @@ -include linux-openzaurus.inc - -PR = "r3" - -# Handy URLs -# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \ -# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.12-rc4-git1.bz2;patch=1 \ -# ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc1.bz2;patch=1 \ -# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \ - -# Patches submitted upstream are towards top of this list -# Hacks should clearly named and at the bottom -SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.gz \ - ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.14-rc1.bz2;patch=1 \ - ${RPSRC}/borzoi_machtype-r0.patch;patch=1 \ - ${RPSRC}/sharpsl_ssp-r4.patch;patch=1 \ - ${RPSRC}/sharpsl_lcd-r4.patch;patch=1 \ - ${RPSRC}/sharpsl_ts-r6.patch;patch=1 \ - ${RPSRC}/sharpsl_bl-r5a.patch;patch=1 \ - ${RPSRC}/spitzkbd-r3.patch;patch=1 \ - ${RPSRC}/spitz_base-r17.patch;patch=1 \ - ${RPSRC}/corgi_addinclude-r0.patch;patch=1 \ - ${RPSRC}/sharpsl_mtd_extras-r1.patch;patch=1 \ - ${RPSRC}/corgi_cleanup-r0.patch;patch=1 \ - ${RPSRC}/poodle_cleanup-r0.patch;patch=1 \ - ${RPSRC}/poodle_mmc-r0.patch;patch=1 \ - ${RPSRC}/scoop_collie_fix-r0.patch;patch=1 \ - ${RPSRC}/collie_scoop_fix1-r0.patch;patch=1 \ - ${RPSRC}/scoop_susres-r1.patch;patch=1 \ - ${RPSRC}/pxa_i2c_fixes-r0.patch;patch=1 \ - ${RPSRC}/pxa_ohci_platform-r1.patch;patch=1 \ - ${RPSRC}/pxa_ohci_suspend-r0.patch;patch=1 \ - ${RPSRC}/poodle_irda-r0.patch;patch=1 \ - ${RPSRC}/ide_not_removable-r0.patch;patch=1 \ - ${RPSRC}/sharpsl_pm-r8.patch;patch=1 \ - ${RPSRC}/corgi_pm-r4.patch;patch=1 \ - ${RPSRC}/spitz_base_extras-r2.patch;patch=1 \ - ${RPSRC}/spitz_pm-r4.patch;patch=1 \ - ${RPSRC}/spitz_kbd_fix1-r0.patch;patch=1 \ - ${RPSRC}/spitzcf-r3.patch;patch=1 \ - ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \ - ${RPSRC}/pxa_remove_static-r0.patch;patch=1 \ - ${RPSRC}/pxa_irda-r4.patch;patch=1 \ - ${RPSRC}/corgi_irda-r3.patch;patch=1 \ - ${RPSRC}/pxa_rtc-r1.patch;patch=1 \ - ${RPSRC}/input_power-r2.patch;patch=1 \ - ${RPSRC}/jffs2_longfilename-r0.patch;patch=1 \ - ${RPSRC}/sharpsl_bl_kick-r1.patch;patch=1 \ - ${RPSRC}/corgi_snd-r10.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_base-r21.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_bl-r2.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_pcmcia-r1.patch;patch=1 \ - ${RPSRC}/ipaq/pxa_keys-r2.patch;patch=1 \ - ${RPSRC}/ipaq/tsc2101-r8.patch;patch=1 \ - ${RPSRC}/ipaq/hx2750_test1-r2.patch;patch=1 \ - ${DOSRC}/pxa2xx-ir-dma-r0.patch;patch=1 \ - ${DOSRC}/tc6393-device-r5.patch;patch=1 \ - ${DOSRC}/tc6393_nand-r6.patch;patch=1 \ - ${DOSRC}/tosa-machine-base-r9.patch;patch=1 \ - ${DOSRC}/tosa-keyboard-r6.patch;patch=1 \ - ${RPSRC}/temp/tc6393fb-r7.patch;patch=1 \ - ${DOSRC}/tosa-power-r6.patch;patch=1 \ - ${DOSRC}/tosa-mmc-r5.patch;patch=1 \ - ${DOSRC}/tosa-udc-r4.patch;patch=1 \ - ${DOSRC}/tosa-irda-r3.patch;patch=1 \ - ${DOSRC}/tosa-lcd-r3.patch;patch=1 \ - ${RPSRC}/temp/tosa-bl-r5a.patch;patch=1 \ - ${RPSRC}/pcmcia_dev_ids-r2.patch;patch=1 \ - ${RPSRC}/mmc_timeout-r0.patch;patch=1 \ - ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1 \ - file://add-oz-release-string.patch;patch=1 \ - file://add-elpp-stuff.patch;patch=1 \ - file://pxa-serial-hack.patch;patch=1 \ - ${RPSRC}/jl1/pxa-linking-bug.patch;patch=1 \ - file://dtl1_cs-add-socket-revE.patch;patch=1 \ - file://connectplus-remove-ide-HACK.patch;patch=1 \ - file://defconfig-c7x0 \ - file://defconfig-ipaq-pxa270 \ - file://defconfig-collie \ - file://defconfig-poodle \ - file://defconfig-cxx00 \ - file://defconfig-tosa " - -# These patches would really help collie/poodle but we -# need someone to maintain them -# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1 -# (Pavel Machek's git tree has updated versions of this?) -# Also parts were recently committed to mainline by rmk (drivers/mfd/) -# ${JLSRC}/zaurus-base-2.6.11.diff.gz;patch=1 -# (This is mostly in mainline now?) -# ${JLSRC}/zaurus-local-2.6.11.diff.gz;patch=1 \ -# ${JLSRC}/zaurus-leds-2.6.11.diff.gz;patch=1 \ - -SRC_URI_append_tosa = "${DOSRC}/nand-readid-r1.patch;patch=1 \ - ${DOSRC}/pxa-ac97-suspend-r0.patch;patch=1 \ - ${DOSRC}/ac97codec-rename-revert-r0.patch;patch=1 \ - ${DOSRC}/wm9712-ts-r3.patch;patch=1 \ - ${DOSRC}/tosa-pxaac97-r4.patch;patch=1 \ - ${DOSRC}/tosa-bluetooth-r0.patch;patch=1 " - -S = "${WORKDIR}/linux-2.6.13" diff --git a/packages/linux/nas100d-kernel.inc b/packages/linux/nas100d-kernel.inc new file mode 100644 index 0000000000..6dd8a46001 --- /dev/null +++ b/packages/linux/nas100d-kernel.inc @@ -0,0 +1,231 @@ +# nas100d-kernel.inc +# +# Standard definitions for any NAS 100d Linux kernel. +# Include this file in a .bb which specifies, at least, +# PN,PV,PR for the desired kernel +# +# Define the following *before* including this file as +# required: +# +# N1K_FILES - kernel-tree path of files to install +# N1K_PATCHES - full list of patches to apply +# +# N1K_SUFFIX - the suffix to add after 'zImage-' in the +# deploy/images directory - defaults to "ludeos" +# +# -------------------------------------------------------------- +# +# Within this file bitbake variables local to the file are +# named N1K_FOO +# +SECTION = "kernel" +DESCRIPTION = "Linux kernel for the Iomega NAS 100d device" +LICENSE = "GPL" +MAINTAINER = "John Bowler <jbowler@acm.org>" + +DEPENDS += "devio-native" + +# Linux kernel source has the general form linux-X.Y.Z-patchP, +# X.Y is the major version number, Z (which may have multiple +# parts) is a sub-version and 'patch' is something like 'mm' or +# 'ac' with a patch version. The original bz2 archive will be +# in a directory/file vX.Y/linux-X.Y.Z.tar.bz2. The unpacked +# source will be in the directory linux-X.Y.Z and this directory +# name corresponds to the module directory (in /lib/modules). +# +# The corresponding .bb file should be called: +# +# package_X.Y.Z-patchP +# +# Giving PN=package PV=X.Y.Z-patchP (and PR is set in the .bb +# file). Files, including the all important defconfig, are +# searched for in the following directories (last one first): +# +# ludeos-kernel-2.6.11.2 +# nas100d-kernel/files +# nas100d-kernel/X.Y +# nas100d-kernel/X.Y.Z +# nas100d-kernel/X.Y.Z-patch +# nas100d-kernel/X.Y.Z-patchP +# package-X.Y.Z-patchP +# +# This allows sharing of patch files and other useful source! +# To share a file or patch with an earlier version put it in +# the shared directory - e.g. to use foo.patch on 2.6.11.2 and +# 2.6.11.4 it should be in directory nas100d-kernel/2.6.11. +# +# Note that when there are multiple patches the X.Y.Z-patch form +# uses base-patch (e.g. 2.6.12-mm) whereas X.Y.Z-patchP has the +# full form, for example 2.6.12-rc3-mm1 (in the same case). + +#PN=package-name +#PV=package-version (full) + +# The patch has the general form (rcN|preN|acN|mmN|bkN)* with the +# separate patch items being separated by '-' characters. The +# rc patch is first and has the important property that it +# requires the *preceding* kernel base version and that this +# will be the source directory name. +python () { + # The patches list may be empty. This code starts with the base + # kernel version and steps through the patches. Because the rc and + # pre patches actually require the *preceding* kernel version the code + # fixes that up appropriately. + pv = bb.data.getVar("PV",d,1).split('-') + kernel = pv[0].split('.') + base = pv[0] + name = [base] + major = '.'.join(name[0].split('.')[0:2]) + minor = '.'.join(name[0].split('.')[0:3]) + patch_uri = [ None ] + filedir = "${FILE_DIRNAME}/nas100d-kernel/%s" + # This entry will become the last one (everything is inserted before it) + filepath = [ filedir % "files" ] + pref = 10 + mmac = 0 + for patch in pv[1:]: + name.append(patch) + pname = '-'.join(name) + if patch[0:2] == "rc" or patch[0:3] == "pre": + patch_uri.append("ftp://ftp.kernel.org/pub/linux/kernel/v%s/testing/patch-%s.bz2;patch=1;pname=%s" % (major, pname, pname)) + kernel[-1] = str(int(kernel[-1]) - 1) + if patch[0:2] == "rc" and pref == 10: + pref = 6 + filepath[0:0] = [ filedir % name[0] ] + filepath[0:0] = [ filedir % (name[0] + "-rc") ] + else: + pref = 2 + elif patch[0:2] == "bk" or patch[0:3] == "git": + patch_uri.append("ftp://ftp.kernel.org/pub/linux/kernel/v%s/snapshots/patch-%s.bz2;patch=1;pname=%s" % (major, pname, pname)) + pref = 2 + elif patch[0:2] == "ac": + patch_uri.append("ftp://ftp.kernel.org/pub/linux/kernel/people/alan/linux-%s/%s/patch-%s" % (major, base, pname)) + mmac = 2 + filepath[0:0] = [ filedir % (name[0] + "-ac") ] + elif patch[0:2] == "mm": + patch_uri.append("ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/%s/%s/%s/%s.bz2;patch=1;pname=%s" % (major, base, pname, pname, pname)) + mmac = 2 + filepath[0:0] = [ filedir % (name[0] + "-mm") ] + else: + raise bb.build.FuncFailed("nas100d-kernel: patch %s not recognized in %s" % (patch, '-'.join(pv))) + filepath[0:0] = [ filedir % pname ] + base = pname + + base = '.'.join(kernel) + patch_uri[0] = "ftp://ftp.kernel.org/pub/linux/kernel/v%s/linux-%s.tar.bz2" % (major, base) + filepath[-1:-1] = [ filedir % base ] + if base != minor: + filepath[-1:-1] = [ filedir % minor ] + filepath[-1:-1] = [ filedir % major ] + + bb.data.setVar("N1K_SRCMAJ", major, d) + # bb.note("N1K_SRCMAJ := %s" % major) + bb.data.setVar("N1K_SRCVER", base, d) + # bb.note("N1K_SRCVER := %s" % base) + bb.data.setVar("N1K_SRCURI", ' '.join(patch_uri), d) + # bb.note("N1K_SRCURI := %s" % ' '.join(patch_uri)) + bb.data.setVar("N1K_FILESPATH", ':'.join(filepath), d) + # bb.note("N1K_FILESPATH := %s" % ' '.join(filepath)) + bb.data.setVar("DEFAULT_PREFERENCE", pref-mmac, d) + # bb.note("DEFAULT_PREFERENCE := %s" % (pref-mmac)) +} + +# FILESPATH: this list is in order last-searched-first, therefore +# the first entry is the *latest* and/or most specific +FILESPATH = "${N1K_FILESPATH}:${FILE_DIRNAME}/nas100d-kernel/" + +# The working directory will be the 'base' version (which may not be the +# same as implied by the PV variable because it corresponds to the prior +# minor version for rc and pre patched versions). +S = "${WORKDIR}/linux-${N1K_SRCVER}" + +# N1K_FILES is a list of additional files added to the source, these are +# put in place before the patches, so may themselves be patched. The list +# gives the path name relative to the base of the kernel source tree, the +# base file name is used to *find* the file. +N1K_FILES ?= "" + +N1K_SRCFILES = "${@( ' '.join([ ("file://" + n2k_file.split('/')[-1]) for n2k_file in bb.data.getVar("N1K_FILES",d,1).split(None) ]) )}" + +# N1K_PATCHES is a list of additional patches, the list specified +# here comes from the ludeos-2.6.11.2 kernel, typically extra +# patches will be required and very often patches will need to +# be removed (i.e. the default is typically not very useful!) +N1K_PATCHES ?= "" + +N1K_SUFFIX ?= "ludeos" + +SRC_URI = "${N1K_SRCURI}" +SRC_URI += "${N1K_SRCFILES}" +SRC_URI += "${N1K_PATCHES}" +SRC_URI += "file://defconfig" + +COMPATIBLE_HOST = 'arm.*-linux' + +inherit kernel + +ARCH = "arm" +KERNEL_IMAGETYPE = "zImage" +# To specify the console set KERNEL_CONSOLE in the .bb file. +# CMDLINE_ROOT contains the boot options, CMDLINE_KERNEL_OPTIONS +# contains the things for a specific kernel. +# CMDLINE_KERNEL_OPTIONS ?= "reboot=s" +CMDLINE_KERNEL_OPTIONS ?= +CMDLINE_ROOT = "root=/dev/mtdblock2 rw rootfstype=jffs2 mem=64M@0x00000000 init=/linuxrc" +CMDLINE_DEBUG = +CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_KERNEL_OPTIONS} ${CMDLINE_DEBUG} ${CMDLINE_CONSOLE}" + +# Add the architecture compiler flags to KERNEL_CC and KERNEL_LD as +# required. Notice that this has to be done for each separately built +# module as well! +KERNEL_CC += "${TARGET_CC_KERNEL_ARCH}" +KERNEL_LD += "${TARGET_LD_KERNEL_ARCH}" + +# Set EXTRAVERSION and LOCALVERSION to "" so that the kernel version +# remains pinned to the x.y.z form, also turn off the directory +# printing which provides almost all the output of an incremental build. +EXTRA_OEMAKE += "EXTRAVERSION=" +EXTRA_OEMAKE += "LOCALVERSION=" +EXTRA_OEMAKE += "MAKEFLAGS='--no-print-directory'" + +# Override KERNEL_RELEASE from kernel.bbclass to match: +KERNEL_RELEASE = "${KERNEL_VERSION}" + +# By putting the added files in place in a separate task before +# do_patch it becomes possible to patch these files. +do_unpacklocal() { + for f in ${N1K_FILES} + do + s="$(basename "$f")" + install -m 0644 "${WORKDIR}/$s" "${S}/$f" + done +} + +addtask unpacklocal before do_patch after do_unpack + +do_configure_prepend() { + rm -f ${S}/.config + echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >>'${S}/.config' + if test '${ARCH_BYTE_SEX}' = be + then + echo 'CONFIG_CPU_BIG_ENDIAN=y' >>'${S}/.config' + fi + sed -e '/CONFIG_CPU_BIG_ENDIAN/d' -e '/CONFIG_CMDLINE=/d' '${WORKDIR}/defconfig' >>'${S}/.config' + rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ + ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch +} + +do_deploy[dirs] = "${S}" +do_deploy() { + install -d ${DEPLOY_DIR}/images + install -m 644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${N1K_SUFFIX} +} + +addtask deploy before do_build after do_compile + +python () { + # Don't build the kernel unless we're targeting an nas100d + mach = bb.data.getVar("MACHINE", d, 1) + if mach != 'nas100d': + raise bb.parse.SkipPackage("LudeOS only builds for the Iomega NAS 100d") +} diff --git a/packages/linux/nslu2-kernel/2.6.13/.mtn2git_empty b/packages/linux/nas100d-kernel/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/nslu2-kernel/2.6.13/.mtn2git_empty +++ b/packages/linux/nas100d-kernel/.mtn2git_empty diff --git a/packages/linux/nslu2-kernel/2.6.14-rc5-mm1/.mtn2git_empty b/packages/linux/nas100d-kernel/2.6.14/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/nslu2-kernel/2.6.14-rc5-mm1/.mtn2git_empty +++ b/packages/linux/nas100d-kernel/2.6.14/.mtn2git_empty diff --git a/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-copy-from.patch b/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-copy-from.patch new file mode 100644 index 0000000000..f3da2e093f --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-copy-from.patch @@ -0,0 +1,73 @@ +--- linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-27 17:02:08.000000000 -0700 ++++ linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-29 23:11:24.990820968 -0700 +@@ -38,10 +38,14 @@ + #define BYTE1(h) ((h) & 0xFF) + #endif + ++#define FLASHWORD(a) (*(__u16*)(a)) ++#define FLASHVAL(a) FLASHWORD(a) ++#define FLASHSET(a,v) do { FLASHWORD(a) = (v); } while (0) ++ + static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs) + { + map_word val; +- val.x[0] = *(__u16 *) (map->map_priv_1 + ofs); ++ val.x[0] = FLASHVAL(map->map_priv_1 + ofs); + return val; + } + +@@ -53,19 +57,25 @@ static map_word ixp4xx_read16(struct map + static void ixp4xx_copy_from(struct map_info *map, void *to, + unsigned long from, ssize_t len) + { +- int i; +- u8 *dest = (u8 *) to; +- u16 *src = (u16 *) (map->map_priv_1 + from); +- u16 data; +- +- for (i = 0; i < (len / 2); i++) { +- data = src[i]; +- dest[i * 2] = BYTE0(data); +- dest[i * 2 + 1] = BYTE1(data); ++ u8 *dest, *src; ++ ++ if (len <= 0) ++ return; ++ ++ dest = (u8 *) to; ++ src = (u8 *) (map->map_priv_1 + from); ++ if (from & 1) ++ *dest++ = BYTE1(FLASHVAL(src-1)), ++src, --len; ++ ++ while (len >= 2) { ++ u16 data = FLASHVAL(src); src += 2; ++ *dest++ = BYTE0(data); ++ *dest++ = BYTE1(data); ++ len -= 2; + } + +- if (len & 1) +- dest[len - 1] = BYTE0(src[i]); ++ if (len > 0) ++ *dest++ = BYTE0(FLASHVAL(src)); + } + + /* +@@ -75,7 +85,7 @@ static void ixp4xx_copy_from(struct map_ + static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr) + { + if (!(adr & 1)) +- *(__u16 *) (map->map_priv_1 + adr) = d.x[0]; ++ FLASHSET(map->map_priv_1 + adr, d.x[0]); + } + + /* +@@ -83,7 +93,7 @@ static void ixp4xx_probe_write16(struct + */ + static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr) + { +- *(__u16 *) (map->map_priv_1 + adr) = d.x[0]; ++ FLASHSET(map->map_priv_1 + adr, d.x[0]); + } + + struct ixp4xx_flash_info { diff --git a/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-le.patch b/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-le.patch new file mode 100644 index 0000000000..0b50e4e1a0 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/10-ixp4xx-le.patch @@ -0,0 +1,54 @@ +--- linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-27 17:02:08.000000000 -0700 ++++ linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-29 23:11:24.990820968 -0700 +@@ -22,6 +22,7 @@ + #include <linux/string.h> + #include <linux/mtd/mtd.h> + #include <linux/mtd/map.h> ++#include <linux/mtd/cfi_endian.h> + #include <linux/mtd/partitions.h> + #include <linux/ioport.h> + #include <linux/device.h> +@@ -30,17 +31,40 @@ + + #include <linux/reboot.h> + ++/* On a little-endian IXP4XX system (tested on NSLU2) an LDRH or STRH ++ * will flip the second address bit - i.e. XOR the address with 10b. ++ * This causes the cfi commands (sent to the command address, 0xAA for ++ * 16 bit flash) to fail. This is fixed here by XOR'ing the address ++ * before use with 10b. The cost of this is that the flash layout ends ++ * up with pdp-endiannes (on an LE system), however this is not a problem ++ * as the access code consistently only accesses half words - so the ++ * endianness is not determinable on stuff which is written and read ++ * consistently in the little endian world. ++ * ++ * For flash data from the big-endian world, however, the results are ++ * weird - the pdp-endianness results in the data apparently being ++ * 2-byte swapped (as in dd conv=swab). To work round this the 16 ++ * bit values are written and read using cpu_to_cfi16 and cfi16_to_cpu, ++ * by default these are no-ops, but if the MTD driver is configed with ++ * CONFIG_MTD_CFI_BE_BYTE_SWAP the macros will byte swap the data, ++ * resulting in a consistently BE view of the flash on both BE (no ++ * op) and LE systems. This config setting also causes the command ++ * data from the CFI implementation to get swapped - as is required ++ * so that this code will *unswap* it and give the correct command ++ * data to the flash. ++ */ + #ifndef __ARMEB__ + #define BYTE0(h) ((h) & 0xFF) + #define BYTE1(h) (((h) >> 8) & 0xFF) ++#define FLASHWORD(a) (*(__u16*)((u32)(a) ^ 2)) + #else + #define BYTE0(h) (((h) >> 8) & 0xFF) + #define BYTE1(h) ((h) & 0xFF) ++#define FLASHWORD(a) (*(__u16*)(a)) + #endif + +-#define FLASHWORD(a) (*(__u16*)(a)) +-#define FLASHVAL(a) FLASHWORD(a) +-#define FLASHSET(a,v) do { FLASHWORD(a) = (v); } while (0) ++#define FLASHVAL(a) cfi16_to_cpu(FLASHWORD(a)) ++#define FLASHSET(a,v) (FLASHWORD(a) = cpu_to_cfi16(v)) + + static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs) + { diff --git a/packages/linux/nas100d-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch b/packages/linux/nas100d-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch new file mode 100644 index 0000000000..37d19bd1b0 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/10-mtdpart-redboot-fis-byteswap.patch @@ -0,0 +1,44 @@ +On IXP4XX systems the FIS directory is big endian even with a little +endian kernel. This patch recognises the FIS directory on such a +system and byte swaps it to obtain a valid table based on the 'size' +field of the FIS directory (the size field is know to always match the +erase block size on such systems, and probably all systems.) + +--- linux-2.6.13/.pc/10-mtdpart-redboot-fis-byteswap.patch/drivers/mtd/redboot.c 2005-08-28 16:41:01.000000000 -0700 ++++ linux-2.6.13/drivers/mtd/redboot.c 2005-10-23 21:44:59.999694674 -0700 +@@ -89,8 +89,34 @@ + i = numslots; + break; + } +- if (!memcmp(buf[i].name, "FIS directory", 14)) ++ if (!memcmp(buf[i].name, "FIS directory", 14)) { ++ /* This is apparently the FIS directory entry for the ++ * FIS directory itself. The FIS directory size is ++ * one erase block, if the buf[i].size field is ++ * swab32(erasesize) then we know we are looking at ++ * a byte swapped FIS directory - swap all the entries! ++ * (NOTE: this is 'size' not 'data_length', size is ++ * the full size of the entry.) ++ */ ++ if (swab32(buf[i].size) == master->erasesize) { ++ int j; ++ for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) { ++ /* The unsigned long fields were written with the ++ * wrong byte sex, name and pad have no byte sex. ++ */ ++# define do_swab32(x) (x) = swab32(x) ++ do_swab32(buf[j].flash_base); ++ do_swab32(buf[j].mem_base); ++ do_swab32(buf[j].size); ++ do_swab32(buf[j].entry_point); ++ do_swab32(buf[j].data_length); ++ do_swab32(buf[j].desc_cksum); ++ do_swab32(buf[j].file_cksum); ++# undef do_swab32 ++ } ++ } + break; ++ } + } + if (i == numslots) { + /* Didn't find it */ diff --git a/packages/linux/nas100d-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch b/packages/linux/nas100d-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch new file mode 100644 index 0000000000..6ac0807f1e --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/15-ixp4xx-writesb-l-w.patch @@ -0,0 +1,31 @@ +# The inline caller of these APIs were changed to have +# const vaddr parameters... +--- linux-2.6.13/include/asm-arm/arch-ixp4xx/io.h.orig 2005-09-24 17:06:19.968099976 -0700 ++++ linux-2.6.13/include/asm-arm/arch-ixp4xx/io.h 2005-09-24 17:06:52.542149731 -0700 +@@ -113,7 +113,7 @@ + } + + static inline void +-__ixp4xx_writesb(u32 bus_addr, u8 *vaddr, int count) ++__ixp4xx_writesb(u32 bus_addr, const u8 *vaddr, int count) + { + while (count--) + writeb(*vaddr++, bus_addr); +@@ -136,7 +136,7 @@ + } + + static inline void +-__ixp4xx_writesw(u32 bus_addr, u16 *vaddr, int count) ++__ixp4xx_writesw(u32 bus_addr, const u16 *vaddr, int count) + { + while (count--) + writew(*vaddr++, bus_addr); +@@ -154,7 +154,7 @@ + } + + static inline void +-__ixp4xx_writesl(u32 bus_addr, u32 *vaddr, int count) ++__ixp4xx_writesl(u32 bus_addr, const u32 *vaddr, int count) + { + while (count--) + writel(*vaddr++, bus_addr); diff --git a/packages/linux/nas100d-kernel/2.6.14/18-ixp4xx-io-h-addr.patch b/packages/linux/nas100d-kernel/2.6.14/18-ixp4xx-io-h-addr.patch new file mode 100644 index 0000000000..5813bbb7ac --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/18-ixp4xx-io-h-addr.patch @@ -0,0 +1,287 @@ +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:33:21.757679882 -0700 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:47:02.581331058 -0700 +@@ -80,9 +80,9 @@ __ixp4xx_iounmap(void __iomem *addr) + #define __arch_ioremap(a, s, f, x) __ixp4xx_ioremap(a, s, f, x) + #define __arch_iounmap(a) __ixp4xx_iounmap(a) + +-#define writeb(p, v) __ixp4xx_writeb(p, v) +-#define writew(p, v) __ixp4xx_writew(p, v) +-#define writel(p, v) __ixp4xx_writel(p, v) ++#define writeb(v, p) __ixp4xx_writeb(v, p) ++#define writew(v, p) __ixp4xx_writew(v, p) ++#define writel(v, p) __ixp4xx_writel(v, p) + + #define writesb(p, v, l) __ixp4xx_writesb(p, v, l) + #define writesw(p, v, l) __ixp4xx_writesw(p, v, l) +@@ -97,8 +97,9 @@ __ixp4xx_iounmap(void __iomem *addr) + #define readsl(p, v, l) __ixp4xx_readsl(p, v, l) + + static inline void +-__ixp4xx_writeb(u8 value, u32 addr) ++__ixp4xx_writeb(u8 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) { +@@ -113,15 +114,16 @@ __ixp4xx_writeb(u8 value, u32 addr) + } + + static inline void +-__ixp4xx_writesb(u32 bus_addr, const u8 *vaddr, int count) ++__ixp4xx_writesb(volatile void __iomem *bus_addr, const u8 *vaddr, int count) + { + while (count--) + writeb(*vaddr++, bus_addr); + } + + static inline void +-__ixp4xx_writew(u16 value, u32 addr) ++__ixp4xx_writew(u16 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) { +@@ -136,15 +138,16 @@ __ixp4xx_writew(u16 value, u32 addr) + } + + static inline void +-__ixp4xx_writesw(u32 bus_addr, const u16 *vaddr, int count) ++__ixp4xx_writesw(volatile void __iomem *bus_addr, const u16 *vaddr, int count) + { + while (count--) + writew(*vaddr++, bus_addr); + } + + static inline void +-__ixp4xx_writel(u32 value, u32 addr) ++__ixp4xx_writel(u32 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + if (addr >= VMALLOC_START) { + __raw_writel(value, addr); + return; +@@ -154,15 +157,16 @@ __ixp4xx_writel(u32 value, u32 addr) + } + + static inline void +-__ixp4xx_writesl(u32 bus_addr, const u32 *vaddr, int count) ++__ixp4xx_writesl(volatile void __iomem *bus_addr, const u32 *vaddr, int count) + { + while (count--) + writel(*vaddr++, bus_addr); + } + + static inline unsigned char +-__ixp4xx_readb(u32 addr) ++__ixp4xx_readb(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) +@@ -177,15 +181,16 @@ __ixp4xx_readb(u32 addr) + } + + static inline void +-__ixp4xx_readsb(u32 bus_addr, u8 *vaddr, u32 count) ++__ixp4xx_readsb(const volatile void __iomem *bus_addr, u8 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readb(bus_addr); + } + + static inline unsigned short +-__ixp4xx_readw(u32 addr) ++__ixp4xx_readw(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) +@@ -200,15 +205,16 @@ __ixp4xx_readw(u32 addr) + } + + static inline void +-__ixp4xx_readsw(u32 bus_addr, u16 *vaddr, u32 count) ++__ixp4xx_readsw(const volatile void __iomem *bus_addr, u16 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readw(bus_addr); + } + + static inline unsigned long +-__ixp4xx_readl(u32 addr) ++__ixp4xx_readl(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 data; + + if (addr >= VMALLOC_START) +@@ -221,7 +227,7 @@ __ixp4xx_readl(u32 addr) + } + + static inline void +-__ixp4xx_readsl(u32 bus_addr, u32 *vaddr, u32 count) ++__ixp4xx_readsl(const volatile void __iomem *bus_addr, u32 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readl(bus_addr); +@@ -239,7 +245,7 @@ __ixp4xx_readsl(u32 bus_addr, u32 *vaddr + eth_copy_and_sum((s),__mem_pci(c),(l),(b)) + + static inline int +-check_signature(unsigned long bus_addr, const unsigned char *signature, ++check_signature(const unsigned char __iomem *bus_addr, const unsigned char *signature, + int length) + { + int retval = 0; +@@ -389,7 +395,7 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u + #define __is_io_address(p) (((unsigned long)p >= PIO_OFFSET) && \ + ((unsigned long)p <= (PIO_MASK + PIO_OFFSET))) + static inline unsigned int +-__ixp4xx_ioread8(void __iomem *addr) ++__ixp4xx_ioread8(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -398,12 +404,12 @@ __ixp4xx_ioread8(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return (unsigned int)__raw_readb(port); + #else +- return (unsigned int)__ixp4xx_readb(port); ++ return (unsigned int)__ixp4xx_readb(addr); + #endif + } + + static inline void +-__ixp4xx_ioread8_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread8_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -412,12 +418,12 @@ __ixp4xx_ioread8_rep(void __iomem *addr, + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsb(addr, vaddr, count); + #else +- __ixp4xx_readsb(port, vaddr, count); ++ __ixp4xx_readsb(addr, vaddr, count); + #endif + } + + static inline unsigned int +-__ixp4xx_ioread16(void __iomem *addr) ++__ixp4xx_ioread16(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -426,12 +432,12 @@ __ixp4xx_ioread16(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return le16_to_cpu(__raw_readw((u32)port)); + #else +- return (unsigned int)__ixp4xx_readw((u32)port); ++ return (unsigned int)__ixp4xx_readw(addr); + #endif + } + + static inline void +-__ixp4xx_ioread16_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread16_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -440,12 +446,12 @@ __ixp4xx_ioread16_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsw(addr, vaddr, count); + #else +- __ixp4xx_readsw(port, vaddr, count); ++ __ixp4xx_readsw(addr, vaddr, count); + #endif + } + + static inline unsigned int +-__ixp4xx_ioread32(void __iomem *addr) ++__ixp4xx_ioread32(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -454,13 +460,13 @@ __ixp4xx_ioread32(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return le32_to_cpu(__raw_readl((u32)port)); + #else +- return (unsigned int)__ixp4xx_readl((u32)port); ++ return (unsigned int)__ixp4xx_readl(addr); + #endif + } + } + + static inline void +-__ixp4xx_ioread32_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread32_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -469,7 +475,7 @@ __ixp4xx_ioread32_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsl(addr, vaddr, count); + #else +- __ixp4xx_readsl(port, vaddr, count); ++ __ixp4xx_readsl(addr, vaddr, count); + #endif + } + +@@ -483,7 +489,7 @@ __ixp4xx_iowrite8(u8 value, void __iomem + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writeb(value, port); + #else +- __ixp4xx_writeb(value, port); ++ __ixp4xx_writeb(value, addr); + #endif + } + +@@ -497,7 +503,7 @@ __ixp4xx_iowrite8_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesb(addr, vaddr, count); + #else +- __ixp4xx_writesb(port, vaddr, count); ++ __ixp4xx_writesb(addr, vaddr, count); + #endif + } + +@@ -511,7 +517,7 @@ __ixp4xx_iowrite16(u16 value, void __iom + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writew(cpu_to_le16(value), addr); + #else +- __ixp4xx_writew(value, port); ++ __ixp4xx_writew(value, addr); + #endif + } + +@@ -525,7 +531,7 @@ __ixp4xx_iowrite16_rep(void __iomem *add + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesw(addr, vaddr, count); + #else +- __ixp4xx_writesw(port, vaddr, count); ++ __ixp4xx_writesw(addr, vaddr, count); + #endif + } + +@@ -539,7 +545,7 @@ __ixp4xx_iowrite32(u32 value, void __iom + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writel(cpu_to_le32(value), port); + #else +- __ixp4xx_writel(value, port); ++ __ixp4xx_writel(value, addr); + #endif + } + +@@ -553,7 +559,7 @@ __ixp4xx_iowrite32_rep(void __iomem *add + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesl(addr, vaddr, count); + #else +- __ixp4xx_writesl(port, vaddr, count); ++ __ixp4xx_writesl(addr, vaddr, count); + #endif + } + diff --git a/packages/linux/nas100d-kernel/2.6.14/28-spinlock-up.patch b/packages/linux/nas100d-kernel/2.6.14/28-spinlock-up.patch new file mode 100644 index 0000000000..3ae5178cff --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/28-spinlock-up.patch @@ -0,0 +1,32 @@ +--- linux-2.6.14-rc5/include/linux/spinlock_up.h 2005-10-26 08:37:20.164248408 -0700 ++++ patched/include/linux/spinlock_up.h 2005-10-26 12:15:13.458898975 -0700 +@@ -47,6 +47,14 @@ static inline void __raw_spin_unlock(raw + lock->slock = 1; + } + ++#else /* DEBUG_SPINLOCK */ ++#define __raw_spin_is_locked(lock) ((void)(lock), 0) ++/* for sched.c and kernel_lock.c: */ ++# define __raw_spin_lock(lock) do { (void)(lock); } while (0) ++# define __raw_spin_unlock(lock) do { (void)(lock); } while (0) ++# define __raw_spin_trylock(lock) ({ (void)(lock); 1; }) ++#endif /* DEBUG_SPINLOCK */ ++ + /* + * Read-write spinlocks. No debug version. + */ +@@ -57,14 +65,6 @@ static inline void __raw_spin_unlock(raw + #define __raw_read_unlock(lock) do { (void)(lock); } while (0) + #define __raw_write_unlock(lock) do { (void)(lock); } while (0) + +-#else /* DEBUG_SPINLOCK */ +-#define __raw_spin_is_locked(lock) ((void)(lock), 0) +-/* for sched.c and kernel_lock.c: */ +-# define __raw_spin_lock(lock) do { (void)(lock); } while (0) +-# define __raw_spin_unlock(lock) do { (void)(lock); } while (0) +-# define __raw_spin_trylock(lock) ({ (void)(lock); 1; }) +-#endif /* DEBUG_SPINLOCK */ +- + #define __raw_read_can_lock(lock) (((void)(lock), 1)) + #define __raw_write_can_lock(lock) (((void)(lock), 1)) + diff --git a/packages/linux/nas100d-kernel/2.6.14/29-ipv4-route-c-spinlock.patch b/packages/linux/nas100d-kernel/2.6.14/29-ipv4-route-c-spinlock.patch new file mode 100644 index 0000000000..93e070518c --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/29-ipv4-route-c-spinlock.patch @@ -0,0 +1,11 @@ +--- linux-2.6.14-rc5/net/ipv4/route.c 2005-10-26 08:37:20.752285410 -0700 ++++ patched/net/ipv4/route.c 2005-10-26 12:17:00.761651111 -0700 +@@ -231,7 +231,7 @@ static spinlock_t *rt_hash_locks; + spin_lock_init(&rt_hash_locks[i]); \ + } + #else +-# define rt_hash_lock_addr(slot) NULL ++# define rt_hash_lock_addr(slot) ((spinlock_t*)NULL) + # define rt_hash_lock_init() + #endif + diff --git a/packages/linux/nas100d-kernel/2.6.14/50-nas100d-arch.patch b/packages/linux/nas100d-kernel/2.6.14/50-nas100d-arch.patch new file mode 100644 index 0000000000..51ab586010 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/50-nas100d-arch.patch @@ -0,0 +1,64 @@ + arch/arm/mach-ixp4xx/Kconfig | 8 ++++++++ + arch/arm/mach-ixp4xx/Makefile | 1 + + arch/arm/tools/mach-types | 1 + + include/asm-arm/arch-ixp4xx/hardware.h | 1 + + include/asm-arm/arch-ixp4xx/irqs.h | 9 +++++++++ + 5 files changed, 20 insertions(+) + +--- linux-2.6.14.orig/arch/arm/mach-ixp4xx/Kconfig 2005-11-09 00:58:58.000000000 +0100 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/Kconfig 2005-11-11 22:23:08.000000000 +0100 +@@ -61,6 +61,14 @@ config ARCH_PRPMC1100 + PrPCM1100 Processor Mezanine Module. For more information on + this platform, see <file:Documentation/arm/IXP4xx>. + ++config MACH_NAS100D ++ bool ++ prompt "NAS100D" ++ help ++ Say 'Y' here if you want your kernel to support Iomega's ++ NAS 100d device. For more information on this platform, ++ see http://www.nslu2-linux.org/wiki/NAS100d/HomePage ++ + # + # Avila and IXDP share the same source for now. Will change in future + # +--- linux-2.6.14.orig/arch/arm/mach-ixp4xx/Makefile 2005-11-09 00:58:58.000000000 +0100 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/Makefile 2005-11-11 22:23:08.000000000 +0100 +@@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc + obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o + obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o + obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o ++obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o + +--- linux-2.6.14.orig/include/asm-arm/arch-ixp4xx/hardware.h 2005-11-09 00:59:41.000000000 +0100 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/hardware.h 2005-11-11 22:23:08.000000000 +0100 +@@ -44,5 +44,6 @@ extern unsigned int processor_id; + #include "ixdp425.h" + #include "coyote.h" + #include "prpmc1100.h" ++#include "nas100d.h" + + #endif /* _ASM_ARCH_HARDWARE_H */ +--- linux-2.6.14.orig/include/asm-arm/arch-ixp4xx/irqs.h 2005-11-09 00:59:41.000000000 +0100 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/irqs.h 2005-11-11 23:01:50.000000000 +0100 +@@ -93,4 +93,13 @@ + #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 + #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 + ++/* ++ * NAS100D board IRQs ++ */ ++#define IRQ_NAS100D_PCI_INTA IRQ_IXP4XX_GPIO11 ++#define IRQ_NAS100D_PCI_INTB IRQ_IXP4XX_GPIO10 ++#define IRQ_NAS100D_PCI_INTC IRQ_IXP4XX_GPIO9 ++#define IRQ_NAS100D_PCI_INTD IRQ_IXP4XX_GPIO8 ++#define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7 ++ + #endif +--- linux-2.6.14.orig/arch/arm/tools/mach-types 2005-11-09 00:58:59.000000000 +0100 ++++ linux-2.6.14/arch/arm/tools/mach-types 2005-11-11 22:23:08.000000000 +0100 +@@ -869,3 +869,4 @@ davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_ + htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855 + tpad MACH_TPAD TPAD 856 + roverp3 MACH_ROVERP3 ROVERP3 857 ++nas100d MACH_NAS100D NAS100D 865 diff --git a/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch new file mode 100644 index 0000000000..5e180093a4 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch @@ -0,0 +1,649 @@ + drivers/i2c/busses/i2c-ixp4xx.c | 9 + drivers/i2c/chips/Kconfig | 9 + drivers/i2c/chips/Makefile | 1 + drivers/i2c/chips/pcf8563.c | 547 ++++++++++++++++++++++++++++++++++++++++ + include/linux/pcf8563.h | 24 + + 5 files changed, 587 insertions(+), 3 deletions(-) + +--- linux-nas100d.orig/drivers/i2c/busses/i2c-ixp4xx.c 2005-11-11 22:22:43.000000000 +0100 ++++ linux-nas100d/drivers/i2c/busses/i2c-ixp4xx.c 2005-11-15 22:06:23.000000000 +0100 +@@ -65,7 +65,6 @@ static int ixp4xx_bit_getscl(void *data) + + gpio_line_config(ixp4xx_scl_pin(data), IXP4XX_GPIO_IN ); + gpio_line_get(ixp4xx_scl_pin(data), &scl); +- + return scl; + } + +@@ -75,7 +74,6 @@ static int ixp4xx_bit_getsda(void *data) + + gpio_line_config(ixp4xx_sda_pin(data), IXP4XX_GPIO_IN ); + gpio_line_get(ixp4xx_sda_pin(data), &sda); +- + return sda; + } + +@@ -127,7 +125,10 @@ static int ixp4xx_i2c_probe(struct devic + drv_data->algo_data.udelay = 10; + drv_data->algo_data.mdelay = 10; + drv_data->algo_data.timeout = 100; +- ++#ifdef CONFIG_MACH_NAS100D ++ drv_data->algo_data.udelay = 100; ++ drv_data->algo_data.mdelay = 100; ++#endif + drv_data->adapter.id = I2C_HW_B_IXP4XX; + drv_data->adapter.algo_data = &drv_data->algo_data; + +@@ -145,6 +146,8 @@ static int ixp4xx_i2c_probe(struct devic + return err; + } + ++ printk(KERN_INFO "i2c: ixp4xx 0.0.4\n"); ++ + dev_set_drvdata(&plat_dev->dev, drv_data); + + return 0; +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-nas100d/drivers/i2c/chips/pcf8563.c 2005-11-16 11:34:15.000000000 +0100 +@@ -0,0 +1,547 @@ ++/* ++ * pcf8563.c - An i2c driver for the Philips PCF8563 RTC ++ * Copyright 2005 Alessandro Zummo ++ * ++ * please send all reports to: ++ * a dot zummo at towertech dot it ++ * ++ * based on the other drivers in this same directory. ++ * ++ * http://www.semiconductors.philips.com/acrobat/datasheets/PCF8563-04.pdf ++ * ++ * 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. ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/i2c.h> ++#include <linux/string.h> ++#include <linux/bcd.h> ++#include <linux/rtc.h> ++#include <linux/list.h> ++ ++#include <linux/pcf8563.h> ++ ++#define DRV_VERSION "0.3.1" ++ ++/* Addresses to scan */ ++static unsigned short normal_i2c[] = { 0x51, I2C_CLIENT_END }; ++ ++/* Module parameters */ ++I2C_CLIENT_INSMOD; ++I2C_CLIENT_MODULE_PARM(hctosys, ++ "Set the system time from the hardware clock upon initialization"); ++ ++#define PCF8563_REG_ST1 0x00 /* status */ ++#define PCF8563_REG_ST2 0x01 ++ ++#define PCF8563_REG_SC 0x02 /* datetime */ ++#define PCF8563_REG_MN 0x03 ++#define PCF8563_REG_HR 0x04 ++#define PCF8563_REG_DM 0x05 ++#define PCF8563_REG_DW 0x06 ++#define PCF8563_REG_MO 0x07 ++#define PCF8563_REG_YR 0x08 ++ ++#define PCF8563_REG_AMN 0x09 /* alarm */ ++#define PCF8563_REG_AHR 0x0A ++#define PCF8563_REG_ADM 0x0B ++#define PCF8563_REG_ADW 0x0C ++ ++#define PCF8563_REG_CLKO 0x0D /* clock out */ ++#define PCF8563_REG_TMRC 0x0E /* timer control */ ++#define PCF8563_REG_TMR 0x0F /* timer */ ++ ++#define PCF8563_SC_LV 0x80 /* low voltage */ ++ ++/* Prototypes */ ++static int pcf8563_attach(struct i2c_adapter *adapter); ++static int pcf8563_detach(struct i2c_client *client); ++static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind); ++static int pcf8563_command(struct i2c_client *client, unsigned int cmd, ++ void *arg); ++ ++static struct i2c_driver pcf8563_driver = { ++ .owner = THIS_MODULE, ++ .name = "pcf8563", ++ .flags = I2C_DF_NOTIFY, ++ .attach_adapter = &pcf8563_attach, ++ .detach_client = &pcf8563_detach, ++}; ++ ++struct pcf8563_data { ++ struct i2c_client client; ++ struct list_head list; ++}; ++ ++static const unsigned char days_in_mo[] = ++ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; ++ ++static LIST_HEAD(pcf8563_clients); ++ ++/* Workaround until the I2C subsytem will allow to send ++ * commands to a specific client. This function will send the command ++ * to the first client. ++ */ ++int pcf8563_do_command(unsigned int cmd, void *arg) ++{ ++ struct list_head *walk; ++ struct list_head *tmp; ++ struct pcf8563_data *data; ++ ++ list_for_each_safe(walk, tmp, &pcf8563_clients) { ++ data = list_entry(walk, struct pcf8563_data, list); ++ return pcf8563_command(&data->client, cmd, arg); ++ } ++ ++ return -ENODEV; ++} ++ ++#define is_leap(year) \ ++ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) ++ ++/* make sure the rtc_time values are in bounds */ ++ ++static int pcf8563_validate_tm(struct rtc_time *tm) ++{ ++ int year = tm->tm_year + 1900; ++ ++ if ((tm->tm_year < 70) || (tm->tm_year > 255)) ++ return -EINVAL; ++ ++ if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) ++ return -EINVAL; ++ ++ if (tm->tm_mday > days_in_mo[tm->tm_mon] ++ + ((tm->tm_mon == 1) && is_leap(year))) ++ return -EINVAL; ++ ++ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++/* ++ * In the routines that deal directly with the pcf8563 hardware, we use ++ * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch. ++ */ ++static int pcf8563_get_datetime(struct i2c_client *client, struct rtc_time *tm) ++{ ++ unsigned char buf[13]; ++ unsigned char addr = PCF8563_REG_ST1; ++ ++ struct i2c_msg msgs[] = { ++ { client->addr, 0, 1, &addr }, /* setup read ptr */ ++ { client->addr, I2C_M_RD, 13, buf }, /* read status + date */ ++ }; ++ ++ /* read registers */ ++ if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { ++ dev_err(&client->dev, "%s: read error\n", __FUNCTION__); ++ return -EIO; ++ } ++ ++ if (buf[PCF8563_REG_SC] & PCF8563_SC_LV) ++ dev_info(&client->dev, ++ "low voltage detected, date/time is not reliable.\n"); ++ ++ dev_dbg(&client->dev, ++ "%s: raw read data - st1=%02x, st2=%02x, sec=%02x, min=%02x, hr=%02x, " ++ "mday=%02x, wday=%02x, mon=%02x, year=%02x\n", ++ __FUNCTION__, ++ buf[0], buf[1], buf[2], buf[3], ++ buf[4], buf[5], buf[6], buf[7], ++ buf[8]); ++ ++ ++ tm->tm_sec = BCD2BIN(buf[PCF8563_REG_SC] & 0x7F); ++ tm->tm_min = BCD2BIN(buf[PCF8563_REG_MN] & 0x7F); ++ tm->tm_hour = BCD2BIN(buf[PCF8563_REG_HR] & 0x3F); /* rtc hr 0-23 */ ++ tm->tm_mday = BCD2BIN(buf[PCF8563_REG_DM] & 0x3F); ++ tm->tm_wday = buf[PCF8563_REG_DW] & 0x07; ++ tm->tm_mon = BCD2BIN(buf[PCF8563_REG_MO] & 0x1F) - 1; /* rtc mn 1-12 */ ++ tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR]) ++ + (buf[PCF8563_REG_MO] & 0x80 ? 100 : 0); ++ ++ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, " ++ "mday=%d, mon=%d, year=%d, wday=%d\n", ++ __FUNCTION__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ ++ if (pcf8563_validate_tm(tm) < 0) { ++ dev_err(&client->dev, "retrieved date/time is not valid.\n"); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++#if 0 ++static int pcf8563_set_datetime(struct i2c_client *client, struct rtc_time *tm, ++ int datetoo, u8 reg_base) ++{ ++ int i, err, xfer; ++ ++ unsigned char buf[8]; ++ ++ static const unsigned char wel[3] = { 0, PCF8563_REG_SR, ++ PCF8563_SR_WEL }; ++ ++ static const unsigned char rwel[3] = { 0, PCF8563_REG_SR, ++ PCF8563_SR_WEL | PCF8563_SR_RWEL }; ++ ++ static const unsigned char diswe[3] = { 0, PCF8563_REG_SR, 0 }; ++ ++ struct pcf8563_data *data = i2c_get_clientdata(client); ++ ++ /* check if all values in the tm struct are correct */ ++ if ((err = pcf8563_validate_tm(tm)) < 0) ++ return err; ++ ++ dev_dbg(&client->dev, "%s: secs=%d, mins=%d, hours=%d, " ++ "mday=%d, mon=%d, year=%d, wday=%d\n", ++ __FUNCTION__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ ++ buf[PCF8563_REG_SEC] = BIN2BCD(tm->tm_sec); ++ buf[PCF8563_REG_MIN] = BIN2BCD(tm->tm_min); ++ ++ /* set hour and 24hr bit */ ++ buf[PCF8563_REG_HOUR] = BIN2BCD(tm->tm_hour) | PCF8563_HR_MIL; ++ ++ /* should we also set the date? */ ++ if (datetoo) { ++ buf[PCF8563_REG_MDAY] = BIN2BCD(tm->tm_mday); ++ ++ /* month, 0 - 11 */ ++ buf[PCF8563_REG_MONTH] = BIN2BCD(tm->tm_mon); ++ ++ /* year, since 1900 */ ++ buf[PCF8563_REG_YEAR] = BIN2BCD(tm->tm_year + 1900 - data->epoch); ++ buf[PCF8563_REG_WDAY] = tm->tm_wday & 0x07; ++ buf[PCF8563_REG_Y2K] = BIN2BCD(data->epoch / 100); ++ } ++ ++ /* this sequence is required to unlock the chip */ ++ xfer = i2c_master_send(client, wel, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer); ++ return -EIO; ++ } ++ ++ xfer = i2c_master_send(client, rwel, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer); ++ return -EIO; ++ } ++ ++ /* write register's data */ ++ for (i = 0; i < (datetoo ? 8 : 3); i++) { ++ unsigned char rdata[3] = { 0, reg_base + i, buf[i] }; ++ ++ xfer = i2c_master_send(client, rdata, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, ++ "%s: xfer=%d addr=%02x, data=%02x\n", ++ __FUNCTION__, ++ xfer, rdata[1], rdata[2]); ++ return -EIO; ++ } ++ }; ++ ++ /* disable further writes */ ++ xfer = i2c_master_send(client, diswe, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer); ++ return -EIO; ++ } ++ ++ return 0; ++} ++#endif ++ ++static int pcf8563_hctosys(struct i2c_client *client) ++{ ++ int err; ++ ++ struct rtc_time tm; ++ struct timespec tv; ++ ++ err = pcf8563_command(client, PCF8563_CMD_GETDATETIME, &tm); ++ ++ if (err) { ++ dev_err(&client->dev, ++ "Unable to set the system clock\n"); ++ return err; ++ } ++ ++ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary ++ * whether it stores the most close value or the value with partial ++ * seconds truncated. However, it is important that we use it to store ++ * the truncated value. This is because otherwise it is necessary, ++ * in an rtc sync function, to read both xtime.tv_sec and ++ * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read ++ * of >32bits is not possible. So storing the most close value would ++ * slow down the sync API. So here we have the truncated value and ++ * the best guess is to add 0.5s. ++ */ ++ ++ tv.tv_nsec = NSEC_PER_SEC >> 1; ++ ++ /* WARNING: this is not the C library 'mktime' call, it is a built in ++ * inline function from include/linux/time.h. It expects (requires) ++ * the month to be in the range 1-12 ++ */ ++ ++ tv.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1, ++ tm.tm_mday, tm.tm_hour, ++ tm.tm_min, tm.tm_sec); ++ ++ do_settimeofday(&tv); ++ ++ dev_info(&client->dev, ++ "setting the system clock to %d-%d-%d %d:%d:%d\n", ++ tm.tm_year + 1900, tm.tm_mon + 1, ++ tm.tm_mday, tm.tm_hour, tm.tm_min, ++ tm.tm_sec); ++ ++ return 0; ++} ++#if 0 ++struct pcf8563_limit ++{ ++ unsigned char reg; ++ unsigned char mask; ++ unsigned char min; ++ unsigned char max; ++}; ++ ++static int pcf8563_validate_client(struct i2c_client *client) ++{ ++ int i, xfer; ++ ++ /* Probe array. We will read the register at the specified ++ * address and check if the given bits are zero. ++ */ ++ static const unsigned char probe_zero_pattern[] = { ++ /* register, mask */ ++ PCF8563_REG_SR, 0x18, ++ PCF8563_REG_DTR, 0xF8, ++ PCF8563_REG_ATR, 0xC0, ++ PCF8563_REG_INT, 0x18, ++ PCF8563_REG_0, 0xFF, ++ }; ++ ++ static const struct pcf8563_limit probe_limits_pattern[] = { ++ /* register, mask, min, max */ ++ { PCF8563_REG_Y2K, 0xFF, 19, 20 }, ++ { PCF8563_REG_DW, 0xFF, 0, 6 }, ++ { PCF8563_REG_YR, 0xFF, 0, 99 }, ++ { PCF8563_REG_MO, 0xFF, 0, 12 }, ++ { PCF8563_REG_DT, 0xFF, 0, 31 }, ++ { PCF8563_REG_HR, 0x7F, 0, 23 }, ++ { PCF8563_REG_MN, 0xFF, 0, 59 }, ++ { PCF8563_REG_SC, 0xFF, 0, 59 }, ++ { PCF8563_REG_Y2K1, 0xFF, 19, 20 }, ++ { PCF8563_REG_Y2K0, 0xFF, 19, 20 }, ++ }; ++ ++ /* check that registers have bits at 0 where expected */ ++ for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) { ++ unsigned char buf; ++ ++ struct i2c_msg msgs[2] = { ++ { client->addr, 0, 1, &probe_zero_pattern[i] }, ++ { client->addr, I2C_M_RD, 1, &buf }, ++ }; ++ ++ xfer = i2c_transfer(client->adapter, msgs, 2); ++ if (xfer != 2) { ++ dev_err(&client->adapter->dev, ++ "%s: could not read register %x\n", ++ __FUNCTION__, probe_zero_pattern[i]); ++ ++ return -EIO; ++ } ++ ++ if ((buf & probe_zero_pattern[i+1]) != 0) { ++ dev_err(&client->adapter->dev, ++ "%s: register=%02x, zero pattern=%d, value=%x\n", ++ __FUNCTION__, probe_zero_pattern[i], i, buf); ++ ++ return -ENODEV; ++ } ++ } ++ ++ /* check limits (only registers with bcd values) */ ++ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) { ++ unsigned char reg, value; ++ ++ struct i2c_msg msgs[2] = { ++ { client->addr, 0, 2, &probe_limits_pattern[i].reg}, ++ { client->addr, I2C_M_RD, 1, ® }, ++ }; ++ ++ xfer = i2c_transfer(client->adapter, msgs, 2); ++ ++ if (xfer != 2) { ++ dev_err(&client->adapter->dev, ++ "%s: could not read register %x\n", ++ __FUNCTION__, probe_limits_pattern[i].reg); ++ ++ return -EIO; ++ } ++ ++ value = BCD2BIN(reg & probe_limits_pattern[i].mask); ++ ++ if (value > probe_limits_pattern[i].max || ++ value < probe_limits_pattern[i].min) { ++ dev_dbg(&client->adapter->dev, ++ "%s: register=%x, lim pattern=%d, value=%d\n", ++ __FUNCTION__, probe_limits_pattern[i].reg, i, value); ++ ++ return -ENODEV; ++ } ++ } ++ ++ return 0; ++} ++#endif ++static int pcf8563_attach(struct i2c_adapter *adapter) ++{ ++ return i2c_probe(adapter, &addr_data, pcf8563_probe); ++} ++ ++static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind) ++{ ++ struct i2c_client *client; ++ struct pcf8563_data *data; ++ ++ int err = 0; ++ ++ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__); ++ ++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) { ++ err = -ENODEV; ++ goto exit; ++ } ++ ++ if (!(data = kzalloc(sizeof(struct pcf8563_data), GFP_KERNEL))) { ++ err = -ENOMEM; ++ goto exit; ++ } ++ ++ client = &data->client; ++ client->addr = address; ++ client->driver = &pcf8563_driver; ++ client->adapter = adapter; ++ ++ strlcpy(client->name, "pcf8563", I2C_NAME_SIZE); ++ ++ i2c_set_clientdata(client, data); ++ ++ /* Verify the chip is really an PCF8563 */ ++ if (kind < 0) { ++/* if (pcf8563_validate_client(client) < 0) { ++ err = -ENODEV; ++ goto exit_kfree; ++ } ++*/ } ++ ++ /* Inform the i2c layer */ ++ if ((err = i2c_attach_client(client))) ++ goto exit_kfree; ++ ++ list_add(&data->list, &pcf8563_clients); ++ ++ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n"); ++ ++ /* If requested, set the system time */ ++ if (hctosys) ++ pcf8563_hctosys(client); ++ ++ return 0; ++ ++exit_kfree: ++ kfree(data); ++ ++exit: ++ return err; ++} ++ ++static int pcf8563_detach(struct i2c_client *client) ++{ ++ int err; ++ struct pcf8563_data *data = i2c_get_clientdata(client); ++ ++ if ((err = i2c_detach_client(client))) ++ return err; ++ ++ list_del(&data->list); ++ ++ kfree(data); ++ ++ return 0; ++} ++ ++static int pcf8563_command(struct i2c_client *client, unsigned int cmd, ++ void *param) ++{ ++ if (param == NULL) ++ return -EINVAL; ++ ++ if (!capable(CAP_SYS_TIME)) ++ return -EACCES; ++ ++ dev_dbg(&client->dev, "%s: cmd=%d\n", __FUNCTION__, cmd); ++ ++ switch (cmd) { ++ case PCF8563_CMD_GETDATETIME: ++ return pcf8563_get_datetime(client, param); ++/* ++ case PCF8563_CMD_SETTIME: ++ return pcf8563_set_datetime(client, param, 0, ++ PCF8563_CCR_BASE); ++ ++ case PCF8563_CMD_SETDATETIME: ++ return pcf8563_set_datetime(client, param, 1, ++ PCF8563_CCR_BASE); ++ ++ case PCF8563_CMD_GETALARM: ++ return pcf8563_get_datetime(client, param, PCF8563_ALM0_BASE); ++ ++ case PCF8563_CMD_SETALARM: ++ return pcf8563_set_datetime(client, param, 1, ++ PCF8563_ALM0_BASE); ++*/ ++ default: ++ return -EINVAL; ++ } ++} ++ ++static int __init pcf8563_init(void) ++{ ++ return i2c_add_driver(&pcf8563_driver); ++} ++ ++static void __exit pcf8563_exit(void) ++{ ++ i2c_del_driver(&pcf8563_driver); ++} ++ ++MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); ++MODULE_DESCRIPTION("Philips PCF8563 RTC driver"); ++MODULE_LICENSE("GPL"); ++MODULE_VERSION(DRV_VERSION); ++ ++EXPORT_SYMBOL_GPL(pcf8563_do_command); ++ ++module_init(pcf8563_init); ++module_exit(pcf8563_exit); +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-nas100d/include/linux/pcf8563.h 2005-11-15 20:55:54.000000000 +0100 +@@ -0,0 +1,24 @@ ++/* ++ * pcf8563.h - defines for drivers/i2c/chips/pcf8563.c ++ * Copyright 2005 Alessandro Zummo ++ * ++ * 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. ++ */ ++ ++#ifndef __LINUX_PCF8563_H__ ++#define __LINUX_PCF8563_H__ ++ ++/* commands */ ++ ++#define PCF8563_CMD_GETDATETIME 0 ++#define PCF8563_CMD_SETTIME 1 ++#define PCF8563_CMD_SETDATETIME 2 ++#define PCF8563_CMD_GETALARM 3 ++#define PCF8563_CMD_SETALARM 4 ++ ++extern int pcf8563_do_command(unsigned int cmd, void *arg); ++ ++#endif /* __LINUX_PCF8563_H__ */ +--- linux-nas100d.orig/drivers/i2c/chips/Kconfig 2005-11-11 22:22:43.000000000 +0100 ++++ linux-nas100d/drivers/i2c/chips/Kconfig 2005-11-15 22:37:25.000000000 +0100 +@@ -126,4 +126,13 @@ config SENSORS_MAX6875 + This driver can also be built as a module. If so, the module + will be called max6875. + ++config RTC_PCF8563_I2C ++ tristate "Philips PCF8563 RTC" ++ depends on I2C && EXPERIMENTAL ++ help ++ If you say yes here you get support for the Philips PCF8563 ++ Real Time Clock chip. This chip is used by the Iomega NAS100D. ++ ++ This driver can also be built as a module. If so, the module ++ will be called pcf8563. + endmenu +--- linux-nas100d.orig/drivers/i2c/chips/Makefile 2005-11-11 22:22:43.000000000 +0100 ++++ linux-nas100d/drivers/i2c/chips/Makefile 2005-11-15 21:11:26.000000000 +0100 +@@ -13,6 +13,7 @@ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591 + obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o + obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o + obj-$(CONFIG_TPS65010) += tps65010.o ++obj-$(CONFIG_RTC_PCF8563_I2C) += pcf8563.o + + ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) + EXTRA_CFLAGS += -DDEBUG diff --git a/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch new file mode 100644 index 0000000000..9f5d164356 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch @@ -0,0 +1,143 @@ + drivers/ide/pci/aec62xx.c | 51 +++++++++++++++++++++++++++++++++++++++++++--- + drivers/ide/setup-pci.c | 12 +++++++++- + 2 files changed, 59 insertions(+), 4 deletions(-) + +--- linux-nas100d.orig/drivers/ide/pci/aec62xx.c 2005-11-12 15:38:03.000000000 +0100 ++++ linux-nas100d/drivers/ide/pci/aec62xx.c 2005-11-13 01:45:26.000000000 +0100 +@@ -145,6 +145,15 @@ static int aec6210_tune_chipset (ide_dri + unsigned long flags; + + local_irq_save(flags); ++ ++#ifdef CONFIG_MACH_NAS100D ++ printk(KERN_INFO "aec62xx: nas100d tuning\n"); ++ pci_write_config_byte(hwif->pci_dev, PCI_LATENCY_TIMER, 0x90); ++ /* Enable burst mode & force 2 ports enable */ ++ pci_read_config_byte(hwif->pci_dev, 0x4a, &tmp0); ++ pci_write_config_byte(hwif->pci_dev, 0x4a, tmp0 | 0x80); ++#endif ++ + /* 0x40|(2*drive->dn): Active, 0x41|(2*drive->dn): Recovery */ + pci_read_config_word(dev, 0x40|(2*drive->dn), &d_conf); + tmp0 = pci_bus_clock_list(speed, BUSCLOCK(dev)); +@@ -263,7 +272,7 @@ static int aec62xx_irq_timeout (ide_driv + case PCI_DEVICE_ID_ARTOP_ATP865: + case PCI_DEVICE_ID_ARTOP_ATP865R: + printk(" AEC62XX time out "); +-#if 0 ++#ifdef CONFIG_MACH_NAS100D + { + int i = 0; + u8 reg49h = 0; +@@ -277,7 +286,7 @@ static int aec62xx_irq_timeout (ide_driv + default: + break; + } +-#if 0 ++#ifdef CONFIG_MACH_NAS100D + { + ide_hwif_t *hwif = HWIF(drive); + struct pci_dev *dev = hwif->pci_dev; +@@ -299,6 +308,14 @@ static unsigned int __devinit init_chips + { + int bus_speed = system_bus_clock(); + ++#ifdef CONFIG_MACH_NAS100D ++ /* enable both ports */ ++ byte tmp; ++ printk(KERN_INFO "%s: nas100d ports enable\n", name); ++ pci_read_config_byte(dev, 0x4a, &tmp); ++ pci_write_config_byte(dev, 0x4a, tmp | 0x06); ++#endif ++ + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); + printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, dev->resource[PCI_ROM_RESOURCE].start); +@@ -312,12 +329,35 @@ static unsigned int __devinit init_chips + return dev->irq; + } + ++#ifdef CONFIG_MACH_NAS100D ++static void nas100d_insw (unsigned long port, u16 *addr, u32 count) ++{ ++ while (count--) ++ *addr++ = __cpu_to_le16(inw(port)); ++} ++ ++static void nas100d_outw (u16 val, unsigned long port) ++{ ++ u32 n, byte_enables, data; ++ n = port % 4; ++ byte_enables = (0xf & ~(BIT(n) | BIT(n+1))) << IXP4XX_PCI_NP_CBE_BESL; ++ data = val << (8*n); ++ ixp4xx_pci_write(port, byte_enables | NP_CMD_IOWRITE, __le16_to_cpu(data)); ++} ++#endif ++ + static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) + { + hwif->autodma = 0; + hwif->tuneproc = &aec62xx_tune_drive; + hwif->speedproc = &aec62xx_tune_chipset; + ++#ifdef CONFIG_MACH_NAS100D ++ printk(KERN_INFO "aec62xx: enabling nas100d iops\n"); ++ hwif->OUTW = nas100d_outw; ++ hwif->INSW = nas100d_insw; ++#endif ++ + if (hwif->pci_dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) { + hwif->serialized = hwif->channel; + hwif->no_dsc = 1; +@@ -360,7 +400,7 @@ static void __devinit init_dma_aec62xx(i + } else { + u8 ata66 = 0; + pci_read_config_byte(hwif->pci_dev, 0x49, &ata66); +- if (!(hwif->udma_four)) ++ if (!(hwif->udma_four)) + hwif->udma_four = (ata66&(hwif->channel?0x02:0x01))?0:1; + } + +@@ -427,6 +467,9 @@ static ide_pci_device_t aec62xx_chipsets + .init_dma = init_dma_aec62xx, + .channels = 2, + .autodma = AUTODMA, ++#ifdef CONFIG_MACH_NAS100D ++ .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, ++#endif + .bootable = OFF_BOARD, + },{ /* 4 */ + .name = "AEC6X80R", +@@ -454,6 +497,8 @@ static int __devinit aec62xx_init_one(st + { + ide_pci_device_t *d = &aec62xx_chipsets[id->driver_data]; + ++ printk(KERN_INFO "aec62xx: using config %lx\n", id->driver_data); ++ + return d->init_setup(dev, d); + } + +--- linux-nas100d.orig/drivers/ide/setup-pci.c 2005-11-12 15:38:03.000000000 +0100 ++++ linux-nas100d/drivers/ide/setup-pci.c 2005-11-13 01:36:30.000000000 +0100 +@@ -602,10 +602,20 @@ void ide_pci_setup_ports(struct pci_dev + if ((d->flags & IDEPCI_FLAG_FORCE_PDC) && + (secondpdc++==1) && (port==1)) + goto controller_ok; +- ++ + if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) || + (tmp & e->mask) != e->val)) ++#ifdef CONFIG_MACH_NAS100D ++ { ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif + continue; /* port not enabled */ ++#ifdef CONFIG_MACH_NAS100D ++ } ++ else ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif ++ + controller_ok: + + if (d->channels <= port) diff --git a/packages/linux/nas100d-kernel/2.6.14/90-ixp4xx-pci-le.patch b/packages/linux/nas100d-kernel/2.6.14/90-ixp4xx-pci-le.patch new file mode 100644 index 0000000000..1a37b13a79 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/90-ixp4xx-pci-le.patch @@ -0,0 +1,11 @@ +--- linux-2.6.13/.pc/90-ixp4xx-pci-le.patch/arch/arm/mach-ixp4xx/common-pci.c 2005-08-28 16:41:01.000000000 -0700 ++++ linux-2.6.13/arch/arm/mach-ixp4xx/common-pci.c 2005-10-26 15:24:30.337542292 -0700 +@@ -427,7 +427,7 @@ void __init ixp4xx_pci_preinit(void) + #ifdef __ARMEB__ + *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE | PCI_CSR_PDS | PCI_CSR_ADS; + #else +- *PCI_CSR = PCI_CSR_IC; ++ *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE; + #endif + + pr_debug("DONE\n"); diff --git a/packages/linux/openslug-kernel-2.6.11.2/defconfig b/packages/linux/nas100d-kernel/2.6.14/defconfig index c14c06c32c..939a5d437e 100644 --- a/packages/linux/openslug-kernel-2.6.11.2/defconfig +++ b/packages/linux/nas100d-kernel/2.6.14/defconfig @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.11.2 -# Sat Jun 18 15:52:14 2005 +# Linux kernel version: 2.6.14 +# Sun Nov 13 02:06:49 2005 # CONFIG_ARM=y CONFIG_MMU=y CONFIG_UID16=y CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -16,24 +15,28 @@ CONFIG_GENERIC_IOMAP=y CONFIG_EXPERIMENTAL=y CONFIG_CLEAN_COMPILE=y CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_POSIX_MQUEUE is not set -CONFIG_BSD_PROCESS_ACCT=y -# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_BASE_FULL is not set CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y @@ -43,6 +46,7 @@ CONFIG_CC_ALIGN_LABELS=0 CONFIG_CC_ALIGN_LOOPS=0 CONFIG_CC_ALIGN_JUMPS=0 # CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=1 # # Loadable module support @@ -79,6 +83,7 @@ CONFIG_ARCH_IXP4XX=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 CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y # @@ -93,15 +98,14 @@ CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y # CONFIG_ARCH_IXDP425 is not set # CONFIG_MACH_IXDPG425 is not set # CONFIG_MACH_IXDP465 is not set -CONFIG_ARCH_NSLU2=y # CONFIG_ARCH_PRPMC1100 is not set +CONFIG_MACH_NAS100D=y # CONFIG_MACH_GTWX5715 is not set # # IXP4xx Options # CONFIG_IXP4XX_INDIRECT_PCI=y -CONFIG_DMABOUNCE=y # # Processor Type @@ -112,24 +116,21 @@ CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5T=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_MINICACHE=y # # Processor Features # -# CONFIG_ARM_THUMB is not set +CONFIG_ARM_THUMB=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_XSCALE_PMU=y +CONFIG_DMABOUNCE=y # -# General setup +# Bus support # +CONFIG_ISA_DMA_API=y CONFIG_PCI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -# CONFIG_XIP_KERNEL is not set CONFIG_PCI_LEGACY_PROC=y -# CONFIG_PCI_NAMES is not set # # PCCARD (PCMCIA/CardBus) support @@ -137,49 +138,261 @@ CONFIG_PCI_LEGACY_PROC=y # CONFIG_PCCARD is not set # -# PC-card bridges +# Kernel Features +# +# CONFIG_PREEMPT is not set +# CONFIG_NO_IDLE_HZ is not set +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options # +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="root=/dev/mtdblock3 rw rootfstype=jffs2 mem=64M@0x00000000 init=/linuxrc noirqdebug console=ttyS0,115200n8" +# CONFIG_XIP_KERNEL is not set # -# At least one math emulation must be selected +# Floating point emulation +# + +# +# At least one emulation must be selected # CONFIG_FPE_NWFPE=y # CONFIG_FPE_FASTFPE is not set + +# +# Userspace binary formats +# CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set # -# Generic Driver Options +# Power management options # -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set -CONFIG_PM=y -# CONFIG_PREEMPT is not set -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc reboot=s console=ttyS0,115200n8" -CONFIG_ALIGNMENT_TRAP=y +# CONFIG_PM is not set # -# Parallel port support +# Networking # -# CONFIG_PARPORT is not set +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +CONFIG_INET_AH=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=m +# CONFIG_IPV6_PRIVACY is not set +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 is not set +# CONFIG_IP_NF_CONNTRACK_MARK is not set +# 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=m +# 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=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +# CONFIG_IP_NF_MATCH_SCTP is not set +# CONFIG_IP_NF_MATCH_DCCP is not set +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +# CONFIG_IP_NF_MATCH_STRING is not set +CONFIG_IP_NF_FILTER=m +# CONFIG_IP_NF_TARGET_REJECT is not set +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_TARGET_NFQUEUE is not set +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +# CONFIG_IP_NF_TARGET_TTL 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 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP6_NF_TARGET_NFQUEUE is not set + +# +# Bridge: Netfilter Configuration +# +# CONFIG_BRIDGE_NF_EBTABLES 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=m +CONFIG_VLAN_8021Q=m +# CONFIG_DECNET is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +# 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=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +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 is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIUART is not set +CONFIG_BT_HCIBCM203X=m +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m # # Memory Technology Devices (MTD) # CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y 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=y +# CONFIG_MTD_CMDLINE_PARTS is not set # CONFIG_MTD_AFS_PARTS is not set # @@ -197,10 +410,14 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +# CONFIG_MTD_CFI_NOSWAP is not set +CONFIG_MTD_CFI_BE_BYTE_SWAP=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set # 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 @@ -208,6 +425,7 @@ 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=y # CONFIG_MTD_CFI_AMDSTD is not set # CONFIG_MTD_CFI_STAA is not set @@ -226,6 +444,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y CONFIG_MTD_IXP4XX=y # CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_PCI is not set +# CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers @@ -250,13 +469,17 @@ CONFIG_MTD_IXP4XX=y # CONFIG_MTD_NAND is not set # +# Parallel port support +# +# CONFIG_PARPORT is not set + +# # Plug and Play support # # # Block devices # -# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set @@ -268,11 +491,12 @@ CONFIG_BLK_DEV_LOOP=m # CONFIG_BLK_DEV_SX8 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_COUNT=4 CONFIG_BLK_DEV_RAM_SIZE=10240 CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -# CONFIG_CDROM_PKTCDVD is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set # # IO Schedulers @@ -284,198 +508,183 @@ CONFIG_IOSCHED_DEADLINE=y # CONFIG_ATA_OVER_ETH is not set # -# Multi-device support (RAID and LVM) -# -CONFIG_MD=y -CONFIG_BLK_DEV_MD=m -# CONFIG_MD_LINEAR is not set -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -# CONFIG_MD_RAID10 is not set -CONFIG_MD_RAID5=m -# CONFIG_MD_RAID6 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_MD_FAULTY is not set -# CONFIG_BLK_DEV_DM is not set - -# -# Networking support +# ATA/ATAPI/MFM/RLL support # -CONFIG_NET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_SL82C105 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_AEC62XX=m +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set # -# Networking options +# SCSI device support # -CONFIG_PACKET=m -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK_DEV=m -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -CONFIG_INET_TUNNEL=m -CONFIG_IP_TCPDIAG=y -# CONFIG_IP_TCPDIAG_IPV6 is not set +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_PROC_FS=y # -# IP: Virtual Server Configuration +# SCSI support type (disk, tape, CD-ROM) # -CONFIG_IP_VS=m -CONFIG_IP_VS_DEBUG=y -CONFIG_IP_VS_TAB_BITS=12 +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set # -# IPVS transport protocol load balancing support +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set # -# IPVS scheduler +# SCSI Transport Attributes # -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set # -# IPVS application helper +# SCSI low-level drivers # -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +CONFIG_SCSI_QLA2XXX=y +# CONFIG_SCSI_QLA21XX is not set +# CONFIG_SCSI_QLA22XX is not set +# CONFIG_SCSI_QLA2300 is not set +# CONFIG_SCSI_QLA2322 is not set +# CONFIG_SCSI_QLA6312 is not set +# CONFIG_SCSI_QLA24XX is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set # -# IP: Netfilter Configuration +# Multi-device support (RAID and LVM) # -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_CONNTRACK_MARK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set # -# Bridge: Netfilter Configuration +# Fusion MPT device support # -# CONFIG_BRIDGE_NF_EBTABLES is not set -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set +# CONFIG_FUSION is not set +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set # -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -CONFIG_IPX=m -# CONFIG_IPX_INTERN is not set -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -# 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 - +# IEEE 1394 (FireWire) support # -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CLK_JIFFIES=y -# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -# CONFIG_NET_SCH_CLK_CPU is not set -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -# CONFIG_NET_SCH_HFSC is not set -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -# CONFIG_NET_SCH_NETEM is not set -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_QOS=y -CONFIG_NET_ESTIMATOR=y -CONFIG_NET_CLS=y -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -# CONFIG_CLS_U32_PERF is not set -# CONFIG_NET_CLS_IND is not set -# CONFIG_CLS_U32_MARK is not set -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -# CONFIG_NET_CLS_ACT is not set -CONFIG_NET_CLS_POLICE=y +# CONFIG_IEEE1394 is not set # -# Network testing +# I2O device support # -CONFIG_NET_PKTGEN=m -CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y -CONFIG_NETPOLL_TRAP=y -CONFIG_NET_POLL_CONTROLLER=y -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -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 is not set +# CONFIG_I2O is not set # -# Bluetooth device drivers +# Network device support # -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUSB_SCO=y -# CONFIG_BT_HCIUART is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -# CONFIG_BT_HCIBFUSB is not set -# CONFIG_BT_HCIVHCI is not set CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set CONFIG_TUN=m -# CONFIG_ETHERTAP is not set # # ARCnet devices @@ -483,14 +692,21 @@ CONFIG_TUN=m # CONFIG_ARCNET is not set # +# PHY device support +# +# CONFIG_PHYLIB is not set + +# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MII=y # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set # # Tulip family network device support @@ -527,13 +743,17 @@ CONFIG_NET_PCI=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set # CONFIG_SK98LIN is not set # CONFIG_VIA_VELOCITY is not set # CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set # # Ethernet (10000 Mbit) # +# CONFIG_CHELSIO_T1 is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set @@ -555,6 +775,7 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # +# CONFIG_AIRO is not set # CONFIG_HERMES is not set # CONFIG_ATMEL is not set @@ -562,6 +783,7 @@ CONFIG_NET_RADIO=y # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # # CONFIG_PRISM54 is not set +# CONFIG_HOSTAP is not set CONFIG_NET_WIRELESS=y # @@ -582,94 +804,10 @@ CONFIG_PPP_BSDCOMP=m # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set CONFIG_NETCONSOLE=m - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI Transport Attributes -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -CONFIG_SCSI_QLA2XXX=y -# CONFIG_SCSI_QLA21XX is not set -# CONFIG_SCSI_QLA22XX is not set -# CONFIG_SCSI_QLA2300 is not set -# CONFIG_SCSI_QLA2322 is not set -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Fusion MPT device support -# -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NET_POLL_CONTROLLER=y # # ISDN subsystem @@ -679,22 +817,31 @@ CONFIG_SCSI_QLA2XXX=y # # Input device support # -# CONFIG_INPUT is not set +CONFIG_INPUT=m # # Userland interfaces # +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set # -# Input I/O drivers +# Input Device Drivers # -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set # -# Input Device Drivers +# Hardware I/O ports # +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set # # Character devices @@ -715,9 +862,10 @@ CONFIG_SERIAL_8250_NR_UARTS=2 # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LEGACY_PTY_COUNT=16 # # IPMI @@ -747,7 +895,7 @@ CONFIG_IXP4XX_WATCHDOG=y # # CONFIG_USBPCWATCHDOG is not set # CONFIG_NVRAM is not set -# CONFIG_RTC is not set +CONFIG_RTC=m # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -759,6 +907,11 @@ CONFIG_IXP4XX_WATCHDOG=y # CONFIG_RAW_DRIVER is not set # +# TPM devices +# +# CONFIG_TCG_TPM is not set + +# # I2C support # CONFIG_I2C=y @@ -781,12 +934,11 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_AMD8111 is not set # CONFIG_I2C_I801 is not set # CONFIG_I2C_I810 is not set +# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_IOP3XX is not set -# CONFIG_I2C_ISA is not set CONFIG_I2C_IXP4XX=y # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_SAVAGE4 is not set # CONFIG_SCx200_ACB is not set @@ -800,17 +952,39 @@ CONFIG_I2C_IXP4XX=y # CONFIG_I2C_PCA_ISA is not set # -# Hardware Sensors Chip support +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +CONFIG_SENSORS_EEPROM=n +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_RTC8564 is not set +# CONFIG_SENSORS_MAX6875 is not set +CONFIG_I2C_DEBUG_CORE=n +CONFIG_I2C_DEBUG_ALGO=n +CONFIG_I2C_DEBUG_BUS=n +CONFIG_I2C_DEBUG_CHIP=y +CONFIG_RTC_PCF8563_I2C=m + +# +# Hardware Monitoring support # -CONFIG_I2C_SENSOR=y +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 @@ -821,27 +995,27 @@ CONFIG_I2C_SENSOR=y # 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_SMSC47B397 is not set +# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83792D is not set # CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_HWMON_DEBUG_CHIP is not set # -# Other I2C Chip support +# Misc devices +# + +# +# Multimedia Capabilities Port drivers # -CONFIG_SENSORS_EEPROM=y -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -CONFIG_SENSORS_X1205=y -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set # # Multimedia devices @@ -855,20 +1029,27 @@ CONFIG_VIDEO_DEV=m # # Video Adapters # -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DPC is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_OVCAMCHIP is not set +CONFIG_VIDEO_BT848=m +# CONFIG_VIDEO_SAA6588 is not set +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_OVCAMCHIP=m # # Radio Adapters @@ -881,39 +1062,341 @@ CONFIG_VIDEO_DEV=m # Digital Video Broadcasting Devices # # CONFIG_DVB is not set +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_RTCTIMER 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 + +# +# PCI devices +# +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_HDA_INTEL is not set + +# +# ALSA ARM devices +# + +# +# USB devices +# +CONFIG_SND_USB_AUDIO=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_SPLIT_ISO=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# 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_UHCI_HCD=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=m +CONFIG_USB_PRINTER=m + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +# CONFIG_HID_FF is not set +CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +CONFIG_USB_KBD=m +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_MTOUCH is not set +# CONFIG_USB_ITMTOUCH is not set +# CONFIG_USB_EGALAX is not set +# CONFIG_USB_YEALINK is not set +# CONFIG_USB_XPAD is not set +# CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_DABUSB is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_W9968CF is not set +CONFIG_USB_PWC=m + +# +# USB Network Adapters +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# 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=m +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_MON is not set + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_AIRPRIME is not set +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +# CONFIG_USB_SERIAL_CP2101 is not set +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +# CONFIG_USB_SERIAL_KEYSPAN is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_PL2303=m +# CONFIG_USB_SERIAL_HP4X is not set +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_EZUSB=y + +# +# 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_SISUSBVGA 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 is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set # # File systems # CONFIG_EXT2_FS=m -# CONFIG_EXT2_FS_XATTR is not set -CONFIG_EXT3_FS=m -# CONFIG_EXT3_FS_XATTR is not set -CONFIG_JBD=m +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=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set -# CONFIG_REISERFS_FS_XATTR is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y # CONFIG_JFS_FS is not set - -# -# XFS support -# +CONFIG_FS_POSIX_ACL=y # CONFIG_XFS_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y # CONFIG_QUOTA is not set CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=m -# CONFIG_JOLIET is not set -# CONFIG_ZISOFS is not set +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m CONFIG_UDF_FS=m CONFIG_UDF_NLS=y @@ -927,19 +1410,17 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="utf8" CONFIG_NTFS_FS=m # CONFIG_NTFS_DEBUG is not set -# CONFIG_NTFS_RW is not set +CONFIG_NTFS_RW=y # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y -# CONFIG_TMPFS_XATTR is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set # # Miscellaneous filesystems @@ -954,8 +1435,7 @@ CONFIG_RAMFS=y # CONFIG_JFFS_FS is not set CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_JFFS2_FS_NOR_ECC is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y @@ -972,23 +1452,33 @@ CONFIG_JFFS2_RTIME=y # CONFIG_NFS_FS=m CONFIG_NFS_V3=y -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFS_DIRECTIO=y CONFIG_NFSD=m -# CONFIG_NFSD_V3 is not set +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m # CONFIG_RPCSEC_GSS_SPKM3 is not set CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_CIFS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_EXPERIMENTAL 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 @@ -1060,225 +1550,14 @@ CONFIG_NLS_UTF8=m # CONFIG_PROFILING is not set # -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# -# CONFIG_SND is not set - -# -# Open Sound System -# -# CONFIG_SOUND_PRIME is not set - -# -# Misc devices -# - -# -# USB support -# -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# 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 -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_SPLIT_ISO is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=m -# CONFIG_USB_SL811_HCD is not set - -# -# USB Device Class drivers -# -CONFIG_USB_AUDIO=m - -# -# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem -# -# CONFIG_USB_MIDI is not set -# CONFIG_USB_ACM is not set -CONFIG_USB_PRINTER=m - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_RW_DETECT is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set - -# -# USB Input Devices -# -# CONFIG_USB_HID is not set - -# -# USB HID Boot Protocol drivers -# - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set -# CONFIG_USB_VICAM is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_IBMCAM is not set -# CONFIG_USB_KONICAWC is not set -# CONFIG_USB_OV511 is not set -# CONFIG_USB_SE401 is not set -# CONFIG_USB_SN9C102 is not set -# CONFIG_USB_STV680 is not set - -# -# USB Network Adapters -# -# CONFIG_USB_CATC is not set -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -# CONFIG_USB_RTL8150 is not set -CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y -CONFIG_USB_KC2190=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_BELKIN=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -# 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=m -# 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_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_TEST is not set - -# -# USB ATM/DSL drivers -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# # Kernel hacking # -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set +# CONFIG_PRINTK_TIME is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_DEBUG_BUGVERBOSE 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 @@ -1289,7 +1568,31 @@ CONFIG_DEBUG_LL=y # # Cryptographic options # -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_TEST=m # # Hardware crypto devices @@ -1299,7 +1602,8 @@ CONFIG_DEBUG_LL=y # Library routines # CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set +CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/nas100d-kernel/2.6.14/nas100d-pci.c b/packages/linux/nas100d-kernel/2.6.14/nas100d-pci.c new file mode 100644 index 0000000000..1f934068e9 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/nas100d-pci.c @@ -0,0 +1,87 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-pci.c + * + * NAS 100d board-level PCI initialization + * + * based on ixdp425-pci.c: + * Copyright (C) 2002 Intel Corporation. + * Copyright (C) 2003-2004 MontaVista Software, Inc. + * + * Maintainer: http://www.nslu2-linux.org/ + * + * 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 + * published by the Free Software Foundation. + * + */ + +#include <linux/config.h> +#include <linux/pci.h> +#include <linux/init.h> + +#include <asm/mach/pci.h> +#include <asm/mach-types.h> + +void __init nas100d_pci_preinit(void) +{ + set_irq_type(IRQ_NAS100D_PCI_INTA, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTB, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTC, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTD, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTE, IRQT_LOW); + + gpio_line_isr_clear(NAS100D_PCI_INTA_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTB_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTC_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTD_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTE_PIN); + + ixp4xx_pci_preinit(); +} + +static int __init nas100d_map_irq(struct pci_dev *dev, u8 slot, u8 pin) +{ + if (slot < 1 || slot > 3 || pin < 1 || pin > 3) + return -1; + + switch (slot) + { + case 1: + if (pin == 1) + return IRQ_NAS100D_PCI_INTA; + break; + case 2: + if (pin == 1) + return IRQ_NAS100D_PCI_INTB; + break; + case 3: + if (pin == 1) + return IRQ_NAS100D_PCI_INTC; + if (pin == 2) + return IRQ_NAS100D_PCI_INTD; + if (pin == 3) + return IRQ_NAS100D_PCI_INTE; + break; + } + + return -1; +} + +struct hw_pci __initdata nas100d_pci = { + .nr_controllers = 1, + .preinit = nas100d_pci_preinit, + .swizzle = pci_std_swizzle, + .setup = ixp4xx_setup, + .scan = ixp4xx_scan_bus, + .map_irq = nas100d_map_irq, +}; + +int __init nas100d_pci_init(void) +{ + if (machine_is_nas100d()) + pci_common_init(&nas100d_pci); + + return 0; +} + +subsys_initcall(nas100d_pci_init); diff --git a/packages/linux/nas100d-kernel/2.6.14/nas100d-power.c b/packages/linux/nas100d-kernel/2.6.14/nas100d-power.c new file mode 100644 index 0000000000..94ce5d1b46 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/nas100d-power.c @@ -0,0 +1,92 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-power.c + * + * NAS 100d Power/Reset driver + * + * Copyright (C) 2005 Tower Technologies + * + * based on nas100d-io.c + * Copyright (C) 2004 Karen Spearel + * + * Author: Alessandro Zummo <a.zummo@towertech.it> + * Maintainers: http://www.nslu2-linux.org/ + * + * 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 + * published by the Free Software Foundation. + * + */ + +#include <linux/module.h> +#include <linux/reboot.h> +#include <linux/interrupt.h> + +#include <asm/mach-types.h> + +extern void ctrl_alt_del(void); + +static irqreturn_t nas100d_power_handler(int irq, void *dev_id, struct pt_regs *regs) +{ + /* Signal init to do the ctrlaltdel action, this will bypass init if + * it hasn't started and do a kernel_restart. + */ + ctrl_alt_del(); + + return IRQ_HANDLED; +} + +static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) +{ + /* This is the paper-clip reset, it shuts the machine down directly. + */ + machine_power_off(); + + return IRQ_HANDLED; +} + +static int __init nas100d_power_init(void) +{ + if (!(machine_is_nas100d())) + return 0; + + // *IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */ + + set_irq_type(NAS100D_RB_IRQ, IRQT_LOW); +// set_irq_type(NAS100D_PB_IRQ, IRQT_HIGH); + + gpio_line_isr_clear(NAS100D_RB_GPIO); +// gpio_line_isr_clear(NAS100D_PB_GPIO); + + if (request_irq(NAS100D_RB_IRQ, &nas100d_reset_handler, + SA_INTERRUPT, "NAS100D reset button", NULL) < 0) { + + printk(KERN_DEBUG "Reset Button IRQ %d not available\n", + NAS100D_RB_IRQ); + + return -EIO; + } +/* + if (request_irq(NAS100D_PB_IRQ, &nas100d_power_handler, + SA_INTERRUPT, "NAS100D power button", NULL) < 0) { + + printk(KERN_DEBUG "Power Button IRQ %d not available\n", + NAS100D_PB_IRQ); + + return -EIO; + } +*/ + return 0; +} + +static void __exit nas100d_power_exit(void) +{ + free_irq(NAS100D_RB_IRQ, NULL); +// free_irq(NAS100D_PB_IRQ, NULL); +} + +module_init(nas100d_power_init); +module_exit(nas100d_power_exit); + +MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); +MODULE_DESCRIPTION("NAS100D Power/Reset driver"); +MODULE_LICENSE("GPL"); diff --git a/packages/linux/nas100d-kernel/2.6.14/nas100d-setup.c b/packages/linux/nas100d-kernel/2.6.14/nas100d-setup.c new file mode 100644 index 0000000000..0dbb0b4e69 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/nas100d-setup.c @@ -0,0 +1,132 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-setup.c + * + * NAS 100d board-setup + * + * based ixdp425-setup.c: + * Copyright (C) 2003-2004 MontaVista Software, Inc. + * + * Author: Mark Rakes <mrakes at mac.com> + * Maintainers: http://www.nslu2-linux.org/ + * + */ + +#include <linux/kernel.h> +#include <linux/serial.h> +#include <linux/serial_8250.h> + +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/flash.h> + +static struct flash_platform_data nas100d_flash_data = { + .map_name = "cfi_probe", + .width = 2, +}; + +static struct resource nas100d_flash_resource = { + .start = NAS100D_FLASH_BASE, + .end = NAS100D_FLASH_BASE + NAS100D_FLASH_SIZE, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device nas100d_flash = { + .name = "IXP4XX-Flash", + .id = 0, + .dev.platform_data = &nas100d_flash_data, + .num_resources = 1, + .resource = &nas100d_flash_resource, +}; + +static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = { + .sda_pin = NAS100D_SDA_PIN, + .scl_pin = NAS100D_SCL_PIN, +}; + +static struct platform_device nas100d_i2c_controller = { + .name = "IXP4XX-I2C", + .id = 0, + .dev.platform_data = &nas100d_i2c_gpio_pins, + .num_resources = 0, +}; + +static struct resource nas100d_uart_resources[] = { + { + .start = IXP4XX_UART1_BASE_PHYS, + .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM, + }, + { + .start = IXP4XX_UART2_BASE_PHYS, + .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM, + } +}; + +static struct plat_serial8250_port nas100d_uart_data[] = { + { + .mapbase = IXP4XX_UART1_BASE_PHYS, + .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, + .irq = IRQ_IXP4XX_UART1, + .flags = UPF_BOOT_AUTOCONF, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = IXP4XX_UART_XTAL, + }, + { + .mapbase = IXP4XX_UART2_BASE_PHYS, + .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, + .irq = IRQ_IXP4XX_UART2, + .flags = UPF_BOOT_AUTOCONF, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = IXP4XX_UART_XTAL, + }, + { } +}; + +static struct platform_device nas100d_uart = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, + .dev.platform_data = nas100d_uart_data, + .num_resources = 2, + .resource = nas100d_uart_resources, +}; + +static struct platform_device *nas100d_devices[] __initdata = { + &nas100d_i2c_controller, + &nas100d_flash, + &nas100d_uart, +}; + +static void nas100d_power_off(void) +{ + /* This causes the box to drop the power and go dead. */ + + /* enable the pwr cntl gpio */ + gpio_line_config(NAS100D_PO_GPIO, IXP4XX_GPIO_OUT); + + /* do the deed */ + gpio_line_set(NAS100D_PO_GPIO, IXP4XX_GPIO_HIGH); +} + +static void __init nas100d_init(void) +{ + ixp4xx_sys_init(); + + pm_power_off = nas100d_power_off; + + platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices)); +} + +MACHINE_START(NAS100D, "Iomega NAS 100d") + /* Maintainer: www.nslu2-linux.org */ + .phys_ram = PHYS_OFFSET, + .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, + .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, + .boot_params = 0x00000100, + .map_io = ixp4xx_map_io, + .init_irq = ixp4xx_init_irq, + .timer = &ixp4xx_timer, + .init_machine = nas100d_init, +MACHINE_END diff --git a/packages/linux/nas100d-kernel/2.6.14/nas100d.h b/packages/linux/nas100d-kernel/2.6.14/nas100d.h new file mode 100644 index 0000000000..1623712b78 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/nas100d.h @@ -0,0 +1,75 @@ +/* + * include/asm-arm/arch-ixp4xx/nas100d.h + * + * NAS100D platform specific definitions + * + * Copyright (c) 2005 Tower Technologies + * + * Author: Alessandro Zummo <a.zummo@towertech.it> + * + * based on ixdp425.h: + * Copyright 2004 (c) MontaVista, Software, Inc. + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __ASM_ARCH_HARDWARE_H__ +#error "Do not include this directly, instead #include <asm/hardware.h>" +#endif + +#define NAS100D_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS +#define NAS100D_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE + +#define NAS100D_SDA_PIN 5 +#define NAS100D_SCL_PIN 6 + +/* + * NAS100D PCI IRQs + */ +#define NAS100D_PCI_MAX_DEV 5 +#define NAS100D_PCI_IRQ_LINES 5 + + +/* PCI controller GPIO to IRQ pin mappings */ +#define NAS100D_PCI_INTA_PIN 11 +#define NAS100D_PCI_INTB_PIN 10 +#define NAS100D_PCI_INTC_PIN 9 +#define NAS100D_PCI_INTD_PIN 8 +#define NAS100D_PCI_INTE_PIN 7 + +/* GPIO */ + +#define NAS100D_GPIO0 0 +#define NAS100D_GPIO1 1 +#define NAS100D_GPIO2 2 +#define NAS100D_GPIO3 3 +#define NAS100D_GPIO4 4 +#define NAS100D_GPIO5 5 +#define NAS100D_GPIO6 6 +#define NAS100D_GPIO7 7 +#define NAS100D_GPIO8 8 +#define NAS100D_GPIO9 9 +#define NAS100D_GPIO10 10 +#define NAS100D_GPIO11 11 +#define NAS100D_GPIO12 12 +#define NAS100D_GPIO13 13 +#define NAS100D_GPIO14 14 +#define NAS100D_GPIO15 15 + + +/* Buttons */ + +#define NAS100D_PB_GPIO NAS100D_GPIO14 +#define NAS100D_RB_GPIO NAS100D_GPIO4 +#define NAS100D_PO_GPIO NAS100D_GPIO12 /* power off */ + +#define NAS100D_PB_IRQ IRQ_IXP4XX_GPIO14 +#define NAS100D_RB_IRQ IRQ_IXP4XX_GPIO4 + +/* +#define NAS100D_PB_BM (1L << NAS100D_PB_GPIO) +#define NAS100D_PO_BM (1L << NAS100D_PO_GPIO) +#define NAS100D_RB_BM (1L << NAS100D_RB_GPIO) +*/ diff --git a/packages/linux/openslug-kernel-2.6.11.2/.mtn2git_empty b/packages/linux/nas100d-kernel/2.6.15/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/openslug-kernel-2.6.11.2/.mtn2git_empty +++ b/packages/linux/nas100d-kernel/2.6.15/.mtn2git_empty diff --git a/packages/linux/nas100d-kernel/2.6.15/00-memory-h-page-shift.patch b/packages/linux/nas100d-kernel/2.6.15/00-memory-h-page-shift.patch new file mode 100644 index 0000000000..29b048e27a --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/00-memory-h-page-shift.patch @@ -0,0 +1,10 @@ +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/memory.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/memory.h 1970-01-01 00:00:00.000000000 +0000 +@@ -8,6 +8,7 @@ + #define __ASM_ARCH_MEMORY_H + + #include <asm/sizes.h> ++#include <asm/page.h> + + /* + * Physical DRAM offset. diff --git a/packages/linux/nas100d-kernel/2.6.15/01-i2c-ixp4xx.patch b/packages/linux/nas100d-kernel/2.6.15/01-i2c-ixp4xx.patch new file mode 100644 index 0000000000..16426bdee6 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/01-i2c-ixp4xx.patch @@ -0,0 +1,29 @@ +--- linux-2.6.15/drivers/i2c/busses/i2c-ixp4xx.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/i2c/busses/i2c-ixp4xx.c 1970-01-01 00:00:00.000000000 +0000 +@@ -35,7 +35,7 @@ + + #include <asm/hardware.h> /* Pick up IXP4xx-specific bits */ + +-static struct device_driver ixp4xx_i2c_driver; ++static struct platform_driver ixp4xx_i2c_driver; + + static inline int ixp4xx_scl_pin(void *data) + { +@@ -128,7 +128,7 @@ static int ixp4xx_i2c_probe(struct platf + drv_data->algo_data.timeout = 100; + + drv_data->adapter.id = I2C_HW_B_IXP4XX; +- strlcpy(drv_data->adapter.name, ixp4xx_i2c_driver.name, ++ strlcpy(drv_data->adapter.name, ixp4xx_i2c_driver.driver.name, + I2C_NAME_SIZE); + drv_data->adapter.algo_data = &drv_data->algo_data; + +@@ -140,7 +140,7 @@ static int ixp4xx_i2c_probe(struct platf + gpio_line_set(gpio->sda_pin, 0); + + if ((err = i2c_bit_add_bus(&drv_data->adapter) != 0)) { +- printk(KERN_ERR "ERROR: Could not install %s\n", dev->bus_id); ++ printk(KERN_ERR "ERROR: Could not install %s\n", ixp4xx_i2c_driver.driver.name); + + kfree(drv_data); + return err; diff --git a/packages/linux/nas100d-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch b/packages/linux/nas100d-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch new file mode 100644 index 0000000000..edee083e3c --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch @@ -0,0 +1,44 @@ +On IXP4XX systems the FIS directory is big endian even with a little +endian kernel. This patch recognises the FIS directory on such a +system and byte swaps it to obtain a valid table based on the 'size' +field of the FIS directory (the size field is know to always match the +erase block size on such systems, and probably all systems.) + +--- linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000 +@@ -89,8 +89,34 @@ + i = numslots; + break; + } +- if (!memcmp(buf[i].name, "FIS directory", 14)) ++ if (!memcmp(buf[i].name, "FIS directory", 14)) { ++ /* This is apparently the FIS directory entry for the ++ * FIS directory itself. The FIS directory size is ++ * one erase block, if the buf[i].size field is ++ * swab32(erasesize) then we know we are looking at ++ * a byte swapped FIS directory - swap all the entries! ++ * (NOTE: this is 'size' not 'data_length', size is ++ * the full size of the entry.) ++ */ ++ if (swab32(buf[i].size) == master->erasesize) { ++ int j; ++ for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) { ++ /* The unsigned long fields were written with the ++ * wrong byte sex, name and pad have no byte sex. ++ */ ++# define do_swab32(x) (x) = swab32(x) ++ do_swab32(buf[j].flash_base); ++ do_swab32(buf[j].mem_base); ++ do_swab32(buf[j].size); ++ do_swab32(buf[j].entry_point); ++ do_swab32(buf[j].data_length); ++ do_swab32(buf[j].desc_cksum); ++ do_swab32(buf[j].file_cksum); ++# undef do_swab32 ++ } ++ } + break; ++ } + } + if (i == numslots) { + /* Didn't find it */ diff --git a/packages/linux/nas100d-kernel/2.6.15/19-jffs2-force-be.patch b/packages/linux/nas100d-kernel/2.6.15/19-jffs2-force-be.patch new file mode 100644 index 0000000000..09379031dd --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/19-jffs2-force-be.patch @@ -0,0 +1,13 @@ +--- linux-2.6.15/fs/jffs2/nodelist.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/fs/jffs2/nodelist.h 1970-01-01 00:00:00.000000000 +0000 +@@ -44,7 +44,9 @@ + #define D2(x) + #endif + +-#define JFFS2_NATIVE_ENDIAN ++#undef JFFS2_NATIVE_ENDIAN ++#define JFFS2_BIG_ENDIAN 1 ++#undef JFFS2_LITTLE_ENDIAN + + /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from + whatever OS we're actually running on here too. */ diff --git a/packages/linux/nas100d-kernel/2.6.15/50-nas100d-arch.patch b/packages/linux/nas100d-kernel/2.6.15/50-nas100d-arch.patch new file mode 100644 index 0000000000..eed275fefb --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/50-nas100d-arch.patch @@ -0,0 +1,56 @@ + arch/arm/mach-ixp4xx/Kconfig | 8 ++++++++ + arch/arm/mach-ixp4xx/Makefile | 1 + + include/asm-arm/arch-ixp4xx/hardware.h | 1 + + include/asm-arm/arch-ixp4xx/irqs.h | 9 +++++++++ + 4 files changed, 19 insertions(+) + +--- linux-nas100d.orig/arch/arm/mach-ixp4xx/Kconfig 2005-11-16 22:29:00.000000000 +0100 ++++ linux-nas100d/arch/arm/mach-ixp4xx/Kconfig 2005-11-16 22:29:52.000000000 +0100 +@@ -71,6 +71,14 @@ config ARCH_PRPMC1100 + PrPCM1100 Processor Mezanine Module. For more information on + this platform, see <file:Documentation/arm/IXP4xx>. + ++config MACH_NAS100D ++ bool ++ prompt "NAS100D" ++ help ++ Say 'Y' here if you want your kernel to support Iomega's ++ NAS 100d device. For more information on this platform, ++ see http://www.nslu2-linux.org/wiki/NAS100d/HomePage ++ + # + # Avila and IXDP share the same source for now. Will change in future + # +--- linux-nas100d.orig/arch/arm/mach-ixp4xx/Makefile 2005-11-16 22:29:00.000000000 +0100 ++++ linux-nas100d/arch/arm/mach-ixp4xx/Makefile 2005-11-16 22:30:37.000000000 +0100 +@@ -9,4 +9,5 @@ obj-$(CONFIG_MACH_IXDPG425) += ixdpg425- + obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o + obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o + obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o ++obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o + +--- linux-nas100d.orig/include/asm-arm/arch-ixp4xx/hardware.h 2005-11-16 22:29:18.000000000 +0100 ++++ linux-nas100d/include/asm-arm/arch-ixp4xx/hardware.h 2005-11-16 22:31:08.000000000 +0100 +@@ -45,5 +45,6 @@ extern unsigned int processor_id; + #include "coyote.h" + #include "prpmc1100.h" + #include "nslu2.h" ++#include "nas100d.h" + + #endif /* _ASM_ARCH_HARDWARE_H */ +--- linux-nas100d.orig/include/asm-arm/arch-ixp4xx/irqs.h 2005-11-16 22:29:18.000000000 +0100 ++++ linux-nas100d/include/asm-arm/arch-ixp4xx/irqs.h 2005-11-16 22:29:52.000000000 +0100 +@@ -100,4 +100,13 @@ + #define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10 + #define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 + ++/* ++ * NAS100D board IRQs ++ */ ++#define IRQ_NAS100D_PCI_INTA IRQ_IXP4XX_GPIO11 ++#define IRQ_NAS100D_PCI_INTB IRQ_IXP4XX_GPIO10 ++#define IRQ_NAS100D_PCI_INTC IRQ_IXP4XX_GPIO9 ++#define IRQ_NAS100D_PCI_INTD IRQ_IXP4XX_GPIO8 ++#define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7 ++ + #endif diff --git a/packages/linux/nas100d-kernel/2.6.15/55-nas100d-arch.patch b/packages/linux/nas100d-kernel/2.6.15/55-nas100d-arch.patch new file mode 100644 index 0000000000..4b40047a92 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/55-nas100d-arch.patch @@ -0,0 +1,395 @@ + arch/arm/mach-ixp4xx/nas100d-pci.c | 77 +++++++++++++++++++ + arch/arm/mach-ixp4xx/nas100d-power.c | 92 +++++++++++++++++++++++ + arch/arm/mach-ixp4xx/nas100d-setup.c | 132 ++++++++++++++++++++++++++++++++++ + drivers/ide/pci/aec62xx.c | 11 ++ + include/asm-arm/arch-ixp4xx/nas100d.h | 75 +++++++++++++++++++ + 5 files changed, 387 insertions(+) + +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/nas100d.h 2005-11-12 14:24:14.000000000 +0100 +@@ -0,0 +1,75 @@ ++/* ++ * include/asm-arm/arch-ixp4xx/nas100d.h ++ * ++ * NAS100D platform specific definitions ++ * ++ * Copyright (c) 2005 Tower Technologies ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * ++ * based on ixdp425.h: ++ * Copyright 2004 (c) MontaVista, Software, Inc. ++ * ++ * This file is licensed under the terms of the GNU General Public ++ * License version 2. This program is licensed "as is" without any ++ * warranty of any kind, whether express or implied. ++ */ ++ ++#ifndef __ASM_ARCH_HARDWARE_H__ ++#error "Do not include this directly, instead #include <asm/hardware.h>" ++#endif ++ ++#define NAS100D_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS ++#define NAS100D_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE ++ ++#define NAS100D_SDA_PIN 6 ++#define NAS100D_SCL_PIN 5 ++ ++/* ++ * NAS100D PCI IRQs ++ */ ++#define NAS100D_PCI_MAX_DEV 3 ++#define NAS100D_PCI_IRQ_LINES 3 ++ ++ ++/* PCI controller GPIO to IRQ pin mappings */ ++#define NAS100D_PCI_INTA_PIN 11 ++#define NAS100D_PCI_INTB_PIN 10 ++#define NAS100D_PCI_INTC_PIN 9 ++#define NAS100D_PCI_INTD_PIN 8 ++#define NAS100D_PCI_INTE_PIN 7 ++ ++/* GPIO */ ++ ++#define NAS100D_GPIO0 0 ++#define NAS100D_GPIO1 1 ++#define NAS100D_GPIO2 2 ++#define NAS100D_GPIO3 3 ++#define NAS100D_GPIO4 4 ++#define NAS100D_GPIO5 5 ++#define NAS100D_GPIO6 6 ++#define NAS100D_GPIO7 7 ++#define NAS100D_GPIO8 8 ++#define NAS100D_GPIO9 9 ++#define NAS100D_GPIO10 10 ++#define NAS100D_GPIO11 11 ++#define NAS100D_GPIO12 12 ++#define NAS100D_GPIO13 13 ++#define NAS100D_GPIO14 14 ++#define NAS100D_GPIO15 15 ++ ++ ++/* Buttons */ ++ ++#define NAS100D_PB_GPIO NAS100D_GPIO14 ++#define NAS100D_RB_GPIO NAS100D_GPIO4 ++#define NAS100D_PO_GPIO NAS100D_GPIO12 /* power off */ ++ ++#define NAS100D_PB_IRQ IRQ_IXP4XX_GPIO14 ++#define NAS100D_RB_IRQ IRQ_IXP4XX_GPIO4 ++ ++/* ++#define NAS100D_PB_BM (1L << NAS100D_PB_GPIO) ++#define NAS100D_PO_BM (1L << NAS100D_PO_GPIO) ++#define NAS100D_RB_BM (1L << NAS100D_RB_GPIO) ++*/ +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nas100d-pci.c 2005-11-12 14:24:14.000000000 +0100 +@@ -0,0 +1,77 @@ ++/* ++ * arch/arm/mach-ixp4xx/nas100d-pci.c ++ * ++ * NAS 100d board-level PCI initialization ++ * ++ * based on ixdp425-pci.c: ++ * Copyright (C) 2002 Intel Corporation. ++ * Copyright (C) 2003-2004 MontaVista Software, Inc. ++ * ++ * Maintainer: http://www.nslu2-linux.org/ ++ * ++ * 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 ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/pci.h> ++#include <linux/init.h> ++ ++#include <asm/mach/pci.h> ++#include <asm/mach-types.h> ++ ++void __init nas100d_pci_preinit(void) ++{ ++ set_irq_type(IRQ_NAS100D_PCI_INTA, IRQT_LOW); ++ set_irq_type(IRQ_NAS100D_PCI_INTB, IRQT_LOW); ++ set_irq_type(IRQ_NAS100D_PCI_INTC, IRQT_LOW); ++ set_irq_type(IRQ_NAS100D_PCI_INTD, IRQT_LOW); ++ set_irq_type(IRQ_NAS100D_PCI_INTE, IRQT_LOW); ++ ++ gpio_line_isr_clear(NAS100D_PCI_INTA_PIN); ++ gpio_line_isr_clear(NAS100D_PCI_INTB_PIN); ++ gpio_line_isr_clear(NAS100D_PCI_INTC_PIN); ++ gpio_line_isr_clear(NAS100D_PCI_INTD_PIN); ++ gpio_line_isr_clear(NAS100D_PCI_INTE_PIN); ++ ++ ixp4xx_pci_preinit(); ++} ++ ++static int __init nas100d_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ++{ ++ static int pci_irq_table[NAS100D_PCI_MAX_DEV][NAS100D_PCI_IRQ_LINES] = ++ { ++ { IRQ_NAS100D_PCI_INTA, -1, -1 }, ++ { IRQ_NAS100D_PCI_INTB, -1, -1 }, ++ { IRQ_NAS100D_PCI_INTC, IRQ_NAS100D_PCI_INTD, IRQ_NAS100D_PCI_INTE }, ++ }; ++ ++ int irq = -1; ++ ++ if (slot >= 1 && slot <= NAS100D_PCI_MAX_DEV && ++ pin >= 1 && pin <= NAS100D_PCI_IRQ_LINES) ++ irq = pci_irq_table[slot-1][pin-1]; ++ ++ return irq; ++} ++ ++struct hw_pci __initdata nas100d_pci = { ++ .nr_controllers = 1, ++ .preinit = nas100d_pci_preinit, ++ .swizzle = pci_std_swizzle, ++ .setup = ixp4xx_setup, ++ .scan = ixp4xx_scan_bus, ++ .map_irq = nas100d_map_irq, ++}; ++ ++int __init nas100d_pci_init(void) ++{ ++ if (machine_is_nas100d()) ++ pci_common_init(&nas100d_pci); ++ ++ return 0; ++} ++ ++subsys_initcall(nas100d_pci_init); +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nas100d-power.c 2005-11-12 14:24:14.000000000 +0100 +@@ -0,0 +1,92 @@ ++/* ++ * arch/arm/mach-ixp4xx/nas100d-power.c ++ * ++ * NAS 100d Power/Reset driver ++ * ++ * Copyright (C) 2005 Tower Technologies ++ * ++ * based on nas100d-io.c ++ * Copyright (C) 2004 Karen Spearel ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * 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 ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/reboot.h> ++#include <linux/interrupt.h> ++ ++#include <asm/mach-types.h> ++ ++extern void ctrl_alt_del(void); ++ ++static irqreturn_t nas100d_power_handler(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ /* Signal init to do the ctrlaltdel action, this will bypass init if ++ * it hasn't started and do a kernel_restart. ++ */ ++ ctrl_alt_del(); ++ ++ return IRQ_HANDLED; ++} ++ ++static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ /* This is the paper-clip reset, it shuts the machine down directly. ++ */ ++ machine_power_off(); ++ ++ return IRQ_HANDLED; ++} ++ ++static int __init nas100d_power_init(void) ++{ ++ if (!(machine_is_nas100d())) ++ return 0; ++ ++ // *IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */ ++ ++ set_irq_type(NAS100D_RB_IRQ, IRQT_LOW); ++// set_irq_type(NAS100D_PB_IRQ, IRQT_HIGH); ++ ++ gpio_line_isr_clear(NAS100D_RB_GPIO); ++// gpio_line_isr_clear(NAS100D_PB_GPIO); ++ ++ if (request_irq(NAS100D_RB_IRQ, &nas100d_reset_handler, ++ SA_INTERRUPT, "NAS100D reset button", NULL) < 0) { ++ ++ printk(KERN_DEBUG "Reset Button IRQ %d not available\n", ++ NAS100D_RB_IRQ); ++ ++ return -EIO; ++ } ++/* ++ if (request_irq(NAS100D_PB_IRQ, &nas100d_power_handler, ++ SA_INTERRUPT, "NAS100D power button", NULL) < 0) { ++ ++ printk(KERN_DEBUG "Power Button IRQ %d not available\n", ++ NAS100D_PB_IRQ); ++ ++ return -EIO; ++ } ++*/ ++ return 0; ++} ++ ++static void __exit nas100d_power_exit(void) ++{ ++ free_irq(NAS100D_RB_IRQ, NULL); ++// free_irq(NAS100D_PB_IRQ, NULL); ++} ++ ++module_init(nas100d_power_init); ++module_exit(nas100d_power_exit); ++ ++MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); ++MODULE_DESCRIPTION("NAS100D Power/Reset driver"); ++MODULE_LICENSE("GPL"); +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nas100d-setup.c 2005-11-12 14:24:14.000000000 +0100 +@@ -0,0 +1,132 @@ ++/* ++ * arch/arm/mach-ixp4xx/nas100d-setup.c ++ * ++ * NAS 100d board-setup ++ * ++ * based ixdp425-setup.c: ++ * Copyright (C) 2003-2004 MontaVista Software, Inc. ++ * ++ * Author: Mark Rakes <mrakes at mac.com> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/serial.h> ++#include <linux/serial_8250.h> ++ ++#include <asm/mach-types.h> ++#include <asm/mach/arch.h> ++#include <asm/mach/flash.h> ++ ++static struct flash_platform_data nas100d_flash_data = { ++ .map_name = "cfi_probe", ++ .width = 2, ++}; ++ ++static struct resource nas100d_flash_resource = { ++ .start = NAS100D_FLASH_BASE, ++ .end = NAS100D_FLASH_BASE + NAS100D_FLASH_SIZE, ++ .flags = IORESOURCE_MEM, ++}; ++ ++static struct platform_device nas100d_flash = { ++ .name = "IXP4XX-Flash", ++ .id = 0, ++ .dev.platform_data = &nas100d_flash_data, ++ .num_resources = 1, ++ .resource = &nas100d_flash_resource, ++}; ++ ++static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = { ++ .sda_pin = NAS100D_SDA_PIN, ++ .scl_pin = NAS100D_SCL_PIN, ++}; ++ ++static struct platform_device nas100d_i2c_controller = { ++ .name = "IXP4XX-I2C", ++ .id = 0, ++ .dev.platform_data = &nas100d_i2c_gpio_pins, ++ .num_resources = 0, ++}; ++ ++static struct resource nas100d_uart_resources[] = { ++ { ++ .start = IXP4XX_UART1_BASE_PHYS, ++ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, ++ .flags = IORESOURCE_MEM, ++ }, ++ { ++ .start = IXP4XX_UART2_BASE_PHYS, ++ .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, ++ .flags = IORESOURCE_MEM, ++ } ++}; ++ ++static struct plat_serial8250_port nas100d_uart_data[] = { ++ { ++ .mapbase = IXP4XX_UART1_BASE_PHYS, ++ .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, ++ .irq = IRQ_IXP4XX_UART1, ++ .flags = UPF_BOOT_AUTOCONF, ++ .iotype = UPIO_MEM, ++ .regshift = 2, ++ .uartclk = IXP4XX_UART_XTAL, ++ }, ++ { ++ .mapbase = IXP4XX_UART2_BASE_PHYS, ++ .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, ++ .irq = IRQ_IXP4XX_UART2, ++ .flags = UPF_BOOT_AUTOCONF, ++ .iotype = UPIO_MEM, ++ .regshift = 2, ++ .uartclk = IXP4XX_UART_XTAL, ++ }, ++ { } ++}; ++ ++static struct platform_device nas100d_uart = { ++ .name = "serial8250", ++ .id = PLAT8250_DEV_PLATFORM, ++ .dev.platform_data = nas100d_uart_data, ++ .num_resources = 2, ++ .resource = nas100d_uart_resources, ++}; ++ ++static struct platform_device *nas100d_devices[] __initdata = { ++ &nas100d_i2c_controller, ++ &nas100d_flash, ++ &nas100d_uart, ++}; ++ ++static void nas100d_power_off(void) ++{ ++ /* This causes the box to drop the power and go dead. */ ++ ++ /* enable the pwr cntl gpio */ ++ gpio_line_config(NAS100D_PO_GPIO, IXP4XX_GPIO_OUT); ++ ++ /* do the deed */ ++ gpio_line_set(NAS100D_PO_GPIO, IXP4XX_GPIO_HIGH); ++} ++ ++static void __init nas100d_init(void) ++{ ++ ixp4xx_sys_init(); ++ ++ pm_power_off = nas100d_power_off; ++ ++ platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices)); ++} ++ ++MACHINE_START(NAS100D, "Iomega NAS 100d") ++ /* Maintainer: www.nslu2-linux.org */ ++ .phys_ram = PHYS_OFFSET, ++ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, ++ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, ++ .boot_params = 0x00000100, ++ .map_io = ixp4xx_map_io, ++ .init_irq = ixp4xx_init_irq, ++ .timer = &ixp4xx_timer, ++ .init_machine = nas100d_init, ++MACHINE_END diff --git a/packages/linux/nas100d-kernel/2.6.15/60-nas100d-i2c.patch b/packages/linux/nas100d-kernel/2.6.15/60-nas100d-i2c.patch new file mode 100644 index 0000000000..5dfed57c0e --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/60-nas100d-i2c.patch @@ -0,0 +1,531 @@ + drivers/i2c/chips/Kconfig | 9 + drivers/i2c/chips/Makefile | 1 + drivers/i2c/chips/pcf8563.c | 466 ++++++++++++++++++++++++++++++++++++++++++++ + include/linux/pcf8563.h | 27 ++ + 4 files changed, 503 insertions(+) + +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-nas100d/drivers/i2c/chips/pcf8563.c 2005-11-22 17:32:35.000000000 +0100 +@@ -0,0 +1,466 @@ ++/* ++ * pcf8563.c - An i2c driver for the Philips PCF8563 RTC ++ * Copyright 2005 Tower Technologies ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * based on the other drivers in this same directory. ++ * ++ * http://www.semiconductors.philips.com/acrobat/datasheets/PCF8563-04.pdf ++ * ++ * 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. ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/i2c.h> ++#include <linux/string.h> ++#include <linux/bcd.h> ++#include <linux/rtc.h> ++#include <linux/list.h> ++ ++#include <linux/pcf8563.h> ++ ++#define DRV_VERSION "0.3.4" ++ ++/* Addresses to scan */ ++static unsigned short normal_i2c[] = { 0x51, I2C_CLIENT_END }; ++ ++/* Module parameters */ ++I2C_CLIENT_INSMOD; ++I2C_CLIENT_MODULE_PARM(hctosys, ++ "Set the system time from the hardware clock upon initialization"); ++ ++#define PCF8563_REG_ST1 0x00 /* status */ ++#define PCF8563_REG_ST2 0x01 ++ ++#define PCF8563_REG_SC 0x02 /* datetime */ ++#define PCF8563_REG_MN 0x03 ++#define PCF8563_REG_HR 0x04 ++#define PCF8563_REG_DM 0x05 ++#define PCF8563_REG_DW 0x06 ++#define PCF8563_REG_MO 0x07 ++#define PCF8563_REG_YR 0x08 ++ ++#define PCF8563_REG_AMN 0x09 /* alarm */ ++#define PCF8563_REG_AHR 0x0A ++#define PCF8563_REG_ADM 0x0B ++#define PCF8563_REG_ADW 0x0C ++ ++#define PCF8563_REG_CLKO 0x0D /* clock out */ ++#define PCF8563_REG_TMRC 0x0E /* timer control */ ++#define PCF8563_REG_TMR 0x0F /* timer */ ++ ++#define PCF8563_SC_LV 0x80 /* low voltage */ ++#define PCF8563_MO_C 0x80 /* century */ ++ ++/* Prototypes */ ++static int pcf8563_attach(struct i2c_adapter *adapter); ++static int pcf8563_detach(struct i2c_client *client); ++static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind); ++static int pcf8563_command(struct i2c_client *client, unsigned int cmd, ++ void *arg); ++ ++static struct i2c_driver pcf8563_driver = { ++ .owner = THIS_MODULE, ++ .name = "pcf8563", ++ .flags = I2C_DF_NOTIFY, ++ .attach_adapter = &pcf8563_attach, ++ .detach_client = &pcf8563_detach, ++}; ++ ++struct pcf8563_data { ++ struct i2c_client client; ++ struct list_head list; ++}; ++ ++static const unsigned char days_in_mo[] = ++ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; ++ ++static LIST_HEAD(pcf8563_clients); ++ ++/* Workaround until the I2C subsytem will allow to send ++ * commands to a specific client. This function will send the command ++ * to the first client. ++ */ ++int pcf8563_do_command(unsigned int cmd, void *arg) ++{ ++ struct list_head *walk; ++ struct list_head *tmp; ++ struct pcf8563_data *data; ++ ++ list_for_each_safe(walk, tmp, &pcf8563_clients) { ++ data = list_entry(walk, struct pcf8563_data, list); ++ return pcf8563_command(&data->client, cmd, arg); ++ } ++ ++ return -ENODEV; ++} ++ ++#define is_leap(year) \ ++ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) ++ ++/* make sure the rtc_time values are in bounds */ ++ ++static int pcf8563_validate_tm(struct rtc_time *tm) ++{ ++ int year = tm->tm_year + 1900; ++ ++ if ((tm->tm_year < 70) || (tm->tm_year > 255)) ++ return -EINVAL; ++ ++ if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) ++ return -EINVAL; ++ ++ if (tm->tm_mday > days_in_mo[tm->tm_mon] ++ + ((tm->tm_mon == 1) && is_leap(year))) ++ return -EINVAL; ++ ++ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++/* ++ * In the routines that deal directly with the pcf8563 hardware, we use ++ * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch. ++ */ ++static int pcf8563_get_datetime(struct i2c_client *client, struct rtc_time *tm) ++{ ++ unsigned char buf[13]; ++ unsigned char addr = PCF8563_REG_ST1; ++ ++ struct i2c_msg msgs[] = { ++ { client->addr, 0, 1, &addr }, /* setup read ptr */ ++ { client->addr, I2C_M_RD, 13, buf }, /* read status + date */ ++ }; ++ ++ /* read registers */ ++ if ((i2c_transfer(client->adapter, msgs, 2)) != 2) { ++ dev_err(&client->dev, "%s: read error\n", __FUNCTION__); ++ return -EIO; ++ } ++ ++ if (buf[PCF8563_REG_SC] & PCF8563_SC_LV) ++ dev_info(&client->dev, ++ "low voltage detected, date/time is not reliable.\n"); ++ ++ dev_dbg(&client->dev, ++ "%s: raw data is st1=%02x, st2=%02x, sec=%02x, min=%02x, hr=%02x, " ++ "mday=%02x, wday=%02x, mon=%02x, year=%02x\n", ++ __FUNCTION__, ++ buf[0], buf[1], buf[2], buf[3], ++ buf[4], buf[5], buf[6], buf[7], ++ buf[8]); ++ ++ ++ tm->tm_sec = BCD2BIN(buf[PCF8563_REG_SC] & 0x7F); ++ tm->tm_min = BCD2BIN(buf[PCF8563_REG_MN] & 0x7F); ++ tm->tm_hour = BCD2BIN(buf[PCF8563_REG_HR] & 0x3F); /* rtc hr 0-23 */ ++ tm->tm_mday = BCD2BIN(buf[PCF8563_REG_DM] & 0x3F); ++ tm->tm_wday = buf[PCF8563_REG_DW] & 0x07; ++ tm->tm_mon = BCD2BIN(buf[PCF8563_REG_MO] & 0x1F) - 1; /* rtc mn 1-12 */ ++ tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR]) ++ + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 100 : 0); ++ ++ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, " ++ "mday=%d, mon=%d, year=%d, wday=%d\n", ++ __FUNCTION__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ ++ if (pcf8563_validate_tm(tm) < 0) { ++ dev_err(&client->dev, "retrieved date/time is not valid.\n"); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++static int pcf8563_set_datetime(struct i2c_client *client, struct rtc_time *tm, ++ int datetoo) ++{ ++ int i, err; ++ unsigned char buf[9]; ++ ++ /* check if all values in the tm struct are correct */ ++ if ((err = pcf8563_validate_tm(tm)) < 0) ++ return err; ++ ++ dev_dbg(&client->dev, "%s: secs=%d, mins=%d, hours=%d, " ++ "mday=%d, mon=%d, year=%d, wday=%d\n", ++ __FUNCTION__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ ++ /* hours, minutes and seconds */ ++ buf[PCF8563_REG_SC] = BIN2BCD(tm->tm_sec); ++ buf[PCF8563_REG_MN] = BIN2BCD(tm->tm_min); ++ buf[PCF8563_REG_HR] = BIN2BCD(tm->tm_hour); ++ ++ /* should we also set the date? */ ++ if (datetoo) { ++ buf[PCF8563_REG_DM] = BIN2BCD(tm->tm_mday); ++ ++ /* month, 1 - 12 */ ++ buf[PCF8563_REG_MO] = BIN2BCD(tm->tm_mon + 1); ++ ++ /* year and century */ ++ buf[PCF8563_REG_YR] = BIN2BCD(tm->tm_year % 100); ++ if (tm->tm_year / 100) ++ buf[PCF8563_REG_MO] |= PCF8563_MO_C; ++ ++ buf[PCF8563_REG_DW] = tm->tm_wday & 0x07; ++ } ++ ++ /* write register's data */ ++ for (i = 0; i < (datetoo ? 7 : 3); i++) { ++ unsigned char data[2] = { PCF8563_REG_SC + i, ++ buf[PCF8563_REG_SC + i] }; ++ ++ err = i2c_master_send(client, data, sizeof(data)); ++ if (err != sizeof(data)) { ++ dev_err(&client->dev, ++ "%s: err=%d addr=%02x, data=%02x\n", ++ __FUNCTION__, err, data[0], data[1]); ++ return -EIO; ++ } ++ }; ++ ++ return 0; ++} ++ ++static int pcf8563_hctosys(struct i2c_client *client) ++{ ++ int err; ++ ++ struct rtc_time tm; ++ struct timespec tv; ++ ++ err = pcf8563_command(client, PCF8563_CMD_GETDATETIME, &tm); ++ ++ if (err) { ++ dev_err(&client->dev, ++ "Unable to set the system clock\n"); ++ return err; ++ } ++ ++ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary ++ * whether it stores the most close value or the value with partial ++ * seconds truncated. However, it is important that we use it to store ++ * the truncated value. This is because otherwise it is necessary, ++ * in an rtc sync function, to read both xtime.tv_sec and ++ * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read ++ * of >32bits is not possible. So storing the most close value would ++ * slow down the sync API. So here we have the truncated value and ++ * the best guess is to add 0.5s. ++ */ ++ ++ tv.tv_nsec = NSEC_PER_SEC >> 1; ++ ++ /* WARNING: this is not the C library 'mktime' call, it is a built in ++ * inline function from include/linux/time.h. It expects (requires) ++ * the month to be in the range 1-12 ++ */ ++ ++ tv.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1, ++ tm.tm_mday, tm.tm_hour, ++ tm.tm_min, tm.tm_sec); ++ ++ do_settimeofday(&tv); ++ ++ dev_info(&client->dev, ++ "setting the system clock to %d-%d-%d %d:%d:%d\n", ++ tm.tm_year + 1900, tm.tm_mon + 1, ++ tm.tm_mday, tm.tm_hour, tm.tm_min, ++ tm.tm_sec); ++ ++ return 0; ++} ++ ++struct pcf8563_limit ++{ ++ unsigned char reg; ++ unsigned char mask; ++ unsigned char min; ++ unsigned char max; ++}; ++ ++static int pcf8563_validate_client(struct i2c_client *client) ++{ ++ int i, xfer; ++ ++ static const struct pcf8563_limit probe_limits_pattern[] = { ++ /* register, mask, min, max */ ++ { PCF8563_REG_SC, 0x7F, 0, 59 }, ++ { PCF8563_REG_MN, 0x7F, 0, 59 }, ++ { PCF8563_REG_HR, 0x3F, 0, 23 }, ++ { PCF8563_REG_DM, 0x3F, 0, 31 }, ++ { PCF8563_REG_MO, 0x1F, 0, 12 }, ++ { PCF8563_REG_YR, 0xFF, 0, 99 }, ++ }; ++ ++ /* check limits (only registers with bcd values) */ ++ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) { ++ unsigned char addr, buf, value; ++ ++ addr = probe_limits_pattern[i].reg; ++ ++ struct i2c_msg msgs[2] = { ++ { client->addr, 0, 2, &addr }, ++ { client->addr, I2C_M_RD, 1, &buf }, ++ }; ++ ++ xfer = i2c_transfer(client->adapter, msgs, 2); ++ ++ if (xfer != 2) { ++ dev_err(&client->adapter->dev, ++ "%s: could not read register %x\n", ++ __FUNCTION__, probe_limits_pattern[i].reg); ++ ++ return -EIO; ++ } ++ ++ value = BCD2BIN(buf & probe_limits_pattern[i].mask); ++ ++ if (value > probe_limits_pattern[i].max || ++ value < probe_limits_pattern[i].min) { ++ dev_dbg(&client->adapter->dev, ++ "%s: register=%x, lim pattern=%d, value=%d\n", ++ __FUNCTION__, probe_limits_pattern[i].reg, i, value); ++ ++ return -ENODEV; ++ } ++ } ++ ++ return 0; ++} ++ ++static int pcf8563_attach(struct i2c_adapter *adapter) ++{ ++ return i2c_probe(adapter, &addr_data, pcf8563_probe); ++} ++ ++static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind) ++{ ++ struct i2c_client *client; ++ struct pcf8563_data *data; ++ ++ int err = 0; ++ ++ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__); ++ ++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) { ++ err = -ENODEV; ++ goto exit; ++ } ++ ++ if (!(data = kzalloc(sizeof(struct pcf8563_data), GFP_KERNEL))) { ++ err = -ENOMEM; ++ goto exit; ++ } ++ ++ client = &data->client; ++ client->addr = address; ++ client->driver = &pcf8563_driver; ++ client->adapter = adapter; ++ ++ strlcpy(client->name, pcf8563_driver.name, I2C_NAME_SIZE); ++ ++ i2c_set_clientdata(client, data); ++ ++ /* Verify the chip is really an PCF8563 */ ++ if (kind < 0) { ++ if (pcf8563_validate_client(client) < 0) { ++ err = -ENODEV; ++ goto exit_kfree; ++ } ++ } ++ ++ /* Inform the i2c layer */ ++ if ((err = i2c_attach_client(client))) ++ goto exit_kfree; ++ ++ list_add(&data->list, &pcf8563_clients); ++ ++ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n"); ++ ++ /* If requested, set the system time */ ++ if (hctosys) ++ pcf8563_hctosys(client); ++ ++ return 0; ++ ++exit_kfree: ++ kfree(data); ++ ++exit: ++ return err; ++} ++ ++static int pcf8563_detach(struct i2c_client *client) ++{ ++ int err; ++ struct pcf8563_data *data = i2c_get_clientdata(client); ++ ++ if ((err = i2c_detach_client(client))) ++ return err; ++ ++ list_del(&data->list); ++ ++ kfree(data); ++ ++ return 0; ++} ++ ++static int pcf8563_command(struct i2c_client *client, unsigned int cmd, ++ void *param) ++{ ++ if (param == NULL) ++ return -EINVAL; ++ ++ if (!capable(CAP_SYS_TIME)) ++ return -EACCES; ++ ++ dev_dbg(&client->dev, "%s: cmd=%d\n", __FUNCTION__, cmd); ++ ++ switch (cmd) { ++ case PCF8563_CMD_GETDATETIME: ++ return pcf8563_get_datetime(client, param); ++ ++ case PCF8563_CMD_SETTIME: ++ return pcf8563_set_datetime(client, param, 0); ++ ++ case PCF8563_CMD_SETDATETIME: ++ return pcf8563_set_datetime(client, param, 1); ++ ++ default: ++ return -EINVAL; ++ } ++} ++ ++static int __init pcf8563_init(void) ++{ ++ return i2c_add_driver(&pcf8563_driver); ++} ++ ++static void __exit pcf8563_exit(void) ++{ ++ i2c_del_driver(&pcf8563_driver); ++} ++ ++MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); ++MODULE_DESCRIPTION("Philips PCF8563 RTC driver"); ++MODULE_LICENSE("GPL"); ++MODULE_VERSION(DRV_VERSION); ++ ++EXPORT_SYMBOL_GPL(pcf8563_do_command); ++ ++module_init(pcf8563_init); ++module_exit(pcf8563_exit); +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-nas100d/include/linux/pcf8563.h 2005-11-22 01:36:46.000000000 +0100 +@@ -0,0 +1,27 @@ ++/* ++ * pcf8563.h - defines for drivers/i2c/chips/pcf8563.c ++ * Copyright 2005 Tower Technologies ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ */ ++ ++#ifndef __LINUX_PCF8563_H__ ++#define __LINUX_PCF8563_H__ ++ ++/* commands */ ++ ++#define PCF8563_CMD_GETDATETIME 0 ++#define PCF8563_CMD_SETTIME 1 ++#define PCF8563_CMD_SETDATETIME 2 ++#define PCF8563_CMD_GETALARM 3 ++#define PCF8563_CMD_SETALARM 4 ++ ++extern int pcf8563_do_command(unsigned int cmd, void *arg); ++ ++#endif /* __LINUX_PCF8563_H__ */ +--- linux-nas100d.orig/drivers/i2c/chips/Kconfig 2005-11-21 22:01:31.000000000 +0100 ++++ linux-nas100d/drivers/i2c/chips/Kconfig 2005-11-22 01:36:46.000000000 +0100 +@@ -135,4 +135,13 @@ config RTC_X1205_I2C + This driver can also be built as a module. If so, the module + will be called x1205. + ++config RTC_PCF8563_I2C ++ tristate "Philips PCF8563 RTC" ++ depends on I2C && EXPERIMENTAL ++ help ++ If you say yes here you get support for the Philips PCF8563 ++ Real Time Clock chip. This chip is used by the Iomega NAS100D. ++ ++ This driver can also be built as a module. If so, the module ++ will be called pcf8563. + endmenu +--- linux-nas100d.orig/drivers/i2c/chips/Makefile 2005-11-21 22:01:31.000000000 +0100 ++++ linux-nas100d/drivers/i2c/chips/Makefile 2005-11-22 01:36:46.000000000 +0100 +@@ -14,6 +14,7 @@ obj-$(CONFIG_SENSORS_RTC8564) += rtc8564 + obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o + obj-$(CONFIG_TPS65010) += tps65010.o + obj-$(CONFIG_RTC_X1205_I2C) += x1205.o ++obj-$(CONFIG_RTC_PCF8563_I2C) += pcf8563.o + + ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) + EXTRA_CFLAGS += -DDEBUG diff --git a/packages/linux/nas100d-kernel/2.6.15/60-nas100d-ide.patch b/packages/linux/nas100d-kernel/2.6.15/60-nas100d-ide.patch new file mode 100644 index 0000000000..fea83fbec7 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/60-nas100d-ide.patch @@ -0,0 +1,155 @@ + drivers/ide/pci/aec62xx.c | 67 +++++++++++++++++++++++++++++++++++++++++++--- + drivers/ide/setup-pci.c | 12 +++++++- + 2 files changed, 75 insertions(+), 4 deletions(-) + +--- linux-nas100d.orig/drivers/ide/pci/aec62xx.c 2005-11-21 20:49:50.000000000 +0100 ++++ linux-nas100d/drivers/ide/pci/aec62xx.c 2005-11-21 22:15:21.000000000 +0100 +@@ -145,6 +145,16 @@ static int aec6210_tune_chipset (ide_dri + unsigned long flags; + + local_irq_save(flags); ++ ++#ifdef CONFIG_MACH_NAS100D ++ printk(KERN_INFO "aec62xx: nas100d tuning\n"); ++ pci_write_config_word(hwif->pci_dev, PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MASTER); ++ pci_write_config_byte(hwif->pci_dev, PCI_LATENCY_TIMER, 0x80); ++ /* Enable burst mode & force 2 ports enable */ ++ pci_read_config_byte(hwif->pci_dev, 0x4a, &tmp0); ++ pci_write_config_byte(hwif->pci_dev, 0x4a, tmp0 | 0x80); ++#endif ++ + /* 0x40|(2*drive->dn): Active, 0x41|(2*drive->dn): Recovery */ + pci_read_config_word(dev, 0x40|(2*drive->dn), &d_conf); + tmp0 = pci_bus_clock_list(speed, BUSCLOCK(dev)); +@@ -206,9 +216,17 @@ static int config_chipset_for_dma (ide_d + { + u8 speed = ide_dma_speed(drive, aec62xx_ratemask(drive)); + ++#ifdef CONFIG_MACH_NAS100D ++ ide_hwif_t *hwif= HWIF(drive); ++ u8 unit = (drive->select.b.unit & 0x01); ++#endif + if (!(speed)) + return 0; + ++#ifdef CONFIG_MACH_NAS100D ++ outb((inb(hwif->dma_base+2) & ~(1<<(5+unit))), hwif->dma_base+2); ++#endif ++ + (void) aec62xx_tune_chipset(drive, speed); + return ide_dma_enable(drive); + } +@@ -299,6 +317,14 @@ static unsigned int __devinit init_chips + { + int bus_speed = system_bus_clock(); + ++#ifdef CONFIG_MACH_NAS100D ++ /* enable both ports */ ++ byte tmp; ++ printk(KERN_INFO "%s: nas100d ports enable\n", name); ++ pci_read_config_byte(dev, 0x4a, &tmp); ++ pci_write_config_byte(dev, 0x4a, tmp | 0x06); ++#endif ++ + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); + printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, dev->resource[PCI_ROM_RESOURCE].start); +@@ -312,12 +338,35 @@ static unsigned int __devinit init_chips + return dev->irq; + } + ++#ifdef CONFIG_MACH_NAS100D ++static void nas100d_insw (unsigned long port, u16 *addr, u32 count) ++{ ++ while (count--) ++ *addr++ = __cpu_to_le16(inw(port)); ++} ++ ++static void nas100d_outw (u16 val, unsigned long port) ++{ ++ u32 n, byte_enables, data; ++ n = port % 4; ++ byte_enables = (0xf & ~(BIT(n) | BIT(n+1))) << IXP4XX_PCI_NP_CBE_BESL; ++ data = val << (8*n); ++ ixp4xx_pci_write(port, byte_enables | NP_CMD_IOWRITE, __le16_to_cpu(data)); ++} ++#endif ++ + static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) + { + hwif->autodma = 0; + hwif->tuneproc = &aec62xx_tune_drive; + hwif->speedproc = &aec62xx_tune_chipset; + ++#ifdef CONFIG_MACH_NAS100D ++ printk(KERN_INFO "aec62xx: enabling nas100d iops\n"); ++ hwif->OUTW = nas100d_outw; ++ hwif->INSW = nas100d_insw; ++#endif ++ + if (hwif->pci_dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) { + hwif->serialized = hwif->channel; + hwif->no_dsc = 1; +@@ -360,11 +409,18 @@ static void __devinit init_dma_aec62xx(i + } else { + u8 ata66 = 0; + pci_read_config_byte(hwif->pci_dev, 0x49, &ata66); +- if (!(hwif->udma_four)) ++ if (!(hwif->udma_four)) + hwif->udma_four = (ata66&(hwif->channel?0x02:0x01))?0:1; + } + + ide_setup_dma(hwif, dmabase, 8); ++#ifdef CONFIG_MACH_NAS100D ++ { ++ u8 dma_stat = hwif->INB(hwif->dma_status); ++ dma_stat |= (1 << 4); ++ hwif->OUTB(dma_stat, hwif->dma_status); ++ } ++#endif + } + + static int __devinit init_setup_aec62xx(struct pci_dev *dev, ide_pci_device_t *d) +@@ -427,6 +483,9 @@ static ide_pci_device_t aec62xx_chipsets + .init_dma = init_dma_aec62xx, + .channels = 2, + .autodma = AUTODMA, ++#ifdef CONFIG_MACH_NAS100D ++ .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, ++#endif + .bootable = OFF_BOARD, + },{ /* 4 */ + .name = "AEC6X80R", +@@ -454,6 +513,8 @@ static int __devinit aec62xx_init_one(st + { + ide_pci_device_t *d = &aec62xx_chipsets[id->driver_data]; + ++ printk(KERN_INFO "aec62xx: using config %lx\n", id->driver_data); ++ + return d->init_setup(dev, d); + } + +--- linux-nas100d.orig/drivers/ide/setup-pci.c 2005-11-21 20:49:50.000000000 +0100 ++++ linux-nas100d/drivers/ide/setup-pci.c 2005-11-21 22:01:22.000000000 +0100 +@@ -602,10 +602,20 @@ void ide_pci_setup_ports(struct pci_dev + if ((d->flags & IDEPCI_FLAG_FORCE_PDC) && + (secondpdc++==1) && (port==1)) + goto controller_ok; +- ++ + if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) || + (tmp & e->mask) != e->val)) ++#ifdef CONFIG_MACH_NAS100D ++ { ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif + continue; /* port not enabled */ ++#ifdef CONFIG_MACH_NAS100D ++ } ++ else ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif ++ + controller_ok: + + if (d->channels <= port) diff --git a/packages/linux/nas100d-kernel/2.6.15/90-ixp4xx-nslu2.patch b/packages/linux/nas100d-kernel/2.6.15/90-ixp4xx-nslu2.patch new file mode 100644 index 0000000000..c106f7c957 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/90-ixp4xx-nslu2.patch @@ -0,0 +1,132 @@ +ixp4xx updates: + - Handle reads that don't start on a half-word boundary. + - Make it work when CPU is in little-endian mode. + +Signed-off-by: John Bowler <jbowler@acm.org> +Signed-off-by: Alessandro Zummo <a.zummo@towertech.it> +Signed-off-by: David Vrabel <dvrabel@arcom.com> + +Index: linux-2.6-working/drivers/mtd/maps/ixp4xx.c +=================================================================== +--- linux-2.6-working.orig/drivers/mtd/maps/ixp4xx.c 2005-11-16 15:19:34.000000000 +0000 ++++ linux-2.6-working/drivers/mtd/maps/ixp4xx.c 2005-11-16 16:06:54.000000000 +0000 +@@ -34,10 +34,55 @@ + + #include <linux/reboot.h> + ++/* ++ * Read/write a 16 bit word from flash address 'addr'. ++ * ++ * When the cpu is in little-endian mode it swizzles the address lines ++ * ('address coherency') so we need to undo the swizzling to ensure commands ++ * and the like end up on the correct flash address. ++ * ++ * To further complicate matters, due to the way the expansion bus controller ++ * handles 32 bit reads, the byte stream ABCD is stored on the flash as: ++ * D15 D0 ++ * +---+---+ ++ * | A | B | 0 ++ * +---+---+ ++ * | C | D | 2 ++ * +---+---+ ++ * This means that on LE systems each 16 bit word must be swapped. Note that ++ * this requires CONFIG_MTD_CFI_BE_BYTE_SWAP to be enabled to 'unswap' the CFI ++ * data and other flash commands which are always in D7-D0. ++ */ + #ifndef __ARMEB__ ++#ifndef CONFIG_MTD_CFI_BE_BYTE_SWAP ++# error CONFIG_MTD_CFI_BE_BYTE_SWAP required ++#endif ++ ++static inline u16 flash_read16(void __iomem *addr) ++{ ++ return be16_to_cpu(__raw_readw((void __iomem *)((unsigned long)addr ^ 0x2))); ++} ++ ++static inline void flash_write16(u16 d, void __iomem *addr) ++{ ++ __raw_writew(cpu_to_be16(d), (void __iomem *)((unsigned long)addr ^ 0x2)); ++} ++ + #define BYTE0(h) ((h) & 0xFF) + #define BYTE1(h) (((h) >> 8) & 0xFF) ++ + #else ++ ++static inline u16 flash_read16(const void __iomem *addr) ++{ ++ return __raw_readw(addr); ++} ++ ++static inline void flash_write16(u16 d, void __iomem *addr) ++{ ++ __raw_writew(d, addr); ++} ++ + #define BYTE0(h) (((h) >> 8) & 0xFF) + #define BYTE1(h) ((h) & 0xFF) + #endif +@@ -45,7 +90,7 @@ + static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs) + { + map_word val; +- val.x[0] = le16_to_cpu(readw(map->virt + ofs)); ++ val.x[0] = flash_read16(map->virt + ofs); + return val; + } + +@@ -57,19 +102,28 @@ + static void ixp4xx_copy_from(struct map_info *map, void *to, + unsigned long from, ssize_t len) + { +- int i; + u8 *dest = (u8 *) to; + void __iomem *src = map->virt + from; +- u16 data; + +- for (i = 0; i < (len / 2); i++) { +- data = le16_to_cpu(readw(src + 2*i)); +- dest[i * 2] = BYTE0(data); +- dest[i * 2 + 1] = BYTE1(data); ++ if (len <= 0) ++ return; ++ ++ if (from & 1) { ++ *dest++ = BYTE1(flash_read16(src)); ++ src++; ++ --len; + } + +- if (len & 1) +- dest[len - 1] = BYTE0(le16_to_cpu(readw(src + 2*i))); ++ while (len >= 2) { ++ u16 data = flash_read16(src); ++ *dest++ = BYTE0(data); ++ *dest++ = BYTE1(data); ++ src += 2; ++ len -= 2; ++ } ++ ++ if (len > 0) ++ *dest++ = BYTE0(flash_read16(src)); + } + + /* +@@ -79,7 +133,7 @@ + static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr) + { + if (!(adr & 1)) +- writew(cpu_to_le16(d.x[0]), map->virt + adr); ++ flash_write16(d.x[0], map->virt + adr); + } + + /* +@@ -87,7 +141,7 @@ + */ + static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr) + { +- writew(cpu_to_le16(d.x[0]), map->virt + adr); ++ flash_write16(d.x[0], map->virt + adr); + } + + struct ixp4xx_flash_info { diff --git a/packages/linux/openslug-kernel-2.6.11/defconfig b/packages/linux/nas100d-kernel/2.6.15/defconfig index 9d5f54c13b..46634df1d5 100644 --- a/packages/linux/openslug-kernel-2.6.11/defconfig +++ b/packages/linux/nas100d-kernel/2.6.15/defconfig @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.11 -# Tue Mar 8 02:00:48 2005 +# Linux kernel version: 2.6.14 +# Sun Nov 13 02:06:49 2005 # CONFIG_ARM=y CONFIG_MMU=y CONFIG_UID16=y CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_IOMAP=y # # Code maturity level options @@ -16,26 +15,28 @@ CONFIG_GENERIC_IOMAP=y CONFIG_EXPERIMENTAL=y CONFIG_CLEAN_COMPILE=y CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_POSIX_MQUEUE is not set -CONFIG_BSD_PROCESS_ACCT=y -# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" CONFIG_EMBEDDED=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set +# CONFIG_KALLSYMS is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_BASE_FULL is not set CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y @@ -45,6 +46,7 @@ CONFIG_CC_ALIGN_LABELS=0 CONFIG_CC_ALIGN_LOOPS=0 CONFIG_CC_ALIGN_JUMPS=0 # CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=1 # # Loadable module support @@ -81,6 +83,7 @@ CONFIG_ARCH_IXP4XX=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 CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y # @@ -95,15 +98,14 @@ CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y # CONFIG_ARCH_IXDP425 is not set # CONFIG_MACH_IXDPG425 is not set # CONFIG_MACH_IXDP465 is not set -CONFIG_ARCH_NSLU2=y # CONFIG_ARCH_PRPMC1100 is not set +CONFIG_MACH_NAS100D=y # CONFIG_MACH_GTWX5715 is not set # # IXP4xx Options # CONFIG_IXP4XX_INDIRECT_PCI=y -CONFIG_DMABOUNCE=y # # Processor Type @@ -114,24 +116,21 @@ CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5T=y CONFIG_CPU_CACHE_VIVT=y CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_MINICACHE=y # # Processor Features # -# CONFIG_ARM_THUMB is not set +CONFIG_ARM_THUMB=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_XSCALE_PMU=y +CONFIG_DMABOUNCE=y # -# General setup +# Bus support # +CONFIG_ISA_DMA_API=y CONFIG_PCI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -# CONFIG_XIP_KERNEL is not set CONFIG_PCI_LEGACY_PROC=y -# CONFIG_PCI_NAMES is not set # # PCCARD (PCMCIA/CardBus) support @@ -139,50 +138,261 @@ CONFIG_PCI_LEGACY_PROC=y # CONFIG_PCCARD is not set # -# PC-card bridges +# Kernel Features +# +# CONFIG_PREEMPT is not set +# CONFIG_NO_IDLE_HZ is not set +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="root=/dev/mtdblock2 rw rootfstype=jffs2 mem=64M@0x00000000 init=/linuxrc console=ttyS0,115200n8 pcf8563.hctosys=1" +# CONFIG_XIP_KERNEL is not set + +# +# Floating point emulation # # -# At least one math emulation must be selected +# At least one emulation must be selected # CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set # CONFIG_FPE_FASTFPE is not set + +# +# Userspace binary formats +# CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set # -# Generic Driver Options +# Power management options # -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set -CONFIG_PM=y -# CONFIG_PREEMPT is not set -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000 console=ttyS0,115200n8" -CONFIG_ALIGNMENT_TRAP=y +# CONFIG_PM is not set # -# Parallel port support +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +CONFIG_INET_AH=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=m +# CONFIG_IPV6_PRIVACY is not set +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 is not set +# CONFIG_IP_NF_CONNTRACK_MARK is not set +# 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=m +# 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=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +# CONFIG_IP_NF_MATCH_SCTP is not set +# CONFIG_IP_NF_MATCH_DCCP is not set +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +# CONFIG_IP_NF_MATCH_STRING is not set +CONFIG_IP_NF_FILTER=m +# CONFIG_IP_NF_TARGET_REJECT is not set +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_TARGET_NFQUEUE is not set +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +# CONFIG_IP_NF_TARGET_TTL 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 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP6_NF_TARGET_NFQUEUE is not set + +# +# Bridge: Netfilter Configuration +# +# CONFIG_BRIDGE_NF_EBTABLES 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=m +CONFIG_VLAN_8021Q=m +# CONFIG_DECNET is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +# 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=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +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 is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIUART is not set +CONFIG_BT_HCIBCM203X=m +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_IEEE80211 is not set + +# +# Device Drivers # -# CONFIG_PARPORT is not set + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m # # Memory Technology Devices (MTD) # CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y 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=y +# CONFIG_MTD_CMDLINE_PARTS is not set # CONFIG_MTD_AFS_PARTS is not set # @@ -200,10 +410,14 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +# CONFIG_MTD_CFI_NOSWAP is not set +CONFIG_MTD_CFI_BE_BYTE_SWAP=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set # 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 @@ -211,6 +425,7 @@ 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=y # CONFIG_MTD_CFI_AMDSTD is not set # CONFIG_MTD_CFI_STAA is not set @@ -229,6 +444,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y CONFIG_MTD_IXP4XX=y # CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_PCI is not set +# CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers @@ -253,13 +469,17 @@ CONFIG_MTD_IXP4XX=y # CONFIG_MTD_NAND is not set # +# Parallel port support +# +# CONFIG_PARPORT is not set + +# # Plug and Play support # # # Block devices # -# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set @@ -271,11 +491,12 @@ CONFIG_BLK_DEV_LOOP=m # CONFIG_BLK_DEV_SX8 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_COUNT=4 CONFIG_BLK_DEV_RAM_SIZE=10240 CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -# CONFIG_CDROM_PKTCDVD is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set # # IO Schedulers @@ -287,198 +508,183 @@ CONFIG_IOSCHED_DEADLINE=y # CONFIG_ATA_OVER_ETH is not set # -# Multi-device support (RAID and LVM) -# -CONFIG_MD=y -CONFIG_BLK_DEV_MD=m -# CONFIG_MD_LINEAR is not set -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -# CONFIG_MD_RAID10 is not set -CONFIG_MD_RAID5=m -# CONFIG_MD_RAID6 is not set -# CONFIG_MD_MULTIPATH is not set -# CONFIG_MD_FAULTY is not set -# CONFIG_BLK_DEV_DM is not set - -# -# Networking support +# ATA/ATAPI/MFM/RLL support # -CONFIG_NET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_SL82C105 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_AEC62XX=m +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set # -# Networking options +# SCSI device support # -CONFIG_PACKET=m -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK_DEV=m -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -CONFIG_INET_TUNNEL=m -CONFIG_IP_TCPDIAG=y -# CONFIG_IP_TCPDIAG_IPV6 is not set +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_PROC_FS=y # -# IP: Virtual Server Configuration +# SCSI support type (disk, tape, CD-ROM) # -CONFIG_IP_VS=m -CONFIG_IP_VS_DEBUG=y -CONFIG_IP_VS_TAB_BITS=12 +CONFIG_BLK_DEV_SD=m +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set # -# IPVS transport protocol load balancing support +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set # -# IPVS scheduler +# SCSI Transport Attributes # -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set # -# IPVS application helper +# SCSI low-level drivers # -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +CONFIG_SCSI_QLA2XXX=n +# CONFIG_SCSI_QLA21XX is not set +# CONFIG_SCSI_QLA22XX is not set +# CONFIG_SCSI_QLA2300 is not set +# CONFIG_SCSI_QLA2322 is not set +# CONFIG_SCSI_QLA6312 is not set +# CONFIG_SCSI_QLA24XX is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set # -# IP: Netfilter Configuration +# Multi-device support (RAID and LVM) # -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_CONNTRACK_MARK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set # -# Bridge: Netfilter Configuration +# Fusion MPT device support # -# CONFIG_BRIDGE_NF_EBTABLES is not set -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set +# CONFIG_FUSION is not set +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set # -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -CONFIG_IPX=m -# CONFIG_IPX_INTERN is not set -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -# 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 - +# IEEE 1394 (FireWire) support # -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CLK_JIFFIES=y -# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -# CONFIG_NET_SCH_CLK_CPU is not set -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -# CONFIG_NET_SCH_HFSC is not set -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -# CONFIG_NET_SCH_NETEM is not set -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_QOS=y -CONFIG_NET_ESTIMATOR=y -CONFIG_NET_CLS=y -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -# CONFIG_CLS_U32_PERF is not set -# CONFIG_NET_CLS_IND is not set -# CONFIG_CLS_U32_MARK is not set -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -# CONFIG_NET_CLS_ACT is not set -CONFIG_NET_CLS_POLICE=y +# CONFIG_IEEE1394 is not set # -# Network testing +# I2O device support # -CONFIG_NET_PKTGEN=m -CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y -CONFIG_NETPOLL_TRAP=y -CONFIG_NET_POLL_CONTROLLER=y -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -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 is not set +# CONFIG_I2O is not set # -# Bluetooth device drivers +# Network device support # -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUSB_SCO=y -# CONFIG_BT_HCIUART is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -# CONFIG_BT_HCIBFUSB is not set -# CONFIG_BT_HCIVHCI is not set CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set +CONFIG_TUN=m # # ARCnet devices @@ -486,14 +692,21 @@ CONFIG_NETDEVICES=y # CONFIG_ARCNET is not set # +# PHY device support +# +# CONFIG_PHYLIB is not set + +# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MII=y # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set # # Tulip family network device support @@ -530,13 +743,17 @@ CONFIG_NET_PCI=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set # CONFIG_SK98LIN is not set # CONFIG_VIA_VELOCITY is not set # CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set # # Ethernet (10000 Mbit) # +# CONFIG_CHELSIO_T1 is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set @@ -558,6 +775,7 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # +# CONFIG_AIRO is not set # CONFIG_HERMES is not set # CONFIG_ATMEL is not set @@ -565,6 +783,7 @@ CONFIG_NET_RADIO=y # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # # CONFIG_PRISM54 is not set +# CONFIG_HOSTAP is not set CONFIG_NET_WIRELESS=y # @@ -585,94 +804,10 @@ CONFIG_PPP_BSDCOMP=m # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set CONFIG_NETCONSOLE=m - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI Transport Attributes -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -CONFIG_SCSI_QLA2XXX=y -# CONFIG_SCSI_QLA21XX is not set -# CONFIG_SCSI_QLA22XX is not set -# CONFIG_SCSI_QLA2300 is not set -# CONFIG_SCSI_QLA2322 is not set -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Fusion MPT device support -# -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NET_POLL_CONTROLLER=y # # ISDN subsystem @@ -682,7 +817,7 @@ CONFIG_SCSI_QLA2XXX=y # # Input device support # -# CONFIG_INPUT is not set +CONFIG_INPUT=m # # Userland interfaces @@ -690,17 +825,10 @@ CONFIG_SCSI_QLA2XXX=y # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_EVDEV is not set +CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_EVBUG is not set # -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set - -# # Input Device Drivers # # CONFIG_INPUT_KEYBOARD is not set @@ -710,6 +838,12 @@ CONFIG_SOUND_GAMEPORT=y # CONFIG_INPUT_MISC is not set # +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# # Character devices # # CONFIG_VT is not set @@ -728,9 +862,10 @@ CONFIG_SERIAL_8250_NR_UARTS=2 # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LEGACY_PTY_COUNT=16 # # IPMI @@ -760,7 +895,7 @@ CONFIG_IXP4XX_WATCHDOG=y # # CONFIG_USBPCWATCHDOG is not set # CONFIG_NVRAM is not set -# CONFIG_RTC is not set +CONFIG_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -772,6 +907,11 @@ CONFIG_IXP4XX_WATCHDOG=y # CONFIG_RAW_DRIVER is not set # +# TPM devices +# +# CONFIG_TCG_TPM is not set + +# # I2C support # CONFIG_I2C=y @@ -794,12 +934,11 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_AMD8111 is not set # CONFIG_I2C_I801 is not set # CONFIG_I2C_I810 is not set +# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_IOP3XX is not set -# CONFIG_I2C_ISA is not set CONFIG_I2C_IXP4XX=y # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_SAVAGE4 is not set # CONFIG_SCx200_ACB is not set @@ -813,17 +952,39 @@ CONFIG_I2C_IXP4XX=y # CONFIG_I2C_PCA_ISA is not set # -# Hardware Sensors Chip support +# Miscellaneous I2C Chip support # -CONFIG_I2C_SENSOR=y +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +CONFIG_SENSORS_EEPROM=n +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_RTC8564 is not set +# CONFIG_SENSORS_MAX6875 is not set +CONFIG_I2C_DEBUG_CORE=y +CONFIG_I2C_DEBUG_ALGO=y +CONFIG_I2C_DEBUG_BUS=y +CONFIG_I2C_DEBUG_CHIP=y +CONFIG_RTC_PCF8563_I2C=y + +# +# 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 @@ -834,27 +995,27 @@ CONFIG_I2C_SENSOR=y # 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_SMSC47B397 is not set +# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83792D is not set # CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_HWMON_DEBUG_CHIP is not set # -# Other I2C Chip support +# Misc devices +# + +# +# Multimedia Capabilities Port drivers # -CONFIG_SENSORS_EEPROM=y -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -CONFIG_SENSORS_X1205=y -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set # # Multimedia devices @@ -868,20 +1029,27 @@ CONFIG_VIDEO_DEV=m # # Video Adapters # -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CPIA is not set -# CONFIG_VIDEO_SAA5246A is not set -# CONFIG_VIDEO_SAA5249 is not set -# CONFIG_TUNER_3036 is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DPC is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_OVCAMCHIP is not set +CONFIG_VIDEO_BT848=m +# CONFIG_VIDEO_SAA6588 is not set +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_OVCAMCHIP=m # # Radio Adapters @@ -894,190 +1062,113 @@ CONFIG_VIDEO_DEV=m # Digital Video Broadcasting Devices # # CONFIG_DVB is not set +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m # -# File systems +# Graphics support # -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_XATTR is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set +# CONFIG_FB is not set # -# XFS support +# Sound # -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -CONFIG_DNOTIFY=y -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set +CONFIG_SOUND=m # -# CD-ROM/DVD Filesystems +# Advanced Linux Sound Architecture # -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_RTCTIMER is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set # -# DOS/FAT/NT Filesystems +# Generic devices # -# CONFIG_MSDOS_FS is not set -# CONFIG_VFAT_FS is not set -# CONFIG_NTFS_FS is not set +# 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 # -# Pseudo filesystems +# PCI devices # -CONFIG_PROC_FS=y -CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -# CONFIG_TMPFS_XATTR is not set -# CONFIG_HUGETLB_PAGE is not set -CONFIG_RAMFS=y +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_HDA_INTEL is not set # -# Miscellaneous filesystems +# ALSA ARM devices # -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_JFFS2_FS_NOR_ECC is not set -# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -# CONFIG_JFFS2_RUBIN is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set # -# Network File Systems +# USB devices # -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set -CONFIG_NFSD=m -# CONFIG_NFSD_V3 is not set -CONFIG_NFSD_TCP=y -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=m -CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set -# CONFIG_RPCSEC_GSS_SPKM3 is not set -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT 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_SND_USB_AUDIO=m # -# 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=m -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ASCII is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices +# Open Sound System # +# CONFIG_SOUND_PRIME is not set # # USB support # +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set @@ -1087,29 +1178,30 @@ CONFIG_USB=y 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 -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y # # USB Host Controller Drivers # -CONFIG_USB_EHCI_HCD=m -# CONFIG_USB_EHCI_SPLIT_ISO is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_SPLIT_ISO=y # CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=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 is not set +CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m # @@ -1117,33 +1209,42 @@ CONFIG_USB_PRINTER=m # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_RW_DETECT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_USBAT is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set # # USB Input Devices # -# CONFIG_USB_HID is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +# CONFIG_HID_FF is not set +CONFIG_USB_HIDDEV=y # # USB HID Boot Protocol drivers # -# CONFIG_USB_KBD is not set +CONFIG_USB_KBD=m # CONFIG_USB_MOUSE is not set # CONFIG_USB_AIPTEK is not set # CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set # CONFIG_USB_KBTAB is not set # CONFIG_USB_POWERMATE is not set # CONFIG_USB_MTOUCH is not set +# CONFIG_USB_ITMTOUCH is not set # CONFIG_USB_EGALAX is not set +# CONFIG_USB_YEALINK is not set # CONFIG_USB_XPAD is not set # CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set # # USB Imaging devices @@ -1155,43 +1256,35 @@ CONFIG_USB_STORAGE=y # USB Multimedia devices # # CONFIG_USB_DABUSB is not set - -# -# Video4Linux support is needed for USB Multimedia device support -# +# CONFIG_USB_VICAM is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_W9968CF is not set +CONFIG_USB_PWC=m # # USB Network Adapters # -# CONFIG_USB_CATC is not set +CONFIG_USB_CATC=m CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m -# CONFIG_USB_RTL8150 is not set +CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y -CONFIG_USB_KC2190=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# 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=m +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_MON is not set # # USB port drivers @@ -1202,30 +1295,35 @@ CONFIG_USB_AX8817X=y # CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_AIRPRIME is not set CONFIG_USB_SERIAL_BELKIN=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +# CONFIG_USB_SERIAL_CP2101 is not set +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m CONFIG_USB_SERIAL_VISOR=m CONFIG_USB_SERIAL_IPAQ=m -# 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_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m # 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_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m CONFIG_USB_SERIAL_PL2303=m -# 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_OMNINET is not set +# CONFIG_USB_SERIAL_HP4X is not set +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_EZUSB=y # # USB Miscellaneous drivers @@ -1241,10 +1339,12 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_PHIDGETKIT is not set # CONFIG_USB_PHIDGETSERVO is not set # CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set # CONFIG_USB_TEST is not set # -# USB ATM/DSL drivers +# USB DSL modem support # # @@ -1258,23 +1358,206 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_MMC is not set # +# File systems +# +CONFIG_EXT2_FS=m +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=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +# 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 is not set +CONFIG_INOTIFY=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=y + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_EXPERIMENTAL 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=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# # Kernel hacking # -CONFIG_DEBUG_KERNEL=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_INFO is not set -# CONFIG_DEBUG_FS is not set +# CONFIG_PRINTK_TIME is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_DEBUG_BUGVERBOSE 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 @@ -1285,7 +1568,31 @@ CONFIG_DEBUG_LL=y # # Cryptographic options # -# CONFIG_CRYPTO is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_TEST=m # # Hardware crypto devices @@ -1295,7 +1602,8 @@ CONFIG_DEBUG_LL=y # Library routines # CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set +CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/nas100d-kernel/2.6.15/nas100d-pci.c b/packages/linux/nas100d-kernel/2.6.15/nas100d-pci.c new file mode 100644 index 0000000000..1f934068e9 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/nas100d-pci.c @@ -0,0 +1,87 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-pci.c + * + * NAS 100d board-level PCI initialization + * + * based on ixdp425-pci.c: + * Copyright (C) 2002 Intel Corporation. + * Copyright (C) 2003-2004 MontaVista Software, Inc. + * + * Maintainer: http://www.nslu2-linux.org/ + * + * 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 + * published by the Free Software Foundation. + * + */ + +#include <linux/config.h> +#include <linux/pci.h> +#include <linux/init.h> + +#include <asm/mach/pci.h> +#include <asm/mach-types.h> + +void __init nas100d_pci_preinit(void) +{ + set_irq_type(IRQ_NAS100D_PCI_INTA, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTB, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTC, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTD, IRQT_LOW); + set_irq_type(IRQ_NAS100D_PCI_INTE, IRQT_LOW); + + gpio_line_isr_clear(NAS100D_PCI_INTA_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTB_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTC_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTD_PIN); + gpio_line_isr_clear(NAS100D_PCI_INTE_PIN); + + ixp4xx_pci_preinit(); +} + +static int __init nas100d_map_irq(struct pci_dev *dev, u8 slot, u8 pin) +{ + if (slot < 1 || slot > 3 || pin < 1 || pin > 3) + return -1; + + switch (slot) + { + case 1: + if (pin == 1) + return IRQ_NAS100D_PCI_INTA; + break; + case 2: + if (pin == 1) + return IRQ_NAS100D_PCI_INTB; + break; + case 3: + if (pin == 1) + return IRQ_NAS100D_PCI_INTC; + if (pin == 2) + return IRQ_NAS100D_PCI_INTD; + if (pin == 3) + return IRQ_NAS100D_PCI_INTE; + break; + } + + return -1; +} + +struct hw_pci __initdata nas100d_pci = { + .nr_controllers = 1, + .preinit = nas100d_pci_preinit, + .swizzle = pci_std_swizzle, + .setup = ixp4xx_setup, + .scan = ixp4xx_scan_bus, + .map_irq = nas100d_map_irq, +}; + +int __init nas100d_pci_init(void) +{ + if (machine_is_nas100d()) + pci_common_init(&nas100d_pci); + + return 0; +} + +subsys_initcall(nas100d_pci_init); diff --git a/packages/linux/nas100d-kernel/2.6.15/nas100d-power.c b/packages/linux/nas100d-kernel/2.6.15/nas100d-power.c new file mode 100644 index 0000000000..94ce5d1b46 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/nas100d-power.c @@ -0,0 +1,92 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-power.c + * + * NAS 100d Power/Reset driver + * + * Copyright (C) 2005 Tower Technologies + * + * based on nas100d-io.c + * Copyright (C) 2004 Karen Spearel + * + * Author: Alessandro Zummo <a.zummo@towertech.it> + * Maintainers: http://www.nslu2-linux.org/ + * + * 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 + * published by the Free Software Foundation. + * + */ + +#include <linux/module.h> +#include <linux/reboot.h> +#include <linux/interrupt.h> + +#include <asm/mach-types.h> + +extern void ctrl_alt_del(void); + +static irqreturn_t nas100d_power_handler(int irq, void *dev_id, struct pt_regs *regs) +{ + /* Signal init to do the ctrlaltdel action, this will bypass init if + * it hasn't started and do a kernel_restart. + */ + ctrl_alt_del(); + + return IRQ_HANDLED; +} + +static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) +{ + /* This is the paper-clip reset, it shuts the machine down directly. + */ + machine_power_off(); + + return IRQ_HANDLED; +} + +static int __init nas100d_power_init(void) +{ + if (!(machine_is_nas100d())) + return 0; + + // *IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */ + + set_irq_type(NAS100D_RB_IRQ, IRQT_LOW); +// set_irq_type(NAS100D_PB_IRQ, IRQT_HIGH); + + gpio_line_isr_clear(NAS100D_RB_GPIO); +// gpio_line_isr_clear(NAS100D_PB_GPIO); + + if (request_irq(NAS100D_RB_IRQ, &nas100d_reset_handler, + SA_INTERRUPT, "NAS100D reset button", NULL) < 0) { + + printk(KERN_DEBUG "Reset Button IRQ %d not available\n", + NAS100D_RB_IRQ); + + return -EIO; + } +/* + if (request_irq(NAS100D_PB_IRQ, &nas100d_power_handler, + SA_INTERRUPT, "NAS100D power button", NULL) < 0) { + + printk(KERN_DEBUG "Power Button IRQ %d not available\n", + NAS100D_PB_IRQ); + + return -EIO; + } +*/ + return 0; +} + +static void __exit nas100d_power_exit(void) +{ + free_irq(NAS100D_RB_IRQ, NULL); +// free_irq(NAS100D_PB_IRQ, NULL); +} + +module_init(nas100d_power_init); +module_exit(nas100d_power_exit); + +MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); +MODULE_DESCRIPTION("NAS100D Power/Reset driver"); +MODULE_LICENSE("GPL"); diff --git a/packages/linux/nas100d-kernel/2.6.15/nas100d-setup.c b/packages/linux/nas100d-kernel/2.6.15/nas100d-setup.c new file mode 100644 index 0000000000..0dbb0b4e69 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/nas100d-setup.c @@ -0,0 +1,132 @@ +/* + * arch/arm/mach-ixp4xx/nas100d-setup.c + * + * NAS 100d board-setup + * + * based ixdp425-setup.c: + * Copyright (C) 2003-2004 MontaVista Software, Inc. + * + * Author: Mark Rakes <mrakes at mac.com> + * Maintainers: http://www.nslu2-linux.org/ + * + */ + +#include <linux/kernel.h> +#include <linux/serial.h> +#include <linux/serial_8250.h> + +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/flash.h> + +static struct flash_platform_data nas100d_flash_data = { + .map_name = "cfi_probe", + .width = 2, +}; + +static struct resource nas100d_flash_resource = { + .start = NAS100D_FLASH_BASE, + .end = NAS100D_FLASH_BASE + NAS100D_FLASH_SIZE, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device nas100d_flash = { + .name = "IXP4XX-Flash", + .id = 0, + .dev.platform_data = &nas100d_flash_data, + .num_resources = 1, + .resource = &nas100d_flash_resource, +}; + +static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = { + .sda_pin = NAS100D_SDA_PIN, + .scl_pin = NAS100D_SCL_PIN, +}; + +static struct platform_device nas100d_i2c_controller = { + .name = "IXP4XX-I2C", + .id = 0, + .dev.platform_data = &nas100d_i2c_gpio_pins, + .num_resources = 0, +}; + +static struct resource nas100d_uart_resources[] = { + { + .start = IXP4XX_UART1_BASE_PHYS, + .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM, + }, + { + .start = IXP4XX_UART2_BASE_PHYS, + .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM, + } +}; + +static struct plat_serial8250_port nas100d_uart_data[] = { + { + .mapbase = IXP4XX_UART1_BASE_PHYS, + .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, + .irq = IRQ_IXP4XX_UART1, + .flags = UPF_BOOT_AUTOCONF, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = IXP4XX_UART_XTAL, + }, + { + .mapbase = IXP4XX_UART2_BASE_PHYS, + .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, + .irq = IRQ_IXP4XX_UART2, + .flags = UPF_BOOT_AUTOCONF, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = IXP4XX_UART_XTAL, + }, + { } +}; + +static struct platform_device nas100d_uart = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, + .dev.platform_data = nas100d_uart_data, + .num_resources = 2, + .resource = nas100d_uart_resources, +}; + +static struct platform_device *nas100d_devices[] __initdata = { + &nas100d_i2c_controller, + &nas100d_flash, + &nas100d_uart, +}; + +static void nas100d_power_off(void) +{ + /* This causes the box to drop the power and go dead. */ + + /* enable the pwr cntl gpio */ + gpio_line_config(NAS100D_PO_GPIO, IXP4XX_GPIO_OUT); + + /* do the deed */ + gpio_line_set(NAS100D_PO_GPIO, IXP4XX_GPIO_HIGH); +} + +static void __init nas100d_init(void) +{ + ixp4xx_sys_init(); + + pm_power_off = nas100d_power_off; + + platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices)); +} + +MACHINE_START(NAS100D, "Iomega NAS 100d") + /* Maintainer: www.nslu2-linux.org */ + .phys_ram = PHYS_OFFSET, + .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, + .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, + .boot_params = 0x00000100, + .map_io = ixp4xx_map_io, + .init_irq = ixp4xx_init_irq, + .timer = &ixp4xx_timer, + .init_machine = nas100d_init, +MACHINE_END diff --git a/packages/linux/nas100d-kernel/2.6.15/nas100d.h b/packages/linux/nas100d-kernel/2.6.15/nas100d.h new file mode 100644 index 0000000000..1623712b78 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.15/nas100d.h @@ -0,0 +1,75 @@ +/* + * include/asm-arm/arch-ixp4xx/nas100d.h + * + * NAS100D platform specific definitions + * + * Copyright (c) 2005 Tower Technologies + * + * Author: Alessandro Zummo <a.zummo@towertech.it> + * + * based on ixdp425.h: + * Copyright 2004 (c) MontaVista, Software, Inc. + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __ASM_ARCH_HARDWARE_H__ +#error "Do not include this directly, instead #include <asm/hardware.h>" +#endif + +#define NAS100D_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS +#define NAS100D_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE + +#define NAS100D_SDA_PIN 5 +#define NAS100D_SCL_PIN 6 + +/* + * NAS100D PCI IRQs + */ +#define NAS100D_PCI_MAX_DEV 5 +#define NAS100D_PCI_IRQ_LINES 5 + + +/* PCI controller GPIO to IRQ pin mappings */ +#define NAS100D_PCI_INTA_PIN 11 +#define NAS100D_PCI_INTB_PIN 10 +#define NAS100D_PCI_INTC_PIN 9 +#define NAS100D_PCI_INTD_PIN 8 +#define NAS100D_PCI_INTE_PIN 7 + +/* GPIO */ + +#define NAS100D_GPIO0 0 +#define NAS100D_GPIO1 1 +#define NAS100D_GPIO2 2 +#define NAS100D_GPIO3 3 +#define NAS100D_GPIO4 4 +#define NAS100D_GPIO5 5 +#define NAS100D_GPIO6 6 +#define NAS100D_GPIO7 7 +#define NAS100D_GPIO8 8 +#define NAS100D_GPIO9 9 +#define NAS100D_GPIO10 10 +#define NAS100D_GPIO11 11 +#define NAS100D_GPIO12 12 +#define NAS100D_GPIO13 13 +#define NAS100D_GPIO14 14 +#define NAS100D_GPIO15 15 + + +/* Buttons */ + +#define NAS100D_PB_GPIO NAS100D_GPIO14 +#define NAS100D_RB_GPIO NAS100D_GPIO4 +#define NAS100D_PO_GPIO NAS100D_GPIO12 /* power off */ + +#define NAS100D_PB_IRQ IRQ_IXP4XX_GPIO14 +#define NAS100D_RB_IRQ IRQ_IXP4XX_GPIO4 + +/* +#define NAS100D_PB_BM (1L << NAS100D_PB_GPIO) +#define NAS100D_PO_BM (1L << NAS100D_PO_GPIO) +#define NAS100D_RB_BM (1L << NAS100D_RB_GPIO) +*/ diff --git a/packages/linux/nas100d-kernel_2.6.14.bb b/packages/linux/nas100d-kernel_2.6.14.bb new file mode 100644 index 0000000000..5d4a1ed1b4 --- /dev/null +++ b/packages/linux/nas100d-kernel_2.6.14.bb @@ -0,0 +1,40 @@ +# Kernel for NAS 100d +# +# Increment PR_CONFIG for changes to the nas100d-kernel specific +# defconfig (do *NOT* increment anything in here for changes +# to other kernel configs!) +PR_CONFIG = "0" +# +# Increment the number below (i.e. the digits after PR) when +# making changes within this file or for changes to the patches +# applied to the kernel. +PR = "r0.${PR_CONFIG}" + +N1K_FILES = "\ + arch/arm/mach-ixp4xx/nas100d-pci.c \ + arch/arm/mach-ixp4xx/nas100d-power.c \ + arch/arm/mach-ixp4xx/nas100d-setup.c \ + include/asm-arm/arch-ixp4xx/nas100d.h \ +" + +N1K_PATCHES = "\ + file://10-ixp4xx-copy-from.patch;patch=1 \ + file://10-ixp4xx-le.patch;patch=1 \ + file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ + file://15-ixp4xx-writesb-l-w.patch;patch=1 \ + file://18-ixp4xx-io-h-addr.patch;patch=1 \ + file://28-spinlock-up.patch;patch=1 \ + file://29-ipv4-route-c-spinlock.patch;patch=1 \ + file://50-nas100d-arch.patch;patch=1 \ + file://60-nas100d-ide.patch;patch=1 \ + file://60-nas100d-i2c.patch;patch=1 \ + file://90-ixp4xx-pci-le.patch;patch=1 \ +" + +include nas100d-kernel.inc + +# These options get added to the kernel command line, only put things +# specific to the bootstrap of *this* kernel in here - DISTRO specfic +# config must be in CMDLINE_ROOT (see the full definition of CMDLINE +# in nas100d-kernel.inc) +# CMDLINE_KERNEL_OPTIONS = "x1205.hctosys=1" diff --git a/packages/linux/nas100d-kernel_2.6.15-rc1.bb b/packages/linux/nas100d-kernel_2.6.15-rc1.bb new file mode 100644 index 0000000000..3155a5ecd0 --- /dev/null +++ b/packages/linux/nas100d-kernel_2.6.15-rc1.bb @@ -0,0 +1,37 @@ +# Kernel for NAS 100d +# +# Increment PR_CONFIG for changes to the nas100d-kernel specific +# defconfig (do *NOT* increment anything in here for changes +# to other kernel configs!) +PR_CONFIG = "0" +# +# Increment the number below (i.e. the digits after PR) when +# making changes within this file or for changes to the patches +# applied to the kernel. +PR = "r0.${PR_CONFIG}" + +N1K_FILES = "\ + arch/arm/mach-ixp4xx/nas100d-pci.c \ + arch/arm/mach-ixp4xx/nas100d-power.c \ + arch/arm/mach-ixp4xx/nas100d-setup.c \ + include/asm-arm/arch-ixp4xx/nas100d.h \ +" + +N1K_PATCHES = "\ + file://00-memory-h-page-shift.patch;patch=1 \ + file://01-i2c-ixp4xx.patch;patch=1 \ + file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ + file://19-jffs2-force-be.patch;patch=1 \ + file://50-nas100d-arch.patch;patch=1 \ + file://60-nas100d-ide.patch;patch=1 \ + file://60-nas100d-i2c.patch;patch=1 \ + file://90-ixp4xx-nslu2.patch;patch=1 \ +" + +include nas100d-kernel.inc + +# These options get added to the kernel command line, only put things +# specific to the bootstrap of *this* kernel in here - DISTRO specfic +# config must be in CMDLINE_ROOT (see the full definition of CMDLINE +# in nas100d-kernel.inc) +CMDLINE_KERNEL_OPTIONS = "pcf8563.hctosys=1" diff --git a/packages/linux/nas100d-kernel_2.6.15-rc2.bb b/packages/linux/nas100d-kernel_2.6.15-rc2.bb new file mode 100644 index 0000000000..d3e5ae23d6 --- /dev/null +++ b/packages/linux/nas100d-kernel_2.6.15-rc2.bb @@ -0,0 +1,31 @@ +# Kernel for Iomega NAS 100d +# +# Increment PR_CONFIG for changes to the nas100d-kernel specific +# defconfig (do *NOT* increment anything in here for changes +# to other kernel configs!) +PR_CONFIG = "0" +# +# Increment the number below (i.e. the digits after PR) when +# making changes within this file or for changes to the patches +# applied to the kernel. +PR = "r0.${PR_CONFIG}" + +include nas100d-kernel.inc + +# N1K_PATCHES - full list of patches to apply +N1K_PATCHES = "\ + file://00-memory-h-page-shift.patch;patch=1 \ + file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ + file://19-jffs2-force-be.patch;patch=1 \ + file://50-nas100d-arch.patch;patch=1 \ + file://55-nas100d-arch.patch;patch=1 \ + file://60-nas100d-ide.patch;patch=1 \ + file://60-nas100d-i2c.patch;patch=1 \ + file://90-ixp4xx-nslu2.patch;patch=1 \ +" + +# These options get added to the kernel command line, only put things +# specific to the bootstrap of *this* kernel in here - DISTRO specfic +# config must be in CMDLINE_ROOT (see the full definition of CMDLINE +# in nas100d-kernel.inc) +CMDLINE_KERNEL_OPTIONS = "pcf8563.hctosys=1" diff --git a/packages/linux/nslu2-kernel.inc b/packages/linux/nslu2-kernel.inc index a0cc1daf25..39dcb6bed3 100644 --- a/packages/linux/nslu2-kernel.inc +++ b/packages/linux/nslu2-kernel.inc @@ -1,5 +1,3 @@ -# nslu2-kernel.inc -# # Standard definitions for any NSLU2 Linux kernel. # Include this file in a .bb which specifies, at least, # PN,PV,PR for the desired kernel @@ -7,32 +5,10 @@ # Define the following *before* including this file as # required: # -# N2K_EXTRA_FILES - kernel-tree path of extra files to install -# N2K_FILES - kernel-tree path of files to install, defaults to: -# drivers/i2c/chips/x1205-rtc.c -# arch/arm/mach-ixp4xx/nslu2-io.c -# arch/arm/mach-ixp4xx/nslu2-setup.c -# arch/arm/mach-ixp4xx/nslu2-pci.c -# arch/arm/mach-ixp4xx/nslu2-part.c -# include/asm-arm/arch-ixp4xx/nslu2.h -# ${N2K_EXTRA_FILES} -# -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# file://anonymiser.patch;patch=1 -# file://xscale-reset.patch;patch=1 -# file://mtd-shutdown.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# +# N2K_PATCHES - full list of patches to apply, to add files +# generate a patch against /dev/null # N2K_SUFFIX - the suffix to add after 'zImage-' in the -# deploy/images directory - defaults to "openslug" -# -# Notice that the N2K_PATCHES list is appropriate for -# openslug-kernel_2.6.11.2 and probably nothing else. +# deploy/images directory, should identify the image config # # DEFAULT_PREFERENCE is set automagically in this file as # follows: @@ -72,7 +48,6 @@ DEPENDS += "devio-native" # file). Files, including the all important defconfig, are # searched for in the following directories (last one first): # -# openslug-kernel-2.6.11.2 # nslu2-kernel/files # nslu2-kernel/X.Y # nslu2-kernel/X.Y.Z @@ -163,47 +138,23 @@ python () { # FILESPATH: this list is in order last-searched-first, therefore # the first entry is the *latest* and/or most specific -FILESPATH = "${FILE_DIRNAME}/${P}:${N2K_FILESPATH}:${FILE_DIRNAME}/openslug-kernel-2.6.11.2" +FILESPATH = "${FILE_DIRNAME}/${P}:${N2K_FILESPATH}" # The working directory will be the 'base' version (which may not be the # same as implied by the PV variable because it corresponds to the prior # minor version for rc and pre patched versions). S = "${WORKDIR}/linux-${N2K_SRCVER}" -# N2K_FILES is a list of additional files added to the source, these are -# put in place before the patches, so may themselves be patched. The list -# gives the path name relative to the base of the kernel source tree, the -# base file name is used to *find* the file. -N2K_EXTRA_FILES ?= -N2K_FILES ?= "\ - drivers/i2c/chips/x1205-rtc.c \ - arch/arm/mach-ixp4xx/nslu2-io.c \ - arch/arm/mach-ixp4xx/nslu2-setup.c \ - arch/arm/mach-ixp4xx/nslu2-pci.c \ - arch/arm/mach-ixp4xx/nslu2-part.c \ - include/asm-arm/arch-ixp4xx/nslu2.h \ - ${N2K_EXTRA_FILES}" - -N2K_SRCFILES = "${@( ' '.join([ ("file://" + n2k_file.split('/')[-1]) for n2k_file in bb.data.getVar("N2K_FILES",d,1).split(None) ]) )}" - -# N2K_PATCHES is a list of additional patches, the list specified -# here comes from the openslug-2.6.11.2 kernel, typically extra -# patches will be required and very often patches will need to -# be removed (i.e. the default is typically not very useful!) -N2K_EXTRA_PATCHES ?= -N2K_PATCHES ?= "\ - file://nslu2_2.6.11.patch;patch=1 \ - file://usbnet.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ - file://xscale-reset.patch;patch=1 \ - file://mtd-shutdown.patch;patch=1 \ - ${N2K_EXTRA_PATCHES}" +# N2K_PATCHES is the list of patches. +N2K_PATCHES ?= "" +# Image suffix - actually set in conf/machine/nslu2.conf as it is also +# used by anything which needs to know the name of the generated image. +# May be overridden in the distro if patches or defconfig are changed. +#FIXME: this can be removed, it is just here for safety with the old names. N2K_SUFFIX ?= "openslug" SRC_URI = "${N2K_SRCURI}" -SRC_URI += "${N2K_SRCFILES}" SRC_URI += "${N2K_PATCHES}" SRC_URI += "file://defconfig" @@ -235,27 +186,22 @@ EXTRA_OEMAKE += "EXTRAVERSION=" EXTRA_OEMAKE += "LOCALVERSION=" EXTRA_OEMAKE += "MAKEFLAGS='--no-print-directory'" -# By putting the added files in place in a separate task before -# do_patch it becomes possible to patch these files. -do_unpacklocal() { - for f in ${N2K_FILES} - do - s="$(basename "$f")" - install -m 0644 "${WORKDIR}/$s" "${S}/$f" - done -} +# Override KERNEL_RELEASE from kernel.bbclass to match: +KERNEL_RELEASE = "${KERNEL_VERSION}" addtask unpacklocal before do_patch after do_unpack +# NOTE: in MM kernel builds the config options (oldconfig, menuconfig +# and so on) do not allow an option to be overridden, so the following +# removes the options which must be changed. do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig ${S}/.config - if test '${ARCH_BYTE_SEX}' = le + rm -f ${S}/.config + echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >>'${S}/.config' + if test '${ARCH_BYTE_SEX}' = be then - sed -i '/CONFIG_CPU_BIG_ENDIAN/d' '${S}/.config' - else echo 'CONFIG_CPU_BIG_ENDIAN=y' >>'${S}/.config' fi - echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config + sed -e '/CONFIG_CPU_BIG_ENDIAN/d' -e '/CONFIG_CMDLINE=/d' '${WORKDIR}/defconfig' >>'${S}/.config' rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch } @@ -310,5 +256,5 @@ python () { # Don't build the kernel unless we're targeting an nslu2 mach = bb.data.getVar("MACHINE", d, 1) if mach != 'nslu2': - raise bb.parse.SkipPackage("OpenSlug only builds for the Linksys NSLU2") + raise bb.parse.SkipPackage("nslu2-kernel only builds for the Linksys NSLU2") } diff --git a/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-copy-from.patch b/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-copy-from.patch deleted file mode 100644 index 03d94d282c..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-copy-from.patch +++ /dev/null @@ -1,39 +0,0 @@ -# This patch fixes ixp4xx_copy_from for cases where the 'from' -# pointer is odd - that would cause all the accesses to be -# misaligned in the old code. ---- linux-2.6.12.2/.pc/ixp4xx_copy_from.patch/drivers/mtd/maps/ixp4xx.c 2005-09-21 22:35:38.761014739 -0700 -+++ linux-2.6.12.2/drivers/mtd/maps/ixp4xx.c 2005-09-23 01:27:54.696223365 -0700 -@@ -54,19 +54,23 @@ - static void ixp4xx_copy_from(struct map_info *map, void *to, - unsigned long from, ssize_t len) - { -- int i; -- u8 *dest = (u8 *) to; -- u16 *src = (u16 *) (map->map_priv_1 + from); -- u16 data; -+ if (len <= 0) -+ return; - -- for (i = 0; i < (len / 2); i++) { -- data = src[i]; -- dest[i * 2] = BYTE0(data); -- dest[i * 2 + 1] = BYTE1(data); -+ u8 *dest = (u8 *) to; -+ u8 *src = (u8 *) (map->map_priv_1 + from); -+ if (from & 1) -+ *dest++ = BYTE1(*(u16 *)(src-1)), ++src, --len; -+ -+ while (len >= 2) { -+ u16 data = *(u16 *)src; src += 2; -+ *dest++ = BYTE0(data); -+ *dest++ = BYTE1(data); -+ len -= 2; - } - -- if (len & 1) -- dest[len - 1] = BYTE0(src[i]); -+ if (len > 0) -+ *dest++ = BYTE0(*(u16 *)src); - } - - /* diff --git a/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-regs.patch b/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-regs.patch deleted file mode 100644 index 32f7e3ccb8..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/10-ixp4xx-regs.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-01 23:37:49.000000000 -0800 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-06-17 17:51:32.569981939 -0700 -@@ -52,7 +52,7 @@ - * Expansion BUS Configuration registers - */ - #define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000) --#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFD000) -+#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFE000) - #define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000) - - /* diff --git a/packages/linux/nslu2-kernel/2.6.13/20-timer.patch b/packages/linux/nslu2-kernel/2.6.13/20-timer.patch deleted file mode 100644 index 356da6bb28..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/20-timer.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -urN linux-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h ---- linux-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h 2005-09-17 12:42:45.000000000 +0200 -+++ nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h 2005-09-17 12:15:31.000000000 +0200 -@@ -9,7 +9,12 @@ - * We use IXP425 General purpose timer for our timer needs, it runs at - * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the - * timer register ignores the bottom 2 bits of the LATCH value. -+ * The NSLU2 has a 33.00MHz crystal, so a different FREQ is required. - */ -+#ifdef CONFIG_ARCH_NSLU2 -+#define FREQ 66000000 -+#else - #define FREQ 66666666 -+#endif - #define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) - diff --git a/packages/linux/nslu2-kernel/2.6.13/30-i2c-x1205.patch b/packages/linux/nslu2-kernel/2.6.13/30-i2c-x1205.patch deleted file mode 100644 index f05609f1e6..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/30-i2c-x1205.patch +++ /dev/null @@ -1,580 +0,0 @@ -diff -urN linux-2.6.13.1/drivers/i2c/chips/Kconfig nslu2-2.6.13.1/drivers/i2c/chips/Kconfig ---- linux-2.6.13.1/drivers/i2c/chips/Kconfig 2005-09-17 12:42:33.000000000 +0200 -+++ nslu2-2.6.13.1/drivers/i2c/chips/Kconfig 2005-09-17 13:46:42.000000000 +0200 -@@ -136,4 +136,14 @@ - This driver can also be built as a module. If so, the module - will be called max6875. - -+config SENSORS_X1205 -+ tristate "Xicor X1205 RTC chip" -+ depends on I2C && EXPERIMENTAL -+ select I2C_SENSOR -+ help -+ If you say yes here you get support for the Xicor x1205 RTC chip. -+ -+ This driver can also be built as a module. If so, the module -+ will be called x1205-rtc -+ - endmenu -diff -urN linux-2.6.13.1/drivers/i2c/chips/Makefile nslu2-2.6.13.1/drivers/i2c/chips/Makefile ---- linux-2.6.13.1/drivers/i2c/chips/Makefile 2005-09-17 12:42:33.000000000 +0200 -+++ nslu2-2.6.13.1/drivers/i2c/chips/Makefile 2005-09-17 13:35:39.000000000 +0200 -@@ -13,6 +13,7 @@ - obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o - obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o - obj-$(CONFIG_TPS65010) += tps65010.o -+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG -diff -urN linux-2.6.13.1/drivers/i2c/chips/x1205-rtc.c nslu2-2.6.13.1/drivers/i2c/chips/x1205-rtc.c ---- linux-2.6.13.1/drivers/i2c/chips/x1205-rtc.c 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/drivers/i2c/chips/x1205-rtc.c 2005-09-17 13:51:03.000000000 +0200 -@@ -0,0 +1,547 @@ -+/* -+ x1205 - an 12c driver for the Xicor X1205 RTC -+ Copyright 2004 Karen Spearel -+ -+ please send all reports to: -+ kas11 at tampabay dot rr dot com -+ -+ based on linux/drivers/acron/char/pcf8583.h -+ Copyright (C) 2000 Russell King -+ -+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. -+*/ -+/* -+ -+ * i2c_adapter is the structure used to identify a physical i2c bus along -+ * with the access algorithms necessary to access it. -+ -+struct i2c_adapter { -+ struct module *owner; -+ unsigned int id; == is algo->id | hwdep.struct->id, for registered values see below -+ unsigned int class; -+ struct i2c_algorithm *algo; the algorithm to access the bus -+ void *algo_data; -+ -+ --- administration stuff. -+ int (*client_register)(struct i2c_client *); -+ int (*client_unregister)(struct i2c_client *); -+ -+ data fields that are valid for all devices -+ struct semaphore bus_lock; -+ struct semaphore clist_lock; -+ -+ int timeout; -+ int retries; -+ struct device dev; the adapter device -+ struct class_device class_dev; the class device -+ -+#ifdef CONFIG_PROC_FS -+ No need to set this when you initialize the adapter -+ int inode; -+#endif def CONFIG_PROC_FS -+ -+ int nr; -+ struct list_head clients; -+ struct list_head list; -+ char name[I2C_NAME_SIZE]; -+ struct completion dev_released; -+ struct completion class_dev_released; -+}; -+*/ -+ -+ -+/*========== Driver for the X1205 on the Linksys NSLU2 ==================*/ -+ -+#include <linux/init.h> -+#include <linux/i2c.h> -+#include <linux/slab.h> -+#include <linux/string.h> -+#include <linux/errno.h> -+#include <linux/bcd.h> -+#include <linux/rtc.h> -+#include <linux/fs.h> -+#include <linux/proc_fs.h> -+#include <linux/miscdevice.h> -+#include <linux/device.h> -+#include <asm/uaccess.h> -+#include <asm/system.h> -+#include <linux/moduleparam.h> -+ -+#define RTC_GETDATETIME 0 -+#define RTC_SETTIME 1 -+#define RTC_SETDATETIME 2 -+ -+#define I2C_M_WR 0 // just for consistancy -+ -+// offsets into read buf - add 2 for write buf -+#define CCR_SEC 0 -+#define CCR_MIN 1 -+#define CCR_HOUR 2 -+#define CCR_MDAY 3 -+#define CCR_MONTH 4 -+#define CCR_YEAR 5 -+#define CCR_WDAY 6 -+#define CCR_Y2K 7 -+ -+#define X1205_I2C_BUS_ADDR 0x6f // hardwired into x1205 -+#define X1205_ALM0_BASE 0x00 // Base address of the ALM0 -+#define X1205_CCR_BASE 0x30 // Base address of the CCR -+#define X1205_SR_ADDR 0x3f // Status Register -+#define X1205_SR_WEL 0x02 // Write Enable Latch bit -+#define X1205_SR_RWEL 0x04 // Register Write Enable Bit -+#define X1205_MILBIT 0x80 // this bit set in ccr.hour for 24 hr mode -+#define NOERR 0 -+#define RTC_NODATE 0 -+#define RTC_DATETOO 1 -+ -+// comment out next line is your x1205 can't do page writes -+//#define X1205PAGEWRITE 1 -+#ifdef X1205PAGEWRITE -+#define DRIVERNAME "Xicor x1205 RTC Driver v0.9.3.3" -+#else -+#define DRIVERNAME "Xicor x1205 RTC Dvr v0.9.3.3NPW" -+#endif -+ -+#define DEBUG KERN_DEBUG -+ -+ -+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base); -+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base); -+static int x1205_attach(struct i2c_adapter *adapter); -+static int x1205_detach(struct i2c_client *client); -+static int x1205_validate_tm(struct rtc_time *tm); -+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg); -+static int x1205_sync_rtc(void); -+static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr); -+static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); -+static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data); -+ -+static struct i2c_driver x1205_driver = { -+ .owner = THIS_MODULE, -+ .name = DRIVERNAME, -+ .id = I2C_DRIVERID_EXP0, -+ .flags = I2C_DF_NOTIFY, -+ .attach_adapter = &x1205_attach, //we don't need to probe...x1205 is hardwired @ 0x6f -+ .detach_client = &x1205_detach, -+ .command = &x1205_command, //this prolly never gets called...used internally tho -+}; -+ -+static struct i2c_client x1205_i2c_client = { -+ .flags = 0, -+ .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit -+ .adapter = NULL, // the adapter we sit on assigned in attach -+ .driver = &x1205_driver, // and our access routines -+ .usage_count = 0, // How many accesses currently to this client -+ .dev = {}, // the device structure -+ .list = {}, -+ .name = DRIVERNAME, -+ .released = {}, -+}; -+ -+static struct file_operations rtc_fops = { -+ owner: THIS_MODULE, -+ ioctl: x1205_ioctl, -+ read: x1205_read, -+}; -+ -+static struct miscdevice x1205_miscdev = { -+ .minor = RTC_MINOR, -+ .name = "rtc", -+ .fops = &rtc_fops, -+}; -+extern int (*set_rtc)(void); -+static unsigned epoch = 1900; //coresponds to year 0 -+static unsigned rtc_epoch = 2000; -+static const unsigned char days_in_mo[] = -+{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; -+ -+//===================================CODE====================================== -+// in the routines that deal directly with the x1205 hardware, we use -+// rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch -+// Epoch is inited as 2000. Time is set to UT -+//============================================================================= -+static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base) -+{ -+ static unsigned char addr[2] = { 0,} ; -+ unsigned char buf[8]; -+ struct i2c_msg msgs[2] = { -+ { client->addr, I2C_M_WR, 2, addr }, //msg 1 = send base address -+ { client->addr, I2C_M_RD, 8, buf }, //msg 2 = read sequential data -+ }; -+ addr[1] = reg_base; -+ if ((i2c_transfer(client->adapter, msgs, 2)) == 2) { //did we read 2 messages? -+ printk(KERN_DEBUG "raw x1205 read data - sec-%02x min-%02x hr-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", -+ buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6], buf[7]); -+ tm->tm_sec = BCD2BIN(buf[CCR_SEC]); -+ tm->tm_min = BCD2BIN(buf[CCR_MIN]); -+ buf[CCR_HOUR] &= ~X1205_MILBIT; -+ tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); //hr is 0-23 -+ tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); -+ tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); -+ rtc_epoch = BCD2BIN(buf[CCR_Y2K]) * 100; -+ tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + rtc_epoch - epoch; -+ tm->tm_wday = buf[CCR_WDAY]; -+ printk(KERN_DEBUG "rtc_time output data - sec-%02d min-%02d hr-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", -+ tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday,epoch, rtc_epoch); -+ } else { -+ printk(KERN_DEBUG "i2c_transfer Read Error\n"); -+ return -EIO; -+ } -+ -+ return NOERR; -+} -+// x1205pagewrite allows writing a block of registers in msg3 even though the x1205 says -+// nothing about this in its spec. -+// it needs more testing as it is possible some x1205s are actually not-completely- -+// functional x1226s and there is a reason for the multiple write to not be in the spec. -+// anyhow, it is enabled for the time being...and we even push out luck by sending 10 bytes -+ -+static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base) -+{ -+ static unsigned char wel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL }; -+ static unsigned char rwel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL | X1205_SR_RWEL }; -+ static unsigned char diswe[3] = { 0, X1205_SR_ADDR, 0 }; -+ -+#ifdef X1205PAGEWRITE -+ -+ static unsigned char buf[10] = { 0, X1205_CCR_BASE, }; -+ struct i2c_msg msgs[4] = { -+ { client->addr, I2C_M_WR, 3, wel }, //msg 1 = write WEL to to ccr sr -+ { client->addr, I2C_M_WR, 3, rwel }, //msg 2 = write RWEL to ccr sr -+ { client->addr, I2C_M_WR, 10, buf }, //msg 3 = write ccr base addr +seq data -+ { client->addr, I2C_M_WR, 3, diswe }, //msg 4 = 0 to ccr sr to disable writes -+ }; -+ -+ msgs[2].len = 5; // 5 bytes + addr to set time only -+ buf [1] = reg_base; -+ buf[CCR_SEC+2] = BIN2BCD(tm->tm_sec); -+ buf[CCR_MIN+2] = BIN2BCD(tm->tm_min); -+ buf[CCR_HOUR+2] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format -+ if (datetoo == 1) { -+ buf[CCR_MDAY+2] = BIN2BCD(tm->tm_mday); -+ buf[CCR_MONTH+2] = BIN2BCD(tm->tm_mon); // input is 0-11 -+ buf[CCR_YEAR+2] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 -+ buf[CCR_WDAY+2] = tm->tm_wday & 7; -+ buf[CCR_Y2K+2] = BIN2BCD((rtc_epoch/100)); -+ msgs[2].len += 5; //5 more bytes to set date -+ } -+ printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", -+ tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); -+ printk(KERN_DEBUG "BCD write data - sec-%02x min-%02x hour-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", -+ buf[2],buf[3],buf[4],buf[5],buf[6], buf[7], buf[8], buf[9]); -+ -+ if ((i2c_transfer(client->adapter, msgs, 4)) != 4) -+ return -EIO; -+ return NOERR; -+ -+#else //do this if page writes aren't working -+ -+ int i,xfer; -+ static unsigned char data[3] = { 0,}; -+ static unsigned char buf[8]; -+ -+ buf[CCR_SEC] = BIN2BCD(tm->tm_sec); -+ buf[CCR_MIN] = BIN2BCD(tm->tm_min); -+ buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format -+ if (datetoo == 1) { -+ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); -+ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); // input is 0-11 -+ buf[CCR_YEAR] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 -+ buf[CCR_WDAY] = tm->tm_wday & 7; -+ buf[CCR_Y2K] = BIN2BCD((rtc_epoch/100)); -+ } -+ printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", -+ tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); -+ -+ xfer = i2c_master_send(client, wel, 3); -+ printk(KERN_DEBUG "wen - %x\n", xfer); -+ if (xfer != 3) -+ return -EIO; -+ -+ xfer = i2c_master_send(client, rwel, 3); -+ printk(KERN_DEBUG "wenb - %x\n", xfer); -+ if (xfer != 3) -+ return -EIO; -+ -+ for (i = 0; i < 8; i++) { -+ data[1] = i + reg_base; -+ data[2] = buf[i]; -+ xfer = i2c_master_send(client, data, 3); -+ printk(KERN_DEBUG "xfer - %d addr - %02x data - %02x\n", xfer, data[1], data[2]); -+ if (xfer != 3) -+ return -EIO; -+ }; -+ -+ xfer = i2c_master_send(client, diswe, 3); -+ printk(KERN_DEBUG "wdis - %x\n", xfer); -+ if (xfer != 3) -+ return -EIO; -+ return NOERR; -+#endif -+} -+//============================================================================= -+ -+static int x1205_attach(struct i2c_adapter *adapter) -+{ -+ struct rtc_time tm; -+ struct timespec tv; -+ int errno; -+ -+ x1205_i2c_client.adapter = adapter; -+// x1205_i2c_client.id++; -+ -+ if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver -+ return -EIO; -+ -+ if ((errno = i2c_attach_client(&x1205_i2c_client)) != NOERR) -+ return errno; -+ -+ tv.tv_nsec = tm.tm_sec * 10000000; -+ tv.tv_sec = mktime(tm.tm_year+epoch, tm.tm_mon, tm.tm_mday, tm.tm_hour, -+ tm.tm_min, tm.tm_sec); -+ do_settimeofday(&tv); -+ set_rtc = x1205_sync_rtc; -+ -+ printk(KERN_DEBUG "%s attached on adapter %s\n",x1205_i2c_client.name, -+ x1205_i2c_client.adapter->name); //why is this name a null string? -+ -+ return NOERR; -+} -+ -+static int x1205_detach(struct i2c_client *client) -+{ -+ int errno; -+ -+ if ((errno = i2c_detach_client(client)) != 0) { -+ printk(KERN_DEBUG "i2c_detach failed - errno = %d\n", errno); -+ return errno; -+ } -+ -+ return NOERR; -+} -+ -+// make sure the rtc_time values are in bounds -+static int x1205_validate_tm(struct rtc_time *tm) -+{ -+ tm->tm_year += 1900; -+ -+ if (tm->tm_year < 1970) -+ return -EINVAL; -+ -+ if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) -+ return -EINVAL; -+ -+ if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) && -+ ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400))))) -+ return -EINVAL; -+ -+ if ((tm->tm_year -= epoch) > 255) -+ return -EINVAL; -+ -+ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) -+ return -EINVAL; -+ return NOERR; -+} -+ -+static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm) -+{ -+ int errno, dodate = RTC_DATETOO; -+ -+ if (client == NULL || tm == NULL) -+ return -EINVAL; -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ printk(KERN_DEBUG "x1205_command %d\n", cmd); -+ -+ switch (cmd) { -+ case RTC_GETDATETIME: -+ return x1205_get_datetime(client, tm, X1205_CCR_BASE); -+ -+ case RTC_SETTIME: // note fall thru -+ dodate = RTC_NODATE; -+ case RTC_SETDATETIME: -+ if ((errno = x1205_validate_tm(tm)) < NOERR) -+ return errno; -+ return x1205_set_datetime(client, tm, dodate, X1205_CCR_BASE); -+ -+ default: -+ return -EINVAL; -+ } -+} -+ -+static int x1205_sync_rtc(void) -+{ -+ struct rtc_time new_tm, old_tm; -+ unsigned long cur_secs = xtime.tv_sec; -+ -+ printk(KERN_DEBUG "x1205_sync_rtc entry\n"); -+ -+ if (x1205_command(&x1205_i2c_client, RTC_GETDATETIME, &old_tm)) -+ return 0; -+ -+// xtime.tv_nsec = old_tm.tm_sec * 10000000; //FIXME: -+ new_tm.tm_sec = cur_secs % 60; -+ cur_secs /= 60; -+ new_tm.tm_min = cur_secs % 60; -+ cur_secs /= 60; -+ new_tm.tm_hour = cur_secs % 24; -+ -+ /* -+ * avoid writing when we're going to change the day -+ * of the month. We will retry in the next minute. -+ * This basically means that if the RTC must not drift -+ * by more than 1 minute in 11 minutes. -+ */ -+ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) || -+ (new_tm.tm_hour == 23 && new_tm.tm_min == 59)) -+ return 1; -+ printk(KERN_DEBUG "x1205_sync_rtc exit\n"); -+ -+ return x1205_command(&x1205_i2c_client, RTC_SETTIME, &new_tm); -+} -+ -+static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr) -+{ -+ struct rtc_time tm; -+ -+ if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) -+ return -EIO; -+ return copy_to_user(buf, &tm, sizeof(tm)) ? -EFAULT : NOERR; -+} -+ -+//============================================================================== -+ -+static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, -+ unsigned long arg) -+{ -+ struct rtc_time tm; -+ int errno; -+ -+ printk(KERN_DEBUG "ioctl = %x\n", cmd); -+ -+ switch (cmd) { -+ case RTC_RD_TIME: -+ if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) -+ return -EIO; -+ break; -+ -+ case RTC_SET_TIME: -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) -+ return -EFAULT; -+ if ((errno = x1205_validate_tm(&tm)) < NOERR) -+ return errno; -+ return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_CCR_BASE); -+ -+ case RTC_ALM_SET: //FIXME: set Control Regs -+ if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) -+ return -EFAULT; -+ return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_ALM0_BASE); -+ -+ case RTC_ALM_READ: -+ if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_ALM0_BASE)) < NOERR) -+ return -EIO; -+ break; -+ -+ case RTC_EPOCH_READ: -+ -+ return put_user (epoch, (unsigned long __user *)arg); -+ -+ case RTC_EPOCH_SET: -+ if (arg < 1900) -+ return -EINVAL; -+ -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ epoch = arg; -+ return 0; -+ -+ default: -+ return -ENOTTY; -+ } -+ return copy_to_user((void __user *)arg, &tm, sizeof tm) ? -EFAULT : 0; -+ -+} -+ -+static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data) -+{ -+ struct rtc_time tm; -+ int slen, errno; -+ -+ if ((errno = x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) -+ return errno; -+ -+// here we return the real year and the month as 1-12 since it is human-readable -+ slen = sprintf(buf, "rtc_time\t: %02d:%02d:%02d\nrtc_date\t: %04d-%02d-%02d\n", -+ tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday); -+ printk(KERN_DEBUG "raw rtc_time\t: %02d:%02d:%02d\nraw rtc_date\t: %04d-%02d-%02d\n", -+ tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year, tm.tm_mon, tm.tm_mday); -+ -+ if (slen <= off + len) -+ *eof = 1; -+ *start = buf + off; -+ slen -= off; -+ if (slen > len) -+ slen = len; -+ if ( slen < 0 ) -+ slen = 0; -+ -+ return slen; -+} -+ -+static int __init x1205_init(void) -+{ -+ struct rtc_time tm; -+ int errno; -+ printk(KERN_INFO "LOADED %s\n", DRIVERNAME); -+ -+ if ((errno = i2c_add_driver(&x1205_driver)) != NOERR) { -+ dev_dbg(x1205_i2c_client.dev, "x1205_init failed - errno = %d\n", errno); -+ return (errno); -+ } -+ if ((errno = misc_register(&x1205_miscdev)) != NOERR) { -+ dev_dbg(x1205_i2c_client.dev, "Register Misc Driver failed - errno = %d\n", errno); -+ i2c_del_driver(&x1205_driver); -+ return errno; -+ } -+ if (create_proc_read_entry("driver/rtc", 0, NULL, x1205_read_proc, NULL) < NOERR) -+ return -ENOMEM; -+ if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functionality -+ return -EIO; -+ -+ return NOERR; -+} -+ -+static void __exit x1205_exit(void) -+{ -+ remove_proc_entry("driver/rtc", NULL); -+ misc_deregister(&x1205_miscdev); -+ i2c_del_driver(&x1205_driver); -+ set_rtc = NULL; -+} -+ -+MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -+MODULE_DESCRIPTION("Xicor X1205-RTC Driver"); -+MODULE_LICENSE("GPL"); -+static int debug = 7; -+module_param(debug, bool, 0644); -+MODULE_PARM_DESC(debug, "Debugging enabled = 1"); -+ -+module_init(x1205_init); -+module_exit(x1205_exit); diff --git a/packages/linux/nslu2-kernel/2.6.13/40-mtd-shutdown.patch b/packages/linux/nslu2-kernel/2.6.13/40-mtd-shutdown.patch deleted file mode 100644 index e7cce4ebc0..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/40-mtd-shutdown.patch +++ /dev/null @@ -1,66 +0,0 @@ -# Ensure that the MTD is shut down on halt/reboot, otherwise the -# hardware reset hangs - ---- linux-2.6.12.2/drivers/mtd/maps/ixp4xx.c.orig 2005-07-17 15:07:47.790388300 -0700 -+++ linux-2.6.12.2/drivers/mtd/maps/ixp4xx.c 2005-07-17 17:00:08.082672710 -0700 -@@ -144,6 +144,52 @@ - return 0; - } - -+static void ixp4xx_flash_shutdown(struct device *_dev) -+{ -+ struct platform_device *dev = to_platform_device(_dev); -+ struct flash_platform_data *plat = dev->dev.platform_data; -+ struct ixp4xx_flash_info *info = dev_get_drvdata(&dev->dev); -+ map_word d; -+ -+ dev_set_drvdata(&dev->dev, NULL); -+ -+ if(!info) -+ return; -+ -+ /* -+ * This is required for a soft reboot to work. -+ */ -+ d.x[0] = 0xff; -+ ixp4xx_write16(&info->map, d, 0x55 * 0x2); -+ -+#if 0 -+ /* This is commented out because it seems to cause a kernel -+ * panic (at least if it isn't commented out the kernel fails -+ * to shut down). Should be investigated. -+ */ -+ if (info->mtd) { -+ del_mtd_partitions(info->mtd); -+ map_destroy(info->mtd); -+ } -+#endif -+ if (info->map.map_priv_1) -+ iounmap((void *) info->map.map_priv_1); -+ -+ if (info->partitions) -+ kfree(info->partitions); -+ -+ if (info->res) { -+ release_resource(info->res); -+ kfree(info->res); -+ } -+ -+ if (plat->exit) -+ plat->exit(); -+ -+ /* Disable flash write */ -+ *IXP4XX_EXP_CS0 &= ~IXP4XX_FLASH_WRITABLE; -+} -+ - static int ixp4xx_flash_probe(struct device *_dev) - { - struct platform_device *dev = to_platform_device(_dev); -@@ -243,6 +289,7 @@ - .bus = &platform_bus_type, - .probe = ixp4xx_flash_probe, - .remove = ixp4xx_flash_remove, -+ .shutdown = ixp4xx_flash_shutdown, - }; - - static int __init ixp4xx_flash_init(void) diff --git a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-arch.patch b/packages/linux/nslu2-kernel/2.6.13/50-nslu2-arch.patch deleted file mode 100644 index f49ea7f1c3..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-arch.patch +++ /dev/null @@ -1,84 +0,0 @@ ---- linux-2.6.11/arch/arm/boot/compressed/head.S 2005-06-17 17:51:27.245788998 -0700 -+++ linux-2.6.11/arch/arm/boot/compressed/head.S 2005-06-17 17:54:45.041806429 -0700 -@@ -37,6 +37,7 @@ - defined(CONFIG_ARCH_INTEGRATOR) || \ - defined(CONFIG_ARCH_PXA) || \ - defined(CONFIG_ARCH_IXP4XX) || \ -+ defined(CONFIG_ARCH_NSLU2) || \ - defined(CONFIG_ARCH_IXP2000) || \ - defined(CONFIG_ARCH_LH7A40X) || \ - defined(CONFIG_ARCH_OMAP) ---- linux-2.6.11/.pc/2.6.patch/arch/arm/boot/compressed/head-xscale.S 2005-03-01 23:37:52.000000000 -0800 -+++ linux-2.6.11/arch/arm/boot/compressed/head-xscale.S 2005-06-17 17:51:32.546985425 -0700 -@@ -47,3 +47,8 @@ - orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) - #endif - -+#ifdef CONFIG_ARCH_NSLU2 -+ mov r7, #(MACH_TYPE_NSLU2 & 0xff) -+ orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00) -+#endif -+ ---- linux-2.6.11/.pc/2.6.patch/arch/arm/mach-ixp4xx/Kconfig 2005-06-17 17:51:27.365770810 -0700 -+++ linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig 2005-06-17 17:51:32.560983303 -0700 -@@ -43,6 +43,12 @@ - IXDP465 Development Platform (Also known as BMP). - For more information on this platform, see <file:Documentation/arm/IXP4xx>. - -+config ARCH_NSLU2 -+ bool "NSLU2" -+ help -+ Say 'Y' here if you want your kernel to support Linksys's -+ NSLU2 NAS device. For more information on this platform, -+ see http://www.nslu2-linux.org - - # - # IXCDP1100 is the exact same HW as IXDP425, but with a different machine ---- linux-2.6.11/.pc/2.6.patch/arch/arm/tools/mach-types 2005-06-17 17:51:27.423762020 -0700 -+++ linux-2.6.11/arch/arm/tools/mach-types 2005-06-17 17:51:32.564982697 -0700 -@@ -604,7 +604,7 @@ - roverp7 MACH_ROVERP7 ROVERP7 594 - pr818s MACH_PR818S PR818S 595 - trxpro MACH_TRXPRO TRXPRO 596 --nslu2 MACH_NSLU2 NSLU2 597 -+nslu2 ARCH_NSLU2 NSLU2 597 - e400 MACH_E400 E400 598 - trab MACH_TRAB TRAB 599 - cmc_pu2 MACH_CMC_PU2 CMC_PU2 600 ---- linux-2.6.11/.pc/2.6.patch/drivers/mtd/maps/ixp4xx.c 2005-03-01 23:37:30.000000000 -0800 -+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-06-17 17:51:32.566982394 -0700 -@@ -94,7 +94,11 @@ - struct resource *res; - }; - -+#ifdef CONFIG_ARCH_NSLU2 -+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL }; -+#else - static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; -+#endif - - static int ixp4xx_flash_remove(struct device *_dev) - { ---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-01 23:37:51.000000000 -0800 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h 2005-06-17 17:51:32.567982242 -0700 -@@ -44,5 +44,6 @@ - #include "ixdp425.h" - #include "coyote.h" - #include "prpmc1100.h" -+#include "nslu2.h" - - #endif /* _ASM_ARCH_HARDWARE_H */ ---- linux-2.6.11/.pc/2.6.patch/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-01 23:38:12.000000000 -0800 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h 2005-06-17 17:51:32.568982091 -0700 -@@ -93,4 +93,11 @@ - #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 - #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 - -+/* -+ * NSLU2 board IRQs -+ */ -+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11 -+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10 -+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 -+ - #endif diff --git a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-include.patch b/packages/linux/nslu2-kernel/2.6.13/50-nslu2-include.patch deleted file mode 100644 index c69e69c53e..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-include.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -urN linux-2.6.13.1/include/asm-arm/arch-ixp4xx/nslu2.h nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/nslu2.h ---- linux-2.6.13.1/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/nslu2.h 2005-09-16 18:58:05.000000000 +0200 -@@ -0,0 +1,43 @@ -+/* -+ * include/asm-arm/arch-ixp4xx/nslu2.h -+ * -+ * NSLU2 platform specific definitions -+ * -+ * Author: Mark Rakes <mrakes AT mac.com> -+ * Maintainers: http://www.nslu2-linux.org -+ * -+ * based on ixdp425.h: -+ * Copyright 2004 (c) MontaVista, Software, Inc. -+ * -+ * This file is licensed under the terms of the GNU General Public -+ * License version 2. This program is licensed "as is" without any -+ * warranty of any kind, whether express or implied. -+ */ -+ -+// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -+// kas11 11-2-04 -+ -+#ifndef __ASM_ARCH_HARDWARE_H__ -+#error "Do not include this directly, instead #include <asm/hardware.h>" -+#endif -+ -+#define NSLU2_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS -+#define NSLU2_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE -+ -+#define NSLU2_SDA_PIN 7 -+#define NSLU2_SCL_PIN 6 -+ -+/* -+ * NSLU2 PCI IRQs -+ */ -+#define NSLU2_PCI_MAX_DEV 3 -+#define NSLU2_PCI_IRQ_LINES 3 -+ -+ -+/* PCI controller GPIO to IRQ pin mappings */ -+#define NSLU2_PCI_INTA_PIN 11 -+#define NSLU2_PCI_INTB_PIN 10 -+#define NSLU2_PCI_INTC_PIN 9 -+//#define NSLU2_PCI_INTD_PIN 8 -+ -+ diff --git a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-setup.patch b/packages/linux/nslu2-kernel/2.6.13/50-nslu2-setup.patch deleted file mode 100644 index f38c0c8b3e..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/50-nslu2-setup.patch +++ /dev/null @@ -1,1156 +0,0 @@ -diff -urN linux-2.6.13.1/arch/arm/mach-ixp4xx/Makefile nslu2-2.6.13.1/arch/arm/mach-ixp4xx/Makefile ---- linux-2.6.13.1/arch/arm/mach-ixp4xx/Makefile 2005-09-17 12:42:02.000000000 +0200 -+++ nslu2-2.6.13.1/arch/arm/mach-ixp4xx/Makefile 2005-09-17 12:44:11.000000000 +0200 -@@ -8,4 +8,5 @@ - obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o - obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o - obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o -+obj-$(CONFIG_ARCH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o - -diff -urN linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-io.c nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-io.c ---- linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-io.c 2005-09-17 00:12:18.000000000 +0200 -@@ -0,0 +1,777 @@ -+//============================================================================= -+// -+// n2-io.c version 0.1.7 -+// Author: Karen Spearel <kas11 at tampabay.rr.com> -+// please report problems/bugs directly to the address above -+// -+// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per -+// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk -+// -+// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD, -+// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT -+// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER -+// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS. -+// -+//============================================================================= -+// GPIO Function State -+// 0 Red LED Status -+// 1 Green LED Ready = 1 -+// 2 Disk 2 LED On = 0 -+// 3 Disk 1 LED On = 0 -+// 4 Buzzer -+// 5 Power Button Pressed = 1 -+// 8 Power Down Output = 1 powers down N2 -+// 12 Reset Pressed = 0 -+//============================================================================= -+// this driver is N2 specific and is purposely designed to do the minimum -+// necessary to provide the necessary services given the limited memory resources -+// of the N2. As OpenN2 develops, addition features will be added as -+// suggested by the community. -+// -+//============================================================================= -+ -+#include <linux/config.h> -+#include <linux/version.h> -+#include <linux/module.h> -+#include <linux/utsname.h> -+#include <linux/kernel.h> -+#include <linux/major.h> -+#include <linux/string.h> -+#include <linux/proc_fs.h> -+#include <linux/slab.h> -+#include <linux/init.h> -+#include <linux/errno.h> -+#include <linux/fs.h> -+#include <linux/miscdevice.h> -+#include <linux/device.h> -+#include <linux/interrupt.h> -+#include <linux/moduleparam.h> -+#include <linux/timer.h> -+#include <linux/reboot.h> -+ -+#include <asm/system.h> -+#include <asm/uaccess.h> -+#include <asm/hardware.h> -+#include <asm-arm/irq.h> -+#include <asm-arm/delay.h> -+#include <asm-arm/signal.h> -+ -+/* Set this to 1 to output lots of debug messages. */ -+#if NSLU2_IO_DEBUG -+#define nslu2_io_debug(args) printk args -+#else -+#define nslu2_io_debug(args) ((void)0) -+#endif -+ -+#define VERSION "0.1.7" -+ -+#define N2RB_MAJOR 60 //rbuttons -+#define N2PB_MAJOR 61 //pbuttons -+#define N2BZ_MAJOR 62 //buzzer -+#define N2LM_MAJOR 126 -+ -+#define N2PB_IRQ 22 //gpio5 -+#define N2RB_IRQ 29 //gpio12 -+ -+#define N2_BEEP_DUR_LONG 2000 -+#define N2_BEEP_DUR_MED 400 -+#define N2_BEEP_DUR_SHORT 100 -+#define N2_BEEP_PITCH_HIGH 250 -+#define N2_BEEP_PITCH_MED 500 -+#define N2_BEEP_PITCH_LOW 1000 -+#define N2_LONG_DELAY 30000 -+ -+#define N2_BZ_GPIO 4 -+#define N2_PB_GPIO 5 -+#define N2_PO_GPIO 8 //power off -+#define N2_RB_GPIO 12 -+ -+#define GPIO_BZ_BM 0x0010 //b0000 0000 0001 0000 -+#define GPIO_PB_BM 0x0020 //b0000 0000 0010 0000 -+#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 -+#define GPIO_RB_BM 0x1000 //b0001 0000 0000 0000 -+ -+#define NOERR 0 -+ -+#define RB_DELAY 50 -+#define PB_DELAY 20 -+ -+#define PWR_OFF_STR "poweroff" -+ -+ -+// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe -+ -+#define N2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible -+#define N2BZ_BEEP _IO('M',1) //one beep at current defaults -+#define N2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults -+#define N2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000 -+#define N2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies -+#define N2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies -+#define N2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever -+#define N2BZ_COMBINED _IOW('M',8,long) //combine all params in a long -+ -+#define N2LM_OFF _IOW('M',32,long) -+#define N2LM_ON _IOW('M',33,long) -+#define N2LM_BLINK _IOW('M',34,long) -+#define N2LM_ALT _IOW('M',35,long) -+#define N2LM_ALL_ON _IO('M',36) -+#define N2LM_ALL_OFF _IO('M',37) -+ -+#define PHYS_LEDS 4 -+#define BLINK_DELAY 25 -+ -+// OR Masks to turn these LEDs ON -+ -+#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010 -+#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001 -+#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011 -+ -+// AND Masks to turn these LEDs OFF -+ -+#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101 -+#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110 -+#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100 -+ -+// AND Masks to turn these LEDs ON -+ -+#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111 -+#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011 -+ -+// Or Masks to turn these LEDs OFF -+ -+#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000 -+#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100 -+ -+// EOR masks for toggling LEDs on/off -+ -+#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits -+#define RS_GRN_TGL 0x00000002 -+#define RS_RED_TGL 0x00000001 -+#define DISK1_TGL 0x00000008 -+#define DISK2_TGL 0x00000004 -+ -+// The LED names for switches -+ -+#define LED_RS_RED 0 -+#define LED_RS_GRN 1 -+#define LED_DISK1 2 -+#define LED_DISK2 3 -+#define LED_ALL 4 -+ -+static unsigned long init_jiffy = 0; //jiffies at init time -+static unsigned long rb_presses = 0; //number of reset button presses -+static unsigned long ontime = 50; -+static unsigned long offtime = 450; -+static unsigned long bz_repeatcnt = 10; -+static unsigned long tone = 1000; -+ -+DECLARE_WAIT_QUEUE_HEAD(n2rb_waitq); -+DECLARE_WAIT_QUEUE_HEAD(n2pb_waitq); -+ -+static struct timer_list n2lm_rsg_timer; //rs green -+static struct timer_list n2lm_rsr_timer; //rs red -+static struct timer_list n2lm_d1_timer; //drive 1 -+static struct timer_list n2lm_d2_timer; //drive 2 -+static struct timer_list n2rb_timer; -+static struct timer_list n2pb_timer; -+static struct timer_list n2bz_timer; //beeper -+ -+// sysfs class -+static struct class *n2lm_class; -+ -+//================================================================================================== -+// -+// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the -+// GPIO output register is xor'd with a mask corresponding to the selected led which simply -+// flips that bit. No record of what any of the other leds is doing is needed. -+// -+//================================================================================================== -+// this blinks rs green or green/yellow if rs red is on -+static void n2lm_rsg_handler(unsigned long data) -+{ -+ *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led -+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout -+ add_timer(&n2lm_rsg_timer); //reinit timer -+ return; -+} -+ -+// this blinks or alternates rs red green... inited wit green on/red off -+static void n2lm_rsr_handler(unsigned long data) -+{ -+ *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data; -+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_rsr_timer); -+ return; -+} -+// blinks disk 1 -+static void n2lm_d1_handler(unsigned long data) -+{ -+ *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL; -+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_d1_timer); -+ return; -+} -+// blinks disk 2 -+static void n2lm_d2_handler(unsigned long data) -+{ -+ *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL; -+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_d2_timer); -+ return; -+} -+ -+//================================================================================================== -+ -+static void n2lm_timer_start(unsigned long led) -+{ -+ -+ nslu2_io_debug((KERN_DEBUG "timer: %ld\n",led)); -+ -+ switch(led) { -+ case LED_RS_RED: -+ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_rsr_timer); -+ break; -+ -+ case LED_RS_GRN: -+ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_rsg_timer); -+ break; -+ -+ case LED_DISK1: -+ n2lm_d1_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_d1_timer); -+ break; -+ -+ case LED_DISK2: -+ n2lm_d2_timer.expires = jiffies + BLINK_DELAY; -+ add_timer(&n2lm_d2_timer); -+ break; -+ -+ default: -+ break; -+ } -+ return; -+} -+ -+//================================================================================================== -+ -+static void n2lm_timer_stop(unsigned long led) -+{ -+ switch (led) { -+ case LED_RS_RED: -+ del_timer(&n2lm_rsr_timer); -+ break; -+ case LED_RS_GRN: -+ del_timer(&n2lm_rsg_timer); -+ break; -+ case LED_DISK1: -+ del_timer(&n2lm_d1_timer); -+ break; -+ case LED_DISK2: -+ del_timer(&n2lm_d2_timer); -+ break; -+ default: -+ break; -+ } -+ return; -+} -+ -+//-------------------------------------------------------------------------------------------------- -+ -+static void n2lm_timer_stop_all(void) -+{ -+ del_timer(&n2lm_rsg_timer); -+ del_timer(&n2lm_rsr_timer); -+ del_timer(&n2lm_d1_timer); -+ del_timer(&n2lm_d2_timer); -+ return; -+} -+//-------------------------------------------------------------------------------------------------- -+ -+static void n2lm_ledon(unsigned long led) -+{ -+ -+ nslu2_io_debug((KERN_DEBUG "ledon: %ld\n", led)); -+ -+ switch (led) { -+ case LED_RS_RED: -+ *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1 -+ return; -+ case LED_RS_GRN: -+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2 -+ return; -+ case LED_DISK1: -+ *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffff7 -+ return; -+ case LED_DISK2: -+ *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffffb -+ return; -+ case LED_ALL: //all green -+ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; -+ *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON); -+ return; -+ } -+} -+ -+//-------------------------------------------------------------------------------------------------- -+ -+static void n2lm_ledoff(unsigned long led) -+{ -+ -+ switch (led) { -+ case LED_RS_RED: -+ *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe -+ return; -+ case LED_RS_GRN: -+ *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd -+ return; -+ case LED_DISK1: -+ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000008 -+ return; -+ case LED_DISK2: -+ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000004 -+ return; -+ case LED_ALL: -+ *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF); -+ *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF); -+ } -+} -+ -+//================================================================================================== -+ -+static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led) -+{ -+ -+ nslu2_io_debug((KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led)); -+ -+ if (led < 0 || led >= PHYS_LEDS) -+ return -EINVAL; -+ -+ switch (cmd ) { -+ case N2LM_ON: -+ n2lm_timer_stop(led); -+ n2lm_ledon(led); -+ break; -+ -+ case N2LM_OFF: -+ n2lm_timer_stop(led); -+ n2lm_ledoff(led); -+ break; -+ -+ case N2LM_BLINK: -+ n2lm_ledon(led); -+ if (led == LED_RS_RED) -+ n2lm_rsr_timer.data = RS_RED_TGL; -+ n2lm_timer_start(led); -+ break; -+ -+ case N2LM_ALT: -+ if (led == LED_RS_RED) -+ { -+ n2lm_ledon(LED_RS_GRN); -+ n2lm_ledoff(LED_RS_RED); -+ n2lm_rsr_timer.data = RS_RG_ALT; -+ n2lm_timer_start(LED_RS_RED); -+ break; -+ } else -+ return -EINVAL; -+ -+ case N2LM_ALL_ON: -+ n2lm_timer_stop_all(); -+ n2lm_ledon(LED_ALL); -+ break; -+ -+ case N2LM_ALL_OFF: -+ n2lm_timer_stop_all(); -+ n2lm_ledoff(LED_ALL); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ return NOERR; -+} -+ -+static struct file_operations n2lm_fops = { -+ .owner = THIS_MODULE, -+ .ioctl = n2lm_ioctl, -+}; -+//================================================================================================== -+// We can't do anything fancy here since the system tick rate is far below that required to -+// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until -+// I get up to speed on the timers. The saving grace is that for the normal uses, nothing -+// important should be haprepening. -+//================================================================================================== -+ -+static void n2_buzz(int tone_delay, int duration) -+{ -+ int i; -+ -+ *IXP4XX_GPIO_GPOER &= ~GPIO_BZ_BM; -+ -+ for (i = 1; i < duration; i++) { -+ *IXP4XX_GPIO_GPOUTR &= ~GPIO_BZ_BM; -+ udelay(tone_delay); -+ *IXP4XX_GPIO_GPOUTR |= GPIO_BZ_BM; -+ udelay(tone_delay); -+ } -+ *IXP4XX_GPIO_GPOER |= GPIO_BZ_BM; -+ -+ return; -+} -+//================================================================================================= -+ -+// this handles the buzzer duty cycle -+static void n2bz_handler(unsigned long data) -+{ -+ if (--bz_repeatcnt > 0) { //if just one beep left to do -+ n2bz_timer.expires = jiffies + ontime + offtime; //next timeout -+ add_timer(&n2bz_timer); //reinit timer -+ } -+ n2_buzz(tone/2, ontime); -+ nslu2_io_debug((KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime)); -+ return; -+} -+ -+//================================================================================================== -+ -+static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) -+{ -+ switch (cmd) { -+ case N2BZ_BEEP: -+ n2_buzz(tone/2, ontime); -+ break; -+ -+ case N2BZ_BEEP_STOP: -+ del_timer(&n2bz_timer); -+ break; -+ -+ case N2BZ_BEEPS: -+ if (param == 0) -+ bz_repeatcnt = 0xffffffff; -+ else -+ bz_repeatcnt = param; -+ n2bz_handler(0); -+ break; -+ -+ case N2BZ_TONESET: -+ if (param >= 250 && param <= 2000) -+ tone = param; -+ break; -+ -+ case N2BZ_ONTIME: -+ if (param > 4 && param < 201) -+ ontime = param; -+ break; -+ -+ case N2BZ_SILENTTIME: -+ if (param > ontime) //enforce a reasonable duty cycle -+ offtime = param; -+ else -+ offtime = ontime; -+ break; -+ -+ case N2BZ_REPEATCNT: -+ if (param == 0) -+ bz_repeatcnt = 0xffffffff; -+ else -+ bz_repeatcnt = param; -+ break; -+ -+ case N2BZ_COMBINED: -+ bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16 -+ ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies -+ offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies -+ tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16 -+ break; -+ -+ default: -+ break; -+ } -+ return NOERR; -+} -+ -+static struct file_operations n2bz_fops = { -+ .owner = THIS_MODULE, -+ .ioctl = n2bz_ioctl, -+}; -+ -+//================================================================================================== -+ -+static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs) -+{ -+ void *ret; -+ -+ wake_up(&n2pb_waitq); -+ remove_proc_entry(PWR_OFF_STR, NULL); //no parent -+ n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED); -+ ret = create_proc_entry(PWR_OFF_STR, 0, NULL); -+ nslu2_io_debug((KERN_DEBUG "cpe ret = %p\n", ret)); -+ -+// WARNING: This is RUDE...it unconditionally pulls the power plug. -+// Your data will be at risk...since this is just a test system -+// I am leaving it enabled...eventually userland needs to get the -+// message, do an orderly shutdown and use an ioctl or something in -+// /proc/powerdowm to actually have us pull the plug. -+ -+ machine_power_off(); -+ -+ return IRQ_HANDLED; -+} -+ -+//================================================================================================== -+// -+//static void do_rb_timeout(unsigned long data) -+//{ -+// int i; -+// -+// for (i = 0; i < rb_presses; i++) -+// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT); -+// return; -+//} -+// -+//================================================================================================== -+// does nothing -- waiting for userland to define -+// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so -+// we hang in a loop until the button is no longer pressed -+ -+struct testr { -+ int ctl; -+ long param; -+}; -+ -+static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs) -+{ -+ -+ static struct testr test[] = { -+ { N2LM_ALL_OFF,0 }, -+ { N2LM_ON,0 }, -+ { N2LM_OFF,0 }, -+ { N2LM_ON,1 }, -+ { N2LM_ALL_OFF,1 }, -+ { N2LM_ON,2 }, -+ { N2LM_OFF,2 }, -+ { N2LM_ON,3 }, -+ { N2LM_OFF,3 }, -+ { N2LM_BLINK,0 }, -+ { N2LM_OFF,0 }, -+ { N2LM_BLINK,1 }, -+ { N2LM_OFF,1 }, -+ { N2LM_BLINK,2 }, -+ { N2LM_OFF,2 }, -+ { N2LM_BLINK,3 }, -+ { N2LM_OFF,3 }, -+ { N2LM_ALL_OFF,0 }, -+ { N2LM_ALT,1 }, -+ { N2LM_OFF,1 }, -+ { N2LM_ALL_ON,0 } -+ }; -+ -+ nslu2_io_debug(("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long))); -+ -+ wake_up(&n2rb_waitq); -+ while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0) -+ ; //wait for button release -+ -+ if (rb_presses > 20) -+ rb_presses = 0; -+ tone = (rb_presses * 50) + 200; -+ ontime = (rb_presses*10) + 100; -+ offtime = 500 - (rb_presses*20); -+ nslu2_io_debug(("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone)); -+ rb_presses++; -+ -+ n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses); -+ n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param); -+// if (rb_presses == 0) { -+// init_jiffy = jiffies; -+// init_timer (&n2rb_timer); -+// n2rb_timer.function = do_rb_timeout; -+// }; -+// -+// if (rb_presses == 8) -+// rb_presses = 0; -+// if (rb_presses & 1) -+// n2lm_ledon(test[rb_presses]); -+// else -+// n2lm_ledoff(test[rb_presses]); -+// -+// n2rb_timer.expires = (jiffies + RB_DELAY); -+// add_timer (&n2rb_timer); -+// if (rb_presses < 5) { -+// if (rb_presses > 0) -+// n2lm_ledoff(rb_presses); -+// n2lm_ledon(++rb_presses); -+// n2lm_timer_start(rb_presses); -+// }; -+ -+ nslu2_io_debug((KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies)); -+ return IRQ_HANDLED; -+ -+} -+ -+//================================================================================================== -+// What to do here is majorly undetermined... -+ -+static int n2rb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -+{ -+ printk(KERN_DEBUG "Reset Button Wait\n"); -+ interruptible_sleep_on(&n2rb_waitq); -+ return copy_to_user(buffer, "reset", 5) ? -EFAULT : 5; -+ -+} -+ -+//================================================================================================== -+// What to do here is majorly undetermined... -+ -+static int n2pb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -+{ -+ printk(KERN_DEBUG "Power Button Wait\n"); -+ interruptible_sleep_on(&n2pb_waitq); -+ return copy_to_user(buffer, "poweroff", 8) ? -EFAULT : 8; -+ -+} -+ -+//-------------------------------------------------------------------------------------------------- -+ -+static struct file_operations n2rb_fops = { -+ .owner = THIS_MODULE, -+ .read = n2rb_read, -+}; -+ -+//-------------------------------------------------------------------------------------------------- -+ -+static struct file_operations n2pb_fops = { -+ .owner = THIS_MODULE, -+ .read = n2pb_read, -+}; -+ -+//================================================================================================== -+ -+static void n2iom_initarch(void) -+{ -+ printk(KERN_DEBUG "setup_interrupts - jiffies=%ld init_jiffy=%ld\n", jiffies, init_jiffy); -+ -+ *IXP4XX_GPIO_GPISR = 0x20400000; // read the 2 irqs to clr -+ gpio_line_config(N2_RB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -+ gpio_line_isr_clear(N2_RB_GPIO); -+ gpio_line_config(N2_PB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_HIGH); -+ gpio_line_isr_clear(N2_PB_GPIO); -+ -+ init_timer(&n2lm_rsg_timer); -+ init_timer(&n2lm_rsr_timer); -+ init_timer(&n2lm_d1_timer); -+ init_timer(&n2lm_d2_timer); -+// init_timer(&n2rb_timer); -+// init_timer(&n2pb_timer); -+ init_timer(&n2bz_timer); -+ n2lm_rsr_timer.function = n2lm_rsr_handler; -+ n2lm_rsg_timer.function = n2lm_rsg_handler; -+ n2lm_d2_timer.function = n2lm_d2_handler; -+ n2lm_d1_timer.function = n2lm_d1_handler; -+ n2bz_timer.function = n2bz_handler; -+ n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0; -+ -+ *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3 -+ *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds -+ *IXP4XX_GPIO_GPOUTR &= 0xfffffffc; -+ n2lm_ledon(LED_ALL); -+ n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_SHORT); -+ n2lm_ledoff(LED_ALL); -+// Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit -+ n2lm_ledon(LED_RS_RED); -+ -+ return; -+} -+ -+//================================================================================================== -+ -+static int __init n2iom_init(void) -+{ -+ printk(KERN_INFO "OpenN2 Misc I/O Driver Version %s\n", VERSION); -+ -+ init_jiffy = jiffies; -+ printk(KERN_DEBUG "init_jiffy=%ld\n",init_jiffy); -+ n2iom_initarch(); -+ -+ n2lm_class = class_create(THIS_MODULE, "nslu2"); -+ -+ if (register_chrdev(N2RB_MAJOR, "n2_rbm", &n2pb_fops) < NOERR) { -+ printk(KERN_DEBUG "Reset Button Major %d not available\n", N2RB_MAJOR); -+ return -EBUSY; -+ } -+ else { -+ class_device_create(n2lm_class, MKDEV(N2RB_MAJOR, 0), NULL, "rbuttons"); -+ } -+ if (register_chrdev(N2PB_MAJOR, "n2_pbm", &n2rb_fops) < NOERR) { -+ printk(KERN_DEBUG "Power Button Major %d not available\n", N2PB_MAJOR); -+ return -EBUSY; -+ } -+ else { -+ class_device_create(n2lm_class, MKDEV(N2PB_MAJOR, 0), NULL, "pbuttons"); -+ } -+ if (register_chrdev(N2LM_MAJOR, "n2_ledm", &n2lm_fops) < NOERR) { -+ printk(KERN_DEBUG "Led Manager Major %d not available\n", N2LM_MAJOR); -+ return -EBUSY; -+ } -+ else { -+ class_device_create(n2lm_class, MKDEV(N2LM_MAJOR, 0), NULL, "leds"); -+ } -+ if (register_chrdev(N2BZ_MAJOR, "n2_bzm", &n2bz_fops) < NOERR) { -+ printk(KERN_DEBUG "Buzzer Major %d not available\n", N2BZ_MAJOR); -+ return -EBUSY; -+ } -+ else { -+ class_device_create(n2lm_class, MKDEV(N2BZ_MAJOR, 0), NULL, "buzzer"); -+ } -+ -+ if (request_irq(N2RB_IRQ, &n2rb_handler, SA_INTERRUPT, "n2_rb", NULL) < NOERR) { -+ printk(KERN_DEBUG "Reset Button IRQ %d not available\n", N2RB_IRQ); -+ return -EIO; -+ } -+ if (request_irq(N2PB_IRQ, &n2pb_handler, SA_INTERRUPT, "n2_pb", NULL) < NOERR) { -+ printk(KERN_DEBUG "Power Button IRQ %d not available\n", N2PB_IRQ); -+ return -EIO; -+ } -+ -+ enable_irq(N2PB_IRQ); -+ enable_irq(N2RB_IRQ); -+ return (NOERR); -+} -+ -+//================================================================================================== -+ -+static void __exit n2iom_exit(void) -+{ -+ remove_proc_entry(PWR_OFF_STR, NULL); -+ del_timer(&n2rb_timer); -+ free_irq(N2RB_IRQ,NULL); -+ unregister_chrdev(N2PB_MAJOR, "n2pb"); -+ class_device_destroy(n2lm_class, MKDEV(N2PB_MAJOR, 0)); -+ del_timer(&n2pb_timer); -+ free_irq(N2PB_IRQ, NULL); -+ unregister_chrdev(N2RB_MAJOR, "n2rb" ); -+ class_device_destroy(n2lm_class, MKDEV(N2RB_MAJOR, 0)); -+ del_timer(&n2lm_rsg_timer); -+ del_timer(&n2lm_rsr_timer); -+ del_timer(&n2lm_d1_timer); -+ del_timer(&n2lm_d2_timer); -+ unregister_chrdev(N2LM_MAJOR, "n2lm" ); -+ class_device_destroy(n2lm_class, MKDEV(N2LM_MAJOR, 0)); -+ unregister_chrdev(N2BZ_MAJOR, "n2bz"); -+ class_device_destroy(n2lm_class, MKDEV(N2BZ_MAJOR, 0)); -+ class_destroy(n2lm_class); -+} -+ -+module_init (n2iom_init); -+module_exit (n2iom_exit); -+ -+MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -+MODULE_DESCRIPTION("OpenN2 Buttons/LEDs IO Driver"); -+MODULE_LICENSE("GPL"); -+static int debug = 7; -+module_param(debug, int, 0644); -+MODULE_PARM_DESC(debug, "Debugging enabled = 8"); -+ -diff -urN linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-part.c nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-part.c ---- linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-part.c 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-part.c 2005-09-16 22:44:38.000000000 +0200 -@@ -0,0 +1,120 @@ -+/* -+ * nslu2-part.c -+ * -+ * Maintainers: http://www.nslu2-linux.org/ -+ * Initial port: Mark Rakes <mrakes AT mac.com> -+ * -+ * "Parse" the fixed partition table of the Linksys NSLU2 and -+ * produce a Linux partition array to match. -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/slab.h> -+#include <linux/init.h> -+#include <linux/vmalloc.h> -+#include <linux/mtd/mtd.h> -+#include <linux/mtd/partitions.h> -+ -+/* info we know about the NSLU2's flash setup: -+ * -+ * Num Partition offset size -+ * --- --------- ---------- ----------- -+ * 0 RedBoot 0x00000000 0x00040000 -+ * 1 System Configuration 0x00040000 0x00020000 -+ * 2 Kernel 0x00060000 0x00100000 -+ * 3 Ramdisk 0x00160000 0x006a0000 -+ */ -+ #define NSLU2_NUM_FLASH_PARTITIONS 4 -+ #define NSLU2_FLASH_PART0_NAME "RedBoot" -+ #define NSLU2_FLASH_PART0_OFFSET 0x00000000 -+ #define NSLU2_FLASH_PART0_SIZE 0x00040000 -+ #define NSLU2_FLASH_PART1_NAME "System Configuration" -+ #define NSLU2_FLASH_PART1_OFFSET (NSLU2_FLASH_PART0_OFFSET + NSLU2_FLASH_PART0_SIZE) -+ #define NSLU2_FLASH_PART1_SIZE 0x00020000 -+ #define NSLU2_FLASH_PART2_NAME "Kernel" -+ #define NSLU2_FLASH_PART2_OFFSET (NSLU2_FLASH_PART1_OFFSET + NSLU2_FLASH_PART1_SIZE) -+ #define NSLU2_FLASH_PART2_SIZE 0x00100000 -+ #define NSLU2_FLASH_PART3_NAME "Ramdisk" -+ #define NSLU2_FLASH_PART3_OFFSET (NSLU2_FLASH_PART2_OFFSET + NSLU2_FLASH_PART2_SIZE) -+ #define NSLU2_FLASH_PART3_SIZE 0x006a0000 -+ -+static int parse_nslu2_partitions(struct mtd_info *master, -+ struct mtd_partition **pparts, -+ unsigned long flash_start) -+{ -+ struct mtd_partition *parts; -+ int ret = 0, namelen = 0; -+ char *names; -+ -+ namelen = strlen(NSLU2_FLASH_PART0_NAME) + -+ strlen(NSLU2_FLASH_PART1_NAME) + -+ strlen(NSLU2_FLASH_PART2_NAME) + -+ strlen(NSLU2_FLASH_PART3_NAME) + -+ NSLU2_NUM_FLASH_PARTITIONS; /*4 strings + each terminator */ -+ -+ parts = kmalloc(sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen, GFP_KERNEL); -+ if (!parts) { -+ ret = -ENOMEM; -+ goto out; -+ } -+ -+ memset(parts, 0, sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen); -+ names = (char *)&parts[NSLU2_NUM_FLASH_PARTITIONS]; -+ -+ /* RedBoot partition */ -+ parts[0].size = NSLU2_FLASH_PART0_SIZE; -+ parts[0].offset = NSLU2_FLASH_PART0_OFFSET; -+ parts[0].name = NSLU2_FLASH_PART0_NAME; -+ parts[0].mask_flags = MTD_WRITEABLE; /* readonly */ -+ strcpy(names, NSLU2_FLASH_PART0_NAME); -+ names += strlen(names)+1; -+ /* System Configuration */ -+ parts[1].size = NSLU2_FLASH_PART1_SIZE; -+ parts[1].offset = NSLU2_FLASH_PART1_OFFSET; -+ parts[1].name = NSLU2_FLASH_PART1_NAME; -+ parts[1].mask_flags = MTD_WRITEABLE; /* readonly */ -+ strcpy(names, NSLU2_FLASH_PART1_NAME); -+ names += strlen(names)+1; -+ /* Kernel */ -+ parts[2].size = NSLU2_FLASH_PART2_SIZE; -+ parts[2].offset = NSLU2_FLASH_PART2_OFFSET; -+ parts[2].name = NSLU2_FLASH_PART2_NAME; -+ parts[2].mask_flags = MTD_WRITEABLE; /* readonly */ -+ strcpy(names, NSLU2_FLASH_PART2_NAME); -+ names += strlen(names)+1; -+ /* Ramdisk */ -+ parts[3].size = NSLU2_FLASH_PART3_SIZE; -+ parts[3].offset = NSLU2_FLASH_PART3_OFFSET; -+ parts[3].name = NSLU2_FLASH_PART3_NAME; -+ parts[3].mask_flags = MTD_WRITEABLE; /* readonly */ -+ strcpy(names, NSLU2_FLASH_PART3_NAME); -+ names += strlen(names)+1; -+ -+ ret = NSLU2_NUM_FLASH_PARTITIONS; -+ *pparts = parts; -+ out: -+ return ret; -+} -+ -+static struct mtd_part_parser nslu2_parser = { -+ .owner = THIS_MODULE, -+ .parse_fn = parse_nslu2_partitions, -+ .name = "NSLU2", -+}; -+ -+static int __init nslu2_parser_init(void) -+{ -+ return register_mtd_parser(&nslu2_parser); -+} -+ -+static void __exit nslu2_parser_exit(void) -+{ -+ deregister_mtd_parser(&nslu2_parser); -+} -+ -+module_init(nslu2_parser_init); -+module_exit(nslu2_parser_exit); -+ -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Mark Rakes"); -+MODULE_DESCRIPTION("Parsing code for NSLU2 flash tables"); -diff -urN linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-pci.c nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-pci.c ---- linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-pci.c 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-pci.c 2005-09-16 22:43:54.000000000 +0200 -@@ -0,0 +1,87 @@ -+/* -+ * arch/arm/mach-ixp4xx/nslu2-pci.c -+ * -+ * NSLU2 board-level PCI initialization -+ * -+ * based on ixdp425-pci.c: -+ * Copyright (C) 2002 Intel Corporation. -+ * Copyright (C) 2003-2004 MontaVista Software, Inc. -+ * -+ * Maintainer: http://www.nslu2-linux.org/ -+ * -+ * 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 -+ * published by the Free Software Foundation. -+ * -+ */ -+// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -+// However, all the common PCI setup code presumes the standard 4 PCI -+// interrupts are available. So we compromise...we don't enable the -+// IRQ on Pin 8 but we let -+ -+#include <linux/config.h> -+#include <linux/pci.h> -+#include <linux/init.h> -+#include <linux/delay.h> -+ -+#include <asm/mach/pci.h> -+#include <asm/irq.h> -+#include <asm/hardware.h> -+#include <asm/mach-types.h> -+ -+void __init nslu2_pci_preinit(void) -+{ -+ gpio_line_config(NSLU2_PCI_INTA_PIN, -+ IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -+ gpio_line_config(NSLU2_PCI_INTB_PIN, -+ IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -+ gpio_line_config(NSLU2_PCI_INTC_PIN, -+ IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -+// gpio_line_config(NSLU2_PCI_INTD_PIN, -+// IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -+ -+ gpio_line_isr_clear(NSLU2_PCI_INTA_PIN); -+ gpio_line_isr_clear(NSLU2_PCI_INTB_PIN); -+ gpio_line_isr_clear(NSLU2_PCI_INTC_PIN); -+// gpio_line_isr_clear(NSLU2_PCI_INTD_PIN); -+ -+ ixp4xx_pci_preinit(); -+} -+ -+static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -+{ -+ static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = { -+ IRQ_NSLU2_PCI_INTA, -+ IRQ_NSLU2_PCI_INTB, -+ IRQ_NSLU2_PCI_INTC, -+// IRQ_NSLU2_PCI_INTD -+ }; -+ -+ int irq = -1; -+ -+ if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV && -+ pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) { -+ irq = pci_irq_table[(slot + pin - 2) % 3]; // ! % 4 kas11 -+ } -+ -+ return irq; -+} -+ -+struct hw_pci __initdata nslu2_pci = { -+ .nr_controllers = 1, -+ .preinit = nslu2_pci_preinit, -+ .swizzle = pci_std_swizzle, -+ .setup = ixp4xx_setup, -+ .scan = ixp4xx_scan_bus, -+ .map_irq = nslu2_map_irq, -+}; -+ -+int __init nslu2_pci_init(void) //monkey see, monkey do -+{ -+ if (machine_is_nslu2()) -+ pci_common_init(&nslu2_pci); -+ return 0; -+} -+ -+subsys_initcall(nslu2_pci_init); -+ -diff -urN linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-setup.c nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-setup.c ---- linux-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/arch/arm/mach-ixp4xx/nslu2-setup.c 2005-09-17 00:02:40.000000000 +0200 -@@ -0,0 +1,147 @@ -+/* -+ * arch/arm/mach-ixp4xx/nslu2-setup.c -+ * -+ * NSLU2 board-setup -+ * -+ * based ixdp425-setup.c: -+ * Copyright (C) 2003-2004 MontaVista Software, Inc. -+ * -+ * Author: Mark Rakes <mrakes at mac.com> -+ * Maintainers: http://www.nslu2-linux.org/ -+ * -+ * Fixed missing init_time in MACHINE_START kas11 10/22/04 -+ * Changed to conform to new style __init ixdp425 kas11 10/22/04 -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/device.h> -+#include <linux/serial.h> -+#include <linux/tty.h> -+#include <linux/serial_8250.h> -+ -+#include <asm/types.h> -+#include <asm/setup.h> -+#include <asm/memory.h> -+#include <asm/hardware.h> -+#include <asm/mach-types.h> -+#include <asm/irq.h> -+#include <asm/mach/arch.h> -+#include <asm/mach/flash.h> -+ -+void __init nslu2_map_io(void) -+{ -+ ixp4xx_map_io(); -+} -+ -+static struct flash_platform_data nslu2_flash_data = { -+ .map_name = "cfi_probe", -+ .width = 2, -+}; -+ -+static struct resource nslu2_flash_resource = { -+ .start = NSLU2_FLASH_BASE, -+ .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, -+ .flags = IORESOURCE_MEM, -+}; -+ -+static struct platform_device nslu2_flash = { -+ .name = "IXP4XX-Flash", -+ .id = 0, -+ .dev = { -+ .platform_data = &nslu2_flash_data, -+ }, -+ .num_resources = 1, -+ .resource = &nslu2_flash_resource, -+}; -+ -+static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = { -+ .sda_pin = NSLU2_SDA_PIN, -+ .scl_pin = NSLU2_SCL_PIN, -+}; -+ -+static struct platform_device nslu2_i2c_controller = { -+ .name = "IXP4XX-I2C", -+ .id = 0, -+ .dev = { -+ .platform_data = &nslu2_i2c_gpio_pins, -+ }, -+ .num_resources = 0 -+}; -+ -+static struct resource nslu2_uart_resources[] = { -+ { -+ .start = IXP4XX_UART1_BASE_PHYS, -+ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, -+ .flags = IORESOURCE_MEM -+ }, -+ { -+ .start = IXP4XX_UART2_BASE_PHYS, -+ .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, -+ .flags = IORESOURCE_MEM -+ } -+}; -+ -+static struct plat_serial8250_port nslu2_uart_data[] = { -+ { -+ .mapbase = IXP4XX_UART1_BASE_PHYS, -+ .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, -+ .irq = IRQ_IXP4XX_UART1, -+ .flags = UPF_BOOT_AUTOCONF, -+ .iotype = UPIO_MEM, -+ .regshift = 2, -+ .uartclk = IXP4XX_UART_XTAL, -+ }, -+ { -+ .mapbase = IXP4XX_UART2_BASE_PHYS, -+ .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, -+ .irq = IRQ_IXP4XX_UART2, -+ .flags = UPF_BOOT_AUTOCONF, -+ .iotype = UPIO_MEM, -+ .regshift = 2, -+ .uartclk = IXP4XX_UART_XTAL, -+ } -+}; -+ -+static struct platform_device nslu2_uart = { -+ .name = "serial8250", -+ .id = 0, -+ .dev.platform_data = nslu2_uart_data, -+ .num_resources = 2, -+ .resource = nslu2_uart_resources -+}; -+ -+static struct platform_device *nslu2_devices[] __initdata = { -+ &nslu2_i2c_controller, -+ &nslu2_flash, -+ &nslu2_uart -+}; -+ -+static void n2_power_off(void) -+{ -+ /* This causes the box to drop the power and go dead. */ -+#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 -+ *IXP4XX_GPIO_GPOER &= ~GPIO_PO_BM; // enable the pwr cntl gpio -+ *IXP4XX_GPIO_GPOUTR |= GPIO_PO_BM; // do the deed -+} -+ -+static void __init nslu2_init(void) -+{ -+ ixp4xx_sys_init(); -+ -+ pm_power_off = n2_power_off; -+ platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); -+} -+ -+MACHINE_START(NSLU2, "Linksys NSLU2") -+ /* Maintainer: www.nslu2-linux.org */ -+ .phys_ram = PHYS_OFFSET, -+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, -+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, -+ .boot_params = 0x00000100, -+ .map_io = nslu2_map_io, -+ .init_irq = ixp4xx_init_irq, //FIXME: all irq are off here -+ .timer = &ixp4xx_timer, -+ .init_machine = nslu2_init, -+ // INITTIME(ixp4xx_init_time) //this was missing in 2.6.7 code ...soft reboot needed? -+MACHINE_END diff --git a/packages/linux/nslu2-kernel/2.6.13/55-nslu2-rpbutton.patch b/packages/linux/nslu2-kernel/2.6.13/55-nslu2-rpbutton.patch deleted file mode 100644 index b5ce101d68..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/55-nslu2-rpbutton.patch +++ /dev/null @@ -1,139 +0,0 @@ ---- nslu2-io.c.old 2da1d3f5c0aa0804c5769588337077ddcb35c5e9 -+++ linux-2.6.12.2/arch/arm/mach-ixp4xx/nslu2-io.c e895da638b4aae16a11fafe52ae0b063645a9a12 -@@ -158,6 +158,8 @@ - #define LED_DISK2 3 - #define LED_ALL 4 - -+static int nslu2_shutdown_in_progress = 0; -+ - static unsigned long init_jiffy = 0; //jiffies at init time - static unsigned long rb_presses = 0; //number of reset button presses - static unsigned long ontime = 50; -@@ -503,40 +505,20 @@ - static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs) - { - void *ret; -- -- wake_up(&n2pb_waitq); -- remove_proc_entry(PWR_OFF_STR, NULL); //no parent -- n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED); -- ret = create_proc_entry(PWR_OFF_STR, 0, NULL); -- nslu2_io_debug((KERN_DEBUG "cpe ret = %p\n", ret)); -- --// WARNING: This is RUDE...it unconditionally pulls the power plug. --// Your data will be at risk...since this is just a test system --// I am leaving it enabled...eventually userland needs to get the --// message, do an orderly shutdown and use an ioctl or something in --// /proc/powerdowm to actually have us pull the plug. -- -- machine_power_off(); -- -+ if (!nslu2_shutdown_in_progress++) { -+ wake_up(&n2pb_waitq); -+ remove_proc_entry(PWR_OFF_STR, NULL); //no parent -+ n2_buzz(N2_BEEP_PITCH_HIGH, N2_BEEP_DUR_SHORT); // Short, high-pitched "OK" -+ ret = create_proc_entry(PWR_OFF_STR, 0, NULL); -+ nslu2_io_debug((KERN_DEBUG "Powerbutton pressed. Shutting down. cpe ret = %p\n", ret)); -+ kill_proc(1,SIGINT,1); // Signal init to shut down -+ } else { -+ n2_buzz(N2_BEEP_PITCH_LOW, N2_BEEP_DUR_MED); // Make a scary noise! -+ nslu2_io_debug((KERN_DEBUG "Powerbutton pressed while already in shutdown")); // Whine! -+ } - return IRQ_HANDLED; - } - --//================================================================================================== --// --//static void do_rb_timeout(unsigned long data) --//{ --// int i; --// --// for (i = 0; i < rb_presses; i++) --// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT); --// return; --//} --// --//================================================================================================== --// does nothing -- waiting for userland to define --// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so --// we hang in a loop until the button is no longer pressed -- - struct testr { - int ctl; - long param; -@@ -544,72 +526,11 @@ - - static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs) - { -+// This doesn't reset the NSLU2. It powers it off. Close enough, since reset is unreliable - -- static struct testr test[] = { -- { N2LM_ALL_OFF,0 }, -- { N2LM_ON,0 }, -- { N2LM_OFF,0 }, -- { N2LM_ON,1 }, -- { N2LM_ALL_OFF,1 }, -- { N2LM_ON,2 }, -- { N2LM_OFF,2 }, -- { N2LM_ON,3 }, -- { N2LM_OFF,3 }, -- { N2LM_BLINK,0 }, -- { N2LM_OFF,0 }, -- { N2LM_BLINK,1 }, -- { N2LM_OFF,1 }, -- { N2LM_BLINK,2 }, -- { N2LM_OFF,2 }, -- { N2LM_BLINK,3 }, -- { N2LM_OFF,3 }, -- { N2LM_ALL_OFF,0 }, -- { N2LM_ALT,1 }, -- { N2LM_OFF,1 }, -- { N2LM_ALL_ON,0 } -- }; -- -- nslu2_io_debug(("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long))); -- - wake_up(&n2rb_waitq); -- while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0) -- ; //wait for button release -- -- if (rb_presses > 20) -- rb_presses = 0; -- tone = (rb_presses * 50) + 200; -- ontime = (rb_presses*10) + 100; -- offtime = 500 - (rb_presses*20); -- nslu2_io_debug(("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone)); -- rb_presses++; -- -- n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses); -- n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param); --// if (rb_presses == 0) { --// init_jiffy = jiffies; --// init_timer (&n2rb_timer); --// n2rb_timer.function = do_rb_timeout; --// }; --// --// if (rb_presses == 8) --// rb_presses = 0; --// if (rb_presses & 1) --// n2lm_ledon(test[rb_presses]); --// else --// n2lm_ledoff(test[rb_presses]); --// --// n2rb_timer.expires = (jiffies + RB_DELAY); --// add_timer (&n2rb_timer); --// if (rb_presses < 5) { --// if (rb_presses > 0) --// n2lm_ledoff(rb_presses); --// n2lm_ledon(++rb_presses); --// n2lm_timer_start(rb_presses); --// }; -- -- nslu2_io_debug((KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies)); -- return IRQ_HANDLED; -- -+ machine_power_off(); -+ return IRQ_HANDLED; // So we don't get a nobody cared error :-P - } - - //================================================================================================== diff --git a/packages/linux/nslu2-kernel/2.6.13/70-xscale-reset.patch b/packages/linux/nslu2-kernel/2.6.13/70-xscale-reset.patch deleted file mode 100644 index 4e68456e20..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/70-xscale-reset.patch +++ /dev/null @@ -1,155 +0,0 @@ ---- linux-2.6.11.2/arch/arm/mm/proc-xscale.S 2005-03-09 00:12:44.000000000 -0800 -+++ linux-2.6.11.2/arch/arm/mm/proc-xscale.S 2005-06-18 15:39:22.701222319 -0700 -@@ -137,23 +137,129 @@ - * same state as it would be if it had been reset, and branch - * to what would be the reset vector. - * -+ * This code is ixp425 specific with respect to the reset of -+ * the 'configuration register' - to be found at address -+ * 0xC40000020 'IXP425_EXP_CNFGO' -+ * - * loc: location to jump to for soft reset - */ - .align 5 - ENTRY(cpu_xscale_reset) -+ @ always branch to 0 -+ mov r0, #0 -+ -+ @ disable both FIQ and IRQ, put us into 32 bit -+ @ SVC mode (no thumb). - mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE - msr cpsr_c, r1 @ reset CPSR -- mrc p15, 0, r1, c1, c0, 0 @ ctrl register -- bic r1, r1, #0x0086 @ ........B....CA. -- bic r1, r1, #0x3900 @ ..VIZ..S........ -- mcr p15, 0, r1, c1, c0, 0 @ ctrl register -- mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB -- bic r1, r1, #0x0001 @ ...............M -- mcr p15, 0, r1, c1, c0, 0 @ ctrl register -- @ CAUTION: MMU turned off from this point. We count on the pipeline -- @ already containing those two last instructions to survive. -+ -+ @ disable debug, clock and power registers are -+ @ unimplemented. -+ mcr p14, 0, r0, c10, c0, 0 @ disable debug -+ -+ @ disable the performance monitor -+ mcr p14, 0, r0, c0, c1, 0 @ PMNC (ctrl reg) -+ mcr p14, 0, r0, c4, c1, 0 @ INTEN (intrpt enable) -+ -+ @ wait for p14 to complete -+ mrc p14, 0, ip, c4, c1, 0 @ arbitrary read -+ mov ip, ip @ sync -+ -+ @ clear the PID register -+ mcr p15, 0, r0, c13, c0, 0 @ OR nothing with address! -+ -+ @ unlock the TLBs and the I/D cache locks -+ mcr p15, 0, r0, c10, c8, 1 @ data TLB unlocked -+ mcr p15, 0, r0, c10, c4, 1 @ instruction TLB unlocked -+ mcr p15, 0, r0, c9, c2, 1 @ unlock data cache -+ mcr p15, 0, r0, c9, c1, 1 @ unlock instruction cache -+ -+ @ zap the minidata cache to write through with write coalescing -+ @ disabled. -+ mov r1, #0x21 @ MD=b10, K=1 -+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer -+ mrc p15, 0, ip, c1, c0, 0 @ read of ctrl register -+ mov ip, ip @ sync -+ mcr p15, 0, r1, c1, c0, 1 @ write through, no coalesc -+ -+ @ set the control register, the MMU is enabled but everything else -+ @ is disabled at this point, r1 contains the control register flags -+ @ the process is now in little-endian mode (no matter, we aren't -+ @ going to do any <word access) -+ mov r1, #0x79 @ 00vIz0rs.b1111caM -+ orr r1, r1, #0x1000 @ I-cache enable -+ mcr p15, 0, r1, c1, c0, 0 -+ mrc p15, 0, ip, c1, c0, 0 -+ mov ip, ip @ sync to coproc -+ mov r1, #0x78 @ 00viz0rs.b1111cam -+ -+ @ and flush the I/D cache and BTB -+ mcr p15, 0, r0, c7, c7, 0 -+ -+ @ that's most of the work. The only thing which remains is to -+ @ remap the flash memory and disable the MMU. Do some setup -+ @ for this, also get ready to set the LED to red and put in -+ @ a watchdog timer. -+ -+ @ get ready to reset the configuration registers in the expansion -+ @ bus. CFGN1 disables byte swap and interrupt. -+ ldr r3, =IXP4XX_PERIPHERAL_BASE_VIRT -+ ldr r4, [r3, #IXP4XX_EXP_CFG1_OFFSET] -+ bic r4, r4, #0x13 @ -BYTE_SWAP_EN, -SW_INT? -+ str r4, [r3, #IXP4XX_EXP_CFG1_OFFSET] -+ -+ @ load the current configuration register from its -+ @ virtual address and set the MEM_MAP bit ready to map the -+ @ flash back to address 0, but don't write it yet. -+ ldr r4, [r3, #IXP4XX_EXP_CFG0_OFFSET] -+ orr r4, r4, #0x80000000 -+ -+ @ load the GPIO OUTR register address and current value, -+ @ set the low nibble to just red LED on. -+ ldr r5, =IXP4XX_GPIO_BASE_VIRT -+ ldr r6, [r5, #IXP4XX_GPIO_GPOUTR_OFFSET] -+ bic r6, r6, #0xf -+ orr r6, r6, #0xd -+ -+ @ load the watchdog timer virtual address, set the key and -+ @ the timer and start the down counter -+ ldr r7, =IXP4XX_TIMER_BASE_VIRT -+ ldr r8, =IXP4XX_WDT_KEY @ set key -+ str r8, [r7, #IXP4XX_OSWK_OFFSET] -+ mov r8, #0x1000000 @ about 0.25 seconds -+ str r8, [r7, #IXP4XX_OSWT_OFFSET] @ set timer -+ mov r8, #(IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE) -+ str r8, [r7, #IXP4XX_OSWE_OFFSET] @ enable reset -+ -+ @ invalidate the TLBs to ensure that there isn't a match for -+ @ '0' there. - mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs -- mov pc, r0 -+ mrc p15, 0, ip, c1, c0, 0 @ read of ctrl register -+ mov ip, ip @ sync -+ -+ @ remap the flash (after preloading instructions into the -+ @ I-cache) then turn off the MMU and branch to 0 when it is -+ @ off. It seems that RedBoot relies on the page tables being -+ @ set up on boot, so set the page table head register too. -+ mov r7, #0x4000 @ flash page table -+ ldr r8, =IXP4XX_GPIO_BASE_PHYS @ for led setting -+ bic r9, r6, #0xc @ disk1+disk2 led on -+ str r6, [r5, #IXP4XX_GPIO_GPOUTR_OFFSET] @ red led -+ b cache -+ -+ @ cached instructions These 8 instructions are valid in the cache -+ @ along with the associated TLB as soon as the first is executed. -+ @ They are used to effect the transition back into the flash -+ @ ROM code. -+ .align 5 -+cache: str r4, [r3, #IXP4XX_EXP_CFG0_OFFSET] @0 no memory! -+ mcr p15, 0, r7, c2, c0, 0 @1 set translation table base -+ mcr p15, 0, r1, c1, c0, 0 @2 no MMU! -+ mrc p15, 0, ip, c2, c0, 0 @3 arbitrary read of cp15 -+ str r9, [r8, #IXP4XX_GPIO_GPOUTR_OFFSET] @4 red+disk1+disk2 led -+ sub pc, r0, ip, LSR #32 @5 sync and branch to zero -+ nop @6 -+ nop @7 - - /* - * cpu_xscale_do_idle() -@@ -168,8 +274,10 @@ - .align 5 - - ENTRY(cpu_xscale_do_idle) -- mov r0, #1 -- mcr p14, 0, r0, c7, c0, 0 @ Go to IDLE -+ @ NSLU2/ixp420: not implemented in the hardware, docs -+ @ say do not write! -+ @mov r0, #1 -+ @mcr p14, 0, r0, c7, c0, 0 @ Go to IDLE - mov pc, lr - - /* ================================= CACHE ================================ */ diff --git a/packages/linux/nslu2-kernel/2.6.13/90-little-endian.patch b/packages/linux/nslu2-kernel/2.6.13/90-little-endian.patch deleted file mode 100644 index 1fc432b5db..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/90-little-endian.patch +++ /dev/null @@ -1,148 +0,0 @@ -diff -urpN linux-2.6.11.12/arch/arm/boot/compressed/Makefile linux-2.6.11.12-le2/arch/arm/boot/compressed/Makefile ---- linux-2.6.11.12/arch/arm/boot/compressed/Makefile 2005-06-12 04:45:37.000000000 +0200 -+++ linux-2.6.11.12-le2/arch/arm/boot/compressed/Makefile 2005-07-17 12:13:55.000000000 +0200 -@@ -56,6 +56,8 @@ endif - - ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) - OBJS += big-endian.o -+else -+OBJS += little-endian.o - endif - - # -diff -urpN linux-2.6.11.12/arch/arm/boot/compressed/little-endian.S linux-2.6.11.12-le2/arch/arm/boot/compressed/little-endian.S ---- linux-2.6.11.12/arch/arm/boot/compressed/little-endian.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.11.12-le2/arch/arm/boot/compressed/little-endian.S 2005-07-17 12:13:55.000000000 +0200 -@@ -0,0 +1,13 @@ -+/* -+ * linux/arch/arm/boot/compressed/little-endian.S -+ * -+ * Switch CPU into little endian mode. -+ * Author: Nicolas Pitre -+ */ -+ -+ .section ".start", #alloc, #execinstr -+ -+ mrc p15, 0, r0, c1, c0, 0 @ read control reg -+ bic r0, r0, #(1 << 7) @ enable little endian mode -+ mcr p15, 0, r0, c1, c0, 0 @ write control reg -+ -diff -urpN linux-2.6.11.12/arch/arm/mach-ixp4xx/common-pci.c linux-2.6.11.12-le2/arch/arm/mach-ixp4xx/common-pci.c ---- linux-2.6.11.12/arch/arm/mach-ixp4xx/common-pci.c 2005-06-12 04:45:37.000000000 +0200 -+++ linux-2.6.11.12-le2/arch/arm/mach-ixp4xx/common-pci.c 2005-07-17 12:13:55.000000000 +0200 -@@ -427,7 +427,7 @@ void __init ixp4xx_pci_preinit(void) - #ifdef __ARMEB__ - *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE | PCI_CSR_PDS | PCI_CSR_ADS; - #else -- *PCI_CSR = PCI_CSR_IC; -+ *PCI_CSR = PCI_CSR_IC | PCI_CSR_ABE; - #endif - - pr_debug("DONE\n"); -diff -urpN linux-2.6.11.12/drivers/mtd/maps/ixp4xx.c linux-2.6.11.12-le2/drivers/mtd/maps/ixp4xx.c ---- linux-2.6.11.12/drivers/mtd/maps/ixp4xx.c 2005-07-17 12:13:05.000000000 +0200 -+++ linux-2.6.11.12-le2/drivers/mtd/maps/ixp4xx.c 2005-07-17 12:13:55.000000000 +0200 -@@ -28,12 +28,12 @@ - #include <asm/io.h> - #include <asm/mach-types.h> - #include <asm/mach/flash.h> -- -+#include <asm/byteorder.h> - #include <asm/unaligned.h> - - #include <linux/reboot.h> - --#ifndef __ARMEB__ -+#if !defined(__ARMEB__) && !defined(CONFIG_ARCH_NSLU2) - #define BYTE0(h) ((h) & 0xFF) - #define BYTE1(h) (((h) >> 8) & 0xFF) - #else -@@ -44,6 +44,10 @@ - static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs) - { - map_word val; -+ -+#ifndef __ARMEB__ -+ ofs ^= 2; -+#endif - val.x[0] = *(__u16 *) (map->map_priv_1 + ofs); - return val; - } -@@ -53,6 +57,21 @@ static map_word ixp4xx_read16(struct map - * when attached to a 16-bit wide device (such as the 28F128J3A), - * so we can't just memcpy_fromio(). - */ -+ -+#if !defined(__ARMEB__) && defined(CONFIG_MTD_REDBOOT_PARTS) -+struct fis_image_desc { -+ unsigned char name[16]; // Null terminated name -+ unsigned long flash_base; // Address within FLASH of image -+ unsigned long mem_base; // Address in memory where it executes -+ unsigned long size; // Length of image -+ unsigned long entry_point; // Execution entry point -+ unsigned long data_length; // Length of actual data -+ unsigned char _pad[256-(16+7*sizeof(unsigned long))]; -+ unsigned long desc_cksum; // Checksum over image descriptor -+ unsigned long file_cksum; // Checksum over image data -+}; -+#endif -+ - static void ixp4xx_copy_from(struct map_info *map, void *to, - unsigned long from, ssize_t len) - { -@@ -62,13 +81,34 @@ static void ixp4xx_copy_from(struct map_ - u16 data; - - for (i = 0; i < (len / 2); i++) { -- data = get_unaligned((u16*)(src + i)); -+ int j = i; -+#ifndef __ARMEB__ -+ j ^= 1; -+#endif -+ data = get_unaligned((u16*)(src + j)); - dest[i * 2] = BYTE0(data); - dest[i * 2 + 1] = BYTE1(data); - } - -+#ifndef __ARMEB__ -+ i ^= 1; -+#endif -+ - if (len & 1) - dest[len - 1] = BYTE0(get_unaligned((u16*)(src + i))); -+ -+ /* Hack: Last sector contains RedBoot FIS table in big-endian format. -+ Convert into little endian format so we can use RedBoot parser */ -+#if !defined(__ARMEB__) && defined(CONFIG_MTD_REDBOOT_PARTS) -+ if (from == 0x7e0000) { -+ struct fis_image_desc *desc = (struct fis_image_desc *)to; -+ for (i=0; i < (len/sizeof(struct fis_image_desc)); i++) { -+ desc[i].flash_base = be32_to_cpu(desc[i].flash_base); -+ desc[i].mem_base = be32_to_cpu(desc[i].mem_base); -+ desc[i].size = be32_to_cpu(desc[i].size); -+ } -+ } -+#endif - } - - /* -@@ -77,6 +117,9 @@ static void ixp4xx_copy_from(struct map_ - */ - static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr) - { -+#ifndef __ARMEB__ -+ adr ^= 2; -+#endif - if (!(adr & 1)) - *(__u16 *) (map->map_priv_1 + adr) = d.x[0]; - } -@@ -86,6 +129,9 @@ static void ixp4xx_probe_write16(struct - */ - static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr) - { -+#ifndef __ARMEB__ -+ adr ^= 2; -+#endif - *(__u16 *) (map->map_priv_1 + adr) = d.x[0]; - } - diff --git a/packages/linux/nslu2-kernel/2.6.13/95-nslu2-defconfig.patch b/packages/linux/nslu2-kernel/2.6.13/95-nslu2-defconfig.patch deleted file mode 100644 index f86830d82b..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/95-nslu2-defconfig.patch +++ /dev/null @@ -1,1442 +0,0 @@ -diff -urN linux-2.6.13.1/arch/arm/configs/nslu2_defconfig nslu2-2.6.13.1/arch/arm/configs/nslu2_defconfig ---- linux-2.6.13.1/arch/arm/configs/nslu2_defconfig 1970-01-01 01:00:00.000000000 +0100 -+++ nslu2-2.6.13.1/arch/arm/configs/nslu2_defconfig 2005-09-17 16:45:43.000000000 +0200 -@@ -0,0 +1,1438 @@ -+# -+# Automatically generated make config: don't edit -+# Linux kernel version: 2.6.13.1 -+# Sat Sep 17 16:45:18 2005 -+# -+CONFIG_ARM=y -+CONFIG_MMU=y -+CONFIG_UID16=y -+CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_CLEAN_COMPILE=y -+CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+ -+# -+# General setup -+# -+CONFIG_LOCALVERSION="" -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+# CONFIG_POSIX_MQUEUE is not set -+CONFIG_BSD_PROCESS_ACCT=y -+# CONFIG_BSD_PROCESS_ACCT_V3 is not set -+CONFIG_SYSCTL=y -+# CONFIG_AUDIT is not set -+CONFIG_HOTPLUG=y -+CONFIG_KOBJECT_UEVENT=y -+# CONFIG_IKCONFIG is not set -+CONFIG_EMBEDDED=y -+# CONFIG_KALLSYMS 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 is not set -+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=y -+# 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 is not set -+# CONFIG_ARCH_VERSATILE is not set -+# CONFIG_ARCH_IMX is not set -+# CONFIG_ARCH_H720X is not set -+# CONFIG_ARCH_AAEC2000 is not set -+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y -+ -+# -+# Intel IXP4xx Implementation Options -+# -+ -+# -+# IXP4xx Platforms -+# -+# CONFIG_ARCH_AVILA is not set -+# CONFIG_ARCH_ADI_COYOTE is not set -+# CONFIG_ARCH_IXDP425 is not set -+# CONFIG_MACH_IXDPG425 is not set -+# CONFIG_MACH_IXDP465 is not set -+CONFIG_ARCH_NSLU2=y -+# CONFIG_ARCH_PRPMC1100 is not set -+# CONFIG_MACH_GTWX5715 is not set -+ -+# -+# IXP4xx Options -+# -+CONFIG_IXP4XX_INDIRECT_PCI=y -+ -+# -+# Processor Type -+# -+CONFIG_CPU_32=y -+CONFIG_CPU_XSCALE=y -+CONFIG_CPU_32v5=y -+CONFIG_CPU_ABRT_EV5T=y -+CONFIG_CPU_CACHE_VIVT=y -+CONFIG_CPU_TLB_V4WBI=y -+ -+# -+# Processor Features -+# -+# CONFIG_ARM_THUMB is not set -+CONFIG_CPU_BIG_ENDIAN=y -+CONFIG_XSCALE_PMU=y -+CONFIG_DMABOUNCE=y -+ -+# -+# Bus support -+# -+CONFIG_ISA_DMA_API=y -+CONFIG_PCI=y -+CONFIG_PCI_LEGACY_PROC=y -+# CONFIG_PCI_NAMES is not set -+# CONFIG_PCI_DEBUG is not set -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+# CONFIG_PCCARD is not set -+ -+# -+# Kernel Features -+# -+# CONFIG_PREEMPT is not set -+# CONFIG_NO_IDLE_HZ is not set -+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+CONFIG_ALIGNMENT_TRAP=y -+ -+# -+# Boot options -+# -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="root=/dev/sda2 ro rootdelay=10 rootfstype=ext2 noinitrd noirqdebug mem=32M@0x00000000 console=ttyS0,115200n8" -+# CONFIG_XIP_KERNEL is not set -+ -+# -+# Floating point emulation -+# -+ -+# -+# At least one emulation must be selected -+# -+CONFIG_FPE_NWFPE=y -+# CONFIG_FPE_FASTFPE is not set -+ -+# -+# Userspace binary formats -+# -+CONFIG_BINFMT_ELF=y -+# CONFIG_BINFMT_AOUT is not set -+# CONFIG_BINFMT_MISC is not set -+# CONFIG_ARTHUR is not set -+ -+# -+# Power management options -+# -+CONFIG_PM=y -+CONFIG_APM=y -+ -+# -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=m -+CONFIG_PACKET_MMAP=y -+CONFIG_UNIX=y -+CONFIG_XFRM=y -+# CONFIG_XFRM_USER is not set -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_BOOTP=y -+# CONFIG_IP_PNP_RARP is not set -+CONFIG_NET_IPIP=m -+CONFIG_NET_IPGRE=m -+# CONFIG_ARPD is not set -+CONFIG_SYN_COOKIES=y -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+CONFIG_INET_TUNNEL=m -+CONFIG_IP_TCPDIAG=y -+# CONFIG_IP_TCPDIAG_IPV6 is not set -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+ -+# -+# IP: Virtual Server Configuration -+# -+CONFIG_IP_VS=m -+CONFIG_IP_VS_DEBUG=y -+CONFIG_IP_VS_TAB_BITS=12 -+ -+# -+# IPVS transport protocol load balancing support -+# -+# CONFIG_IP_VS_PROTO_TCP is not set -+# CONFIG_IP_VS_PROTO_UDP is not set -+# CONFIG_IP_VS_PROTO_ESP is not set -+# CONFIG_IP_VS_PROTO_AH is not set -+ -+# -+# IPVS scheduler -+# -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+# CONFIG_IP_VS_SED is not set -+# CONFIG_IP_VS_NQ is not set -+ -+# -+# IPVS application helper -+# -+# CONFIG_IPV6 is not set -+CONFIG_NETFILTER=y -+# CONFIG_NETFILTER_DEBUG is not set -+CONFIG_BRIDGE_NETFILTER=y -+ -+# -+# IP: Netfilter Configuration -+# -+# CONFIG_IP_NF_CONNTRACK is not set -+# CONFIG_IP_NF_CONNTRACK_MARK is not set -+# CONFIG_IP_NF_QUEUE is not set -+# CONFIG_IP_NF_IPTABLES is not set -+# CONFIG_IP_NF_ARPTABLES is not set -+ -+# -+# Bridge: Netfilter Configuration -+# -+# CONFIG_BRIDGE_NF_EBTABLES is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+CONFIG_BRIDGE=m -+CONFIG_VLAN_8021Q=m -+# CONFIG_DECNET is not set -+CONFIG_LLC=m -+# CONFIG_LLC2 is not set -+CONFIG_IPX=m -+# CONFIG_IPX_INTERN is not set -+CONFIG_ATALK=m -+CONFIG_DEV_APPLETALK=y -+CONFIG_IPDDP=m -+CONFIG_IPDDP_ENCAP=y -+CONFIG_IPDDP_DECAP=y -+# 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=y -+CONFIG_NET_SCH_CLK_JIFFIES=y -+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -+# CONFIG_NET_SCH_CLK_CPU is not set -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+# CONFIG_NET_SCH_HFSC is not set -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+# CONFIG_NET_SCH_NETEM is not set -+CONFIG_NET_SCH_INGRESS=m -+CONFIG_NET_QOS=y -+CONFIG_NET_ESTIMATOR=y -+CONFIG_NET_CLS=y -+# CONFIG_NET_CLS_BASIC is not set -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_ROUTE=y -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+# CONFIG_CLS_U32_PERF is not set -+# CONFIG_NET_CLS_IND is not set -+# CONFIG_CLS_U32_MARK is not set -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+# CONFIG_NET_EMATCH is not set -+# CONFIG_NET_CLS_ACT is not set -+CONFIG_NET_CLS_POLICE=y -+ -+# -+# Network testing -+# -+CONFIG_NET_PKTGEN=m -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+CONFIG_BT=m -+CONFIG_BT_L2CAP=m -+CONFIG_BT_SCO=m -+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 is not set -+ -+# -+# Bluetooth device drivers -+# -+CONFIG_BT_HCIUSB=m -+CONFIG_BT_HCIUSB_SCO=y -+# CONFIG_BT_HCIUART is not set -+# CONFIG_BT_HCIBCM203X is not set -+# CONFIG_BT_HCIBPA10X is not set -+# CONFIG_BT_HCIBFUSB is not set -+# CONFIG_BT_HCIVHCI is not set -+ -+# -+# Device Drivers -+# -+ -+# -+# Generic Driver Options -+# -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+# CONFIG_FW_LOADER is not set -+# CONFIG_DEBUG_DRIVER is not set -+ -+# -+# Memory Technology Devices (MTD) -+# -+CONFIG_MTD=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=y -+# 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=y -+# CONFIG_MTD_JEDECPROBE is not set -+CONFIG_MTD_GEN_PROBE=y -+# CONFIG_MTD_CFI_ADV_OPTIONS 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_CFI_INTELEXT=y -+# CONFIG_MTD_CFI_AMDSTD is not set -+# CONFIG_MTD_CFI_STAA is not set -+CONFIG_MTD_CFI_UTIL=y -+# CONFIG_MTD_RAM is not set -+# CONFIG_MTD_ROM is not set -+# CONFIG_MTD_ABSENT is not set -+# CONFIG_MTD_XIP is not set -+ -+# -+# Mapping drivers for chip access -+# -+CONFIG_MTD_COMPLEX_MAPPINGS=y -+# CONFIG_MTD_PHYSMAP is not set -+# CONFIG_MTD_ARM_INTEGRATOR is not set -+CONFIG_MTD_IXP4XX=y -+# CONFIG_MTD_EDB7312 is not set -+# CONFIG_MTD_PCI is not set -+# CONFIG_MTD_PLATRAM is not set -+ -+# -+# Self-contained MTD device drivers -+# -+# CONFIG_MTD_PMC551 is not set -+# CONFIG_MTD_SLRAM is not set -+# CONFIG_MTD_PHRAM is not set -+# CONFIG_MTD_MTDRAM is not set -+# CONFIG_MTD_BLKMTD is not set -+# CONFIG_MTD_BLOCK2MTD is not set -+ -+# -+# Disk-On-Chip Device Drivers -+# -+# CONFIG_MTD_DOC2000 is not set -+# CONFIG_MTD_DOC2001 is not set -+# CONFIG_MTD_DOC2001PLUS is not set -+ -+# -+# NAND Flash Device Drivers -+# -+# CONFIG_MTD_NAND is not set -+ -+# -+# Parallel port support -+# -+# CONFIG_PARPORT is not set -+ -+# -+# Plug and Play support -+# -+ -+# -+# Block devices -+# -+# CONFIG_BLK_CPQ_DA is not set -+# CONFIG_BLK_CPQ_CISS_DA is not set -+# CONFIG_BLK_DEV_DAC960 is not set -+# CONFIG_BLK_DEV_UMEM is not set -+# CONFIG_BLK_DEV_COW_COMMON is not set -+CONFIG_BLK_DEV_LOOP=m -+# CONFIG_BLK_DEV_CRYPTOLOOP is not set -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SX8 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=10240 -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CDROM_PKTCDVD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+# CONFIG_IOSCHED_AS is not set -+CONFIG_IOSCHED_DEADLINE=y -+# CONFIG_IOSCHED_CFQ is not set -+# CONFIG_ATA_OVER_ETH is not set -+ -+# -+# ATA/ATAPI/MFM/RLL support -+# -+# CONFIG_IDE is not set -+ -+# -+# SCSI device support -+# -+CONFIG_SCSI=y -+CONFIG_SCSI_PROC_FS=y -+ -+# -+# SCSI support type (disk, tape, CD-ROM) -+# -+CONFIG_BLK_DEV_SD=y -+# CONFIG_CHR_DEV_ST is not set -+# CONFIG_CHR_DEV_OSST is not set -+# CONFIG_BLK_DEV_SR is not set -+# CONFIG_CHR_DEV_SG is not set -+# CONFIG_CHR_DEV_SCH is not set -+ -+# -+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -+# -+# CONFIG_SCSI_MULTI_LUN is not set -+# CONFIG_SCSI_CONSTANTS is not set -+# CONFIG_SCSI_LOGGING is not set -+ -+# -+# SCSI Transport Attributes -+# -+# CONFIG_SCSI_SPI_ATTRS is not set -+# CONFIG_SCSI_FC_ATTRS is not set -+# CONFIG_SCSI_ISCSI_ATTRS is not set -+ -+# -+# SCSI low-level drivers -+# -+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -+# CONFIG_SCSI_3W_9XXX is not set -+# CONFIG_SCSI_ACARD is not set -+# CONFIG_SCSI_AACRAID is not set -+# CONFIG_SCSI_AIC7XXX is not set -+# CONFIG_SCSI_AIC7XXX_OLD is not set -+# CONFIG_SCSI_AIC79XX is not set -+# CONFIG_SCSI_DPT_I2O is not set -+# CONFIG_MEGARAID_NEWGEN is not set -+# CONFIG_MEGARAID_LEGACY is not set -+# CONFIG_SCSI_SATA is not set -+# CONFIG_SCSI_BUSLOGIC is not set -+# CONFIG_SCSI_DMX3191D is not set -+# CONFIG_SCSI_EATA is not set -+# CONFIG_SCSI_FUTURE_DOMAIN is not set -+# CONFIG_SCSI_GDTH is not set -+# CONFIG_SCSI_IPS is not set -+# CONFIG_SCSI_INITIO is not set -+# CONFIG_SCSI_INIA100 is not set -+# CONFIG_SCSI_SYM53C8XX_2 is not set -+# CONFIG_SCSI_IPR is not set -+# CONFIG_SCSI_QLOGIC_FC is not set -+# CONFIG_SCSI_QLOGIC_1280 is not set -+CONFIG_SCSI_QLA2XXX=y -+# CONFIG_SCSI_QLA21XX is not set -+# CONFIG_SCSI_QLA22XX is not set -+# CONFIG_SCSI_QLA2300 is not set -+# CONFIG_SCSI_QLA2322 is not set -+# CONFIG_SCSI_QLA6312 is not set -+# CONFIG_SCSI_QLA24XX is not set -+# CONFIG_SCSI_LPFC is not set -+# CONFIG_SCSI_DC395x is not set -+# CONFIG_SCSI_DC390T is not set -+# CONFIG_SCSI_NSP32 is not set -+# CONFIG_SCSI_DEBUG is not set -+ -+# -+# Multi-device support (RAID and LVM) -+# -+CONFIG_MD=y -+CONFIG_BLK_DEV_MD=m -+# CONFIG_MD_LINEAR is not set -+CONFIG_MD_RAID0=m -+CONFIG_MD_RAID1=m -+# CONFIG_MD_RAID10 is not set -+CONFIG_MD_RAID5=m -+# CONFIG_MD_RAID6 is not set -+# CONFIG_MD_MULTIPATH is not set -+# CONFIG_MD_FAULTY is not set -+# CONFIG_BLK_DEV_DM is not set -+ -+# -+# Fusion MPT device support -+# -+# CONFIG_FUSION is not set -+# CONFIG_FUSION_SPI is not set -+# CONFIG_FUSION_FC is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_IEEE1394 is not set -+ -+# -+# I2O device support -+# -+# CONFIG_I2O is not set -+ -+# -+# 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 -+ -+# -+# ARCnet devices -+# -+# CONFIG_ARCNET is not set -+ -+# -+# Ethernet (10 or 100Mbit) -+# -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_HAPPYMEAL is not set -+# CONFIG_SUNGEM is not set -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_SMC91X is not set -+# CONFIG_DM9000 is not set -+ -+# -+# Tulip family network device support -+# -+# CONFIG_NET_TULIP is not set -+# CONFIG_HP100 is not set -+CONFIG_NET_PCI=y -+# CONFIG_PCNET32 is not set -+# CONFIG_AMD8111_ETH is not set -+# CONFIG_ADAPTEC_STARFIRE is not set -+# CONFIG_B44 is not set -+# CONFIG_FORCEDETH is not set -+# CONFIG_DGRS is not set -+# CONFIG_EEPRO100 is not set -+# CONFIG_E100 is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NATSEMI is not set -+# CONFIG_NE2K_PCI is not set -+# CONFIG_8139CP is not set -+# CONFIG_8139TOO is not set -+# CONFIG_SIS900 is not set -+# CONFIG_EPIC100 is not set -+# CONFIG_SUNDANCE is not set -+# CONFIG_TLAN is not set -+# CONFIG_VIA_RHINE is not set -+ -+# -+# Ethernet (1000 Mbit) -+# -+# CONFIG_ACENIC is not set -+# CONFIG_DL2K is not set -+# CONFIG_E1000 is not set -+# CONFIG_NS83820 is not set -+# CONFIG_HAMACHI is not set -+# CONFIG_YELLOWFIN is not set -+# CONFIG_R8169 is not set -+# CONFIG_SKGE is not set -+# CONFIG_SK98LIN is not set -+# CONFIG_VIA_VELOCITY is not set -+# CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set -+ -+# -+# Ethernet (10000 Mbit) -+# -+# CONFIG_IXGB is not set -+# CONFIG_S2IO is not set -+ -+# -+# Token Ring devices -+# -+# CONFIG_TR is not set -+ -+# -+# Wireless LAN (non-hamradio) -+# -+CONFIG_NET_RADIO=y -+ -+# -+# Obsolete Wireless cards support (pre-802.11) -+# -+# CONFIG_STRIP is not set -+ -+# -+# Wireless 802.11b ISA/PCI cards support -+# -+# CONFIG_HERMES is not set -+# CONFIG_ATMEL is not set -+ -+# -+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -+# -+# CONFIG_PRISM54 is not set -+CONFIG_NET_WIRELESS=y -+ -+# -+# Wan interfaces -+# -+# CONFIG_WAN is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+CONFIG_PPP=m -+# CONFIG_PPP_MULTILINK is not set -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_ASYNC=m -+# CONFIG_PPP_SYNC_TTY is not set -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_BSDCOMP=m -+# CONFIG_PPPOE is not set -+# CONFIG_SLIP is not set -+# CONFIG_NET_FC 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 is not set -+ -+# -+# Hardware I/O ports -+# -+# CONFIG_SERIO is not set -+# CONFIG_GAMEPORT is not set -+ -+# -+# Character devices -+# -+# CONFIG_VT is not set -+# CONFIG_SERIAL_NONSTANDARD is not set -+ -+# -+# Serial drivers -+# -+CONFIG_SERIAL_8250=y -+CONFIG_SERIAL_8250_CONSOLE=y -+CONFIG_SERIAL_8250_NR_UARTS=2 -+# CONFIG_SERIAL_8250_EXTENDED is not set -+ -+# -+# Non-8250 serial port support -+# -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set -+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 is not set -+ -+# -+# Watchdog Device Drivers -+# -+# CONFIG_SOFT_WATCHDOG is not set -+CONFIG_IXP4XX_WATCHDOG=y -+ -+# -+# PCI-based Watchdog Cards -+# -+# CONFIG_PCIPCWATCHDOG is not set -+# CONFIG_WDTPCI is not set -+ -+# -+# USB-based Watchdog Cards -+# -+# CONFIG_USBPCWATCHDOG is not set -+# CONFIG_NVRAM is not set -+# CONFIG_RTC is not set -+# CONFIG_DTLK is not set -+# CONFIG_R3964 is not set -+# CONFIG_APPLICOM is not set -+ -+# -+# Ftape, the floppy tape device driver -+# -+# CONFIG_DRM is not set -+# CONFIG_RAW_DRIVER is not set -+ -+# -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+ -+# -+# I2C support -+# -+CONFIG_I2C=y -+CONFIG_I2C_CHARDEV=y -+ -+# -+# I2C Algorithms -+# -+CONFIG_I2C_ALGOBIT=y -+# CONFIG_I2C_ALGOPCF is not set -+# CONFIG_I2C_ALGOPCA is not set -+ -+# -+# I2C Hardware Bus support -+# -+# CONFIG_I2C_ALI1535 is not set -+# CONFIG_I2C_ALI1563 is not set -+# CONFIG_I2C_ALI15X3 is not set -+# CONFIG_I2C_AMD756 is not set -+# CONFIG_I2C_AMD8111 is not set -+# CONFIG_I2C_I801 is not set -+# CONFIG_I2C_I810 is not set -+# CONFIG_I2C_PIIX4 is not set -+# CONFIG_I2C_IOP3XX is not set -+# CONFIG_I2C_ISA is not set -+CONFIG_I2C_IXP4XX=y -+# CONFIG_I2C_NFORCE2 is not set -+# CONFIG_I2C_PARPORT_LIGHT is not set -+# CONFIG_I2C_PROSAVAGE is not set -+# CONFIG_I2C_SAVAGE4 is not set -+# CONFIG_SCx200_ACB is not set -+# CONFIG_I2C_SIS5595 is not set -+# CONFIG_I2C_SIS630 is not set -+# CONFIG_I2C_SIS96X is not set -+# CONFIG_I2C_STUB is not set -+# CONFIG_I2C_VIA is not set -+# CONFIG_I2C_VIAPRO is not set -+# CONFIG_I2C_VOODOO3 is not set -+# CONFIG_I2C_PCA_ISA is not set -+CONFIG_I2C_SENSOR=y -+ -+# -+# Miscellaneous I2C Chip support -+# -+# CONFIG_SENSORS_DS1337 is not set -+# CONFIG_SENSORS_DS1374 is not set -+CONFIG_SENSORS_EEPROM=y -+# CONFIG_SENSORS_PCF8574 is not set -+# CONFIG_SENSORS_PCA9539 is not set -+# CONFIG_SENSORS_PCF8591 is not set -+# CONFIG_SENSORS_RTC8564 is not set -+# CONFIG_SENSORS_MAX6875 is not set -+CONFIG_SENSORS_X1205=y -+# CONFIG_I2C_DEBUG_CORE is not set -+# CONFIG_I2C_DEBUG_ALGO is not set -+# CONFIG_I2C_DEBUG_BUS is not set -+# CONFIG_I2C_DEBUG_CHIP is not set -+ -+# -+# Hardware Monitoring support -+# -+# CONFIG_HWMON is not set -+ -+# -+# Misc devices -+# -+ -+# -+# Multimedia devices -+# -+CONFIG_VIDEO_DEV=m -+ -+# -+# Video For Linux -+# -+ -+# -+# Video Adapters -+# -+# CONFIG_VIDEO_BT848 is not set -+# CONFIG_VIDEO_CPIA is not set -+# CONFIG_VIDEO_SAA5246A is not set -+# CONFIG_VIDEO_SAA5249 is not set -+# CONFIG_TUNER_3036 is not set -+# CONFIG_VIDEO_STRADIS is not set -+# CONFIG_VIDEO_ZORAN is not set -+# CONFIG_VIDEO_SAA7134 is not set -+# CONFIG_VIDEO_MXB is not set -+# CONFIG_VIDEO_DPC is not set -+# CONFIG_VIDEO_HEXIUM_ORION is not set -+# CONFIG_VIDEO_HEXIUM_GEMINI is not set -+# CONFIG_VIDEO_CX88 is not set -+# CONFIG_VIDEO_OVCAMCHIP is not set -+ -+# -+# Radio Adapters -+# -+# CONFIG_RADIO_GEMTEK_PCI is not set -+# CONFIG_RADIO_MAXIRADIO is not set -+# CONFIG_RADIO_MAESTRO is not set -+ -+# -+# Digital Video Broadcasting Devices -+# -+# CONFIG_DVB is not set -+ -+# -+# Graphics support -+# -+# CONFIG_FB is not set -+ -+# -+# Sound -+# -+CONFIG_SOUND=y -+ -+# -+# Advanced Linux Sound Architecture -+# -+CONFIG_SND=y -+CONFIG_SND_TIMER=y -+CONFIG_SND_PCM=y -+CONFIG_SND_HWDEP=y -+CONFIG_SND_RAWMIDI=y -+# CONFIG_SND_SEQUENCER is not set -+CONFIG_SND_OSSEMUL=y -+CONFIG_SND_MIXER_OSS=y -+CONFIG_SND_PCM_OSS=y -+# 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 -+ -+# -+# PCI devices -+# -+# CONFIG_SND_ALI5451 is not set -+# CONFIG_SND_ATIIXP is not set -+# CONFIG_SND_ATIIXP_MODEM is not set -+# CONFIG_SND_AU8810 is not set -+# CONFIG_SND_AU8820 is not set -+# CONFIG_SND_AU8830 is not set -+# CONFIG_SND_AZT3328 is not set -+# CONFIG_SND_BT87X is not set -+# CONFIG_SND_CS46XX is not set -+# CONFIG_SND_CS4281 is not set -+# CONFIG_SND_EMU10K1 is not set -+# CONFIG_SND_EMU10K1X is not set -+# CONFIG_SND_CA0106 is not set -+# CONFIG_SND_KORG1212 is not set -+# CONFIG_SND_MIXART is not set -+# CONFIG_SND_NM256 is not set -+# CONFIG_SND_RME32 is not set -+# CONFIG_SND_RME96 is not set -+# CONFIG_SND_RME9652 is not set -+# CONFIG_SND_HDSP is not set -+# CONFIG_SND_HDSPM is not set -+# CONFIG_SND_TRIDENT is not set -+# CONFIG_SND_YMFPCI is not set -+# CONFIG_SND_ALS4000 is not set -+# CONFIG_SND_CMIPCI is not set -+# CONFIG_SND_ENS1370 is not set -+# CONFIG_SND_ENS1371 is not set -+# CONFIG_SND_ES1938 is not set -+# CONFIG_SND_ES1968 is not set -+# CONFIG_SND_MAESTRO3 is not set -+# CONFIG_SND_FM801 is not set -+# CONFIG_SND_ICE1712 is not set -+# CONFIG_SND_ICE1724 is not set -+# CONFIG_SND_INTEL8X0 is not set -+# CONFIG_SND_INTEL8X0M is not set -+# CONFIG_SND_SONICVIBES is not set -+# CONFIG_SND_VIA82XX is not set -+# CONFIG_SND_VIA82XX_MODEM is not set -+# CONFIG_SND_VX222 is not set -+# CONFIG_SND_HDA_INTEL is not set -+ -+# -+# ALSA ARM devices -+# -+ -+# -+# USB devices -+# -+CONFIG_SND_USB_AUDIO=y -+ -+# -+# Open Sound System -+# -+# CONFIG_SOUND_PRIME is not set -+ -+# -+# USB support -+# -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB_ARCH_HAS_OHCI=y -+CONFIG_USB=y -+# CONFIG_USB_DEBUG is not set -+ -+# -+# 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_EHCI_HCD=y -+# CONFIG_USB_EHCI_SPLIT_ISO is not set -+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -+# 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_UHCI_HCD is not set -+# CONFIG_USB_SL811_HCD is not set -+ -+# -+# USB Device Class drivers -+# -+# CONFIG_USB_AUDIO is not set -+ -+# -+# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem -+# -+# CONFIG_USB_MIDI is not set -+CONFIG_USB_ACM=m -+CONFIG_USB_PRINTER=m -+ -+# -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# -+CONFIG_USB_STORAGE=y -+# CONFIG_USB_STORAGE_DEBUG is not set -+CONFIG_USB_STORAGE_DATAFAB=y -+CONFIG_USB_STORAGE_FREECOM=y -+CONFIG_USB_STORAGE_DPCM=y -+CONFIG_USB_STORAGE_USBAT=y -+CONFIG_USB_STORAGE_SDDR09=y -+CONFIG_USB_STORAGE_SDDR55=y -+CONFIG_USB_STORAGE_JUMPSHOT=y -+ -+# -+# USB Input Devices -+# -+CONFIG_USB_HID=m -+ -+# -+# Input core support is needed for USB HID input layer or HIDBP support -+# -+CONFIG_USB_HIDDEV=y -+ -+# -+# USB HID Boot Protocol drivers -+# -+ -+# -+# USB Imaging devices -+# -+# CONFIG_USB_MDC800 is not set -+# CONFIG_USB_MICROTEK is not set -+ -+# -+# USB Multimedia devices -+# -+# CONFIG_USB_DABUSB is not set -+# CONFIG_USB_VICAM is not set -+# CONFIG_USB_DSBR is not set -+# CONFIG_USB_IBMCAM is not set -+# CONFIG_USB_KONICAWC is not set -+# CONFIG_USB_OV511 is not set -+# CONFIG_USB_SE401 is not set -+# CONFIG_USB_SN9C102 is not set -+# CONFIG_USB_STV680 is not set -+# CONFIG_USB_PWC is not set -+ -+# -+# USB Network Adapters -+# -+CONFIG_USB_CATC=y -+CONFIG_USB_KAWETH=m -+CONFIG_USB_PEGASUS=y -+CONFIG_USB_RTL8150=y -+CONFIG_USB_USBNET=y -+ -+# -+# USB Host-to-Host Cables -+# -+CONFIG_USB_ALI_M5632=y -+CONFIG_USB_AN2720=y -+CONFIG_USB_BELKIN=y -+CONFIG_USB_GENESYS=y -+CONFIG_USB_NET1080=y -+CONFIG_USB_PL2301=y -+CONFIG_USB_KC2190=y -+ -+# -+# Intelligent USB Devices/Gadgets -+# -+CONFIG_USB_ARMLINUX=y -+CONFIG_USB_EPSON2888=y -+CONFIG_USB_ZAURUS=y -+CONFIG_USB_CDCETHER=y -+ -+# -+# USB Network Adapters -+# -+CONFIG_USB_AX8817X=y -+# CONFIG_USB_ZD1201 is not set -+# CONFIG_USB_MON is not set -+ -+# -+# USB port drivers -+# -+ -+# -+# USB Serial Converter support -+# -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+# CONFIG_USB_SERIAL_AIRPRIME is not set -+CONFIG_USB_SERIAL_BELKIN=m -+CONFIG_USB_SERIAL_WHITEHEAT=m -+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -+CONFIG_USB_SERIAL_CP2101=m -+CONFIG_USB_SERIAL_CYPRESS_M8=m -+CONFIG_USB_SERIAL_EMPEG=m -+CONFIG_USB_SERIAL_FTDI_SIO=m -+CONFIG_USB_SERIAL_VISOR=m -+CONFIG_USB_SERIAL_IPAQ=m -+CONFIG_USB_SERIAL_IR=m -+CONFIG_USB_SERIAL_EDGEPORT=m -+CONFIG_USB_SERIAL_EDGEPORT_TI=m -+CONFIG_USB_SERIAL_GARMIN=m -+CONFIG_USB_SERIAL_IPW=m -+CONFIG_USB_SERIAL_KEYSPAN_PDA=m -+# CONFIG_USB_SERIAL_KEYSPAN is not set -+CONFIG_USB_SERIAL_KLSI=m -+CONFIG_USB_SERIAL_KOBIL_SCT=m -+CONFIG_USB_SERIAL_MCT_U232=m -+CONFIG_USB_SERIAL_PL2303=m -+CONFIG_USB_SERIAL_HP4X=m -+# CONFIG_USB_SERIAL_SAFE is not set -+# CONFIG_USB_SERIAL_TI is not set -+CONFIG_USB_SERIAL_CYBERJACK=m -+CONFIG_USB_SERIAL_XIRCOM=m -+CONFIG_USB_SERIAL_OMNINET=m -+CONFIG_USB_EZUSB=y -+ -+# -+# 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=m -+# 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_SISUSBVGA=m -+# CONFIG_USB_LD is not set -+# CONFIG_USB_TEST is not set -+ -+# -+# USB DSL modem support -+# -+ -+# -+# USB Gadget Support -+# -+# CONFIG_USB_GADGET is not set -+ -+# -+# MMC/SD Card support -+# -+# CONFIG_MMC is not set -+ -+# -+# File systems -+# -+CONFIG_EXT2_FS=y -+# CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set -+CONFIG_EXT3_FS=y -+# CONFIG_EXT3_FS_XATTR is not set -+CONFIG_JBD=y -+# CONFIG_JBD_DEBUG is not set -+CONFIG_REISERFS_FS=m -+# CONFIG_REISERFS_CHECK is not set -+# CONFIG_REISERFS_PROC_INFO is not set -+# CONFIG_REISERFS_FS_XATTR is not set -+# CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set -+ -+# -+# XFS support -+# -+# CONFIG_XFS_FS is not set -+# CONFIG_MINIX_FS is not set -+# CONFIG_ROMFS_FS is not set -+# CONFIG_INOTIFY is not set -+# CONFIG_QUOTA is not set -+CONFIG_DNOTIFY=y -+# CONFIG_AUTOFS_FS is not set -+# CONFIG_AUTOFS4_FS is not set -+ -+# -+# CD-ROM/DVD Filesystems -+# -+CONFIG_ISO9660_FS=m -+# CONFIG_JOLIET is not set -+# CONFIG_ZISOFS is not set -+CONFIG_UDF_FS=m -+CONFIG_UDF_NLS=y -+ -+# -+# DOS/FAT/NT Filesystems -+# -+CONFIG_FAT_FS=m -+CONFIG_MSDOS_FS=m -+CONFIG_VFAT_FS=m -+CONFIG_FAT_DEFAULT_CODEPAGE=437 -+CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -+CONFIG_NTFS_FS=m -+# CONFIG_NTFS_DEBUG is not set -+# CONFIG_NTFS_RW is not set -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+CONFIG_SYSFS=y -+# CONFIG_DEVPTS_FS_XATTR is not set -+CONFIG_TMPFS=y -+# CONFIG_TMPFS_XATTR is not set -+# CONFIG_HUGETLB_PAGE is not set -+CONFIG_RAMFS=y -+ -+# -+# Miscellaneous filesystems -+# -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_JFFS_FS is not set -+CONFIG_JFFS2_FS=y -+CONFIG_JFFS2_FS_DEBUG=0 -+# CONFIG_JFFS2_FS_WRITEBUFFER is not set -+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -+CONFIG_JFFS2_ZLIB=y -+CONFIG_JFFS2_RTIME=y -+# CONFIG_JFFS2_RUBIN is not set -+# CONFIG_CRAMFS is not set -+# CONFIG_VXFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_SYSV_FS is not set -+# CONFIG_UFS_FS is not set -+ -+# -+# Network File Systems -+# -+CONFIG_NFS_FS=m -+CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set -+# CONFIG_NFS_V4 is not set -+# CONFIG_NFS_DIRECTIO is not set -+CONFIG_NFSD=m -+# CONFIG_NFSD_V3 is not set -+CONFIG_NFSD_TCP=y -+CONFIG_LOCKD=m -+CONFIG_LOCKD_V4=y -+CONFIG_EXPORTFS=m -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=m -+# CONFIG_RPCSEC_GSS_KRB5 is not set -+# CONFIG_RPCSEC_GSS_SPKM3 is not set -+CONFIG_SMB_FS=m -+# CONFIG_SMB_NLS_DEFAULT is not set -+# CONFIG_CIFS is not set -+# CONFIG_NCP_FS is not set -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+ -+# -+# Partition Types -+# -+CONFIG_PARTITION_ADVANCED=y -+# CONFIG_ACORN_PARTITION is not set -+# CONFIG_OSF_PARTITION is not set -+# CONFIG_AMIGA_PARTITION is not set -+# CONFIG_ATARI_PARTITION is not set -+# CONFIG_MAC_PARTITION is not set -+CONFIG_MSDOS_PARTITION=y -+# CONFIG_BSD_DISKLABEL is not set -+# CONFIG_MINIX_SUBPARTITION is not set -+# CONFIG_SOLARIS_X86_PARTITION is not set -+# CONFIG_UNIXWARE_DISKLABEL is not set -+# CONFIG_LDM_PARTITION is not set -+# CONFIG_SGI_PARTITION is not set -+# CONFIG_ULTRIX_PARTITION is not set -+# CONFIG_SUN_PARTITION is not set -+# CONFIG_EFI_PARTITION is not set -+ -+# -+# Native Language Support -+# -+CONFIG_NLS=m -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=m -+CONFIG_NLS_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=m -+CONFIG_NLS_ISO8859_1=m -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_NLS_UTF8=m -+ -+# -+# Profiling support -+# -+# CONFIG_PROFILING is not set -+ -+# -+# Kernel hacking -+# -+# CONFIG_PRINTK_TIME is not set -+CONFIG_DEBUG_KERNEL=y -+CONFIG_MAGIC_SYSRQ=y -+CONFIG_LOG_BUF_SHIFT=14 -+# CONFIG_SCHEDSTATS is not set -+# CONFIG_DEBUG_SLAB is not set -+# CONFIG_DEBUG_SPINLOCK is not set -+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -+# CONFIG_DEBUG_KOBJECT is not set -+CONFIG_DEBUG_BUGVERBOSE=y -+# CONFIG_DEBUG_INFO 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=m -+CONFIG_CRYPTO_MD4=m -+CONFIG_CRYPTO_MD5=m -+CONFIG_CRYPTO_SHA1=m -+CONFIG_CRYPTO_SHA256=m -+CONFIG_CRYPTO_SHA512=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_DES=m -+CONFIG_CRYPTO_BLOWFISH=m -+CONFIG_CRYPTO_TWOFISH=m -+CONFIG_CRYPTO_SERPENT=m -+CONFIG_CRYPTO_AES=m -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_CAST6=m -+CONFIG_CRYPTO_TEA=m -+CONFIG_CRYPTO_ARC4=m -+CONFIG_CRYPTO_KHAZAD=m -+CONFIG_CRYPTO_ANUBIS=m -+CONFIG_CRYPTO_DEFLATE=m -+CONFIG_CRYPTO_MICHAEL_MIC=m -+CONFIG_CRYPTO_CRC32C=m -+CONFIG_CRYPTO_TEST=m -+ -+# -+# Hardware crypto devices -+# -+ -+# -+# Library routines -+# -+CONFIG_CRC_CCITT=m -+CONFIG_CRC32=y -+CONFIG_LIBCRC32C=m -+CONFIG_ZLIB_INFLATE=y -+CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/nslu2-kernel/2.6.13/96-nslu2-le-defconfig.patch b/packages/linux/nslu2-kernel/2.6.13/96-nslu2-le-defconfig.patch deleted file mode 100644 index 4b6e28a878..0000000000 --- a/packages/linux/nslu2-kernel/2.6.13/96-nslu2-le-defconfig.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff -urN nslu2-2.6.13.1/arch/arm/configs/nslu2_defconfig test/arch/arm/configs/nslu2_defconfig ---- nslu2-2.6.13.1/arch/arm/configs/nslu2_defconfig 2005-09-17 16:45:43.000000000 +0200 -+++ test/arch/arm/configs/nslu2_defconfig 2005-09-17 16:46:48.000000000 +0200 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit - # Linux kernel version: 2.6.13.1 --# Sat Sep 17 16:45:18 2005 -+# Sat Sep 17 16:23:38 2005 - # - CONFIG_ARM=y - CONFIG_MMU=y -@@ -120,7 +120,7 @@ - # Processor Features - # - # CONFIG_ARM_THUMB is not set --CONFIG_CPU_BIG_ENDIAN=y -+# CONFIG_CPU_BIG_ENDIAN is not set - CONFIG_XSCALE_PMU=y - CONFIG_DMABOUNCE=y - -@@ -168,6 +168,7 @@ - # At least one emulation must be selected - # - CONFIG_FPE_NWFPE=y -+# CONFIG_FPE_NWFPE_XP is not set - # CONFIG_FPE_FASTFPE is not set - - # diff --git a/packages/linux/openslug-kernel-2.6.11/.mtn2git_empty b/packages/linux/nslu2-kernel/2.6.14-mm/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/openslug-kernel-2.6.11/.mtn2git_empty +++ b/packages/linux/nslu2-kernel/2.6.14-mm/.mtn2git_empty diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch b/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch new file mode 100644 index 0000000000..999b69e851 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.14-mm/00-memory-h-page-shift.patch @@ -0,0 +1,10 @@ +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/memory.h.orig 2005-11-07 23:16:48.456117450 -0800 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/memory.h 2005-11-07 23:16:58.160728123 -0800 +@@ -8,6 +8,7 @@ + #define __ASM_ARCH_MEMORY_H + + #include <asm/sizes.h> ++#include <asm/page.h> + + /* + * Physical DRAM offset. diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch b/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch new file mode 100644 index 0000000000..67cbd4cdf4 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.14-mm/30-i2c-x1205-mm1.patch @@ -0,0 +1,1036 @@ +--- linux-2.6.14/drivers/i2c/chips/Kconfig.orig 2005-11-07 22:30:30.413306237 -0800 ++++ linux-2.6.14/drivers/i2c/chips/Kconfig 2005-11-07 22:41:15.785916976 -0800 +@@ -126,13 +126,13 @@ config SENSORS_MAX6875 + This driver can also be built as a module. If so, the module + will be called max6875. + +-config RTC_X1205_I2C +- tristate "Xicor X1205 RTC chip" +- depends on I2C && EXPERIMENTAL +- help +- If you say yes here you get support for the Xicor X1205 RTC chip. ++config SENSORS_X1205 ++ tristate "Xicor X1205 RTC chip" ++ depends on I2C ++ help ++ If you say yes here you get support for the Xicor X1205 RTC chip. + +- This driver can also be built as a module. If so, the module +- will be called x1205. ++ This driver can also be built as a module. If so, the module ++ will be called x1205 + + endmenu +--- linux-2.6.14/drivers/i2c/chips/Makefile.orig 2005-11-07 22:30:30.417306489 -0800 ++++ linux-2.6.14/drivers/i2c/chips/Makefile 2005-11-07 22:41:59.616675071 -0800 +@@ -13,7 +13,7 @@ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591 + obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o + obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o + obj-$(CONFIG_TPS65010) += tps65010.o +-obj-$(CONFIG_RTC_X1205_I2C) += x1205.o ++obj-$(CONFIG_SENSORS_X1205) += x1205.o + + ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) + EXTRA_CFLAGS += -DDEBUG +--- linux-2.6.14/drivers/i2c/chips/x1205.c.orig 2005-11-07 22:30:30.421306741 -0800 ++++ linux-2.6.14/drivers/i2c/chips/x1205.c 2005-11-07 22:42:54.960157617 -0800 +@@ -1,14 +1,16 @@ + /* +- * x1205.c - An i2c driver for the Xicor X1205 RTC ++ * linux/drivers/i2c/chips/x1205.c ++ * ++ * x1205.c - An 12c driver for the Xicor X1205 RTC + * Copyright 2004 Karen Spearel + * Copyright 2005 Alessandro Zummo + * + * please send all reports to: + * kas11 at tampabay dot rr dot com + * a dot zummo at towertech dot it +- * ++ * + * based on the other drivers in this same directory. +- * ++ * + * 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 +@@ -26,83 +28,36 @@ + + #include <linux/x1205.h> + +-#define DRV_VERSION "0.9.9" ++#define EPOCH_1900 1900 ++#define EPOCH_1970 1970 ++ ++#define DRIVER_VERSION "0.9.6" ++#define DRIVER_NAME (x1205_driver.name) + +-/* Addresses to scan: none. This chip is located at +- * 0x6f and uses a two bytes register addressing. +- * Two bytes need to be written to read a single register, +- * while most other chips just require one and take the second +- * one as the data to be written. To prevent corrupting +- * unknown chips, the user must explicitely set the probe parameter. +- */ + +-static unsigned short normal_i2c[] = { I2C_CLIENT_END }; ++/* Addresses to scan */ ++static unsigned short normal_i2c[] = { X1205_I2C_BUS_ADDR, I2C_CLIENT_END }; + + /* Insmod parameters */ + I2C_CLIENT_INSMOD; + I2C_CLIENT_MODULE_PARM(hctosys, + "Set the system time from the hardware clock upon initialization"); + +-/* offsets into CCR area */ +- +-#define CCR_SEC 0 +-#define CCR_MIN 1 +-#define CCR_HOUR 2 +-#define CCR_MDAY 3 +-#define CCR_MONTH 4 +-#define CCR_YEAR 5 +-#define CCR_WDAY 6 +-#define CCR_Y2K 7 +- +-#define X1205_REG_SR 0x3F /* status register */ +-#define X1205_REG_Y2K 0x37 +-#define X1205_REG_DW 0x36 +-#define X1205_REG_YR 0x35 +-#define X1205_REG_MO 0x34 +-#define X1205_REG_DT 0x33 +-#define X1205_REG_HR 0x32 +-#define X1205_REG_MN 0x31 +-#define X1205_REG_SC 0x30 +-#define X1205_REG_DTR 0x13 +-#define X1205_REG_ATR 0x12 +-#define X1205_REG_INT 0x11 +-#define X1205_REG_0 0x10 +-#define X1205_REG_Y2K1 0x0F +-#define X1205_REG_DWA1 0x0E +-#define X1205_REG_YRA1 0x0D +-#define X1205_REG_MOA1 0x0C +-#define X1205_REG_DTA1 0x0B +-#define X1205_REG_HRA1 0x0A +-#define X1205_REG_MNA1 0x09 +-#define X1205_REG_SCA1 0x08 +-#define X1205_REG_Y2K0 0x07 +-#define X1205_REG_DWA0 0x06 +-#define X1205_REG_YRA0 0x05 +-#define X1205_REG_MOA0 0x04 +-#define X1205_REG_DTA0 0x03 +-#define X1205_REG_HRA0 0x02 +-#define X1205_REG_MNA0 0x01 +-#define X1205_REG_SCA0 0x00 +- +-#define X1205_CCR_BASE 0x30 /* Base address of CCR */ +-#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */ +- +-#define X1205_SR_RTCF 0x01 /* Clock failure */ +-#define X1205_SR_WEL 0x02 /* Write Enable Latch */ +-#define X1205_SR_RWEL 0x04 /* Register Write Enable */ +- +-#define X1205_DTR_DTR0 0x01 +-#define X1205_DTR_DTR1 0x02 +-#define X1205_DTR_DTR2 0x04 +- +-#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */ +- + /* Prototypes */ ++ + static int x1205_attach(struct i2c_adapter *adapter); + static int x1205_detach(struct i2c_client *client); + static int x1205_probe(struct i2c_adapter *adapter, int address, int kind); +-static int x1205_command(struct i2c_client *client, unsigned int cmd, +- void *arg); ++static int x1205_validate_client(struct i2c_client *client); ++ ++static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, ++ u8 reg_base); ++static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, ++ int datetoo, u8 reg_base); ++static int x1205_validate_tm(struct rtc_time *tm); ++static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg); ++static int x1205_hctosys(struct i2c_client *client); ++ + + static struct i2c_driver x1205_driver = { + .owner = THIS_MODULE, +@@ -110,6 +65,7 @@ static struct i2c_driver x1205_driver = + .flags = I2C_DF_NOTIFY, + .attach_adapter = &x1205_attach, + .detach_client = &x1205_detach, ++/* .command = &x1205_command,*/ + }; + + struct x1205_data { +@@ -118,8 +74,9 @@ struct x1205_data { + unsigned int epoch; + }; + +-static const unsigned char days_in_mo[] = +- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; ++ ++static const unsigned char days_in_mo[] = ++{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + + static LIST_HEAD(x1205_clients); + +@@ -127,6 +84,7 @@ static LIST_HEAD(x1205_clients); + * commands to a specific client. This function will send the command + * to the first client. + */ ++ + int x1205_do_command(unsigned int cmd, void *arg) + { + struct list_head *walk; +@@ -141,114 +99,98 @@ int x1205_do_command(unsigned int cmd, v + return -ENODEV; + } + +-#define is_leap(year) \ +- ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +- +-/* make sure the rtc_time values are in bounds */ +-static int x1205_validate_tm(struct rtc_time *tm) +-{ +- int year = tm->tm_year + 1900; +- +- if ((tm->tm_year < 70) || (tm->tm_year > 255)) +- return -EINVAL; +- +- if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) +- return -EINVAL; +- +- if (tm->tm_mday > days_in_mo[tm->tm_mon] +- + ((tm->tm_mon == 1) && is_leap(year))) +- return -EINVAL; +- +- if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) +- return -EINVAL; +- +- return 0; +-} + + /* +- * In the routines that deal directly with the x1205 hardware, we use ++ * in the routines that deal directly with the x1205 hardware, we use + * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch +- * Epoch is initialized as 2000. Time is set to UTC. ++ * Epoch is inited as 2000. Time is set to UT + */ ++ + static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, + u8 reg_base) + { +- unsigned char dt_addr[2] = { 0, reg_base }; +- static unsigned char sr_addr[2] = { 0, X1205_REG_SR }; ++ static unsigned char dt_addr[] = { 0, }; ++ static unsigned char sr_addr[] = { 0, }; + +- unsigned char buf[8], sr; ++ unsigned char buf[8], sr; + + struct i2c_msg msgs[] = { +- { client->addr, 0, 2, sr_addr }, /* setup read ptr */ +- { client->addr, I2C_M_RD, 1, &sr }, /* read status */ +- { client->addr, 0, 2, dt_addr }, /* setup read ptr */ +- { client->addr, I2C_M_RD, 8, buf }, /* read date */ ++ { client->addr, 0, 2, sr_addr }, /* random read */ ++ { client->addr, I2C_M_RD, 1, &sr }, ++ { client->addr, 0, 2, dt_addr }, /* random read */ ++ { client->addr, I2C_M_RD, 8, buf }, + }; + +- struct x1205_data *data = i2c_get_clientdata(client); ++ struct x1205_data *xdata = i2c_get_clientdata(client); + +- /* read status register */ +- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { +- dev_err(&client->dev, "%s: read error\n", __FUNCTION__); +- return -EIO; +- } ++ dt_addr[1] = reg_base; ++ sr_addr[1] = X1205_REG_SR; + +- /* check for battery failure */ +- if (sr & X1205_SR_RTCF) { +- dev_warn(&client->dev, +- "Clock had a power failure, you must set the date.\n"); +- return -EINVAL; +- } ++ if ((i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs))) == ++ ARRAY_SIZE(msgs)) { ++ /* did we read the correct number of messages? */ ++ ++ /* check for battery failure */ ++ if (sr & X1205_SR_RTCF) ++ { ++ dev_info(&client->adapter->dev, ++ "%s: Clock had a power failure, you must set the date.\n", ++ DRIVER_NAME); + +- /* read date registers */ +- if ((i2c_transfer(client->adapter, &msgs[2], 2)) != 2) { +- dev_err(&client->dev, "%s: read error\n", __FUNCTION__); +- return -EIO; +- } +- +- dev_dbg(&client->dev, +- "%s: raw read data - sec=%02x, min=%02x, hr=%02x, " +- "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n", +- __FUNCTION__, +- buf[0], buf[1], buf[2], buf[3], +- buf[4], buf[5], buf[6], buf[7]); +- +- tm->tm_sec = BCD2BIN(buf[CCR_SEC]); +- tm->tm_min = BCD2BIN(buf[CCR_MIN]); +- tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */ +- tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); +- tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); +- data->epoch = BCD2BIN(buf[CCR_Y2K]) * 100; +- tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + data->epoch - 1900; +- tm->tm_wday = buf[CCR_WDAY]; ++ return -EINVAL; ++ } + +- dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, " +- "mday=%d, mon=%d, year=%d, wday=%d\n", +- __FUNCTION__, +- tm->tm_sec, tm->tm_min, tm->tm_hour, +- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ dev_dbg(&client->dev, ++ "%s: raw read data - sec-%02x min-%02x hr-%02x" ++ " mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", ++ __FUNCTION__, ++ buf[0], buf[1], buf[2], buf[3], ++ buf[4], buf[5], buf[6], buf[7]); ++ ++ tm->tm_sec = BCD2BIN(buf[CCR_SEC]); ++ tm->tm_min = BCD2BIN(buf[CCR_MIN]); ++ buf[CCR_HOUR] &= ~X1205_HR_MIL; ++ tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); /* hr is 0-23 */ ++ tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); ++ tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); ++ xdata->epoch = BCD2BIN(buf[CCR_Y2K]) * 100; ++ tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + xdata->epoch - EPOCH_1900; ++ tm->tm_wday = buf[CCR_WDAY]; ++ ++ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, " ++ "mday=%d, mon=%d, year=%d, wday=%d\n", ++ __FUNCTION__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); + ++ } else { ++ dev_dbg(&client->dev, "%s: read error\n", __FUNCTION__); ++ return -EIO; ++ } ++ + return 0; + } + ++ + static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, + int datetoo, u8 reg_base) + { + int i, err, xfer; + +- unsigned char buf[8]; ++ static unsigned char wel[3] = { 0, X1205_REG_SR, ++ X1205_SR_WEL }; + +- static const unsigned char wel[3] = { 0, X1205_REG_SR, +- X1205_SR_WEL }; + +- static const unsigned char rwel[3] = { 0, X1205_REG_SR, +- X1205_SR_WEL | X1205_SR_RWEL }; ++ static unsigned char rwel[3] = { 0, X1205_REG_SR, ++ X1205_SR_WEL | X1205_SR_RWEL }; + +- static const unsigned char diswe[3] = { 0, X1205_REG_SR, 0 }; ++ static unsigned char diswe[3] = { 0, X1205_REG_SR, 0 }; + +- struct x1205_data *data = i2c_get_clientdata(client); ++ static unsigned char data[3] = { 0, }; ++ static unsigned char buf[8]; ++ ++ struct x1205_data *xdata = i2c_get_clientdata(client); + +- /* check if all values in the tm struct are correct */ + if ((err = x1205_validate_tm(tm)) < 0) + return err; + +@@ -258,124 +200,52 @@ static int x1205_set_datetime(struct i2c + tm->tm_sec, tm->tm_min, tm->tm_hour, + tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); + +- buf[CCR_SEC] = BIN2BCD(tm->tm_sec); +- buf[CCR_MIN] = BIN2BCD(tm->tm_min); + +- /* set hour and 24hr bit */ ++ buf[CCR_SEC] = BIN2BCD(tm->tm_sec); ++ buf[CCR_MIN] = BIN2BCD(tm->tm_min); ++ ++ /* Set 24HR format */ + buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_HR_MIL; + +- /* should we also set the date? */ +- if (datetoo) { +- buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); ++ if (datetoo == X1205_DATETOO) { ++ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); + + /* month, 0 - 11 */ +- buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); ++ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); /* input is 0-11 */ + + /* year, since 1900 */ +- buf[CCR_YEAR] = BIN2BCD(tm->tm_year + 1900 - data->epoch); +- buf[CCR_WDAY] = tm->tm_wday & 0x07; +- buf[CCR_Y2K] = BIN2BCD(data->epoch / 100); ++ buf[CCR_YEAR] = BIN2BCD((tm->tm_year + EPOCH_1900 - xdata->epoch)); ++ buf[CCR_WDAY] = tm->tm_wday & 7; ++ buf[CCR_Y2K] = BIN2BCD(xdata->epoch / 100); + } + +- /* this sequence is required to unlock the chip */ + xfer = i2c_master_send(client, wel, 3); +- if (xfer != 3) { +- dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer); ++ dev_dbg(&client->dev, "%s: wen - %x\n", __FUNCTION__, xfer); ++ if (xfer != 3) + return -EIO; +- } + + xfer = i2c_master_send(client, rwel, 3); +- if (xfer != 3) { +- dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer); ++ dev_dbg(&client->dev, "%s: wenb - %x\n", __FUNCTION__, xfer); ++ if (xfer != 3) + return -EIO; +- } + +- /* write register's data */ +- for (i = 0; i < (datetoo ? 8 : 3); i++) { +- unsigned char rdata[3] = { 0, reg_base + i, buf[i] }; +- +- xfer = i2c_master_send(client, rdata, 3); +- if (xfer != 3) { +- dev_err(&client->dev, +- "%s: xfer=%d addr=%02x, data=%02x\n", +- __FUNCTION__, +- xfer, rdata[1], rdata[2]); ++ for (i = 0; i < 8; i++) { ++ data[1] = i + reg_base; ++ data[2] = buf[i]; ++ xfer = i2c_master_send(client, data, 3); ++ ++ dev_dbg(&client->dev, "%s: xfer %d addr, %02x, data %02x\n", ++ __FUNCTION__, ++ xfer, data[1], data[2]); ++ ++ if (xfer != 3) + return -EIO; +- } + }; + +- /* disable further writes */ + xfer = i2c_master_send(client, diswe, 3); +- if (xfer != 3) { +- dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer); +- return -EIO; +- } +- +- return 0; +-} +- +-static int x1205_get_dtrim(struct i2c_client *client, int *trim) +-{ +- unsigned char dtr; +- static unsigned char dtr_addr[2] = { 0, X1205_REG_DTR }; +- +- struct i2c_msg msgs[] = { +- { client->addr, 0, 2, dtr_addr }, /* setup read ptr */ +- { client->addr, I2C_M_RD, 1, &dtr }, /* read dtr */ +- }; +- +- /* read dtr register */ +- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { +- dev_err(&client->dev, "%s: read error\n", __FUNCTION__); +- return -EIO; +- } +- +- dev_dbg(&client->dev, "%s: raw dtr=%x\n", __FUNCTION__, dtr); +- +- *trim = 0; +- +- if (dtr & X1205_DTR_DTR0) +- *trim += 20; +- +- if (dtr & X1205_DTR_DTR1) +- *trim += 10; +- +- if (dtr & X1205_DTR_DTR2) +- *trim = -*trim; +- +- return 0; +-} +- +-static int x1205_get_atrim(struct i2c_client *client, int *trim) +-{ +- s8 atr; +- static unsigned char atr_addr[2] = { 0, X1205_REG_ATR }; +- +- struct i2c_msg msgs[] = { +- { client->addr, 0, 2, atr_addr }, /* setup read ptr */ +- { client->addr, I2C_M_RD, 1, &atr }, /* read atr */ +- }; +- +- /* read atr register */ +- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) { +- dev_err(&client->dev, "%s: read error\n", __FUNCTION__); +- return -EIO; +- } +- +- dev_dbg(&client->dev, "%s: raw atr=%x\n", __FUNCTION__, atr); +- +- /* atr is a two's complement value on 6 bits, +- * perform sign extension. The formula is +- * Catr = (atr * 0.25pF) + 11.00pF. +- */ +- if (atr & 0x20) +- atr |= 0xC0; +- +- dev_dbg(&client->dev, "%s: raw atr=%x (%d)\n", __FUNCTION__, atr, atr); +- +- *trim = (atr * 250) + 11000; +- +- dev_dbg(&client->dev, "%s: real=%d\n", __FUNCTION__, *trim); ++ dev_dbg(&client->dev, "%s: wdis - %x\n", __FUNCTION__, xfer); ++ if (xfer != 3) ++ return -EIO; + + return 0; + } +@@ -386,24 +256,28 @@ static int x1205_hctosys(struct i2c_clie + + struct rtc_time tm; + struct timespec tv; ++ + + err = x1205_command(client, X1205_CMD_GETDATETIME, &tm); + +- if (err) { +- dev_err(&client->dev, +- "Unable to set the system clock\n"); ++ if (err) ++ { ++ dev_info(&client->adapter->dev, ++ "%s: Unable to set the system clock\n", ++ DRIVER_NAME); ++ + return err; ++ + } + +- /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary +- * whether it stores the most close value or the value with partial +- * seconds truncated. However, it is important that we use it to store +- * the truncated value. This is because otherwise it is necessary, +- * in an rtc sync function, to read both xtime.tv_sec and +- * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read +- * of >32bits is not possible. So storing the most close value would +- * slow down the sync API. So here we have the truncated value and +- * the best guess is to add 0.5s. ++ /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary whether ++ * it stores the most close value or the value with partial seconds ++ * truncated, however it is important for x1205_sync_rtc that it be ++ * defined to store the truncated value. This is because otherwise it ++ * is necessary to read both xtime.tv_sec and xtime.tv_nsec in the ++ * sync function, and atomic reads of >32bits on ARM are not possible. ++ * So storing the most close value would slow down the sync API. So ++ * Here we have the truncated value and the best guess is to add 0.5s + */ + + tv.tv_nsec = NSEC_PER_SEC >> 1; +@@ -413,15 +287,16 @@ static int x1205_hctosys(struct i2c_clie + * the month to be in the range 1-12 + */ + +- tv.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1, ++ tv.tv_sec = mktime(tm.tm_year + EPOCH_1900, tm.tm_mon + 1, + tm.tm_mday, tm.tm_hour, + tm.tm_min, tm.tm_sec); + + do_settimeofday(&tv); + +- dev_info(&client->dev, +- "setting the system clock to %d-%d-%d %d:%d:%d\n", +- tm.tm_year + 1900, tm.tm_mon + 1, ++ dev_info(&client->adapter->dev, ++ "%s: Setting the system clock to %d-%d-%d %d:%d:%d\n", ++ DRIVER_NAME, ++ tm.tm_year + EPOCH_1900, tm.tm_mon + 1, + tm.tm_mday, tm.tm_hour, tm.tm_min, + tm.tm_sec); + +@@ -432,7 +307,7 @@ struct x1205_limit + { + unsigned char reg; + unsigned char mask; +- unsigned char min; ++ unsigned char min; + unsigned char max; + }; + +@@ -443,16 +318,34 @@ static int x1205_validate_client(struct + /* Probe array. We will read the register at the specified + * address and check if the given bits are zero. + */ +- static const unsigned char probe_zero_pattern[] = { +- /* register, mask */ ++ ++ const unsigned char probe_zero_pattern[] = { ++ + X1205_REG_SR, 0x18, ++ X1205_REG_Y2K, 0xC6, ++ X1205_REG_DW, 0xF8, ++ X1205_REG_MO, 0xE0, ++ X1205_REG_DT, 0xC0, ++ X1205_REG_HR, 0x40, ++ X1205_REG_MN, 0x80, ++ X1205_REG_SC, 0x80, + X1205_REG_DTR, 0xF8, + X1205_REG_ATR, 0xC0, + X1205_REG_INT, 0x18, + X1205_REG_0, 0xFF, ++ X1205_REG_Y2K1, 0xC6, ++ X1205_REG_DWA1, 0x78, ++ X1205_REG_MOA1, 0x60, ++ X1205_REG_DTA1, 0x40, ++ X1205_REG_HRA1, 0x40, ++ X1205_REG_Y2K0, 0xC6, ++ X1205_REG_DWA0, 0x78, ++ X1205_REG_MOA0, 0x60, ++ X1205_REG_DTA0, 0x40, ++ X1205_REG_HRA0, 0x40, + }; + +- static const struct x1205_limit probe_limits_pattern[] = { ++ const struct x1205_limit probe_limits_pattern[] = { + /* register, mask, min, max */ + { X1205_REG_Y2K, 0xFF, 19, 20 }, + { X1205_REG_DW, 0xFF, 0, 6 }, +@@ -463,23 +356,41 @@ static int x1205_validate_client(struct + { X1205_REG_MN, 0xFF, 0, 59 }, + { X1205_REG_SC, 0xFF, 0, 59 }, + { X1205_REG_Y2K1, 0xFF, 19, 20 }, ++ { X1205_REG_DWA1, 0x7F, 0, 6 }, ++ { X1205_REG_MOA1, 0x7F, 0, 12 }, ++ { X1205_REG_DTA1, 0x7F, 0, 31 }, ++ { X1205_REG_HRA1, 0x7F, 0, 23 }, ++ { X1205_REG_MNA1, 0x7F, 0, 59 }, ++ { X1205_REG_SCA1, 0x7F, 0, 59 }, + { X1205_REG_Y2K0, 0xFF, 19, 20 }, ++ { X1205_REG_DWA0, 0x7F, 0, 6 }, ++ { X1205_REG_MOA0, 0x7F, 0, 12 }, ++ { X1205_REG_DTA0, 0x7F, 0, 31 }, ++ { X1205_REG_HRA0, 0x7F, 0, 23 }, ++ { X1205_REG_MNA0, 0x7F, 0, 59 }, ++ { X1205_REG_SCA0, 0x7F, 0, 59 }, + }; + + /* check that registers have bits a 0 where expected */ +- for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) { ++ ++ for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) ++ { + unsigned char buf; + +- unsigned char addr[2] = { 0, probe_zero_pattern[i] }; ++ static unsigned char addr[2]; + + struct i2c_msg msgs[2] = { +- { client->addr, 0, 2, addr }, ++ { client->addr, 0, 2, addr }, /* random read */ + { client->addr, I2C_M_RD, 1, &buf }, + }; + ++ addr[0] = 0x00; ++ addr[1] = probe_zero_pattern[i]; ++ + xfer = i2c_transfer(client->adapter, msgs, 2); ++ + if (xfer != 2) { +- dev_err(&client->adapter->dev, ++ dev_dbg(&client->adapter->dev, + "%s: could not read register %x\n", + __FUNCTION__, addr[1]); + +@@ -487,42 +398,47 @@ static int x1205_validate_client(struct + } + + if ((buf & probe_zero_pattern[i+1]) != 0) { +- dev_err(&client->adapter->dev, +- "%s: register=%02x, zero pattern=%d, value=%x\n", ++ dev_dbg(&client->adapter->dev, ++ "%s: register %x, zero pattern %d: %x\n", + __FUNCTION__, addr[1], i, buf); + + return -ENODEV; + } + } + +- /* check limits (only registers with bcd values) */ +- for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) { +- unsigned char reg, value; ++ /* check limits */ + +- unsigned char addr[2] = { 0, probe_limits_pattern[i].reg }; ++ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) ++ { ++ unsigned char buf, val; ++ ++ static unsigned char addr[2]; + + struct i2c_msg msgs[2] = { +- { client->addr, 0, 2, addr }, +- { client->addr, I2C_M_RD, 1, ® }, ++ { client->addr, 0, 2, addr }, /* random read */ ++ { client->addr, I2C_M_RD, 1, &buf }, + }; + ++ addr[0] = 0x00; ++ addr[1] = probe_limits_pattern[i].reg; ++ + xfer = i2c_transfer(client->adapter, msgs, 2); + + if (xfer != 2) { +- dev_err(&client->adapter->dev, ++ dev_dbg(&client->adapter->dev, + "%s: could not read register %x\n", + __FUNCTION__, addr[1]); + + return -EIO; + } + +- value = BCD2BIN(reg & probe_limits_pattern[i].mask); ++ val = BCD2BIN(buf & probe_limits_pattern[i].mask); + +- if (value > probe_limits_pattern[i].max || +- value < probe_limits_pattern[i].min) { ++ if (val > probe_limits_pattern[i].max || ++ val < probe_limits_pattern[i].min) { + dev_dbg(&client->adapter->dev, +- "%s: register=%x, lim pattern=%d, value=%d\n", +- __FUNCTION__, addr[1], i, value); ++ "%s: register %x, lim pattern %d: %d\n", ++ __FUNCTION__, addr[1], i, val); + + return -ENODEV; + } +@@ -538,79 +454,66 @@ static int x1205_attach(struct i2c_adapt + return i2c_probe(adapter, &addr_data, x1205_probe); + } + +-int x1205_direct_attach(int adapter_id, +- struct i2c_client_address_data *address_data) +-{ +- int err; +- struct i2c_adapter *adapter = i2c_get_adapter(adapter_id); +- +- if (adapter) { +- err = i2c_probe(adapter, +- address_data, x1205_probe); +- +- i2c_put_adapter(adapter); +- +- return err; +- } +- +- return -ENODEV; +-} +- + static int x1205_probe(struct i2c_adapter *adapter, int address, int kind) + { +- struct i2c_client *client; +- struct x1205_data *data; ++ struct i2c_client *new_client; ++ struct x1205_data *xdata; + + int err = 0; + + dev_dbg(&adapter->dev, "%s\n", __FUNCTION__); + +- if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) { +- err = -ENODEV; +- goto exit; +- } +- +- if (!(data = kzalloc(sizeof(struct x1205_data), GFP_KERNEL))) { ++ if (!(xdata = kmalloc(sizeof(struct x1205_data), GFP_KERNEL))) { + err = -ENOMEM; + goto exit; + } + +- /* Initialize our structures */ +- data->epoch = 2000; ++ /* Fill our data structure */ + +- client = &data->client; +- client->addr = address; +- client->driver = &x1205_driver; +- client->adapter = adapter; ++ memset(xdata, 0, sizeof(struct x1205_data)); + +- strlcpy(client->name, "x1205", I2C_NAME_SIZE); ++ xdata->epoch = 2000; ++ ++ ++ /* Prepare i2c_client structure */ ++ ++ new_client = &xdata->client; ++ i2c_set_clientdata(new_client, xdata); ++ new_client->addr = address; ++ new_client->adapter = adapter; ++ new_client->driver = &x1205_driver; ++ new_client->flags = 0; ++ ++ strlcpy(new_client->name, "x1205", I2C_NAME_SIZE); + +- i2c_set_clientdata(client, data); + + /* Verify the chip is really an X1205 */ +- if (kind < 0) { +- if (x1205_validate_client(client) < 0) { ++ ++ if (kind < 0) ++ { ++ if (x1205_validate_client(new_client) < 0) { + err = -ENODEV; + goto exit_kfree; + } + } + + /* Inform the i2c layer */ +- if ((err = i2c_attach_client(client))) ++ if ((err = i2c_attach_client(new_client))) + goto exit_kfree; + +- list_add(&data->list, &x1205_clients); ++ list_add(&xdata->list, &x1205_clients); + +- dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n"); ++ dev_info(&adapter->dev, "%s: Chip found, driver " DRIVER_VERSION "\n", ++ DRIVER_NAME); + +- /* If requested, set the system time */ ++ /* If requested, se the system time */ + if (hctosys) +- x1205_hctosys(client); ++ x1205_hctosys(new_client); + + return 0; + + exit_kfree: +- kfree(data); ++ kfree(xdata); + + exit: + return err; +@@ -620,23 +523,44 @@ static int x1205_detach(struct i2c_clien + { + int err; + struct x1205_data *data = i2c_get_clientdata(client); +- ++ + dev_dbg(&client->dev, "%s\n", __FUNCTION__); + + if ((err = i2c_detach_client(client))) + return err; + + list_del(&data->list); +- + kfree(data); ++ return 0; ++} ++ ++/* make sure the rtc_time values are in bounds */ ++static int x1205_validate_tm(struct rtc_time *tm) ++{ ++ tm->tm_year += 1900; ++ ++ if (tm->tm_year < EPOCH_1970) ++ return -EINVAL; ++ ++ if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) ++ return -EINVAL; ++ ++ if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) && ++ ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400))))) ++ return -EINVAL; ++ ++ if ((tm->tm_year -= EPOCH_1900) > 255) ++ return -EINVAL; ++ ++ if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) ++ return -EINVAL; + + return 0; + } + +-static int x1205_command(struct i2c_client *client, unsigned int cmd, +- void *param) ++static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm) + { +- if (param == NULL) ++ if (client == NULL || tm == NULL) + return -EINVAL; + + if (!capable(CAP_SYS_TIME)) +@@ -646,34 +570,26 @@ static int x1205_command(struct i2c_clie + + switch (cmd) { + case X1205_CMD_GETDATETIME: +- return x1205_get_datetime(client, param, X1205_CCR_BASE); ++ return x1205_get_datetime(client, tm, X1205_CCR_BASE); + + case X1205_CMD_SETTIME: +- return x1205_set_datetime(client, param, 0, +- X1205_CCR_BASE); ++ return x1205_set_datetime(client, tm, X1205_NODATE, X1205_CCR_BASE); + + case X1205_CMD_SETDATETIME: +- return x1205_set_datetime(client, param, 1, +- X1205_CCR_BASE); ++ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_CCR_BASE); + + case X1205_CMD_GETALARM: +- return x1205_get_datetime(client, param, X1205_ALM0_BASE); ++ return x1205_get_datetime(client, tm, X1205_ALM0_BASE); + + case X1205_CMD_SETALARM: +- return x1205_set_datetime(client, param, 1, +- X1205_ALM0_BASE); +- +- case X1205_CMD_GETDTRIM: +- return x1205_get_dtrim(client, param); +- +- case X1205_CMD_GETATRIM: +- return x1205_get_atrim(client, param); ++ return x1205_set_datetime(client, tm, X1205_DATETOO, X1205_ALM0_BASE); + + default: + return -EINVAL; + } + } + ++ + static int __init x1205_init(void) + { + return i2c_add_driver(&x1205_driver); +@@ -689,10 +605,8 @@ MODULE_AUTHOR( + "Alessandro Zummo <a.zummo@towertech.it>"); + MODULE_DESCRIPTION("Xicor X1205 RTC driver"); + MODULE_LICENSE("GPL"); +-MODULE_VERSION(DRV_VERSION); + + EXPORT_SYMBOL_GPL(x1205_do_command); +-EXPORT_SYMBOL_GPL(x1205_direct_attach); + + module_init(x1205_init); + module_exit(x1205_exit); +--- linux-2.6.14/include/linux/x1205.h.orig 2005-11-07 22:38:42.196252187 -0800 ++++ linux-2.6.14/include/linux/x1205.h 2005-11-07 22:42:54.960157617 -0800 +@@ -1,31 +1,67 @@ +-/* +- * x1205.h - defines for drivers/i2c/chips/x1205.c +- * Copyright 2004 Karen Spearel +- * Copyright 2005 Alessandro Zummo +- * +- * 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. +- */ +- +-#ifndef __LINUX_X1205_H__ +-#define __LINUX_X1205_H__ + + /* commands */ + +-#define X1205_CMD_GETDATETIME 0 +-#define X1205_CMD_SETTIME 1 +-#define X1205_CMD_SETDATETIME 2 ++#define X1205_CMD_GETDATETIME 0 ++#define X1205_CMD_SETTIME 1 ++#define X1205_CMD_SETDATETIME 2 + #define X1205_CMD_GETALARM 3 + #define X1205_CMD_SETALARM 4 +-#define X1205_CMD_GETDTRIM 5 +-#define X1205_CMD_SETDTRIM 6 +-#define X1205_CMD_GETATRIM 7 +-#define X1205_CMD_SETATRIM 8 ++ ++/* flags */ ++ ++#define X1205_NODATE 0 ++#define X1205_DATETOO 1 ++ ++/* offsets into read buf - add 2 for write buf */ ++ ++#define CCR_SEC 0 ++#define CCR_MIN 1 ++#define CCR_HOUR 2 ++#define CCR_MDAY 3 ++#define CCR_MONTH 4 ++#define CCR_YEAR 5 ++#define CCR_WDAY 6 ++#define CCR_Y2K 7 ++ ++#define X1205_REG_SR 0x3F /* status register */ ++#define X1205_REG_Y2K 0x37 ++#define X1205_REG_DW 0x36 ++#define X1205_REG_YR 0x35 ++#define X1205_REG_MO 0x34 ++#define X1205_REG_DT 0x33 ++#define X1205_REG_HR 0x32 ++#define X1205_REG_MN 0x31 ++#define X1205_REG_SC 0x30 ++#define X1205_REG_DTR 0x13 ++#define X1205_REG_ATR 0x12 ++#define X1205_REG_INT 0x11 ++#define X1205_REG_0 0x10 ++#define X1205_REG_Y2K1 0x0F ++#define X1205_REG_DWA1 0x0E ++#define X1205_REG_YRA1 0x0D ++#define X1205_REG_MOA1 0x0C ++#define X1205_REG_DTA1 0x0B ++#define X1205_REG_HRA1 0x0A ++#define X1205_REG_MNA1 0x09 ++#define X1205_REG_SCA1 0x08 ++#define X1205_REG_Y2K0 0x07 ++#define X1205_REG_DWA0 0x06 ++#define X1205_REG_YRA0 0x05 ++#define X1205_REG_MOA0 0x04 ++#define X1205_REG_DTA0 0x03 ++#define X1205_REG_HRA0 0x02 ++#define X1205_REG_MNA0 0x01 ++#define X1205_REG_SCA0 0x00 ++ ++#define X1205_I2C_BUS_ADDR 0x6f /* hardwired into x1205 */ ++#define X1205_CCR_BASE 0x30 /* Base address of CCR */ ++#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */ ++ ++#define X1205_SR_RTCF 0x01 ++#define X1205_SR_WEL 0x02 /* Write Enable Latch bit */ ++#define X1205_SR_RWEL 0x04 /* Register Write Enable Bit */ ++ ++#define X1205_HR_MIL 0x80 /* set in ccr.hour for 24 hr mode */ + + extern int x1205_do_command(unsigned int cmd, void *arg); +-extern int x1205_direct_attach(int adapter_id, +- struct i2c_client_address_data *address_data); + +-#endif /* __LINUX_X1205_H__ */ diff --git a/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch b/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch new file mode 100644 index 0000000000..116f95b2f7 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.14-mm/80-nslu2-class-device-create.patch @@ -0,0 +1,20 @@ +--- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-io.c.orig 2005-11-07 22:26:36.010556202 -0800 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-io.c 2005-11-07 22:27:15.921067613 -0800 +@@ -504,7 +504,7 @@ static int __init n2iom_init(void) + return -EBUSY; + } + else { +- class_device_create(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds"); ++ class_device_create(n2lm_class, NULL, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds"); + } + #endif + +@@ -513,7 +513,7 @@ static int __init n2iom_init(void) + return -EBUSY; + } + else { +- class_device_create(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer"); ++ class_device_create(n2lm_class, NULL, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer"); + } + + return 0; diff --git a/packages/linux/nslu2-kernel/2.6.14-rc5-mm1/defconfig b/packages/linux/nslu2-kernel/2.6.14-mm/defconfig index a0de10bc91..ecb422f0d7 100644 --- a/packages/linux/nslu2-kernel/2.6.14-rc5-mm1/defconfig +++ b/packages/linux/nslu2-kernel/2.6.14-mm/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.14-rc5-mm1 -# Wed Oct 26 21:32:12 2005 +# Linux kernel version: 2.6.14 +# Mon Nov 7 22:59:39 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -46,8 +46,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 CONFIG_CC_ALIGN_LABELS=0 CONFIG_CC_ALIGN_LOOPS=0 CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=1 +# CONFIG_SLOB is not set # # Loadable module support @@ -82,6 +84,7 @@ CONFIG_ARCH_IXP4XX=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set # CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_AAEC2000 is not set @@ -342,6 +345,10 @@ CONFIG_IPDDP_DECAP=y # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# # CONFIG_NET_SCHED is not set CONFIG_NET_CLS_ROUTE=y @@ -929,7 +936,7 @@ CONFIG_SENSORS_EEPROM=y # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_RTC8564 is not set # CONFIG_SENSORS_MAX6875 is not set -# CONFIG_RTC_X1205_I2C is not set +CONFIG_SENSORS_X1205=y # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -1016,6 +1023,7 @@ CONFIG_VIDEO_DPC=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_CX88=m +# CONFIG_VIDEO_EM28XX is not set CONFIG_VIDEO_OVCAMCHIP=m # @@ -1189,6 +1197,7 @@ CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_LIBUSUAL is not set # # USB Input Devices @@ -1286,6 +1295,7 @@ CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m +# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_SERIAL_HP4X is not set CONFIG_USB_SERIAL_SAFE=m diff --git a/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch b/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch new file mode 100644 index 0000000000..4406d17857 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.14/19-jffs2-force-be.patch @@ -0,0 +1,13 @@ +--- linux-2.6.14.1/fs/jffs2/nodelist.h.orig 2005-11-09 23:12:29.641449728 -0800 ++++ linux-2.6.14.1/fs/jffs2/nodelist.h 2005-11-09 23:13:19.228570049 -0800 +@@ -44,7 +44,9 @@ + #define D2(x) + #endif + +-#define JFFS2_NATIVE_ENDIAN ++#undef JFFS2_NATIVE_ENDIAN ++#define JFFS2_BIG_ENDIAN 1 ++#undef JFFS2_LITTLE_ENDIAN + + /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from + whatever OS we're actually running on here too. */ diff --git a/packages/linux/nslu2-kernel/2.6.14/20-timer.patch b/packages/linux/nslu2-kernel/2.6.14/20-timer.patch index 5d78ce25eb..3d4a03f616 100644 --- a/packages/linux/nslu2-kernel/2.6.14/20-timer.patch +++ b/packages/linux/nslu2-kernel/2.6.14/20-timer.patch @@ -1,16 +1,285 @@ -diff -urN linux-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h ---- linux-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h 2005-09-17 12:42:45.000000000 +0200 -+++ nslu2-2.6.13.1/include/asm-arm/arch-ixp4xx/timex.h 2005-09-17 12:15:31.000000000 +0200 -@@ -9,7 +9,12 @@ - * We use IXP425 General purpose timer for our timer needs, it runs at - * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the - * timer register ignores the bottom 2 bits of the LATCH value. -+ * The NSLU2 has a 33.00MHz crystal, so a different FREQ is required. - */ -+#ifdef CONFIG_MACH_NSLU2 -+#define FREQ 66000000 -+#else - #define FREQ 66666666 +--- linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000 +@@ -239,36 +239,165 @@ void __init ixp4xx_init_irq(void) + * IXP4xx timer tick + * We use OS timer1 on the CPU for the timer tick and the timestamp + * counter as a source of real clock ticks to account for missed jiffies. ++ * ++ * 'CLOCK_TICK_RATE' is the nominal number of internal ticks per second, ++ * this is significantly greater than the actual number on any ixp4xx ++ * board. Neither this nor 'LATCH' are required by this code because ++ * the only requirement is to generate HZ timer_tick calls per second. + *************************************************************************/ ++#if TICK_NSEC * HZ != 1000000000 ++ /* This will cause the jiffies to drift unnecessarily. */ ++# error CLOCK_TICK_RATE should be a multiple of HZ for this code ++#endif ++ ++/* These are the control registers for the interrupt handler, they must ++ * only be read and written by the interrupt handler and by the init ++ * method (which sets them to 0). ++ */ ++static volatile u32 last_timer_time; ++static volatile int accumulated_error; ++ ++/* Most ixp4xx boards have 66.6666MHz crystals, so default to this, reset ++ * this from the board level code if required. The following variables ++ * must be *written* only by set_board_tick_rate ++ */ ++static u32 board_tick_rate; ++static u32 board_tick_per_1000; /* board_tick_rate/1000 */ ++static u32 timer_count; ++ ++/* The following symbol may be written to change the current tick rate, ++ * it is read by the interrupt handler and used to reload the timer. ++ * The 'real' value (the one in use) is 'board_tick_rate' above. ++ * NOTE: this can be tweaked to match the actual crystal on a particular ++ * machine. ++ */ ++volatile u32 ixp4xx_board_tick_rate = 66666600; ++EXPORT_SYMBOL(ixp4xx_board_tick_rate); ++ ++/* The set API may run asynchronously in the presence of interrupts, ++ * everything it does it is both atomic and complete (notice that it ++ * doesn't change any of the 'volatile' values). The mathematics in ++ * here require the following values. Changing the board tick rate ++ * implies an unknown error in the current timestamp tick count. ++ */ ++#if IXP4XX_OST_RELOAD_MASK != 3 || IXP4XX_OST_ENABLE != 1 ++# error unexpected value for timer reload mask +#endif - #define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) ++static void set_board_tick_rate(u32 rate) { ++ u32 reload; ++ ++ /* Store the two effectively informational rate values, the ++ * error calculation is (rate - count*HZ) (above), and rate ++ * is changed first, this can cause a temporary error which ++ * will be corrected on the next interrupt. ++ */ ++ board_tick_rate = rate; ++ board_tick_per_1000 = (rate+500)/1000; ++ ++ /* Calculate the correct value to load into the timer countdown ++ * register, the low two bits must be b01 (to enable the timer). ++ * Select the top bits to be as close to the desired value as ++ * possible. ++ * ++ * First find the best value, regardless of the low two bits - ++ * this is the value used in the interrupt calculation even though ++ * it cannot necessarily be set into the register. ++ */ ++ timer_count = (rate + (HZ/2))/HZ; ++ ++ /* Now the timer_ticks are being generated at this rate, calculate ++ * an appropriate value for the register. This stores a 30 bit ++ * value which gives a period of 4*x+1, we want: ++ * ++ * 4*x+1 = board_tick_rate/HZ ++ * ++ * This needs to be rounded to the closest 4*HZ value: ++ * ++ * x = ((board_tick_rate-HZ) + (4*HZ)/2) / 4*HZ ++ * x = (board_tick_rate+HZ) / (4*HZ); ++ */ ++ reload = (board_tick_rate + HZ) / HZ; ++ reload = (reload & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; ++ *IXP4XX_OSRT1 = reload; + +-static unsigned volatile last_jiffy_time; ++ /* If the clock is drifing, look in syslog: */ ++ printk(KERN_INFO "IXP4xx: FREQ=%d COUNT=%d\n", rate, reload); ++} + +-#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) ++/* This returns the time in timer ticks since the 'last_timer_time' ++ * recorded above. Use this to avoid arithmetic errors because of ++ * the overflow when the timer wraps. ++ */ ++static inline u32 ixp4xx_timer_delta(void) ++{ ++ return *IXP4XX_OSTS - last_timer_time; ++} + + /* IRQs are disabled before entering here from do_gettimeofday() */ + static unsigned long ixp4xx_gettimeoffset(void) + { +- u32 elapsed; +- +- elapsed = *IXP4XX_OSTS - last_jiffy_time; ++ /* Return the offset of the current time from the last time ++ * timer tick in microseconds. This is only used for the ++ * gettimeofday call. ++ * ++ * The result of this API is at most about 20000 (for a 50Hz ++ * HZ - 20000 uS/tick), the input delta is at most about ++ * 1.3M - 21 bits. ++ */ ++ u32 delta = ixp4xx_timer_delta(); /* About 21 bits max */ ++ /* return delta * 1000000 / board_tick_rate; */ ++ return (delta * 1000 + board_tick_per_1000/2) / board_tick_per_1000; ++} + +- return elapsed / CLOCK_TICKS_PER_USEC; ++/* This is the correct adjustment to the counter to compensate for an ++ * error iff timer_count-1 <= exact_count <= timer_count+1 ++ */ ++static inline int adjustment(int error) { ++ if (error >= HZ) ++ return 1; ++ else if (error <= -HZ) ++ return -1; ++ return 0; + } + + static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) + { ++ u32 rate; ++ u32 count; ++ int error; ++ + write_seqlock(&xtime_lock); + + /* Clear Pending Interrupt by writing '1' to it */ + *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND; + ++ /* If the board tick rate has been changed update the cached ++ * value. ++ */ ++ if (ixp4xx_board_tick_rate != board_tick_rate) { ++ set_board_tick_rate(ixp4xx_board_tick_rate); ++ accumulated_error = 0; ++ } ++ + /* + * Catch up with the real idea of time ++ * ++ * board_tick_rate: actual ixp4xx ticks/second, read-only ++ * accumulated_error: aggregate error/tick * HZ, read/write ++ * timer_count: best ixp4xx ticks per timer_tick, read-only + */ +- while ((*IXP4XX_OSTS - last_jiffy_time) > LATCH) { ++ rate = board_tick_rate; ++ error = accumulated_error; ++ count = timer_count; ++ do { ++ u32 adjusted_count = count + adjustment(error); ++ if (ixp4xx_timer_delta() < adjusted_count) ++ break; + timer_tick(regs); +- last_jiffy_time += LATCH; +- } ++ last_timer_time += adjusted_count; ++ error += rate - adjusted_count*HZ; ++ } while (1); ++ accumulated_error = error; + + write_sequnlock(&xtime_lock); + +@@ -281,17 +410,30 @@ static struct irqaction ixp4xx_timer_irq + .handler = ixp4xx_timer_interrupt, + }; + ++u32 ixp4xx_get_board_tick_rate(void) { ++ return board_tick_rate; ++} ++ ++EXPORT_SYMBOL(ixp4xx_get_board_tick_rate); ++ ++void ixp4xx_set_board_tick_rate(u32 rate) { ++ ixp4xx_board_tick_rate = rate; ++} ++ ++EXPORT_SYMBOL(ixp4xx_set_board_tick_rate); ++ + static void __init ixp4xx_timer_init(void) + { + /* Clear Pending Interrupt by writing '1' to it */ + *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND; + + /* Setup the Timer counter value */ +- *IXP4XX_OSRT1 = (LATCH & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; ++ set_board_tick_rate(ixp4xx_board_tick_rate); + + /* Reset time-stamp counter */ + *IXP4XX_OSTS = 0; +- last_jiffy_time = 0; ++ last_timer_time = 0; ++ accumulated_error = 0; + + /* Connect the interrupt handler and enable the interrupt */ + setup_irq(IRQ_IXP4XX_TIMER1, &ixp4xx_timer_irq); +@@ -337,4 +479,3 @@ void __init ixp4xx_sys_init(void) + ARRAY_SIZE(ixp46x_devices)); + } + } +- +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 +@@ -119,6 +119,11 @@ static void nslu2_power_off(void) + + static void __init nslu2_init(void) + { ++ /* The NSLU2 has a 33MHz crystal on board - 1.01% different ++ * from the typical value. ++ */ ++ ixp4xx_set_board_tick_rate(66000000); ++ + ixp4xx_sys_init(); + + pm_power_off = nslu2_power_off; +--- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 +@@ -51,7 +51,7 @@ static int nslu2_spkr_event(struct input + } + + if (value > 20 && value < 32767) +- count = (NSLU2_FREQ / (value*4)) - 1; ++ count = (ixp4xx_get_board_tick_rate() / (value*4)) - 1; + + spin_lock_irqsave(&beep_lock, flags); + +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 +@@ -38,11 +38,6 @@ + #define NSLU2_PCI_INTD_PIN 8 + + +-/* NSLU2 Timer */ +-#define NSLU2_FREQ 66000000 +-#define NSLU2_CLOCK_TICK_RATE (((NSLU2_FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) +-#define NSLU2_CLOCK_TICKS_PER_USEC ((NSLU2_CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) +- + /* GPIO */ + + #define NSLU2_GPIO0 0 +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000 +@@ -6,10 +6,23 @@ + #include <asm/hardware.h> + + /* +- * We use IXP425 General purpose timer for our timer needs, it runs at +- * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the +- * timer register ignores the bottom 2 bits of the LATCH value. ++ * In linux/timex.h 'LATCH' is defined as CLOCK_TICK_RATE/HZ and ++ * is the number of internal counts per timer interrupt. Thus ++ * CLOCK_TICK_RATE is LATCH*HZ. ++ * ++ * The actual values of these numbers do not matter, because they ++ * are only used to calculate ACTHZ (rate/latch as a 24.8 fixed ++ * point number), so the value here gives a LATCH of 1 and pretty ++ * much guarantees to flush out any off-by-one errors. ++ * ++ * ACTHZ is equal to HZ, because CLOCK_TICK_RATE is a multiple of ++ * HZ, this is checked in the ixp4xx/common.c code. + */ +-#define FREQ 66666666 +-#define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) ++#define CLOCK_TICK_RATE HZ ++/* The following allow the exact board tick rate to be set and ++ * discovered. The value should be exactly twice the frequency ++ * (in Hz) of the onboard crystal. ++ */ ++extern u32 ixp4xx_get_board_tick_rate(void); ++extern void ixp4xx_set_board_tick_rate(u32 new_rate); diff --git a/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch b/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch index 7d15e75ed4..038c71c3b3 100644 --- a/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch +++ b/packages/linux/nslu2-kernel/2.6.14/50-nslu2-arch.patch @@ -1,39 +1,33 @@ ---- linux-2.6.13/arch/arm/boot/compressed/head.S 2005-08-28 16:41:01.000000000 -0700 -+++ linux-2.6.13/arch/arm/boot/compressed/head.S 2005-10-26 15:23:39.646352497 -0700 -@@ -37,6 +37,7 @@ - defined(CONFIG_ARCH_INTEGRATOR) || \ - defined(CONFIG_ARCH_PXA) || \ - defined(CONFIG_ARCH_IXP4XX) || \ -+ defined(CONFIG_MACH_NSLU2) || \ - defined(CONFIG_ARCH_IXP2000) || \ - defined(CONFIG_ARCH_LH7A40X) || \ - defined(CONFIG_ARCH_OMAP) ---- linux-2.6.13/arch/arm/mach-ixp4xx/Kconfig 2005-08-28 16:41:01.000000000 -0700 -+++ linux-2.6.13/arch/arm/mach-ixp4xx/Kconfig 2005-10-26 15:23:39.646352497 -0700 -@@ -43,6 +43,12 @@ config MACH_IXDP465 - IXDP465 Development Platform (Also known as BMP). - For more information on this platform, see <file:Documentation/arm/IXP4xx>. +--- linux-2.6.14/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000 +@@ -8,6 +8,16 @@ menu "Intel IXP4xx Implementation Option -+config MACH_NSLU2 -+ bool "NSLU2" -+ help -+ Say 'Y' here if you want your kernel to support Linksys's -+ NSLU2 NAS device. For more information on this platform, -+ see http://www.nslu2-linux.org + comment "IXP4xx Platforms" - # - # IXCDP1100 is the exact same HW as IXDP425, but with a different machine ---- linux-2.6.13/arch/arm/mach-ixp4xx/Makefile 2005-08-28 16:41:01.000000000 -0700 -+++ linux-2.6.13/arch/arm/mach-ixp4xx/Makefile 2005-10-26 15:23:39.646352497 -0700 ++# This entry is placed on top because otherwise it would have ++# been shown as a submenu. ++config MACH_NSLU2 ++ bool ++ prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715) ++ help ++ Say 'Y' here if you want your kernel to support Linksys's ++ NSLU2 NAS device. For more information on this platform, ++ see http://www.nslu2-linux.org ++ + config ARCH_AVILA + bool "Avila" + help +--- linux-2.6.14/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o +obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o ---- linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-pci.c 2005-10-26 15:19:43.171472071 -0700 -+++ linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-pci.c 2005-10-26 15:23:39.646352497 -0700 -@@ -0,0 +1,78 @@ +--- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-pci.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-pci.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,77 @@ +/* + * arch/arm/mach-ixp4xx/nslu2-pci.c + * @@ -87,8 +81,7 @@ + + if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV && + pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) { -+ irq = pci_irq_table[ -+ (slot + pin - 2) % NSLU2_PCI_IRQ_LINES]; ++ irq = pci_irq_table[(slot + pin - 2) % NSLU2_PCI_IRQ_LINES]; + } + + return irq; @@ -112,9 +105,9 @@ +} + +subsys_initcall(nslu2_pci_init); ---- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 2005-09-06 00:17:15.000000000 -0700 -+++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 2005-10-28 15:50:43.554157030 -0700 -@@ -0,0 +1,94 @@ +--- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-power.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,92 @@ +/* + * arch/arm/mach-ixp4xx/nslu2-power.c + * @@ -122,7 +115,7 @@ + * + * Copyright (C) 2005 Tower Technologies + * -+ * based on nslu2-io.c ++ * based on nslu2-io.c + * Copyright (C) 2004 Karen Spearel + * + * Author: Alessandro Zummo <a.zummo@towertech.it> @@ -166,8 +159,6 @@ + if (!(machine_is_nslu2())) + return 0; + -+ printk(KERN_INFO "NSLU2: power/reset\n"); -+ + *IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */ + + set_irq_type(NSLU2_RB_IRQ, IRQT_LOW); @@ -191,7 +182,7 @@ + printk(KERN_DEBUG "Power Button IRQ %d not available\n", + NSLU2_PB_IRQ); + -+ return -EIO; ++ return -EIO; + } + + return 0; @@ -209,8 +200,8 @@ +MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); +MODULE_DESCRIPTION("NSLU2 Power/Reset driver"); +MODULE_LICENSE("GPL"); ---- linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-setup.c 2005-10-26 15:19:43.171472071 -0700 -+++ linux-2.6.13/arch/arm/mach-ixp4xx/nslu2-setup.c 2005-10-26 15:23:39.646352497 -0700 +--- linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * arch/arm/mach-ixp4xx/nslu2-setup.c @@ -224,7 +215,7 @@ + * Maintainers: http://www.nslu2-linux.org/ + * + * Fixed missing init_time in MACHINE_START kas11 10/22/04 -+ * Changed to conform to new style __init ixdp425 kas11 10/22/04 ++ * Changed to conform to new style __init ixdp425 kas11 10/22/04 + */ + +#include <linux/kernel.h> @@ -346,8 +337,8 @@ + .timer = &ixp4xx_timer, + .init_machine = nslu2_init, +MACHINE_END ---- linux-2.6.13/include/asm-arm/arch-ixp4xx/hardware.h 2005-10-26 15:19:37.451112111 -0700 -+++ linux-2.6.13/include/asm-arm/arch-ixp4xx/hardware.h 2005-10-26 15:23:39.650352748 -0700 +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/hardware.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/hardware.h 1970-01-01 00:00:00.000000000 +0000 @@ -44,5 +44,6 @@ extern unsigned int processor_id; #include "ixdp425.h" #include "coyote.h" @@ -355,8 +346,8 @@ +#include "nslu2.h" #endif /* _ASM_ARCH_HARDWARE_H */ ---- linux-2.6.13/include/asm-arm/arch-ixp4xx/irqs.h 2005-08-28 16:41:01.000000000 -0700 -+++ linux-2.6.13/include/asm-arm/arch-ixp4xx/irqs.h 2005-10-26 15:23:39.650352748 -0700 +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/irqs.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/irqs.h 1970-01-01 00:00:00.000000000 +0000 @@ -93,4 +93,11 @@ #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 @@ -369,8 +360,8 @@ +#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 + #endif ---- linux-2.6.13/include/asm-arm/arch-ixp4xx/nslu2.h 2005-10-26 15:19:43.175472322 -0700 -+++ linux-2.6.13/include/asm-arm/arch-ixp4xx/nslu2.h 2005-10-26 15:23:39.650352748 -0700 +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * include/asm-arm/arch-ixp4xx/nslu2.h diff --git a/packages/linux/openslug-kernel-2.6.7/.mtn2git_empty b/packages/linux/nslu2-kernel/2.6.15/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/openslug-kernel-2.6.7/.mtn2git_empty +++ b/packages/linux/nslu2-kernel/2.6.15/.mtn2git_empty diff --git a/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch b/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch new file mode 100644 index 0000000000..29b048e27a --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/00-memory-h-page-shift.patch @@ -0,0 +1,10 @@ +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/memory.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/memory.h 1970-01-01 00:00:00.000000000 +0000 +@@ -8,6 +8,7 @@ + #define __ASM_ARCH_MEMORY_H + + #include <asm/sizes.h> ++#include <asm/page.h> + + /* + * Physical DRAM offset. diff --git a/packages/linux/nslu2-kernel/2.6.15/01-i2c-ixp4xx.patch b/packages/linux/nslu2-kernel/2.6.15/01-i2c-ixp4xx.patch new file mode 100644 index 0000000000..16426bdee6 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/01-i2c-ixp4xx.patch @@ -0,0 +1,29 @@ +--- linux-2.6.15/drivers/i2c/busses/i2c-ixp4xx.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/i2c/busses/i2c-ixp4xx.c 1970-01-01 00:00:00.000000000 +0000 +@@ -35,7 +35,7 @@ + + #include <asm/hardware.h> /* Pick up IXP4xx-specific bits */ + +-static struct device_driver ixp4xx_i2c_driver; ++static struct platform_driver ixp4xx_i2c_driver; + + static inline int ixp4xx_scl_pin(void *data) + { +@@ -128,7 +128,7 @@ static int ixp4xx_i2c_probe(struct platf + drv_data->algo_data.timeout = 100; + + drv_data->adapter.id = I2C_HW_B_IXP4XX; +- strlcpy(drv_data->adapter.name, ixp4xx_i2c_driver.name, ++ strlcpy(drv_data->adapter.name, ixp4xx_i2c_driver.driver.name, + I2C_NAME_SIZE); + drv_data->adapter.algo_data = &drv_data->algo_data; + +@@ -140,7 +140,7 @@ static int ixp4xx_i2c_probe(struct platf + gpio_line_set(gpio->sda_pin, 0); + + if ((err = i2c_bit_add_bus(&drv_data->adapter) != 0)) { +- printk(KERN_ERR "ERROR: Could not install %s\n", dev->bus_id); ++ printk(KERN_ERR "ERROR: Could not install %s\n", ixp4xx_i2c_driver.driver.name); + + kfree(drv_data); + return err; diff --git a/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch b/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch new file mode 100644 index 0000000000..edee083e3c --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/10-mtdpart-redboot-fis-byteswap.patch @@ -0,0 +1,44 @@ +On IXP4XX systems the FIS directory is big endian even with a little +endian kernel. This patch recognises the FIS directory on such a +system and byte swaps it to obtain a valid table based on the 'size' +field of the FIS directory (the size field is know to always match the +erase block size on such systems, and probably all systems.) + +--- linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/mtd/redboot.c 1970-01-01 00:00:00.000000000 +0000 +@@ -89,8 +89,34 @@ + i = numslots; + break; + } +- if (!memcmp(buf[i].name, "FIS directory", 14)) ++ if (!memcmp(buf[i].name, "FIS directory", 14)) { ++ /* This is apparently the FIS directory entry for the ++ * FIS directory itself. The FIS directory size is ++ * one erase block, if the buf[i].size field is ++ * swab32(erasesize) then we know we are looking at ++ * a byte swapped FIS directory - swap all the entries! ++ * (NOTE: this is 'size' not 'data_length', size is ++ * the full size of the entry.) ++ */ ++ if (swab32(buf[i].size) == master->erasesize) { ++ int j; ++ for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) { ++ /* The unsigned long fields were written with the ++ * wrong byte sex, name and pad have no byte sex. ++ */ ++# define do_swab32(x) (x) = swab32(x) ++ do_swab32(buf[j].flash_base); ++ do_swab32(buf[j].mem_base); ++ do_swab32(buf[j].size); ++ do_swab32(buf[j].entry_point); ++ do_swab32(buf[j].data_length); ++ do_swab32(buf[j].desc_cksum); ++ do_swab32(buf[j].file_cksum); ++# undef do_swab32 ++ } ++ } + break; ++ } + } + if (i == numslots) { + /* Didn't find it */ diff --git a/packages/linux/nslu2-kernel/2.6.15/19-jffs2-force-be.patch b/packages/linux/nslu2-kernel/2.6.15/19-jffs2-force-be.patch new file mode 100644 index 0000000000..09379031dd --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/19-jffs2-force-be.patch @@ -0,0 +1,13 @@ +--- linux-2.6.15/fs/jffs2/nodelist.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/fs/jffs2/nodelist.h 1970-01-01 00:00:00.000000000 +0000 +@@ -44,7 +44,9 @@ + #define D2(x) + #endif + +-#define JFFS2_NATIVE_ENDIAN ++#undef JFFS2_NATIVE_ENDIAN ++#define JFFS2_BIG_ENDIAN 1 ++#undef JFFS2_LITTLE_ENDIAN + + /* Note we handle mode bits conversion from JFFS2 (i.e. Linux) to/from + whatever OS we're actually running on here too. */ diff --git a/packages/linux/nslu2-kernel/2.6.15/20-timer.patch b/packages/linux/nslu2-kernel/2.6.15/20-timer.patch new file mode 100644 index 0000000000..3d4a03f616 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/20-timer.patch @@ -0,0 +1,285 @@ +--- linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/common.c 1970-01-01 00:00:00.000000000 +0000 +@@ -239,36 +239,165 @@ void __init ixp4xx_init_irq(void) + * IXP4xx timer tick + * We use OS timer1 on the CPU for the timer tick and the timestamp + * counter as a source of real clock ticks to account for missed jiffies. ++ * ++ * 'CLOCK_TICK_RATE' is the nominal number of internal ticks per second, ++ * this is significantly greater than the actual number on any ixp4xx ++ * board. Neither this nor 'LATCH' are required by this code because ++ * the only requirement is to generate HZ timer_tick calls per second. + *************************************************************************/ ++#if TICK_NSEC * HZ != 1000000000 ++ /* This will cause the jiffies to drift unnecessarily. */ ++# error CLOCK_TICK_RATE should be a multiple of HZ for this code ++#endif ++ ++/* These are the control registers for the interrupt handler, they must ++ * only be read and written by the interrupt handler and by the init ++ * method (which sets them to 0). ++ */ ++static volatile u32 last_timer_time; ++static volatile int accumulated_error; ++ ++/* Most ixp4xx boards have 66.6666MHz crystals, so default to this, reset ++ * this from the board level code if required. The following variables ++ * must be *written* only by set_board_tick_rate ++ */ ++static u32 board_tick_rate; ++static u32 board_tick_per_1000; /* board_tick_rate/1000 */ ++static u32 timer_count; ++ ++/* The following symbol may be written to change the current tick rate, ++ * it is read by the interrupt handler and used to reload the timer. ++ * The 'real' value (the one in use) is 'board_tick_rate' above. ++ * NOTE: this can be tweaked to match the actual crystal on a particular ++ * machine. ++ */ ++volatile u32 ixp4xx_board_tick_rate = 66666600; ++EXPORT_SYMBOL(ixp4xx_board_tick_rate); ++ ++/* The set API may run asynchronously in the presence of interrupts, ++ * everything it does it is both atomic and complete (notice that it ++ * doesn't change any of the 'volatile' values). The mathematics in ++ * here require the following values. Changing the board tick rate ++ * implies an unknown error in the current timestamp tick count. ++ */ ++#if IXP4XX_OST_RELOAD_MASK != 3 || IXP4XX_OST_ENABLE != 1 ++# error unexpected value for timer reload mask ++#endif ++static void set_board_tick_rate(u32 rate) { ++ u32 reload; ++ ++ /* Store the two effectively informational rate values, the ++ * error calculation is (rate - count*HZ) (above), and rate ++ * is changed first, this can cause a temporary error which ++ * will be corrected on the next interrupt. ++ */ ++ board_tick_rate = rate; ++ board_tick_per_1000 = (rate+500)/1000; ++ ++ /* Calculate the correct value to load into the timer countdown ++ * register, the low two bits must be b01 (to enable the timer). ++ * Select the top bits to be as close to the desired value as ++ * possible. ++ * ++ * First find the best value, regardless of the low two bits - ++ * this is the value used in the interrupt calculation even though ++ * it cannot necessarily be set into the register. ++ */ ++ timer_count = (rate + (HZ/2))/HZ; ++ ++ /* Now the timer_ticks are being generated at this rate, calculate ++ * an appropriate value for the register. This stores a 30 bit ++ * value which gives a period of 4*x+1, we want: ++ * ++ * 4*x+1 = board_tick_rate/HZ ++ * ++ * This needs to be rounded to the closest 4*HZ value: ++ * ++ * x = ((board_tick_rate-HZ) + (4*HZ)/2) / 4*HZ ++ * x = (board_tick_rate+HZ) / (4*HZ); ++ */ ++ reload = (board_tick_rate + HZ) / HZ; ++ reload = (reload & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; ++ *IXP4XX_OSRT1 = reload; + +-static unsigned volatile last_jiffy_time; ++ /* If the clock is drifing, look in syslog: */ ++ printk(KERN_INFO "IXP4xx: FREQ=%d COUNT=%d\n", rate, reload); ++} + +-#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) ++/* This returns the time in timer ticks since the 'last_timer_time' ++ * recorded above. Use this to avoid arithmetic errors because of ++ * the overflow when the timer wraps. ++ */ ++static inline u32 ixp4xx_timer_delta(void) ++{ ++ return *IXP4XX_OSTS - last_timer_time; ++} + + /* IRQs are disabled before entering here from do_gettimeofday() */ + static unsigned long ixp4xx_gettimeoffset(void) + { +- u32 elapsed; +- +- elapsed = *IXP4XX_OSTS - last_jiffy_time; ++ /* Return the offset of the current time from the last time ++ * timer tick in microseconds. This is only used for the ++ * gettimeofday call. ++ * ++ * The result of this API is at most about 20000 (for a 50Hz ++ * HZ - 20000 uS/tick), the input delta is at most about ++ * 1.3M - 21 bits. ++ */ ++ u32 delta = ixp4xx_timer_delta(); /* About 21 bits max */ ++ /* return delta * 1000000 / board_tick_rate; */ ++ return (delta * 1000 + board_tick_per_1000/2) / board_tick_per_1000; ++} + +- return elapsed / CLOCK_TICKS_PER_USEC; ++/* This is the correct adjustment to the counter to compensate for an ++ * error iff timer_count-1 <= exact_count <= timer_count+1 ++ */ ++static inline int adjustment(int error) { ++ if (error >= HZ) ++ return 1; ++ else if (error <= -HZ) ++ return -1; ++ return 0; + } + + static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) + { ++ u32 rate; ++ u32 count; ++ int error; ++ + write_seqlock(&xtime_lock); + + /* Clear Pending Interrupt by writing '1' to it */ + *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND; + ++ /* If the board tick rate has been changed update the cached ++ * value. ++ */ ++ if (ixp4xx_board_tick_rate != board_tick_rate) { ++ set_board_tick_rate(ixp4xx_board_tick_rate); ++ accumulated_error = 0; ++ } ++ + /* + * Catch up with the real idea of time ++ * ++ * board_tick_rate: actual ixp4xx ticks/second, read-only ++ * accumulated_error: aggregate error/tick * HZ, read/write ++ * timer_count: best ixp4xx ticks per timer_tick, read-only + */ +- while ((*IXP4XX_OSTS - last_jiffy_time) > LATCH) { ++ rate = board_tick_rate; ++ error = accumulated_error; ++ count = timer_count; ++ do { ++ u32 adjusted_count = count + adjustment(error); ++ if (ixp4xx_timer_delta() < adjusted_count) ++ break; + timer_tick(regs); +- last_jiffy_time += LATCH; +- } ++ last_timer_time += adjusted_count; ++ error += rate - adjusted_count*HZ; ++ } while (1); ++ accumulated_error = error; + + write_sequnlock(&xtime_lock); + +@@ -281,17 +410,30 @@ static struct irqaction ixp4xx_timer_irq + .handler = ixp4xx_timer_interrupt, + }; + ++u32 ixp4xx_get_board_tick_rate(void) { ++ return board_tick_rate; ++} ++ ++EXPORT_SYMBOL(ixp4xx_get_board_tick_rate); ++ ++void ixp4xx_set_board_tick_rate(u32 rate) { ++ ixp4xx_board_tick_rate = rate; ++} ++ ++EXPORT_SYMBOL(ixp4xx_set_board_tick_rate); ++ + static void __init ixp4xx_timer_init(void) + { + /* Clear Pending Interrupt by writing '1' to it */ + *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND; + + /* Setup the Timer counter value */ +- *IXP4XX_OSRT1 = (LATCH & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; ++ set_board_tick_rate(ixp4xx_board_tick_rate); + + /* Reset time-stamp counter */ + *IXP4XX_OSTS = 0; +- last_jiffy_time = 0; ++ last_timer_time = 0; ++ accumulated_error = 0; + + /* Connect the interrupt handler and enable the interrupt */ + setup_irq(IRQ_IXP4XX_TIMER1, &ixp4xx_timer_irq); +@@ -337,4 +479,3 @@ void __init ixp4xx_sys_init(void) + ARRAY_SIZE(ixp46x_devices)); + } + } +- +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 +@@ -119,6 +119,11 @@ static void nslu2_power_off(void) + + static void __init nslu2_init(void) + { ++ /* The NSLU2 has a 33MHz crystal on board - 1.01% different ++ * from the typical value. ++ */ ++ ixp4xx_set_board_tick_rate(66000000); ++ + ixp4xx_sys_init(); + + pm_power_off = nslu2_power_off; +--- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 +@@ -51,7 +51,7 @@ static int nslu2_spkr_event(struct input + } + + if (value > 20 && value < 32767) +- count = (NSLU2_FREQ / (value*4)) - 1; ++ count = (ixp4xx_get_board_tick_rate() / (value*4)) - 1; + + spin_lock_irqsave(&beep_lock, flags); + +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/nslu2.h 1970-01-01 00:00:00.000000000 +0000 +@@ -38,11 +38,6 @@ + #define NSLU2_PCI_INTD_PIN 8 + + +-/* NSLU2 Timer */ +-#define NSLU2_FREQ 66000000 +-#define NSLU2_CLOCK_TICK_RATE (((NSLU2_FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) +-#define NSLU2_CLOCK_TICKS_PER_USEC ((NSLU2_CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) +- + /* GPIO */ + + #define NSLU2_GPIO0 0 +--- linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/include/asm-arm/arch-ixp4xx/timex.h 1970-01-01 00:00:00.000000000 +0000 +@@ -6,10 +6,23 @@ + #include <asm/hardware.h> + + /* +- * We use IXP425 General purpose timer for our timer needs, it runs at +- * 66.66... MHz. We do a convulted calculation of CLOCK_TICK_RATE b/c the +- * timer register ignores the bottom 2 bits of the LATCH value. ++ * In linux/timex.h 'LATCH' is defined as CLOCK_TICK_RATE/HZ and ++ * is the number of internal counts per timer interrupt. Thus ++ * CLOCK_TICK_RATE is LATCH*HZ. ++ * ++ * The actual values of these numbers do not matter, because they ++ * are only used to calculate ACTHZ (rate/latch as a 24.8 fixed ++ * point number), so the value here gives a LATCH of 1 and pretty ++ * much guarantees to flush out any off-by-one errors. ++ * ++ * ACTHZ is equal to HZ, because CLOCK_TICK_RATE is a multiple of ++ * HZ, this is checked in the ixp4xx/common.c code. + */ +-#define FREQ 66666666 +-#define CLOCK_TICK_RATE (((FREQ / HZ & ~IXP4XX_OST_RELOAD_MASK) + 1) * HZ) ++#define CLOCK_TICK_RATE HZ + ++/* The following allow the exact board tick rate to be set and ++ * discovered. The value should be exactly twice the frequency ++ * (in Hz) of the onboard crystal. ++ */ ++extern u32 ixp4xx_get_board_tick_rate(void); ++extern void ixp4xx_set_board_tick_rate(u32 new_rate); diff --git a/packages/linux/nslu2-kernel/2.6.15/55-rtc-x1205.patch b/packages/linux/nslu2-kernel/2.6.15/55-rtc-x1205.patch new file mode 100644 index 0000000000..70befe5fe4 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/55-rtc-x1205.patch @@ -0,0 +1,193 @@ + drivers/char/Kconfig | 4 + + drivers/char/Makefile | 1 + drivers/char/x1205-rtc.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 167 insertions(+) + +--- linux-2.6.15/drivers/char/Kconfig 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/char/Kconfig 1970-01-01 00:00:00.000000000 +0000 +@@ -783,6 +783,10 @@ config RTC_VR41XX + tristate "NEC VR4100 series Real Time Clock Support" + depends on CPU_VR41XX + ++config RTC_X1205 ++ tristate "X1205 I2C RTC Support" ++ depends on I2C && RTC_X1205_I2C ++ + config COBALT_LCD + bool "Support for Cobalt LCD" + depends on MIPS_COBALT +--- linux-2.6.15/drivers/char/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/char/Makefile 1970-01-01 00:00:00.000000000 +0000 +@@ -65,6 +65,7 @@ obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o + obj-$(CONFIG_DS1302) += ds1302.o + obj-$(CONFIG_S3C2410_RTC) += s3c2410-rtc.o + obj-$(CONFIG_RTC_VR41XX) += vr41xx_rtc.o ++obj-$(CONFIG_RTC_X1205) += x1205-rtc.o + ifeq ($(CONFIG_GENERIC_NVRAM),y) + obj-$(CONFIG_NVRAM) += generic_nvram.o + else +--- linux-2.6.15/drivers/char/x1205-rtc.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/char/x1205-rtc.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,162 @@ ++/* ++ * drivers/char/x1205-rtc.c ++ * ++ * NSLU2 RTC driver ++ * ++ * Copyright (C) 2005 Tower Technologies ++ * ++ * based on the original X1205 NSLU2 driver ++ * Copyright (C) 2004 Karen Spearel ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * 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 ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/device.h> ++#include <linux/time.h> ++#include <linux/rtc.h> ++#include <linux/init.h> ++#include <linux/platform_device.h> ++ ++#include <linux/i2c.h> ++#include <linux/x1205.h> ++ ++#include <asm/rtc.h> ++ ++#define DRV_VERSION "0.9" ++ ++extern int (*set_rtc)(void); ++ ++static int x1205_set_rtc(void) ++{ ++ int err; ++ ++ struct rtc_time new_tm, old_tm; ++ unsigned long cur_secs = xtime.tv_sec; ++ ++ if ((err = x1205_do_command(X1205_CMD_GETDATETIME, &old_tm) == 0)) ++ return err; ++ ++ /* FIXME xtime.tv_nsec = old_tm.tm_sec * 10000000; */ ++ new_tm.tm_sec = cur_secs % 60; ++ cur_secs /= 60; ++ new_tm.tm_min = cur_secs % 60; ++ cur_secs /= 60; ++ new_tm.tm_hour = cur_secs % 24; ++ ++ /* ++ * avoid writing when we're going to change the day ++ * of the month. We will retry in the next minute. ++ * This basically means that if the RTC must not drift ++ * by more than 1 minute in 11 minutes. ++ */ ++ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) || ++ (new_tm.tm_hour == 23 && new_tm.tm_min == 59)) ++ return 1; ++ ++ return x1205_do_command(X1205_CMD_SETTIME, &new_tm); ++} ++ ++static int x1205_rtc_read_alarm(struct rtc_wkalrm *alrm) ++{ ++ return x1205_do_command(X1205_CMD_GETALARM, &alrm->time); ++} ++ ++static int x1205_rtc_set_alarm(struct rtc_wkalrm *alrm) ++{ ++ return x1205_do_command(X1205_CMD_SETALARM, &alrm->time); ++} ++ ++static int x1205_rtc_read_time(struct rtc_time *tm) ++{ ++ return x1205_do_command(X1205_CMD_GETDATETIME, tm); ++} ++ ++static int x1205_rtc_set_time(struct rtc_time *tm) ++{ ++ return x1205_do_command(X1205_CMD_SETDATETIME, tm); ++} ++ ++static int x1205_rtc_proc(char *buf) ++{ ++ int err, dtrim, atrim; ++ char *p = buf; ++ ++ p += sprintf(p, "24hr\t\t: yes\n"); ++ ++ err = x1205_do_command(X1205_CMD_GETDTRIM, &dtrim); ++ if (err == 0) ++ p += sprintf(p, "digital_trim\t: %d ppm\n", dtrim); ++ ++ err = x1205_do_command(X1205_CMD_GETATRIM, &atrim); ++ if (err == 0) ++ p += sprintf(p, "analog_trim\t: %d.%02d pF\n", ++ atrim / 1000, atrim % 1000); ++ ++ return p - buf; ++} ++ ++static struct rtc_ops x1205_rtc_ops = { ++ .owner = THIS_MODULE, ++ .proc = x1205_rtc_proc, ++ .read_time = x1205_rtc_read_time, ++ .set_time = x1205_rtc_set_time, ++ .read_alarm = x1205_rtc_read_alarm, ++ .set_alarm = x1205_rtc_set_alarm, ++}; ++ ++static int x1205_rtc_probe(struct device *dev) ++{ ++ int ret; ++ ++ if ((ret = register_rtc(&x1205_rtc_ops)) != 0) ++ return ret; ++ ++ set_rtc = x1205_set_rtc; ++ ++ printk(KERN_INFO "x1205-rtc: real time clock\n"); ++ ++ return 0; ++} ++ ++static int x1205_rtc_remove(struct device *dev) ++{ ++ set_rtc = NULL; ++ ++ unregister_rtc(&x1205_rtc_ops); ++ ++ return 0; ++} ++ ++static struct device_driver x1205_rtc_driver = { ++ .name = "x1205-rtc", ++ .bus = &platform_bus_type, ++ .probe = x1205_rtc_probe, ++ .remove = x1205_rtc_remove, ++}; ++ ++static int __init x1205_rtc_init(void) ++{ ++ return driver_register(&x1205_rtc_driver); ++} ++ ++static void __exit x1205_rtc_exit(void) ++{ ++ driver_unregister(&x1205_rtc_driver); ++} ++ ++module_init(x1205_rtc_init); ++module_exit(x1205_rtc_exit); ++ ++MODULE_AUTHOR( ++ "Karen Spearel <kas11@tampabay.rr.com>, " ++ "Alessandro Zummo <a.zummo@towertech.it>"); ++MODULE_DESCRIPTION("Xicor X1205 RTC platform driver"); ++MODULE_LICENSE("GPL"); ++MODULE_VERSION(DRV_VERSION); diff --git a/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch b/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch new file mode 100644 index 0000000000..12fdc4d96e --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/60-nslu2-beeper.patch @@ -0,0 +1,184 @@ + drivers/input/misc/Kconfig | 12 +++ + drivers/input/misc/Makefile | 1 + drivers/input/misc/nslu2spkr.c | 148 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 161 insertions(+) + +--- linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000 +@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP + tristate "M68k Beeper support" + depends on M68K + ++config INPUT_NSLU2_BEEPER ++ tristate "NSLU2 Beeper support" ++ depends on MACH_NSLU2 ++ help ++ Say Y here if you want the embedded beeper on the LinkSys NSLU2 ++ to be used for bells and whistles. ++ ++ If unsure, say Y. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called nslu2spkr. ++ + config INPUT_UINPUT + tristate "User level driver support" + help +--- linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000 +@@ -10,3 +10,4 @@ obj-$(CONFIG_INPUT_M68K_BEEP) += m68ksp + obj-$(CONFIG_INPUT_98SPKR) += 98spkr.o + obj-$(CONFIG_INPUT_UINPUT) += uinput.o + obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o ++obj-$(CONFIG_INPUT_NSLU2_BEEPER) += nslu2spkr.o +--- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,148 @@ ++/* ++ * drivers/input/misc/nslu2spkr.c ++ * ++ * NSLU2 Beeper driver ++ * ++ * Copyright (C) 2005 Tower Technologies ++ * ++ * based on nslu2-io.c ++ * Copyright (C) 2004 Karen Spearel ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * 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 ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/input.h> ++#include <linux/delay.h> ++ ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/mach-types.h> ++ ++static unsigned int beep_on_startup = 1; ++module_param(beep_on_startup, bool, 0); ++MODULE_PARM_DESC(beep_on_startup, "Play a beep on module startup"); ++ ++DEFINE_SPINLOCK(beep_lock); ++ ++static int nslu2_spkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) ++{ ++ unsigned int count = 0; ++ unsigned long flags; ++ ++ if (type != EV_SND) ++ return -1; ++ ++ switch (code) { ++ case SND_BELL: ++ if (value) value = 1000; ++ case SND_TONE: ++ break; ++ default: ++ return -1; ++ } ++ ++ if (value > 20 && value < 32767) ++ count = (NSLU2_FREQ / (value*4)) - 1; ++ ++ spin_lock_irqsave(&beep_lock, flags); ++ ++ if (count) { ++ ++ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_OUT); ++ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_LOW); ++ ++ *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; ++ ++ } else { ++ ++ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_IN); ++ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_HIGH); ++ ++ *IXP4XX_OSRT2 = 0; ++ } ++ ++ spin_unlock_irqrestore(&beep_lock, flags); ++ ++ return 0; ++} ++ ++static struct input_dev nslu2_spkr_dev = { ++ .phys = "ixp420/gpio4", ++ .name = "NSLU2 Beeper", ++ .evbit[0] = BIT(EV_SND), ++ .sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE), ++ .event = nslu2_spkr_event, ++ .id = { ++ .bustype = BUS_HOST, ++ .vendor = 0x001f, ++ .product = 0x0001, ++ .version = 0x0100 ++ } ++}; ++ ++static irqreturn_t nslu2_spkr_handler(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ /* clear interrupt */ ++ *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND; ++ ++ /* flip the beeper output */ ++ *IXP4XX_GPIO_GPOUTR ^= NSLU2_BZ_BM; ++ ++ return IRQ_HANDLED; ++} ++ ++static int __init nslu2_spkr_init(void) ++{ ++ if (!(machine_is_nslu2())) ++ return -ENODEV; ++ ++ if (request_irq(IRQ_IXP4XX_TIMER2, &nslu2_spkr_handler, ++ SA_INTERRUPT | SA_TIMER, "nslu2-beeper", NULL < 0)) { ++ ++ printk(KERN_INFO "NSLU2 beeper: IRQ %d not available\n", ++ IRQ_IXP4XX_TIMER2); ++ ++ return -EIO; ++ } ++ ++ input_register_device(&nslu2_spkr_dev); ++ ++ /* do a little beep to tell the world we are alive */ ++ if (beep_on_startup) ++ { ++ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 440); ++ msleep(120); ++ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 0); ++ } ++ ++ printk(KERN_INFO "NSLU2: beeper\n"); ++ return 0; ++} ++ ++static void __exit nslu2_spkr_exit(void) ++{ ++ input_unregister_device(&nslu2_spkr_dev); ++ ++ disable_irq(IRQ_IXP4XX_TIMER2); ++ ++ /* turn it off */ ++ nslu2_spkr_event(NULL, EV_SND, SND_BELL, 0); ++ ++ free_irq(IRQ_IXP4XX_TIMER2, NULL); ++} ++ ++module_init(nslu2_spkr_init); ++module_exit(nslu2_spkr_exit); ++ ++MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); ++MODULE_DESCRIPTION("NSLU2 Beeper driver"); ++MODULE_LICENSE("GPL"); diff --git a/packages/linux/nslu2-kernel/2.6.15/60-nslu2-rtc.patch b/packages/linux/nslu2-kernel/2.6.15/60-nslu2-rtc.patch new file mode 100644 index 0000000000..9e390c6b7a --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/60-nslu2-rtc.patch @@ -0,0 +1,21 @@ + arch/arm/mach-ixp4xx/nslu2-setup.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-setup.c 1970-01-01 00:00:00.000000000 +0000 +@@ -95,10 +95,15 @@ static struct platform_device nslu2_uart + .resource = nslu2_uart_resources, + }; + ++static struct platform_device nslu2_rtc = { ++ .name = "x1205-rtc", ++}; ++ + static struct platform_device *nslu2_devices[] __initdata = { + &nslu2_i2c_controller, + &nslu2_flash, + &nslu2_uart, ++ &nslu2_rtc, + }; + + static void nslu2_power_off(void) diff --git a/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch b/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch new file mode 100644 index 0000000000..7497409e77 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/75-nslu2-leds.patch @@ -0,0 +1,272 @@ + arch/arm/Kconfig | 8 - + arch/arm/mach-ixp4xx/Makefile | 4 + arch/arm/mach-ixp4xx/nslu2-leds.c | 223 ++++++++++++++++++++++++++++++++++++++ + 3 files changed, 232 insertions(+), 3 deletions(-) + +--- linux-2.6.15/arch/arm/Kconfig 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/Kconfig 1970-01-01 00:00:00.000000000 +0000 +@@ -418,7 +418,8 @@ config LEDS + ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ + ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ + ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ +- ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE ++ ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ ++ MACH_NSLU2 + help + If you say Y here, the LEDs on your machine will be used + to provide useful information about your current system status. +@@ -432,7 +433,7 @@ config LEDS + + config LEDS_TIMER + bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \ +- MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 ++ MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 || MACH_NSLU2 + depends on LEDS + default y if ARCH_EBSA110 + help +@@ -448,7 +449,8 @@ config LEDS_TIMER + + config LEDS_CPU + bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \ +- !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 ++ !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 \ ++ || MACH_NSLU2 + depends on LEDS + help + If you say Y here, the red LED will be used to give a good real +--- linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 +@@ -10,3 +10,7 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote- + obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o + obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o + ++leds-$(CONFIG_MACH_NSLU2) += nslu2-leds.o ++obj-$(CONFIG_LEDS) += $(leds-y) ++ ++ +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-leds.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-leds.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,223 @@ ++/* ++ * arch/arm/mach-ixp4xx/nslu2-leds.c ++ * ++ * NSLU2 LEDs driver ++ * ++ * Copyright (C) 2005 Tower Technologies ++ * ++ * based on nslu2-io.c ++ * Copyright (C) 2004 Karen Spearel ++ * and arch/arm/mach-footbridge/netwinder-leds.c ++ * Copyright (C) 1998-1999 Russell King ++ * ++ * Author: Alessandro Zummo <a.zummo@towertech.it> ++ * Maintainers: http://www.nslu2-linux.org/ ++ * ++ * 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 ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/spinlock.h> ++#include <linux/notifier.h> ++ ++#include <asm/hardware.h> ++#include <asm/leds.h> ++#include <asm/mach-types.h> ++#include <asm/system.h> ++ ++#define LED_STATE_ENABLED 0x01 ++#define LED_STATE_CLAIMED 0x02 ++#define LED_STATE_IDLE 0x04 ++ ++static unsigned char led_state; ++static unsigned int hw_led_state; ++ ++#ifdef CONFIG_LEDS_TIMER ++static const unsigned long idle_seq[4] = { ++ NSLU2_LED_GRN_BM, 0, ++ NSLU2_LED_GRN_BM, 0, ++}; ++ ++static const unsigned long busy_seq[4] = { ++ NSLU2_LED_GRN_BM, 0, ++ NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM, 0, ++}; ++#endif ++ ++static unsigned char led_count = 0; ++ ++static DEFINE_SPINLOCK(leds_lock); ++extern spinlock_t gpio_lock; ++ ++static void nslu2_leds_event(led_event_t evt) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&leds_lock, flags); ++ ++ switch (evt) { ++ case led_start: ++ /* Let's rock! Red led on, all others off. Remember ++ * that disk1/disk2 works inverted. ++ */ ++ led_state = LED_STATE_ENABLED; ++ hw_led_state = NSLU2_LED_DISK1_BM | NSLU2_LED_DISK2_BM ++ | NSLU2_LED_RED_BM; ++ break; ++ ++ case led_stop: ++ led_state &= ~LED_STATE_ENABLED; ++ break; ++ ++ case led_claim: ++ /* The user claimed the interface, red and green off */ ++ led_state |= LED_STATE_CLAIMED; ++ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM); ++ break; ++ ++ case led_release: ++ /* The user released the interface, preserve the last ++ * status of the leds, except red/green. ++ */ ++ led_state &= ~LED_STATE_CLAIMED; ++ hw_led_state = *IXP4XX_GPIO_GPOUTR & 0x0000000C; ++ break; ++ ++#ifdef CONFIG_LEDS_TIMER ++ case led_timer: ++ /* Pulse green led */ ++ if (!(led_state & LED_STATE_CLAIMED)) ++ { ++ /* clear red and green bits */ ++ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM); ++ ++ /* copy the right sequence in */ ++ if (led_state & LED_STATE_IDLE) ++ hw_led_state |= idle_seq[led_count % 4]; ++ else ++ hw_led_state |= busy_seq[led_count % 4]; ++ ++ led_count++; ++ } ++ break; ++#endif ++ ++#ifdef CONFIG_LEDS_CPU ++ case led_idle_start: ++ led_state |= LED_STATE_IDLE; ++#ifndef CONFIG_LEDS_TIMER ++ /* green on, red off */ ++ hw_led_state |= NSLU2_LED_GRN_BM; ++ hw_led_state &= ~NSLU2_LED_RED_BM; ++#endif ++ break; ++ ++ case led_idle_end: ++ led_state &= ~LED_STATE_IDLE; ++#ifndef CONFIG_LEDS_TIMER ++ /* green on, red on -> amber on */ ++ hw_led_state |= NSLU2_LED_GRN_BM | NSLU2_LED_RED_BM; ++#endif ++ break; ++#endif /* CONFIG_LEDS_CPU */ ++ ++ case led_halted: ++ if (!(led_state & LED_STATE_CLAIMED)) ++ hw_led_state |= NSLU2_LED_RED_BM; ++ break; ++ ++ /* leds */ ++ ++ case led_green_on: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state |= NSLU2_LED_GRN_BM; ++ break; ++ ++ case led_green_off: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state &= ~NSLU2_LED_GRN_BM; ++ break; ++ ++ case led_amber_on: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state |= (NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM); ++ break; ++ ++ case led_amber_off: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state &= ~(NSLU2_LED_RED_BM | NSLU2_LED_GRN_BM); ++ break; ++ ++ case led_red_on: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state |= NSLU2_LED_RED_BM; ++ break; ++ ++ case led_red_off: ++ if (led_state & LED_STATE_CLAIMED) ++ hw_led_state &= ~NSLU2_LED_RED_BM; ++ break; ++ ++ default: ++ break; ++ } ++ ++ spin_unlock_irqrestore(&leds_lock, flags); ++ ++ if (led_state & LED_STATE_ENABLED) { ++ spin_lock_irqsave(&gpio_lock, flags); ++ *IXP4XX_GPIO_GPOUTR = (*IXP4XX_GPIO_GPOUTR & 0xFFFFFFF0) | hw_led_state; ++ spin_unlock_irqrestore(&gpio_lock, flags); ++ } ++} ++ ++static int nslu2_leds_panic_event(struct notifier_block *this, unsigned long event, ++ void *ptr) ++{ ++#ifdef CONFIG_LEDS_TIMER ++ leds_event(led_claim); ++#endif ++ leds_event(led_green_off); ++ leds_event(led_red_on); ++ ++ return NOTIFY_DONE; ++} ++ ++static struct notifier_block nslu2_leds_panic_block = { ++ .notifier_call = nslu2_leds_panic_event, ++}; ++ ++static int __init nslu2_leds_init(void) ++{ ++ if (!(machine_is_nslu2())) ++ return 0; ++ ++ printk(KERN_INFO "NSLU2: leds\n"); ++ ++ /* register panic notifier */ ++ notifier_chain_register(&panic_notifier_list, &nslu2_leds_panic_block); ++ ++ /* enable gpio 0-3 */ ++ gpio_line_config(NSLU2_LED_GRN, IXP4XX_GPIO_OUT); ++ gpio_line_config(NSLU2_LED_RED, IXP4XX_GPIO_OUT); ++ gpio_line_config(NSLU2_LED_DISK1, IXP4XX_GPIO_OUT); ++ gpio_line_config(NSLU2_LED_DISK2, IXP4XX_GPIO_OUT); ++ ++ leds_event = nslu2_leds_event; ++ ++ /* this will also initialize the leds to the ++ * default state. ++ */ ++ ++ leds_event(led_start); ++ ++ return 0; ++} ++ ++module_init(nslu2_leds_init); diff --git a/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch b/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch new file mode 100644 index 0000000000..0b90c486e3 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/80-nslu2-io.patch @@ -0,0 +1,560 @@ +--- linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 1970-01-01 00:00:00.000000000 +0000 +@@ -8,5 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pc + obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o + obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o + obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o +-obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o ++obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o nslu2-io.o + +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000 +@@ -0,0 +1,548 @@ ++//============================================================================= ++// ++// n2-io.c version 0.1.7 ++// Author: Karen Spearel <kas11 at tampabay.rr.com> ++// please report problems/bugs directly to the address above ++// ++// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per ++// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk ++// ++// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD, ++// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT ++// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER ++// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS. ++// ++//============================================================================= ++// GPIO Function State ++// 0 Red LED Status ++// 1 Green LED Ready = 1 ++// 2 Disk 2 LED On = 0 ++// 3 Disk 1 LED On = 0 ++// 4 Buzzer ++// 5 Power Button Pressed = 1 ++// 8 Power Down Output = 1 powers down NSLU2 ++// 12 Reset Pressed = 0 ++ ++#include <linux/config.h> ++#include <linux/version.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/proc_fs.h> ++#include <linux/device.h> ++#include <linux/reboot.h> ++ ++#include <asm/uaccess.h> ++#include <asm-arm/irq.h> ++#include <asm-arm/delay.h> ++ ++/* Set this to 1 to output lots of debug messages. */ ++#define NSLU2_IO_DEBUG 0 ++ ++#if NSLU2_IO_DEBUG ++#define nslu2_io_debug(args) printk args ++#else ++#define nslu2_io_debug(args) ((void)0) ++#endif ++ ++#define VERSION "0.1.7" ++ ++#define NSLU2BZ_MAJOR 62 //buzzer ++#define NSLU2LM_MAJOR 126 ++ ++ ++#define NSLU2_BEEP_DUR_LONG 2000 ++#define NSLU2_BEEP_DUR_MED 400 ++#define NSLU2_BEEP_DUR_SHORT 100 ++#define NSLU2_BEEP_PITCH_HIGH 250 ++#define NSLU2_BEEP_PITCH_MED 500 ++#define NSLU2_BEEP_PITCH_LOW 1000 ++#define NSLU2_LONG_DELAY 30000 ++ ++#define NSLU2_BZ_BM (1L << NSLU2_GPIO_BUZZ) ++ ++// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe ++ ++#define NSLU2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible ++#define NSLU2BZ_BEEP _IO('M',1) //one beep at current defaults ++#define NSLU2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults ++#define NSLU2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000 ++#define NSLU2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies ++#define NSLU2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies ++#define NSLU2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever ++#define NSLU2BZ_COMBINED _IOW('M',8,long) //combine all params in a long ++ ++#define NSLU2LM_OFF _IOW('M',32,long) ++#define NSLU2LM_ON _IOW('M',33,long) ++#define NSLU2LM_BLINK _IOW('M',34,long) ++#define NSLU2LM_ALT _IOW('M',35,long) ++#define NSLU2LM_ALL_ON _IO('M',36) ++#define NSLU2LM_ALL_OFF _IO('M',37) ++ ++#define PHYS_LEDS 4 ++#define BLINK_DELAY 25 ++ ++// OR Masks to turn these LEDs ON ++ ++#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010 ++#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001 ++#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011 ++ ++// AND Masks to turn these LEDs OFF ++ ++#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101 ++#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110 ++#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100 ++ ++// AND Masks to turn these LEDs ON ++ ++#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111 ++#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011 ++ ++// Or Masks to turn these LEDs OFF ++ ++#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000 ++#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100 ++ ++// EOR masks for toggling LEDs on/off ++ ++#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits ++#define RS_GRN_TGL 0x00000002 ++#define RS_RED_TGL 0x00000001 ++#define DISK1_TGL 0x00000008 ++#define DISK2_TGL 0x00000004 ++ ++// The LED names for switches ++ ++#define LED_RS_RED 0 ++#define LED_RS_GRN 1 ++#define LED_DISK1 2 ++#define LED_DISK2 3 ++#define LED_ALL 4 ++ ++static unsigned long ontime = 50; ++static unsigned long offtime = 450; ++static unsigned long bz_repeatcnt = 10; ++static unsigned long tone = 1000; ++ ++static struct timer_list n2lm_rsg_timer; //rs green ++static struct timer_list n2lm_rsr_timer; //rs red ++static struct timer_list n2lm_d1_timer; //drive 1 ++static struct timer_list n2lm_d2_timer; //drive 2 ++static struct timer_list n2bz_timer; //beeper ++ ++// sysfs class ++static struct class *n2lm_class; ++ ++//================================================================================================== ++// ++// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the ++// GPIO output register is xor'd with a mask corresponding to the selected led which simply ++// flips that bit. No record of what any of the other leds is doing is needed. ++// ++//================================================================================================== ++// this blinks rs green or green/yellow if rs red is on ++#ifndef CONFIG_LEDS ++static void n2lm_rsg_handler(unsigned long data) ++{ ++ *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led ++ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout ++ add_timer(&n2lm_rsg_timer); //reinit timer ++ return; ++} ++ ++// this blinks or alternates rs red green... inited wit green on/red off ++static void n2lm_rsr_handler(unsigned long data) ++{ ++ *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data; ++ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_rsr_timer); ++ return; ++} ++// blinks disk 1 ++static void n2lm_d1_handler(unsigned long data) ++{ ++ *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL; ++ n2lm_d1_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_d1_timer); ++ return; ++} ++// blinks disk 2 ++static void n2lm_d2_handler(unsigned long data) ++{ ++ *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL; ++ n2lm_d2_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_d2_timer); ++ return; ++} ++ ++//================================================================================================== ++ ++static void n2lm_timer_start(unsigned long led) ++{ ++ ++ nslu2_io_debug((KERN_DEBUG "timer: %ld\n",led)); ++ ++ switch(led) { ++ case LED_RS_RED: ++ n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_rsr_timer); ++ break; ++ ++ case LED_RS_GRN: ++ n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_rsg_timer); ++ break; ++ ++ case LED_DISK1: ++ n2lm_d1_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_d1_timer); ++ break; ++ ++ case LED_DISK2: ++ n2lm_d2_timer.expires = jiffies + BLINK_DELAY; ++ add_timer(&n2lm_d2_timer); ++ break; ++ ++ default: ++ break; ++ } ++ return; ++} ++ ++//================================================================================================== ++ ++static void n2lm_timer_stop(unsigned long led) ++{ ++ switch (led) { ++ case LED_RS_RED: ++ del_timer(&n2lm_rsr_timer); ++ break; ++ case LED_RS_GRN: ++ del_timer(&n2lm_rsg_timer); ++ break; ++ case LED_DISK1: ++ del_timer(&n2lm_d1_timer); ++ break; ++ case LED_DISK2: ++ del_timer(&n2lm_d2_timer); ++ break; ++ default: ++ break; ++ } ++ return; ++} ++ ++//-------------------------------------------------------------------------------------------------- ++ ++static void n2lm_timer_stop_all(void) ++{ ++ del_timer(&n2lm_rsg_timer); ++ del_timer(&n2lm_rsr_timer); ++ del_timer(&n2lm_d1_timer); ++ del_timer(&n2lm_d2_timer); ++ return; ++} ++//-------------------------------------------------------------------------------------------------- ++ ++static void n2lm_ledon(unsigned long led) ++{ ++ ++ nslu2_io_debug((KERN_DEBUG "ledon: %ld\n", led)); ++ ++ switch (led) { ++ case LED_RS_RED: ++ *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1 ++ return; ++ case LED_RS_GRN: ++ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2 ++ return; ++ case LED_DISK1: ++ *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffff7 ++ return; ++ case LED_DISK2: ++ *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffffb ++ return; ++ case LED_ALL: //all green ++ *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; ++ *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON); ++ return; ++ } ++} ++ ++//-------------------------------------------------------------------------------------------------- ++ ++static void n2lm_ledoff(unsigned long led) ++{ ++ ++ switch (led) { ++ case LED_RS_RED: ++ *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe ++ return; ++ case LED_RS_GRN: ++ *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd ++ return; ++ case LED_DISK1: ++ *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000008 ++ return; ++ case LED_DISK2: ++ *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000004 ++ return; ++ case LED_ALL: ++ *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF); ++ *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF); ++ } ++} ++ ++//================================================================================================== ++ ++static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led) ++{ ++ ++ nslu2_io_debug((KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led)); ++ ++ if (led < 0 || led >= PHYS_LEDS) ++ return -EINVAL; ++ ++ switch (cmd ) { ++ case NSLU2LM_ON: ++ n2lm_timer_stop(led); ++ n2lm_ledon(led); ++ break; ++ ++ case NSLU2LM_OFF: ++ n2lm_timer_stop(led); ++ n2lm_ledoff(led); ++ break; ++ ++ case NSLU2LM_BLINK: ++ n2lm_ledon(led); ++ if (led == LED_RS_RED) ++ n2lm_rsr_timer.data = RS_RED_TGL; ++ n2lm_timer_start(led); ++ break; ++ ++ case NSLU2LM_ALT: ++ if (led == LED_RS_RED) ++ { ++ n2lm_ledon(LED_RS_GRN); ++ n2lm_ledoff(LED_RS_RED); ++ n2lm_rsr_timer.data = RS_RG_ALT; ++ n2lm_timer_start(LED_RS_RED); ++ break; ++ } else ++ return -EINVAL; ++ ++ case NSLU2LM_ALL_ON: ++ n2lm_timer_stop_all(); ++ n2lm_ledon(LED_ALL); ++ break; ++ ++ case NSLU2LM_ALL_OFF: ++ n2lm_timer_stop_all(); ++ n2lm_ledoff(LED_ALL); ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++static struct file_operations n2lm_fops = { ++ .owner = THIS_MODULE, ++ .ioctl = n2lm_ioctl, ++}; ++#endif ++//================================================================================================== ++// We can't do anything fancy here since the system tick rate is far below that required to ++// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until ++// I get up to speed on the timers. The saving grace is that for the normal uses, nothing ++// important should be haprepening. ++//================================================================================================== ++ ++static void n2_buzz(int tone_delay, int duration) ++{ ++ int i; ++ ++ *IXP4XX_GPIO_GPOER &= ~NSLU2_BZ_BM; ++ ++ for (i = 1; i < duration; i++) { ++ *IXP4XX_GPIO_GPOUTR &= ~NSLU2_BZ_BM; ++ udelay(tone_delay); ++ *IXP4XX_GPIO_GPOUTR |= NSLU2_BZ_BM; ++ udelay(tone_delay); ++ } ++ *IXP4XX_GPIO_GPOER |= NSLU2_BZ_BM; ++ ++ return; ++} ++//================================================================================================= ++ ++// this handles the buzzer duty cycle ++static void n2bz_handler(unsigned long data) ++{ ++ if (--bz_repeatcnt > 0) { //if just one beep left to do ++ n2bz_timer.expires = jiffies + ontime + offtime; //next timeout ++ add_timer(&n2bz_timer); //reinit timer ++ } ++ n2_buzz(tone/2, ontime); ++ nslu2_io_debug((KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime)); ++ return; ++} ++ ++//================================================================================================== ++ ++static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) ++{ ++ switch (cmd) { ++ case NSLU2BZ_BEEP: ++ n2_buzz(tone/2, ontime); ++ break; ++ ++ case NSLU2BZ_BEEP_STOP: ++ del_timer(&n2bz_timer); ++ break; ++ ++ case NSLU2BZ_BEEPS: ++ if (param == 0) ++ bz_repeatcnt = 0xffffffff; ++ else ++ bz_repeatcnt = param; ++ n2bz_handler(0); ++ break; ++ ++ case NSLU2BZ_TONESET: ++ if (param >= 250 && param <= 2000) ++ tone = param; ++ break; ++ ++ case NSLU2BZ_ONTIME: ++ if (param > 4 && param < 201) ++ ontime = param; ++ break; ++ ++ case NSLU2BZ_SILENTTIME: ++ if (param > ontime) //enforce a reasonable duty cycle ++ offtime = param; ++ else ++ offtime = ontime; ++ break; ++ ++ case NSLU2BZ_REPEATCNT: ++ if (param == 0) ++ bz_repeatcnt = 0xffffffff; ++ else ++ bz_repeatcnt = param; ++ break; ++ ++ case NSLU2BZ_COMBINED: ++ bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16 ++ ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies ++ offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies ++ tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16 ++ break; ++ ++ default: ++ break; ++ } ++ return 0; ++} ++ ++static struct file_operations n2bz_fops = { ++ .owner = THIS_MODULE, ++ .ioctl = n2bz_ioctl, ++}; ++ ++static void n2iom_initarch(void) ++{ ++#ifndef CONFIG_LEDS ++ init_timer(&n2lm_rsg_timer); ++ init_timer(&n2lm_rsr_timer); ++ init_timer(&n2lm_d1_timer); ++ init_timer(&n2lm_d2_timer); ++ ++ n2lm_rsr_timer.function = n2lm_rsr_handler; ++ n2lm_rsg_timer.function = n2lm_rsg_handler; ++ n2lm_d2_timer.function = n2lm_d2_handler; ++ n2lm_d1_timer.function = n2lm_d1_handler; ++#endif ++ ++ init_timer(&n2bz_timer); ++ n2bz_timer.function = n2bz_handler; ++ ++ n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0; ++ ++#ifndef CONFIG_LEDS ++ *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3 ++ *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds ++ *IXP4XX_GPIO_GPOUTR &= 0xfffffffc; ++ n2lm_ledon(LED_ALL); ++ n2_buzz(NSLU2_BEEP_PITCH_MED, NSLU2_BEEP_DUR_SHORT); ++ n2lm_ledoff(LED_ALL); ++ ++ // Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit ++ n2lm_ledon(LED_RS_RED); ++#endif ++ ++ return; ++} ++ ++//================================================================================================== ++ ++static int __init n2iom_init(void) ++{ ++ printk(KERN_INFO "NSLU2: i/o, %s\n", VERSION); ++ ++ n2iom_initarch(); ++ ++ n2lm_class = class_create(THIS_MODULE, "nslu2"); ++ ++#ifndef CONFIG_LEDS ++ if (register_chrdev(NSLU2LM_MAJOR, "n2_ledm", &n2lm_fops) < 0) { ++ printk(KERN_DEBUG "Led Manager Major %d not available\n", NSLU2LM_MAJOR); ++ return -EBUSY; ++ } ++ else { ++ class_device_create(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds"); ++ } ++#endif ++ ++ if (register_chrdev(NSLU2BZ_MAJOR, "n2_bzm", &n2bz_fops) < 0) { ++ printk(KERN_DEBUG "Buzzer Major %d not available\n", NSLU2BZ_MAJOR); ++ return -EBUSY; ++ } ++ else { ++ class_device_create(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer"); ++ } ++ ++ return 0; ++} ++ ++//================================================================================================== ++ ++static void __exit n2iom_exit(void) ++{ ++ ++#ifndef CONFIG_LEDS ++ del_timer(&n2lm_rsg_timer); ++ del_timer(&n2lm_rsr_timer); ++ del_timer(&n2lm_d1_timer); ++ del_timer(&n2lm_d2_timer); ++ ++ unregister_chrdev(NSLU2LM_MAJOR, "n2lm" ); ++ class_device_destroy(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0)); ++#endif ++ ++ unregister_chrdev(NSLU2BZ_MAJOR, "n2bz"); ++ class_device_destroy(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0)); ++ ++ class_destroy(n2lm_class); ++} ++ ++module_init(n2iom_init); ++module_exit(n2iom_exit); ++ ++MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); ++MODULE_DESCRIPTION("NSLU2 I/O driver"); ++MODULE_LICENSE("GPL"); diff --git a/packages/linux/nslu2-kernel/2.6.15/81-nslu2-class-device-create.patch b/packages/linux/nslu2-kernel/2.6.15/81-nslu2-class-device-create.patch new file mode 100644 index 0000000000..cc33222d91 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/81-nslu2-class-device-create.patch @@ -0,0 +1,20 @@ +--- linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.15/arch/arm/mach-ixp4xx/nslu2-io.c 1970-01-01 00:00:00.000000000 +0000 +@@ -504,7 +504,7 @@ static int __init n2iom_init(void) + return -EBUSY; + } + else { +- class_device_create(n2lm_class, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds"); ++ class_device_create(n2lm_class, NULL, MKDEV(NSLU2LM_MAJOR, 0), NULL, "leds"); + } + #endif + +@@ -513,7 +513,7 @@ static int __init n2iom_init(void) + return -EBUSY; + } + else { +- class_device_create(n2lm_class, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer"); ++ class_device_create(n2lm_class, NULL, MKDEV(NSLU2BZ_MAJOR, 0), NULL, "buzzer"); + } + + return 0; diff --git a/packages/linux/nslu2-kernel/2.6.15/90-ixp4xx-nslu2.patch b/packages/linux/nslu2-kernel/2.6.15/90-ixp4xx-nslu2.patch new file mode 100644 index 0000000000..c106f7c957 --- /dev/null +++ b/packages/linux/nslu2-kernel/2.6.15/90-ixp4xx-nslu2.patch @@ -0,0 +1,132 @@ +ixp4xx updates: + - Handle reads that don't start on a half-word boundary. + - Make it work when CPU is in little-endian mode. + +Signed-off-by: John Bowler <jbowler@acm.org> +Signed-off-by: Alessandro Zummo <a.zummo@towertech.it> +Signed-off-by: David Vrabel <dvrabel@arcom.com> + +Index: linux-2.6-working/drivers/mtd/maps/ixp4xx.c +=================================================================== +--- linux-2.6-working.orig/drivers/mtd/maps/ixp4xx.c 2005-11-16 15:19:34.000000000 +0000 ++++ linux-2.6-working/drivers/mtd/maps/ixp4xx.c 2005-11-16 16:06:54.000000000 +0000 +@@ -34,10 +34,55 @@ + + #include <linux/reboot.h> + ++/* ++ * Read/write a 16 bit word from flash address 'addr'. ++ * ++ * When the cpu is in little-endian mode it swizzles the address lines ++ * ('address coherency') so we need to undo the swizzling to ensure commands ++ * and the like end up on the correct flash address. ++ * ++ * To further complicate matters, due to the way the expansion bus controller ++ * handles 32 bit reads, the byte stream ABCD is stored on the flash as: ++ * D15 D0 ++ * +---+---+ ++ * | A | B | 0 ++ * +---+---+ ++ * | C | D | 2 ++ * +---+---+ ++ * This means that on LE systems each 16 bit word must be swapped. Note that ++ * this requires CONFIG_MTD_CFI_BE_BYTE_SWAP to be enabled to 'unswap' the CFI ++ * data and other flash commands which are always in D7-D0. ++ */ + #ifndef __ARMEB__ ++#ifndef CONFIG_MTD_CFI_BE_BYTE_SWAP ++# error CONFIG_MTD_CFI_BE_BYTE_SWAP required ++#endif ++ ++static inline u16 flash_read16(void __iomem *addr) ++{ ++ return be16_to_cpu(__raw_readw((void __iomem *)((unsigned long)addr ^ 0x2))); ++} ++ ++static inline void flash_write16(u16 d, void __iomem *addr) ++{ ++ __raw_writew(cpu_to_be16(d), (void __iomem *)((unsigned long)addr ^ 0x2)); ++} ++ + #define BYTE0(h) ((h) & 0xFF) + #define BYTE1(h) (((h) >> 8) & 0xFF) ++ + #else ++ ++static inline u16 flash_read16(const void __iomem *addr) ++{ ++ return __raw_readw(addr); ++} ++ ++static inline void flash_write16(u16 d, void __iomem *addr) ++{ ++ __raw_writew(d, addr); ++} ++ + #define BYTE0(h) (((h) >> 8) & 0xFF) + #define BYTE1(h) ((h) & 0xFF) + #endif +@@ -45,7 +90,7 @@ + static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs) + { + map_word val; +- val.x[0] = le16_to_cpu(readw(map->virt + ofs)); ++ val.x[0] = flash_read16(map->virt + ofs); + return val; + } + +@@ -57,19 +102,28 @@ + static void ixp4xx_copy_from(struct map_info *map, void *to, + unsigned long from, ssize_t len) + { +- int i; + u8 *dest = (u8 *) to; + void __iomem *src = map->virt + from; +- u16 data; + +- for (i = 0; i < (len / 2); i++) { +- data = le16_to_cpu(readw(src + 2*i)); +- dest[i * 2] = BYTE0(data); +- dest[i * 2 + 1] = BYTE1(data); ++ if (len <= 0) ++ return; ++ ++ if (from & 1) { ++ *dest++ = BYTE1(flash_read16(src)); ++ src++; ++ --len; + } + +- if (len & 1) +- dest[len - 1] = BYTE0(le16_to_cpu(readw(src + 2*i))); ++ while (len >= 2) { ++ u16 data = flash_read16(src); ++ *dest++ = BYTE0(data); ++ *dest++ = BYTE1(data); ++ src += 2; ++ len -= 2; ++ } ++ ++ if (len > 0) ++ *dest++ = BYTE0(flash_read16(src)); + } + + /* +@@ -79,7 +133,7 @@ + static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr) + { + if (!(adr & 1)) +- writew(cpu_to_le16(d.x[0]), map->virt + adr); ++ flash_write16(d.x[0], map->virt + adr); + } + + /* +@@ -87,7 +141,7 @@ + */ + static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr) + { +- writew(cpu_to_le16(d.x[0]), map->virt + adr); ++ flash_write16(d.x[0], map->virt + adr); + } + + struct ixp4xx_flash_info { diff --git a/packages/linux/nslu2-kernel/2.6.13/defconfig b/packages/linux/nslu2-kernel/2.6.15/defconfig index 1124139026..9a9bc34c7d 100644 --- a/packages/linux/nslu2-kernel/2.6.13/defconfig +++ b/packages/linux/nslu2-kernel/2.6.15/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.13.2 -# Fri Sep 23 02:19:35 2005 +# Linux kernel version: 2.6.15 +# Mon Nov 14 10:44:43 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 # General setup # CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_POSIX_MQUEUE is not set @@ -30,6 +31,7 @@ CONFIG_SYSCTL=y CONFIG_HOTPLUG=y CONFIG_KOBJECT_UEVENT=y # CONFIG_IKCONFIG is not set +CONFIG_INITRAMFS_SOURCE="" CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_PRINTK=y @@ -58,6 +60,23 @@ CONFIG_OBSOLETE_MODPARM=y CONFIG_KMOD=y # +# Block layer +# + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_AS is not set +CONFIG_IOSCHED_DEADLINE=y +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="deadline" + +# # System Type # # CONFIG_ARCH_CLPS7500 is not set @@ -79,6 +98,7 @@ CONFIG_ARCH_IXP4XX=y # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set # CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_REALVIEW is not set # CONFIG_ARCH_IMX is not set # CONFIG_ARCH_H720X is not set # CONFIG_ARCH_AAEC2000 is not set @@ -91,12 +111,12 @@ CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y # # IXP4xx Platforms # +CONFIG_MACH_NSLU2=y # CONFIG_ARCH_AVILA is not set # CONFIG_ARCH_ADI_COYOTE is not set # CONFIG_ARCH_IXDP425 is not set # CONFIG_MACH_IXDPG425 is not set # CONFIG_MACH_IXDP465 is not set -CONFIG_ARCH_NSLU2=y # CONFIG_ARCH_PRPMC1100 is not set # CONFIG_MACH_GTWX5715 is not set @@ -129,7 +149,6 @@ CONFIG_DMABOUNCE=y CONFIG_ISA_DMA_API=y CONFIG_PCI=y # CONFIG_PCI_LEGACY_PROC is not set -# CONFIG_PCI_NAMES is not set # # PCCARD (PCMCIA/CardBus) support @@ -148,6 +167,9 @@ CONFIG_FLATMEM_MANUAL=y # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_LEDS is not set CONFIG_ALIGNMENT_TRAP=y # @@ -155,7 +177,7 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc noirqdebug console=ttyS0,115200n8" +CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc x1205.hctosys=1 noirqdebug console=ttyS0,115200n8" # CONFIG_XIP_KERNEL is not set # @@ -166,6 +188,7 @@ CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init= # At least one emulation must be selected # CONFIG_FPE_NWFPE=y +# CONFIG_FPE_NWFPE_XP is not set # CONFIG_FPE_FASTFPE is not set # @@ -208,19 +231,123 @@ CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m CONFIG_INET_TUNNEL=m -CONFIG_IP_TCPDIAG=m -# CONFIG_IP_TCPDIAG_IPV6 is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_BIC=y -# CONFIG_IPV6 is not set -# CONFIG_NETFILTER is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +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 + +# +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK is not set + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CT_ACCT is not set +# CONFIG_IP_NF_CONNTRACK_MARK is not set +# 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=m +# 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=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +# CONFIG_IP_NF_MATCH_SCTP is not set +# CONFIG_IP_NF_MATCH_DCCP is not set +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +# CONFIG_IP_NF_MATCH_STRING is not set +CONFIG_IP_NF_FILTER=m +# CONFIG_IP_NF_TARGET_REJECT is not set +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +# CONFIG_IP_NF_TARGET_NFQUEUE is not set +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +# CONFIG_IP_NF_TARGET_TTL 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 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP6_NF_TARGET_NFQUEUE is not set + +# +# Bridge: Netfilter Configuration +# +# CONFIG_BRIDGE_NF_EBTABLES is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set # # SCTP Configuration (EXPERIMENTAL) # # CONFIG_IP_SCTP is not set # CONFIG_ATM is not set -# CONFIG_BRIDGE is not set +CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m # CONFIG_DECNET is not set CONFIG_LLC=m @@ -237,8 +364,12 @@ CONFIG_IPDDP_DECAP=y # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# # CONFIG_NET_SCHED is not set -# CONFIG_NET_CLS_ROUTE is not set +CONFIG_NET_CLS_ROUTE=y # # Network testing @@ -262,10 +393,11 @@ CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUSB_SCO=y # CONFIG_BT_HCIUART is not set -# CONFIG_BT_HCIBCM203X is not set +CONFIG_BT_HCIBCM203X=m # CONFIG_BT_HCIBPA10X is not set # CONFIG_BT_HCIBFUSB is not set # CONFIG_BT_HCIVHCI is not set +# CONFIG_IEEE80211 is not set # # Device Drivers @@ -276,7 +408,7 @@ CONFIG_BT_HCIUSB_SCO=y # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y -# CONFIG_FW_LOADER is not set +CONFIG_FW_LOADER=m # # Memory Technology Devices (MTD) @@ -289,7 +421,7 @@ 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=y +# CONFIG_MTD_CMDLINE_PARTS is not set # CONFIG_MTD_AFS_PARTS is not set # @@ -300,6 +432,7 @@ CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set # # RAM/ROM/Flash chip drivers @@ -307,10 +440,14 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_CFI=y # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +# CONFIG_MTD_CFI_NOSWAP is not set +CONFIG_MTD_CFI_BE_BYTE_SWAP=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set # 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 @@ -318,6 +455,7 @@ 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=y # CONFIG_MTD_CFI_AMDSTD is not set # CONFIG_MTD_CFI_STAA is not set @@ -334,7 +472,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y # CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_ARM_INTEGRATOR is not set CONFIG_MTD_IXP4XX=y -# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_PCI is not set # CONFIG_MTD_PLATRAM is not set @@ -361,6 +498,11 @@ CONFIG_MTD_IXP4XX=y # CONFIG_MTD_NAND is not set # +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# # Parallel port support # # CONFIG_PARPORT is not set @@ -386,18 +528,9 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=4 CONFIG_BLK_DEV_RAM_SIZE=10240 CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -# CONFIG_IOSCHED_AS is not set -CONFIG_IOSCHED_DEADLINE=y -# CONFIG_IOSCHED_CFQ is not set # CONFIG_ATA_OVER_ETH is not set # @@ -408,6 +541,7 @@ CONFIG_IOSCHED_DEADLINE=y # # SCSI device support # +# CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y CONFIG_SCSI_PROC_FS=y @@ -417,14 +551,15 @@ CONFIG_SCSI_PROC_FS=y CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # -# CONFIG_SCSI_MULTI_LUN is not set +CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set @@ -434,10 +569,12 @@ CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set # # SCSI low-level drivers # +# CONFIG_ISCSI_TCP is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_ACARD is not set @@ -448,6 +585,7 @@ CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_DPT_I2O is not set # CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set # CONFIG_SCSI_SATA is not set # CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_DMX3191D is not set @@ -477,7 +615,22 @@ CONFIG_SCSI_QLA2XXX=y # # Multi-device support (RAID and LVM) # -# CONFIG_MD is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set # # Fusion MPT device support @@ -485,6 +638,7 @@ CONFIG_SCSI_QLA2XXX=y # CONFIG_FUSION is not set # CONFIG_FUSION_SPI is not set # CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set # # IEEE 1394 (FireWire) support @@ -511,12 +665,18 @@ CONFIG_TUN=m # CONFIG_ARCNET is not set # +# PHY device support +# +# CONFIG_PHYLIB is not set + +# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MII=y # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_SMC91X is not set # CONFIG_DM9000 is not set @@ -556,6 +716,7 @@ CONFIG_NET_PCI=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set +# CONFIG_SIS190 is not set # CONFIG_SKGE is not set # CONFIG_SK98LIN is not set # CONFIG_VIA_VELOCITY is not set @@ -565,6 +726,7 @@ CONFIG_NET_PCI=y # # Ethernet (10000 Mbit) # +# CONFIG_CHELSIO_T1 is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set @@ -586,6 +748,7 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # +# CONFIG_AIRO is not set # CONFIG_HERMES is not set # CONFIG_ATMEL is not set @@ -593,6 +756,7 @@ CONFIG_NET_RADIO=y # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # # CONFIG_PRISM54 is not set +# CONFIG_HOSTAP is not set CONFIG_NET_WIRELESS=y # @@ -601,7 +765,15 @@ CONFIG_NET_WIRELESS=y # CONFIG_WAN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set -# CONFIG_PPP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set # CONFIG_SLIP is not set # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set @@ -619,7 +791,27 @@ CONFIG_NET_POLL_CONTROLLER=y # # Input device support # -# CONFIG_INPUT is not set +CONFIG_INPUT=m + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_NSLU2_BEEPER=m +# CONFIG_INPUT_UINPUT is not set # # Hardware I/O ports @@ -679,7 +871,8 @@ CONFIG_IXP4XX_WATCHDOG=y # # CONFIG_USBPCWATCHDOG is not set # CONFIG_NVRAM is not set -CONFIG_RTC=m +# CONFIG_RTC is not set +CONFIG_RTC_X1205=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -694,6 +887,7 @@ CONFIG_RTC=m # TPM devices # # CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set # # I2C support @@ -720,7 +914,6 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_I810 is not set # CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_IOP3XX is not set -# CONFIG_I2C_ISA is not set CONFIG_I2C_IXP4XX=y # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_PARPORT_LIGHT is not set @@ -735,7 +928,6 @@ CONFIG_I2C_IXP4XX=y # CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_PCA_ISA is not set -CONFIG_I2C_SENSOR=y # # Miscellaneous I2C Chip support @@ -748,7 +940,7 @@ CONFIG_SENSORS_EEPROM=y # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_RTC8564 is not set # CONFIG_SENSORS_MAX6875 is not set -CONFIG_SENSORS_X1205=y +CONFIG_RTC_X1205_I2C=y # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -758,6 +950,7 @@ CONFIG_SENSORS_X1205=y # 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 @@ -788,6 +981,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_VIA686A 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 @@ -798,14 +992,63 @@ CONFIG_HWMON=y # # +# Multimedia Capabilities Port drivers +# + +# # Multimedia devices # -# CONFIG_VIDEO_DEV is not set +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# + +# +# Video Adapters +# +CONFIG_VIDEO_BT848=m +# CONFIG_VIDEO_SAA6588 is not set +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +# CONFIG_VIDEO_EM28XX is not set +CONFIG_VIDEO_OVCAMCHIP=m + +# +# Radio Adapters +# +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_MAESTRO is not set # # Digital Video Broadcasting Devices # # CONFIG_DVB is not set +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_TVEEPROM=m # # Graphics support @@ -815,7 +1058,89 @@ CONFIG_HWMON=y # # Sound # -# CONFIG_SOUND is not set +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# 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 + +# +# PCI devices +# +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_HDA_INTEL is not set + +# +# ALSA ARM devices +# + +# +# USB devices +# +CONFIG_SND_USB_AUDIO=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # USB support @@ -837,7 +1162,7 @@ CONFIG_USB_DEVICEFS=y # USB Host Controller Drivers # CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_SPLIT_ISO is not set +CONFIG_USB_EHCI_SPLIT_ISO=y # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y @@ -849,15 +1174,16 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # # USB Device Class drivers # +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m # -# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # -# CONFIG_USB_ACM is not set -CONFIG_USB_PRINTER=m # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set @@ -868,15 +1194,34 @@ CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set # # USB Input Devices # -# CONFIG_USB_HID is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +# CONFIG_HID_FF is not set +CONFIG_USB_HIDDEV=y # # USB HID Boot Protocol drivers # +CONFIG_USB_KBD=m +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_MTOUCH is not set +# CONFIG_USB_ITMTOUCH is not set +# CONFIG_USB_EGALAX is not set +# CONFIG_USB_YEALINK is not set +# CONFIG_USB_XPAD is not set +# CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set # # USB Imaging devices @@ -888,10 +1233,16 @@ CONFIG_USB_STORAGE=y # USB Multimedia devices # # CONFIG_USB_DABUSB is not set - -# -# Video4Linux support is needed for USB Multimedia device support -# +# CONFIG_USB_VICAM is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_OV511 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_STV680 is not set +# CONFIG_USB_W9968CF is not set +CONFIG_USB_PWC=m # # USB Network Adapters @@ -901,30 +1252,14 @@ CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y -CONFIG_USB_KC2190=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# 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=m # CONFIG_USB_ZD1201 is not set # CONFIG_USB_MON is not set @@ -957,6 +1292,7 @@ CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m +# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_SERIAL_HP4X is not set CONFIG_USB_SERIAL_SAFE=m @@ -1022,10 +1358,6 @@ CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_REISERFS_FS_SECURITY=y # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y - -# -# XFS support -# # CONFIG_XFS_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set @@ -1034,6 +1366,7 @@ CONFIG_INOTIFY=y CONFIG_DNOTIFY=y # CONFIG_AUTOFS_FS is not set CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems @@ -1062,11 +1395,10 @@ CONFIG_NTFS_RW=y # CONFIG_PROC_FS=y CONFIG_SYSFS=y -# CONFIG_DEVPTS_FS_XATTR is not set CONFIG_TMPFS=y -# CONFIG_TMPFS_XATTR is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y +# CONFIG_RELAYFS_FS is not set # # Miscellaneous filesystems @@ -1082,6 +1414,7 @@ CONFIG_RAMFS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_SUMMARY is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y @@ -1124,6 +1457,7 @@ CONFIG_CIFS_POSIX=y # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set # # Partition Types @@ -1247,6 +1581,7 @@ CONFIG_CRYPTO_TEST=m # Library routines # CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y diff --git a/packages/linux/openslug-kernel-2.6.9/.mtn2git_empty b/packages/linux/nslu2-kernel/files/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/linux/openslug-kernel-2.6.9/.mtn2git_empty +++ b/packages/linux/nslu2-kernel/files/.mtn2git_empty diff --git a/packages/linux/openslug-kernel-2.6.11.2/anonymiser.patch b/packages/linux/nslu2-kernel/files/anonymiser.patch index 3384b15fe2..3384b15fe2 100644 --- a/packages/linux/openslug-kernel-2.6.11.2/anonymiser.patch +++ b/packages/linux/nslu2-kernel/files/anonymiser.patch diff --git a/packages/linux/nslu2-kernel_2.6.11-mm4.bb b/packages/linux/nslu2-kernel_2.6.11-mm4.bb deleted file mode 100644 index e4ac2b5fb9..0000000000 --- a/packages/linux/nslu2-kernel_2.6.11-mm4.bb +++ /dev/null @@ -1,22 +0,0 @@ -# Kernel for NSLU2 -PR = "r1" -include nslu2-kernel.inc - -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# - -N2K_PATCHES = "\ - file://bootramdisk.patch;patch=1 \ - file://reiser4.patch;patch=1 \ - file://nslu2_2.6.11.patch;patch=1 \ - file://compile-switches.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ - file://x1205-rtc.c-mm.patch;patch=1 \ -" diff --git a/packages/linux/nslu2-kernel_2.6.11.8.bb b/packages/linux/nslu2-kernel_2.6.11.8.bb deleted file mode 100644 index 7a1a1548e5..0000000000 --- a/packages/linux/nslu2-kernel_2.6.11.8.bb +++ /dev/null @@ -1,3 +0,0 @@ -# Kernel for NSLU2 -PR = "r0" -include nslu2-kernel.inc diff --git a/packages/linux/nslu2-kernel_2.6.12.2.bb b/packages/linux/nslu2-kernel_2.6.12.2.bb deleted file mode 100644 index ef2f1f6b2c..0000000000 --- a/packages/linux/nslu2-kernel_2.6.12.2.bb +++ /dev/null @@ -1,38 +0,0 @@ -# Kernel for NSLU2 -# -# Increment PR_CONFIG for changes to the nslu2-kernel specific -# defconfig (do *NOT* increment anything in here for changes -# to other kernel configs!) -PR_CONFIG = "0" -# -# Increment the number below (i.e. the digits after PR) when -# making changes within this file or for changes to the patches -# applied to the kernel. -PR = "r17.${PR_CONFIG}" - -include nslu2-kernel.inc - -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# - -N2K_PATCHES = "\ - file://nslu2-arch.patch;patch=1 \ - file://x1205-rtc.patch;patch=1 \ - file://ixp4xx-regs.patch;patch=1 \ - file://compile-switches.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ - file://xscale-reset.patch;patch=1 \ - file://x1205-rtc.c-id.patch;patch=1 \ - file://mtd-shutdown.patch;patch=1 \ - file://missing-exports.patch;patch=1 \ - file://timer.patch;patch=1 \ - file://nslu2-io_rpbutton.patch;patch=1 \ - file://disk_led_blinking.patch;patch=1 \ -" diff --git a/packages/linux/nslu2-kernel_2.6.12.bb b/packages/linux/nslu2-kernel_2.6.12.bb deleted file mode 100644 index 73adf4aab0..0000000000 --- a/packages/linux/nslu2-kernel_2.6.12.bb +++ /dev/null @@ -1,35 +0,0 @@ -# Kernel for NSLU2 -# -# Increment PR_CONFIG for changes to the nslu2-kernel specific -# defconfig (do *NOT* increment anything in here for changes -# to other kernel configs!) -PR_CONFIG = "0" -# -# Increment the number below (i.e. the digits after PR) when -# making changes within this file or for changes to the patches -# applied to the kernel. -PR = "r3.${PR_CONFIG}" - -include nslu2-kernel.inc - -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# - -N2K_PATCHES = "\ - file://nslu2-arch.patch;patch=1 \ - file://x1205-rtc.patch;patch=1 \ - file://ixp4xx-regs.patch;patch=1 \ - file://compile-switches.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ - file://xscale-reset.patch;patch=1 \ - file://x1205-rtc.c-id.patch;patch=1 \ - file://mtd-shutdown.patch;patch=1 \ - file://timer.patch;patch=1 \ -" diff --git a/packages/linux/nslu2-kernel_2.6.13.2.bb b/packages/linux/nslu2-kernel_2.6.13.2.bb deleted file mode 100644 index 5dcb1a2e9c..0000000000 --- a/packages/linux/nslu2-kernel_2.6.13.2.bb +++ /dev/null @@ -1,37 +0,0 @@ -# Kernel for NSLU2 -# -# Increment PR_CONFIG for changes to the nslu2-kernel specific -# defconfig (do *NOT* increment anything in here for changes -# to other kernel configs!) -PR_CONFIG = "0" -# -# Increment the number below (i.e. the digits after PR) when -# making changes within this file or for changes to the patches -# applied to the kernel. -PR = "r1.${PR_CONFIG}" - -include nslu2-kernel.inc - -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# -# There are no added files no more. -N2K_FILES = "" - -N2K_PATCHES = "\ - file://10-ixp4xx-copy-from.patch;patch=1 \ - file://20-timer.patch;patch=1 \ - file://30-i2c-x1205.patch;patch=1 \ - file://50-nslu2-arch.patch;patch=1 \ - file://50-nslu2-include.patch;patch=1 \ - file://50-nslu2-setup.patch;patch=1 \ - file://55-nslu2-rpbutton.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ -" - -CMDLINE_KERNEL_OPTIONS = "" diff --git a/packages/linux/nslu2-kernel_2.6.14-rc5-mm1.bb b/packages/linux/nslu2-kernel_2.6.14-mm1.bb index 205a57a5f4..ded1e5930d 100644 --- a/packages/linux/nslu2-kernel_2.6.14-rc5-mm1.bb +++ b/packages/linux/nslu2-kernel_2.6.14-mm1.bb @@ -8,35 +8,26 @@ PR_CONFIG = "0" # Increment the number below (i.e. the digits after PR) when # making changes within this file or for changes to the patches # applied to the kernel. -PR = "r0.${PR_CONFIG}" +PR = "r1.${PR_CONFIG}" include nslu2-kernel.inc -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# -# There are no added files no more. -N2K_FILES = "" - +# N2K_PATCHES - full list of patches to apply N2K_PATCHES = "\ + file://00-memory-h-page-shift.patch;patch=1 \ file://90-ixp4xx-pci-le.patch;patch=1 \ - file://10-ixp4xx-copy-from.patch;patch=1 \ - file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ - file://15-ixp4xx-writesb-l-w.patch;patch=1 \ - file://16-ixp4xx-ioremap.patch;patch=1 \ file://18-ixp4xx-io-h-addr.patch;patch=1 \ + file://19-jffs2-force-be.patch;patch=1 \ file://20-timer.patch;patch=1 \ - file://25-nslu2-arch-reset.patch;patch=1 \ - file://28-spinlock-up.patch;patch=1 \ file://29-ipv4-route-c-spinlock.patch;patch=1 \ + file://30-i2c-x1205-mm1.patch;patch=1 \ file://50-nslu2-arch.patch;patch=1 \ + file://55-nslu2-rtc.patch;patch=1 \ file://60-nslu2-beeper.patch;patch=1 \ + file://70-nslu2-io.patch;patch=1 \ file://75-nslu2-leds.patch;patch=1 \ + file://80-nslu2-class-device-create.patch;patch=1 \ + file://90-pegasus.patch;patch=1 \ file://anonymiser.patch;patch=1 \ " diff --git a/packages/linux/nslu2-kernel_2.6.14.bb b/packages/linux/nslu2-kernel_2.6.14.3.bb index 122e88de6d..eca0862724 100644 --- a/packages/linux/nslu2-kernel_2.6.14.bb +++ b/packages/linux/nslu2-kernel_2.6.14.3.bb @@ -3,26 +3,16 @@ # Increment PR_CONFIG for changes to the nslu2-kernel specific # defconfig (do *NOT* increment anything in here for changes # to other kernel configs!) -PR_CONFIG = "1" +PR_CONFIG = "0" # # Increment the number below (i.e. the digits after PR) when # making changes within this file or for changes to the patches # applied to the kernel. -PR = "r3.${PR_CONFIG}" +PR = "r0.${PR_CONFIG}" include nslu2-kernel.inc -# N2K_EXTRA_PATCHES - list of patches to apply (can include -# patches to the files installed above) -# N2K_PATCHES - full list of patches to apply, defaults to: -# file://nslu2_2.6.11.patch;patch=1 -# file://usbnet.patch;patch=1 -# file://ixp4xx_copy_from.patch;patch=1 -# ${N2K_EXTRA_PATCHES} -# -# There are no added files no more. -N2K_FILES = "" - +# N2K_PATCHES - full list of patches to apply N2K_PATCHES = "\ file://90-ixp4xx-pci-le.patch;patch=1 \ file://10-ixp4xx-copy-from.patch;patch=1 \ @@ -30,8 +20,7 @@ N2K_PATCHES = "\ file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ file://15-ixp4xx-writesb-l-w.patch;patch=1 \ file://18-ixp4xx-io-h-addr.patch;patch=1 \ - file://20-timer.patch;patch=1 \ - file://28-spinlock-up.patch;patch=1 \ + file://19-jffs2-force-be.patch;patch=1 \ file://29-ipv4-route-c-spinlock.patch;patch=1 \ file://30-i2c-x1205.patch;patch=1 \ file://50-nslu2-arch.patch;patch=1 \ @@ -40,6 +29,7 @@ N2K_PATCHES = "\ file://70-nslu2-io.patch;patch=1 \ file://75-nslu2-leds.patch;patch=1 \ file://90-pegasus.patch;patch=1 \ + file://20-timer.patch;patch=1 \ file://anonymiser.patch;patch=1 \ " diff --git a/packages/linux/nslu2-kernel_2.6.15-rc2.bb b/packages/linux/nslu2-kernel_2.6.15-rc2.bb new file mode 100644 index 0000000000..d2b55c8e7b --- /dev/null +++ b/packages/linux/nslu2-kernel_2.6.15-rc2.bb @@ -0,0 +1,35 @@ +# Kernel for NSLU2 +# +# Increment PR_CONFIG for changes to the nslu2-kernel specific +# defconfig (do *NOT* increment anything in here for changes +# to other kernel configs!) +PR_CONFIG = "0" +# +# Increment the number below (i.e. the digits after PR) when +# making changes within this file or for changes to the patches +# applied to the kernel. +PR = "r0.${PR_CONFIG}" + +include nslu2-kernel.inc + +# N2K_PATCHES - full list of patches to apply +N2K_PATCHES = "\ + file://00-memory-h-page-shift.patch;patch=1 \ + file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ + file://19-jffs2-force-be.patch;patch=1 \ + file://55-rtc-x1205.patch;patch=1 \ + file://60-nslu2-beeper.patch;patch=1 \ + file://60-nslu2-rtc.patch;patch=1 \ + file://75-nslu2-leds.patch;patch=1 \ + file://80-nslu2-io.patch;patch=1 \ + file://81-nslu2-class-device-create.patch;patch=1 \ + file://90-ixp4xx-nslu2.patch;patch=1 \ + file://20-timer.patch;patch=1 \ + file://anonymiser.patch;patch=1 \ +" + +# These options get added to the kernel command line, only put things +# specific to the bootstrap of *this* kernel in here - DISTRO specfic +# config must be in CMDLINE_ROOT (see the full definition of CMDLINE +# in nslu2-kernel.inc) +CMDLINE_KERNEL_OPTIONS = "x1205.hctosys=1" diff --git a/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad b/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad index 90791c65f8..dd67df8a5b 100644 --- a/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad +++ b/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad @@ -102,7 +102,6 @@ CONFIG_ARCH_SA1100=y # CONFIG_SA1100_SHANNON is not set # CONFIG_SA1100_SHERMAN is not set CONFIG_SA1100_SIMPAD=y -# CONFIG_SA1100_SIMPAD_SINUSPAD is not set # CONFIG_SA1100_SIMPUTER is not set # CONFIG_SA1100_PFS168 is not set # CONFIG_SA1100_VICTOR is not set @@ -304,10 +303,6 @@ CONFIG_MTD_SA1100=y # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set -CONFIG_MTD_MTDRAM=y -CONFIG_MTDRAM_TOTAL_SIZE=32768 -CONFIG_MTDRAM_ERASE_SIZE=1 -CONFIG_MTDRAM_ABS_POS=C2000000 # CONFIG_MTD_BLKMTD is not set # @@ -332,6 +327,7 @@ CONFIG_MTDRAM_ABS_POS=C2000000 # # Block devices # +CONFIG_BLK_DEV_MMC=m # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set diff --git a/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad b/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad index 88d334a6fe..ebeab96e23 100644 --- a/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad +++ b/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad @@ -102,7 +102,6 @@ CONFIG_ARCH_SA1100=y # CONFIG_SA1100_SHANNON is not set # CONFIG_SA1100_SHERMAN is not set CONFIG_SA1100_SIMPAD=y -# CONFIG_SA1100_SIMPAD_SINUSPAD is not set # CONFIG_SA1100_SIMPUTER is not set # CONFIG_SA1100_PFS168 is not set # CONFIG_SA1100_VICTOR is not set @@ -305,10 +304,6 @@ CONFIG_MTD_SA1100=y # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set -CONFIG_MTD_MTDRAM=y -CONFIG_MTDRAM_TOTAL_SIZE=32768 -CONFIG_MTDRAM_ERASE_SIZE=1 -CONFIG_MTDRAM_ABS_POS=C2000000 # CONFIG_MTD_BLKMTD is not set # @@ -333,6 +328,7 @@ CONFIG_MTDRAM_ABS_POS=C2000000 # # Block devices # +CONFIG_BLK_DEV_MMC=m # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set diff --git a/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb b/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb index fb12c70b59..5bd4c85483 100644 --- a/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb +++ b/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb @@ -1,5 +1,11 @@ +# to use another configuration, duplicate this file, change the sizes, +# change the filename accordingly, and add the followin line to local.conf: +# PREFERRED_PROVIDER_virtual/kernel_kernel24 = "opensimpad-64+0" + SECTION = "kernel" include opensimpad_${PV}.bb +# fraction of the memory (in Mb) used for RAM SIMPAD_MEM = "64" +# fraction of the memory (in Mb) used as a ramdisk SIMPAD_RD = "0" diff --git a/packages/linux/opensimpad/mmc-spi.patch b/packages/linux/opensimpad/mmc-spi.patch new file mode 100644 index 0000000000..1841b45fbd --- /dev/null +++ b/packages/linux/opensimpad/mmc-spi.patch @@ -0,0 +1,885 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- /dev/null ++++ linux-2.4.27/drivers/block/mmc.c +@@ -0,0 +1,857 @@ ++/* ++ * Copyright (c) Cl�ment Ballabriga, 2005 - GPL ++ * Copyright (c) Guylhem Aznar, 2005 - GPL ++ * ++ * Please check http://externe.net/zaurus/simpad-bluetooth reference design first. ++ * ++ * Based on Madsuk/Rohde work on a MMC driver for the WRT54G. ++ * ++ * This is an ugly hack of a driver. I am surprised if it ever works! ++ * So please use a real driver or contribute one to the 2.4/2.6 mmc framework ++ */ ++ ++#include <linux/stddef.h> ++#include <linux/delay.h> ++#include <linux/timer.h> ++#include <linux/module.h> ++#include <linux/mm.h> ++#include <linux/init.h> ++#include <linux/fs.h> ++#include <linux/blkpg.h> ++#include <linux/hdreg.h> ++#include <linux/major.h> ++ ++#include <asm/hardware.h> ++#include <asm/uaccess.h> ++#include <asm/io.h> ++ ++/* ++ * ******************************************************************* ++ * ++ * This is the only configurable part. ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++// #define DEBUG 1 ++ ++#define DEVICE_NAME "mmc" ++#define DEVICE_NR(device) (MINOR(device)) ++#define DEVICE_ON(device) ++#define DEVICE_OFF(device) ++#define MAJOR_NR 121 ++ ++/* Let that include where it is or compilation fails on INIT_REQUEST/CURRENT */ ++ ++#include <linux/blk.h> ++ ++MODULE_AUTHOR("Guylhem Aznar <mmc-driver @externe.net>"); ++MODULE_DESCRIPTION("Driver for MMC/SD-Cards in SPI mode by GPIO"); ++MODULE_SUPPORTED_DEVICE("Simpad"); ++MODULE_LICENSE("GPL"); ++ ++/* Registers should be architecture independant - but it's not ! */ ++ ++#define MAP_START 0x90040000 ++#define MAP_SIZE 0x00001000 ++ ++#define MY_GPLR 0 ++#define MY_GPDR 1 ++#define MY_GPSR 2 ++#define MY_GPCR 3 ++#define MY_GRER 4 ++#define MY_GFER 5 ++#define MY_GEDR 6 ++#define MY_GAFR 7 ++ ++/* ++ * If you are using different GPIOs in your hardware hack, you must ++ * first make sure they are unused for other functions and then ++ * configure them here. ++ * ++ * On the simpad I use spare pins from the UART1 (internal serial port): ++ * - DCD (in) : GPIO 23 : DO ++ * - DTR (out) : GPIO 07 : CS ++ * - RI (in) : GPIO 19 : CLK ++ * - DSR (in) : GPIO 06 : DI ++ * ++ * Don't worry about in/out original function - the GPIOs will be ++ * reprogrammed. ++ */ ++ ++#define GPIO_SD_DO 23 ++#define GPIO_SD_CS 7 ++#define GPIO_SD_CLK 19 ++#define GPIO_SD_DI 6 ++ ++/* ++ * ******************************************************************* ++ * ++ * Do not change anything below ! ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++ ++/* GPIO states */ ++#define LOW 0 ++#define HIGH 1 ++ ++#define INPUT 0 ++#define OUTPUT 1 ++ ++#define PRESENT 1 ++#define ABSENT 0 ++ ++typedef unsigned int uint32; ++typedef unsigned long u32_t; ++typedef unsigned short u16_t; ++typedef unsigned char u8_t; ++ ++/* we have only one device */ ++static int hd_sizes[1 << 6]; ++static int hd_blocksizes[1 << 6]; ++static int hd_hardsectsizes[1 << 6]; ++static int hd_maxsect[1 << 6]; ++static struct hd_struct hd[1 << 6]; ++ ++static struct timer_list mmc_timer; ++ ++/* start with no card */ ++static int mmc_media_detect = 0; ++static int mmc_media_changed = 1; ++ ++extern struct gendisk hd_gendisk; ++ ++/* Use only one global device */ ++typedef struct gpio_s gpio_t; ++struct gpio_s { ++ volatile u32_t *base; ++}; ++ ++static gpio_t gp = { ++ (void *) io_p2v(MAP_START) ++}; ++ ++/* ++ * ******************************************************************* ++ * ++ * Begin GPIO hardware access functions. ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++gpio_t *gpio_open(void) ++{ ++ static gpio_t tmp; ++ tmp.base = (void *) io_p2v(MAP_START); ++ return (&tmp); ++} ++ ++void gpio_setdir(gpio_t * g, int num, int dir) ++{ ++ if (dir == 1) { ++ g->base[MY_GPDR] |= (1 << num); ++ } else { ++ g->base[MY_GPDR] &= ~(1 << num); ++ ++ } ++} ++ ++void gpio_setalt(gpio_t * g, int num, int alt) ++{ ++ if (alt == 1) { ++ g->base[MY_GAFR] |= (1 << num); ++ } else { ++ g->base[MY_GAFR] &= ~(1 << num); ++ } ++} ++ ++int gpio_getdir(gpio_t * g, int num) ++{ ++ return ((g->base[MY_GPDR] & (1 << num)) ? 1 : 0); ++} ++ ++int gpio_getalt(gpio_t * g, int num) ++{ ++ return ((g->base[MY_GAFR] & (1 << num)) ? 1 : 0); ++} ++ ++static int gpio_read(gpio_t * g, int num) ++{ ++ int what; ++ ++ what=(g->base[MY_GPLR] & (1 << num)) ? 1 : 0; ++ ++#ifdef DEBUG ++ if (num == GPIO_SD_DO) { ++ printk ("GPIO_SD_DO read: %u\n", what); ++ } ++#endif ++ return (what); ++} ++ ++static int gpio_write(gpio_t * g, int num, int val) ++{ ++#ifdef DEBUG ++ int check; ++#endif ++ ++ if (val == 1) { ++ g->base[MY_GPSR] = 1 << num; ++ } else { ++ g->base[MY_GPCR] = 1 << num; ++ } ++#ifdef DEBUG ++ check=gpio_read(g,num); ++ if (check != val) ++ { ++ printk ("Error while write to %d: found %d after writing %d\n",num, check, val); ++ return (1); ++ } ++ else return(0); ++#endif ++ ++} ++ ++/* ++ * ******************************************************************* ++ * ++ * Begin SPI hardware access functions. ++ * ++ * ******************************************************************* ++ * ++ */ ++static int mmc_spi_media_detect(void) ++{ ++// FIXME: add card detection/test by SPI ++ ++ return 1; ++} ++ ++static int mmc_spi_hardware_init(void) ++{ ++ /*unsigned char gpio_outen;*/ ++ ++ printk("mmc: GPIO init\n"); ++ ++ /* Now global ++ * gp = gpio_open(); */ ++ ++ /* Cut existing functions */ ++ gpio_setalt(&gp, GPIO_SD_CLK, 0); ++ gpio_setalt(&gp, GPIO_SD_DI, 0); ++ gpio_setalt(&gp, GPIO_SD_DO, 0); ++ gpio_setalt(&gp, GPIO_SD_CS, 0); ++ ++ /* Remap directions */ ++ gpio_setdir(&gp, GPIO_SD_CLK, OUTPUT); ++ gpio_setdir(&gp, GPIO_SD_DI, OUTPUT); ++ gpio_setdir(&gp, GPIO_SD_DO, INPUT); ++ gpio_setdir(&gp, GPIO_SD_CS, OUTPUT); ++ ++ printk("mmc: initialising MMC\n"); ++ ++ /* Start */ ++ gpio_write(&gp, GPIO_SD_CLK, LOW); ++ gpio_write(&gp, GPIO_SD_DI, LOW); ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ return 0; ++} ++ ++/* return what has been read, write the parameter */ ++ ++static unsigned char mmc_spi_readwrite(unsigned char data_out) ++{ ++ int i; ++ unsigned char result = 0/*, tmp_data = 0*/; ++ ++ for (i = 0; i < 8; i++) { ++ if (data_out & (0x01 << (7 - i))) ++ gpio_write(&gp, GPIO_SD_DI, HIGH); ++ else ++ gpio_write(&gp, GPIO_SD_DI, LOW); ++ ++ gpio_write(&gp, GPIO_SD_CLK, HIGH); ++ ++ result <<= 1; ++ ++ if (gpio_read(&gp, GPIO_SD_DO) == 1) ++ result |= 1; ++ ++ gpio_write(&gp, GPIO_SD_CLK, LOW); ++ } ++ ++ return (result); ++} ++ ++static int mmc_spi_card_init(void) ++{ ++ unsigned char result = 0; ++ short i, j; ++ unsigned long flags; ++ ++ save_flags(flags); ++ cli(); ++ ++ printk("GPIO_SD_CS dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_CS), gpio_getalt(&gp, GPIO_SD_CS)); ++ printk("GPIO_SD_DI dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_DI), gpio_getalt(&gp, GPIO_SD_DI)); ++ printk("GPIO_SD_DO dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_DO), gpio_getalt(&gp, GPIO_SD_DO)); ++ printk("GPIO_SD_CS dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_CLK), gpio_getalt(&gp, GPIO_SD_CLK)); ++ ++ printk("mmc: card init 1/2\n"); ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ for (i = 0; i < 20; i++) ++ mmc_spi_readwrite(0xff); ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ ++ mmc_spi_readwrite(0x40); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0x95); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x01) ++ break; ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result != 0x01) { ++ printk("mmc: card init %d error\n", result); ++ restore_flags(flags); ++ return (1); ++ } ++ ++ printk("mmc: card init 2/2\n"); ++ for (j = 0; j < 10000; j++) { ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ ++ mmc_spi_readwrite(0x41); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result == 0x00) { ++ restore_flags(flags); ++ printk("mmc: card init 3/3\n"); ++ return (0); ++ } ++ } ++ restore_flags(flags); ++ ++ return (2); ++} ++ ++ ++static int mmc_spi_card_config(void) ++{ ++ unsigned char result = 0; ++ short i; ++ unsigned char csd[32]; ++ unsigned int c_size; ++ unsigned int c_size_mult; ++ unsigned int mult; ++ unsigned int read_bl_len; ++ unsigned int blocknr = 0; ++ unsigned int block_len = 0; ++ unsigned int size = 0; ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x49); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xfe) ++ break; ++ } ++ if (result != 0xfe) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (2); ++ } ++ for (i = 0; i < 16; i++) { ++ result = mmc_spi_readwrite(0xff); ++ csd[i] = result; ++ } ++ for (i = 0; i < 2; i++) { ++ result = mmc_spi_readwrite(0xff); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ return (3); ++ ++ c_size = csd[8] + csd[7] * 256 + (csd[6] & 0x03) * 256 * 256; ++ c_size >>= 6; ++ c_size_mult = csd[10] + (csd[9] & 0x03) * 256; ++ c_size_mult >>= 7; ++ read_bl_len = csd[5] & 0x0f; ++ mult = 1; ++ mult <<= c_size_mult + 2; ++ blocknr = (c_size + 1) * mult; ++ block_len = 1; ++ block_len <<= read_bl_len; ++ size = block_len * blocknr; ++ size >>= 10; ++ ++ for (i = 0; i < (1 << 6); i++) { ++ hd_blocksizes[i] = 1024; ++ hd_hardsectsizes[i] = block_len; ++ hd_maxsect[i] = 256; ++ } ++ hd_sizes[0] = size; ++ hd[0].nr_sects = blocknr; ++ ++ ++ printk("Size = %d, hardsectsize = %d, sectors = %d\n", ++ size, block_len, blocknr); ++ ++ return 0; ++} ++ ++ ++/* ++ * ******************************************************************* ++ * ++ * End of SPI hardware access functions. ++ * ++ * ******************************************************************* ++ */ ++ ++ ++static int mmc_write_block(unsigned int dest_addr, unsigned char *data) ++{ ++ unsigned int address; ++ unsigned char result = 0; ++ unsigned char ab0, ab1, ab2, ab3; ++ int i; ++ ++ address = dest_addr; ++ ++ ab3 = 0xff & (address >> 24); ++ ab2 = 0xff & (address >> 16); ++ ab1 = 0xff & (address >> 8); ++ ab0 = 0xff & address; ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x58); ++ mmc_spi_readwrite(ab3); /* msb */ ++ mmc_spi_readwrite(ab2); ++ mmc_spi_readwrite(ab1); ++ mmc_spi_readwrite(ab0); /* lsb */ ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ ++ mmc_spi_readwrite(0xfe); ++ for (i = 0; i < 512; i++) ++ mmc_spi_readwrite(data[i]); ++ for (i = 0; i < 2; i++) ++ mmc_spi_readwrite(0xff); ++ ++ for (i = 0; i < 1000000; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xff) ++ break; ++ } ++ if (result != 0xff) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (3); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (0); ++} ++ ++static int mmc_read_block(unsigned char *data, unsigned int src_addr) ++{ ++ unsigned int address; ++ unsigned char result = 0; ++ unsigned char ab0, ab1, ab2, ab3; ++ int i; ++ ++ address = src_addr; ++ ++ ab3 = 0xff & (address >> 24); ++ ab2 = 0xff & (address >> 16); ++ ab1 = 0xff & (address >> 8); ++ ab0 = 0xff & address; ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x51); ++ mmc_spi_readwrite(ab3); /* msb */ ++ mmc_spi_readwrite(ab2); ++ mmc_spi_readwrite(ab1); ++ mmc_spi_readwrite(ab0); /* lsb */ ++ ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ for (i = 0; i < 100000; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xfe) ++ break; ++ } ++ if (result != 0xfe) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (2); ++ } ++ for (i = 0; i < 512; i++) { ++ result = mmc_spi_readwrite(0xff); ++ data[i] = result; ++ } ++ for (i = 0; i < 2; i++) { ++ result = mmc_spi_readwrite(0xff); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ ++ return (0); ++} ++ ++static void mmc_request(request_queue_t * q) ++{ ++ unsigned int mmc_address; ++ unsigned char *buffer_address; ++ int nr_sectors; ++ int i; ++ int cmd; ++ int result, code; ++ ++ (void) q; ++ while (1) { ++ code = 1; // Default is success ++ INIT_REQUEST; ++ mmc_address = ++ (CURRENT->sector + ++ hd[MINOR(CURRENT->rq_dev)].start_sect) * hd_hardsectsizes[0]; ++ buffer_address = CURRENT->buffer; ++ nr_sectors = CURRENT->current_nr_sectors; ++ cmd = CURRENT->cmd; ++ if (((CURRENT->sector + CURRENT->current_nr_sectors + ++ hd[MINOR(CURRENT->rq_dev)].start_sect) > hd[0].nr_sects) ++ || (mmc_media_detect == 0)) { ++ code = 0; ++ } else if (cmd == READ) { ++ spin_unlock_irq(&io_request_lock); ++ for (i = 0; i < nr_sectors; i++) { ++ result = mmc_read_block(buffer_address, mmc_address); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_read_block\n", result); ++ code = 0; ++ break; ++ } else { ++ mmc_address += hd_hardsectsizes[0]; ++ buffer_address += hd_hardsectsizes[0]; ++ } ++ } ++ spin_lock_irq(&io_request_lock); ++ } else if (cmd == WRITE) { ++ spin_unlock_irq(&io_request_lock); ++ for (i = 0; i < nr_sectors; i++) { ++ result = mmc_write_block(mmc_address, buffer_address); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_write_block\n", result); ++ code = 0; ++ break; ++ } else { ++ mmc_address += hd_hardsectsizes[0]; ++ buffer_address += hd_hardsectsizes[0]; ++ } ++ } ++ spin_lock_irq(&io_request_lock); ++ } else { ++ code = 0; ++ } ++ end_request(code); ++ } ++} ++ ++ ++static int mmc_open(struct inode *inode, struct file *filp) ++{ ++ /*int device;*/ ++ (void) filp; ++ mmc_media_detect = mmc_spi_media_detect(); ++ ++ if (mmc_media_detect == 0) ++ return -ENODEV; ++ ++#if defined(MODULE) ++ MOD_INC_USE_COUNT; ++#endif ++ return 0; ++} ++ ++static int mmc_release(struct inode *inode, struct file *filp) ++{ ++ (void) filp; ++ fsync_dev(inode->i_rdev); ++ invalidate_buffers(inode->i_rdev); ++ ++#if defined(MODULE) ++ MOD_DEC_USE_COUNT; ++#endif ++ return 0; ++} ++ ++static int mmc_revalidate(kdev_t dev) ++{ ++ int target, max_p, start, i; ++ ++ mmc_media_detect = mmc_spi_media_detect(); ++ ++ if (mmc_media_detect == 0) ++ return -ENODEV; ++ ++ target = DEVICE_NR(dev); ++ ++ max_p = hd_gendisk.max_p; ++ start = target << 6; ++ for (i = max_p - 1; i >= 0; i--) { ++ int minor = start + i; ++ invalidate_device(MKDEV(MAJOR_NR, minor), 1); ++ hd_gendisk.part[minor].start_sect = 0; ++ hd_gendisk.part[minor].nr_sects = 0; ++ } ++ ++ grok_partitions(&hd_gendisk, target, 1 << 6, hd_sizes[0] * 2); ++ ++ return 0; ++} ++ ++static int mmc_ioctl(struct inode *inode, struct file *filp, ++ unsigned int cmd, unsigned long arg) ++{ ++ if (!inode || !inode->i_rdev) ++ return -EINVAL; ++ ++ switch (cmd) { ++ case BLKGETSIZE: ++ return put_user(hd[MINOR(inode->i_rdev)].nr_sects, ++ (unsigned long *) arg); ++ case BLKGETSIZE64: ++ return put_user((u64) hd[MINOR(inode->i_rdev)]. ++ nr_sects, (u64 *) arg); ++ case BLKRRPART: ++ if (!capable(CAP_SYS_ADMIN)) ++ return -EACCES; ++ ++ return mmc_revalidate(inode->i_rdev); ++ case HDIO_GETGEO: ++ { ++ struct hd_geometry *loc, g; ++ loc = (struct hd_geometry *) arg; ++ if (!loc) ++ return -EINVAL; ++ g.heads = 4; ++ g.sectors = 16; ++ g.cylinders = hd[0].nr_sects / (4 * 16); ++ g.start = hd[MINOR(inode->i_rdev)].start_sect; ++ return copy_to_user(loc, &g, sizeof(g)) ? -EFAULT : 0; ++ } ++ default: ++ return blk_ioctl(inode->i_rdev, cmd, arg); ++ } ++} ++ ++ ++/* ++static int mmc_check_media_change(kdev_t dev) ++{ ++ (void) dev; ++ if (mmc_media_changed == 1) { ++ mmc_media_changed = 0; ++ return 1; ++ } else ++ return 0; ++} ++*/ ++ ++static struct block_device_operations mmc_bdops = { ++ open:mmc_open, ++ release:mmc_release, ++ ioctl:mmc_ioctl, ++/* FIXME: add media change support ++ * check_media_change: mmc_check_media_change, ++ * revalidate: mmc_revalidate, ++ */ ++}; ++ ++static struct gendisk hd_gendisk = { ++ major:MAJOR_NR, ++ major_name:DEVICE_NAME, ++ minor_shift:6, ++ max_p:1 << 6, ++ part:hd, ++ sizes:hd_sizes, ++ fops:&mmc_bdops, ++}; ++ ++static int mmc_init(void) ++{ ++ int result; ++ ++ result = mmc_spi_hardware_init(); ++ ++ if (result != 0) { ++ printk("mmc: error %d in mmc_spi_hardware_init\n", result); ++ return -1; ++ } ++ ++ result = mmc_spi_card_init(); ++ if (result != 0) { ++ // Give it an extra shot ++ result = mmc_spi_card_init(); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_card_init\n", result); ++ return -1; ++ } ++ } ++ ++ memset(hd_sizes, 0, sizeof(hd_sizes)); ++ result = mmc_spi_card_config(); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_card_config\n", result); ++ return -1; ++ } ++ ++ ++ blk_size[MAJOR_NR] = hd_sizes; ++ ++ memset(hd, 0, sizeof(hd)); ++ hd[0].nr_sects = hd_sizes[0] * 2; ++ ++ blksize_size[MAJOR_NR] = hd_blocksizes; ++ hardsect_size[MAJOR_NR] = hd_hardsectsizes; ++ max_sectors[MAJOR_NR] = hd_maxsect; ++ ++ hd_gendisk.nr_real = 1; ++ ++ register_disk(&hd_gendisk, MKDEV(MAJOR_NR, 0), 1 << 6, ++ &mmc_bdops, hd_sizes[0] * 2); ++ ++ return 0; ++} ++ ++static void mmc_exit(void) ++{ ++ blk_size[MAJOR_NR] = NULL; ++ blksize_size[MAJOR_NR] = NULL; ++ hardsect_size[MAJOR_NR] = NULL; ++ max_sectors[MAJOR_NR] = NULL; ++ hd[0].nr_sects = 0; ++} ++ ++static void mmc_check_media(void) ++{ ++ int old_state, new_state; ++ int result; ++ ++ old_state = mmc_media_detect; ++ new_state = mmc_spi_media_detect(); ++ ++ if (old_state != new_state) { ++ mmc_media_changed = 1; ++ if (new_state == PRESENT) { ++ result = mmc_init(); ++ if (result != 0) ++ printk("mmc: error %d in mmc_init\n", result); ++ } else { ++ mmc_exit(); ++ } ++ } ++ ++ /* del_timer(&mmc_timer); ++ mmc_timer.expires = jiffies + 10*HZ; ++ add_timer(&mmc_timer); */ ++} ++ ++static int __init mmc_driver_init(void) ++{ ++ int result; ++ ++ result = devfs_register_blkdev(MAJOR_NR, DEVICE_NAME, &mmc_bdops); ++ if (result < 0) { ++ printk(KERN_WARNING "mmc: can't get major %d\n", MAJOR_NR); ++ return result; ++ } ++ ++ blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), mmc_request); ++ ++ mmc_check_media(); ++ ++ /*init_timer(&mmc_timer); ++ mmc_timer.expires = jiffies + HZ; ++ mmc_timer.function = (void *)mmc_check_media; ++ add_timer(&mmc_timer); */ ++ ++ ++ read_ahead[MAJOR_NR] = 8; ++ add_gendisk(&hd_gendisk); ++ ++ ++ return 0; ++} ++ ++static void __exit mmc_driver_exit(void) ++{ ++ int i; ++ del_timer(&mmc_timer); ++ ++ for (i = 0; i < (1 << 6); i++) ++ fsync_dev(MKDEV(MAJOR_NR, i)); ++ ++ blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR)); ++ del_gendisk(&hd_gendisk); ++ devfs_unregister_blkdev(MAJOR_NR, DEVICE_NAME); ++ mmc_exit(); ++} ++ ++module_init(mmc_driver_init); ++module_exit(mmc_driver_exit); +--- linux-2.4.27/drivers/block/Config.in~mmc-spi ++++ linux-2.4.27/drivers/block/Config.in +@@ -4,6 +4,7 @@ + mainmenu_option next_comment + comment 'Block devices' + ++tristate 'MMC SPI driver' CONFIG_BLK_DEV_MMC + tristate 'Normal floppy disk support' CONFIG_BLK_DEV_FD + if [ "$CONFIG_AMIGA" = "y" ]; then + tristate 'Amiga floppy support' CONFIG_AMIGA_FLOPPY +--- linux-2.4.27/drivers/block/Makefile~mmc-spi ++++ linux-2.4.27/drivers/block/Makefile +@@ -15,6 +15,7 @@ + obj-y := ll_rw_blk.o blkpg.o genhd.o elevator.o + + obj-$(CONFIG_MAC_FLOPPY) += swim3.o ++obj-$(CONFIG_BLK_DEV_MMC) += mmc.o + obj-$(CONFIG_BLK_DEV_FD) += floppy.o + obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o + obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o diff --git a/packages/linux/opensimpad/support-128mb-flash.patch b/packages/linux/opensimpad/support-128mb-flash.patch deleted file mode 100644 index 2a6b1bd31d..0000000000 --- a/packages/linux/opensimpad/support-128mb-flash.patch +++ /dev/null @@ -1,25 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- linux-2.4.27/arch/arm/mach-sa1100/simpad.c~support-128mb-flash -+++ linux-2.4.27/arch/arm/mach-sa1100/simpad.c -@@ -83,11 +83,16 @@ - { - #ifdef CONFIG_SA1100_SIMPAD_SINUSPAD - SET_BANK( 0, 0xc0000000, 32*1024*1024 ); -+ mi->nr_banks = 1; - #else - SET_BANK( 0, 0xc0000000, 64*1024*1024 ); --#endif - mi->nr_banks = 1; -+#endif - -+#ifdef CONFIG_SA1100_SIMPAD_128M -+ SET_BANK( 1, 0xc8000000, 64*1024*1024 ); -+ mi->nr_banks = 2; -+#endif - setup_ramdisk( 1, 0, 0, 8192 ); - setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024 ); - } diff --git a/packages/linux/opensimpad/support-128mb-ram.patch b/packages/linux/opensimpad/support-128mb-ram.patch new file mode 100644 index 0000000000..f0cde06b57 --- /dev/null +++ b/packages/linux/opensimpad/support-128mb-ram.patch @@ -0,0 +1,35 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux-2.4.27/arch/arm/mach-sa1100/simpad.c~support-128mb-ram ++++ linux-2.4.27/arch/arm/mach-sa1100/simpad.c +@@ -83,11 +83,16 @@ + { + #ifdef CONFIG_SA1100_SIMPAD_SINUSPAD + SET_BANK( 0, 0xc0000000, 32*1024*1024 ); ++ mi->nr_banks = 1; + #else + SET_BANK( 0, 0xc0000000, 64*1024*1024 ); +-#endif + mi->nr_banks = 1; ++#endif + ++#ifdef CONFIG_SA1100_SIMPAD_128M ++ SET_BANK( 1, 0xc8000000, 64*1024*1024 ); ++ mi->nr_banks = 2; ++#endif + setup_ramdisk( 1, 0, 0, 8192 ); + setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024 ); + } +--- linux-2.4.27/arch/arm/config.in~support-128mb-ram ++++ linux-2.4.27/arch/arm/config.in +@@ -130,6 +130,7 @@ + dep_bool ' Simpad' CONFIG_SA1100_SIMPAD $CONFIG_ARCH_SA1100 + if [ "$CONFIG_SA1100_SIMPAD" = "y" ]; then + bool ' T-Sinus PAD' CONFIG_SA1100_SIMPAD_SINUSPAD ++ bool ' Simpad with 128Mb RAM' CONFIG_SA1100_SIMPAD_128M + fi + dep_bool ' Simputer' CONFIG_SA1100_SIMPUTER $CONFIG_ARCH_SA1100 + dep_bool ' Tulsa' CONFIG_SA1100_PFS168 $CONFIG_ARCH_SA1100 diff --git a/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb b/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb index a707910122..6970dd994b 100644 --- a/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb +++ b/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb @@ -1,12 +1,12 @@ DESCRIPTION = "Linux kernel for the SIEMENS SIMpad family of devices." -MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" +MAINTAINER = "Frederic Devernay <frederic.devernay@m4x.org>" SECTION = "kernel" LICENSE = "GPL" KV = "${@bb.data.getVar('PV',d,True).split('-')[0]}" VRSV = "${@bb.data.getVar('PV',d,True).split('-')[1]}" PXAV = "${@bb.data.getVar('PV',d,True).split('-')[2]}" JPMV = "${@bb.data.getVar('PV',d,True).split('-')[3]}" -PR = "r19" +PR = "r20" FILESPATH = "${FILE_DIRNAME}/opensimpad-${PV}:${FILE_DIRNAME}/opensimpad:${FILE_DIRNAME}/files:${FILE_DIRNAME}" @@ -26,7 +26,9 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \ file://simpad-apm.diff;patch=1;pnum=0 \ file://simpad-ts-noninput.patch;patch=1 \ file://simpad-pm-updates.patch;patch=1;pnum=0 \ - file://support-128mb-flash.patch;patch=1" + file://support-128mb-ram.patch;patch=1 \ + file://mmc-spi.patch;patch=1 \ +" # apply this when we have a patch that allows building with gcc 3.x: # SRC_URI_append = file://gcc-3.3.patch;patch=1 @@ -65,6 +67,18 @@ do_configure() { echo "CONFIG_MTDRAM_ERASE_SIZE=1" >> ${S}/.config echo "CONFIG_MTDRAM_ABS_POS=$addr" >> ${S}/.config fi + if [ "$total" == "128" ] + then + echo "CCONFIG_SA1100_SIMPAD_128M=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_128M is not set" >> ${S}/.config + fi + if [ "$total" == "32" ] + then + echo "CONFIG_SA1100_SIMPAD_SINUSPAD=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_SINUSPAD is not set" >> ${S}/.config + fi echo "CONFIG_CMDLINE=\"${CMDLINE} mem=${mem}M\"" >> ${S}/.config oe_runmake oldconfig } diff --git a/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb b/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb index 0183f36429..95e483a5c8 100644 --- a/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb +++ b/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Linux kernel for the SIEMENS SIMpad family of devices." -MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" +MAINTAINER = "Frederic Devernay <frederic.devernay@m4x.org>" SECTION = "kernel" LICENSE = "GPL" KV = "${@bb.data.getVar('PV',d,True).split('-')[0]}" @@ -7,7 +7,7 @@ VRSV = "${@bb.data.getVar('PV',d,True).split('-')[1]}" PXAV = "${@bb.data.getVar('PV',d,True).split('-')[2]}" JPMV = "${@bb.data.getVar('PV',d,True).split('-')[3]}" USBV= "usb20040610" -PR = "r1" +PR = "r2" FILESPATH = "${FILE_DIRNAME}/opensimpad-${PV}:${FILE_DIRNAME}/opensimpad:${FILE_DIRNAME}/files:${FILE_DIRNAME}" @@ -28,11 +28,12 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \ file://simpad-apm.patch;patch=1 \ file://simpad-ts-noninput.patch;patch=1 \ file://simpad-pm-updates.patch;patch=1 \ - file://support-128mb-flash.patch;patch=1 \ + file://support-128mb-ram.patch;patch=1 \ file://simpad-proc-sys-board.patch;patch=1 \ file://simpad-serial.patch;patch=1 \ file://mppe-20040216.patch;patch=1 \ file://sa1100-usb-tcl1.patch;patch=1 \ + file://mmc-spi.patch;patch=1 \ " # This applies right after the jpm patch but is useless until we # have sa1100_udc.c @@ -75,6 +76,18 @@ do_configure() { echo "CONFIG_MTDRAM_ERASE_SIZE=1" >> ${S}/.config echo "CONFIG_MTDRAM_ABS_POS=$addr" >> ${S}/.config fi + if [ "$total" == "128" ] + then + echo "CONFIG_SA1100_SIMPAD_128M=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_128M is not set" >> ${S}/.config + fi + if [ "$total" == "32" ] + then + echo "CONFIG_SA1100_SIMPAD_SINUSPAD=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_SINUSPAD is not set" >> ${S}/.config + fi echo "CONFIG_CMDLINE=\"${CMDLINE} mem=${mem}M\"" >> ${S}/.config oe_runmake oldconfig } diff --git a/packages/linux/openslug-kernel-2.6.11.2/ixp4xx_copy_from.patch b/packages/linux/openslug-kernel-2.6.11.2/ixp4xx_copy_from.patch deleted file mode 100644 index 8d0f187d44..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/ixp4xx_copy_from.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- linux-2.6.11/drivers/mtd/maps/ixp4xx.c.orig 2005-03-05 20:00:28.000000000 +0100 -+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-03-05 22:10:48.000000000 +0100 -@@ -29,6 +29,8 @@ - #include <asm/mach-types.h> - #include <asm/mach/flash.h> - -+#include <asm/unaligned.h> -+ - #include <linux/reboot.h> - - #ifndef __ARMEB__ -@@ -60,13 +62,13 @@ static void ixp4xx_copy_from(struct map_ - u16 data; - - for (i = 0; i < (len / 2); i++) { -- data = src[i]; -+ data = get_unaligned((u16*)(src + i)); - dest[i * 2] = BYTE0(data); - dest[i * 2 + 1] = BYTE1(data); - } - - if (len & 1) -- dest[len - 1] = BYTE0(src[i]); -+ dest[len - 1] = BYTE0(get_unaligned((u16*)(src + i))); - } - - /* diff --git a/packages/linux/openslug-kernel-2.6.11.2/mtd-shutdown.patch b/packages/linux/openslug-kernel-2.6.11.2/mtd-shutdown.patch deleted file mode 100644 index e7cce4ebc0..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/mtd-shutdown.patch +++ /dev/null @@ -1,66 +0,0 @@ -# Ensure that the MTD is shut down on halt/reboot, otherwise the -# hardware reset hangs - ---- linux-2.6.12.2/drivers/mtd/maps/ixp4xx.c.orig 2005-07-17 15:07:47.790388300 -0700 -+++ linux-2.6.12.2/drivers/mtd/maps/ixp4xx.c 2005-07-17 17:00:08.082672710 -0700 -@@ -144,6 +144,52 @@ - return 0; - } - -+static void ixp4xx_flash_shutdown(struct device *_dev) -+{ -+ struct platform_device *dev = to_platform_device(_dev); -+ struct flash_platform_data *plat = dev->dev.platform_data; -+ struct ixp4xx_flash_info *info = dev_get_drvdata(&dev->dev); -+ map_word d; -+ -+ dev_set_drvdata(&dev->dev, NULL); -+ -+ if(!info) -+ return; -+ -+ /* -+ * This is required for a soft reboot to work. -+ */ -+ d.x[0] = 0xff; -+ ixp4xx_write16(&info->map, d, 0x55 * 0x2); -+ -+#if 0 -+ /* This is commented out because it seems to cause a kernel -+ * panic (at least if it isn't commented out the kernel fails -+ * to shut down). Should be investigated. -+ */ -+ if (info->mtd) { -+ del_mtd_partitions(info->mtd); -+ map_destroy(info->mtd); -+ } -+#endif -+ if (info->map.map_priv_1) -+ iounmap((void *) info->map.map_priv_1); -+ -+ if (info->partitions) -+ kfree(info->partitions); -+ -+ if (info->res) { -+ release_resource(info->res); -+ kfree(info->res); -+ } -+ -+ if (plat->exit) -+ plat->exit(); -+ -+ /* Disable flash write */ -+ *IXP4XX_EXP_CS0 &= ~IXP4XX_FLASH_WRITABLE; -+} -+ - static int ixp4xx_flash_probe(struct device *_dev) - { - struct platform_device *dev = to_platform_device(_dev); -@@ -243,6 +289,7 @@ - .bus = &platform_bus_type, - .probe = ixp4xx_flash_probe, - .remove = ixp4xx_flash_remove, -+ .shutdown = ixp4xx_flash_shutdown, - }; - - static int __init ixp4xx_flash_init(void) diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2-io.c b/packages/linux/openslug-kernel-2.6.11.2/nslu2-io.c deleted file mode 100644 index d27b6732b0..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2-io.c +++ /dev/null @@ -1,777 +0,0 @@ -//============================================================================= -// -// n2-io.c version 0.1.7 -// Author: Karen Spearel <kas11 at tampabay.rr.com> -// please report problems/bugs directly to the address above -// -// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per -// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk -// -// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD, -// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT -// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER -// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS. -// -//============================================================================= -// GPIO Function State -// 0 Red LED Status -// 1 Green LED Ready = 1 -// 2 Disk 2 LED On = 0 -// 3 Disk 1 LED On = 0 -// 4 Buzzer -// 5 Power Button Pressed = 1 -// 8 Power Down Output = 1 powers down N2 -// 12 Reset Pressed = 0 -//============================================================================= -// this driver is N2 specific and is purposely designed to do the minimum -// necessary to provide the necessary services given the limited memory resources -// of the N2. As OpenN2 develops, addition features will be added as -// suggested by the community. -// -//============================================================================= - -#include <linux/config.h> -#include <linux/version.h> -#include <linux/module.h> -#include <linux/utsname.h> -#include <linux/kernel.h> -#include <linux/major.h> -#include <linux/string.h> -#include <linux/proc_fs.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/errno.h> -#include <linux/fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <linux/interrupt.h> -#include <linux/moduleparam.h> -#include <linux/timer.h> -#include <linux/reboot.h> - -#include <asm/system.h> -#include <asm/uaccess.h> -#include <asm/hardware.h> -#include <asm-arm/irq.h> -#include <asm-arm/delay.h> -#include <asm-arm/signal.h> - -/* Set this to 1 to output lots of debug messages. */ -#if NSLU2_IO_DEBUG -#define nslu2_io_debug(args) printk args -#else -#define nslu2_io_debug(args) ((void)0) -#endif - -#define VERSION "0.1.7" - -#define N2RB_MAJOR 60 //rbuttons -#define N2PB_MAJOR 61 //pbuttons -#define N2BZ_MAJOR 62 //buzzer -#define N2LM_MAJOR 126 - -#define N2PB_IRQ 22 //gpio5 -#define N2RB_IRQ 29 //gpio12 - -#define N2_BEEP_DUR_LONG 2000 -#define N2_BEEP_DUR_MED 400 -#define N2_BEEP_DUR_SHORT 100 -#define N2_BEEP_PITCH_HIGH 250 -#define N2_BEEP_PITCH_MED 500 -#define N2_BEEP_PITCH_LOW 1000 -#define N2_LONG_DELAY 30000 - -#define N2_BZ_GPIO 4 -#define N2_PB_GPIO 5 -#define N2_PO_GPIO 8 //power off -#define N2_RB_GPIO 12 - -#define GPIO_BZ_BM 0x0010 //b0000 0000 0001 0000 -#define GPIO_PB_BM 0x0020 //b0000 0000 0010 0000 -#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 -#define GPIO_RB_BM 0x1000 //b0001 0000 0000 0000 - -#define NOERR 0 - -#define RB_DELAY 50 -#define PB_DELAY 20 - -#define PWR_OFF_STR "poweroff" - - -// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe - -#define N2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible -#define N2BZ_BEEP _IO('M',1) //one beep at current defaults -#define N2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults -#define N2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000 -#define N2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies -#define N2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies -#define N2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever -#define N2BZ_COMBINED _IOW('M',8,long) //combine all params in a long - -#define N2LM_OFF _IOW('M',32,long) -#define N2LM_ON _IOW('M',33,long) -#define N2LM_BLINK _IOW('M',34,long) -#define N2LM_ALT _IOW('M',35,long) -#define N2LM_ALL_ON _IO('M',36) -#define N2LM_ALL_OFF _IO('M',37) - -#define PHYS_LEDS 4 -#define BLINK_DELAY 25 - -// OR Masks to turn these LEDs ON - -#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010 -#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001 -#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011 - -// AND Masks to turn these LEDs OFF - -#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101 -#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110 -#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100 - -// AND Masks to turn these LEDs ON - -#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111 -#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011 - -// Or Masks to turn these LEDs OFF - -#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000 -#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100 - -// EOR masks for toggling LEDs on/off - -#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits -#define RS_GRN_TGL 0x00000002 -#define RS_RED_TGL 0x00000001 -#define DISK1_TGL 0x00000008 -#define DISK2_TGL 0x00000004 - -// The LED names for switches - -#define LED_RS_RED 0 -#define LED_RS_GRN 1 -#define LED_DISK1 2 -#define LED_DISK2 3 -#define LED_ALL 4 - -static unsigned long init_jiffy = 0; //jiffies at init time -static unsigned long rb_presses = 0; //number of reset button presses -static unsigned long ontime = 50; -static unsigned long offtime = 450; -static unsigned long bz_repeatcnt = 10; -static unsigned long tone = 1000; - -DECLARE_WAIT_QUEUE_HEAD(n2rb_waitq); -DECLARE_WAIT_QUEUE_HEAD(n2pb_waitq); - -static struct timer_list n2lm_rsg_timer; //rs green -static struct timer_list n2lm_rsr_timer; //rs red -static struct timer_list n2lm_d1_timer; //drive 1 -static struct timer_list n2lm_d2_timer; //drive 2 -static struct timer_list n2rb_timer; -static struct timer_list n2pb_timer; -static struct timer_list n2bz_timer; //beeper - -// sysfs class -static struct class_simple *n2lm_class; - -//================================================================================================== -// -// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the -// GPIO output register is xor'd with a mask corresponding to the selected led which simply -// flips that bit. No record of what any of the other leds is doing is needed. -// -//================================================================================================== -// this blinks rs green or green/yellow if rs red is on -static void n2lm_rsg_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout - add_timer(&n2lm_rsg_timer); //reinit timer - return; -} - -// this blinks or alternates rs red green... inited wit green on/red off -static void n2lm_rsr_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data; - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - return; -} -// blinks disk 1 -static void n2lm_d1_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL; - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - return; -} -// blinks disk 2 -static void n2lm_d2_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL; - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - return; -} - -//================================================================================================== - -static void n2lm_timer_start(unsigned long led) -{ - - nslu2_io_debug((KERN_DEBUG "timer: %ld\n",led)); - - switch(led) { - case LED_RS_RED: - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - break; - - case LED_RS_GRN: - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsg_timer); - break; - - case LED_DISK1: - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - break; - - case LED_DISK2: - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - break; - - default: - break; - } - return; -} - -//================================================================================================== - -static void n2lm_timer_stop(unsigned long led) -{ - switch (led) { - case LED_RS_RED: - del_timer(&n2lm_rsr_timer); - break; - case LED_RS_GRN: - del_timer(&n2lm_rsg_timer); - break; - case LED_DISK1: - del_timer(&n2lm_d1_timer); - break; - case LED_DISK2: - del_timer(&n2lm_d2_timer); - break; - default: - break; - } - return; -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_timer_stop_all(void) -{ - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - return; -} -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledon(unsigned long led) -{ - - nslu2_io_debug((KERN_DEBUG "ledon: %ld\n", led)); - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1 - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2 - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffff7 - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffffb - return; - case LED_ALL: //all green - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; - *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON); - return; - } -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledoff(unsigned long led) -{ - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000008 - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000004 - return; - case LED_ALL: - *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF); - *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF); - } -} - -//================================================================================================== - -static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led) -{ - - nslu2_io_debug((KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led)); - - if (led < 0 || led >= PHYS_LEDS) - return -EINVAL; - - switch (cmd ) { - case N2LM_ON: - n2lm_timer_stop(led); - n2lm_ledon(led); - break; - - case N2LM_OFF: - n2lm_timer_stop(led); - n2lm_ledoff(led); - break; - - case N2LM_BLINK: - n2lm_ledon(led); - if (led == LED_RS_RED) - n2lm_rsr_timer.data = RS_RED_TGL; - n2lm_timer_start(led); - break; - - case N2LM_ALT: - if (led == LED_RS_RED) - { - n2lm_ledon(LED_RS_GRN); - n2lm_ledoff(LED_RS_RED); - n2lm_rsr_timer.data = RS_RG_ALT; - n2lm_timer_start(LED_RS_RED); - break; - } else - return -EINVAL; - - case N2LM_ALL_ON: - n2lm_timer_stop_all(); - n2lm_ledon(LED_ALL); - break; - - case N2LM_ALL_OFF: - n2lm_timer_stop_all(); - n2lm_ledoff(LED_ALL); - break; - - default: - return -EINVAL; - } - - return NOERR; -} - -static struct file_operations n2lm_fops = { - .owner = THIS_MODULE, - .ioctl = n2lm_ioctl, -}; -//================================================================================================== -// We can't do anything fancy here since the system tick rate is far below that required to -// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until -// I get up to speed on the timers. The saving grace is that for the normal uses, nothing -// important should be haprepening. -//================================================================================================== - -static void n2_buzz(int tone_delay, int duration) -{ - int i; - - *IXP4XX_GPIO_GPOER &= ~GPIO_BZ_BM; - - for (i = 1; i < duration; i++) { - *IXP4XX_GPIO_GPOUTR &= ~GPIO_BZ_BM; - udelay(tone_delay); - *IXP4XX_GPIO_GPOUTR |= GPIO_BZ_BM; - udelay(tone_delay); - } - *IXP4XX_GPIO_GPOER |= GPIO_BZ_BM; - - return; -} -//================================================================================================= - -// this handles the buzzer duty cycle -static void n2bz_handler(unsigned long data) -{ - if (--bz_repeatcnt > 0) { //if just one beep left to do - n2bz_timer.expires = jiffies + ontime + offtime; //next timeout - add_timer(&n2bz_timer); //reinit timer - } - n2_buzz(tone/2, ontime); - nslu2_io_debug((KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime)); - return; -} - -//================================================================================================== - -static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) -{ - switch (cmd) { - case N2BZ_BEEP: - n2_buzz(tone/2, ontime); - break; - - case N2BZ_BEEP_STOP: - del_timer(&n2bz_timer); - break; - - case N2BZ_BEEPS: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - n2bz_handler(0); - break; - - case N2BZ_TONESET: - if (param >= 250 && param <= 2000) - tone = param; - break; - - case N2BZ_ONTIME: - if (param > 4 && param < 201) - ontime = param; - break; - - case N2BZ_SILENTTIME: - if (param > ontime) //enforce a reasonable duty cycle - offtime = param; - else - offtime = ontime; - break; - - case N2BZ_REPEATCNT: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - break; - - case N2BZ_COMBINED: - bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16 - ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies - offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies - tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16 - break; - - default: - break; - } - return NOERR; -} - -static struct file_operations n2bz_fops = { - .owner = THIS_MODULE, - .ioctl = n2bz_ioctl, -}; - -//================================================================================================== - -static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - void *ret; - - wake_up(&n2pb_waitq); - remove_proc_entry(PWR_OFF_STR, NULL); //no parent - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED); - ret = create_proc_entry(PWR_OFF_STR, 0, NULL); - nslu2_io_debug((KERN_DEBUG "cpe ret = %p\n", ret)); - -// WARNING: This is RUDE...it unconditionally pulls the power plug. -// Your data will be at risk...since this is just a test system -// I am leaving it enabled...eventually userland needs to get the -// message, do an orderly shutdown and use an ioctl or something in -// /proc/powerdowm to actually have us pull the plug. - - machine_power_off(); - - return IRQ_HANDLED; -} - -//================================================================================================== -// -//static void do_rb_timeout(unsigned long data) -//{ -// int i; -// -// for (i = 0; i < rb_presses; i++) -// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT); -// return; -//} -// -//================================================================================================== -// does nothing -- waiting for userland to define -// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so -// we hang in a loop until the button is no longer pressed - -struct testr { - int ctl; - long param; -}; - -static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - - static struct testr test[] = { - { N2LM_ALL_OFF,0 }, - { N2LM_ON,0 }, - { N2LM_OFF,0 }, - { N2LM_ON,1 }, - { N2LM_ALL_OFF,1 }, - { N2LM_ON,2 }, - { N2LM_OFF,2 }, - { N2LM_ON,3 }, - { N2LM_OFF,3 }, - { N2LM_BLINK,0 }, - { N2LM_OFF,0 }, - { N2LM_BLINK,1 }, - { N2LM_OFF,1 }, - { N2LM_BLINK,2 }, - { N2LM_OFF,2 }, - { N2LM_BLINK,3 }, - { N2LM_OFF,3 }, - { N2LM_ALL_OFF,0 }, - { N2LM_ALT,1 }, - { N2LM_OFF,1 }, - { N2LM_ALL_ON,0 } - }; - - nslu2_io_debug(("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long))); - - wake_up(&n2rb_waitq); - while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0) - ; //wait for button release - - if (rb_presses > 20) - rb_presses = 0; - tone = (rb_presses * 50) + 200; - ontime = (rb_presses*10) + 100; - offtime = 500 - (rb_presses*20); - nslu2_io_debug(("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone)); - rb_presses++; - - n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses); - n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param); -// if (rb_presses == 0) { -// init_jiffy = jiffies; -// init_timer (&n2rb_timer); -// n2rb_timer.function = do_rb_timeout; -// }; -// -// if (rb_presses == 8) -// rb_presses = 0; -// if (rb_presses & 1) -// n2lm_ledon(test[rb_presses]); -// else -// n2lm_ledoff(test[rb_presses]); -// -// n2rb_timer.expires = (jiffies + RB_DELAY); -// add_timer (&n2rb_timer); -// if (rb_presses < 5) { -// if (rb_presses > 0) -// n2lm_ledoff(rb_presses); -// n2lm_ledon(++rb_presses); -// n2lm_timer_start(rb_presses); -// }; - - nslu2_io_debug((KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies)); - return IRQ_HANDLED; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2rb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Reset Button Wait\n"); - interruptible_sleep_on(&n2rb_waitq); - return copy_to_user(buffer, "reset", 5) ? -EFAULT : 5; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2pb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Power Button Wait\n"); - interruptible_sleep_on(&n2pb_waitq); - return copy_to_user(buffer, "poweroff", 8) ? -EFAULT : 8; - -} - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2rb_fops = { - .owner = THIS_MODULE, - .read = n2rb_read, -}; - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2pb_fops = { - .owner = THIS_MODULE, - .read = n2pb_read, -}; - -//================================================================================================== - -static void n2iom_initarch(void) -{ - printk(KERN_DEBUG "setup_interrupts - jiffies=%ld init_jiffy=%ld\n", jiffies, init_jiffy); - - *IXP4XX_GPIO_GPISR = 0x20400000; // read the 2 irqs to clr - gpio_line_config(N2_RB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_isr_clear(N2_RB_GPIO); - gpio_line_config(N2_PB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_HIGH); - gpio_line_isr_clear(N2_PB_GPIO); - - init_timer(&n2lm_rsg_timer); - init_timer(&n2lm_rsr_timer); - init_timer(&n2lm_d1_timer); - init_timer(&n2lm_d2_timer); -// init_timer(&n2rb_timer); -// init_timer(&n2pb_timer); - init_timer(&n2bz_timer); - n2lm_rsr_timer.function = n2lm_rsr_handler; - n2lm_rsg_timer.function = n2lm_rsg_handler; - n2lm_d2_timer.function = n2lm_d2_handler; - n2lm_d1_timer.function = n2lm_d1_handler; - n2bz_timer.function = n2bz_handler; - n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0; - - *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3 - *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds - *IXP4XX_GPIO_GPOUTR &= 0xfffffffc; - n2lm_ledon(LED_ALL); - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_SHORT); - n2lm_ledoff(LED_ALL); -// Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit - n2lm_ledon(LED_RS_RED); - - return; -} - -//================================================================================================== - -static int __init n2iom_init(void) -{ - printk(KERN_INFO "OpenN2 Misc I/O Driver Version %s\n", VERSION); - - init_jiffy = jiffies; - printk(KERN_DEBUG "init_jiffy=%ld\n",init_jiffy); - n2iom_initarch(); - - n2lm_class = class_simple_create(THIS_MODULE, "nslu2"); - - if (register_chrdev(N2RB_MAJOR, "n2_rbm", &n2pb_fops) < NOERR) { - printk(KERN_DEBUG "Reset Button Major %d not available\n", N2RB_MAJOR); - return -EBUSY; - } - else { - class_simple_device_add(n2lm_class, MKDEV(N2RB_MAJOR, 0), NULL, "rbuttons"); - } - if (register_chrdev(N2PB_MAJOR, "n2_pbm", &n2rb_fops) < NOERR) { - printk(KERN_DEBUG "Power Button Major %d not available\n", N2PB_MAJOR); - return -EBUSY; - } - else { - class_simple_device_add(n2lm_class, MKDEV(N2PB_MAJOR, 0), NULL, "pbuttons"); - } - if (register_chrdev(N2LM_MAJOR, "n2_ledm", &n2lm_fops) < NOERR) { - printk(KERN_DEBUG "Led Manager Major %d not available\n", N2LM_MAJOR); - return -EBUSY; - } - else { - class_simple_device_add(n2lm_class, MKDEV(N2LM_MAJOR, 0), NULL, "leds"); - } - if (register_chrdev(N2BZ_MAJOR, "n2_bzm", &n2bz_fops) < NOERR) { - printk(KERN_DEBUG "Buzzer Major %d not available\n", N2BZ_MAJOR); - return -EBUSY; - } - else { - class_simple_device_add(n2lm_class, MKDEV(N2BZ_MAJOR, 0), NULL, "buzzer"); - } - - if (request_irq(N2RB_IRQ, &n2rb_handler, SA_INTERRUPT, "n2_rb", NULL) < NOERR) { - printk(KERN_DEBUG "Reset Button IRQ %d not available\n", N2RB_IRQ); - return -EIO; - } - if (request_irq(N2PB_IRQ, &n2pb_handler, SA_INTERRUPT, "n2_pb", NULL) < NOERR) { - printk(KERN_DEBUG "Power Button IRQ %d not available\n", N2PB_IRQ); - return -EIO; - } - - enable_irq(N2PB_IRQ); - enable_irq(N2RB_IRQ); - return (NOERR); -} - -//================================================================================================== - -static void __exit n2iom_exit(void) -{ - remove_proc_entry(PWR_OFF_STR, NULL); - del_timer(&n2rb_timer); - free_irq(N2RB_IRQ,NULL); - unregister_chrdev(N2PB_MAJOR, "n2pb"); - class_simple_device_remove(MKDEV(N2PB_MAJOR, 0)); - del_timer(&n2pb_timer); - free_irq(N2PB_IRQ, NULL); - unregister_chrdev(N2RB_MAJOR, "n2rb" ); - class_simple_device_remove(MKDEV(N2RB_MAJOR, 0)); - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - unregister_chrdev(N2LM_MAJOR, "n2lm" ); - class_simple_device_remove(MKDEV(N2LM_MAJOR, 0)); - unregister_chrdev(N2BZ_MAJOR, "n2bz"); - class_simple_device_remove(MKDEV(N2BZ_MAJOR, 0)); - class_simple_destroy(n2lm_class); -} - -module_init (n2iom_init); -module_exit (n2iom_exit); - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("OpenN2 Buttons/LEDs IO Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, int, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 8"); - diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2-part.c b/packages/linux/openslug-kernel-2.6.11.2/nslu2-part.c deleted file mode 100644 index 6fbf952e2a..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2-part.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * nslu2-part.c - * - * Maintainers: http://www.nslu2-linux.org/ - * Initial port: Mark Rakes <mrakes AT mac.com> - * - * "Parse" the fixed partition table of the Linksys NSLU2 and - * produce a Linux partition array to match. - */ - -#include <linux/kernel.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/vmalloc.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> - -/* info we know about the NSLU2's flash setup: - * - * Num Partition offset size - * --- --------- ---------- ----------- - * 0 RedBoot 0x00000000 0x00040000 - * 1 System Configuration 0x00040000 0x00020000 - * 2 Kernel 0x00060000 0x00100000 - * 3 Ramdisk 0x00160000 0x006a0000 - */ - #define NSLU2_NUM_FLASH_PARTITIONS 4 - #define NSLU2_FLASH_PART0_NAME "RedBoot" - #define NSLU2_FLASH_PART0_OFFSET 0x00000000 - #define NSLU2_FLASH_PART0_SIZE 0x00040000 - #define NSLU2_FLASH_PART1_NAME "System Configuration" - #define NSLU2_FLASH_PART1_OFFSET (NSLU2_FLASH_PART0_OFFSET + NSLU2_FLASH_PART0_SIZE) - #define NSLU2_FLASH_PART1_SIZE 0x00020000 - #define NSLU2_FLASH_PART2_NAME "Kernel" - #define NSLU2_FLASH_PART2_OFFSET (NSLU2_FLASH_PART1_OFFSET + NSLU2_FLASH_PART1_SIZE) - #define NSLU2_FLASH_PART2_SIZE 0x00100000 - #define NSLU2_FLASH_PART3_NAME "Ramdisk" - #define NSLU2_FLASH_PART3_OFFSET (NSLU2_FLASH_PART2_OFFSET + NSLU2_FLASH_PART2_SIZE) - #define NSLU2_FLASH_PART3_SIZE 0x006a0000 - -static int parse_nslu2_partitions(struct mtd_info *master, - struct mtd_partition **pparts, - unsigned long flash_start) -{ - struct mtd_partition *parts; - int ret = 0, namelen = 0; - char *names; - - namelen = strlen(NSLU2_FLASH_PART0_NAME) + - strlen(NSLU2_FLASH_PART1_NAME) + - strlen(NSLU2_FLASH_PART2_NAME) + - strlen(NSLU2_FLASH_PART3_NAME) + - NSLU2_NUM_FLASH_PARTITIONS; /*4 strings + each terminator */ - - parts = kmalloc(sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen, GFP_KERNEL); - if (!parts) { - ret = -ENOMEM; - goto out; - } - - memset(parts, 0, sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen); - names = (char *)&parts[NSLU2_NUM_FLASH_PARTITIONS]; - - /* RedBoot partition */ - parts[0].size = NSLU2_FLASH_PART0_SIZE; - parts[0].offset = NSLU2_FLASH_PART0_OFFSET; - parts[0].name = NSLU2_FLASH_PART0_NAME; - parts[0].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART0_NAME); - names += strlen(names)+1; - /* System Configuration */ - parts[1].size = NSLU2_FLASH_PART1_SIZE; - parts[1].offset = NSLU2_FLASH_PART1_OFFSET; - parts[1].name = NSLU2_FLASH_PART1_NAME; - parts[1].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART1_NAME); - names += strlen(names)+1; - /* Kernel */ - parts[2].size = NSLU2_FLASH_PART2_SIZE; - parts[2].offset = NSLU2_FLASH_PART2_OFFSET; - parts[2].name = NSLU2_FLASH_PART2_NAME; - parts[2].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART2_NAME); - names += strlen(names)+1; - /* Ramdisk */ - parts[3].size = NSLU2_FLASH_PART3_SIZE; - parts[3].offset = NSLU2_FLASH_PART3_OFFSET; - parts[3].name = NSLU2_FLASH_PART3_NAME; - parts[3].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART3_NAME); - names += strlen(names)+1; - - ret = NSLU2_NUM_FLASH_PARTITIONS; - *pparts = parts; - out: - return ret; -} - -static struct mtd_part_parser nslu2_parser = { - .owner = THIS_MODULE, - .parse_fn = parse_nslu2_partitions, - .name = "NSLU2", -}; - -static int __init nslu2_parser_init(void) -{ - return register_mtd_parser(&nslu2_parser); -} - -static void __exit nslu2_parser_exit(void) -{ - deregister_mtd_parser(&nslu2_parser); -} - -module_init(nslu2_parser_init); -module_exit(nslu2_parser_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Mark Rakes"); -MODULE_DESCRIPTION("Parsing code for NSLU2 flash tables"); diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2-pci.c b/packages/linux/openslug-kernel-2.6.11.2/nslu2-pci.c deleted file mode 100644 index 7327c65a4f..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2-pci.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-pci.c - * - * NSLU2 board-level PCI initialization - * - * based on ixdp425-pci.c: - * Copyright (C) 2002 Intel Corporation. - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Maintainer: http://www.nslu2-linux.org/ - * - * 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 - * published by the Free Software Foundation. - * - */ -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// However, all the common PCI setup code presumes the standard 4 PCI -// interrupts are available. So we compromise...we don't enable the -// IRQ on Pin 8 but we let - -#include <linux/config.h> -#include <linux/pci.h> -#include <linux/init.h> -#include <linux/delay.h> - -#include <asm/mach/pci.h> -#include <asm/irq.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> - -void __init nslu2_pci_preinit(void) -{ - gpio_line_config(NSLU2_PCI_INTA_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTB_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTC_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -// gpio_line_config(NSLU2_PCI_INTD_PIN, -// IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - - gpio_line_isr_clear(NSLU2_PCI_INTA_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTB_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTC_PIN); -// gpio_line_isr_clear(NSLU2_PCI_INTD_PIN); - - ixp4xx_pci_preinit(); -} - -static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -{ - static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = { - IRQ_NSLU2_PCI_INTA, - IRQ_NSLU2_PCI_INTB, - IRQ_NSLU2_PCI_INTC, -// IRQ_NSLU2_PCI_INTD - }; - - int irq = -1; - - if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV && - pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) { - irq = pci_irq_table[(slot + pin - 2) % 3]; // ! % 4 kas11 - } - - return irq; -} - -struct hw_pci __initdata nslu2_pci = { - .nr_controllers = 1, - .preinit = nslu2_pci_preinit, - .swizzle = pci_std_swizzle, - .setup = ixp4xx_setup, - .scan = ixp4xx_scan_bus, - .map_irq = nslu2_map_irq, -}; - -int __init nslu2_pci_init(void) //monkey see, monkey do -{ - if (machine_is_nslu2()) - pci_common_init(&nslu2_pci); - return 0; -} - -subsys_initcall(nslu2_pci_init); - diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2-setup.c b/packages/linux/openslug-kernel-2.6.11.2/nslu2-setup.c deleted file mode 100644 index 358c58f22e..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2-setup.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-setup.c - * - * NSLU2 board-setup - * - * based ixdp425-setup.c: - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Author: Mark Rakes <mrakes at mac.com> - * Maintainers: http://www.nslu2-linux.org/ - * - * Fixed missing init_time in MACHINE_START kas11 10/22/04 - * Changed to conform to new style __init ixdp425 kas11 10/22/04 - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/device.h> -#include <linux/serial.h> -#include <linux/tty.h> -#include <linux/serial_core.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> - -#ifdef __ARMEB__ -#define REG_OFFSET 3 -#else -#define REG_OFFSET 0 -#endif - -/* - * NSLU2 uses only one serial port - */ -static struct uart_port nslu2_serial_ports[] = { - { - .membase = (char*)(IXP4XX_UART1_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART1_BASE_PHYS), - .irq = IRQ_IXP4XX_UART1, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 0, - .type = PORT_XSCALE, - .fifosize = 32 - } -#if 0 - , { - .membase = (char*)(IXP4XX_UART2_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART2_BASE_PHYS), - .irq = IRQ_IXP4XX_UART2, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 1, - .type = PORT_XSCALE, - .fifosize = 32 - } -#endif -}; - -void __init nslu2_map_io(void) -{ - early_serial_setup(&nslu2_serial_ports[0]); -#if 0 - early_serial_setup(&nslu2_serial_ports[1]); -#endif - ixp4xx_map_io(); -} - -static struct flash_platform_data nslu2_flash_data = { - .map_name = "cfi_probe", - .width = 2, -}; - -static struct resource nslu2_flash_resource = { - .start = NSLU2_FLASH_BASE, - .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device nslu2_flash = { - .name = "IXP4XX-Flash", - .id = 0, - .dev = { - .platform_data = &nslu2_flash_data, - }, - .num_resources = 1, - .resource = &nslu2_flash_resource, -}; - -static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = { - .sda_pin = NSLU2_SDA_PIN, - .scl_pin = NSLU2_SCL_PIN, -}; - -static struct platform_device nslu2_i2c_controller = { - .name = "IXP4XX-I2C", - .id = 0, - .dev = { - .platform_data = &nslu2_i2c_gpio_pins, - }, - .num_resources = 0 -}; - -static struct platform_device *nslu2_devices[] __initdata = { - &nslu2_i2c_controller, - &nslu2_flash -}; - -static void n2_power_off(void) -{ - /* This causes the box to drop the power and go dead. */ -#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 - *IXP4XX_GPIO_GPOER &= ~GPIO_PO_BM; // enable the pwr cntl gpio - *IXP4XX_GPIO_GPOUTR |= GPIO_PO_BM; // do the deed -} - -static void __init nslu2_init(void) -{ - /* Need power off to work. */ - pm_power_off = n2_power_off; - platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); -} - -MACHINE_START(NSLU2, "Linksys NSLU2") - MAINTAINER("www.nslu2-linux.org") - BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS, - IXP4XX_PERIPHERAL_BASE_VIRT) - MAPIO(nslu2_map_io) - INITIRQ(ixp4xx_init_irq) //FIXME: all irq are off here - .timer = &ixp4xx_timer, - // INITTIME(ixp4xx_init_time) //this was missing in 2.6.7 code ...soft reboot needed? - BOOT_PARAMS(0x0100) - INIT_MACHINE(nslu2_init) -MACHINE_END diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2.h b/packages/linux/openslug-kernel-2.6.11.2/nslu2.h deleted file mode 100644 index bb79aaa007..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * include/asm-arm/arch-ixp4xx/nslu2.h - * - * NSLU2 platform specific definitions - * - * Author: Mark Rakes <mrakes AT mac.com> - * Maintainers: http://www.nslu2-linux.org - * - * based on ixdp425.h: - * Copyright 2004 (c) MontaVista, Software, Inc. - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// kas11 11-2-04 - -#ifndef __ASM_ARCH_HARDWARE_H__ -#error "Do not include this directly, instead #include <asm/hardware.h>" -#endif - -#define NSLU2_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS -#define NSLU2_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE - -#define NSLU2_SDA_PIN 7 -#define NSLU2_SCL_PIN 6 - -/* - * NSLU2 PCI IRQs - */ -#define NSLU2_PCI_MAX_DEV 3 -#define NSLU2_PCI_IRQ_LINES 3 - - -/* PCI controller GPIO to IRQ pin mappings */ -#define NSLU2_PCI_INTA_PIN 11 -#define NSLU2_PCI_INTB_PIN 10 -#define NSLU2_PCI_INTC_PIN 9 -//#define NSLU2_PCI_INTD_PIN 8 - - diff --git a/packages/linux/openslug-kernel-2.6.11.2/nslu2_2.6.11.patch b/packages/linux/openslug-kernel-2.6.11.2/nslu2_2.6.11.patch deleted file mode 100644 index bff8400396..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/nslu2_2.6.11.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff -urN linux-2.6.11.orig/arch/arm/boot/compressed/head.S linux-2.6.11/arch/arm/boot/compressed/head.S ---- linux-2.6.11.orig/arch/arm/boot/compressed/head.S 2005-03-01 21:38:25.000000000 -1000 -+++ linux-2.6.11/arch/arm/boot/compressed/head.S 2005-03-03 00:55:05.000000000 -1000 -@@ -79,6 +79,14 @@ - .endm - .macro writeb, rb - str \rb, [r3, #0] -+ .endm -+#elif defined(CONFIG_ARCH_NSLU2) -+ .macro loadsp, rb -+ mov \rb, #0xc8000000 -+ .endm -+ .macro writeb, rb -+ str \rb, [r3, #0] -+ .endm - #elif defined(CONFIG_ARCH_IXP2000) - .macro loadsp, rb - mov \rb, #0xc0000000 -diff -urN linux-2.6.11.orig/arch/arm/boot/compressed/head-xscale.S linux-2.6.11/arch/arm/boot/compressed/head-xscale.S ---- linux-2.6.11.orig/arch/arm/boot/compressed/head-xscale.S 2005-03-01 21:37:52.000000000 -1000 -+++ linux-2.6.11/arch/arm/boot/compressed/head-xscale.S 2005-03-02 01:41:31.000000000 -1000 -@@ -47,3 +47,8 @@ - orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) - #endif - -+#ifdef CONFIG_ARCH_NSLU2 -+ mov r7, #(MACH_TYPE_NSLU2 & 0xff) -+ orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00) -+#endif -+ -diff -urN linux-2.6.11.orig/arch/arm/mach-ixp4xx/Kconfig linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig ---- linux-2.6.11.orig/arch/arm/mach-ixp4xx/Kconfig 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig 2005-03-02 01:43:42.000000000 -1000 -@@ -43,6 +43,12 @@ - IXDP465 Development Platform (Also known as BMP). - For more information on this platform, see Documentation/arm/IXP4xx. - -+config ARCH_NSLU2 -+ bool "NSLU2" -+ help -+ Say 'Y' here if you want your kernel to support Linksys's -+ NSLU2 NAS device. For more information on this platform, -+ see http://www.nslu2-linux.org - - # - # IXCDP1100 is the exact same HW as IXDP425, but with a different machine -diff -urN linux-2.6.11.orig/arch/arm/mach-ixp4xx/Makefile linux-2.6.11/arch/arm/mach-ixp4xx/Makefile ---- linux-2.6.11.orig/arch/arm/mach-ixp4xx/Makefile 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/arch/arm/mach-ixp4xx/Makefile 2005-03-02 01:44:16.000000000 -1000 -@@ -9,4 +9,4 @@ - obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o - obj-$(CONFIG_ARCH_PRPMC1100) += prpmc1100-pci.o prpmc1100-setup.o - obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o -- -+obj-$(CONFIG_ARCH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o -diff -urN linux-2.6.11.orig/arch/arm/tools/mach-types linux-2.6.11/arch/arm/tools/mach-types ---- linux-2.6.11.orig/arch/arm/tools/mach-types 2005-03-01 21:38:08.000000000 -1000 -+++ linux-2.6.11/arch/arm/tools/mach-types 2005-03-02 01:44:50.000000000 -1000 -@@ -604,7 +604,7 @@ - roverp7 MACH_ROVERP7 ROVERP7 594 - pr818s MACH_PR818S PR818S 595 - trxpro MACH_TRXPRO TRXPRO 596 --nslu2 MACH_NSLU2 NSLU2 597 -+nslu2 ARCH_NSLU2 NSLU2 597 - e400 MACH_E400 E400 598 - trab MACH_TRAB TRAB 599 - cmc_pu2 MACH_CMC_PU2 CMC_PU2 600 -diff -urN linux-2.6.11.orig/drivers/i2c/chips/Kconfig linux-2.6.11/drivers/i2c/chips/Kconfig ---- linux-2.6.11.orig/drivers/i2c/chips/Kconfig 2005-03-01 21:38:10.000000000 -1000 -+++ linux-2.6.11/drivers/i2c/chips/Kconfig 2005-03-02 01:45:28.000000000 -1000 -@@ -370,5 +370,14 @@ - - This driver can also be built as a module. If so, the module - will be called isp1301_omap. -+config SENSORS_X1205 -+ tristate "Xicor X1205 RTC chip" -+ depends on I2C && EXPERIMENTAL -+ select I2C_SENSOR -+ help -+ If you say yes here you get support for the Xicor x1205 RTC chip. -+ -+ This driver can also be built as a module. If so, the module -+ will be called x1205-rtc - - endmenu -diff -urN linux-2.6.11.orig/drivers/i2c/chips/Makefile linux-2.6.11/drivers/i2c/chips/Makefile ---- linux-2.6.11.orig/drivers/i2c/chips/Makefile 2005-03-01 21:38:34.000000000 -1000 -+++ linux-2.6.11/drivers/i2c/chips/Makefile 2005-03-02 01:45:54.000000000 -1000 -@@ -35,6 +35,7 @@ - obj-$(CONFIG_SENSORS_VIA686A) += via686a.o - obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o - obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o -+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG -diff -urN linux-2.6.11.orig/drivers/mtd/maps/ixp4xx.c linux-2.6.11/drivers/mtd/maps/ixp4xx.c ---- linux-2.6.11.orig/drivers/mtd/maps/ixp4xx.c 2005-03-01 21:37:30.000000000 -1000 -+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-03-02 01:46:40.000000000 -1000 -@@ -94,7 +94,11 @@ - struct resource *res; - }; - -+#ifdef CONFIG_ARCH_NSLU2 -+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL }; -+#else - static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; -+#endif - - static int ixp4xx_flash_remove(struct device *_dev) - { -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-01 21:37:51.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-02 17:34:46.000000000 -1000 -@@ -44,5 +44,6 @@ - #include "ixdp425.h" - #include "coyote.h" - #include "prpmc1100.h" -+#include "nslu2.h" - - #endif /* _ASM_ARCH_HARDWARE_H */ -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-01 21:38:12.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-02 01:49:27.000000000 -1000 -@@ -93,4 +93,11 @@ - #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 - #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 - -+/* -+ * NSLU2 board IRQs -+ */ -+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11 -+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10 -+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 -+ - #endif -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-03 02:26:29.231822000 -1000 -@@ -52,7 +52,7 @@ - * Expansion BUS Configuration registers - */ - #define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000) --#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFD000) -+#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFE000) - #define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000) - - /* -diff -urN linux-2.6.11.orig/include/linux/i2c-id.h linux-2.6.11/include/linux/i2c-id.h ---- linux-2.6.11.orig/include/linux/i2c-id.h 2005-03-01 21:38:34.000000000 -1000 -+++ linux-2.6.11/include/linux/i2c-id.h 2005-03-02 01:50:14.000000000 -1000 -@@ -110,6 +110,7 @@ - #define I2C_DRIVERID_TDA7313 62 /* TDA7313 audio processor */ - #define I2C_DRIVERID_MAX6900 63 /* MAX6900 real-time clock */ - #define I2C_DRIVERID_SAA7114H 64 /* video decoder */ -+#define I2C_DRIVERID_X1205 0xF0 - - - #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ diff --git a/packages/linux/openslug-kernel-2.6.11.2/usbnet.patch b/packages/linux/openslug-kernel-2.6.11.2/usbnet.patch deleted file mode 100644 index 1b3cf3fcb8..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/usbnet.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- linux-2.6.11/drivers/usb/net/usbnet.c_orig 2005-03-03 13:50:54.053237416 -0500 -+++ linux-2.6.11/drivers/usb/net/usbnet.c 2005-03-03 13:53:19.415139048 -0500 -@@ -2404,12 +2404,13 @@ - #endif - size = (sizeof (struct ethhdr) + dev->net->mtu); - -- if ((skb = alloc_skb (size, flags)) == NULL) { -+ if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) { - devdbg (dev, "no rx skb"); - defer_kevent (dev, EVENT_RX_MEMORY); - usb_free_urb (urb); - return; - } -+ skb_reserve (skb, NET_IP_ALIGN); - - entry = (struct skb_data *) skb->cb; - entry->urb = urb; diff --git a/packages/linux/openslug-kernel-2.6.11.2/x1205-rtc.c b/packages/linux/openslug-kernel-2.6.11.2/x1205-rtc.c deleted file mode 100644 index 9ef333b2c4..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/x1205-rtc.c +++ /dev/null @@ -1,678 +0,0 @@ -/* - x1205 - an 12c driver for the Xicor X1205 RTC - Copyright 2004 Karen Spearel - - please send all reports to: - kas11 at tampabay dot rr dot com - - based on linux/drivers/acron/char/pcf8583.h - Copyright (C) 2000 Russell King - - 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., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -/* - - * i2c_adapter is the structure used to identify a physical i2c bus along - * with the access algorithms necessary to access it. - -struct i2c_adapter { - struct module *owner; - unsigned int id; == is algo->id | hwdep.struct->id, for registered values see below - unsigned int class; - struct i2c_algorithm *algo; the algorithm to access the bus - void *algo_data; - - --- administration stuff. - int (*client_register)(struct i2c_client *); - int (*client_unregister)(struct i2c_client *); - - data fields that are valid for all devices - struct semaphore bus_lock; - struct semaphore clist_lock; - - int timeout; - int retries; - struct device dev; the adapter device - struct class_device class_dev; the class device - -#ifdef CONFIG_PROC_FS - No need to set this when you initialize the adapter - int inode; -#endif def CONFIG_PROC_FS - - int nr; - struct list_head clients; - struct list_head list; - char name[I2C_NAME_SIZE]; - struct completion dev_released; - struct completion class_dev_released; -}; -*/ - - -/*========== Driver for the X1205 on the Linksys NSLU2 ==================*/ - -#include <linux/init.h> -#include <linux/i2c.h> -#include <linux/slab.h> -#include <linux/string.h> -#include <linux/errno.h> -#include <linux/bcd.h> -#include <linux/rtc.h> -#include <linux/fs.h> -#include <linux/proc_fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <asm/uaccess.h> -#include <asm/system.h> -#include <linux/moduleparam.h> - -#define RTC_GETDATETIME 0 -#define RTC_SETTIME 1 -#define RTC_SETDATETIME 2 - -#define I2C_M_WR 0 // just for consistancy - -// offsets into read buf - add 2 for write buf -#define CCR_SEC 0 -#define CCR_MIN 1 -#define CCR_HOUR 2 -#define CCR_MDAY 3 -#define CCR_MONTH 4 -#define CCR_YEAR 5 -#define CCR_WDAY 6 -#define CCR_Y2K 7 - -#define X1205_I2C_BUS_ADDR 0x6f // hardwired into x1205 -#define X1205_ALM0_BASE 0x00 // Base address of the ALM0 -#define X1205_CCR_BASE 0x30 // Base address of the CCR -#define X1205_SR_ADDR 0x3f // Status Register -#define X1205_SR_WEL 0x02 // Write Enable Latch bit -#define X1205_SR_RWEL 0x04 // Register Write Enable Bit -#define X1205_MILBIT 0x80 // this bit set in ccr.hour for 24 hr mode -#define NOERR 0 -#define RTC_NODATE 0 -#define RTC_DATETOO 1 - -// comment out next line is your x1205 can't do page writes -//#define X1205PAGEWRITE 1 -#ifdef X1205PAGEWRITE -#define DRIVERNAME "Xicor x1205 RTC Driver v0.9.3.3" -#else -#define DRIVERNAME "Xicor x1205 RTC Dvr v0.9.3.3NPW" -#endif - -#define DEBUG KERN_DEBUG -/* This, if defined to 1, turns on a lot of debugging meessages. */ -#if X1205_DEBUG -#define x1205_debug(args) printk args -#else -#define x1205_debug(args) ((void)0) -#endif - - -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base); -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base); -static int x1205_attach(struct i2c_adapter *adapter); -static int x1205_detach(struct i2c_client *client); -static int x1205_validate_tm(struct rtc_time *tm, int datetoo); -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg); -static int x1205_sync_rtc(void); -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr); -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data); - -static struct i2c_driver x1205_driver = { - .owner = THIS_MODULE, - .name = DRIVERNAME, - .id = I2C_DRIVERID_X1205, - .flags = I2C_DF_NOTIFY, - .attach_adapter = &x1205_attach, //we don't need to probe...x1205 is hardwired @ 0x6f - .detach_client = &x1205_detach, - .command = &x1205_command, //this prolly never gets called...used internally tho -}; - -static struct i2c_client x1205_i2c_client = { - .id = I2C_DRIVERID_X1205, - .flags = 0, - .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit - .adapter = NULL, // the adapter we sit on assigned in attach - .driver = &x1205_driver, // and our access routines - .usage_count = 0, // How many accesses currently to this client - .dev = {}, // the device structure - .list = {}, - .name = DRIVERNAME, - .released = {}, -}; - -static struct file_operations rtc_fops = { - owner: THIS_MODULE, - ioctl: x1205_ioctl, - read: x1205_read, -}; - -static struct miscdevice x1205_miscdev = { - .minor = RTC_MINOR, - .name = "rtc", - .fops = &rtc_fops, -}; -extern int (*set_rtc)(void); -static unsigned epoch = 1900; //coresponds to year 0 -static unsigned rtc_epoch = 2000; -static const unsigned char days_in_mo[] = -{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - -//===================================CODE====================================== -// in the routines that deal directly with the x1205 hardware, we use -// rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch -// Epoch is inited as 2000. Time is set to UT -//============================================================================= -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base) -{ - static unsigned char addr[2] = { 0,} ; - unsigned char buf[8]; - struct i2c_msg msgs[2] = { - { client->addr, I2C_M_WR, 2, addr }, //msg 1 = send base address - { client->addr, I2C_M_RD, 8, buf }, //msg 2 = read sequential data - }; - addr[1] = reg_base; - if ((i2c_transfer(client->adapter, msgs, 2)) == 2) { //did we read 2 messages? - x1205_debug((KERN_DEBUG "raw x1205 read data - sec-%02x min-%02x hr-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6], buf[7])); - tm->tm_sec = BCD2BIN(buf[CCR_SEC]); - tm->tm_min = BCD2BIN(buf[CCR_MIN]); - buf[CCR_HOUR] &= ~X1205_MILBIT; - tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); //hr is 0-23 - tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); - tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); - rtc_epoch = BCD2BIN(buf[CCR_Y2K]) * 100; - tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + rtc_epoch - epoch; - tm->tm_wday = buf[CCR_WDAY]; - x1205_debug((KERN_DEBUG "rtc_time output data - sec-%02d min-%02d hr-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday,epoch, rtc_epoch)); - } else { - printk(KERN_DEBUG "i2c_transfer Read Error\n"); - return -EIO; - } - - return NOERR; -} -// x1205pagewrite allows writing a block of registers in msg3 even though the x1205 says -// nothing about this in its spec. -// it needs more testing as it is possible some x1205s are actually not-completely- -// functional x1226s and there is a reason for the multiple write to not be in the spec. -// anyhow, it is enabled for the time being...and we even push out luck by sending 10 bytes - -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base) -{ - static unsigned char wel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL }; - static unsigned char rwel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL | X1205_SR_RWEL }; - static unsigned char diswe[3] = { 0, X1205_SR_ADDR, 0 }; - -#ifdef X1205PAGEWRITE - - static unsigned char buf[10] = { 0, X1205_CCR_BASE, }; - struct i2c_msg msgs[4] = { - { client->addr, I2C_M_WR, 3, wel }, //msg 1 = write WEL to to ccr sr - { client->addr, I2C_M_WR, 3, rwel }, //msg 2 = write RWEL to ccr sr - { client->addr, I2C_M_WR, 10, buf }, //msg 3 = write ccr base addr +seq data - { client->addr, I2C_M_WR, 3, diswe }, //msg 4 = 0 to ccr sr to disable writes - }; - - msgs[2].len = 5; // 5 bytes + addr to set time only - buf [1] = reg_base; - buf[CCR_SEC+2] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN+2] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR+2] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - if (datetoo == 1) { - buf[CCR_MDAY+2] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH+2] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR+2] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY+2] = tm->tm_wday & 7; - buf[CCR_Y2K+2] = BIN2BCD((rtc_epoch/100)); - msgs[2].len += 5; //5 more bytes to set date - } - x1205_debug((KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch)); - x1205_debug((KERN_DEBUG "BCD write data - sec-%02x min-%02x hour-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[2],buf[3],buf[4],buf[5],buf[6], buf[7], buf[8], buf[9])); - - if ((i2c_transfer(client->adapter, msgs, 4)) != 4) - return -EIO; - return NOERR; - -#else //do this if page writes aren't working - - int i,xfer,count; - static unsigned char data[3] = { 0,}; - static unsigned char buf[8]; - - buf[CCR_SEC] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - count = CCR_HOUR+1; - if (datetoo == 1) { - buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY] = tm->tm_wday & 7; - buf[CCR_Y2K] = BIN2BCD((rtc_epoch/100)); - count = CCR_Y2K+1; - } - x1205_debug((KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch)); - - xfer = i2c_master_send(client, wel, 3); - x1205_debug((KERN_DEBUG "wen - %x\n", xfer)); - if (xfer != 3) - return -EIO; - - xfer = i2c_master_send(client, rwel, 3); - x1205_debug((KERN_DEBUG "wenb - %x\n", xfer)); - if (xfer != 3) - return -EIO; - - for (i = 0; i < count; i++) { - data[1] = i + reg_base; - data[2] = buf[i]; - xfer = i2c_master_send(client, data, 3); - x1205_debug((KERN_DEBUG "xfer - %d addr - %02x data - %02x\n", xfer, data[1], data[2])); - if (xfer != 3) - return -EIO; - }; - - xfer = i2c_master_send(client, diswe, 3); - x1205_debug((KERN_DEBUG "wdis - %x\n", xfer)); - if (xfer != 3) - return -EIO; - return NOERR; -#endif -} -//============================================================================= - -static int x1205_attach(struct i2c_adapter *adapter) -{ - struct rtc_time tm; - struct timespec tv; - int errno; - - x1205_i2c_client.adapter = adapter; - x1205_i2c_client.id++; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver - return -EIO; - - if ((errno = i2c_attach_client(&x1205_i2c_client)) != NOERR) - return errno; - - /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary whether - * it stores the most close value or the value with partial seconds - * truncated, however it is important for x1205_sync_rtc that it be - * defined to store the truncated value. This is because otherwise it - * is necessary to read both xtime.tv_sec and xtime.tv_nsec in the - * sync function, and atomic reads of >32bits on ARM are not possible. - * So storing the most close value would slow down the sync API. So - * Here we have the truncated value and the best guess is to add 0.5s - */ - tv.tv_nsec = NSEC_PER_SEC >> 1; - /* WARNING: this is not the C library 'mktime' call, it is a built in - * inline function from include/linux/time.h. It expects (requires) - * the month to be in the range 1-12 - */ - tv.tv_sec = mktime(tm.tm_year+epoch, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, - tm.tm_min, tm.tm_sec); - do_settimeofday(&tv); - set_rtc = x1205_sync_rtc; - - printk(KERN_DEBUG "%s attached on adapter %s\n",x1205_i2c_client.name, - x1205_i2c_client.adapter->name); //why is this name a null string? - - return NOERR; -} - -static int x1205_detach(struct i2c_client *client) -{ - int errno; - - if ((errno = i2c_detach_client(client)) != 0) { - printk(KERN_DEBUG "i2c_detach failed - errno = %d\n", errno); - return errno; - } - - return NOERR; -} - -// make sure the rtc_time values are in bounds -static int x1205_validate_tm(struct rtc_time *tm, int datetoo) -{ - if (datetoo) { - /* This used to be 1900, not epoch, but all the read APIs subtract - * epoch, not 1900, and the result of these APIs *is* fed back in - * to x1205_command (which calls this.) - */ - tm->tm_year += epoch; - - /* The RTC uses a byte containing a BCD year value, so this is - * limited to the range 0..99 from rtc_epoch. - */ - if ((tm->tm_year < rtc_epoch || tm->tm_year > rtc_epoch + 99) || - ((tm->tm_mon > 11) || tm->tm_mon < 0 || (tm->tm_mday <= 0)) || - (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) && - ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400))))) - ) { - printk(KERN_DEBUG "x1205_validate_tm: invalid date:\t%04d,%02d,%02d\n", - tm->tm_year, tm->tm_mon, tm->tm_mday); - return -EINVAL; - } - - tm->tm_year -= epoch; - } - - if (((tm->tm_hour < 0) || (tm->tm_min < 0) || (tm->tm_sec < 0)) || - ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60))) { - printk(KERN_DEBUG "x1205_validate_tm: invalid time:\t%02d,%02d,%02d\n", - tm->tm_hour, tm->tm_min, tm->tm_sec); - return -EINVAL; - } - - return NOERR; -} - -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm) -{ - int errno, dodate = RTC_DATETOO; - - if (client == NULL || tm == NULL) - return -EINVAL; - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - x1205_debug((KERN_DEBUG "x1205_command %d\n", cmd)); - - switch (cmd) { - case RTC_GETDATETIME: - return x1205_get_datetime(client, tm, X1205_CCR_BASE); - - case RTC_SETTIME: // note fall thru - dodate = RTC_NODATE; - case RTC_SETDATETIME: - if ((errno = x1205_validate_tm(tm, dodate)) < NOERR) - return errno; - return x1205_set_datetime(client, tm, dodate, X1205_CCR_BASE); - - default: - return -EINVAL; - } -} - -static int x1205_sync_rtc(void) -{ - /* sync to xtime, tv_nsec is ignored (see the command above about - * use of the truncated value) so this is pretty easy. kas11's - * code took are to do RTC_SETTIME - i.e. not set the date. My - * assumption is that this may be because date setting is slow, so - * this feature is retained. NTP does a sync when the time is - * changed, including significant changes. The sync needs to - * set the date correctly if necessary. - */ - struct rtc_time tm; - time_t new_s, old_s, div, rem; - unsigned int cmd; - - x1205_debug((KERN_DEBUG "x1205_sync_rtc entry\n")); - - { - int err = x1205_command(&x1205_i2c_client, RTC_GETDATETIME, &tm); - if (err != NOERR) { - printk(KERN_DEBUG "x1205_sync_rtc exit (failed to get date)\n"); - return err; - } - } - - old_s = mktime(tm.tm_year+epoch, tm.tm_mon+1, tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); - new_s = xtime.tv_sec; - - /* Optimisation, the clock only stores seconds so it's pointless - * to reset it if it is within 1s of now. - */ - if (old_s - 1 <= new_s && new_s <= old_s + 1) { - x1205_debug((KERN_DEBUG "x1205_sync_rtc exit (RTC in sync)\n")); - return NOERR; - } - - div = new_s / 60; - tm.tm_sec = new_s - div*60; - rem = div; - div /= 60; - tm.tm_min = rem - div*60; - rem = div; - div /= 24; - tm.tm_hour = rem - div*24; - - /* Now subtract the result from the original 'new' value. This - * should be zero, if not an mday change is required. Notice - * that this will tend to fire for small drifts close to UTC midnight. - */ - cmd = RTC_SETTIME; - rem = new_s - mktime(tm.tm_year+epoch, tm.tm_mon+1, tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); - if (rem != 0) { - int dif; - - /* Make an approximation to year/month/day. */ - rem = div; - div = (2*div)/61; // 30.5 days/month - tm.tm_mday = 1 + rem - (div*61)/2; - rem = div; - div /= 12; - rem -= 12*div; - while (tm.tm_mday > days_in_mo[rem]) { - tm.tm_mday -= days_in_mo[rem]; - if (++rem >= 12) { - rem -= 12; - ++div; - } - } - tm.tm_mon = rem; - div += 1970; // base of tv_sec - - /* Calculate the error in the approximation as a signed - * int value. - */ - dif = new_s - mktime(div, tm.tm_mon+1, tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); - while (dif < 0) { - --(tm.tm_mday); - dif += 86400; - } - while (dif >= 86400) { - ++(tm.tm_mday); - dif -= 86400; - } - if (dif != 0) - printk(KERN_ERR "x1205_sync_rtc (error in date %d)\n", dif); - - /* Normalise the result. */ - while (tm.tm_mday <= 0) { - if (--(tm.tm_mon) < 0) { - tm.tm_mon += 12; - --div; - } - tm.tm_mday += days_in_mo[tm.tm_mon] + (tm.tm_mon==1 && - ((!(div % 4) && (div % 100) ) || !(div % 400))); - } - - do { - rem = days_in_mo[tm.tm_mon] + (tm.tm_mon==1 && - ((!(div % 4) && (div % 100) ) || !(div % 400))); - if (tm.tm_mday > rem) { - tm.tm_mday -= rem; - if (++(tm.tm_mon) >= 12) { - tm.tm_mon -= 12; - ++div; - } - } else { - break; - } - } while (1); - - tm.tm_year = div-epoch; - cmd = RTC_SETDATETIME; - printk(KERN_DEBUG "x1205_sync_rtc exit (change date %d)\n", new_s-old_s); - } else { - printk(KERN_DEBUG "x1205_sync_rtc exit (change seconds %d)\n", new_s-old_s); - /* But avoid the race condition when the date is about to - * change. - */ - if (tm.tm_min == 59 && tm.tm_hour == 23) - cmd = RTC_SETDATETIME; - } - - return x1205_command(&x1205_i2c_client, cmd, &tm); -} - -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr) -{ - struct rtc_time tm; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - return copy_to_user(buf, &tm, sizeof(tm)) ? -EFAULT : NOERR; -} - -//============================================================================== - -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long arg) -{ - struct rtc_time tm; - int errno; - - x1205_debug((KERN_DEBUG "ioctl = %x\n", cmd)); - - switch (cmd) { - case RTC_RD_TIME: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - break; - - case RTC_SET_TIME: - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - if ((errno = x1205_validate_tm(&tm, RTC_DATETOO)) < NOERR) - return errno; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_CCR_BASE); - - case RTC_ALM_SET: //FIXME: set Control Regs - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_ALM0_BASE); - - case RTC_ALM_READ: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_ALM0_BASE)) < NOERR) - return -EIO; - break; - - case RTC_EPOCH_READ: - - return put_user (epoch, (unsigned long __user *)arg); - - case RTC_EPOCH_SET: - if (arg < 1900) - return -EINVAL; - - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - epoch = arg; - return 0; - - default: - return -ENOTTY; - } - return copy_to_user((void __user *)arg, &tm, sizeof tm) ? -EFAULT : 0; - -} - -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data) -{ - struct rtc_time tm; - int slen, errno; - - if ((errno = x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return errno; - -// here we return the real year and the month as 1-12 since it is human-readable - slen = sprintf(buf, "rtc_time\t: %02d:%02d:%02d\nrtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday); - x1205_debug((KERN_DEBUG "raw rtc_time\t: %02d:%02d:%02d\nraw rtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year, tm.tm_mon, tm.tm_mday)); - - if (slen <= off + len) - *eof = 1; - *start = buf + off; - slen -= off; - if (slen > len) - slen = len; - if ( slen < 0 ) - slen = 0; - - return slen; -} - -static int __init x1205_init(void) -{ - struct rtc_time tm; - int errno; - printk(KERN_INFO "LOADED %s\n", DRIVERNAME); - - if ((errno = i2c_add_driver(&x1205_driver)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "x1205_init failed - errno = %d\n", errno); - return (errno); - } - if ((errno = misc_register(&x1205_miscdev)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "Register Misc Driver failed - errno = %d\n", errno); - i2c_del_driver(&x1205_driver); - return errno; - } - if (create_proc_read_entry("driver/rtc", 0, NULL, x1205_read_proc, NULL) < NOERR) - return -ENOMEM; - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functionality - return -EIO; - - return NOERR; -} - -static void __exit x1205_exit(void) -{ - remove_proc_entry("driver/rtc", NULL); - misc_deregister(&x1205_miscdev); - i2c_del_driver(&x1205_driver); - set_rtc = NULL; -} - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("Xicor X1205-RTC Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, bool, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 1"); - -module_init(x1205_init); -module_exit(x1205_exit); diff --git a/packages/linux/openslug-kernel-2.6.11.2/xscale-reset.patch b/packages/linux/openslug-kernel-2.6.11.2/xscale-reset.patch deleted file mode 100644 index 4e68456e20..0000000000 --- a/packages/linux/openslug-kernel-2.6.11.2/xscale-reset.patch +++ /dev/null @@ -1,155 +0,0 @@ ---- linux-2.6.11.2/arch/arm/mm/proc-xscale.S 2005-03-09 00:12:44.000000000 -0800 -+++ linux-2.6.11.2/arch/arm/mm/proc-xscale.S 2005-06-18 15:39:22.701222319 -0700 -@@ -137,23 +137,129 @@ - * same state as it would be if it had been reset, and branch - * to what would be the reset vector. - * -+ * This code is ixp425 specific with respect to the reset of -+ * the 'configuration register' - to be found at address -+ * 0xC40000020 'IXP425_EXP_CNFGO' -+ * - * loc: location to jump to for soft reset - */ - .align 5 - ENTRY(cpu_xscale_reset) -+ @ always branch to 0 -+ mov r0, #0 -+ -+ @ disable both FIQ and IRQ, put us into 32 bit -+ @ SVC mode (no thumb). - mov r1, #PSR_F_BIT|PSR_I_BIT|SVC_MODE - msr cpsr_c, r1 @ reset CPSR -- mrc p15, 0, r1, c1, c0, 0 @ ctrl register -- bic r1, r1, #0x0086 @ ........B....CA. -- bic r1, r1, #0x3900 @ ..VIZ..S........ -- mcr p15, 0, r1, c1, c0, 0 @ ctrl register -- mcr p15, 0, ip, c7, c7, 0 @ invalidate I,D caches & BTB -- bic r1, r1, #0x0001 @ ...............M -- mcr p15, 0, r1, c1, c0, 0 @ ctrl register -- @ CAUTION: MMU turned off from this point. We count on the pipeline -- @ already containing those two last instructions to survive. -+ -+ @ disable debug, clock and power registers are -+ @ unimplemented. -+ mcr p14, 0, r0, c10, c0, 0 @ disable debug -+ -+ @ disable the performance monitor -+ mcr p14, 0, r0, c0, c1, 0 @ PMNC (ctrl reg) -+ mcr p14, 0, r0, c4, c1, 0 @ INTEN (intrpt enable) -+ -+ @ wait for p14 to complete -+ mrc p14, 0, ip, c4, c1, 0 @ arbitrary read -+ mov ip, ip @ sync -+ -+ @ clear the PID register -+ mcr p15, 0, r0, c13, c0, 0 @ OR nothing with address! -+ -+ @ unlock the TLBs and the I/D cache locks -+ mcr p15, 0, r0, c10, c8, 1 @ data TLB unlocked -+ mcr p15, 0, r0, c10, c4, 1 @ instruction TLB unlocked -+ mcr p15, 0, r0, c9, c2, 1 @ unlock data cache -+ mcr p15, 0, r0, c9, c1, 1 @ unlock instruction cache -+ -+ @ zap the minidata cache to write through with write coalescing -+ @ disabled. -+ mov r1, #0x21 @ MD=b10, K=1 -+ mcr p15, 0, r0, c7, c10, 4 @ drain write buffer -+ mrc p15, 0, ip, c1, c0, 0 @ read of ctrl register -+ mov ip, ip @ sync -+ mcr p15, 0, r1, c1, c0, 1 @ write through, no coalesc -+ -+ @ set the control register, the MMU is enabled but everything else -+ @ is disabled at this point, r1 contains the control register flags -+ @ the process is now in little-endian mode (no matter, we aren't -+ @ going to do any <word access) -+ mov r1, #0x79 @ 00vIz0rs.b1111caM -+ orr r1, r1, #0x1000 @ I-cache enable -+ mcr p15, 0, r1, c1, c0, 0 -+ mrc p15, 0, ip, c1, c0, 0 -+ mov ip, ip @ sync to coproc -+ mov r1, #0x78 @ 00viz0rs.b1111cam -+ -+ @ and flush the I/D cache and BTB -+ mcr p15, 0, r0, c7, c7, 0 -+ -+ @ that's most of the work. The only thing which remains is to -+ @ remap the flash memory and disable the MMU. Do some setup -+ @ for this, also get ready to set the LED to red and put in -+ @ a watchdog timer. -+ -+ @ get ready to reset the configuration registers in the expansion -+ @ bus. CFGN1 disables byte swap and interrupt. -+ ldr r3, =IXP4XX_PERIPHERAL_BASE_VIRT -+ ldr r4, [r3, #IXP4XX_EXP_CFG1_OFFSET] -+ bic r4, r4, #0x13 @ -BYTE_SWAP_EN, -SW_INT? -+ str r4, [r3, #IXP4XX_EXP_CFG1_OFFSET] -+ -+ @ load the current configuration register from its -+ @ virtual address and set the MEM_MAP bit ready to map the -+ @ flash back to address 0, but don't write it yet. -+ ldr r4, [r3, #IXP4XX_EXP_CFG0_OFFSET] -+ orr r4, r4, #0x80000000 -+ -+ @ load the GPIO OUTR register address and current value, -+ @ set the low nibble to just red LED on. -+ ldr r5, =IXP4XX_GPIO_BASE_VIRT -+ ldr r6, [r5, #IXP4XX_GPIO_GPOUTR_OFFSET] -+ bic r6, r6, #0xf -+ orr r6, r6, #0xd -+ -+ @ load the watchdog timer virtual address, set the key and -+ @ the timer and start the down counter -+ ldr r7, =IXP4XX_TIMER_BASE_VIRT -+ ldr r8, =IXP4XX_WDT_KEY @ set key -+ str r8, [r7, #IXP4XX_OSWK_OFFSET] -+ mov r8, #0x1000000 @ about 0.25 seconds -+ str r8, [r7, #IXP4XX_OSWT_OFFSET] @ set timer -+ mov r8, #(IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE) -+ str r8, [r7, #IXP4XX_OSWE_OFFSET] @ enable reset -+ -+ @ invalidate the TLBs to ensure that there isn't a match for -+ @ '0' there. - mcr p15, 0, ip, c8, c7, 0 @ invalidate I & D TLBs -- mov pc, r0 -+ mrc p15, 0, ip, c1, c0, 0 @ read of ctrl register -+ mov ip, ip @ sync -+ -+ @ remap the flash (after preloading instructions into the -+ @ I-cache) then turn off the MMU and branch to 0 when it is -+ @ off. It seems that RedBoot relies on the page tables being -+ @ set up on boot, so set the page table head register too. -+ mov r7, #0x4000 @ flash page table -+ ldr r8, =IXP4XX_GPIO_BASE_PHYS @ for led setting -+ bic r9, r6, #0xc @ disk1+disk2 led on -+ str r6, [r5, #IXP4XX_GPIO_GPOUTR_OFFSET] @ red led -+ b cache -+ -+ @ cached instructions These 8 instructions are valid in the cache -+ @ along with the associated TLB as soon as the first is executed. -+ @ They are used to effect the transition back into the flash -+ @ ROM code. -+ .align 5 -+cache: str r4, [r3, #IXP4XX_EXP_CFG0_OFFSET] @0 no memory! -+ mcr p15, 0, r7, c2, c0, 0 @1 set translation table base -+ mcr p15, 0, r1, c1, c0, 0 @2 no MMU! -+ mrc p15, 0, ip, c2, c0, 0 @3 arbitrary read of cp15 -+ str r9, [r8, #IXP4XX_GPIO_GPOUTR_OFFSET] @4 red+disk1+disk2 led -+ sub pc, r0, ip, LSR #32 @5 sync and branch to zero -+ nop @6 -+ nop @7 - - /* - * cpu_xscale_do_idle() -@@ -168,8 +274,10 @@ - .align 5 - - ENTRY(cpu_xscale_do_idle) -- mov r0, #1 -- mcr p14, 0, r0, c7, c0, 0 @ Go to IDLE -+ @ NSLU2/ixp420: not implemented in the hardware, docs -+ @ say do not write! -+ @mov r0, #1 -+ @mcr p14, 0, r0, c7, c0, 0 @ Go to IDLE - mov pc, lr - - /* ================================= CACHE ================================ */ diff --git a/packages/linux/openslug-kernel-2.6.11/ixp4xx_copy_from.patch b/packages/linux/openslug-kernel-2.6.11/ixp4xx_copy_from.patch deleted file mode 100644 index 8d0f187d44..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/ixp4xx_copy_from.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- linux-2.6.11/drivers/mtd/maps/ixp4xx.c.orig 2005-03-05 20:00:28.000000000 +0100 -+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-03-05 22:10:48.000000000 +0100 -@@ -29,6 +29,8 @@ - #include <asm/mach-types.h> - #include <asm/mach/flash.h> - -+#include <asm/unaligned.h> -+ - #include <linux/reboot.h> - - #ifndef __ARMEB__ -@@ -60,13 +62,13 @@ static void ixp4xx_copy_from(struct map_ - u16 data; - - for (i = 0; i < (len / 2); i++) { -- data = src[i]; -+ data = get_unaligned((u16*)(src + i)); - dest[i * 2] = BYTE0(data); - dest[i * 2 + 1] = BYTE1(data); - } - - if (len & 1) -- dest[len - 1] = BYTE0(src[i]); -+ dest[len - 1] = BYTE0(get_unaligned((u16*)(src + i))); - } - - /* diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2-io.c b/packages/linux/openslug-kernel-2.6.11/nslu2-io.c deleted file mode 100644 index cd5ed36c15..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2-io.c +++ /dev/null @@ -1,750 +0,0 @@ -//============================================================================= -// -// n2-io.c version 0.1.7 -// Author: Karen Spearel <kas11 at tampabay.rr.com> -// please report problems/bugs directly to the address above -// -// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per -// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk -// -// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD, -// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT -// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER -// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS. -// -//============================================================================= -// GPIO Function State -// 0 Red LED Status -// 1 Green LED Ready = 1 -// 2 Disk 2 LED On = 0 -// 3 Disk 1 LED On = 0 -// 4 Buzzer -// 5 Power Button Pressed = 1 -// 8 Power Down Output = 1 powers down N2 -// 12 Reset Pressed = 0 -//============================================================================= -// this driver is N2 specific and is purposely designed to do the minimum -// necessary to provide the necessary services given the limited memory resources -// of the N2. As OpenN2 develops, addition features will be added as -// suggested by the community. -// -//============================================================================= - -#include <linux/config.h> -#include <linux/version.h> -#include <linux/module.h> -#include <linux/utsname.h> -#include <linux/kernel.h> -#include <linux/major.h> -#include <linux/string.h> -#include <linux/proc_fs.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/errno.h> -#include <linux/fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <linux/interrupt.h> -#include <linux/moduleparam.h> -#include <linux/timer.h> - -#include <asm/system.h> -#include <asm/uaccess.h> -#include <asm/hardware.h> -#include <asm-arm/irq.h> -#include <asm-arm/delay.h> -#include <asm-arm/signal.h> - - -#define VERSION "0.1.7" - -#define N2RB_MAJOR 60 -#define N2PB_MAJOR 61 -#define N2BZ_MAJOR 62 -#define N2LM_MAJOR 126 - -#define N2PB_IRQ 22 //gpio5 -#define N2RB_IRQ 29 //gpio12 - -#define N2_BEEP_DUR_LONG 2000 -#define N2_BEEP_DUR_MED 400 -#define N2_BEEP_DUR_SHORT 100 -#define N2_BEEP_PITCH_HIGH 250 -#define N2_BEEP_PITCH_MED 500 -#define N2_BEEP_PITCH_LOW 1000 -#define N2_LONG_DELAY 30000 - -#define N2_BZ_GPIO 4 -#define N2_PB_GPIO 5 -#define N2_PO_GPIO 8 //power off -#define N2_RB_GPIO 12 - -#define GPIO_BZ_BM 0x0010 //b0000 0000 0001 0000 -#define GPIO_PB_BM 0x0020 //b0000 0000 0010 0000 -#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 -#define GPIO_RB_BM 0x1000 //b0001 0000 0000 0000 - -#define NOERR 0 - -#define RB_DELAY 50 -#define PB_DELAY 20 - -#define PWR_OFF_STR "poweroff" - - -// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe - -#define N2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible -#define N2BZ_BEEP _IO('M',1) //one beep at current defaults -#define N2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults -#define N2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000 -#define N2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies -#define N2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies -#define N2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever -#define N2BZ_COMBINED _IOW('M',8,long) //combine all params in a long - -#define N2LM_OFF _IOW('M',32,long) -#define N2LM_ON _IOW('M',33,long) -#define N2LM_BLINK _IOW('M',34,long) -#define N2LM_ALT _IOW('M',35,long) -#define N2LM_ALL_ON _IO('M',36) -#define N2LM_ALL_OFF _IO('M',37) - -#define PHYS_LEDS 4 -#define BLINK_DELAY 25 - -// OR Masks to turn these LEDs ON - -#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010 -#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001 -#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011 - -// AND Masks to turn these LEDs OFF - -#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101 -#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110 -#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100 - -// AND Masks to turn these LEDs ON - -#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111 -#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011 - -// Or Masks to turn these LEDs OFF - -#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000 -#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100 - -// EOR masks for toggling LEDs on/off - -#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits -#define RS_GRN_TGL 0x00000002 -#define RS_RED_TGL 0x00000001 -#define DISK1_TGL 0x00000008 -#define DISK2_TGL 0x00000004 - -// The LED names for switches - -#define LED_RS_RED 0 -#define LED_RS_GRN 1 -#define LED_DISK1 2 -#define LED_DISK2 3 -#define LED_ALL 4 - -static unsigned long init_jiffy = 0; //jiffies at init time -static unsigned long rb_presses = 0; //number of reset button presses -static unsigned long ontime = 50; -static unsigned long offtime = 450; -static unsigned long bz_repeatcnt = 10; -static unsigned long tone = 1000; - -DECLARE_WAIT_QUEUE_HEAD(n2rb_waitq); -DECLARE_WAIT_QUEUE_HEAD(n2pb_waitq); - -static struct timer_list n2lm_rsg_timer; //rs green -static struct timer_list n2lm_rsr_timer; //rs red -static struct timer_list n2lm_d1_timer; //drive 1 -static struct timer_list n2lm_d2_timer; //drive 2 -static struct timer_list n2rb_timer; -static struct timer_list n2pb_timer; -static struct timer_list n2bz_timer; //beeper - -//================================================================================================== -// -// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the -// GPIO output register is xor'd with a mask corresponding to the selected led which simply -// flips that bit. No record of what any of the other leds is doing is needed. -// -//================================================================================================== -// this blinks rs green or green/yellow if rs red is on -static void n2lm_rsg_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout - add_timer(&n2lm_rsg_timer); //reinit timer - return; -} - -// this blinks or alternates rs red green... inited wit green on/red off -static void n2lm_rsr_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data; - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - return; -} -// blinks disk 1 -static void n2lm_d1_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL; - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - return; -} -// blinks disk 2 -static void n2lm_d2_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL; - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - return; -} - -//================================================================================================== - -static void n2lm_timer_start(unsigned long led) -{ - - printk(KERN_DEBUG "timer: %ld\n",led); - - switch(led) { - case LED_RS_RED: - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - break; - - case LED_RS_GRN: - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsg_timer); - break; - - case LED_DISK1: - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - break; - - case LED_DISK2: - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - break; - - default: - break; - } - return; -} - -//================================================================================================== - -static void n2lm_timer_stop(unsigned long led) -{ - switch (led) { - case LED_RS_RED: - del_timer(&n2lm_rsr_timer); - break; - case LED_RS_GRN: - del_timer(&n2lm_rsg_timer); - break; - case LED_DISK1: - del_timer(&n2lm_d1_timer); - break; - case LED_DISK2: - del_timer(&n2lm_d2_timer); - break; - default: - break; - } - return; -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_timer_stop_all(void) -{ - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - return; -} -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledon(unsigned long led) -{ - - printk(KERN_DEBUG "ledon: %ld\n", led); - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1 - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2 - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffffb - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffff7 - return; - case LED_ALL: //all green - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; - *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON); - return; - } -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledoff(unsigned long led) -{ - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000004 - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000008 - return; - case LED_ALL: - *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF); - *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF); - } -} - -//================================================================================================== - -static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led) -{ - - printk(KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led); - - if (led < 0 || led >= PHYS_LEDS) - return -EINVAL; - - switch (cmd ) { - case N2LM_ON: - n2lm_timer_stop(led); - n2lm_ledon(led); - break; - - case N2LM_OFF: - n2lm_timer_stop(led); - n2lm_ledoff(led); - break; - - case N2LM_BLINK: - n2lm_ledon(led); - if (led == LED_RS_RED) - n2lm_rsr_timer.data = RS_RED_TGL; - if (led == LED_RS_GRN) - n2lm_rsr_timer.data = RS_GRN_TGL; - n2lm_timer_start(led); - break; - - case N2LM_ALT: - if (led == LED_RS_RED) - { - n2lm_ledon(LED_RS_GRN); - n2lm_ledoff(LED_RS_RED); - n2lm_rsr_timer.data = RS_RG_ALT; - n2lm_timer_start(LED_RS_RED); - break; - } else - return -EINVAL; - - case N2LM_ALL_ON: - n2lm_timer_stop_all(); - n2lm_ledon(LED_ALL); - break; - - case N2LM_ALL_OFF: - n2lm_timer_stop_all(); - n2lm_ledoff(LED_ALL); - break; - - default: - return -EINVAL; - } - - return NOERR; -} - -static struct file_operations n2lm_fops = { - .owner = THIS_MODULE, - .ioctl = n2lm_ioctl, -}; -//================================================================================================== -// We can't do anything fancy here since the system tick rate is far below that required to -// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until -// I get up to speed on the timers. The saving grace is that for the normal uses, nothing -// important should be haprepening. -//================================================================================================== - -static void n2_buzz(int tone_delay, int duration) -{ - int i; - - *IXP4XX_GPIO_GPOER &= ~GPIO_BZ_BM; - - for (i = 1; i < duration; i++) { - *IXP4XX_GPIO_GPOUTR &= ~GPIO_BZ_BM; - udelay(tone_delay); - *IXP4XX_GPIO_GPOUTR |= GPIO_BZ_BM; - udelay(tone_delay); - } - *IXP4XX_GPIO_GPOER |= GPIO_BZ_BM; - - return; -} -//================================================================================================= - -// this handles the buzzer duty cycle -static void n2bz_handler(unsigned long data) -{ - if (--bz_repeatcnt > 0) { //if just one beep left to do - n2bz_timer.expires = jiffies + ontime + offtime; //next timeout - add_timer(&n2bz_timer); //reinit timer - } - n2_buzz(tone/2, ontime); - printk(KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime); - return; -} - -//================================================================================================== - -static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) -{ - switch (cmd) { - case N2BZ_BEEP: - n2_buzz(tone/2, ontime); - break; - - case N2BZ_BEEP_STOP: - del_timer(&n2bz_timer); - break; - - case N2BZ_BEEPS: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - n2bz_handler(0); - break; - - case N2BZ_TONESET: - if (param >= 250 && param <= 2000) - tone = param; - break; - - case N2BZ_ONTIME: - if (param > 4 && param < 201) - ontime = param; - break; - - case N2BZ_SILENTTIME: - if (param > ontime) //enforce a reasonable duty cycle - offtime = param; - else - offtime = ontime; - break; - - case N2BZ_REPEATCNT: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - break; - - case N2BZ_COMBINED: - bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16 - ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies - offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies - tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16 - break; - - default: - break; - } - return NOERR; -} - -static struct file_operations n2bz_fops = { - .owner = THIS_MODULE, - .ioctl = n2bz_ioctl, -}; - -//================================================================================================== - -static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - void *ret; - - wake_up(&n2pb_waitq); - remove_proc_entry(PWR_OFF_STR, NULL); //no parent - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED); - ret = create_proc_entry(PWR_OFF_STR, 0, NULL); - printk(KERN_DEBUG "cpe ret = %p\n", ret); - -// WARNING: This is RUDE...it unconditionally pulls the power plug. -// Your data will be at risk...since this is just a test system -// I am leaving it enabled...eventually userland needs to get the -// message, do an orderly shutdown and use an ioctl or something in -// /proc/powerdowm to actually have us pull the plug. - - *IXP4XX_GPIO_GPOER &= ~GPIO_PO_BM; // enable the pwr cntl gpio - *IXP4XX_GPIO_GPOUTR |= GPIO_PO_BM; // do the deed - - return IRQ_HANDLED; -} - -//================================================================================================== -// -//static void do_rb_timeout(unsigned long data) -//{ -// int i; -// -// for (i = 0; i < rb_presses; i++) -// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT); -// return; -//} -// -//================================================================================================== -// does nothing -- waiting for userland to define -// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so -// we hang in a loop until the button is no longer pressed - -struct testr { - int ctl; - long param; -}; - -static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - - static struct testr test[] = { - N2LM_ALL_OFF,0, - N2LM_ON,0, - N2LM_OFF,0, - N2LM_ON,1, - N2LM_ALL_OFF,1, - N2LM_ON,2, - N2LM_OFF,2, - N2LM_ON,3, - N2LM_OFF,3, - N2LM_BLINK,0, - N2LM_OFF,0, - N2LM_BLINK,1, - N2LM_OFF,1, - N2LM_BLINK,2, - N2LM_OFF,2, - N2LM_BLINK,3, - N2LM_OFF,3, - N2LM_ALL_OFF,0, - N2LM_ALT,1, - N2LM_OFF,1, - N2LM_ALL_ON,0 - }; - - printk("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long)); - - wake_up(&n2rb_waitq); - while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0) - ; //wait for button release - - if (rb_presses > 20) - rb_presses = 0; - tone = (rb_presses * 50) + 200; - ontime = (rb_presses*10) + 100; - offtime = 500 - (rb_presses*20); - printk("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone); - rb_presses++; - - n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses); - n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param); -// if (rb_presses == 0) { -// init_jiffy = jiffies; -// init_timer (&n2rb_timer); -// n2rb_timer.function = do_rb_timeout; -// }; -// -// if (rb_presses == 8) -// rb_presses = 0; -// if (rb_presses & 1) -// n2lm_ledon(test[rb_presses]); -// else -// n2lm_ledoff(test[rb_presses]); -// -// n2rb_timer.expires = (jiffies + RB_DELAY); -// add_timer (&n2rb_timer); -// if (rb_presses < 5) { -// if (rb_presses > 0) -// n2lm_ledoff(rb_presses); -// n2lm_ledon(++rb_presses); -// n2lm_timer_start(rb_presses); -// }; - - printk(KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies); - return IRQ_HANDLED; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2rb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Reset Button Wait\n"); - interruptible_sleep_on(&n2rb_waitq); - return copy_to_user(buffer, "reset", 5) ? -EFAULT : 5; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2pb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Power Button Wait\n"); - interruptible_sleep_on(&n2pb_waitq); - return copy_to_user(buffer, "poweroff", 8) ? -EFAULT : 8; - -} - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2rb_fops = { - .owner = THIS_MODULE, - .read = n2rb_read, -}; - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2pb_fops = { - .owner = THIS_MODULE, - .read = n2pb_read, -}; - -//================================================================================================== - -static void n2iom_initarch(void) -{ - printk(KERN_DEBUG "setup_interrupts - jiffies=%ld init_jiffy=%ld\n", jiffies, init_jiffy); - - *IXP4XX_GPIO_GPISR = 0x20400000; // read the 2 irqs to clr - gpio_line_config(N2_RB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_isr_clear(N2_RB_GPIO); - gpio_line_config(N2_PB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_HIGH); - gpio_line_isr_clear(N2_PB_GPIO); - - init_timer(&n2lm_rsg_timer); - init_timer(&n2lm_rsr_timer); - init_timer(&n2lm_d1_timer); - init_timer(&n2lm_d2_timer); -// init_timer(&n2rb_timer); -// init_timer(&n2pb_timer); - init_timer(&n2bz_timer); - n2lm_rsr_timer.function = n2lm_rsr_handler; - n2lm_rsg_timer.function = n2lm_rsg_handler; - n2lm_d2_timer.function = n2lm_d2_handler; - n2lm_d1_timer.function = n2lm_d1_handler; - n2bz_timer.function = n2bz_handler; - n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0; - - *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3 - *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds - *IXP4XX_GPIO_GPOUTR &= 0xfffffffc; - n2lm_ledon(LED_ALL); - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_SHORT); - n2lm_ledoff(LED_ALL); -// Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit - n2lm_ledon(LED_RS_RED); - - return; -} - -//================================================================================================== - -static int __init n2iom_init(void) -{ - printk(KERN_INFO "OpenN2 Misc I/O Driver Version %s\n", VERSION); - - init_jiffy = jiffies; - printk(KERN_DEBUG "init_jiffy=%ld\n",init_jiffy); - n2iom_initarch(); - - if (register_chrdev(N2RB_MAJOR, "n2_rbm", &n2pb_fops) < NOERR) { - printk(KERN_DEBUG "Reset Button Major %d not available\n", N2RB_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2PB_MAJOR, "n2_pbm", &n2rb_fops) < NOERR) { - printk(KERN_DEBUG "Power Button Major %d not available\n", N2PB_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2LM_MAJOR, "n2_ledm", &n2lm_fops) < NOERR) { - printk(KERN_DEBUG "Led Manager Major %d not available\n", N2LM_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2BZ_MAJOR, "n2_bzm", &n2bz_fops) < NOERR) { - printk(KERN_DEBUG "Buzzer Major %d not available\n", N2BZ_MAJOR); - return -EBUSY; - } - - if (request_irq(N2RB_IRQ, &n2rb_handler, SA_INTERRUPT, "n2_rb", NULL) < NOERR) { - printk(KERN_DEBUG "Reset Button IRQ %d not available\n", N2RB_IRQ); - return -EIO; - } - if (request_irq(N2PB_IRQ, &n2pb_handler, SA_INTERRUPT, "n2_pb", NULL) < NOERR) { - printk(KERN_DEBUG "Power Button IRQ %d not available\n", N2PB_IRQ); - return -EIO; - } - - enable_irq(N2PB_IRQ); - enable_irq(N2RB_IRQ); - return (NOERR); -} - -//================================================================================================== - -static void __exit n2iom_exit(void) -{ - remove_proc_entry(PWR_OFF_STR, NULL); - del_timer(&n2rb_timer); - free_irq(N2RB_IRQ,NULL); - unregister_chrdev(N2PB_MAJOR, "n2pb"); - del_timer(&n2pb_timer); - free_irq(N2PB_IRQ, NULL); - unregister_chrdev(N2RB_MAJOR, "n2rb" ); - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - unregister_chrdev(N2LM_MAJOR, "n2lm" ); -} - -module_init (n2iom_init); -module_exit (n2iom_exit); - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("OpenN2 Buttons/LEDs IO Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, int, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 8"); - diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2-part.c b/packages/linux/openslug-kernel-2.6.11/nslu2-part.c deleted file mode 100644 index 6fbf952e2a..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2-part.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * nslu2-part.c - * - * Maintainers: http://www.nslu2-linux.org/ - * Initial port: Mark Rakes <mrakes AT mac.com> - * - * "Parse" the fixed partition table of the Linksys NSLU2 and - * produce a Linux partition array to match. - */ - -#include <linux/kernel.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/vmalloc.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> - -/* info we know about the NSLU2's flash setup: - * - * Num Partition offset size - * --- --------- ---------- ----------- - * 0 RedBoot 0x00000000 0x00040000 - * 1 System Configuration 0x00040000 0x00020000 - * 2 Kernel 0x00060000 0x00100000 - * 3 Ramdisk 0x00160000 0x006a0000 - */ - #define NSLU2_NUM_FLASH_PARTITIONS 4 - #define NSLU2_FLASH_PART0_NAME "RedBoot" - #define NSLU2_FLASH_PART0_OFFSET 0x00000000 - #define NSLU2_FLASH_PART0_SIZE 0x00040000 - #define NSLU2_FLASH_PART1_NAME "System Configuration" - #define NSLU2_FLASH_PART1_OFFSET (NSLU2_FLASH_PART0_OFFSET + NSLU2_FLASH_PART0_SIZE) - #define NSLU2_FLASH_PART1_SIZE 0x00020000 - #define NSLU2_FLASH_PART2_NAME "Kernel" - #define NSLU2_FLASH_PART2_OFFSET (NSLU2_FLASH_PART1_OFFSET + NSLU2_FLASH_PART1_SIZE) - #define NSLU2_FLASH_PART2_SIZE 0x00100000 - #define NSLU2_FLASH_PART3_NAME "Ramdisk" - #define NSLU2_FLASH_PART3_OFFSET (NSLU2_FLASH_PART2_OFFSET + NSLU2_FLASH_PART2_SIZE) - #define NSLU2_FLASH_PART3_SIZE 0x006a0000 - -static int parse_nslu2_partitions(struct mtd_info *master, - struct mtd_partition **pparts, - unsigned long flash_start) -{ - struct mtd_partition *parts; - int ret = 0, namelen = 0; - char *names; - - namelen = strlen(NSLU2_FLASH_PART0_NAME) + - strlen(NSLU2_FLASH_PART1_NAME) + - strlen(NSLU2_FLASH_PART2_NAME) + - strlen(NSLU2_FLASH_PART3_NAME) + - NSLU2_NUM_FLASH_PARTITIONS; /*4 strings + each terminator */ - - parts = kmalloc(sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen, GFP_KERNEL); - if (!parts) { - ret = -ENOMEM; - goto out; - } - - memset(parts, 0, sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen); - names = (char *)&parts[NSLU2_NUM_FLASH_PARTITIONS]; - - /* RedBoot partition */ - parts[0].size = NSLU2_FLASH_PART0_SIZE; - parts[0].offset = NSLU2_FLASH_PART0_OFFSET; - parts[0].name = NSLU2_FLASH_PART0_NAME; - parts[0].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART0_NAME); - names += strlen(names)+1; - /* System Configuration */ - parts[1].size = NSLU2_FLASH_PART1_SIZE; - parts[1].offset = NSLU2_FLASH_PART1_OFFSET; - parts[1].name = NSLU2_FLASH_PART1_NAME; - parts[1].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART1_NAME); - names += strlen(names)+1; - /* Kernel */ - parts[2].size = NSLU2_FLASH_PART2_SIZE; - parts[2].offset = NSLU2_FLASH_PART2_OFFSET; - parts[2].name = NSLU2_FLASH_PART2_NAME; - parts[2].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART2_NAME); - names += strlen(names)+1; - /* Ramdisk */ - parts[3].size = NSLU2_FLASH_PART3_SIZE; - parts[3].offset = NSLU2_FLASH_PART3_OFFSET; - parts[3].name = NSLU2_FLASH_PART3_NAME; - parts[3].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART3_NAME); - names += strlen(names)+1; - - ret = NSLU2_NUM_FLASH_PARTITIONS; - *pparts = parts; - out: - return ret; -} - -static struct mtd_part_parser nslu2_parser = { - .owner = THIS_MODULE, - .parse_fn = parse_nslu2_partitions, - .name = "NSLU2", -}; - -static int __init nslu2_parser_init(void) -{ - return register_mtd_parser(&nslu2_parser); -} - -static void __exit nslu2_parser_exit(void) -{ - deregister_mtd_parser(&nslu2_parser); -} - -module_init(nslu2_parser_init); -module_exit(nslu2_parser_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Mark Rakes"); -MODULE_DESCRIPTION("Parsing code for NSLU2 flash tables"); diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2-pci.c b/packages/linux/openslug-kernel-2.6.11/nslu2-pci.c deleted file mode 100644 index 7327c65a4f..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2-pci.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-pci.c - * - * NSLU2 board-level PCI initialization - * - * based on ixdp425-pci.c: - * Copyright (C) 2002 Intel Corporation. - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Maintainer: http://www.nslu2-linux.org/ - * - * 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 - * published by the Free Software Foundation. - * - */ -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// However, all the common PCI setup code presumes the standard 4 PCI -// interrupts are available. So we compromise...we don't enable the -// IRQ on Pin 8 but we let - -#include <linux/config.h> -#include <linux/pci.h> -#include <linux/init.h> -#include <linux/delay.h> - -#include <asm/mach/pci.h> -#include <asm/irq.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> - -void __init nslu2_pci_preinit(void) -{ - gpio_line_config(NSLU2_PCI_INTA_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTB_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTC_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -// gpio_line_config(NSLU2_PCI_INTD_PIN, -// IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - - gpio_line_isr_clear(NSLU2_PCI_INTA_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTB_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTC_PIN); -// gpio_line_isr_clear(NSLU2_PCI_INTD_PIN); - - ixp4xx_pci_preinit(); -} - -static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -{ - static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = { - IRQ_NSLU2_PCI_INTA, - IRQ_NSLU2_PCI_INTB, - IRQ_NSLU2_PCI_INTC, -// IRQ_NSLU2_PCI_INTD - }; - - int irq = -1; - - if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV && - pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) { - irq = pci_irq_table[(slot + pin - 2) % 3]; // ! % 4 kas11 - } - - return irq; -} - -struct hw_pci __initdata nslu2_pci = { - .nr_controllers = 1, - .preinit = nslu2_pci_preinit, - .swizzle = pci_std_swizzle, - .setup = ixp4xx_setup, - .scan = ixp4xx_scan_bus, - .map_irq = nslu2_map_irq, -}; - -int __init nslu2_pci_init(void) //monkey see, monkey do -{ - if (machine_is_nslu2()) - pci_common_init(&nslu2_pci); - return 0; -} - -subsys_initcall(nslu2_pci_init); - diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2-setup.c b/packages/linux/openslug-kernel-2.6.11/nslu2-setup.c deleted file mode 100644 index 5c08affd5d..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2-setup.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-setup.c - * - * NSLU2 board-setup - * - * based ixdp425-setup.c: - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Author: Mark Rakes <mrakes at mac.com> - * Maintainers: http://www.nslu2-linux.org/ - * - * Fixed missing init_time in MACHINE_START kas11 10/22/04 - * Changed to conform to new style __init ixdp425 kas11 10/22/04 - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/device.h> -#include <linux/serial.h> -#include <linux/tty.h> -#include <linux/serial_core.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> - -#ifdef __ARMEB__ -#define REG_OFFSET 3 -#else -#define REG_OFFSET 0 -#endif - -/* - * NSLU2 uses only one serial port - */ -static struct uart_port nslu2_serial_ports[] = { - { - .membase = (char*)(IXP4XX_UART1_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART1_BASE_PHYS), - .irq = IRQ_IXP4XX_UART1, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 0, - .type = PORT_XSCALE, - .fifosize = 32 - } -#if 0 - , { - .membase = (char*)(IXP4XX_UART2_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART2_BASE_PHYS), - .irq = IRQ_IXP4XX_UART2, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 1, - .type = PORT_XSCALE, - .fifosize = 32 - } -#endif -}; - -void __init nslu2_map_io(void) -{ - early_serial_setup(&nslu2_serial_ports[0]); -#if 0 - early_serial_setup(&nslu2_serial_ports[1]); -#endif - ixp4xx_map_io(); -} - -static struct flash_platform_data nslu2_flash_data = { - .map_name = "cfi_probe", - .width = 2, -}; - -static struct resource nslu2_flash_resource = { - .start = NSLU2_FLASH_BASE, - .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device nslu2_flash = { - .name = "IXP4XX-Flash", - .id = 0, - .dev = { - .platform_data = &nslu2_flash_data, - }, - .num_resources = 1, - .resource = &nslu2_flash_resource, -}; - -static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = { - .sda_pin = NSLU2_SDA_PIN, - .scl_pin = NSLU2_SCL_PIN, -}; - -static struct platform_device nslu2_i2c_controller = { - .name = "IXP4XX-I2C", - .id = 0, - .dev = { - .platform_data = &nslu2_i2c_gpio_pins, - }, - .num_resources = 0 -}; - -static struct platform_device *nslu2_devices[] __initdata = { - &nslu2_i2c_controller, - &nslu2_flash -}; - -static void __init nslu2_init(void) -{ - platform_add_devices(&nslu2_devices, ARRAY_SIZE(nslu2_devices)); -} - -MACHINE_START(NSLU2, "Linksys NSLU2") - MAINTAINER("www.nslu2-linux.org") - BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS, - IXP4XX_PERIPHERAL_BASE_VIRT) - MAPIO(nslu2_map_io) - INITIRQ(ixp4xx_init_irq) //FIXME: all irq are off here - .timer = &ixp4xx_timer, - // INITTIME(ixp4xx_init_time) //this was missing in 2.6.7 code ...soft reboot needed? - BOOT_PARAMS(0x0100) - INIT_MACHINE(nslu2_init) -MACHINE_END diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2.h b/packages/linux/openslug-kernel-2.6.11/nslu2.h deleted file mode 100644 index bb79aaa007..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * include/asm-arm/arch-ixp4xx/nslu2.h - * - * NSLU2 platform specific definitions - * - * Author: Mark Rakes <mrakes AT mac.com> - * Maintainers: http://www.nslu2-linux.org - * - * based on ixdp425.h: - * Copyright 2004 (c) MontaVista, Software, Inc. - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// kas11 11-2-04 - -#ifndef __ASM_ARCH_HARDWARE_H__ -#error "Do not include this directly, instead #include <asm/hardware.h>" -#endif - -#define NSLU2_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS -#define NSLU2_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE - -#define NSLU2_SDA_PIN 7 -#define NSLU2_SCL_PIN 6 - -/* - * NSLU2 PCI IRQs - */ -#define NSLU2_PCI_MAX_DEV 3 -#define NSLU2_PCI_IRQ_LINES 3 - - -/* PCI controller GPIO to IRQ pin mappings */ -#define NSLU2_PCI_INTA_PIN 11 -#define NSLU2_PCI_INTB_PIN 10 -#define NSLU2_PCI_INTC_PIN 9 -//#define NSLU2_PCI_INTD_PIN 8 - - diff --git a/packages/linux/openslug-kernel-2.6.11/nslu2_2.6.11.patch b/packages/linux/openslug-kernel-2.6.11/nslu2_2.6.11.patch deleted file mode 100644 index bff8400396..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/nslu2_2.6.11.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff -urN linux-2.6.11.orig/arch/arm/boot/compressed/head.S linux-2.6.11/arch/arm/boot/compressed/head.S ---- linux-2.6.11.orig/arch/arm/boot/compressed/head.S 2005-03-01 21:38:25.000000000 -1000 -+++ linux-2.6.11/arch/arm/boot/compressed/head.S 2005-03-03 00:55:05.000000000 -1000 -@@ -79,6 +79,14 @@ - .endm - .macro writeb, rb - str \rb, [r3, #0] -+ .endm -+#elif defined(CONFIG_ARCH_NSLU2) -+ .macro loadsp, rb -+ mov \rb, #0xc8000000 -+ .endm -+ .macro writeb, rb -+ str \rb, [r3, #0] -+ .endm - #elif defined(CONFIG_ARCH_IXP2000) - .macro loadsp, rb - mov \rb, #0xc0000000 -diff -urN linux-2.6.11.orig/arch/arm/boot/compressed/head-xscale.S linux-2.6.11/arch/arm/boot/compressed/head-xscale.S ---- linux-2.6.11.orig/arch/arm/boot/compressed/head-xscale.S 2005-03-01 21:37:52.000000000 -1000 -+++ linux-2.6.11/arch/arm/boot/compressed/head-xscale.S 2005-03-02 01:41:31.000000000 -1000 -@@ -47,3 +47,8 @@ - orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) - #endif - -+#ifdef CONFIG_ARCH_NSLU2 -+ mov r7, #(MACH_TYPE_NSLU2 & 0xff) -+ orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00) -+#endif -+ -diff -urN linux-2.6.11.orig/arch/arm/mach-ixp4xx/Kconfig linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig ---- linux-2.6.11.orig/arch/arm/mach-ixp4xx/Kconfig 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/arch/arm/mach-ixp4xx/Kconfig 2005-03-02 01:43:42.000000000 -1000 -@@ -43,6 +43,12 @@ - IXDP465 Development Platform (Also known as BMP). - For more information on this platform, see Documentation/arm/IXP4xx. - -+config ARCH_NSLU2 -+ bool "NSLU2" -+ help -+ Say 'Y' here if you want your kernel to support Linksys's -+ NSLU2 NAS device. For more information on this platform, -+ see http://www.nslu2-linux.org - - # - # IXCDP1100 is the exact same HW as IXDP425, but with a different machine -diff -urN linux-2.6.11.orig/arch/arm/mach-ixp4xx/Makefile linux-2.6.11/arch/arm/mach-ixp4xx/Makefile ---- linux-2.6.11.orig/arch/arm/mach-ixp4xx/Makefile 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/arch/arm/mach-ixp4xx/Makefile 2005-03-02 01:44:16.000000000 -1000 -@@ -9,4 +9,4 @@ - obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o - obj-$(CONFIG_ARCH_PRPMC1100) += prpmc1100-pci.o prpmc1100-setup.o - obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o -- -+obj-$(CONFIG_ARCH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o -diff -urN linux-2.6.11.orig/arch/arm/tools/mach-types linux-2.6.11/arch/arm/tools/mach-types ---- linux-2.6.11.orig/arch/arm/tools/mach-types 2005-03-01 21:38:08.000000000 -1000 -+++ linux-2.6.11/arch/arm/tools/mach-types 2005-03-02 01:44:50.000000000 -1000 -@@ -604,7 +604,7 @@ - roverp7 MACH_ROVERP7 ROVERP7 594 - pr818s MACH_PR818S PR818S 595 - trxpro MACH_TRXPRO TRXPRO 596 --nslu2 MACH_NSLU2 NSLU2 597 -+nslu2 ARCH_NSLU2 NSLU2 597 - e400 MACH_E400 E400 598 - trab MACH_TRAB TRAB 599 - cmc_pu2 MACH_CMC_PU2 CMC_PU2 600 -diff -urN linux-2.6.11.orig/drivers/i2c/chips/Kconfig linux-2.6.11/drivers/i2c/chips/Kconfig ---- linux-2.6.11.orig/drivers/i2c/chips/Kconfig 2005-03-01 21:38:10.000000000 -1000 -+++ linux-2.6.11/drivers/i2c/chips/Kconfig 2005-03-02 01:45:28.000000000 -1000 -@@ -370,5 +370,14 @@ - - This driver can also be built as a module. If so, the module - will be called isp1301_omap. -+config SENSORS_X1205 -+ tristate "Xicor X1205 RTC chip" -+ depends on I2C && EXPERIMENTAL -+ select I2C_SENSOR -+ help -+ If you say yes here you get support for the Xicor x1205 RTC chip. -+ -+ This driver can also be built as a module. If so, the module -+ will be called x1205-rtc - - endmenu -diff -urN linux-2.6.11.orig/drivers/i2c/chips/Makefile linux-2.6.11/drivers/i2c/chips/Makefile ---- linux-2.6.11.orig/drivers/i2c/chips/Makefile 2005-03-01 21:38:34.000000000 -1000 -+++ linux-2.6.11/drivers/i2c/chips/Makefile 2005-03-02 01:45:54.000000000 -1000 -@@ -35,6 +35,7 @@ - obj-$(CONFIG_SENSORS_VIA686A) += via686a.o - obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o - obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o -+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG -diff -urN linux-2.6.11.orig/drivers/mtd/maps/ixp4xx.c linux-2.6.11/drivers/mtd/maps/ixp4xx.c ---- linux-2.6.11.orig/drivers/mtd/maps/ixp4xx.c 2005-03-01 21:37:30.000000000 -1000 -+++ linux-2.6.11/drivers/mtd/maps/ixp4xx.c 2005-03-02 01:46:40.000000000 -1000 -@@ -94,7 +94,11 @@ - struct resource *res; - }; - -+#ifdef CONFIG_ARCH_NSLU2 -+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL }; -+#else - static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; -+#endif - - static int ixp4xx_flash_remove(struct device *_dev) - { -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-01 21:37:51.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/hardware.h 2005-03-02 17:34:46.000000000 -1000 -@@ -44,5 +44,6 @@ - #include "ixdp425.h" - #include "coyote.h" - #include "prpmc1100.h" -+#include "nslu2.h" - - #endif /* _ASM_ARCH_HARDWARE_H */ -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-01 21:38:12.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/irqs.h 2005-03-02 01:49:27.000000000 -1000 -@@ -93,4 +93,11 @@ - #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 - #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 - -+/* -+ * NSLU2 board IRQs -+ */ -+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11 -+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10 -+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 -+ - #endif -diff -urN linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h ---- linux-2.6.11.orig/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-01 21:37:49.000000000 -1000 -+++ linux-2.6.11/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2005-03-03 02:26:29.231822000 -1000 -@@ -52,7 +52,7 @@ - * Expansion BUS Configuration registers - */ - #define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000) --#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFD000) -+#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBFE000) - #define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000) - - /* -diff -urN linux-2.6.11.orig/include/linux/i2c-id.h linux-2.6.11/include/linux/i2c-id.h ---- linux-2.6.11.orig/include/linux/i2c-id.h 2005-03-01 21:38:34.000000000 -1000 -+++ linux-2.6.11/include/linux/i2c-id.h 2005-03-02 01:50:14.000000000 -1000 -@@ -110,6 +110,7 @@ - #define I2C_DRIVERID_TDA7313 62 /* TDA7313 audio processor */ - #define I2C_DRIVERID_MAX6900 63 /* MAX6900 real-time clock */ - #define I2C_DRIVERID_SAA7114H 64 /* video decoder */ -+#define I2C_DRIVERID_X1205 0xF0 - - - #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ diff --git a/packages/linux/openslug-kernel-2.6.11/usbnet.patch b/packages/linux/openslug-kernel-2.6.11/usbnet.patch deleted file mode 100644 index 1b3cf3fcb8..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/usbnet.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- linux-2.6.11/drivers/usb/net/usbnet.c_orig 2005-03-03 13:50:54.053237416 -0500 -+++ linux-2.6.11/drivers/usb/net/usbnet.c 2005-03-03 13:53:19.415139048 -0500 -@@ -2404,12 +2404,13 @@ - #endif - size = (sizeof (struct ethhdr) + dev->net->mtu); - -- if ((skb = alloc_skb (size, flags)) == NULL) { -+ if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) { - devdbg (dev, "no rx skb"); - defer_kevent (dev, EVENT_RX_MEMORY); - usb_free_urb (urb); - return; - } -+ skb_reserve (skb, NET_IP_ALIGN); - - entry = (struct skb_data *) skb->cb; - entry->urb = urb; diff --git a/packages/linux/openslug-kernel-2.6.11/x1205-rtc.c b/packages/linux/openslug-kernel-2.6.11/x1205-rtc.c deleted file mode 100644 index 50fbc9e280..0000000000 --- a/packages/linux/openslug-kernel-2.6.11/x1205-rtc.c +++ /dev/null @@ -1,548 +0,0 @@ -/* - x1205 - an 12c driver for the Xicor X1205 RTC - Copyright 2004 Karen Spearel - - please send all reports to: - kas11 at tampabay dot rr dot com - - based on linux/drivers/acron/char/pcf8583.h - Copyright (C) 2000 Russell King - - 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., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -/* - - * i2c_adapter is the structure used to identify a physical i2c bus along - * with the access algorithms necessary to access it. - -struct i2c_adapter { - struct module *owner; - unsigned int id; == is algo->id | hwdep.struct->id, for registered values see below - unsigned int class; - struct i2c_algorithm *algo; the algorithm to access the bus - void *algo_data; - - --- administration stuff. - int (*client_register)(struct i2c_client *); - int (*client_unregister)(struct i2c_client *); - - data fields that are valid for all devices - struct semaphore bus_lock; - struct semaphore clist_lock; - - int timeout; - int retries; - struct device dev; the adapter device - struct class_device class_dev; the class device - -#ifdef CONFIG_PROC_FS - No need to set this when you initialize the adapter - int inode; -#endif def CONFIG_PROC_FS - - int nr; - struct list_head clients; - struct list_head list; - char name[I2C_NAME_SIZE]; - struct completion dev_released; - struct completion class_dev_released; -}; -*/ - - -/*========== Driver for the X1205 on the Linksys NSLU2 ==================*/ - -#include <linux/init.h> -#include <linux/i2c.h> -#include <linux/slab.h> -#include <linux/string.h> -#include <linux/errno.h> -#include <linux/bcd.h> -#include <linux/rtc.h> -#include <linux/fs.h> -#include <linux/proc_fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <asm/uaccess.h> -#include <asm/system.h> -#include <linux/moduleparam.h> - -#define RTC_GETDATETIME 0 -#define RTC_SETTIME 1 -#define RTC_SETDATETIME 2 - -#define I2C_M_WR 0 // just for consistancy - -// offsets into read buf - add 2 for write buf -#define CCR_SEC 0 -#define CCR_MIN 1 -#define CCR_HOUR 2 -#define CCR_MDAY 3 -#define CCR_MONTH 4 -#define CCR_YEAR 5 -#define CCR_WDAY 6 -#define CCR_Y2K 7 - -#define X1205_I2C_BUS_ADDR 0x6f // hardwired into x1205 -#define X1205_ALM0_BASE 0x00 // Base address of the ALM0 -#define X1205_CCR_BASE 0x30 // Base address of the CCR -#define X1205_SR_ADDR 0x3f // Status Register -#define X1205_SR_WEL 0x02 // Write Enable Latch bit -#define X1205_SR_RWEL 0x04 // Register Write Enable Bit -#define X1205_MILBIT 0x80 // this bit set in ccr.hour for 24 hr mode -#define NOERR 0 -#define RTC_NODATE 0 -#define RTC_DATETOO 1 - -// comment out next line is your x1205 can't do page writes -//#define X1205PAGEWRITE 1 -#ifdef X1205PAGEWRITE -#define DRIVERNAME "Xicor x1205 RTC Driver v0.9.3.3" -#else -#define DRIVERNAME "Xicor x1205 RTC Dvr v0.9.3.3NPW" -#endif - -#define DEBUG KERN_DEBUG - - -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base); -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base); -static int x1205_attach(struct i2c_adapter *adapter); -static int x1205_detach(struct i2c_client *client); -static int x1205_validate_tm(struct rtc_time *tm); -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg); -static int x1205_sync_rtc(void); -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr); -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data); - -static struct i2c_driver x1205_driver = { - .owner = THIS_MODULE, - .name = DRIVERNAME, - .id = I2C_DRIVERID_X1205, - .flags = I2C_DF_NOTIFY, - .attach_adapter = &x1205_attach, //we don't need to probe...x1205 is hardwired @ 0x6f - .detach_client = &x1205_detach, - .command = &x1205_command, //this prolly never gets called...used internally tho -}; - -static struct i2c_client x1205_i2c_client = { - .id = I2C_DRIVERID_X1205, - .flags = 0, - .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit - .adapter = NULL, // the adapter we sit on assigned in attach - .driver = &x1205_driver, // and our access routines - .usage_count = 0, // How many accesses currently to this client - .dev = {}, // the device structure - .list = {}, - .name = DRIVERNAME, - .released = {}, -}; - -static struct file_operations rtc_fops = { - owner: THIS_MODULE, - ioctl: x1205_ioctl, - read: x1205_read, -}; - -static struct miscdevice x1205_miscdev = { - .minor = RTC_MINOR, - .name = "rtc", - .fops = &rtc_fops, -}; -extern int (*set_rtc)(void); -static unsigned epoch = 1900; //coresponds to year 0 -static unsigned rtc_epoch = 2000; -static const unsigned char days_in_mo[] = -{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - -//===================================CODE====================================== -// in the routines that deal directly with the x1205 hardware, we use -// rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch -// Epoch is inited as 2000. Time is set to UT -//============================================================================= -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base) -{ - static unsigned char addr[2] = { 0,} ; - unsigned char buf[8]; - struct i2c_msg msgs[2] = { - { client->addr, I2C_M_WR, 2, addr }, //msg 1 = send base address - { client->addr, I2C_M_RD, 8, buf }, //msg 2 = read sequential data - }; - addr[1] = reg_base; - if ((i2c_transfer(client->adapter, msgs, 2)) == 2) { //did we read 2 messages? - printk(KERN_DEBUG "raw x1205 read data - sec-%02x min-%02x hr-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6], buf[7]); - tm->tm_sec = BCD2BIN(buf[CCR_SEC]); - tm->tm_min = BCD2BIN(buf[CCR_MIN]); - buf[CCR_HOUR] &= ~X1205_MILBIT; - tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); //hr is 0-23 - tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); - tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); - rtc_epoch = BCD2BIN(buf[CCR_Y2K]) * 100; - tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + rtc_epoch - epoch; - tm->tm_wday = buf[CCR_WDAY]; - printk(KERN_DEBUG "rtc_time output data - sec-%02d min-%02d hr-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday,epoch, rtc_epoch); - } else { - printk(KERN_DEBUG "i2c_transfer Read Error\n"); - return -EIO; - } - - return NOERR; -} -// x1205pagewrite allows writing a block of registers in msg3 even though the x1205 says -// nothing about this in its spec. -// it needs more testing as it is possible some x1205s are actually not-completely- -// functional x1226s and there is a reason for the multiple write to not be in the spec. -// anyhow, it is enabled for the time being...and we even push out luck by sending 10 bytes - -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base) -{ - static unsigned char wel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL }; - static unsigned char rwel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL | X1205_SR_RWEL }; - static unsigned char diswe[3] = { 0, X1205_SR_ADDR, 0 }; - -#ifdef X1205PAGEWRITE - - static unsigned char buf[10] = { 0, X1205_CCR_BASE, }; - struct i2c_msg msgs[4] = { - { client->addr, I2C_M_WR, 3, wel }, //msg 1 = write WEL to to ccr sr - { client->addr, I2C_M_WR, 3, rwel }, //msg 2 = write RWEL to ccr sr - { client->addr, I2C_M_WR, 10, buf }, //msg 3 = write ccr base addr +seq data - { client->addr, I2C_M_WR, 3, diswe }, //msg 4 = 0 to ccr sr to disable writes - }; - - msgs[2].len = 5; // 5 bytes + addr to set time only - buf [1] = reg_base; - buf[CCR_SEC+2] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN+2] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR+2] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - if (datetoo == 1) { - buf[CCR_MDAY+2] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH+2] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR+2] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY+2] = tm->tm_wday & 7; - buf[CCR_Y2K+2] = BIN2BCD((rtc_epoch/100)); - msgs[2].len += 5; //5 more bytes to set date - } - printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); - printk(KERN_DEBUG "BCD write data - sec-%02x min-%02x hour-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[2],buf[3],buf[4],buf[5],buf[6], buf[7], buf[8], buf[9]); - - if ((i2c_transfer(client->adapter, msgs, 4)) != 4) - return -EIO; - return NOERR; - -#else //do this if page writes aren't working - - int i,xfer; - static unsigned char data[3] = { 0,}; - static unsigned char buf[8]; - - buf[CCR_SEC] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - if (datetoo == 1) { - buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY] = tm->tm_wday & 7; - buf[CCR_Y2K] = BIN2BCD((rtc_epoch/100)); - } - printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); - - xfer = i2c_master_send(client, wel, 3); - printk(KERN_DEBUG "wen - %x\n", xfer); - if (xfer != 3) - return -EIO; - - xfer = i2c_master_send(client, rwel, 3); - printk(KERN_DEBUG "wenb - %x\n", xfer); - if (xfer != 3) - return -EIO; - - for (i = 0; i < 8; i++) { - data[1] = i + reg_base; - data[2] = buf[i]; - xfer = i2c_master_send(client, data, 3); - printk(KERN_DEBUG "xfer - %d addr - %02x data - %02x\n", xfer, data[1], data[2]); - if (xfer != 3) - return -EIO; - }; - - xfer = i2c_master_send(client, diswe, 3); - printk(KERN_DEBUG "wdis - %x\n", xfer); - if (xfer != 3) - return -EIO; - return NOERR; -#endif -} -//============================================================================= - -static int x1205_attach(struct i2c_adapter *adapter) -{ - struct rtc_time tm; - struct timespec tv; - int errno; - - x1205_i2c_client.adapter = adapter; - x1205_i2c_client.id++; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver - return -EIO; - - if ((errno = i2c_attach_client(&x1205_i2c_client)) != NOERR) - return errno; - - tv.tv_nsec = tm.tm_sec * 10000000; - tv.tv_sec = mktime(tm.tm_year+epoch, tm.tm_mon, tm.tm_mday, tm.tm_hour, - tm.tm_min, tm.tm_sec); - do_settimeofday(&tv); - set_rtc = x1205_sync_rtc; - - printk(KERN_DEBUG "%s attached on adapter %s\n",x1205_i2c_client.name, - x1205_i2c_client.adapter->name); //why is this name a null string? - - return NOERR; -} - -static int x1205_detach(struct i2c_client *client) -{ - int errno; - - if ((errno = i2c_detach_client(client)) != 0) { - printk(KERN_DEBUG "i2c_detach failed - errno = %d\n", errno); - return errno; - } - - return NOERR; -} - -// make sure the rtc_time values are in bounds -static int x1205_validate_tm(struct rtc_time *tm) -{ - tm->tm_year += 1900; - - if (tm->tm_year < 1970) - return -EINVAL; - - if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) - return -EINVAL; - - if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) && - ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400))))) - return -EINVAL; - - if ((tm->tm_year -= epoch) > 255) - return -EINVAL; - - if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) - return -EINVAL; - return NOERR; -} - -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm) -{ - int errno, dodate = RTC_DATETOO; - - if (client == NULL || tm == NULL) - return -EINVAL; - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - printk(KERN_DEBUG "x1205_command %d\n", cmd); - - switch (cmd) { - case RTC_GETDATETIME: - return x1205_get_datetime(client, tm, X1205_CCR_BASE); - - case RTC_SETTIME: // note fall thru - dodate = RTC_NODATE; - case RTC_SETDATETIME: - if ((errno = x1205_validate_tm(tm)) < NOERR) - return errno; - return x1205_set_datetime(client, tm, dodate, X1205_CCR_BASE); - - default: - return -EINVAL; - } -} - -static int x1205_sync_rtc(void) -{ - struct rtc_time new_tm, old_tm; - unsigned long cur_secs = xtime.tv_sec; - - printk(KERN_DEBUG "x1205_sync_rtc entry\n"); - - if (x1205_command(&x1205_i2c_client, RTC_GETDATETIME, &old_tm)) - return 0; - -// xtime.tv_nsec = old_tm.tm_sec * 10000000; //FIXME: - new_tm.tm_sec = cur_secs % 60; - cur_secs /= 60; - new_tm.tm_min = cur_secs % 60; - cur_secs /= 60; - new_tm.tm_hour = cur_secs % 24; - - /* - * avoid writing when we're going to change the day - * of the month. We will retry in the next minute. - * This basically means that if the RTC must not drift - * by more than 1 minute in 11 minutes. - */ - if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) || - (new_tm.tm_hour == 23 && new_tm.tm_min == 59)) - return 1; - printk(KERN_DEBUG "x1205_sync_rtc exit\n"); - - return x1205_command(&x1205_i2c_client, RTC_SETTIME, &new_tm); -} - -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr) -{ - struct rtc_time tm; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - return copy_to_user(buf, &tm, sizeof(tm)) ? -EFAULT : NOERR; -} - -//============================================================================== - -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long arg) -{ - struct rtc_time tm; - int errno; - - printk(KERN_DEBUG "ioctl = %x\n", cmd); - - switch (cmd) { - case RTC_RD_TIME: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - break; - - case RTC_SET_TIME: - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - if ((errno = x1205_validate_tm(&tm)) < NOERR) - return errno; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_CCR_BASE); - - case RTC_ALM_SET: //FIXME: set Control Regs - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_ALM0_BASE); - - case RTC_ALM_READ: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_ALM0_BASE)) < NOERR) - return -EIO; - break; - - case RTC_EPOCH_READ: - - return put_user (epoch, (unsigned long __user *)arg); - - case RTC_EPOCH_SET: - if (arg < 1900) - return -EINVAL; - - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - epoch = arg; - return 0; - - default: - return -ENOTTY; - } - return copy_to_user((void __user *)arg, &tm, sizeof tm) ? -EFAULT : 0; - -} - -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data) -{ - struct rtc_time tm; - int slen, errno; - - if ((errno = x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return errno; - -// here we return the real year and the month as 1-12 since it is human-readable - slen = sprintf(buf, "rtc_time\t: %02d:%02d:%02d\nrtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday); - printk(KERN_DEBUG "raw rtc_time\t: %02d:%02d:%02d\nraw rtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year, tm.tm_mon, tm.tm_mday); - - if (slen <= off + len) - *eof = 1; - *start = buf + off; - slen -= off; - if (slen > len) - slen = len; - if ( slen < 0 ) - slen = 0; - - return slen; -} - -static int __init x1205_init(void) -{ - struct rtc_time tm; - int errno; - printk(KERN_INFO "LOADED %s\n", DRIVERNAME); - - if ((errno = i2c_add_driver(&x1205_driver)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "x1205_init failed - errno = %d\n", errno); - return (errno); - } - if ((errno = misc_register(&x1205_miscdev)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "Register Misc Driver failed - errno = %d\n", errno); - i2c_del_driver(&x1205_driver); - return errno; - } - if (create_proc_read_entry("driver/rtc", 0, NULL, x1205_read_proc, NULL) < NOERR) - return -ENOMEM; - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functionality - return -EIO; - - return NOERR; -} - -static void __exit x1205_exit(void) -{ - remove_proc_entry("driver/rtc", NULL); - misc_deregister(&x1205_miscdev); - i2c_del_driver(&x1205_driver); - set_rtc = NULL; -} - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("Xicor X1205-RTC Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, bool, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 1"); - -module_init(x1205_init); -module_exit(x1205_exit); diff --git a/packages/linux/openslug-kernel-2.6.7/arm-Makefile.patch b/packages/linux/openslug-kernel-2.6.7/arm-Makefile.patch deleted file mode 100644 index fa059f29cd..0000000000 --- a/packages/linux/openslug-kernel-2.6.7/arm-Makefile.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- linux-2.6.7/arch/arm/Makefile.orig 2004-06-15 22:19:13.000000000 -0700 -+++ linux-2.6.7/arch/arm/Makefile 2004-09-19 21:47:58.000000000 -0700 -@@ -55,8 +55,8 @@ - tune-$(CONFIG_CPU_V6) :=-mtune=strongarm - - # Need -Uarm for gcc < 3.x --CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm --AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float -Wa,-mno-fpu -+CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float -Uarm -+AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float - - #Default value - DATAADDR := . diff --git a/packages/linux/openslug-kernel-2.6.7/arm-timer.patch b/packages/linux/openslug-kernel-2.6.7/arm-timer.patch deleted file mode 100644 index b36df4fe7c..0000000000 --- a/packages/linux/openslug-kernel-2.6.7/arm-timer.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- linux-2.6.7/arch/arm/mach-ixp4xx/common.c.orig 2004-09-26 15:32:52.000000000 -0400 -+++ linux-2.6.7/arch/arm/mach-ixp4xx/common.c 2004-09-26 15:33:34.000000000 -0400 -@@ -223,13 +223,7 @@ static irqreturn_t ixp4xx_timer_interrup - /* Clear Pending Interrupt by writing '1' to it */ - *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND; - -- /* -- * Catch up with the real idea of time -- */ -- do { -- do_timer(regs); -- last_jiffy_time += LATCH; -- } while((*IXP4XX_OSTS - last_jiffy_time) > LATCH); -+ do_timer(regs); - - return IRQ_HANDLED; - } diff --git a/packages/linux/openslug-kernel-2.6.7/defconfig b/packages/linux/openslug-kernel-2.6.7/defconfig deleted file mode 100644 index 1e6a933531..0000000000 --- a/packages/linux/openslug-kernel-2.6.7/defconfig +++ /dev/null @@ -1,1097 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_CLEAN_COMPILE=y -CONFIG_STANDALONE=y -CONFIG_BROKEN_ON_SMP=y - -# -# General setup -# -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_POSIX_MQUEUE is not set -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y -# CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_HOTPLUG=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_EMBEDDED=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# 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=y -# 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 is not set -# CONFIG_ARCH_VERSATILE_PB is not set -CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y - -# -# Intel IXP4xx Implementation Options -# - -# -# IXP4xx Platforms -# -# CONFIG_ARCH_AVILA is not set -# CONFIG_ARCH_ADI_COYOTE is not set -CONFIG_ARCH_IXDP425=y -CONFIG_ARCH_IXCDP1100=y -# CONFIG_ARCH_PRPMC1100 is not set -CONFIG_ARCH_IXDP4XX=y - -# -# IXP4xx Options -# -CONFIG_IXP4XX_INDIRECT_PCI=y -CONFIG_DMABOUNCE=y - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_XSCALE=y -CONFIG_CPU_32v5=y -CONFIG_CPU_ABRT_EV5T=y -CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_MINICACHE=y - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set -CONFIG_CPU_BIG_ENDIAN=y -CONFIG_XSCALE_PMU=y - -# -# General setup -# -CONFIG_PCI=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_PCI_LEGACY_PROC=y -# CONFIG_PCI_NAMES is not set - -# -# PCMCIA/CardBus support -# -# CONFIG_PCMCIA is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_AOUT is not set -# CONFIG_BINFMT_MISC is not set - -# -# Generic Driver Options -# -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set -CONFIG_PM=y -# CONFIG_PREEMPT is not set -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000 console=ttyS0,115200n8" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_CONCAT=y -CONFIG_MTD_REDBOOT_PARTS=y -CONFIG_MTD_CMDLINE_PARTS=y -# 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=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_CFI_STAA is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -CONFIG_MTD_COMPLEX_MAPPINGS=y -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_IXP4XX=y -# CONFIG_MTD_EDB7312 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play support -# - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_CARMEL is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=10240 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=m -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK_DEV=m -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_FWMARK=y -CONFIG_IP_ROUTE_NAT=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_TOS=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set - -# -# IP: Virtual Server Configuration -# -CONFIG_IP_VS=m -CONFIG_IP_VS_DEBUG=y -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set - -# -# IPVS application helper -# -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set - -# -# Bridge: Netfilter Configuration -# -# CONFIG_BRIDGE_NF_EBTABLES is not set -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -CONFIG_IPX=m -# CONFIG_IPX_INTERN is not set -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -# 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_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -# CONFIG_NET_SCH_HFSC is not set -CONFIG_NET_SCH_CSZ=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -# CONFIG_NET_SCH_DELAY is not set -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_QOS=y -CONFIG_NET_ESTIMATOR=y -CONFIG_NET_CLS=y -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -CONFIG_NET_CLS_POLICE=y - -# -# Network testing -# -CONFIG_NET_PKTGEN=m -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_S2IO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y - -# -# Obsolete Wireless cards support (pre-802.11) -# -# CONFIG_STRIP is not set - -# -# Wireless 802.11b ISA/PCI cards support -# -# CONFIG_AIRO is not set -# CONFIG_HERMES is not set -# CONFIG_ATMEL is not set - -# -# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -# -# CONFIG_PRISM54 is not set -CONFIG_NET_WIRELESS=y - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set -# CONFIG_NETCONSOLE is not set - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI=m -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=m -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI Transport Attributes -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_MEGARAID is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -CONFIG_SCSI_QLA2XXX=m -# CONFIG_SCSI_QLA21XX is not set -# CONFIG_SCSI_QLA22XX is not set -# CONFIG_SCSI_QLA2300 is not set -# CONFIG_SCSI_QLA2322 is not set -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_QLA6322 is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Fusion MPT device support -# -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input device support -# -CONFIG_INPUT=m - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=m -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -CONFIG_SOUND_GAMEPORT=y -# CONFIG_SERIO is not set -# CONFIG_SERIO_I8042 is not set - -# -# Input Device Drivers -# -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=2 -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -CONFIG_IXP4XX_WATCHDOG=y - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_I810 is not set -# CONFIG_I2C_ISA is not set -CONFIG_I2C_IXP4XX=y -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_PROSAVAGE is not set -# CONFIG_I2C_SAVAGE4 is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set -# CONFIG_I2C_VOODOO3 is not set - -# -# Hardware Sensors Chip support -# -CONFIG_I2C_SENSOR=y -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_FSCHER is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set - -# -# Other I2C Chip support -# -CONFIG_SENSORS_EEPROM=y -CONFIG_SENSORS_X1205=y -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -# CONFIG_EXT2_FS_SECURITY is not set -CONFIG_EXT3_FS=m -CONFIG_EXT3_FS_XATTR=y -CONFIG_EXT3_FS_POSIX_ACL=y -# CONFIG_EXT3_FS_SECURITY is not set -CONFIG_JBD=m -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -CONFIG_FS_POSIX_ACL=y -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -# CONFIG_FAT_FS is not set -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -# CONFIG_HUGETLB_PAGE is not set -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=1 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set -# CONFIG_NFSD is not set -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -# CONFIG_EXPORTFS is not set -CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_NEC98_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 is not set - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# USB support -# -CONFIG_USB=m -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_DYNAMIC_MINORS is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=m -# CONFIG_USB_EHCI_SPLIT_ISO is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_OHCI_HCD=m -CONFIG_USB_UHCI_HCD=m -# CONFIG_USB_SL811HS is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_BLUETOOTH_TTY is not set -# CONFIG_USB_ACM is not set -CONFIG_USB_PRINTER=m -CONFIG_USB_STORAGE=m -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set - -# -# USB Human Interface Devices (HID) -# -# 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_KBTAB is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_MTOUCH is not set -# CONFIG_USB_EGALAX is not set -# CONFIG_USB_XPAD is not set -# CONFIG_USB_ATI_REMOTE is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_CATC is not set -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -# CONFIG_USB_RTL8150 is not set -CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_BELKIN=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -# CONFIG_USB_SERIAL_FTDI_SIO is not set -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# 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_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_SAFE is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM 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_TIGL is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_PHIDGETSERVO is not set -# CONFIG_USB_TEST is not set - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_ICEDCC is not set - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/openslug-kernel-2.6.7/ipx4xx-pci.patch b/packages/linux/openslug-kernel-2.6.7/ipx4xx-pci.patch deleted file mode 100644 index 31be5fb874..0000000000 --- a/packages/linux/openslug-kernel-2.6.7/ipx4xx-pci.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- linux-2.6.7/arch/arm/mach-ixp4xx/common-pci.c.orig 2004-09-25 04:06:48.000000000 -0400 -+++ linux-2.6.7/arch/arm/mach-ixp4xx/common-pci.c 2004-09-25 04:07:31.000000000 -0400 -@@ -540,4 +540,6 @@ - EXPORT_SYMBOL(pci_set_dma_mask); - EXPORT_SYMBOL(pci_dac_set_dma_mask); - EXPORT_SYMBOL(pci_set_consistent_dma_mask); -+EXPORT_SYMBOL(ixp4xx_pci_read); -+EXPORT_SYMBOL(ixp4xx_pci_write); - diff --git a/packages/linux/openslug-kernel-2.6.7/x1205-rtc.patch b/packages/linux/openslug-kernel-2.6.7/x1205-rtc.patch deleted file mode 100644 index 72c2bf91b9..0000000000 --- a/packages/linux/openslug-kernel-2.6.7/x1205-rtc.patch +++ /dev/null @@ -1,142 +0,0 @@ ---- drivers/i2c/chips/Kconfig.orig 2004-06-16 01:19:35.000000000 -0400 -+++ drivers/i2c/chips/Kconfig 2004-09-22 18:09:48.454794342 -0400 -@@ -240,6 +240,16 @@ - This driver can also be built as a module. If so, the module - will be called pcf8591. - -+config SENSORS_X1205 -+ tristate "Xicor X1205 RTC chip" -+ depends on I2C && EXPERIMENTAL -+ select I2C_SENSOR -+ help -+ If you say yes here you get support for the Xicor x1205 RTC chip. -+ -+ This driver can also be built as a module. If so, the module -+ will be called x1205-rtc -+ - config SENSORS_RTC8564 - tristate "Epson 8564 RTC chip" - depends on I2C && EXPERIMENTA ---- drivers/i2c/chips/Makefile.old 2004-06-16 01:20:26.000000000 -0400 -+++ drivers/i2c/chips/Makefile 2004-09-22 16:48:06.435580334 -0400 -@@ -25,6 +25,7 @@ - obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o - obj-$(CONFIG_SENSORS_VIA686A) += via686a.o - obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o -+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG - ---- arch/arm/mach-ixp4xx/ixp425-time.c.old 1969-12-31 19:00:00.000000000 -0500 -+++ arch/arm/mach-ixp4xx/ixp425-time.c 2004-09-22 23:30:54.165988077 -0400 -@@ -0,0 +1,87 @@ -+/* -+ * arch/arm/mach-ixp425/ixp425-time.c -+ * -+ * Timer tick for IXP425 based sytems. We use OS timer1 on the CPU. -+ * -+ * Author: Peter Barry -+ * Copyright: (C) 2001 Intel Corporation. -+ * -+ * Maintainer: Deepak Saxena <dsaxena@mvista.com> -+ * -+ * 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 -+ * published by the Free Software Foundation. -+ */ -+ -+ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/sched.h> -+#include <linux/kernel.h> -+#include <linux/interrupt.h> -+#include <linux/time.h> -+#include <linux/init.h> -+#include <linux/smp.h> -+ -+#include <asm/uaccess.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+ -+#include <linux/timex.h> -+#include <asm/hardware.h> -+ -+ -+extern int setup_arm_irq(int, struct irqaction *); -+ -+/* IRQs are disabled before entering here from do_gettimeofday() */ -+static unsigned long ixp425_gettimeoffset(void) -+{ -+ u32 elapsed, usec, curr, reload; -+ -+ /* -+ * We need elapsed timer ticks since last interrupt -+ * -+ * Read the CCNT value. The returned value is -+ * between -LATCH and 0, 0 corresponding to a full jiffy -+ */ -+ -+ reload = *IXP425_OSRT1 & ~IXP425_OST_RELOAD_MASK; -+ curr = *IXP425_OST1; -+ -+ /* Corner case when rolling over as int disabled ?? */ -+ elapsed = reload - curr; -+ -+ /* Now convert them to usec */ -+ usec = (unsigned long)(elapsed * tick) / LATCH; -+ -+ return usec; -+} -+ -+static void ixp425_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ /* Clear Pending Interrupt by writing '1' to it */ -+ *IXP425_OSST = IXP425_OSST_TIMER_1_PEND; -+ -+ do_timer(regs); -+} -+ -+extern unsigned long (*gettimeoffset)(void); -+ -+static struct irqaction timer_irq = { -+ name: "IXP425 Timer 1", -+}; -+ -+void __init setup_timer(void) -+{ -+ gettimeoffset = ixp425_gettimeoffset; -+ timer_irq.handler = ixp425_timer_interrupt; -+ -+ /* Clear Pending Interrupt by writing '1' to it */ -+ *IXP425_OSST = IXP425_OSST_TIMER_1_PEND; -+ -+ /* Setup the Timer counter value */ -+ *IXP425_OSRT1 = (LATCH & ~IXP425_OST_RELOAD_MASK) | IXP425_OST_ENABLE; -+ -+ /* Connect the interrupt handler and enable the interrupt */ -+ setup_arm_irq(IRQ_IXP425_TIMER1, &ixp4xx_timer_irq); -+} ---- include/linux/i2c-id.h 2004-06-16 01:18:57.000000000 -0400 -+++ include/linux/i2c-id.h.new 2004-09-23 00:56:30.772429217 -0400 -@@ -101,7 +101,7 @@ - #define I2C_DRIVERID_UDA1342 53 /* UDA1342 audio codec */ - #define I2C_DRIVERID_ADV7170 54 /* video encoder */ - #define I2C_DRIVERID_RADEON 55 /* I2C bus on Radeon boards */ -- -+#define I2C_DRIVERID_X1205 0xF0 /* Xicor X1205 RTC */ - - #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ - #define I2C_DRIVERID_EXP1 0xF1 ---- archold/arm/kernel/time.c 2004-06-16 01:19:43.000000000 -0400 -+++ arch/arm/kernel/time.c 2004-10-14 12:28:51.434231567 -0400 -@@ -58,7 +58,7 @@ static int dummy_set_rtc(void) - * hook for setting the RTC's idea of the current time. - */ - int (*set_rtc)(void) = dummy_set_rtc; -- -+EXPORT_SYMBOL(set_rtc); - static unsigned long dummy_gettimeoffset(void) - { - return 0; diff --git a/packages/linux/openslug-kernel-2.6.9/alignment.patch b/packages/linux/openslug-kernel-2.6.9/alignment.patch deleted file mode 100644 index 19abca18f5..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/alignment.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- linux-2.6.10/arch/arm/mm/alignment.c.broken 2005-02-11 20:57:58.353668651 +0100 -+++ linux-2.6.10/arch/arm/mm/alignment.c 2005-02-11 20:58:02.141660877 +0100 -@@ -130,6 +130,18 @@ - #define TYPE_LDST 2 - #define TYPE_DONE 3 - -+#ifdef __ARMEB__ -+#define BE 1 -+#define FIRST_BYTE_16 "mov %1, %1, ror #8\n" -+#define FIRST_BYTE_32 "mov %1, %1, ror #24\n" -+#define NEXT_BYTE "ror #24" -+#else -+#define BE 0 -+#define FIRST_BYTE_16 -+#define FIRST_BYTE_32 -+#define NEXT_BYTE "lsr #8" -+#endif -+ - #define __get8_unaligned_check(ins,val,addr,err) \ - __asm__( \ - "1: "ins" %1, [%2], #1\n" \ -@@ -149,9 +161,10 @@ - #define __get16_unaligned_check(ins,val,addr) \ - do { \ - unsigned int err = 0, v, a = addr; \ -- __get8_unaligned_check(ins,val,a,err); \ - __get8_unaligned_check(ins,v,a,err); \ -- val |= v << 8; \ -+ val = v << ((BE) ? 8 : 0); \ -+ __get8_unaligned_check(ins,v,a,err); \ -+ val |= v << ((BE) ? 0 : 8); \ - if (err) \ - goto fault; \ - } while (0) -@@ -165,13 +178,14 @@ - #define __get32_unaligned_check(ins,val,addr) \ - do { \ - unsigned int err = 0, v, a = addr; \ -- __get8_unaligned_check(ins,val,a,err); \ - __get8_unaligned_check(ins,v,a,err); \ -- val |= v << 8; \ -+ val = v << ((BE) ? 24 : 0); \ -+ __get8_unaligned_check(ins,v,a,err); \ -+ val |= v << ((BE) ? 16 : 8); \ - __get8_unaligned_check(ins,v,a,err); \ -- val |= v << 16; \ -+ val |= v << ((BE) ? 8 : 16); \ - __get8_unaligned_check(ins,v,a,err); \ -- val |= v << 24; \ -+ val |= v << ((BE) ? 0 : 24); \ - if (err) \ - goto fault; \ - } while (0) -@@ -185,9 +199,9 @@ - #define __put16_unaligned_check(ins,val,addr) \ - do { \ - unsigned int err = 0, v = val, a = addr; \ -- __asm__( \ -+ __asm__( FIRST_BYTE_16 \ - "1: "ins" %1, [%2], #1\n" \ -- " mov %1, %1, lsr #8\n" \ -+ " mov %1, %1, "NEXT_BYTE"\n" \ - "2: "ins" %1, [%2]\n" \ - "3:\n" \ - " .section .fixup,\"ax\"\n" \ -@@ -215,13 +229,13 @@ - #define __put32_unaligned_check(ins,val,addr) \ - do { \ - unsigned int err = 0, v = val, a = addr; \ -- __asm__( \ -+ __asm__( FIRST_BYTE_32 \ - "1: "ins" %1, [%2], #1\n" \ -- " mov %1, %1, lsr #8\n" \ -+ " mov %1, %1, "NEXT_BYTE"\n" \ - "2: "ins" %1, [%2], #1\n" \ -- " mov %1, %1, lsr #8\n" \ -+ " mov %1, %1, "NEXT_BYTE"\n" \ - "3: "ins" %1, [%2], #1\n" \ -- " mov %1, %1, lsr #8\n" \ -+ " mov %1, %1, "NEXT_BYTE"\n" \ - "4: "ins" %1, [%2]\n" \ - "5:\n" \ - " .section .fixup,\"ax\"\n" \ - - diff --git a/packages/linux/openslug-kernel-2.6.9/defconfig b/packages/linux/openslug-kernel-2.6.9/defconfig deleted file mode 100644 index 87c5009449..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/defconfig +++ /dev/null @@ -1,1132 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_ARM=y -CONFIG_MMU=y -CONFIG_UID16=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_CLEAN_COMPILE=y -CONFIG_STANDALONE=y -CONFIG_BROKEN_ON_SMP=y - -# -# General setup -# -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -# CONFIG_POSIX_MQUEUE is not set -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y -# CONFIG_AUDIT is not set -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_HOTPLUG=y -CONFIG_IKCONFIG=m -CONFIG_IKCONFIG_PROC=m -CONFIG_EMBEDDED=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_IOSCHED_NOOP=n -CONFIG_IOSCHED_AS=n -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=n -CONFIG_CC_OPTIMIZE_FOR_SIZE=y - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_OBSOLETE_MODPARM=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y - -# -# System Type -# -# CONFIG_ARCH_ADIFCC is not set -# 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=y -# 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 is not set -# CONFIG_ARCH_VERSATILE_PB is not set -CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y - -# -# Intel IXP4xx Implementation Options -# - -# -# IXP4xx Platforms -# -# CONFIG_ARCH_AVILA is not set -# CONFIG_ARCH_ADI_COYOTE is not set -#CONFIG_ARCH_IXDP425=y -#CONFIG_ARCH_IXCDP1100=y -# CONFIG_ARCH_PRPMC1100 is not set -#CONFIG_ARCH_IXDP4XX=y -CONFIG_ARCH_NSLU2=y - -# -# IXP4xx Options -# -CONFIG_IXP4XX_INDIRECT_PCI=y -CONFIG_DMABOUNCE=y - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_XSCALE=y -CONFIG_CPU_32v5=y -CONFIG_CPU_ABRT_EV5T=y -CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_MINICACHE=y - -# -# Processor Features -# -# CONFIG_ARM_THUMB is not set -CONFIG_CPU_BIG_ENDIAN=y -CONFIG_XSCALE_PMU=y - -# -# General setup -# -CONFIG_PCI=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_PCI_LEGACY_PROC=y -# CONFIG_PCI_NAMES is not set - -# -# PCMCIA/CardBus support -# -# CONFIG_PCMCIA is not set - -# -# At least one math emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set -# CONFIG_FPE_FASTFPE is not set -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_AOUT is not set -# CONFIG_BINFMT_MISC is not set - -# -# Generic Driver Options -# -# CONFIG_FW_LOADER is not set -# CONFIG_DEBUG_DRIVER is not set -CONFIG_PM=y -# CONFIG_PREEMPT is not set -CONFIG_APM=y -# CONFIG_ARTHUR is not set -CONFIG_CMDLINE="root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000 console=ttyS0,115200n8" -CONFIG_ALIGNMENT_TRAP=y - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Memory Technology Devices (MTD) -# -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_PARTITIONS=y -CONFIG_MTD_CONCAT=y -CONFIG_MTD_REDBOOT_PARTS=y -CONFIG_MTD_CMDLINE_PARTS=y -# 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=y -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_CFI_INTELEXT=y -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_CFI_STAA is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_OBSOLETE_CHIPS is not set - -# -# Mapping drivers for chip access -# -CONFIG_MTD_COMPLEX_MAPPINGS=y -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_ARM_INTEGRATOR is not set -CONFIG_MTD_IXP4XX=y -# CONFIG_MTD_EDB7312 is not set -# CONFIG_MTD_PCI is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLKMTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set - -# -# Plug and Play support -# - -# -# Block devices -# -# CONFIG_BLK_DEV_FD is not set -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_CARMEL is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=10240 -CONFIG_BLK_DEV_INITRD=y - -# -# Multi-device support (RAID and LVM) -# -CONFIG_MD=y -CONFIG_BLK_DEV_MD=m -# CONFIG_MD_LINEAR is not set -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -CONFIG_MD_RAID5=m -# CONFIG_MD_MULTIPATH is not set -# CONFIG_BLK_DEV_LVM - -# -# Networking support -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=m -CONFIG_PACKET_MMAP=y -CONFIG_NETLINK_DEV=m -CONFIG_UNIX=y -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_MULTIPLE_TABLES is not set -# CONFIG_IP_ROUTE_FWMARK is not set -CONFIG_IP_ROUTE_NAT=y -# CONFIG_IP_ROUTE_MULTIPATH is not set -CONFIG_IP_ROUTE_TOS=y -# CONFIG_IP_ROUTE_VERBOSE is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -# CONFIG_IP_MROUTE is not set -# CONFIG_IP_PIMSM_V1 is not set -# CONFIG_IP_PIMSM_V2 is not set -# CONFIG_ARPD is not set -CONFIG_SYN_COOKIES=y -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set - -# -# IP: Virtual Server Configuration -# -CONFIG_IP_VS=m -CONFIG_IP_VS_DEBUG=y -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set - -# -# IPVS application helper -# -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_BRIDGE_NETFILTER=y - -# -# IP: Netfilter Configuration -# -# CONFIG_IP_NF_CONNTRACK is not set -# CONFIG_IP_NF_QUEUE is not set -# CONFIG_IP_NF_IPTABLES is not set -# CONFIG_IP_NF_ARPTABLES is not set -# CONFIG_IP_NF_COMPAT_IPCHAINS is not set -# CONFIG_IP_NF_COMPAT_IPFWADM is not set - -# -# Bridge: Netfilter Configuration -# -# CONFIG_BRIDGE_NF_EBTABLES is not set -# CONFIG_XFRM is not set -# CONFIG_XFRM_USER is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set -# CONFIG_ATM is not set -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -CONFIG_IPX=m -# CONFIG_IPX_INTERN is not set -CONFIG_ATALK=m -CONFIG_DEV_APPLETALK=y -CONFIG_IPDDP=m -CONFIG_IPDDP_ENCAP=y -CONFIG_IPDDP_DECAP=y -# 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_FASTROUTE is not set -# CONFIG_NET_HW_FLOWCONTROL is not set - -# -# QoS and/or fair queueing -# -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -# CONFIG_NET_SCH_HFSC is not set -CONFIG_NET_SCH_CSZ=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -# CONFIG_NET_SCH_DELAY is not set -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_QOS=y -CONFIG_NET_ESTIMATOR=y -CONFIG_NET_CLS=y -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_ROUTE=y -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -CONFIG_NET_CLS_POLICE=y - -# -# Network testing -# -CONFIG_NET_PKTGEN=m -CONFIG_NETPOLL=y -CONFIG_NETPOLL_RX=y -CONFIG_NETPOLL_TRAP=y -CONFIG_NET_POLL_CONTROLLER=y -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -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 -CONFIG_BT_HCIUSB=m -CONFIG_BT_HCIUSB_SCO=y -CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_ETHERTAP is not set - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_NET_VENDOR_3COM is not set - -# -# Tulip family network device support -# -# CONFIG_NET_TULIP is not set -# CONFIG_HP100 is not set -CONFIG_NET_PCI=y -# CONFIG_PCNET32 is not set -# CONFIG_AMD8111_ETH is not set -# CONFIG_ADAPTEC_STARFIRE is not set -# CONFIG_B44 is not set -# CONFIG_FORCEDETH is not set -# CONFIG_DGRS is not set -# CONFIG_EEPRO100 is not set -# CONFIG_E100 is not set -# CONFIG_FEALNX is not set -# CONFIG_NATSEMI is not set -# CONFIG_NE2K_PCI is not set -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_SIS900 is not set -# CONFIG_EPIC100 is not set -# CONFIG_SUNDANCE is not set -# CONFIG_TLAN is not set -# CONFIG_VIA_RHINE is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set - -# -# Ethernet (10000 Mbit) -# -# CONFIG_IXGB is not set -# CONFIG_S2IO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y - -# -# Obsolete Wireless cards support (pre-802.11) -# -# CONFIG_STRIP is not set - -# -# Wireless 802.11b ISA/PCI cards support -# -# CONFIG_AIRO is not set -# CONFIG_HERMES is not set -# CONFIG_ATMEL is not set - -# -# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -# -# CONFIG_PRISM54 is not set -CONFIG_NET_WIRELESS=y - -# -# Wan interfaces -# -# CONFIG_WAN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PPP=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_ASYNC=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_SHAPER is not set -CONFIG_NETCONSOLE=m - -# -# ATA/ATAPI/MFM/RLL support -# -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set - -# -# SCSI Transport Attributes -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set - -# -# SCSI low-level drivers -# -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_MEGARAID is not set -# CONFIG_SCSI_SATA is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_EATA_PIO is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_ISP is not set -# CONFIG_SCSI_QLOGIC_FC is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA2XXX is not set -# CONFIG_SCSI_QLA21XX is not set -# CONFIG_SCSI_QLA22XX is not set -# CONFIG_SCSI_QLA2300 is not set -# CONFIG_SCSI_QLA2322 is not set -# CONFIG_SCSI_QLA6312 is not set -# CONFIG_SCSI_QLA6322 is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set - -# -# Fusion MPT device support -# -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_IEEE1394 is not set - -# -# I2O device support -# -# CONFIG_I2O is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Input device support -# -CONFIG_INPUT=m - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input I/O drivers -# -# CONFIG_GAMEPORT is not set -# CONFIG_SOUND_GAMEPORT is not set -# CONFIG_SERIO is not set -# CONFIG_SERIO_I8042 is not set - -# -# Input Device Drivers -# -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Character devices -# -# CONFIG_VT is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=2 -# CONFIG_SERIAL_8250_EXTENDED is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 -# CONFIG_QIC02_TAPE is not set - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -CONFIG_WATCHDOG=y -# CONFIG_WATCHDOG_NOWAYOUT is not set - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -CONFIG_IXP4XX_WATCHDOG=y - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -# CONFIG_NVRAM is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set -# CONFIG_AGP is not set -# CONFIG_DRM is not set -# CONFIG_RAW_DRIVER is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_I810 is not set -# CONFIG_I2C_ISA is not set -CONFIG_I2C_IXP4XX=y -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_PROSAVAGE is not set -# CONFIG_I2C_SAVAGE4 is not set -# CONFIG_SCx200_ACB is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set -# CONFIG_I2C_VOODOO3 is not set - -# -# Hardware Sensors Chip support -# -CONFIG_I2C_SENSOR=y -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_FSCHER is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83627HF is not set - -# -# Other I2C Chip support -# -CONFIG_SENSORS_EEPROM=y -CONFIG_SENSORS_X1205=y -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_RTC8564 is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT2_FS_POSIX_ACL is not set -# CONFIG_EXT2_FS_SECURITY is not set -CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_XATTR is not set -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -# CONFIG_FS_MBCACHE is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_FS_POSIX_ACL is not set -# CONFIG_XFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -# CONFIG_FAT_FS is not set -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_SYSFS=y -# CONFIG_DEVFS_FS is not set -# CONFIG_DEVPTS_FS_XATTR is not set -CONFIG_TMPFS=y -# CONFIG_HUGETLB_PAGE is not set -CONFIG_RAMFS=y - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -# CONFIG_JFFS2_FS_NAND is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=m -CONFIG_NFS_V3=y -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set -CONFIG_NFSD=m -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -# CONFIG_EXPORTFS is not set -CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set -CONFIG_SMB_FS=m -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_NEC98_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 is not set - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Graphics support -# -# CONFIG_FB is not set - -# -# Sound -# -# CONFIG_SOUND is not set - -# -# Misc devices -# - -# -# USB support -# -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set -# CONFIG_USB_DYNAMIC_MINORS is not set - -# -# USB Host Controller Drivers -# -CONFIG_USB_EHCI_HCD=m -# CONFIG_USB_EHCI_SPLIT_ISO is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=m -# CONFIG_USB_SL811HS is not set - -# -# USB Device Class drivers -# -# CONFIG_USB_BLUETOOTH_TTY is not set -# CONFIG_USB_ACM is not set -CONFIG_USB_PRINTER=m -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_HP8200e is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set - -# -# USB Human Interface Devices (HID) -# -# CONFIG_USB_HID is not set -# CONFIG_USB_HIDINPUT is not set -# CONFIG_HID_FF is not set -# CONFIG_HID_PID is not set -# CONFIG_LOGITECH_FF is not set -# CONFIG_THRUSTMASTER_FF is not set -# CONFIG_USB_HIDDEV is not set -# CONFIG_USB_AIPTEK is not set -# CONFIG_USB_WACOM is not set -# CONFIG_USB_KBTAB is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_MTOUCH is not set -# CONFIG_USB_EGALAX is not set -# CONFIG_USB_XPAD is not set -# CONFIG_USB_ATI_REMOTE 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_KBTAB is not set -# CONFIG_USB_POWERMATE is not set -# CONFIG_USB_MTOUCH is not set -# CONFIG_USB_EGALAX is not set -# CONFIG_USB_XPAD is not set -# CONFIG_USB_ATI_REMOTE is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# -# CONFIG_USB_DABUSB is not set - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# -# CONFIG_USB_CATC is not set -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -# CONFIG_USB_RTL8150 is not set -CONFIG_USB_USBNET=m - -# -# USB Host-to-Host Cables -# -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_GENESYS=y -CONFIG_USB_NET1080=y -CONFIG_USB_PL2301=y - -# -# Intelligent USB Devices/Gadgets -# -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_ZAURUS=y -CONFIG_USB_CDCETHER=y - -# -# USB Network Adapters -# -CONFIG_USB_AX8817X=y - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_BELKIN=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -# CONFIG_USB_SERIAL_EMPEG is not set -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -# 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_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=m -# CONFIG_USB_SERIAL_SAFE is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM 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_TIGL is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_PHIDGETSERVO is not set -# CONFIG_USB_TEST is not set - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# Kernel hacking -# -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SLAB is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_WAITQ is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_ICEDCC is not set - -# -# Security options -# -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -# CONFIG_CRYPTO is not set - -# -# Library routines -# -CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/openslug-kernel-2.6.9/double_cpdo.patch b/packages/linux/openslug-kernel-2.6.9/double_cpdo.patch deleted file mode 100644 index 4069358db8..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/double_cpdo.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- linux-2.6.9-rc3-ds1.commit/arch/arm/nwfpe/double_cpdo.c 2004-08-14 07:36:11.000000000 +0200 -+++ linux-2.6.9-rc3-ds1.snap/arch/arm/nwfpe/double_cpdo.c 2004-10-10 20:29:15.514512796 +0200 -@@ -75,7 +75,11 @@ - union float64_components u; - - u.f64 = rFm; -+#ifdef __ARMEB__ -+ u.i[0] ^= 0x80000000; -+#else - u.i[1] ^= 0x80000000; -+#endif - - return u.f64; - } -@@ -85,7 +89,11 @@ - union float64_components u; - - u.f64 = rFm; -+#ifdef __ARMEB__ -+ u.i[0] &= 0x7fffffff; -+#else - u.i[1] &= 0x7fffffff; -+#endif - - return u.f64; - } - diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2-io.c b/packages/linux/openslug-kernel-2.6.9/nslu2-io.c deleted file mode 100644 index cd5ed36c15..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2-io.c +++ /dev/null @@ -1,750 +0,0 @@ -//============================================================================= -// -// n2-io.c version 0.1.7 -// Author: Karen Spearel <kas11 at tampabay.rr.com> -// please report problems/bugs directly to the address above -// -// Boilerplate to be added "real soon now"...it is and has always been GPL'ed per -// MODULE_LICENSE but is offered without warrantee of any sort..use at your own risk -// -// NOTE: THIS IS INCOMPLETE. INCLUDED ONLY TO KEEP FROM BREAKING THE BUILD, -// IT BEEPS AND SENDS A MESSAGE TO /proc/poweroff. EVENTUALLY IT -// WILL TALK TO THE n2_pbd DAEMON. EVENTUALLY THE LED DRIVER -// WILL TALK TO SOME USERLAND APP BUT ***NOT*** SET_LEDS. -// -//============================================================================= -// GPIO Function State -// 0 Red LED Status -// 1 Green LED Ready = 1 -// 2 Disk 2 LED On = 0 -// 3 Disk 1 LED On = 0 -// 4 Buzzer -// 5 Power Button Pressed = 1 -// 8 Power Down Output = 1 powers down N2 -// 12 Reset Pressed = 0 -//============================================================================= -// this driver is N2 specific and is purposely designed to do the minimum -// necessary to provide the necessary services given the limited memory resources -// of the N2. As OpenN2 develops, addition features will be added as -// suggested by the community. -// -//============================================================================= - -#include <linux/config.h> -#include <linux/version.h> -#include <linux/module.h> -#include <linux/utsname.h> -#include <linux/kernel.h> -#include <linux/major.h> -#include <linux/string.h> -#include <linux/proc_fs.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/errno.h> -#include <linux/fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <linux/interrupt.h> -#include <linux/moduleparam.h> -#include <linux/timer.h> - -#include <asm/system.h> -#include <asm/uaccess.h> -#include <asm/hardware.h> -#include <asm-arm/irq.h> -#include <asm-arm/delay.h> -#include <asm-arm/signal.h> - - -#define VERSION "0.1.7" - -#define N2RB_MAJOR 60 -#define N2PB_MAJOR 61 -#define N2BZ_MAJOR 62 -#define N2LM_MAJOR 126 - -#define N2PB_IRQ 22 //gpio5 -#define N2RB_IRQ 29 //gpio12 - -#define N2_BEEP_DUR_LONG 2000 -#define N2_BEEP_DUR_MED 400 -#define N2_BEEP_DUR_SHORT 100 -#define N2_BEEP_PITCH_HIGH 250 -#define N2_BEEP_PITCH_MED 500 -#define N2_BEEP_PITCH_LOW 1000 -#define N2_LONG_DELAY 30000 - -#define N2_BZ_GPIO 4 -#define N2_PB_GPIO 5 -#define N2_PO_GPIO 8 //power off -#define N2_RB_GPIO 12 - -#define GPIO_BZ_BM 0x0010 //b0000 0000 0001 0000 -#define GPIO_PB_BM 0x0020 //b0000 0000 0010 0000 -#define GPIO_PO_BM 0x0100 //b0000 0001 0000 0000 -#define GPIO_RB_BM 0x1000 //b0001 0000 0000 0000 - -#define NOERR 0 - -#define RB_DELAY 50 -#define PB_DELAY 20 - -#define PWR_OFF_STR "poweroff" - - -// ioctls -- 'M" is used for sound cards...we don't got one so it seems safe - -#define N2BZ_BEEP_STOP _IO('M',0) //stop multi-beep at end of audible -#define N2BZ_BEEP _IO('M',1) //one beep at current defaults -#define N2BZ_BEEPS _IOW('M',3,long) //param beeps at current defaults -#define N2BZ_TONESET _IOW('M',4,long) //set tone: range is high=250 to low=2000 -#define N2BZ_ONTIME _IOW('M',5,long) //ontime for multi-beeps in jiffies -#define N2BZ_SILENTTIME _IOW('M',6,long) //offtime for multi-beeps in jiffies -#define N2BZ_REPEATCNT _IOW('M',7,long) //number of repeats for multi-beeps 0 = forever -#define N2BZ_COMBINED _IOW('M',8,long) //combine all params in a long - -#define N2LM_OFF _IOW('M',32,long) -#define N2LM_ON _IOW('M',33,long) -#define N2LM_BLINK _IOW('M',34,long) -#define N2LM_ALT _IOW('M',35,long) -#define N2LM_ALL_ON _IO('M',36) -#define N2LM_ALL_OFF _IO('M',37) - -#define PHYS_LEDS 4 -#define BLINK_DELAY 25 - -// OR Masks to turn these LEDs ON - -#define RS_RED_ON 0x00000001 //0b0000 0000 0000 0010 -#define RS_GRN_ON 0x00000002 //0b0000 0000 0000 0001 -#define RS_YEL_ON 0x00000003 //0b0000 0000 0000 0011 - -// AND Masks to turn these LEDs OFF - -#define RS_RED_OFF 0xfffffffe //0b1111 1111 1111 1101 -#define RS_GRN_OFF 0xfffffffd //0b1111 1111 1111 1110 -#define RS_YEL_OFF 0xfffffffc //0b1111 1111 1111 1100 - -// AND Masks to turn these LEDs ON - -#define DISK1_ON 0xfffffff7 //0b1111 1111 1111 0111 -#define DISK2_ON 0xfffffffb //0b1111 1111 1111 1011 - -// Or Masks to turn these LEDs OFF - -#define DISK1_OFF 0x00000008 //0b0000 0000 0000 1000 -#define DISK2_OFF 0x00000004 //0b0000 0000 0000 0100 - -// EOR masks for toggling LEDs on/off - -#define RS_RG_ALT 0x00000003 //eor mask to toggle rs rg bits -#define RS_GRN_TGL 0x00000002 -#define RS_RED_TGL 0x00000001 -#define DISK1_TGL 0x00000008 -#define DISK2_TGL 0x00000004 - -// The LED names for switches - -#define LED_RS_RED 0 -#define LED_RS_GRN 1 -#define LED_DISK1 2 -#define LED_DISK2 3 -#define LED_ALL 4 - -static unsigned long init_jiffy = 0; //jiffies at init time -static unsigned long rb_presses = 0; //number of reset button presses -static unsigned long ontime = 50; -static unsigned long offtime = 450; -static unsigned long bz_repeatcnt = 10; -static unsigned long tone = 1000; - -DECLARE_WAIT_QUEUE_HEAD(n2rb_waitq); -DECLARE_WAIT_QUEUE_HEAD(n2pb_waitq); - -static struct timer_list n2lm_rsg_timer; //rs green -static struct timer_list n2lm_rsr_timer; //rs red -static struct timer_list n2lm_d1_timer; //drive 1 -static struct timer_list n2lm_d2_timer; //drive 2 -static struct timer_list n2rb_timer; -static struct timer_list n2pb_timer; -static struct timer_list n2bz_timer; //beeper - -//================================================================================================== -// -// Blinking is handled entirely by the 4 timer handlers. On timeout, the bit in the -// GPIO output register is xor'd with a mask corresponding to the selected led which simply -// flips that bit. No record of what any of the other leds is doing is needed. -// -//================================================================================================== -// this blinks rs green or green/yellow if rs red is on -static void n2lm_rsg_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= RS_GRN_TGL; //flip the led - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; //next timeout - add_timer(&n2lm_rsg_timer); //reinit timer - return; -} - -// this blinks or alternates rs red green... inited wit green on/red off -static void n2lm_rsr_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= n2lm_rsr_timer.data; - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - return; -} -// blinks disk 1 -static void n2lm_d1_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK1_TGL; - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - return; -} -// blinks disk 2 -static void n2lm_d2_handler(unsigned long data) -{ - *IXP4XX_GPIO_GPOUTR ^= DISK2_TGL; - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - return; -} - -//================================================================================================== - -static void n2lm_timer_start(unsigned long led) -{ - - printk(KERN_DEBUG "timer: %ld\n",led); - - switch(led) { - case LED_RS_RED: - n2lm_rsr_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsr_timer); - break; - - case LED_RS_GRN: - n2lm_rsg_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_rsg_timer); - break; - - case LED_DISK1: - n2lm_d1_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d1_timer); - break; - - case LED_DISK2: - n2lm_d2_timer.expires = jiffies + BLINK_DELAY; - add_timer(&n2lm_d2_timer); - break; - - default: - break; - } - return; -} - -//================================================================================================== - -static void n2lm_timer_stop(unsigned long led) -{ - switch (led) { - case LED_RS_RED: - del_timer(&n2lm_rsr_timer); - break; - case LED_RS_GRN: - del_timer(&n2lm_rsg_timer); - break; - case LED_DISK1: - del_timer(&n2lm_d1_timer); - break; - case LED_DISK2: - del_timer(&n2lm_d2_timer); - break; - default: - break; - } - return; -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_timer_stop_all(void) -{ - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - return; -} -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledon(unsigned long led) -{ - - printk(KERN_DEBUG "ledon: %ld\n", led); - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR |= RS_RED_ON; //1 - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; //2 - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR &= DISK1_ON; //0xfffffffb - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR &= DISK2_ON; //0xfffffff7 - return; - case LED_ALL: //all green - *IXP4XX_GPIO_GPOUTR |= RS_GRN_ON; - *IXP4XX_GPIO_GPOUTR &= (DISK1_ON & DISK2_ON); - return; - } -} - -//-------------------------------------------------------------------------------------------------- - -static void n2lm_ledoff(unsigned long led) -{ - - switch (led) { - case LED_RS_RED: - *IXP4XX_GPIO_GPOUTR &= RS_RED_OFF; //0xffffffffe - return; - case LED_RS_GRN: - *IXP4XX_GPIO_GPOUTR &= RS_GRN_OFF; //0xfffffffd - return; - case LED_DISK1: - *IXP4XX_GPIO_GPOUTR |= DISK1_OFF; //0x00000004 - return; - case LED_DISK2: - *IXP4XX_GPIO_GPOUTR |= DISK2_OFF; //0x00000008 - return; - case LED_ALL: - *IXP4XX_GPIO_GPOUTR &= (RS_GRN_OFF & RS_RED_OFF); - *IXP4XX_GPIO_GPOUTR |= (DISK1_OFF | DISK2_OFF); - } -} - -//================================================================================================== - -static int n2lm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long led) -{ - - printk(KERN_DEBUG "cmd=%d, led=%ld\n", cmd, led); - - if (led < 0 || led >= PHYS_LEDS) - return -EINVAL; - - switch (cmd ) { - case N2LM_ON: - n2lm_timer_stop(led); - n2lm_ledon(led); - break; - - case N2LM_OFF: - n2lm_timer_stop(led); - n2lm_ledoff(led); - break; - - case N2LM_BLINK: - n2lm_ledon(led); - if (led == LED_RS_RED) - n2lm_rsr_timer.data = RS_RED_TGL; - if (led == LED_RS_GRN) - n2lm_rsr_timer.data = RS_GRN_TGL; - n2lm_timer_start(led); - break; - - case N2LM_ALT: - if (led == LED_RS_RED) - { - n2lm_ledon(LED_RS_GRN); - n2lm_ledoff(LED_RS_RED); - n2lm_rsr_timer.data = RS_RG_ALT; - n2lm_timer_start(LED_RS_RED); - break; - } else - return -EINVAL; - - case N2LM_ALL_ON: - n2lm_timer_stop_all(); - n2lm_ledon(LED_ALL); - break; - - case N2LM_ALL_OFF: - n2lm_timer_stop_all(); - n2lm_ledoff(LED_ALL); - break; - - default: - return -EINVAL; - } - - return NOERR; -} - -static struct file_operations n2lm_fops = { - .owner = THIS_MODULE, - .ioctl = n2lm_ioctl, -}; -//================================================================================================== -// We can't do anything fancy here since the system tick rate is far below that required to -// generate a desirable tone. Therefore we haven't much choice but to use a busy loop until -// I get up to speed on the timers. The saving grace is that for the normal uses, nothing -// important should be haprepening. -//================================================================================================== - -static void n2_buzz(int tone_delay, int duration) -{ - int i; - - *IXP4XX_GPIO_GPOER &= ~GPIO_BZ_BM; - - for (i = 1; i < duration; i++) { - *IXP4XX_GPIO_GPOUTR &= ~GPIO_BZ_BM; - udelay(tone_delay); - *IXP4XX_GPIO_GPOUTR |= GPIO_BZ_BM; - udelay(tone_delay); - } - *IXP4XX_GPIO_GPOER |= GPIO_BZ_BM; - - return; -} -//================================================================================================= - -// this handles the buzzer duty cycle -static void n2bz_handler(unsigned long data) -{ - if (--bz_repeatcnt > 0) { //if just one beep left to do - n2bz_timer.expires = jiffies + ontime + offtime; //next timeout - add_timer(&n2bz_timer); //reinit timer - } - n2_buzz(tone/2, ontime); - printk(KERN_DEBUG "Count = %d\tOntime = %d\n", bz_repeatcnt, ontime); - return; -} - -//================================================================================================== - -static int n2bz_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) -{ - switch (cmd) { - case N2BZ_BEEP: - n2_buzz(tone/2, ontime); - break; - - case N2BZ_BEEP_STOP: - del_timer(&n2bz_timer); - break; - - case N2BZ_BEEPS: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - n2bz_handler(0); - break; - - case N2BZ_TONESET: - if (param >= 250 && param <= 2000) - tone = param; - break; - - case N2BZ_ONTIME: - if (param > 4 && param < 201) - ontime = param; - break; - - case N2BZ_SILENTTIME: - if (param > ontime) //enforce a reasonable duty cycle - offtime = param; - else - offtime = ontime; - break; - - case N2BZ_REPEATCNT: - if (param == 0) - bz_repeatcnt = 0xffffffff; - else - bz_repeatcnt = param; - break; - - case N2BZ_COMBINED: - bz_repeatcnt = (param & 0xF0000000) >> 28; //repeat 1 - 16 - ontime = (param & 0x0FF00000) >> 20; //ontime 1 - 256 jiffies - offtime = (param & 0x000FFF00) >> 8; //offtime 1 - 4095 jiffies - tone = (param & 0x000000FF) << 4; //tone (1 - 255) * 16 - break; - - default: - break; - } - return NOERR; -} - -static struct file_operations n2bz_fops = { - .owner = THIS_MODULE, - .ioctl = n2bz_ioctl, -}; - -//================================================================================================== - -static irqreturn_t n2pb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - void *ret; - - wake_up(&n2pb_waitq); - remove_proc_entry(PWR_OFF_STR, NULL); //no parent - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_MED); - ret = create_proc_entry(PWR_OFF_STR, 0, NULL); - printk(KERN_DEBUG "cpe ret = %p\n", ret); - -// WARNING: This is RUDE...it unconditionally pulls the power plug. -// Your data will be at risk...since this is just a test system -// I am leaving it enabled...eventually userland needs to get the -// message, do an orderly shutdown and use an ioctl or something in -// /proc/powerdowm to actually have us pull the plug. - - *IXP4XX_GPIO_GPOER &= ~GPIO_PO_BM; // enable the pwr cntl gpio - *IXP4XX_GPIO_GPOUTR |= GPIO_PO_BM; // do the deed - - return IRQ_HANDLED; -} - -//================================================================================================== -// -//static void do_rb_timeout(unsigned long data) -//{ -// int i; -// -// for (i = 0; i < rb_presses; i++) -// n2_buzz(N2_BEEP_PITCH_MED,N2_BEEP_DUR_SHORT); -// return; -//} -// -//================================================================================================== -// does nothing -- waiting for userland to define -// This thing is sorta braindead...edge triggered IRQs aren't available in the drivers yet...so -// we hang in a loop until the button is no longer pressed - -struct testr { - int ctl; - long param; -}; - -static irqreturn_t n2rb_handler (int irq, void *dev_id, struct pt_regs *regs) -{ - - static struct testr test[] = { - N2LM_ALL_OFF,0, - N2LM_ON,0, - N2LM_OFF,0, - N2LM_ON,1, - N2LM_ALL_OFF,1, - N2LM_ON,2, - N2LM_OFF,2, - N2LM_ON,3, - N2LM_OFF,3, - N2LM_BLINK,0, - N2LM_OFF,0, - N2LM_BLINK,1, - N2LM_OFF,1, - N2LM_BLINK,2, - N2LM_OFF,2, - N2LM_BLINK,3, - N2LM_OFF,3, - N2LM_ALL_OFF,0, - N2LM_ALT,1, - N2LM_OFF,1, - N2LM_ALL_ON,0 - }; - - printk("Reset Entry IRQ =%d Presses = %d Jiffies = %08lx\tIO = %x\tIOW = %x\n", irq, rb_presses, jiffies, (int)_IO('M',rb_presses), (int)_IOW('M',rb_presses,long)); - - wake_up(&n2rb_waitq); - while ((*IXP4XX_GPIO_GPINR & GPIO_RB_BM) == 0) - ; //wait for button release - - if (rb_presses > 20) - rb_presses = 0; - tone = (rb_presses * 50) + 200; - ontime = (rb_presses*10) + 100; - offtime = 500 - (rb_presses*20); - printk("Ontime = %d\tOfftime = %d\tTone = %d\n",ontime,offtime,tone); - rb_presses++; - - n2bz_ioctl(NULL,NULL, N2BZ_BEEPS, rb_presses); - n2lm_ioctl(NULL,NULL, test[rb_presses].ctl, test[rb_presses].param); -// if (rb_presses == 0) { -// init_jiffy = jiffies; -// init_timer (&n2rb_timer); -// n2rb_timer.function = do_rb_timeout; -// }; -// -// if (rb_presses == 8) -// rb_presses = 0; -// if (rb_presses & 1) -// n2lm_ledon(test[rb_presses]); -// else -// n2lm_ledoff(test[rb_presses]); -// -// n2rb_timer.expires = (jiffies + RB_DELAY); -// add_timer (&n2rb_timer); -// if (rb_presses < 5) { -// if (rb_presses > 0) -// n2lm_ledoff(rb_presses); -// n2lm_ledon(++rb_presses); -// n2lm_timer_start(rb_presses); -// }; - - printk(KERN_DEBUG "Reset Exit IRQ=%d Presses= %d Jiffies= %08lx\n", irq, rb_presses, jiffies); - return IRQ_HANDLED; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2rb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Reset Button Wait\n"); - interruptible_sleep_on(&n2rb_waitq); - return copy_to_user(buffer, "reset", 5) ? -EFAULT : 5; - -} - -//================================================================================================== -// What to do here is majorly undetermined... - -static int n2pb_read (struct file *filp, char __user *buffer, size_t count, loff_t *ppos) -{ - printk(KERN_DEBUG "Power Button Wait\n"); - interruptible_sleep_on(&n2pb_waitq); - return copy_to_user(buffer, "poweroff", 8) ? -EFAULT : 8; - -} - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2rb_fops = { - .owner = THIS_MODULE, - .read = n2rb_read, -}; - -//-------------------------------------------------------------------------------------------------- - -static struct file_operations n2pb_fops = { - .owner = THIS_MODULE, - .read = n2pb_read, -}; - -//================================================================================================== - -static void n2iom_initarch(void) -{ - printk(KERN_DEBUG "setup_interrupts - jiffies=%ld init_jiffy=%ld\n", jiffies, init_jiffy); - - *IXP4XX_GPIO_GPISR = 0x20400000; // read the 2 irqs to clr - gpio_line_config(N2_RB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_isr_clear(N2_RB_GPIO); - gpio_line_config(N2_PB_GPIO, IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_HIGH); - gpio_line_isr_clear(N2_PB_GPIO); - - init_timer(&n2lm_rsg_timer); - init_timer(&n2lm_rsr_timer); - init_timer(&n2lm_d1_timer); - init_timer(&n2lm_d2_timer); -// init_timer(&n2rb_timer); -// init_timer(&n2pb_timer); - init_timer(&n2bz_timer); - n2lm_rsr_timer.function = n2lm_rsr_handler; - n2lm_rsg_timer.function = n2lm_rsg_handler; - n2lm_d2_timer.function = n2lm_d2_handler; - n2lm_d1_timer.function = n2lm_d1_handler; - n2bz_timer.function = n2bz_handler; - n2lm_rsr_timer.data = n2lm_rsg_timer.data = n2lm_d1_timer.data = n2lm_d2_timer.data = n2bz_timer.data = 0; - - *IXP4XX_GPIO_GPOER &= 0xfffffff0; //enable gpio 0-3 - *IXP4XX_GPIO_GPOUTR |= 0x00000003; //turn off the leds - *IXP4XX_GPIO_GPOUTR &= 0xfffffffc; - n2lm_ledon(LED_ALL); - n2_buzz(N2_BEEP_PITCH_MED, N2_BEEP_DUR_SHORT); - n2lm_ledoff(LED_ALL); -// Default the Ready/Status to Red during kernel boot, Turn Green at the end of sysvinit - n2lm_ledon(LED_RS_RED); - - return; -} - -//================================================================================================== - -static int __init n2iom_init(void) -{ - printk(KERN_INFO "OpenN2 Misc I/O Driver Version %s\n", VERSION); - - init_jiffy = jiffies; - printk(KERN_DEBUG "init_jiffy=%ld\n",init_jiffy); - n2iom_initarch(); - - if (register_chrdev(N2RB_MAJOR, "n2_rbm", &n2pb_fops) < NOERR) { - printk(KERN_DEBUG "Reset Button Major %d not available\n", N2RB_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2PB_MAJOR, "n2_pbm", &n2rb_fops) < NOERR) { - printk(KERN_DEBUG "Power Button Major %d not available\n", N2PB_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2LM_MAJOR, "n2_ledm", &n2lm_fops) < NOERR) { - printk(KERN_DEBUG "Led Manager Major %d not available\n", N2LM_MAJOR); - return -EBUSY; - } - if (register_chrdev(N2BZ_MAJOR, "n2_bzm", &n2bz_fops) < NOERR) { - printk(KERN_DEBUG "Buzzer Major %d not available\n", N2BZ_MAJOR); - return -EBUSY; - } - - if (request_irq(N2RB_IRQ, &n2rb_handler, SA_INTERRUPT, "n2_rb", NULL) < NOERR) { - printk(KERN_DEBUG "Reset Button IRQ %d not available\n", N2RB_IRQ); - return -EIO; - } - if (request_irq(N2PB_IRQ, &n2pb_handler, SA_INTERRUPT, "n2_pb", NULL) < NOERR) { - printk(KERN_DEBUG "Power Button IRQ %d not available\n", N2PB_IRQ); - return -EIO; - } - - enable_irq(N2PB_IRQ); - enable_irq(N2RB_IRQ); - return (NOERR); -} - -//================================================================================================== - -static void __exit n2iom_exit(void) -{ - remove_proc_entry(PWR_OFF_STR, NULL); - del_timer(&n2rb_timer); - free_irq(N2RB_IRQ,NULL); - unregister_chrdev(N2PB_MAJOR, "n2pb"); - del_timer(&n2pb_timer); - free_irq(N2PB_IRQ, NULL); - unregister_chrdev(N2RB_MAJOR, "n2rb" ); - del_timer(&n2lm_rsg_timer); - del_timer(&n2lm_rsr_timer); - del_timer(&n2lm_d1_timer); - del_timer(&n2lm_d2_timer); - unregister_chrdev(N2LM_MAJOR, "n2lm" ); -} - -module_init (n2iom_init); -module_exit (n2iom_exit); - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("OpenN2 Buttons/LEDs IO Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, int, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 8"); - diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2-part.c b/packages/linux/openslug-kernel-2.6.9/nslu2-part.c deleted file mode 100644 index 6fbf952e2a..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2-part.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * nslu2-part.c - * - * Maintainers: http://www.nslu2-linux.org/ - * Initial port: Mark Rakes <mrakes AT mac.com> - * - * "Parse" the fixed partition table of the Linksys NSLU2 and - * produce a Linux partition array to match. - */ - -#include <linux/kernel.h> -#include <linux/slab.h> -#include <linux/init.h> -#include <linux/vmalloc.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> - -/* info we know about the NSLU2's flash setup: - * - * Num Partition offset size - * --- --------- ---------- ----------- - * 0 RedBoot 0x00000000 0x00040000 - * 1 System Configuration 0x00040000 0x00020000 - * 2 Kernel 0x00060000 0x00100000 - * 3 Ramdisk 0x00160000 0x006a0000 - */ - #define NSLU2_NUM_FLASH_PARTITIONS 4 - #define NSLU2_FLASH_PART0_NAME "RedBoot" - #define NSLU2_FLASH_PART0_OFFSET 0x00000000 - #define NSLU2_FLASH_PART0_SIZE 0x00040000 - #define NSLU2_FLASH_PART1_NAME "System Configuration" - #define NSLU2_FLASH_PART1_OFFSET (NSLU2_FLASH_PART0_OFFSET + NSLU2_FLASH_PART0_SIZE) - #define NSLU2_FLASH_PART1_SIZE 0x00020000 - #define NSLU2_FLASH_PART2_NAME "Kernel" - #define NSLU2_FLASH_PART2_OFFSET (NSLU2_FLASH_PART1_OFFSET + NSLU2_FLASH_PART1_SIZE) - #define NSLU2_FLASH_PART2_SIZE 0x00100000 - #define NSLU2_FLASH_PART3_NAME "Ramdisk" - #define NSLU2_FLASH_PART3_OFFSET (NSLU2_FLASH_PART2_OFFSET + NSLU2_FLASH_PART2_SIZE) - #define NSLU2_FLASH_PART3_SIZE 0x006a0000 - -static int parse_nslu2_partitions(struct mtd_info *master, - struct mtd_partition **pparts, - unsigned long flash_start) -{ - struct mtd_partition *parts; - int ret = 0, namelen = 0; - char *names; - - namelen = strlen(NSLU2_FLASH_PART0_NAME) + - strlen(NSLU2_FLASH_PART1_NAME) + - strlen(NSLU2_FLASH_PART2_NAME) + - strlen(NSLU2_FLASH_PART3_NAME) + - NSLU2_NUM_FLASH_PARTITIONS; /*4 strings + each terminator */ - - parts = kmalloc(sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen, GFP_KERNEL); - if (!parts) { - ret = -ENOMEM; - goto out; - } - - memset(parts, 0, sizeof(*parts)*NSLU2_NUM_FLASH_PARTITIONS + namelen); - names = (char *)&parts[NSLU2_NUM_FLASH_PARTITIONS]; - - /* RedBoot partition */ - parts[0].size = NSLU2_FLASH_PART0_SIZE; - parts[0].offset = NSLU2_FLASH_PART0_OFFSET; - parts[0].name = NSLU2_FLASH_PART0_NAME; - parts[0].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART0_NAME); - names += strlen(names)+1; - /* System Configuration */ - parts[1].size = NSLU2_FLASH_PART1_SIZE; - parts[1].offset = NSLU2_FLASH_PART1_OFFSET; - parts[1].name = NSLU2_FLASH_PART1_NAME; - parts[1].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART1_NAME); - names += strlen(names)+1; - /* Kernel */ - parts[2].size = NSLU2_FLASH_PART2_SIZE; - parts[2].offset = NSLU2_FLASH_PART2_OFFSET; - parts[2].name = NSLU2_FLASH_PART2_NAME; - parts[2].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART2_NAME); - names += strlen(names)+1; - /* Ramdisk */ - parts[3].size = NSLU2_FLASH_PART3_SIZE; - parts[3].offset = NSLU2_FLASH_PART3_OFFSET; - parts[3].name = NSLU2_FLASH_PART3_NAME; - parts[3].mask_flags = MTD_WRITEABLE; /* readonly */ - strcpy(names, NSLU2_FLASH_PART3_NAME); - names += strlen(names)+1; - - ret = NSLU2_NUM_FLASH_PARTITIONS; - *pparts = parts; - out: - return ret; -} - -static struct mtd_part_parser nslu2_parser = { - .owner = THIS_MODULE, - .parse_fn = parse_nslu2_partitions, - .name = "NSLU2", -}; - -static int __init nslu2_parser_init(void) -{ - return register_mtd_parser(&nslu2_parser); -} - -static void __exit nslu2_parser_exit(void) -{ - deregister_mtd_parser(&nslu2_parser); -} - -module_init(nslu2_parser_init); -module_exit(nslu2_parser_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Mark Rakes"); -MODULE_DESCRIPTION("Parsing code for NSLU2 flash tables"); diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2-pci.c b/packages/linux/openslug-kernel-2.6.9/nslu2-pci.c deleted file mode 100644 index 7327c65a4f..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2-pci.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-pci.c - * - * NSLU2 board-level PCI initialization - * - * based on ixdp425-pci.c: - * Copyright (C) 2002 Intel Corporation. - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Maintainer: http://www.nslu2-linux.org/ - * - * 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 - * published by the Free Software Foundation. - * - */ -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// However, all the common PCI setup code presumes the standard 4 PCI -// interrupts are available. So we compromise...we don't enable the -// IRQ on Pin 8 but we let - -#include <linux/config.h> -#include <linux/pci.h> -#include <linux/init.h> -#include <linux/delay.h> - -#include <asm/mach/pci.h> -#include <asm/irq.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> - -void __init nslu2_pci_preinit(void) -{ - gpio_line_config(NSLU2_PCI_INTA_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTB_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - gpio_line_config(NSLU2_PCI_INTC_PIN, - IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); -// gpio_line_config(NSLU2_PCI_INTD_PIN, -// IXP4XX_GPIO_IN | IXP4XX_GPIO_ACTIVE_LOW); - - gpio_line_isr_clear(NSLU2_PCI_INTA_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTB_PIN); - gpio_line_isr_clear(NSLU2_PCI_INTC_PIN); -// gpio_line_isr_clear(NSLU2_PCI_INTD_PIN); - - ixp4xx_pci_preinit(); -} - -static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -{ - static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = { - IRQ_NSLU2_PCI_INTA, - IRQ_NSLU2_PCI_INTB, - IRQ_NSLU2_PCI_INTC, -// IRQ_NSLU2_PCI_INTD - }; - - int irq = -1; - - if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV && - pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) { - irq = pci_irq_table[(slot + pin - 2) % 3]; // ! % 4 kas11 - } - - return irq; -} - -struct hw_pci __initdata nslu2_pci = { - .nr_controllers = 1, - .preinit = nslu2_pci_preinit, - .swizzle = pci_std_swizzle, - .setup = ixp4xx_setup, - .scan = ixp4xx_scan_bus, - .map_irq = nslu2_map_irq, -}; - -int __init nslu2_pci_init(void) //monkey see, monkey do -{ - if (machine_is_nslu2()) - pci_common_init(&nslu2_pci); - return 0; -} - -subsys_initcall(nslu2_pci_init); - diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2-setup.c b/packages/linux/openslug-kernel-2.6.9/nslu2-setup.c deleted file mode 100644 index 5698ea9813..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2-setup.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * arch/arm/mach-ixp4xx/nslu2-setup.c - * - * NSLU2 board-setup - * - * based ixdp425-setup.c: - * Copyright (C) 2003-2004 MontaVista Software, Inc. - * - * Author: Mark Rakes <mrakes at mac.com> - * Maintainers: http://www.nslu2-linux.org/ - * - * Fixed missing init_time in MACHINE_START kas11 10/22/04 - * Changed to conform to new style __init ixdp425 kas11 10/22/04 - */ - -#include <linux/init.h> -#include <linux/device.h> -#include <linux/serial.h> -#include <linux/tty.h> -#include <linux/serial_core.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/hardware.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> - -#ifdef __ARMEB__ -#define REG_OFFSET 3 -#else -#define REG_OFFSET 0 -#endif - -/* - * NSLU2 uses only one serial port - */ -static struct uart_port nslu2_serial_ports[] = { - { - .membase = (char*)(IXP4XX_UART1_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART1_BASE_PHYS), - .irq = IRQ_IXP4XX_UART1, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 0, - .type = PORT_XSCALE, - .fifosize = 32 - } -#if 0 - , { - .membase = (char*)(IXP4XX_UART2_BASE_VIRT + REG_OFFSET), - .mapbase = (IXP4XX_UART2_BASE_PHYS), - .irq = IRQ_IXP4XX_UART2, - .flags = UPF_SKIP_TEST, - .iotype = UPIO_MEM, - .regshift = 2, - .uartclk = IXP4XX_UART_XTAL, - .line = 1, - .type = PORT_XSCALE, - .fifosize = 32 - } -#endif -}; - -void __init nslu2_map_io(void) -{ - early_serial_setup(&nslu2_serial_ports[0]); -#if 0 - early_serial_setup(&nslu2_serial_ports[1]); -#endif - ixp4xx_map_io(); -} - -static struct flash_platform_data nslu2_flash_data = { - .map_name = "cfi_probe", - .width = 2, -}; - -static struct resource nslu2_flash_resource = { - .start = NSLU2_FLASH_BASE, - .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device nslu2_flash = { - .name = "IXP4XX-Flash", - .id = 0, - .dev = { - .platform_data = &nslu2_flash_data, - }, - .num_resources = 1, - .resource = &nslu2_flash_resource, -}; - -static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = { - .sda_pin = NSLU2_SDA_PIN, - .scl_pin = NSLU2_SCL_PIN, -}; - -static struct platform_device nslu2_i2c_controller = { - .name = "IXP4XX-I2C", - .id = 0, - .dev = { - .platform_data = &nslu2_i2c_gpio_pins, - }, - .num_resources = 0 -}; - -static struct platform_device *nslu2_devices[] __initdata = { - &nslu2_i2c_controller, - &nslu2_flash -}; - -static void __init nslu2_init(void) -{ - platform_add_devices(&nslu2_devices, ARRAY_SIZE(nslu2_devices)); -} - -MACHINE_START(NSLU2, "Linksys NSLU2") - MAINTAINER("www.nslu2-linux.org") - BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS, - IXP4XX_PERIPHERAL_BASE_VIRT) - MAPIO(nslu2_map_io) - INITIRQ(ixp4xx_init_irq) //FIXME: all irq are off here - INITTIME(ixp4xx_init_time) //this was missing in 2.6.7 code ...soft reboot needed? - BOOT_PARAMS(0x0100) - INIT_MACHINE(nslu2_init) -MACHINE_END diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2.h b/packages/linux/openslug-kernel-2.6.9/nslu2.h deleted file mode 100644 index bb79aaa007..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * include/asm-arm/arch-ixp4xx/nslu2.h - * - * NSLU2 platform specific definitions - * - * Author: Mark Rakes <mrakes AT mac.com> - * Maintainers: http://www.nslu2-linux.org - * - * based on ixdp425.h: - * Copyright 2004 (c) MontaVista, Software, Inc. - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -// GPIO 8 is used as the power input so is not free for use as a PCI IRQ -// kas11 11-2-04 - -#ifndef __ASM_ARCH_HARDWARE_H__ -#error "Do not include this directly, instead #include <asm/hardware.h>" -#endif - -#define NSLU2_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS -#define NSLU2_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE - -#define NSLU2_SDA_PIN 7 -#define NSLU2_SCL_PIN 6 - -/* - * NSLU2 PCI IRQs - */ -#define NSLU2_PCI_MAX_DEV 3 -#define NSLU2_PCI_IRQ_LINES 3 - - -/* PCI controller GPIO to IRQ pin mappings */ -#define NSLU2_PCI_INTA_PIN 11 -#define NSLU2_PCI_INTB_PIN 10 -#define NSLU2_PCI_INTC_PIN 9 -//#define NSLU2_PCI_INTD_PIN 8 - - diff --git a/packages/linux/openslug-kernel-2.6.9/nslu2_2.6.9.patch b/packages/linux/openslug-kernel-2.6.9/nslu2_2.6.9.patch deleted file mode 100644 index 9f569baabf..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/nslu2_2.6.9.patch +++ /dev/null @@ -1,312 +0,0 @@ -diff -purN linux-2.6.9/arch/arm/mach-ixp4xx/Kconfig linux-2.6.9-new/arch/arm/mach-ixp4xx/Kconfig ---- linux-2.6.9/arch/arm/mach-ixp4xx/Kconfig 2004-06-15 22:19:01.000000000 -0700 -+++ linux-2.6.9-new/arch/arm/mach-ixp4xx/Kconfig 2004-09-14 03:59:28.000000000 -0700 -@@ -29,6 +29,13 @@ config ARCH_IXDP425 - IXDP425 Development Platform (Also known as Richfield). - For more information on this platform, see Documentation/arm/IXP4xx. - -+config ARCH_NSLU2 -+ bool "NSLU2" -+ help -+ Say 'Y' here if you want your kernel to support Linksys's -+ NSLU2 NAS device. For more information on this platform, -+ see http://www.nslu2-linux.org -+ - # - # IXCDP1100 is the exact same HW as IXDP425, but with a different machine - # number from the bootloader due to marketing monkeys, so we just enable it ---- linux-2.6.9.orig/arch/arm/mach-ixp4xx/Makefile 2004-06-16 01:18:59.000000000 -0400 -+++ linux-2.6.9/arch/arm/mach-ixp4xx/Makefile 2004-09-24 01:35:22.051627330 -0400 -@@ -4,7 +4,6 @@ - - obj-y += common.o common-pci.o - --obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o - obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o - obj-$(CONFIG_ARCH_PRPMC1100) += prpmc1100-pci.o prpmc1100-setup.o -- -+obj-$(CONFIG_ARCH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o -diff -purN linux-2.6.9/drivers/mtd/maps/ixp4xx.c linux-2.6.9-new/drivers/mtd/maps/ixp4xx.c ---- linux-2.6.9/drivers/mtd/maps/ixp4xx.c 2004-06-15 22:18:38.000000000 -0700 -+++ linux-2.6.9-new/drivers/mtd/maps/ixp4xx.c 2004-09-14 03:59:28.000000000 -0700 -@@ -82,7 +82,11 @@ struct ixp4xx_flash_info { - struct resource *res; - }; - -+#ifdef CONFIG_ARCH_NSLU2 -+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL }; -+#else - static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; -+#endif - - static int - ixp4xx_flash_remove(struct device *_dev) -diff -purN linux-2.6.9/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.9-new/include/asm-arm/arch-ixp4xx/hardware.h ---- linux-2.6.9/include/asm-arm/arch-ixp4xx/hardware.h 2004-06-15 22:19:02.000000000 -0700 -+++ linux-2.6.9-new/include/asm-arm/arch-ixp4xx/hardware.h 2004-09-14 03:59:28.000000000 -0700 -@@ -37,5 +37,6 @@ - #include "ixdp425.h" - #include "coyote.h" - #include "prpmc1100.h" -+#include "nslu2.h" - - #endif /* _ASM_ARCH_HARDWARE_H */ -diff -purN linux-2.6.9/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.9-new/include/asm-arm/arch-ixp4xx/irqs.h ---- linux-2.6.9/include/asm-arm/arch-ixp4xx/irqs.h 2004-06-15 22:19:37.000000000 -0700 -+++ linux-2.6.9-new/include/asm-arm/arch-ixp4xx/irqs.h 2004-09-14 03:59:28.000000000 -0700 -@@ -75,4 +75,12 @@ - #define IRQ_COYOTE_PCI_SLOT1 IRQ_IXP4XX_GPIO11 - #define IRQ_COYOTE_IDE IRQ_IXP4XX_GPIO5 - -+/* -+ * NSLU2 board IRQs -+ */ -+#define IRQ_NSLU2_PCI_INTA IRQ_IXP4XX_GPIO11 -+#define IRQ_NSLU2_PCI_INTB IRQ_IXP4XX_GPIO10 -+#define IRQ_NSLU2_PCI_INTC IRQ_IXP4XX_GPIO9 -+ -+ - #endif -diff -Nru linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c ---- linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c 2004-10-08 13:59:23 -07:00 -+++ linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c 2004-10-08 13:59:23 -07:00 -@@ -239,9 +239,10 @@ - return 0xffffffff; - } - --static int read_config(u8 bus_num, u16 devfn, int where, int size, u32 *value) -+static int ixp4xx_pci_read_config(struct pci_bus *bus, u16 devfn, int where, int size, u32 *value) - { - u32 n, byte_enables, addr, data; -+ u8 bus_num = bus->number; - - pr_debug("read_config from %d size %d dev %d:%d:%d\n", where, size, - bus_num, PCI_SLOT(devfn), PCI_FUNC(devfn)); -@@ -261,9 +262,10 @@ - return PCIBIOS_SUCCESSFUL; - } - --static int write_config(u8 bus_num, u16 devfn, int where, int size, u32 value) -+static int ixp4xx_pci_write_config(struct pci_bus *bus, u16 devfn, int where, int size, u32 value) - { - u32 n, byte_enables, addr, data; -+ u8 bus_num = bus->number; - - pr_debug("write_config_byte %#x to %d size %d dev %d:%d:%d\n", value, where, - size, bus_num, PCI_SLOT(devfn), PCI_FUNC(devfn)); -@@ -281,30 +283,10 @@ - return PCIBIOS_SUCCESSFUL; - } - --/* -- * Generalized PCI config access functions. -- */ --static int ixp4xx_read_config(struct pci_bus *bus, unsigned int devfn, -- int where, int size, u32 *value) --{ -- if (bus->number && !PCI_SLOT(devfn)) -- return local_read_config(where, size, value); -- return read_config(bus->number, devfn, where, size, value); --} -- --static int ixp4xx_write_config(struct pci_bus *bus, unsigned int devfn, -- int where, int size, u32 value) --{ -- if (bus->number && !PCI_SLOT(devfn)) -- return local_write_config(where, size, value); -- return write_config(bus->number, devfn, where, size, value); --} -- - struct pci_ops ixp4xx_ops = { -- .read = ixp4xx_read_config, -- .write = ixp4xx_write_config, -+ .read = ixp4xx_pci_read_config, -+ .write = ixp4xx_pci_write_config, - }; -- - - /* - * PCI abort handler -diff -Nru linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h ---- linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2004-10-08 13:59:23 -07:00 -+++ linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 2004-10-08 13:59:23 -07:00 -@@ -55,7 +55,7 @@ - * PCI Config registers - */ - #define IXP4XX_PCI_CFG_BASE_PHYS (0xC0000000) --#define IXP4XX_PCI_CFG_BASE_VIRT (0xFFBFD000) -+#define IXP4XX_PCI_CFG_BASE_VIRT (0xFFBFE000) - #define IXP4XX_PCI_CFG_REGION_SIZE (0x00001000) - - /* ---- linux-2.6.9/drivers/i2c/chips/Kconfig.orig 2004-06-16 01:19:35.000000000 -0400 -+++ linux-2.6.9/drivers/i2c/chips/Kconfig 2004-09-22 18:09:48.454794342 -0400 -@@ -240,6 +240,16 @@ - This driver can also be built as a module. If so, the module - will be called pcf8591. - -+config SENSORS_X1205 -+ tristate "Xicor X1205 RTC chip" -+ depends on I2C && EXPERIMENTAL -+ select I2C_SENSOR -+ help -+ If you say yes here you get support for the Xicor x1205 RTC chip. -+ -+ This driver can also be built as a module. If so, the module -+ will be called x1205-rtc -+ - config SENSORS_RTC8564 - tristate "Epson 8564 RTC chip" - depends on I2C && EXPERIMENTA ---- linux-2.6.9/drivers/i2c/chips/Makefile.old 2004-06-16 01:20:26.000000000 -0400 -+++ linux-2.6.9/drivers/i2c/chips/Makefile 2004-09-22 16:48:06.435580334 -0400 -@@ -25,6 +25,7 @@ - obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o - obj-$(CONFIG_SENSORS_VIA686A) += via686a.o - obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o -+obj-$(CONFIG_SENSORS_X1205) += x1205-rtc.o - obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - ---- linux-2.6.9/arch/arm/mach-ixp4xx/common.c.orig 2004-10-18 17:54:25.000000000 -0400 -+++ linux-2.6.9/arch/arm/mach-ixp4xx/common.c 2004-10-21 14:22:40.766271419 -0400 -@@ -227,10 +227,10 @@ - /* - * Catch up with the real idea of time - */ -- do { -+ while((*IXP4XX_OSTS - last_jiffy_time) > LATCH) { - timer_tick(regs); - last_jiffy_time += LATCH; -- } while((*IXP4XX_OSTS - last_jiffy_time) > LATCH); -+ }; - - return IRQ_HANDLED; - } ---- linux-2.6.9/include/linux/i2c-id.h.orig 2004-10-18 17:53:10.000000000 -0400 -+++ linux-2.6.9/include/linux/i2c-id.h 2004-10-21 14:14:17.115262597 -0400 -@@ -109,7 +109,7 @@ - #define I2C_DRIVERID_OVCAMCHIP 61 /* OmniVision CMOS image sens. */ - #define I2C_DRIVERID_TDA7313 62 /* TDA7313 audio processor */ - #define I2C_DRIVERID_MAX6900 63 /* MAX6900 real-time clock */ -- -+#define I2C_DRIVERID_X1205 0xF0 - - #define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */ - #define I2C_DRIVERID_EXP1 0xF1 -diff -Nru a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S ---- a/arch/arm/kernel/entry-header.S 2004-10-08 13:59:23 -07:00 -+++ b/arch/arm/kernel/entry-header.S 2004-10-08 13:59:23 -07:00 -@@ -4,8 +4,9 @@ - #include <asm/assembler.h> - #include <asm/constants.h> - #include <asm/errno.h> - #include <asm/hardware.h> - #include <asm/arch/irqs.h> -+#include <asm/arch/entry-macro.S> - - #ifndef MODE_SVC - #define MODE_SVC 0x13 -diff -Nru a/include/asm-arm/arch-ixp4xx/entry-macro.S b/include/asm-arm/arch-ixp4xx/entry-macro.S ---- /dev/null Wed Dec 31 16:00:00 1969 -+++ b/include/asm-arm/arch-ixp4xx/entry-macro.S Thu Sep 16 13:15:46 2004 -@@ -0,0 +1,25 @@ -+/* -+ * include/asm-arm/arch-ixp4xx/entry-macro.S -+ * -+ * Low-level IRQ helper macros for IXP4xx-based platforms -+ * -+ * This file is licensed under the terms of the GNU General Public -+ * License version 2. This program is licensed "as is" without any -+ * warranty of any kind, whether express or implied. -+ */ -+ -+ .macro disable_fiq -+ .endm -+ -+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp -+ -+ ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET) -+ ldr \irqstat, [\irqstat] @ get interrupts -+ cmp \irqstat, #0 -+ beq 1001f -+ clz \irqnr, \irqstat -+ mov \base, #31 -+ subs \irqnr, \base, \irqnr -+ -+1001: -+ .endm - -diff -purN linux-2.6.9.orig/arch/arm/boot/compressed/head.S linux-2.6.9/arch/arm/boot/compressed/head.S ---- linux-2.6.9.orig/arch/arm/boot/compressed/head.S 2004-10-18 17:55:07.000000000 -0400 -+++ linux-2.6.9/arch/arm/boot/compressed/head.S 2004-10-31 03:05:25.011878371 -0500 -@@ -79,6 +79,7 @@ - .endm - .macro writeb, rb - str \rb, [r3, #0] -+ .endm - #elif defined(CONFIG_ARCH_IXP2000) - .macro loadsp, rb - mov \rb, #0xc0000000 -diff -purN linux-2.6.9.orig/arch/arm/boot/compressed/head-xscale.S linux-2.6.9/arch/arm/boot/compressed/head-xscale.S ---- linux-2.6.9.orig/arch/arm/boot/compressed/head-xscale.S 2004-10-18 17:53:45.000000000 -0400 -+++ linux-2.6.9/arch/arm/boot/compressed/head-xscale.S 2004-10-31 03:05:25.013878040 -0500 -@@ -56,3 +56,7 @@ __XScale_start: - mov r7, #MACH_TYPE_COTULLA_IDP - #endif - -+#ifdef CONFIG_ARCH_NSLU2 -+ mov r7, #(MACH_TYPE_NSLU2 & 0xff) -+ orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00) -+#endif ---- linux-2.6.9.orig/arch/arm/tools/mach-types 2004-10-18 17:54:08.000000000 -0400 -+++ linux-2.6.9/arch/arm/tools/mach-types 2004-10-31 03:05:25.006879199 -0500 -@@ -6,7 +6,7 @@ - # To add an entry into this database, please see Documentation/arm/README, - # or contact rmk@arm.linux.org.uk - # --# Last update: Thu Sep 30 15:23:21 2004 -+# Last update: Mon Oct 25 04:14:24 2004 - # - # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number - # -@@ -595,8 +595,8 @@ pxa_dnp2110 MACH_PXA_DNP2110 PXA_DNP211 - xaeniax MACH_XAENIAX XAENIAX 585 - somn4250 MACH_SOMN4250 SOMN4250 586 - pleb2 MACH_PLEB2 PLEB2 587 --cwl MACH_CWL CWL 588 --gd MACH_GD GD 589 -+cornwallis MACH_CORNWALLIS CORNWALLIS 588 -+gurney_drv MACH_GURNEY_DRV GURNEY_DRV 589 - chaffee MACH_CHAFFEE CHAFFEE 590 - rms101 MACH_RMS101 RMS101 591 - rx3715 MACH_RX3715 RX3715 592 -@@ -604,7 +604,7 @@ swift MACH_SWIFT SWIFT 593 - roverp7 MACH_ROVERP7 ROVERP7 594 - pr818s MACH_PR818S PR818S 595 - trxpro MACH_TRXPRO TRXPRO 596 --nslu2 MACH_NSLU2 NSLU2 597 -+nslu2 ARCH_NSLU2 NSLU2 597 - e400 MACH_E400 E400 598 - trab MACH_TRAB TRAB 599 - cmc_pu2 MACH_CMC_PU2 CMC_PU2 600 -@@ -615,3 +615,18 @@ ixdpg425 MACH_IXDPG425 IXDPG425 604 - tomtomgo MACH_TOMTOMGO TOMTOMGO 605 - versatile_ab MACH_VERSATILE_AB VERSATILE_AB 606 - edb9307 MACH_EDB9307 EDB9307 607 -+sg565 MACH_SG565 SG565 608 -+lpd79524 MACH_LPD79524 LPD79524 609 -+lpd79525 MACH_LPD79525 LPD79525 610 -+rms100 MACH_RMS100 RMS100 611 -+kb9200 MACH_KB9200 KB9200 612 -+sx1 MACH_SX1 SX1 613 -+hms39c7092 MACH_HMS39C7092 HMS39C7092 614 -+armadillo MACH_ARMADILLO ARMADILLO 615 -+ipcu MACH_IPCU IPCU 616 -+loox720 MACH_LOOX720 LOOX720 617 -+ixdp465 MACH_IXDP465 IXDP465 618 -+ixdp2351 MACH_IXDP2351 IXDP2351 619 -+adsvix MACH_ADSVIX ADSVIX 620 -+dm270 MACH_DM270 DM270 621 -+ diff --git a/packages/linux/openslug-kernel-2.6.9/usbnet.patch b/packages/linux/openslug-kernel-2.6.9/usbnet.patch deleted file mode 100644 index a89c392f47..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/usbnet.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- linux-2.6.9/drivers/usb/net/usbnet_orig.c 2005-02-11 19:14:59.455525200 -0500 -+++ linux-2.6.9/drivers/usb/net/usbnet.c 2005-02-11 19:17:29.751676712 -0500 -@@ -2374,12 +2374,13 @@ - #endif - size = (sizeof (struct ethhdr) + dev->net->mtu); - -- if ((skb = alloc_skb (size, flags)) == 0) { -+ if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) { - devdbg (dev, "no rx skb"); - defer_kevent (dev, EVENT_RX_MEMORY); - usb_free_urb (urb); - return; - } -+ skb_reserve (skb, NET_IP_ALIGN); - - entry = (struct skb_data *) skb->cb; - entry->urb = urb; diff --git a/packages/linux/openslug-kernel-2.6.9/x1205-rtc.c b/packages/linux/openslug-kernel-2.6.9/x1205-rtc.c deleted file mode 100644 index 50fbc9e280..0000000000 --- a/packages/linux/openslug-kernel-2.6.9/x1205-rtc.c +++ /dev/null @@ -1,548 +0,0 @@ -/* - x1205 - an 12c driver for the Xicor X1205 RTC - Copyright 2004 Karen Spearel - - please send all reports to: - kas11 at tampabay dot rr dot com - - based on linux/drivers/acron/char/pcf8583.h - Copyright (C) 2000 Russell King - - 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., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -/* - - * i2c_adapter is the structure used to identify a physical i2c bus along - * with the access algorithms necessary to access it. - -struct i2c_adapter { - struct module *owner; - unsigned int id; == is algo->id | hwdep.struct->id, for registered values see below - unsigned int class; - struct i2c_algorithm *algo; the algorithm to access the bus - void *algo_data; - - --- administration stuff. - int (*client_register)(struct i2c_client *); - int (*client_unregister)(struct i2c_client *); - - data fields that are valid for all devices - struct semaphore bus_lock; - struct semaphore clist_lock; - - int timeout; - int retries; - struct device dev; the adapter device - struct class_device class_dev; the class device - -#ifdef CONFIG_PROC_FS - No need to set this when you initialize the adapter - int inode; -#endif def CONFIG_PROC_FS - - int nr; - struct list_head clients; - struct list_head list; - char name[I2C_NAME_SIZE]; - struct completion dev_released; - struct completion class_dev_released; -}; -*/ - - -/*========== Driver for the X1205 on the Linksys NSLU2 ==================*/ - -#include <linux/init.h> -#include <linux/i2c.h> -#include <linux/slab.h> -#include <linux/string.h> -#include <linux/errno.h> -#include <linux/bcd.h> -#include <linux/rtc.h> -#include <linux/fs.h> -#include <linux/proc_fs.h> -#include <linux/miscdevice.h> -#include <linux/device.h> -#include <asm/uaccess.h> -#include <asm/system.h> -#include <linux/moduleparam.h> - -#define RTC_GETDATETIME 0 -#define RTC_SETTIME 1 -#define RTC_SETDATETIME 2 - -#define I2C_M_WR 0 // just for consistancy - -// offsets into read buf - add 2 for write buf -#define CCR_SEC 0 -#define CCR_MIN 1 -#define CCR_HOUR 2 -#define CCR_MDAY 3 -#define CCR_MONTH 4 -#define CCR_YEAR 5 -#define CCR_WDAY 6 -#define CCR_Y2K 7 - -#define X1205_I2C_BUS_ADDR 0x6f // hardwired into x1205 -#define X1205_ALM0_BASE 0x00 // Base address of the ALM0 -#define X1205_CCR_BASE 0x30 // Base address of the CCR -#define X1205_SR_ADDR 0x3f // Status Register -#define X1205_SR_WEL 0x02 // Write Enable Latch bit -#define X1205_SR_RWEL 0x04 // Register Write Enable Bit -#define X1205_MILBIT 0x80 // this bit set in ccr.hour for 24 hr mode -#define NOERR 0 -#define RTC_NODATE 0 -#define RTC_DATETOO 1 - -// comment out next line is your x1205 can't do page writes -//#define X1205PAGEWRITE 1 -#ifdef X1205PAGEWRITE -#define DRIVERNAME "Xicor x1205 RTC Driver v0.9.3.3" -#else -#define DRIVERNAME "Xicor x1205 RTC Dvr v0.9.3.3NPW" -#endif - -#define DEBUG KERN_DEBUG - - -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base); -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base); -static int x1205_attach(struct i2c_adapter *adapter); -static int x1205_detach(struct i2c_client *client); -static int x1205_validate_tm(struct rtc_time *tm); -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *arg); -static int x1205_sync_rtc(void); -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr); -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data); - -static struct i2c_driver x1205_driver = { - .owner = THIS_MODULE, - .name = DRIVERNAME, - .id = I2C_DRIVERID_X1205, - .flags = I2C_DF_NOTIFY, - .attach_adapter = &x1205_attach, //we don't need to probe...x1205 is hardwired @ 0x6f - .detach_client = &x1205_detach, - .command = &x1205_command, //this prolly never gets called...used internally tho -}; - -static struct i2c_client x1205_i2c_client = { - .id = I2C_DRIVERID_X1205, - .flags = 0, - .addr = X1205_I2C_BUS_ADDR, // chip address - NOTE: 7bit - .adapter = NULL, // the adapter we sit on assigned in attach - .driver = &x1205_driver, // and our access routines - .usage_count = 0, // How many accesses currently to this client - .dev = {}, // the device structure - .list = {}, - .name = DRIVERNAME, - .released = {}, -}; - -static struct file_operations rtc_fops = { - owner: THIS_MODULE, - ioctl: x1205_ioctl, - read: x1205_read, -}; - -static struct miscdevice x1205_miscdev = { - .minor = RTC_MINOR, - .name = "rtc", - .fops = &rtc_fops, -}; -extern int (*set_rtc)(void); -static unsigned epoch = 1900; //coresponds to year 0 -static unsigned rtc_epoch = 2000; -static const unsigned char days_in_mo[] = -{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - -//===================================CODE====================================== -// in the routines that deal directly with the x1205 hardware, we use -// rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch -// Epoch is inited as 2000. Time is set to UT -//============================================================================= -static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm, u8 reg_base) -{ - static unsigned char addr[2] = { 0,} ; - unsigned char buf[8]; - struct i2c_msg msgs[2] = { - { client->addr, I2C_M_WR, 2, addr }, //msg 1 = send base address - { client->addr, I2C_M_RD, 8, buf }, //msg 2 = read sequential data - }; - addr[1] = reg_base; - if ((i2c_transfer(client->adapter, msgs, 2)) == 2) { //did we read 2 messages? - printk(KERN_DEBUG "raw x1205 read data - sec-%02x min-%02x hr-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6], buf[7]); - tm->tm_sec = BCD2BIN(buf[CCR_SEC]); - tm->tm_min = BCD2BIN(buf[CCR_MIN]); - buf[CCR_HOUR] &= ~X1205_MILBIT; - tm->tm_hour = BCD2BIN(buf[CCR_HOUR]); //hr is 0-23 - tm->tm_mday = BCD2BIN(buf[CCR_MDAY]); - tm->tm_mon = BCD2BIN(buf[CCR_MONTH]); - rtc_epoch = BCD2BIN(buf[CCR_Y2K]) * 100; - tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + rtc_epoch - epoch; - tm->tm_wday = buf[CCR_WDAY]; - printk(KERN_DEBUG "rtc_time output data - sec-%02d min-%02d hr-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday,epoch, rtc_epoch); - } else { - printk(KERN_DEBUG "i2c_transfer Read Error\n"); - return -EIO; - } - - return NOERR; -} -// x1205pagewrite allows writing a block of registers in msg3 even though the x1205 says -// nothing about this in its spec. -// it needs more testing as it is possible some x1205s are actually not-completely- -// functional x1226s and there is a reason for the multiple write to not be in the spec. -// anyhow, it is enabled for the time being...and we even push out luck by sending 10 bytes - -static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm, int datetoo, u8 reg_base) -{ - static unsigned char wel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL }; - static unsigned char rwel[3] = { 0, X1205_SR_ADDR, X1205_SR_WEL | X1205_SR_RWEL }; - static unsigned char diswe[3] = { 0, X1205_SR_ADDR, 0 }; - -#ifdef X1205PAGEWRITE - - static unsigned char buf[10] = { 0, X1205_CCR_BASE, }; - struct i2c_msg msgs[4] = { - { client->addr, I2C_M_WR, 3, wel }, //msg 1 = write WEL to to ccr sr - { client->addr, I2C_M_WR, 3, rwel }, //msg 2 = write RWEL to ccr sr - { client->addr, I2C_M_WR, 10, buf }, //msg 3 = write ccr base addr +seq data - { client->addr, I2C_M_WR, 3, diswe }, //msg 4 = 0 to ccr sr to disable writes - }; - - msgs[2].len = 5; // 5 bytes + addr to set time only - buf [1] = reg_base; - buf[CCR_SEC+2] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN+2] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR+2] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - if (datetoo == 1) { - buf[CCR_MDAY+2] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH+2] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR+2] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY+2] = tm->tm_wday & 7; - buf[CCR_Y2K+2] = BIN2BCD((rtc_epoch/100)); - msgs[2].len += 5; //5 more bytes to set date - } - printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); - printk(KERN_DEBUG "BCD write data - sec-%02x min-%02x hour-%02x mday-%02x mon-%02x year-%02x wday-%02x y2k-%02x\n", - buf[2],buf[3],buf[4],buf[5],buf[6], buf[7], buf[8], buf[9]); - - if ((i2c_transfer(client->adapter, msgs, 4)) != 4) - return -EIO; - return NOERR; - -#else //do this if page writes aren't working - - int i,xfer; - static unsigned char data[3] = { 0,}; - static unsigned char buf[8]; - - buf[CCR_SEC] = BIN2BCD(tm->tm_sec); - buf[CCR_MIN] = BIN2BCD(tm->tm_min); - buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_MILBIT; // set 24 hour format - if (datetoo == 1) { - buf[CCR_MDAY] = BIN2BCD(tm->tm_mday); - buf[CCR_MONTH] = BIN2BCD(tm->tm_mon); // input is 0-11 - buf[CCR_YEAR] = BIN2BCD((tm->tm_year + epoch - rtc_epoch)); // input is yrs since 1900 - buf[CCR_WDAY] = tm->tm_wday & 7; - buf[CCR_Y2K] = BIN2BCD((rtc_epoch/100)); - } - printk(KERN_DEBUG "rtc_time input - sec-%02d min-%02d hour-%02d mday-%02d mon-%02d year-%02d wday-%02d epoch-%d rtc_epoch-%d\n", - tm->tm_sec,tm->tm_min,tm->tm_hour,tm->tm_mday,tm->tm_mon,tm->tm_year,tm->tm_wday, epoch, rtc_epoch); - - xfer = i2c_master_send(client, wel, 3); - printk(KERN_DEBUG "wen - %x\n", xfer); - if (xfer != 3) - return -EIO; - - xfer = i2c_master_send(client, rwel, 3); - printk(KERN_DEBUG "wenb - %x\n", xfer); - if (xfer != 3) - return -EIO; - - for (i = 0; i < 8; i++) { - data[1] = i + reg_base; - data[2] = buf[i]; - xfer = i2c_master_send(client, data, 3); - printk(KERN_DEBUG "xfer - %d addr - %02x data - %02x\n", xfer, data[1], data[2]); - if (xfer != 3) - return -EIO; - }; - - xfer = i2c_master_send(client, diswe, 3); - printk(KERN_DEBUG "wdis - %x\n", xfer); - if (xfer != 3) - return -EIO; - return NOERR; -#endif -} -//============================================================================= - -static int x1205_attach(struct i2c_adapter *adapter) -{ - struct rtc_time tm; - struct timespec tv; - int errno; - - x1205_i2c_client.adapter = adapter; - x1205_i2c_client.id++; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functional driver - return -EIO; - - if ((errno = i2c_attach_client(&x1205_i2c_client)) != NOERR) - return errno; - - tv.tv_nsec = tm.tm_sec * 10000000; - tv.tv_sec = mktime(tm.tm_year+epoch, tm.tm_mon, tm.tm_mday, tm.tm_hour, - tm.tm_min, tm.tm_sec); - do_settimeofday(&tv); - set_rtc = x1205_sync_rtc; - - printk(KERN_DEBUG "%s attached on adapter %s\n",x1205_i2c_client.name, - x1205_i2c_client.adapter->name); //why is this name a null string? - - return NOERR; -} - -static int x1205_detach(struct i2c_client *client) -{ - int errno; - - if ((errno = i2c_detach_client(client)) != 0) { - printk(KERN_DEBUG "i2c_detach failed - errno = %d\n", errno); - return errno; - } - - return NOERR; -} - -// make sure the rtc_time values are in bounds -static int x1205_validate_tm(struct rtc_time *tm) -{ - tm->tm_year += 1900; - - if (tm->tm_year < 1970) - return -EINVAL; - - if ((tm->tm_mon > 11) || (tm->tm_mday == 0)) - return -EINVAL; - - if (tm->tm_mday > (days_in_mo[tm->tm_mon] + ( (tm->tm_mon == 1) && - ((!(tm->tm_year % 4) && (tm->tm_year % 100) ) || !(tm->tm_year % 400))))) - return -EINVAL; - - if ((tm->tm_year -= epoch) > 255) - return -EINVAL; - - if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60)) - return -EINVAL; - return NOERR; -} - -static int x1205_command(struct i2c_client *client, unsigned int cmd, void *tm) -{ - int errno, dodate = RTC_DATETOO; - - if (client == NULL || tm == NULL) - return -EINVAL; - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - printk(KERN_DEBUG "x1205_command %d\n", cmd); - - switch (cmd) { - case RTC_GETDATETIME: - return x1205_get_datetime(client, tm, X1205_CCR_BASE); - - case RTC_SETTIME: // note fall thru - dodate = RTC_NODATE; - case RTC_SETDATETIME: - if ((errno = x1205_validate_tm(tm)) < NOERR) - return errno; - return x1205_set_datetime(client, tm, dodate, X1205_CCR_BASE); - - default: - return -EINVAL; - } -} - -static int x1205_sync_rtc(void) -{ - struct rtc_time new_tm, old_tm; - unsigned long cur_secs = xtime.tv_sec; - - printk(KERN_DEBUG "x1205_sync_rtc entry\n"); - - if (x1205_command(&x1205_i2c_client, RTC_GETDATETIME, &old_tm)) - return 0; - -// xtime.tv_nsec = old_tm.tm_sec * 10000000; //FIXME: - new_tm.tm_sec = cur_secs % 60; - cur_secs /= 60; - new_tm.tm_min = cur_secs % 60; - cur_secs /= 60; - new_tm.tm_hour = cur_secs % 24; - - /* - * avoid writing when we're going to change the day - * of the month. We will retry in the next minute. - * This basically means that if the RTC must not drift - * by more than 1 minute in 11 minutes. - */ - if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) || - (new_tm.tm_hour == 23 && new_tm.tm_min == 59)) - return 1; - printk(KERN_DEBUG "x1205_sync_rtc exit\n"); - - return x1205_command(&x1205_i2c_client, RTC_SETTIME, &new_tm); -} - -static int x1205_read(struct file *file, char *buf, size_t count, loff_t *ptr) -{ - struct rtc_time tm; - - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - return copy_to_user(buf, &tm, sizeof(tm)) ? -EFAULT : NOERR; -} - -//============================================================================== - -static int x1205_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long arg) -{ - struct rtc_time tm; - int errno; - - printk(KERN_DEBUG "ioctl = %x\n", cmd); - - switch (cmd) { - case RTC_RD_TIME: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return -EIO; - break; - - case RTC_SET_TIME: - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - if ((errno = x1205_validate_tm(&tm)) < NOERR) - return errno; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_CCR_BASE); - - case RTC_ALM_SET: //FIXME: set Control Regs - if (copy_from_user(&tm, (struct rtc_time *) arg, sizeof(struct rtc_time))) - return -EFAULT; - return x1205_set_datetime(&x1205_i2c_client, &tm, RTC_DATETOO, X1205_ALM0_BASE); - - case RTC_ALM_READ: - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_ALM0_BASE)) < NOERR) - return -EIO; - break; - - case RTC_EPOCH_READ: - - return put_user (epoch, (unsigned long __user *)arg); - - case RTC_EPOCH_SET: - if (arg < 1900) - return -EINVAL; - - if (!capable(CAP_SYS_TIME)) - return -EACCES; - - epoch = arg; - return 0; - - default: - return -ENOTTY; - } - return copy_to_user((void __user *)arg, &tm, sizeof tm) ? -EFAULT : 0; - -} - -static int x1205_read_proc(char *buf, char **start, off_t off, int len, int *eof, void *data) -{ - struct rtc_time tm; - int slen, errno; - - if ((errno = x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) < NOERR) - return errno; - -// here we return the real year and the month as 1-12 since it is human-readable - slen = sprintf(buf, "rtc_time\t: %02d:%02d:%02d\nrtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday); - printk(KERN_DEBUG "raw rtc_time\t: %02d:%02d:%02d\nraw rtc_date\t: %04d-%02d-%02d\n", - tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year, tm.tm_mon, tm.tm_mday); - - if (slen <= off + len) - *eof = 1; - *start = buf + off; - slen -= off; - if (slen > len) - slen = len; - if ( slen < 0 ) - slen = 0; - - return slen; -} - -static int __init x1205_init(void) -{ - struct rtc_time tm; - int errno; - printk(KERN_INFO "LOADED %s\n", DRIVERNAME); - - if ((errno = i2c_add_driver(&x1205_driver)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "x1205_init failed - errno = %d\n", errno); - return (errno); - } - if ((errno = misc_register(&x1205_miscdev)) != NOERR) { - dev_dbg(x1205_i2c_client.dev, "Register Misc Driver failed - errno = %d\n", errno); - i2c_del_driver(&x1205_driver); - return errno; - } - if (create_proc_read_entry("driver/rtc", 0, NULL, x1205_read_proc, NULL) < NOERR) - return -ENOMEM; - if ((x1205_get_datetime(&x1205_i2c_client, &tm, X1205_CCR_BASE)) != NOERR) //test for functionality - return -EIO; - - return NOERR; -} - -static void __exit x1205_exit(void) -{ - remove_proc_entry("driver/rtc", NULL); - misc_deregister(&x1205_miscdev); - i2c_del_driver(&x1205_driver); - set_rtc = NULL; -} - -MODULE_AUTHOR("Karen Spearel <kas11@tampabay.rr.com>"); -MODULE_DESCRIPTION("Xicor X1205-RTC Driver"); -MODULE_LICENSE("GPL"); -static int debug = 7; -module_param(debug, bool, 0644); -MODULE_PARM_DESC(debug, "Debugging enabled = 1"); - -module_init(x1205_init); -module_exit(x1205_exit); diff --git a/packages/linux/openslug-kernel_2.6.11.2.bb b/packages/linux/openslug-kernel_2.6.11.2.bb deleted file mode 100644 index 8e2555d014..0000000000 --- a/packages/linux/openslug-kernel_2.6.11.2.bb +++ /dev/null @@ -1,64 +0,0 @@ -SECTION = "kernel" -DESCRIPTION = "Linux kernel for the Linksys NSLU2 device" -LICENSE = "GPL" -MAINTAINER = "Chris Larson <kergoth@handhelds.org>" -PR = "r15" - -KERNEL_SUFFIX = "openslug" - -SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.2.tar.bz2 \ - file://nslu2_2.6.11.patch;patch=1 \ - file://usbnet.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://anonymiser.patch;patch=1 \ - file://xscale-reset.patch;patch=1 \ - file://mtd-shutdown.patch;patch=1 \ - file://defconfig \ - file://x1205-rtc.c \ - file://nslu2-io.c \ - file://nslu2-setup.c \ - file://nslu2-pci.c \ - file://nslu2-part.c \ - file://nslu2.h" -S = "${WORKDIR}/linux-2.6.11.2" - -COMPATIBLE_HOST = 'arm.*-linux' - -inherit kernel - -ARCH = "arm" -KERNEL_IMAGETYPE = "zImage" -CMDLINE_CONSOLE ?= "ttyS0,115200n8" -CMDLINE_ROOT ?= "root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc reboot=s" -#CMDLINE_ROOT ?= "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000" -CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}" - -do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig ${S}/.config - install -m 0644 ${WORKDIR}/x1205-rtc.c ${S}/drivers/i2c/chips/x1205-rtc.c - install -m 0644 ${WORKDIR}/nslu2-io.c ${S}/arch/arm/mach-ixp4xx/nslu2-io.c - install -m 0644 ${WORKDIR}/nslu2-setup.c ${S}/arch/arm/mach-ixp4xx/nslu2-setup.c - install -m 0644 ${WORKDIR}/nslu2-pci.c ${S}/arch/arm/mach-ixp4xx/nslu2-pci.c - install -m 0644 ${WORKDIR}/nslu2-part.c ${S}/arch/arm/mach-ixp4xx/nslu2-part.c - install -m 0644 ${WORKDIR}/nslu2.h ${S}/include/asm-arm/arch-ixp4xx/nslu2.h - echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config - rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ - ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch -} - -do_deploy() { - install -d ${DEPLOY_DIR}/images - install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX} -} - -do_deploy[dirs] = "${S}" - -addtask deploy before do_build after do_compile - -python () { - # Don't build openslug kernel unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - dist = bb.data.getVar("DISTRO", d, 1) - if mach != 'nslu2' or dist != 'openslug': - raise bb.parse.SkipPackage("OpenSlug only builds for the Linksys NSLU2") -} diff --git a/packages/linux/openslug-kernel_2.6.11.bb b/packages/linux/openslug-kernel_2.6.11.bb deleted file mode 100644 index 2b12023fd5..0000000000 --- a/packages/linux/openslug-kernel_2.6.11.bb +++ /dev/null @@ -1,61 +0,0 @@ -SECTION = "kernel" -DESCRIPTION = "Linux kernel for the Linksys NSLU2 device" -LICENSE = "GPL" -MAINTAINER = "Chris Larson <kergoth@handhelds.org>" -PR = "r7" - -KERNEL_SUFFIX = "openslug" - -SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.2.tar.bz2 \ - file://nslu2_2.6.11.patch;patch=1 \ - file://usbnet.patch;patch=1 \ - file://ixp4xx_copy_from.patch;patch=1 \ - file://defconfig \ - file://x1205-rtc.c \ - file://nslu2-io.c \ - file://nslu2-setup.c \ - file://nslu2-pci.c \ - file://nslu2-part.c \ - file://nslu2.h" -S = "${WORKDIR}/linux-2.6.11.2" - -COMPATIBLE_HOST = 'arm.*-linux' - -inherit kernel - -ARCH = "arm" -KERNEL_IMAGETYPE = "zImage" -CMDLINE_CONSOLE ?= "ttyS0,115200n8" -#CMDLINE_ROOT ?= "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000" -CMDLINE_ROOT ?= "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000" -CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}" - -do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig ${S}/.config - install -m 0644 ${WORKDIR}/x1205-rtc.c ${S}/drivers/i2c/chips/x1205-rtc.c - install -m 0644 ${WORKDIR}/nslu2-io.c ${S}/arch/arm/mach-ixp4xx/nslu2-io.c - install -m 0644 ${WORKDIR}/nslu2-setup.c ${S}/arch/arm/mach-ixp4xx/nslu2-setup.c - install -m 0644 ${WORKDIR}/nslu2-pci.c ${S}/arch/arm/mach-ixp4xx/nslu2-pci.c - install -m 0644 ${WORKDIR}/nslu2-part.c ${S}/arch/arm/mach-ixp4xx/nslu2-part.c - install -m 0644 ${WORKDIR}/nslu2.h ${S}/include/asm-arm/arch-ixp4xx/nslu2.h - echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config - rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ - ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch -} - -do_deploy() { - install -d ${DEPLOY_DIR}/images - install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX} -} - -do_deploy[dirs] = "${S}" - -addtask deploy before do_build after do_compile - -python () { - # Don't build openslug kernel unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - dist = bb.data.getVar("DISTRO", d, 1) - if mach != 'nslu2' or dist != 'openslug': - raise bb.parse.SkipPackage("OpenSlug only builds for the Linksys NSLU2") -} diff --git a/packages/linux/openslug-kernel_2.6.7.bb b/packages/linux/openslug-kernel_2.6.7.bb deleted file mode 100644 index e40d8c03bc..0000000000 --- a/packages/linux/openslug-kernel_2.6.7.bb +++ /dev/null @@ -1,43 +0,0 @@ -SECTION = "kernel" -DESCRIPTION = "Linux kernel for the Linksys NSLU2 device" -LICENSE = "GPL" -MAINTAINER = "Chris Larson <kergoth@handhelds.org>" -PR = "r1" - -KERNEL_SUFFIX = "openslug" - -SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.7.tar.bz2 \ - file://arm-Makefile.patch;patch=1 \ - file://ipx4xx-pci.patch;patch=1 \ - file://arm-timer.patch;patch=1 \ - file://x1205-rtc.patch;patch=1;pnum=0 \ - cvs://anonymous@cvs.sourceforge.net/cvsroot/nslu;module=anyu2/source;method=pserver \ - file://defconfig" -S = "${WORKDIR}/linux-2.6.7" - -COMPATIBLE_HOST = 'arm.*-linux' - -inherit kernel - -ARCH = "arm" -KERNEL_IMAGETYPE = "zImage" -CMDLINE_CONSOLE ?= "ttyS0,115200n8" -CMDLINE_ROOT = "root=/dev/ram0 initrd=0x01000000,10M mem=32M@0x00000000" -CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}" - -do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig ${S}/.config - install -m 0644 ${WORKDIR}/source/x1205-rtc.c ${S}/drivers/i2c/chips/x1205-rtc.c - echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config - rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ - ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch -} - -do_deploy() { - install -d ${DEPLOY_DIR}/images - install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX} -} - -do_deploy[dirs] = "${S}" - -addtask deploy before do_build after do_compile diff --git a/packages/linux/openslug-kernel_2.6.9.bb b/packages/linux/openslug-kernel_2.6.9.bb deleted file mode 100644 index 5397a8fbcc..0000000000 --- a/packages/linux/openslug-kernel_2.6.9.bb +++ /dev/null @@ -1,63 +0,0 @@ -SECTION = "kernel" -DESCRIPTION = "Linux kernel for the Linksys NSLU2 device" -LICENSE = "GPL" -MAINTAINER = "Chris Larson <kergoth@handhelds.org>" -PR = "r11" - -KERNEL_SUFFIX = "openslug" - -SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.bz2 \ - file://nslu2_2.6.9.patch;patch=1 \ - file://double_cpdo.patch;patch=1 \ - file://alignment.patch;patch=1 \ - file://usbnet.patch;patch=1 \ - file://defconfig \ - file://x1205-rtc.c \ - file://nslu2-io.c \ - file://nslu2-setup.c \ - file://nslu2-pci.c \ - file://nslu2-part.c \ - file://nslu2.h" -S = "${WORKDIR}/linux-2.6.9" - -COMPATIBLE_HOST = 'arm.*-linux' - -inherit kernel - -ARCH = "arm" -KERNEL_IMAGETYPE = "zImage" -CMDLINE_CONSOLE ?= "ttyS0,115200n8" -#CMDLINE_ROOT = "root=/dev/slug rootfstype=ext2,jffs2 initrd=0x01000000,10M mem=32M@0x00000000" -#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000" -CMDLINE_ROOT = "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000" -CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}" - -do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig ${S}/.config - install -m 0644 ${WORKDIR}/x1205-rtc.c ${S}/drivers/i2c/chips/x1205-rtc.c - install -m 0644 ${WORKDIR}/nslu2-io.c ${S}/arch/arm/mach-ixp4xx/nslu2-io.c - install -m 0644 ${WORKDIR}/nslu2-setup.c ${S}/arch/arm/mach-ixp4xx/nslu2-setup.c - install -m 0644 ${WORKDIR}/nslu2-pci.c ${S}/arch/arm/mach-ixp4xx/nslu2-pci.c - install -m 0644 ${WORKDIR}/nslu2-part.c ${S}/arch/arm/mach-ixp4xx/nslu2-part.c - install -m 0644 ${WORKDIR}/nslu2.h ${S}/include/asm-arm/arch-ixp4xx/nslu2.h - echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config - rm -rf ${S}/include/asm-arm/arch ${S}/include/asm-arm/proc \ - ${S}/include/asm-arm/.proc ${S}/include/asm-arm/.arch -} - -do_deploy() { - install -d ${DEPLOY_DIR}/images - install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX} -} - -do_deploy[dirs] = "${S}" - -addtask deploy before do_build after do_compile - -python () { - # Don't build openslug kernel unless we're targeting an nslu2 - mach = bb.data.getVar("MACHINE", d, 1) - dist = bb.data.getVar("DISTRO", d, 1) - if mach != 'nslu2' or dist != 'openslug': - raise bb.parse.SkipPackage("OpenSlug only builds for the Linksys NSLU2") -} |