Commit 463727d1 authored by Linus Torvalds's avatar Linus Torvalds

v2.5.2.2 -> v2.5.2.3

- Al Viro: VFS inode allocation moved down to filesystem, trim inodes
- Greg KH: USB update, hotplug documentation
- Kai Germaschewski: ISDN update
- Ingo Molnar: scheduler tweaking ("J2")
- Arnaldo: emu10k kdev_t updates
- Ben Collins: firewire updates
- Björn Wesen: cris arch update
- Hal Duston: ps2esdi driver bio/kdev_t fixes
- Jean Tourrilhes: move wireless drivers into drivers/net/wireless,
update wireless API #1
- Richard Gooch: devfs race fix
- OGAWA Hirofumi: FATFS update
parent 0713f029
No related merge requests found
......@@ -1281,6 +1281,13 @@ W: http://www.carumba.com/
D: bug toaster (A1 sauce makes all the difference)
D: Random linux hacker
N: Tim Hockin
E: thockin@hockin.org
W: http://www.hockin.org/~thockin
D: Natsemi ethernet
D: Cobalt Networks (x86) support
D: This-and-That
N: Dirk Hohndel
E: hohndel@suse.de
D: The XFree86[tm] Project
......@@ -1451,11 +1458,10 @@ S: USA
N: Dave Jones
E: davej@suse.de
W: http://www.suse.de/~davej
D: Moved PCI bridge tuning to userspace (Powertweak).
D: Various x86 (& clones) setup code hacking.
D: AFFS fixes for 2.3.x
D: Various Janitorial hacks. (kernel-janitor.sourceforge.net)
W: http://www.codemonkey.org.uk
D: x86 errata/setup maintenance.
D: Backport/Forwardport merge monkey.
D: Various Janitor work.
S: c/o SuSE Linux UK Ltd
S: The Kinetic Centre
S: Theobald Street
......@@ -1660,6 +1666,13 @@ S: ul. Matemblewska 1B/10
S: 80-283 Gdansk
S: Poland
N: Jakob Kemi
E: jakob.kemi@telia.com
D: V4L W9966 Webcam driver
S: Forsbyvgen 33
S: 74143 Knivsta
S: Sweden
N: Gero Kuhlmann
E: gero@gkminix.han.de
D: mounting root via NFS
......@@ -1832,6 +1845,11 @@ S: Puistokaari 1 E 18
S: 00200 Helsinki
S: Finland
N: Daniel J. Maas
E: dmaas@dcine.com
W: http://www.maasdigital.com
D: dv1394
N: Hamish Macdonald
E: hamishm@lucent.com
D: Linux/68k port
......@@ -2526,7 +2544,7 @@ S: Wanniassa ACT 2903
S: Australia
N: Gerard Roudier
E: groudier@iplus.fr
E: groudier@free.fr
D: Contributed to asynchronous read-ahead improvement
S: 21 Rue Carnot
S: 95170 Deuil La Barre
......
......@@ -50,10 +50,10 @@ with pcmcia-cs.
o Gnu C 2.95.3 # gcc --version
o Gnu make 3.77 # make --version
o binutils 2.9.5.0.24 # ld -v
o binutils 2.9.5.0.25 # ld -v
o util-linux 2.10o # fdformat --version
o modutils 2.4.2 # insmod -V
o e2fsprogs 1.19 # tune2fs
o e2fsprogs 1.25 # tune2fs
o reiserfsprogs 3.x.0j # reiserfsck 2>&1|grep reiserfsprogs
o pcmcia-cs 3.1.21 # cardmgr -V
o PPP 2.4.0 # pppd --version
......@@ -304,8 +304,7 @@ o <ftp://rawhide.redhat.com/pub/rawhide/SRPMS/SRPMS/>
E2fsprogs
---------
o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19.tar.gz>
o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19-0.src.rpm>
o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.25.tar.gz>
Reiserfsprogs
-------------
......
......@@ -8144,6 +8144,19 @@ CONFIG_IEEE1394_VIDEO1394
this option only if you have an IEEE 1394 video device connected to
an OHCI-1394 card.
OHCI-DV I/O support
CONFIG_IEEE1394_DV1394
This driver allows you to transmit and receive DV (digital video)
streams on an OHCI-1394 card using a simple frame-oriented
interface.
The user-space API for dv1394 is documented in dv1394.h.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/modules.txt>. The module
will be called dv1394.o.
SBP-2 support (Harddisks etc.)
CONFIG_IEEE1394_SBP2
This option enables you to use SBP-2 devices connected to your IEEE
......
......@@ -93,6 +93,8 @@ APISOURCES := $(TOPDIR)/drivers/media/video/videodev.c \
$(TOPDIR)/drivers/net/8390.c \
$(TOPDIR)/drivers/char/serial.c \
$(TOPDIR)/drivers/pci/pci.c \
$(TOPDIR)/drivers/hotplug/pci_hotplug_core.c \
$(TOPDIR)/drivers/hotplug/pci_hotplug_util.c \
$(TOPDIR)/drivers/block/ll_rw_blk.c \
$(TOPDIR)/drivers/sound/sound_core.c \
$(TOPDIR)/drivers/sound/sound_firmware.c \
......
......@@ -161,6 +161,10 @@
</sect1>
<sect1><title>PCI Support Library</title>
!Edrivers/pci/pci.c
</sect1>
<sect1><title>PCI Hotplug Support Library</title>
!Edrivers/hotplug/pci_hotplug_core.c
!Edrivers/hotplug/pci_hotplug_util.c
</sect1>
<sect1><title>MCA Architecture</title>
<sect2><title>MCA Device Functions</title>
......
......@@ -8,7 +8,7 @@ to turn off all CPUs, and if an IRQ controller does not support IRQ
affinity then the value will not change from the default 0xffffffff.
Here is an example of restricting IRQ44 (eth1) to CPU0-3 then restricting
the IRQ to CPU4-8 (this is an 8-CPU SMP box):
the IRQ to CPU4-7 (this is an 8-CPU SMP box):
[root@moon 44]# cat smp_affinity
ffffffff
......
......@@ -1869,3 +1869,11 @@ Changes for patch v206
- Added support for multiple Compaq cpqarray controllers
- Fixed (rare, old) race in <devfs_lookup>
===============================================================================
Changes for patch v207
- Fixed deadlock bug in <devfs_d_revalidate_wait>
- Tag VFS deletable in <devfs_mk_symlink> if handle ignored
- Updated README from master HTML file
......@@ -3,7 +3,16 @@ Devfs (Device File System) FAQ
Linux Devfs (Device File System) FAQ
Richard Gooch
21-DEC-2001
20-JAN-2002
Document languages:
-----------------------------------------------------------------------------
......@@ -69,6 +78,7 @@ Alternatives to devfs
What I don't like about devfs
How to report bugs
Strange kernel messages
Compilation problems with devfsd
Other resources
......@@ -837,8 +847,8 @@ device nodes. You can do this in your boot scripts. All your drivers
will now work as before.
Hopefully for most people devfs will have enough support so that they
can mount devfs directly over /dev without loosing most functionality
(i.e. loosing access to various devices). As of 22-JAN-1998 (devfs
can mount devfs directly over /dev without losing most functionality
(i.e. losing access to various devices). As of 22-JAN-1998 (devfs
patch version 10) I am now running this way. All the devices I have
are available in devfs, so I don't lose anything.
......@@ -1477,6 +1487,7 @@ Alternatives to devfs
What I don't like about devfs
How to report bugs
Strange kernel messages
Compilation problems with devfsd
......@@ -1677,7 +1688,7 @@ unallocated major numbers. USB will also need to push beyond the 8 bit
minor limitation
simplying increasing the device number size is insufficient. Apart
simply increasing the device number size is insufficient. Apart
from causing a lot of pain, it doesn't solve the management issues
of a /dev with thousands or more device nodes
......@@ -1828,6 +1839,29 @@ The solution is the same as above.
Compilation problems with devfsd
Usually, you can compile devfsd just by typing in
make in the source directory, followed by a make
install (as root). Sometimes, you may have problems, particularly
on broken configurations.
error messages relating to DEVFSD_NOTIFY_DELETE
This happened because you have an ancient set of kernel headers
installed in /usr/include/linux or /usr/src/linux.
Install kernel 2.4.10 or later. You may need to pass the
KERNEL_DIR variable to make (if you did not install
the new kernel sources as /usr/src/linux), or you may copy
the devfs_fs.h file in the kernel source tree into
/usr/include/linux.
-----------------------------------------------------------------------------
......@@ -1882,9 +1916,25 @@ This document has been translated into other languages.
The document master (in English) by rgooch@atnf.csiro.au is
available at
http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html
A Korean translation by viatoris@nownuri.net is available at
http://home.nownuri.net/~viatoris/devfs/devfs.html
http://home.nownuri.net/~viatoris/devfs/devfs.html
A newer version is under construcation at
http://viatoris.new21.org/devfs/devfs.html
-----------------------------------------------------------------------------
Most flags courtesy of ITA's
Flags of All Countries
used with permission.
......@@ -125,6 +125,13 @@ running once the system is up.
BusLogic= [HW,SCSI]
cachesize= [BUGS=ix86] Override level 2 CPU cache size detection.
Sometimes CPU hardware bugs make them report the cache
size incorrectly. The kernel will attempt work arounds
to fix known problems, but for some CPUs it is not
possible to determine what the correct size should be.
This option provides an override for these situations.
cdu31a= [HW,CD]
chandev= [HW,NET]
......
......@@ -104,6 +104,10 @@ Tips:
If you are sure the driver is not a hotplug driver then use only
__init/exit __initdata/exitdata.
Pointers to functions marked as __devexit must be created using
__devexit_p(function_name). That will generate the function
name or NULL if the __devexit function will be discarded.
2. How to find PCI devices manually (the old style)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
......@@ -412,6 +412,12 @@ W: http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html
L: linux-decnet-user@lists.sourceforge.net
S: Maintained
DELL LAPTOP SMM DRIVER
P: Massimo Dal Zotto
M: dz@debian.org
W: http://www.debian.org/~dz/i8k/
S: Maintained
DEVICE NUMBER REGISTRY
P: H. Peter Anvin
M: hpa@zytor.com
......@@ -926,6 +932,12 @@ L: linux-LVM@sistina.com
W: http://www.sistina.com/lvm
S: Maintained
LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers
P: Gerard Roudier
M: groudier@free.fr
L: linux-scsi@vger.kernel.org
S: Maintained
M68K
P: Jes Sorensen
M: jes@trained-monkey.org
......@@ -1010,6 +1022,11 @@ P: Andrew Veliath
M: andrewtv@usa.net
S: Maintained
NATSEMI ETHERNET DRIVER (DP8381x)
P: Tim Hockin
M: thockin@hockin.org
S: Maintained
NCP FILESYSTEM
P: Petr Vandrovec
M: vandrove@vc.cvut.cz
......@@ -1133,8 +1150,8 @@ L: linux-scsi@vger.rutgers.edu
S: Maintained
OPL3-SA2, SA3, and SAx DRIVER
P: Scott Murray
M: scott@spiteful.org
P: Zwane Mwaikambo
M: zwane@commfireservices.com
L: linux-sound@vger.kernel.org
S: Maintained
......
VERSION = 2
PATCHLEVEL = 5
SUBLEVEL = 3
EXTRAVERSION =-pre2
EXTRAVERSION =-pre3
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
# $Id: Makefile,v 1.22 2001/10/01 14:42:38 bjornw Exp $
# $Id: Makefile,v 1.3 2002/01/21 15:21:23 bjornw Exp $
# cris/Makefile
#
# This file is included by the global makefile so that you can add your own
......@@ -29,18 +29,17 @@ LD = if [ ! -e $(LD_SCRIPT).tmp -o $(LD_SCRIPT) -nt $(LD_SCRIPT).tmp ]; then \
-e s/@CONFIG_ETRAX_DRAM_SIZE_M@/$(CONFIG_ETRAX_DRAM_SIZE)/ \
< $(LD_SCRIPT) > $(LD_SCRIPT).tmp; \
else true; \
fi && $(CROSS_COMPILE)gcc -mlinux -nostdlib
fi && $(CROSS_COMPILE)ld -mcrislinux
LINKFLAGS = -mlinux -T $(LD_SCRIPT).tmp
LINKFLAGS = -T $(LD_SCRIPT).tmp
# objcopy is used to make binary images from the resulting linked file
OBJCOPY := $(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S
# normally, gcc on a linux box adds __linux__ but we do it "manually"
# -mlinux enables -march=v10, -fno-underscores among others
# -mlinux enables -march=v10, -fno-underscores, -D__linux__ among others
CFLAGS := $(CFLAGS) -mlinux -fno-strict-aliasing -pipe -D__linux__
CFLAGS := $(CFLAGS) -mlinux -pipe
ifdef CONFIG_ETRAX_KGDB
CFLAGS := $(subst -fomit-frame-pointer,,$(CFLAGS)) -g
......@@ -57,7 +56,7 @@ ifdef CONFIG_ETRAX_AXISFLASHMAP
# each others config options
SUBDIRS += arch/cris/boot/rescue
endif
CORE_FILES += arch/cris/kernel/kernel.o arch/cris/mm/mm.o
CORE_FILES := arch/cris/kernel/kernel.o arch/cris/mm/mm.o $(CORE_FILES)
DRIVERS += arch/cris/drivers/drivers.o
LIBGCC = $(shell $(CC) $(CFLAGS) -print-file-name=libgcc.a)
LIBS := $(TOPDIR)/arch/cris/lib/lib.a $(LIBS) $(TOPDIR)/arch/cris/lib/lib.a $(LIBGCC)
......
......@@ -3,6 +3,9 @@ Memory management for CRIS/MMU
HISTORY:
$Log: README.mm,v $
Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
Import of Linux 2.5.1
Revision 1.1 2000/07/10 16:25:21 bjornw
Initial revision
......
Creation of the self-extracting compressed kernel image (vmlinuz)
-----------------------------------------------------------------
$Id: README,v 1.1 2000/11/22 17:20:46 bjornw Exp $
$Id: README,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
This can be slightly confusing because it's a process with many steps.
......
/*
* misc.c
*
* $Id: misc.c,v 1.6 2001/04/09 10:00:21 starvik Exp $
* $Id: misc.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* This is a collection of several routines from gzip-1.0.3
* adapted for Linux.
......
/* $Id: head.S,v 1.8 2001/10/03 17:15:15 bjornw Exp $
/* $Id: head.S,v 1.2 2001/12/18 13:35:12 bjornw Exp $
*
* Rescue code, made to reside at the beginning of the
* flash-memory. when it starts, it checks a partition
......@@ -114,7 +114,7 @@
#define NOP_DI 0xf025050f
#define RAM_INIT_MAGIC 0x56902387
.text
;; This is the entry point of the rescue code
......@@ -144,7 +144,13 @@ jtcd: move.d [jumptarget], $r0
jumptarget:
.dword 0xffffffff ; can be overwritten later to insert new code
no_newjump:
no_newjump:
#ifdef CONFIG_ETRAX_ETHERNET
;; Start MII clock to make sure it is running when tranceiver is reset
move.d 0x3, $r0 ; enable = on, phy = mii_clk
move.d $r0, [R_NETWORK_GEN_CONFIG]
#endif
;; We need to setup the bus registers before we start using the DRAM
#include "../../lib/dram_init.S"
......
/* $Id: kimagerescue.S,v 1.5 2001/10/03 17:15:15 bjornw Exp $
/* $Id: kimagerescue.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* Rescue code to be prepended on a kimage and copied to the
* rescue serial port.
......
/* $Id: testrescue.S,v 1.3 2001/10/03 17:15:15 bjornw Exp $
/* $Id: testrescue.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* Simple testcode to download by the rescue block.
* Just lits some LEDs to show it was downloaded correctly.
......
......@@ -35,6 +35,9 @@ tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
bool 'Use kernel gdb debugger' CONFIG_ETRAX_KGDB
bool 'Enable Etrax100 watchdog' CONFIG_ETRAX_WATCHDOG
if [ "$CONFIG_ETRAX_WATCHDOG" = "y" ]; then
bool 'Disable watchdog during Oops printouts' CONFIG_ETRAX_WATCHDOG_NICE_DOGGY
fi
endmenu
......@@ -250,6 +253,6 @@ bool 'Kernel profiling support' CONFIG_PROFILE
if [ "$CONFIG_PROFILE" = "y" ]; then
int ' Profile shift count' CONFIG_PROFILE_SHIFT 2
fi
endmenu
source lib/Config.in
endmenu
......@@ -175,11 +175,11 @@ if [ "$CONFIG_ETRAX_GPIO" = "y" ]; then
hex ' PB user changeable bits mask' CONFIG_ETRAX_PB_CHANGEABLE_BITS FF
fi
bool 'ARTPEC-1 support' CONFIG_JULIETTE
if [ "$CONFIG_JULIETTE" = "y" ]; then
source arch/cris/drivers/juliette/Config.in
fi
#bool 'ARTPEC-1 support' CONFIG_JULIETTE
#
#if [ "$CONFIG_JULIETTE" = "y" ]; then
# source arch/cris/drivers/juliette/Config.in
#fi
bool 'USB host' CONFIG_ETRAX_USB_HOST
if [ "$CONFIG_ETRAX_USB_HOST" = "y" ]; then
......
......@@ -11,6 +11,17 @@
* partition split defined below.
*
* $Log: axisflashmap.c,v $
* Revision 1.2 2001/12/18 13:35:15 bjornw
* Applied the 2.4.13->2.4.16 CRIS patch to 2.5.1 (is a copy of 2.4.15).
*
* Revision 1.17 2001/11/12 19:42:38 pkj
* Fixed compiler warnings.
*
* Revision 1.16 2001/11/08 11:18:58 jonashg
* Always read from uncached address to avoid problems with flushing
* cachelines after write and MTD-erase. No performance loss have been
* seen yet.
*
* Revision 1.15 2001/10/19 12:41:04 jonashg
* Name of probe has changed in MTD.
*
......@@ -121,7 +132,7 @@ static __u32 flash_read32(struct map_info *map, unsigned long ofs)
static void flash_copy_from(struct map_info *map, void *to,
unsigned long from, ssize_t len)
{
memcpy(to, (void *)(FLASH_CACHED_ADDR + from), len);
memcpy(to, (void *)(FLASH_UNCACHED_ADDR + from), len);
}
static void flash_write8(struct map_info *map, __u8 d, unsigned long adr)
......@@ -237,7 +248,7 @@ init_axis_flash(void)
int use_default_ptable = 1; /* Until proven otherwise */
const char *pmsg = " /dev/flash%d at 0x%x, size 0x%x\n";
printk(KERN_NOTICE "Axis flash mapping: %x at %x\n",
printk(KERN_NOTICE "Axis flash mapping: %x at %lx\n",
WINDOW_SIZE, FLASH_CACHED_ADDR);
#ifdef CONFIG_MTD_CFI
......
include $(APPS)/Rules.elinux
all:
install: src/bluetooth.c include/btcommon.h
ln -sfn ../../arch/cris/drivers/bluetooth/include ../../../../include/linux/bluetooth
if ! grep arch/cris/drivers/bluetooth/src/Config.in ../Config.in; then \
echo '' >> ../Config.in; \
echo 'if [ "$$CONFIG_ETRAX_SERIAL" = "y" ]; then' >> ../Config.in; \
echo ' source arch/cris/drivers/bluetooth/src/Config.in' >> ../Config.in; \
echo 'fi' >> ../Config.in; \
fi
if ! grep bluetooth/src/bt.o ../Makefile; then \
perl -pi -e "s:include:obj-\\\$$(CONFIG_BLUETOOTH) += bluetooth/src/bt.o\nsubdir-\\\$$(CONFIG_BLUETOOTH) += bluetooth/src\n\ninclude:" ../Makefile; \
fi
clean:
src/bluetooth.c:
@echo "You must install the OpenBT src directory before install can be done here!"
@exit 1
include/btcommon.h:
@echo "You must install the OpenBT include directory before install can be done here!"
@exit 1
......@@ -7,6 +7,9 @@
*! Functions exported: ds1302_readreg, ds1302_writereg, ds1302_init, get_rtc_status
*!
*! $Log: ds1302.c,v $
*! Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
*! Import of Linux 2.5.1
*!
*! Revision 1.11 2001/06/14 12:35:52 jonashg
*! The ATA hack is back. It is unfortunately the only way to set g27 to output.
*!
......@@ -82,7 +85,7 @@
*!
*! (C) Copyright 1999, 2000, 2001 Axis Communications AB, LUND, SWEDEN
*!
*! $Id: ds1302.c,v 1.11 2001/06/14 12:35:52 jonashg Exp $
*! $Id: ds1302.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*!
*!***************************************************************************/
......
......@@ -20,6 +20,9 @@
*! in the spin-lock.
*!
*! $Log: eeprom.c,v $
*! Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
*! Import of Linux 2.5.1
*!
*! Revision 1.8 2001/06/15 13:24:29 jonashg
*! * Added verification of pointers from userspace in read and write.
*! * Made busy counter volatile.
......
This diff is collapsed.
......@@ -10,6 +10,9 @@
* Author: Bjorn Wesen
*
* $Log: kiobuftest.c,v $
* Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
* Import of Linux 2.5.1
*
* Revision 1.2 2001/02/27 13:52:50 bjornw
* malloc.h -> slab.h
*
......
/* $Id: gpio.c,v 1.11 2001/10/30 14:39:12 johana Exp $
/* $Id: gpio.c,v 1.2 2001/12/18 13:35:15 bjornw Exp $
*
* Etrax general port I/O device
*
......@@ -9,6 +9,13 @@
* Johan Adolfsson (read/set directions, write)
*
* $Log: gpio.c,v $
* Revision 1.2 2001/12/18 13:35:15 bjornw
* Applied the 2.4.13->2.4.16 CRIS patch to 2.5.1 (is a copy of 2.4.15).
*
* Revision 1.12 2001/11/12 19:42:15 pkj
* * Corrected return values from gpio_leds_ioctl().
* * Fixed compiler warnings.
*
* Revision 1.11 2001/10/30 14:39:12 johana
* Added D() around gpio_write printk.
*
......@@ -74,7 +81,9 @@
static char gpio_name[] = "etrax gpio";
#if 0
static wait_queue_head_t *gpio_wq;
#endif
static int gpio_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg);
......@@ -143,7 +152,7 @@ gpio_poll(struct file *filp,
{
/* TODO poll on alarms! */
#if 0
if(!ANYTHING_WANTED) {
if (!ANYTHING_WANTED) {
D(printk("gpio_select sleeping task\n"));
select_wait(&gpio_wq, table);
return 0;
......@@ -160,16 +169,14 @@ static ssize_t gpio_write(struct file * file, const char * buf, size_t count,
unsigned char data, clk_mask, data_mask, write_msb;
unsigned long flags;
ssize_t retval = count;
if (verify_area(VERIFY_READ, buf, count))
{
if (verify_area(VERIFY_READ, buf, count)) {
return -EFAULT;
}
clk_mask = priv->clk_mask;
data_mask = priv->data_mask;
/* It must have been configured using the IO_CFG_WRITE_MODE */
/* Perhaps a better error code? */
if (clk_mask == 0 || data_mask == 0)
{
if (clk_mask == 0 || data_mask == 0) {
return -EPERM;
}
write_msb = priv->write_msb;
......@@ -178,7 +185,7 @@ static ssize_t gpio_write(struct file * file, const char * buf, size_t count,
int i;
data = *buf++;
if (priv->write_msb) {
for (i = 7; i>=0;i--) {
for (i = 7; i >= 0;i--) {
save_flags(flags); cli();
*priv->port = *priv->shadow &= ~clk_mask;
if (data & 1<<i)
......@@ -190,7 +197,7 @@ static ssize_t gpio_write(struct file * file, const char * buf, size_t count,
restore_flags(flags);
}
} else {
for (i = 0; i<=7;i++) {
for (i = 0; i <= 7;i++) {
save_flags(flags); cli();
*priv->port = *priv->shadow &= ~clk_mask;
if (data & 1<<i)
......@@ -212,13 +219,13 @@ gpio_open(struct inode *inode, struct file *filp)
struct gpio_private *priv;
int p = MINOR(inode->i_rdev);
if(p >= NUM_PORTS && p != LEDS)
if (p >= NUM_PORTS && p != LEDS)
return -EINVAL;
priv = (struct gpio_private *)kmalloc(sizeof(struct gpio_private),
GFP_KERNEL);
if(!priv)
if (!priv)
return -ENOMEM;
priv->minor = p;
......@@ -254,10 +261,10 @@ gpio_release(struct inode *inode, struct file *filp)
/* unlink from alarmlist and free the private structure */
if(p == todel) {
if (p == todel) {
alarmlist = todel->next;
} else {
while(p->next != todel)
while (p->next != todel)
p = p->next;
p->next = todel->next;
}
......@@ -280,7 +287,7 @@ gpio_ioctl(struct inode *inode, struct file *file,
{
unsigned long flags;
struct gpio_private *priv = (struct gpio_private *)file->private_data;
if(_IOC_TYPE(cmd) != ETRAXGPIO_IOCTYPE) {
if (_IOC_TYPE(cmd) != ETRAXGPIO_IOCTYPE) {
return -EINVAL;
}
......@@ -353,7 +360,7 @@ gpio_ioctl(struct inode *inode, struct file *file,
if (!((priv->clk_mask & priv->changeable_bits) &&
(priv->data_mask & priv->changeable_bits) &&
(priv->clk_mask & *priv->dir_shadow) &&
(priv->data_mask & *priv->dir_shadow)) )
(priv->data_mask & *priv->dir_shadow)))
{
priv->clk_mask = 0;
priv->data_mask = 0;
......@@ -361,7 +368,7 @@ gpio_ioctl(struct inode *inode, struct file *file,
}
break;
default:
if(priv->minor == LEDS)
if (priv->minor == LEDS)
return gpio_leds_ioctl(cmd, arg);
else
return -EINVAL;
......@@ -375,6 +382,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
{
unsigned char green;
unsigned char red;
switch (_IOC_NR(cmd)) {
case IO_LEDACTIVE_SET:
green = ((unsigned char) arg) & 1;
......@@ -382,14 +390,20 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
LED_ACTIVE_SET_G(green);
LED_ACTIVE_SET_R(red);
break;
case IO_LED_SETBIT:
LED_BIT_SET(arg);
break;
case IO_LED_CLRBIT:
LED_BIT_CLR(arg);
case IO_LED_SETBIT:
LED_BIT_SET(arg);
break;
case IO_LED_CLRBIT:
LED_BIT_CLR(arg);
break;
default:
return -EINVAL;
}
return 0;
}
struct file_operations gpio_fops = {
......@@ -406,30 +420,32 @@ struct file_operations gpio_fops = {
static __init int
gpio_init(void)
{
int res,i;
extern void init_ioremap(void);
int res;
#if defined (CONFIG_ETRAX_CSP0_LEDS)
int i;
#endif
/* do the formalities */
res = register_chrdev(GPIO_MAJOR, gpio_name, &gpio_fops);
if(res < 0) {
if (res < 0) {
printk(KERN_ERR "gpio: couldn't get a major number.\n");
return res;
}
/* Clear all leds */
#if defined (CONFIG_ETRAX_CSP0_LEDS) || defined (CONFIG_ETRAX_PA_LEDS) || defined (CONFIG_ETRAX_PB_LEDS)
init_ioremap();
LED_NETWORK_SET(0);
LED_ACTIVE_SET(0);
LED_DISK_READ(0);
LED_DISK_WRITE(0);
#if defined (CONFIG_ETRAX_CSP0_LEDS) || defined (CONFIG_ETRAX_PA_LEDS) || defined (CONFIG_ETRAX_PB_LEDS)
init_ioremap();
LED_NETWORK_SET(0);
LED_ACTIVE_SET(0);
LED_DISK_READ(0);
LED_DISK_WRITE(0);
#if defined (CONFIG_ETRAX_CSP0_LEDS)
for( i = 0; i < 32; i ++)
{
LED_BIT_SET(i);
}
for (i = 0; i < 32; i++) {
LED_BIT_SET(i);
}
#endif
#endif
......
......@@ -12,6 +12,9 @@
*! don't use PB_I2C if DS1302 uses same bits,
*! use PB.
*! $Log: i2c.c,v $
*! Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
*! Import of Linux 2.5.1
*!
*! Revision 1.7 2001/04/04 13:11:36 markusl
*! Updated according to review remarks
*!
......@@ -43,7 +46,7 @@
*! (C) Copyright 1999, 2000, 2001 Axis Communications AB, LUND, SWEDEN
*!
*!***************************************************************************/
/* $Id: i2c.c,v 1.7 2001/04/04 13:11:36 markusl Exp $ */
/* $Id: i2c.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $ */
/****************** INCLUDE FILES SECTION ***********************************/
#include <linux/module.h>
......
/* $Id: i2c.h,v 1.3 2001/03/19 12:43:01 markusl Exp $ */
/* $Id: i2c.h,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $ */
/* High level I2C actions */
int i2c_writereg(unsigned char theSlave, unsigned char theReg, unsigned char theValue);
......
/* $Id: ide.c,v 1.19 2001/05/09 12:53:16 johana Exp $
/* $Id: ide.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* Etrax specific IDE functions, like init and PIO-mode setting etc.
* Almost the entire ide.c is used for the rest of the Etrax ATA driver.
......@@ -8,6 +8,9 @@
* Mikael Starvik (pio setup stuff)
*
* $Log: ide.c,v $
* Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
* Import of Linux 2.5.1
*
* Revision 1.19 2001/05/09 12:53:16 johana
* Added #include <asm/dma.h>
*
......
#!/usr/bin/perl -w
# $Id: bintocarr.pl,v 1.4 2001/08/08 08:18:13 bjarne Exp $
# $Id: bintocarr.pl,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
# Copy of mkjulbin.pl made by Olof
# convert a binary stdin to a C-file containing a char array of the input
# first argument is the symbol name
......
;; $Id: e100lpslave.S,v 1.3 2001/06/21 16:55:26 olof Exp $
;; $Id: e100lpslave.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
;;
;; Etrax100 slave network<->parport forwarder
;;
......
/* $Id: e100lpslavenet.c,v 1.4 2001/06/21 16:55:26 olof Exp $
/* $Id: e100lpslavenet.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* e100lpslavenet.c: A network driver for the ETRAX 100LX slave controller.
*
......@@ -7,6 +7,9 @@
* The outline of this driver comes from skeleton.c.
*
* $Log: e100lpslavenet.c,v $
* Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
* Import of Linux 2.5.1
*
* Revision 1.4 2001/06/21 16:55:26 olof
* Minimized par port setup time to gain bandwidth
*
......
/* $Id: parport.c,v 1.8 2001/09/26 11:51:52 bjornw Exp $
/* $Id: parport.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* Elinux parallel port driver
* NOTE!
......
This diff is collapsed.
......@@ -23,81 +23,90 @@
* For definitions of the flags field, see tty.h
*/
#define SERIAL_RECV_DESCRIPTORS 8
struct e100_serial {
int baud;
volatile u8 *port; /* R_SERIALx_CTRL */
u32 irq; /* bitnr in R_IRQ_MASK2 for dmaX_descr */
volatile u8 *oclrintradr; /* adr to R_DMA_CHx_CLR_INTR, output */
volatile u32 *ofirstadr; /* adr to R_DMA_CHx_FIRST, output */
volatile u8 *ocmdadr; /* adr to R_DMA_CHx_CMD, output */
const volatile u8 *ostatusadr; /* adr to R_DMA_CHx_STATUS, output */
volatile u32 *ohwswadr; /* adr to R_DMA_CHx_HWSW, output */
volatile u8 *iclrintradr; /* adr to R_DMA_CHx_CLR_INTR, input */
volatile u32 *ifirstadr; /* adr to R_DMA_CHx_FIRST, input */
volatile u8 *icmdadr; /* adr to R_DMA_CHx_CMD, input */
const volatile u8 *istatusadr; /* adr to R_DMA_CHx_STATUS, input */
volatile u32 *ihwswadr; /* adr to R_DMA_CHx_HWSW, input */
int flags; /* defined in tty.h */
u8 rx_ctrl; /* shadow for R_SERIALx_REC_CTRL */
u8 tx_ctrl; /* shadow for R_SERIALx_TR_CTRL */
u8 iseteop; /* bit number for R_SET_EOP for the input dma */
int enabled; /* Set to 1 if the port is enabled in HW config */
int baud;
volatile u8 *port; /* R_SERIALx_CTRL */
u32 irq; /* bitnr in R_IRQ_MASK2 for dmaX_descr */
/* Output registers */
volatile u8 *oclrintradr; /* adr to R_DMA_CHx_CLR_INTR */
volatile u32 *ofirstadr; /* adr to R_DMA_CHx_FIRST */
volatile u8 *ocmdadr; /* adr to R_DMA_CHx_CMD */
const volatile u8 *ostatusadr; /* adr to R_DMA_CHx_STATUS */
volatile u32 *ohwswadr; /* adr to R_DMA_CHx_HWSW */
volatile u32 *odescradr; /* adr to R_DMA_CHx_DESCR */
/* Input registers */
volatile u8 *iclrintradr; /* adr to R_DMA_CHx_CLR_INTR */
volatile u32 *ifirstadr; /* adr to R_DMA_CHx_FIRST */
volatile u8 *icmdadr; /* adr to R_DMA_CHx_CMD */
const volatile u8 *istatusadr; /* adr to R_DMA_CHx_STATUS */
volatile u32 *ihwswadr; /* adr to R_DMA_CHx_HWSW */
volatile u32 *idescradr; /* adr to R_DMA_CHx_DESCR */
int flags; /* defined in tty.h */
u8 rx_ctrl; /* shadow for R_SERIALx_REC_CTRL */
u8 tx_ctrl; /* shadow for R_SERIALx_TR_CTRL */
u8 iseteop; /* bit number for R_SET_EOP for the input dma */
int enabled; /* Set to 1 if the port is enabled in HW config */
/* end of fields defined in rs_table[] in .c-file */
int uses_dma; /* Set to 1 if DMA should be used */
unsigned char fifo_didmagic; /* a fifo eop has been forced */
/* end of fields defined in rs_table[] in .c-file */
struct etrax_dma_descr tr_descr, rec_descr;
int uses_dma; /* Set to 1 if DMA should be used */
unsigned char forced_eop; /* a fifo eop has been forced */
int fifo_magic; /* fifo amount - bytes left in dma buffer */
struct etrax_dma_descr tr_descr;
struct etrax_dma_descr rec_descr[SERIAL_RECV_DESCRIPTORS];
int cur_rec_descr;
volatile int tr_running; /* 1 if output is running */
volatile int tr_running; /* 1 if output is running */
struct tty_struct *tty;
struct tty_struct *tty;
int read_status_mask;
int ignore_status_mask;
int x_char; /* xon/xoff character */
int close_delay;
unsigned short closing_wait;
unsigned short closing_wait2;
unsigned short closing_wait;
unsigned short closing_wait2;
unsigned long event;
unsigned long last_active;
int line;
int type; /* PORT_ETRAX */
int type; /* PORT_ETRAX */
int count; /* # of fd on device */
int blocked_open; /* # of blocked opens */
long session; /* Session of opening process */
long pgrp; /* pgrp of opening process */
struct circ_buf xmit;
struct circ_buf xmit;
struct circ_buf recv;
unsigned char *flag_buf;
struct tq_struct tqueue;
struct async_icount icount; /* error-statistics etc.*/
struct termios normal_termios;
struct termios callout_termios;
struct async_icount icount; /* error-statistics etc.*/
struct termios normal_termios;
struct termios callout_termios;
#ifdef DECLARE_WAITQUEUE
wait_queue_head_t open_wait;
wait_queue_head_t close_wait;
#else
struct wait_queue *open_wait;
struct wait_queue *close_wait;
wait_queue_head_t open_wait;
wait_queue_head_t close_wait;
#else
struct wait_queue *open_wait;
struct wait_queue *close_wait;
#endif
unsigned long char_time_usec; /* The time for 1 char, in usecs */
unsigned long last_tx_active_usec; /* Last tx usec in the jiffies */
unsigned long last_tx_active; /* Last tx time in jiffies */
unsigned long last_rx_active_usec; /* Last rx usec in the jiffies */
unsigned long last_rx_active; /* Last rx time in jiffies */
unsigned long char_time_usec; /* The time for 1 char, in usecs */
unsigned long last_tx_active_usec; /* Last tx usec in the jiffies */
unsigned long last_tx_active; /* Last tx time in jiffies */
unsigned long last_rx_active_usec; /* Last rx usec in the jiffies */
unsigned long last_rx_active; /* Last rx time in jiffies */
int break_detected_cnt;
int errorcode;
int break_detected_cnt;
int errorcode;
#ifdef CONFIG_RS485
struct rs485_control rs485; /* RS-485 support */
struct rs485_control rs485; /* RS-485 support */
#endif
};
......@@ -116,4 +125,4 @@ struct e100_serial {
#endif /* __KERNEL__ */
#endif /* !(_ETRAX_SERIAL_H) */
#endif /* !_ETRAX_SERIAL_H */
......@@ -711,7 +711,7 @@ static void start_dma(struct sync_port* port, const char* data, int count)
{
port->out_descr.hw_len = 0;
port->out_descr.next = 0;
port->out_descr.ctrl = d_int | d_eol | d_eop;
port->out_descr.ctrl = d_int | d_eol | d_eop | d_wait;
port->out_descr.sw_len = count;
port->out_descr.buf = virt_to_phys(port->out_buffer);
port->out_descr.status = 0;
......
......@@ -192,15 +192,15 @@ static USB_EP_Desc_t TxBulkEPList[NBR_OF_EP_DESC] __attribute__ ((aligned (4)));
static USB_EP_Desc_t TxIntrEPList[MAX_INTR_INTERVAL] __attribute__ ((aligned (4)));
static USB_SB_Desc_t TxIntrSB_zout __attribute__ ((aligned (4)));
static urb_t *URB_List[NBR_OF_EP_DESC];
static struct urb *URB_List[NBR_OF_EP_DESC];
static kmem_cache_t *usb_desc_cache;
static struct usb_bus *etrax_usb_bus;
static void dump_urb (struct urb *urb);
static void init_rx_buffers(void);
static int etrax_rh_unlink_urb (urb_t *urb);
static void etrax_rh_send_irq(urb_t *urb);
static void etrax_rh_init_int_timer(urb_t *urb);
static int etrax_rh_unlink_urb (struct urb *urb);
static void etrax_rh_send_irq(struct urb *urb);
static void etrax_rh_init_int_timer(struct urb *urb);
static void etrax_rh_int_timer_do(unsigned long ptr);
static void etrax_usb_setup_epid(char epid, char devnum, char endpoint,
......@@ -210,13 +210,13 @@ static int etrax_usb_allocate_epid(void);
static void etrax_usb_free_epid(char epid);
static void cleanup_sb(USB_SB_Desc_t *sb);
static int etrax_usb_do_ctrl_hw_add(urb_t *urb, char epid, char maxlen);
static int etrax_usb_do_bulk_hw_add(urb_t *urb, char epid, char maxlen);
static int etrax_usb_do_ctrl_hw_add(struct urb *urb, char epid, char maxlen);
static int etrax_usb_do_bulk_hw_add(struct urb *urb, char epid, char maxlen);
static int etrax_usb_submit_ctrl_urb(urb_t *urb);
static int etrax_usb_submit_ctrl_urb(struct urb *urb);
static int etrax_usb_submit_urb(urb_t *urb);
static int etrax_usb_unlink_urb(urb_t *urb);
static int etrax_usb_submit_urb(struct urb *urb);
static int etrax_usb_unlink_urb(struct urb *urb);
static int etrax_usb_get_frame_number(struct usb_device *usb_dev);
static int etrax_usb_allocate_dev(struct usb_device *usb_dev);
static int etrax_usb_deallocate_dev(struct usb_device *usb_dev);
......@@ -225,7 +225,7 @@ static void etrax_usb_tx_interrupt(int irq, void *vhc, struct pt_regs *regs);
static void etrax_usb_rx_interrupt(int irq, void *vhc, struct pt_regs *regs);
static void etrax_usb_hc_intr_top_half(int irq, void *vhc, struct pt_regs *regs);
static int etrax_rh_submit_urb (urb_t *urb);
static int etrax_rh_submit_urb (struct urb *urb);
static int etrax_usb_hc_init(void);
static void etrax_usb_hc_cleanup(void);
......@@ -421,7 +421,7 @@ static void init_tx_intr_ep(void)
}
static int etrax_usb_unlink_intr_urb(urb_t *urb)
static int etrax_usb_unlink_intr_urb(struct urb *urb)
{
struct usb_device *usb_dev = urb->dev;
etrax_hc_t *hc = usb_dev->bus->hcpriv;
......@@ -512,7 +512,7 @@ void etrax_usb_do_intr_recover(int epid)
} while (tmp_ep != first_ep);
}
static int etrax_usb_submit_intr_urb(urb_t *urb)
static int etrax_usb_submit_intr_urb(struct urb *urb)
{
USB_EP_Desc_t *tmp_ep;
USB_EP_Desc_t *first_ep;
......@@ -643,7 +643,7 @@ static int etrax_usb_submit_intr_urb(urb_t *urb)
static int handle_intr_transfer_attn(char epid, int status)
{
urb_t *old_urb;
struct urb *old_urb;
DBFENTER;
......@@ -696,7 +696,7 @@ static int handle_intr_transfer_attn(char epid, int status)
DBFEXIT;
}
static int etrax_rh_unlink_urb (urb_t *urb)
static int etrax_rh_unlink_urb (struct urb *urb)
{
etrax_hc_t *hc;
......@@ -713,7 +713,7 @@ static int etrax_rh_unlink_urb (urb_t *urb)
return 0;
}
static void etrax_rh_send_irq(urb_t *urb)
static void etrax_rh_send_irq(struct urb *urb)
{
__u16 data = 0;
etrax_hc_t *hc = urb->dev->bus->hcpriv;
......@@ -746,7 +746,7 @@ static void etrax_rh_send_irq(urb_t *urb)
/* DBFEXIT; */
}
static void etrax_rh_init_int_timer(urb_t *urb)
static void etrax_rh_init_int_timer(struct urb *urb)
{
etrax_hc_t *hc;
......@@ -765,12 +765,12 @@ static void etrax_rh_init_int_timer(urb_t *urb)
static void etrax_rh_int_timer_do(unsigned long ptr)
{
urb_t *urb;
struct urb *urb;
etrax_hc_t *hc;
/* DBFENTER; */
urb = (urb_t*)ptr;
urb = (struct urb *)ptr;
hc = urb->dev->bus->hcpriv;
if (hc->rh.send) {
......@@ -904,7 +904,7 @@ static int etrax_usb_allocate_epid(void)
return -1;
}
static int etrax_usb_submit_bulk_urb(urb_t *urb)
static int etrax_usb_submit_bulk_urb(struct urb *urb)
{
char epid;
char devnum;
......@@ -912,7 +912,7 @@ static int etrax_usb_submit_bulk_urb(urb_t *urb)
char maxlen;
char slow;
urb_t *tmp_urb;
struct urb *tmp_urb;
etrax_urb_priv_t *urb_priv;
unsigned long flags;
......@@ -962,7 +962,7 @@ static int etrax_usb_submit_bulk_urb(urb_t *urb)
return 0;
}
static int etrax_usb_do_bulk_hw_add(urb_t *urb, char epid, char maxlen)
static int etrax_usb_do_bulk_hw_add(struct urb *urb, char epid, char maxlen)
{
USB_SB_Desc_t *sb_desc_1;
......@@ -1080,7 +1080,7 @@ static int etrax_usb_do_bulk_hw_add(urb_t *urb, char epid, char maxlen)
static int handle_bulk_transfer_attn(char epid, int status)
{
urb_t *old_urb;
struct urb *old_urb;
etrax_urb_priv_t *hc_priv;
unsigned long flags;
......@@ -1159,7 +1159,7 @@ static int handle_bulk_transfer_attn(char epid, int status)
/* ---------------------------------------------------------------------------- */
static int etrax_usb_submit_ctrl_urb(urb_t *urb)
static int etrax_usb_submit_ctrl_urb(struct urb *urb)
{
char epid;
char devnum;
......@@ -1167,7 +1167,7 @@ static int etrax_usb_submit_ctrl_urb(urb_t *urb)
char maxlen;
char slow;
urb_t *tmp_urb;
struct urb *tmp_urb;
etrax_urb_priv_t *urb_priv;
unsigned long flags;
......@@ -1217,7 +1217,7 @@ static int etrax_usb_submit_ctrl_urb(urb_t *urb)
return 0;
}
static int etrax_usb_do_ctrl_hw_add(urb_t *urb, char epid, char maxlen)
static int etrax_usb_do_ctrl_hw_add(struct urb *urb, char epid, char maxlen)
{
USB_SB_Desc_t *sb_desc_1;
USB_SB_Desc_t *sb_desc_2;
......@@ -1358,7 +1358,7 @@ static int etrax_usb_do_ctrl_hw_add(urb_t *urb, char epid, char maxlen)
DBFEXIT;
}
static int etrax_usb_submit_urb(urb_t *urb)
static int etrax_usb_submit_urb(struct urb *urb)
{
etrax_hc_t *hc;
int rval = -EINVAL;
......@@ -1403,7 +1403,7 @@ static int etrax_usb_submit_urb(urb_t *urb)
return rval;
}
static int etrax_usb_unlink_urb(urb_t *urb)
static int etrax_usb_unlink_urb(struct urb *urb)
{
etrax_hc_t *hc = urb->dev->bus->hcpriv;
int epid;
......@@ -1448,7 +1448,7 @@ static int etrax_usb_unlink_urb(urb_t *urb)
cli();
for (epid = 0; epid < 32; epid++) {
urb_t *u = URB_List[epid];
struct urb *u = URB_List[epid];
pos = 0;
for (; u; u = u->next) {
......@@ -1474,7 +1474,7 @@ static int etrax_usb_unlink_urb(urb_t *urb)
URB_List[epid] = u->next;
} else {
urb_t *up;
struct urb *up;
for (up = URB_List[epid]; up->next != u; up = up->next);
up->next = u->next;
}
......@@ -1522,7 +1522,7 @@ static void etrax_usb_tx_interrupt(int irq, void *vhc, struct pt_regs *regs)
etrax_hc_t *hc = (etrax_hc_t *)vhc;
int epid;
char eol;
urb_t *urb;
struct urb *urb;
USB_EP_Desc_t *tmp_ep;
USB_SB_Desc_t *tmp_sb;
......@@ -1551,7 +1551,7 @@ static void etrax_usb_tx_interrupt(int irq, void *vhc, struct pt_regs *regs)
static void etrax_usb_rx_interrupt(int irq, void *vhc, struct pt_regs *regs)
{
int epid = 0;
urb_t *urb;
struct urb *urb;
etrax_urb_priv_t *urb_priv;
*R_DMA_CH9_CLR_INTR = IO_STATE(R_DMA_CH9_CLR_INTR, clr_eop, do);
......@@ -1649,7 +1649,7 @@ static void cleanup_sb(USB_SB_Desc_t *sb)
static int handle_control_transfer_attn(char epid, int status)
{
urb_t *old_urb;
struct urb *old_urb;
etrax_urb_priv_t *hc_priv;
DBFENTER;
......@@ -1710,7 +1710,7 @@ static int handle_control_transfer_attn(char epid, int status)
static void etrax_usb_hc_intr_bottom_half(void *data)
{
struct usb_reg_context *reg = (struct usb_reg_context *)data;
urb_t *old_urb;
struct urb *old_urb;
int error_code;
int epid;
......@@ -1976,7 +1976,7 @@ static void etrax_usb_hc_intr_top_half(int irq, void *vhc, struct pt_regs *regs)
DBFEXIT;
}
static int etrax_rh_submit_urb(urb_t *urb)
static int etrax_rh_submit_urb(struct urb *urb)
{
struct usb_device *usb_dev = urb->dev;
etrax_hc_t *hc = usb_dev->bus->hcpriv;
......
# $Id: Makefile,v 1.9 2001/10/22 13:10:21 pkj Exp $
# $Id: Makefile,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
#
# Makefile for the linux kernel.
#
......
......@@ -12,6 +12,9 @@
* init_etrax_debug()
*
* $Log: debugport.c,v $
* Revision 1.2 2002/01/21 15:21:50 bjornw
* Update for kdev_t changes
*
* Revision 1.6 2001/04/17 13:58:39 orjanf
* * Renamed CONFIG_KGDB to CONFIG_ETRAX_KGDB.
*
......@@ -214,7 +217,7 @@ enableDebugIRQ(void)
static kdev_t
console_device(struct console *c)
{
return MKDEV(TTY_MAJOR, 64 + c->index);
return mk_kdev(TTY_MAJOR, 64 + c->index);
}
static int __init
......@@ -224,17 +227,16 @@ console_setup(struct console *co, char *options)
}
static struct console sercons = {
"ttyS",
console_write,
NULL,
console_device,
NULL,
NULL,
console_setup,
CON_PRINTBUFFER,
DEBUG_PORT_IDX,
0,
NULL
name: "ttyS",
write: console_write,
read: NULL,
device: console_device,
unblank: NULL,
setup: console_setup,
flags: CON_PRINTBUFFER,
index: DEBUG_PORT_IDX,
cflag: 0,
next: NULL
};
/*
......
/* $Id: entry.S,v 1.35 2001/10/30 17:10:15 bjornw Exp $
/* $Id: entry.S,v 1.3 2002/01/21 15:22:20 bjornw Exp $
*
* linux/arch/cris/entry.S
*
......@@ -7,6 +7,18 @@
* Authors: Bjorn Wesen (bjornw@axis.com)
*
* $Log: entry.S,v $
* Revision 1.3 2002/01/21 15:22:20 bjornw
* NICE_DOGGY fix from 2.4 arch/cris
*
* Revision 1.37 2001/12/07 17:03:55 bjornw
* Call a c-hook called watchdog_bite_hook instead of show_registers directly
*
* Revision 1.36 2001/11/22 13:36:36 bjornw
* * In ret_from_intr, check regs->dccr for usermode reentrance instead of
* DCCR explicitely (because the latter might not reflect current reality)
* * In mmu_bus_fault, set $r9 _after_ calling the C-code instead of before
* since $r9 is call-clobbered and is potentially needed afterwards
*
* Revision 1.35 2001/10/30 17:10:15 bjornw
* Add some syscalls
*
......@@ -217,8 +229,11 @@ _handle_softirq:
ret_from_intr:
;; check for resched only if we're going back to user-mode
move $ccr, $r0
;; this test matches the user_regs(regs) macro
;; we cannot simply test $dccr, because that does not necessarily
;; reflect what mode we'll return into.
move.d [$sp + LDCCR], $r0; regs->dccr
btstq 8, $r0 ; U-flag
bpl _Rexit ; go back directly
nop
......@@ -468,8 +483,6 @@ mmu_bus_fault:
moveq 1, $r10
push $r10 ; frametype == 1, BUSFAULT frame type
moveq 0, $r9 ; busfault is equivalent to an irq
move.d $sp, $r10 ; pt_regs argument to handle_mmu_bus_fault
jsr handle_mmu_bus_fault ; in arch/cris/mm/fault.c
......@@ -479,6 +492,8 @@ mmu_bus_fault:
;; process due to a SEGV, scheduled due to a page blocking or
;; whatever.
moveq 0, $r9 ; busfault is equivalent to an irq
ba ret_from_intr
nop
......@@ -559,6 +574,17 @@ _killed_by_death:
;; We'll see this in ksymoops dumps.
Watchdog_bite:
#ifdef CONFIG_ETRAX_WATCHDOG_NICE_DOGGY
;; We just restart the watchdog here to be sure we dont get
;; hit while printing the watchdogmsg below
;; This restart is compatible with the rest of the C-code, so
;; the C-code can keep restarting the watchdog after this point.
;; The non-NICE_DOGGY code below though, disables the possibility
;; to restart since it changes the watchdog key, to avoid any
;; buggy loops etc. keeping the watchdog alive after this.
jsr reset_watchdog
#else
;; We need to extend the 3.3ms after the NMI at watchdog bite, so we have
;; time for an oops-dump over a 115k2 serial wire. Another 100ms should do.
......@@ -576,6 +602,8 @@ Watchdog_bite:
| IO_STATE (R_WATCHDOG, enable, start), $r10
move.d $r10, [$r11]
#endif
;; Note that we don't do "setf m" here (or after two necessary NOPs),
;; since *not* doing that saves us from re-entrancy checks. We don't want
;; to get here again due to possible subsequent NMIs; we want the watchdog
......@@ -585,7 +613,7 @@ Watchdog_bite:
jsr printk
move.d $sp, $r10
jsr show_registers
jsr watchdog_bite_hook
;; This nop is here so we see the "Watchdog_bite" label in ksymoops dumps
;; rather than "spurious_interrupt".
......
/* $Id: head.S,v 1.41 2001/10/29 14:55:58 pkj Exp $
/* $Id: head.S,v 1.2 2001/12/18 13:35:19 bjornw Exp $
*
* Head of the kernel - alter with care
*
......@@ -7,6 +7,15 @@
* Authors: Bjorn Wesen (bjornw@axis.com)
*
* $Log: head.S,v $
* Revision 1.2 2001/12/18 13:35:19 bjornw
* Applied the 2.4.13->2.4.16 CRIS patch to 2.5.1 (is a copy of 2.4.15).
*
* Revision 1.43 2001/11/08 15:09:43 starvik
* Only start MII clock if Ethernet is configured
*
* Revision 1.42 2001/11/08 14:37:34 starvik
* Start MII clock early to make sure that it is running at tranceiver reset
*
* Revision 1.41 2001/10/29 14:55:58 pkj
* Corrected pa$r0 to par0.
*
......@@ -156,7 +165,10 @@
#define CRAMFS_MAGIC 0x28cd3d45
#define RAM_INIT_MAGIC 0x56902387
#define START_ETHERNET_CLOCK IO_STATE(R_NETWORK_GEN_CONFIG, enable, on) |\
IO_STATE(R_NETWORK_GEN_CONFIG, phy, mii_clk)
;; exported symbols
.globl etrax_irv
......@@ -301,6 +313,12 @@ _inflash0:
;; after init.
.section ".text.init"
_inflash:
#ifdef CONFIG_ETRAX_ETHERNET
;; Start MII clock to make sure it is running when tranceiver is reset
move.d START_ETHERNET_CLOCK, $r0
move.d $r0, [R_NETWORK_GEN_CONFIG]
#endif
;; We need to initialze DRAM registers before we start using the DRAM
cmp.d RAM_INIT_MAGIC, $r8 ; Already initialized?
......
/* $Id: irq.c,v 1.17 2001/07/25 16:08:01 bjornw Exp $
/* $Id: irq.c,v 1.2 2001/12/18 13:35:20 bjornw Exp $
*
* linux/arch/cris/kernel/irq.c
*
......@@ -138,7 +138,7 @@ set_break_vector(int n, irqvectptr addr)
/* IRQ0 and 1 are special traps */
void hwbreakpoint(void);
void IRQ1_interrupt(void);
BUILD_IRQ(2, 0x04) /* the timer interrupt */
BUILD_TIMER_IRQ(2, 0x04) /* the timer interrupt is somewhat special */
BUILD_IRQ(3, 0x08)
BUILD_IRQ(4, 0x10)
BUILD_IRQ(5, 0x20)
......
......@@ -18,6 +18,9 @@
*! Jul 21 1999 Bjorn Wesen eLinux port
*!
*! $Log: kgdb.c,v $
*! Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
*! Import of Linux 2.5.1
*!
*! Revision 1.6 2001/10/09 13:10:03 matsfg
*! Added $ on registers and removed some underscores
*!
......@@ -55,7 +58,7 @@
*!
*!---------------------------------------------------------------------------
*!
*! $Id: kgdb.c,v 1.6 2001/10/09 13:10:03 matsfg Exp $
*! $Id: kgdb.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*!
*! (C) Copyright 1999, Axis Communications AB, LUND, SWEDEN
*!
......
......@@ -23,34 +23,45 @@
extern void dump_thread(struct pt_regs *, struct user *);
extern unsigned long get_cmos_time(void);
extern void __Udiv(void);
extern void __ashrdi3(void);
extern void iounmap(void *addr);
/* platform dependent support */
/* Platform dependent support */
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(enable_irq);
EXPORT_SYMBOL(disable_irq);
EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(get_cmos_time);
EXPORT_SYMBOL(loops_per_usec);
/* String functions */
EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(strtok);
EXPORT_SYMBOL(strpbrk);
EXPORT_SYMBOL(simple_strtol);
EXPORT_SYMBOL(strstr);
EXPORT_SYMBOL(strcpy);
EXPORT_SYMBOL(strchr);
EXPORT_SYMBOL(strcmp);
EXPORT_SYMBOL(strlen);
EXPORT_SYMBOL(strncat);
EXPORT_SYMBOL(strncmp);
/* Math functions */
EXPORT_SYMBOL(__Udiv);
EXPORT_SYMBOL(__ashrdi3);
/* Memory functions */
EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap);
/* export shadow registers for the CPU I/O pins */
/* Semaphore functions */
EXPORT_SYMBOL(__up);
EXPORT_SYMBOL(__down);
/* Export shadow registers for the CPU I/O pins */
EXPORT_SYMBOL(genconfig_shadow);
EXPORT_SYMBOL(port_pa_data_shadow);
EXPORT_SYMBOL(port_pa_dir_shadow);
......@@ -59,8 +70,7 @@ EXPORT_SYMBOL(port_pb_dir_shadow);
EXPORT_SYMBOL(port_pb_config_shadow);
EXPORT_SYMBOL(port_g_data_shadow);
/* other stuff */
/* Userspace access functions */
EXPORT_SYMBOL(strncpy_from_user);
EXPORT_SYMBOL(__strncpy_from_user);
EXPORT_SYMBOL(__generic_copy_from_user);
......@@ -71,8 +81,8 @@ EXPORT_SYMBOL(__copy_user);
#undef memcpy
#undef memset
extern void * memset(void *,int,__kernel_size_t);
extern void * memcpy(void *,const void *,__kernel_size_t);
extern void * memset(void *, int, __kernel_size_t);
extern void * memcpy(void *, const void *, __kernel_size_t);
EXPORT_SYMBOL_NOVERS(memcpy);
EXPORT_SYMBOL_NOVERS(memset);
......
/* $Id: process.c,v 1.20 2001/10/03 08:21:39 jonashg Exp $
/* $Id: process.c,v 1.3 2002/01/21 15:22:49 bjornw Exp $
*
* linux/arch/cris/kernel/process.c
*
......@@ -8,6 +8,15 @@
* Authors: Bjorn Wesen (bjornw@axis.com)
*
* $Log: process.c,v $
* Revision 1.3 2002/01/21 15:22:49 bjornw
* current->counter is gone
*
* Revision 1.22 2001/11/13 09:40:43 orjanf
* Added dump_fpu (needed for core dumps).
*
* Revision 1.21 2001/11/12 18:26:21 pkj
* Fixed compiler warnings.
*
* Revision 1.20 2001/10/03 08:21:39 jonashg
* cause_of_death does not exist if CONFIG_SVINTO_SIM is defined.
*
......@@ -57,6 +66,7 @@
#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/elfcore.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
......@@ -77,7 +87,6 @@
* setup.
*/
static struct vm_area_struct init_mmap = INIT_MMAP;
static struct fs_struct init_fs = INIT_FS;
static struct files_struct init_files = INIT_FILES;
static struct signal_struct init_signals = INIT_SIGNALS;
......@@ -135,14 +144,15 @@ void hard_reset_now (void)
* code to know about it than the watchdog handler in entry.S and
* this code, implementing hard reset through the watchdog.
*/
#if defined(CONFIG_ETRAX_WATCHDOG) && !defined(CONFIG_SVINTO_SIM)
extern int cause_of_death;
#endif
printk("*** HARD RESET ***\n");
cli();
#if defined(CONFIG_ETRAX_WATCHDOG) && !defined(CONFIG_SVINTO_SIM)
cause_of_death = 0xbedead;
#else
/* Since we dont plan to keep on reseting the watchdog,
the key can be arbitrary hence three */
......@@ -243,9 +253,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
int i;
#if 0
/* changed the size calculations - should hopefully work better. lbt */
int i;
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = regs->esp & ~(PAGE_SIZE - 1);
......@@ -265,6 +276,12 @@ void dump_thread(struct pt_regs * regs, struct user * dump)
#endif
}
/* Fill in the fpu structure for a core dump. */
int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
{
return 0;
}
/*
* Be aware of the "magic" 7th argument in the four system-calls below.
* They need the latest stackframe, which is put as the 7th argument by
......
......@@ -8,6 +8,12 @@
* Authors: Bjorn Wesen
*
* $Log: ptrace.c,v $
* Revision 1.2 2001/12/18 13:35:20 bjornw
* Applied the 2.4.13->2.4.16 CRIS patch to 2.5.1 (is a copy of 2.4.15).
*
* Revision 1.8 2001/11/12 18:26:21 pkj
* Fixed compiler warnings.
*
* Revision 1.7 2001/09/26 11:53:49 bjornw
* PTRACE_DETACH works more simple in 2.4.10
*
......@@ -74,8 +80,6 @@ static inline long get_reg(struct task_struct *task, unsigned int regno)
static inline int put_reg(struct task_struct *task, unsigned int regno,
unsigned long data)
{
unsigned long *addr;
if (regno == PT_USP)
task->thread.usp = data;
else if (regno < PT_MAX)
......@@ -207,9 +211,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
break;
case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */
case PTRACE_CONT: { /* restart after signal. */
long tmp;
case PTRACE_CONT: /* restart after signal. */
ret = -EIO;
if ((unsigned long) data > _NSIG)
break;
......@@ -222,16 +224,13 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
wake_up_process(child);
ret = 0;
break;
}
/*
* make the child exit. Best I can do is send it a sigkill.
* perhaps it should be put in the status that it wants to
* exit.
*/
case PTRACE_KILL: {
long tmp;
case PTRACE_KILL:
ret = 0;
if (child->state == TASK_ZOMBIE) /* already dead */
break;
......@@ -239,11 +238,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
/* TODO: make sure any pending breakpoint is killed */
wake_up_process(child);
break;
}
case PTRACE_SINGLESTEP: { /* set the trap flag. */
long tmp;
case PTRACE_SINGLESTEP: /* set the trap flag. */
ret = -EIO;
if ((unsigned long) data > _NSIG)
break;
......@@ -256,7 +252,6 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
wake_up_process(child);
ret = 0;
break;
}
case PTRACE_DETACH:
ret = ptrace_detach(child, data);
......
/* $Id: setup.c,v 1.22 2001/10/23 17:42:58 pkj Exp $
/* $Id: setup.c,v 1.2 2001/12/18 13:35:20 bjornw Exp $
*
* linux/arch/cris/kernel/setup.c
*
......@@ -26,10 +26,12 @@
#include <linux/config.h>
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <asm/segment.h>
#include <asm/system.h>
#include <asm/smp.h>
#include <asm/pgtable.h>
#include <asm/types.h>
#include <asm/svinto.h>
......@@ -72,10 +74,10 @@ extern unsigned long romfs_start, romfs_length, romfs_in_flash; /* from head.S *
void __init
setup_arch(char **cmdline_p)
{
unsigned long bootmap_size;
extern void init_etrax_debug(void);
unsigned long bootmap_size;
unsigned long start_pfn, max_pfn;
unsigned long memory_start;
extern void console_print_etrax(const char *b);
/* register an initial console printing routine for printk's */
......@@ -87,12 +89,12 @@ setup_arch(char **cmdline_p)
if(romfs_in_flash || !romfs_length) {
/* if we have the romfs in flash, or if there is no rom filesystem,
* our free area starts directly after the BSS
* our free area starts directly after the BSS
*/
memory_start = (unsigned long) &_end;
} else {
/* otherwise the free area starts after the ROM filesystem */
printk("ROM fs in RAM, size %d bytes\n", romfs_length);
printk("ROM fs in RAM, size %lu bytes\n", romfs_length);
memory_start = romfs_start + romfs_length;
}
......@@ -193,7 +195,7 @@ setup_arch(char **cmdline_p)
#define HAS_ATA 0x0020
#define HAS_USB 0x0040
#define HAS_IRQ_BUG 0x0080
#define HAS_MMU_BUG 0x0100
#define HAS_MMU_BUG 0x0100
static struct cpu_info {
char *model;
......@@ -213,50 +215,27 @@ static struct cpu_info {
{ "ETRAX 100", 8, HAS_ETHERNET100 | HAS_SCSI | HAS_ATA | HAS_IRQ_BUG },
{ "ETRAX 100", 8, HAS_ETHERNET100 | HAS_SCSI | HAS_ATA },
{ "ETRAX 100LX", 8, HAS_ETHERNET100 | HAS_SCSI | HAS_ATA | HAS_USB | HAS_MMU | HAS_MMU_BUG },
{ "ETRAX 100LX v2", 8, HAS_ETHERNET100 | HAS_SCSI | HAS_ATA | HAS_USB | HAS_MMU },
{ "ETRAX 100LX v2", 8, HAS_ETHERNET100 | HAS_SCSI | HAS_ATA | HAS_USB | HAS_MMU },
{ "Unknown", 0, 0 } /* This entry MUST be the last */
};
/*
* get_cpuinfo - Get information on one CPU for use by the procfs.
*
* Prints info on the next CPU into buffer. Beware, doesn't check for
* buffer overflow. Current implementation of procfs assumes that the
* resulting data is <= 1K.
*
* BUFFER is PAGE_SIZE - 1K bytes long.
*
* Args:
* buffer -- you guessed it, the data buffer
* cpu_np -- Input: next cpu to get (start at 0). Output: Updated.
*
* Returns number of bytes written to buffer.
*/
int get_cpuinfo(char *buffer, unsigned *cpu_np)
static int show_cpuinfo(struct seq_file *m, void *v)
{
int revision;
struct cpu_info *info;
unsigned n;
unsigned long revision;
struct cpu_info *info;
/* read the version register in the CPU and print some stuff */
revision = rdvr();
if (revision < 0 || revision >= sizeof cpu_info/sizeof *cpu_info) {
if (revision >= sizeof cpu_info/sizeof *cpu_info)
info = &cpu_info[sizeof cpu_info/sizeof *cpu_info - 1];
} else
else
info = &cpu_info[revision];
/* No SMP at the moment, so just toggle 0/1 */
n = *cpu_np;
*cpu_np = 1;
if (n != 0) {
return (0);
}
return sprintf(buffer,
return seq_printf(m,
"cpu\t\t: CRIS\n"
"cpu revision\t: %d\n"
"cpu revision\t: %lu\n"
"cpu model\t: %s\n"
"cache size\t: %d kB\n"
"fpu\t\t: %s\n"
......@@ -283,4 +262,28 @@ int get_cpuinfo(char *buffer, unsigned *cpu_np)
(loops_per_jiffy * HZ + 500) / 500000,
((loops_per_jiffy * HZ + 500) / 5000) % 100);
}
static void *c_start(struct seq_file *m, loff_t *pos)
{
/* We only got one CPU... */
return *pos < 1 ? (void *)1 : NULL;
}
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
++*pos;
return NULL;
}
static void c_stop(struct seq_file *m, void *v)
{
}
struct seq_operations cpuinfo_op = {
start: c_start,
next: c_next,
stop: c_stop,
show: show_cpuinfo,
};
#endif /* CONFIG_PROC_FS */
/* $Id: shadows.c,v 1.2 2001/03/15 14:25:16 bjornw Exp $
/* $Id: shadows.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* Various shadow registers. Defines for these are in include/asm-etrax100/io.h
*/
......
/* $Id: sys_cris.c,v 1.10 2001/06/27 21:16:15 hp Exp $
/* $Id: sys_cris.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* linux/arch/cris/kernel/sys_cris.c
*
......
/* $Id: time.c,v 1.9 2001/10/25 10:26:37 johana Exp $
/* $Id: time.c,v 1.2 2001/12/18 13:35:20 bjornw Exp $
*
* linux/arch/cris/kernel/time.c
*
......@@ -18,6 +18,7 @@
* Linux/CRIS specific code:
*
* Authors: Bjorn Wesen
* Johan Adolfsson
*
*/
......@@ -61,6 +62,7 @@ unsigned short cris_timer0_value_us[TIMER0_DIV+1];
static unsigned long do_slow_gettimeoffset(void)
{
unsigned long count;
unsigned long usec_count = 0;
static unsigned long count_p = LATCH; /* for the first call after boot */
static unsigned long jiffies_p = 0;
......@@ -93,16 +95,20 @@ static unsigned long do_slow_gettimeoffset(void)
*/
if( jiffies_t == jiffies_p ) {
if( count > count_p ) {
/* Timer wrapped */
count = count_p;
usec_count = 1000000/CLOCK_TICK_RATE/2;
}
} else
jiffies_p = jiffies_t;
count_p = count;
/* Convert timer value to usec using table lookup */
usec_count += cris_timer0_value_us[count];
#if 0
count = ((LATCH-1) - count) * TICK_SIZE;
count = (count + LATCH/2) / LATCH;
return count;
#endif
return usec_count;
}
static unsigned long (*do_gettimeoffset)(void) = do_slow_gettimeoffset;
......@@ -160,9 +166,8 @@ static int set_rtc_mmss(unsigned long nowtime)
{
int retval = 0;
int real_seconds, real_minutes, cmos_minutes;
unsigned char save_control, save_freq_select;
printk("set_rtc_mmss(%d)\n", nowtime);
printk("set_rtc_mmss(%lu)\n", nowtime);
if(!have_rtc)
return 0;
......@@ -225,7 +230,9 @@ static int set_rtc_mmss(unsigned long nowtime)
/* right now, starting the watchdog is the same as resetting it */
#define start_watchdog reset_watchdog
#if defined(CONFIG_ETRAX_WATCHDOG) && !defined(CONFIG_SVINTO_SIM)
static int watchdog_key = 0; /* arbitrary number */
#endif
/* number of pages to consider "out of memory". it is normal that the memory
* is used though, so put this really low.
......@@ -306,12 +313,12 @@ timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if ((time_status & STA_UNSYNC) == 0 &&
xtime.tv_sec > last_rtc_update + 660 &&
xtime.tv_usec > 500000 - (tick >> 1) &&
xtime.tv_usec < 500000 + (tick >> 1))
xtime.tv_usec < 500000 + (tick >> 1)) {
if (set_rtc_mmss(xtime.tv_sec) == 0)
last_rtc_update = xtime.tv_sec;
else
last_rtc_update = xtime.tv_sec - 600;
}
}
#if 0
......@@ -322,6 +329,7 @@ void print_timestamp(const char *s)
{
unsigned long flags;
unsigned int newjiff;
save_flags(flags);
cli();
newjiff = (myjiff << 16) | (unsigned short)(-*R_TIMER01_DATA);
......@@ -337,7 +345,6 @@ unsigned long
get_cmos_time(void)
{
unsigned int year, mon, day, hour, min, sec;
int i;
sec = CMOS_READ(RTC_SECONDS);
min = CMOS_READ(RTC_MINUTES);
......
/* $Id: traps.c,v 1.15 2001/07/18 14:02:37 bjornw Exp $
/* $Id: traps.c,v 1.2 2001/12/18 13:35:20 bjornw Exp $
*
* linux/arch/cris/traps.c
*
......@@ -30,6 +30,55 @@
int kstack_depth_to_print = 24;
void show_trace(unsigned long * stack)
{
unsigned long addr, module_start, module_end;
extern char _stext, _etext;
int i;
printk("\nCall Trace: ");
i = 1;
module_start = VMALLOC_START;
module_end = VMALLOC_END;
while (((long) stack & (THREAD_SIZE-1)) != 0) {
if (__get_user (addr, stack)) {
/* This message matches "failing address" marked
s390 in ksymoops, so lines containing it will
not be filtered out by ksymoops. */
printk ("Failing address 0x%lx\n", (unsigned long)stack);
break;
}
stack++;
/*
* If the address is either in the text segment of the
* kernel, or in the region which contains vmalloc'ed
* memory, it *may* be the address of a calling
* routine; if so, print it so that someone tracing
* down the cause of the crash will be able to figure
* out the call path that was taken.
*/
if (((addr >= (unsigned long) &_stext) &&
(addr <= (unsigned long) &_etext)) ||
((addr >= module_start) && (addr <= module_end))) {
if (i && ((i % 8) == 0))
printk("\n ");
printk("[<%08lx>] ", addr);
i++;
}
}
}
void show_trace_task(struct task_struct *tsk)
{
/* TODO, this is not really useful since its called from
* SysRq-T and we don't have a keyboard.. :)
*/
}
/*
* These constants are for searching for possible module text
* segments. MODULE_RANGE is a guess of how much space is likely
......@@ -48,9 +97,8 @@ int kstack_depth_to_print = 24;
void
show_stack(unsigned long *sp)
{
unsigned long *stack, addr, module_start, module_end;
unsigned long *stack, addr;
int i;
extern char _stext, _etext;
/*
* debugging aid: "show_stack(NULL);" prints a
......@@ -62,7 +110,7 @@ show_stack(unsigned long *sp)
stack = sp;
printk("\nStack from %08lx:\n ", stack);
printk("\nStack from %08lx:\n ", (unsigned long)stack);
for(i = 0; i < kstack_depth_to_print; i++) {
if (((long) stack & (THREAD_SIZE-1)) == 0)
break;
......@@ -72,45 +120,13 @@ show_stack(unsigned long *sp)
/* This message matches "failing address" marked
s390 in ksymoops, so lines containing it will
not be filtered out by ksymoops. */
printk ("Failing address 0x%lx\n", stack);
printk ("Failing address 0x%lx\n", (unsigned long)stack);
break;
}
stack++;
printk("%08lx ", addr);
}
printk("\nCall Trace: ");
stack = sp;
i = 1;
module_start = VMALLOC_START;
module_end = VMALLOC_END;
while (((long) stack & (THREAD_SIZE-1)) != 0) {
if (__get_user (addr, stack)) {
/* This message matches "failing address" marked
s390 in ksymoops, so lines containing it will
not be filtered out by ksymoops. */
printk ("Failing address 0x%lx\n", stack);
break;
}
stack++;
/*
* If the address is either in the text segment of the
* kernel, or in the region which contains vmalloc'ed
* memory, it *may* be the address of a calling
* routine; if so, print it so that someone tracing
* down the cause of the crash will be able to figure
* out the call path that was taken.
*/
if (((addr >= (unsigned long) &_stext) &&
(addr <= (unsigned long) &_etext)) ||
((addr >= module_start) && (addr <= module_end))) {
if (i && ((i % 8) == 0))
printk("\n ");
printk("[<%08lx>] ", addr);
i++;
}
}
show_trace(sp);
}
#if 0
......@@ -148,7 +164,7 @@ show_registers(struct pt_regs * regs)
regs->r8, regs->r9, regs->r10, regs->r11);
printk("r12: %08lx r13: %08lx oR10: %08lx\n",
regs->r12, regs->r13, regs->orig_r10);
printk("R_MMU_CAUSE: %08lx\n", *R_MMU_CAUSE);
printk("R_MMU_CAUSE: %08lx\n", (unsigned long)*R_MMU_CAUSE);
printk("Process %s (pid: %d, stackpage=%08lx)\n",
current->comm, current->pid, (unsigned long)current);
......@@ -195,25 +211,56 @@ show_registers(struct pt_regs * regs)
}
}
/* Called from entry.S when the watchdog has bitten
* We print out something resembling an oops dump, and if
* we have the nice doggy development flag set, we halt here
* instead of rebooting.
*/
void
watchdog_bite_hook(struct pt_regs *regs)
{
#ifdef CONFIG_ETRAX_WATCHDOG_NICE_DOGGY
cli();
stop_watchdog();
show_registers(regs);
while(1) /* nothing */;
#else
show_registers(regs);
#endif
}
/* This is normally the 'Oops' routine */
void
die_if_kernel(const char * str, struct pt_regs * regs, long err)
{
extern void reset_watchdog(void);
extern void stop_watchdog(void);
if(user_mode(regs))
return;
#ifdef CONFIG_ETRAX_WATCHDOG_NICE_DOGGY
/* This printout might take too long and trigger the
* watchdog normally. If we're in the nice doggy
* development mode, stop the watchdog during printout.
*/
stop_watchdog();
#endif
printk("%s: %04lx\n", str, err & 0xffff);
show_registers(regs);
#ifdef CONFIG_ETRAX_WATCHDOG_NICE_DOGGY
reset_watchdog();
#endif
do_exit(SIGSEGV);
}
void __init
trap_init(void)
{
/* Nothing needs to be done */
/* Nothing needs to be done */
}
/* $Id: checksum.S,v 1.6 2001/10/01 14:47:35 bjornw Exp $
/* $Id: checksum.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
* A fast checksum routine using movem
* Copyright (c) 1998-2001 Axis Communications AB
*
......
/* $Id: checksumcopy.S,v 1.7 2001/10/01 14:47:35 bjornw Exp $
/* $Id: checksumcopy.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
* A fast checksum+copy routine using movem
* Copyright (c) 1998, 2001 Axis Communications AB
*
......
/* $Id: dmacopy.c,v 1.1 2000/07/10 16:25:21 bjornw Exp $
/* $Id: dmacopy.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax
*/
......
/* $Id: dram_init.S,v 1.10 2001/10/04 12:00:21 martinnn Exp $
/* $Id: dram_init.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* DRAM/SDRAM initialization - alter with care
* This file is intended to be included from other assembler files
......@@ -11,6 +11,9 @@
* Authors: Mikael Starvik (starvik@axis.com)
*
* $Log: dram_init.S,v $
* Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
* Import of Linux 2.5.1
*
* Revision 1.10 2001/10/04 12:00:21 martinnn
* Added missing underscores.
*
......
/*
* $Id: hw_settings.S,v 1.3 2001/04/21 17:02:46 bjornw Exp $
* $Id: hw_settings.S,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* This table is used by some tools to extract hardware parameters.
* The table should be included in the kernel and the decompressor.
......
/* $Id: old_checksum.c,v 1.1 2000/07/10 16:25:21 bjornw Exp $
/* $Id: old_checksum.c,v 1.1.1.1 2001/12/17 13:59:27 bjornw Exp $
*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
......
......@@ -2,6 +2,9 @@
* linux/arch/cris/mm/extable.c
*
* $Log: extable.c,v $
* Revision 1.1.1.1 2001/12/17 13:59:27 bjornw
* Import of Linux 2.5.1
*
* Revision 1.3 2001/09/27 13:52:40 bjornw
* Harmonize underscore-ness with other parts
*
......
This diff is collapsed.
......@@ -7,6 +7,15 @@
* Authors: Bjorn Wesen (bjornw@axis.com)
*
* $Log: init.c,v $
* Revision 1.2 2001/12/18 13:35:22 bjornw
* Applied the 2.4.13->2.4.16 CRIS patch to 2.5.1 (is a copy of 2.4.15).
*
* Revision 1.31 2001/11/13 16:22:00 bjornw
* Skip calculating totalram and sharedram in si_meminfo
*
* Revision 1.30 2001/11/12 19:02:10 pkj
* Fixed compiler warnings.
*
* Revision 1.29 2001/07/25 16:09:50 bjornw
* val->sharedram will stay 0
*
......@@ -459,29 +468,18 @@ free_initmem(void)
free_page(addr);
totalram_pages++;
}
printk ("Freeing unused kernel memory: %dk freed\n",
printk ("Freeing unused kernel memory: %luk freed\n",
(&__init_end - &__init_begin) >> 10);
}
void
si_meminfo(struct sysinfo *val)
{
int i;
i = max_mapnr;
val->totalram = 0;
val->sharedram = 0;
val->freeram = nr_free_pages();
val->bufferram = atomic_read(&buffermem_pages);
while (i-- > 0) {
if (PageReserved(mem_map+i))
continue;
val->totalram++;
if (!atomic_read(&mem_map[i].count))
continue;
val->sharedram += atomic_read(&mem_map[i].count) - 1;
}
val->mem_unit = PAGE_SIZE;
val->totalhigh = 0;
val->freehigh = 0;
val->totalram = totalram_pages;
val->sharedram = 0;
val->freeram = nr_free_pages();
val->bufferram = atomic_read(&buffermem_pages);
val->totalhigh = 0;
val->freehigh = 0;
val->mem_unit = PAGE_SIZE;
}
......@@ -491,8 +491,6 @@ CONFIG_PCMCIA_PCNET=y
# CONFIG_PCMCIA_XIRTULIP is not set
CONFIG_NET_PCMCIA_RADIO=y
CONFIG_PCMCIA_RAYCS=y
# CONFIG_PCMCIA_NETWAVE is not set
# CONFIG_PCMCIA_WAVELAN is not set
# CONFIG_AIRONET4500_CS is not set
#
......@@ -738,6 +736,7 @@ CONFIG_USB=y
# USB Host Controller Drivers
#
# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_ALT=y
# CONFIG_USB_OHCI is not set
......
......@@ -79,6 +79,7 @@ BUILD_16_IRQS(0xc) BUILD_16_IRQS(0xd)
* through the ICC by us (IPIs)
*/
#ifdef CONFIG_SMP
BUILD_SMP_INTERRUPT(task_migration_interrupt,TASK_MIGRATION_VECTOR)
BUILD_SMP_INTERRUPT(reschedule_interrupt,RESCHEDULE_VECTOR)
BUILD_SMP_INTERRUPT(invalidate_interrupt,INVALIDATE_TLB_VECTOR)
BUILD_SMP_INTERRUPT(call_function_interrupt,CALL_FUNCTION_VECTOR)
......@@ -473,6 +474,9 @@ void __init init_IRQ(void)
*/
set_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt);
/* IPI for task migration */
set_intr_gate(TASK_MIGRATION_VECTOR, task_migration_interrupt);
/* IPI for invalidation */
set_intr_gate(INVALIDATE_TLB_VECTOR, invalidate_interrupt);
......
......@@ -485,6 +485,35 @@ void flush_tlb_all(void)
do_flush_tlb_all_local();
}
static spinlock_t migration_lock = SPIN_LOCK_UNLOCKED;
static task_t *new_task;
/*
* This function sends a 'task migration' IPI to another CPU.
* Must be called from syscall contexts, with interrupts *enabled*.
*/
void smp_migrate_task(int cpu, task_t *p)
{
/*
* The target CPU will unlock the migration spinlock:
*/
spin_lock(&migration_lock);
new_task = p;
send_IPI_mask(1 << cpu, TASK_MIGRATION_VECTOR);
}
/*
* Task migration callback.
*/
asmlinkage void smp_task_migration_interrupt(void)
{
task_t *p;
ack_APIC_irq();
p = new_task;
spin_unlock(&migration_lock);
sched_task_migrated(p);
}
/*
* this function sends a 'reschedule' IPI to another CPU.
* it goes straight through and wastes no time serializing
......
......@@ -462,6 +462,7 @@ int __init start_secondary(void *unused)
* things done here to the most necessary things.
*/
cpu_init();
init_idle();
smp_callin();
while (!atomic_read(&smp_commenced))
rep_nop();
......@@ -470,8 +471,8 @@ int __init start_secondary(void *unused)
* the local TLBs too.
*/
local_flush_tlb();
idle_startup_done();
init_idle();
return cpu_idle();
}
......
......@@ -422,7 +422,7 @@ static void __init ps2esdi_geninit(void)
blk_queue_max_sectors(BLK_DEFAULT_QUEUE(MAJOR_NR), 128);
for (i = 0; i < ps2esdi_drives; i++) {
register_disk(&ps2esdi_gendisk,MKDEV(MAJOR_NR,i<<6),1<<6,
register_disk(&ps2esdi_gendisk,mk_kdev(MAJOR_NR,i<<6),1<<6,
&ps2esdi_fops,
ps2esdi_info[i].head * ps2esdi_info[i].sect *
ps2esdi_info[i].cyl);
......@@ -466,7 +466,7 @@ static void do_ps2esdi_request(request_queue_t * q)
#if 0
printk("%s:got request. device : %d minor : %d command : %d sector : %ld count : %ld, buffer: %p\n",
DEVICE_NAME,
CURRENT_DEV, MINOR(CURRENT->rq_dev),
CURRENT_DEV, minor(CURRENT->rq_dev),
CURRENT->cmd, CURRENT->sector,
CURRENT->current_nr_sectors, CURRENT->buffer);
#endif
......@@ -481,12 +481,12 @@ static void do_ps2esdi_request(request_queue_t * q)
} /* check for above 16Mb dmas */
else if ((CURRENT_DEV < ps2esdi_drives) &&
(CURRENT->sector + CURRENT->current_nr_sectors <=
ps2esdi[MINOR(CURRENT->rq_dev)].nr_sects) &&
ps2esdi[minor(CURRENT->rq_dev)].nr_sects) &&
CURRENT->flags & REQ_CMD) {
#if 0
printk("%s:got request. device : %d minor : %d command : %d sector : %ld count : %ld\n",
DEVICE_NAME,
CURRENT_DEV, MINOR(CURRENT->rq_dev),
CURRENT_DEV, minor(CURRENT->rq_dev),
CURRENT->cmd, CURRENT->sector,
CURRENT->current_nr_sectors);
#endif
......@@ -510,7 +510,7 @@ static void do_ps2esdi_request(request_queue_t * q)
/* is request is valid */
else {
printk("Grrr. error. ps2esdi_drives: %d, %lu %lu\n", ps2esdi_drives,
CURRENT->sector, ps2esdi[MINOR(CURRENT->rq_dev)].nr_sects);
CURRENT->sector, ps2esdi[minor(CURRENT->rq_dev)].nr_sects);
end_request(FAIL);
}
......@@ -849,7 +849,7 @@ static void ps2esdi_normal_interrupt_handler(u_int int_ret_code)
switch (int_ret_code & 0x0f) {
case INT_TRANSFER_REQ:
ps2esdi_prep_dma(CURRENT->buffer, CURRENT->current_nr_sectors,
(CURRENT->cmd == READ)
(rq_data_dir(CURRENT) == READ)
? MCA_DMA_MODE_16 | MCA_DMA_MODE_WRITE | MCA_DMA_MODE_XFER
: MCA_DMA_MODE_16 | MCA_DMA_MODE_READ);
outb(CTRL_ENABLE_DMA | CTRL_ENABLE_INTR, ESDI_CONTROL);
......
......@@ -19,6 +19,7 @@ if [ "$CONFIG_PCI" = "y" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then
comment "Protocol Drivers"
dep_tristate ' OHCI-1394 Video support' CONFIG_IEEE1394_VIDEO1394 $CONFIG_IEEE1394_OHCI1394
dep_tristate ' SBP-2 support (Harddisks etc.)' CONFIG_IEEE1394_SBP2 $CONFIG_SCSI $CONFIG_IEEE1394
dep_tristate ' OHCI-DV I/O support' CONFIG_IEEE1394_DV1394 $CONFIG_IEEE1394_OHCI1394
dep_tristate ' Raw IEEE1394 I/O support' CONFIG_IEEE1394_RAWIO $CONFIG_IEEE1394
bool 'Excessive debugging output' CONFIG_IEEE1394_VERBOSEDEBUG
......
......@@ -16,6 +16,7 @@ obj-$(CONFIG_IEEE1394_OHCI1394) += ohci1394.o
obj-$(CONFIG_IEEE1394_VIDEO1394) += video1394.o
obj-$(CONFIG_IEEE1394_RAWIO) += raw1394.o
obj-$(CONFIG_IEEE1394_SBP2) += sbp2.o
obj-$(CONFIG_IEEE1394_DV1394) += dv1394.o
include $(TOPDIR)/Rules.make
......
......@@ -70,7 +70,7 @@ static void add_host(struct hpsb_host *host)
{
host->csr.lock = SPIN_LOCK_UNLOCKED;
host->csr.rom_size = host->template->get_rom(host, &host->csr.rom);
host->csr.rom_size = host->ops->get_rom(host, &host->csr.rom);
host->csr.state = 0;
host->csr.node_ids = 0;
......@@ -152,7 +152,7 @@ static int read_regs(struct hpsb_host *host, int nodeid, quadlet_t *buf,
case CSR_CYCLE_TIME:
oldcycle = host->csr.cycle_time;
host->csr.cycle_time =
host->template->devctl(host, GET_CYCLE_COUNTER, 0);
host->ops->devctl(host, GET_CYCLE_COUNTER, 0);
if (oldcycle > host->csr.cycle_time) {
/* cycle time wrapped around */
......@@ -163,7 +163,7 @@ static int read_regs(struct hpsb_host *host, int nodeid, quadlet_t *buf,
case CSR_BUS_TIME:
oldcycle = host->csr.cycle_time;
host->csr.cycle_time =
host->template->devctl(host, GET_CYCLE_COUNTER, 0);
host->ops->devctl(host, GET_CYCLE_COUNTER, 0);
if (oldcycle > host->csr.cycle_time) {
/* cycle time wrapped around */
......@@ -181,32 +181,32 @@ static int read_regs(struct hpsb_host *host, int nodeid, quadlet_t *buf,
return RCODE_ADDRESS_ERROR;
case CSR_BUS_MANAGER_ID:
if (host->template->hw_csr_reg)
ret = host->template->hw_csr_reg(host, 0, 0, 0);
if (host->ops->hw_csr_reg)
ret = host->ops->hw_csr_reg(host, 0, 0, 0);
else
ret = host->csr.bus_manager_id;
*(buf++) = cpu_to_be32(ret);
out;
case CSR_BANDWIDTH_AVAILABLE:
if (host->template->hw_csr_reg)
ret = host->template->hw_csr_reg(host, 1, 0, 0);
if (host->ops->hw_csr_reg)
ret = host->ops->hw_csr_reg(host, 1, 0, 0);
else
ret = host->csr.bandwidth_available;
*(buf++) = cpu_to_be32(ret);
out;
case CSR_CHANNELS_AVAILABLE_HI:
if (host->template->hw_csr_reg)
ret = host->template->hw_csr_reg(host, 2, 0, 0);
if (host->ops->hw_csr_reg)
ret = host->ops->hw_csr_reg(host, 2, 0, 0);
else
ret = host->csr.channels_available_hi;
*(buf++) = cpu_to_be32(ret);
out;
case CSR_CHANNELS_AVAILABLE_LO:
if (host->template->hw_csr_reg)
ret = host->template->hw_csr_reg(host, 3, 0, 0);
if (host->ops->hw_csr_reg)
ret = host->ops->hw_csr_reg(host, 3, 0, 0);
else
ret = host->csr.channels_available_lo;
......@@ -244,7 +244,7 @@ static int write_regs(struct hpsb_host *host, int nodeid, int destid,
host->csr.node_ids &= NODE_MASK << 16;
host->csr.node_ids |= be32_to_cpu(*(data++)) & (BUS_MASK << 16);
host->node_id = host->csr.node_ids >> 16;
host->template->devctl(host, SET_BUS_ID, host->node_id >> 6);
host->ops->devctl(host, SET_BUS_ID, host->node_id >> 6);
out;
case CSR_RESET_START:
......@@ -269,7 +269,7 @@ static int write_regs(struct hpsb_host *host, int nodeid, int destid,
case CSR_CYCLE_TIME:
/* should only be set by cycle start packet, automatically */
host->csr.cycle_time = be32_to_cpu(*data);
host->template->devctl(host, SET_CYCLE_COUNTER,
host->ops->devctl(host, SET_CYCLE_COUNTER,
be32_to_cpu(*(data++)));
out;
case CSR_BUS_TIME:
......@@ -318,10 +318,10 @@ static int lock_regs(struct hpsb_host *host, int nodeid, quadlet_t *store,
data = be32_to_cpu(data);
arg = be32_to_cpu(arg);
if (host->template->hw_csr_reg) {
if (host->ops->hw_csr_reg) {
quadlet_t old;
old = host->template->
old = host->ops->
hw_csr_reg(host, (csraddr - CSR_BUS_MANAGER_ID) >> 2,
data, arg);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -91,7 +91,6 @@ struct hpsb_address_ops {
void init_hpsb_highlevel(void);
void highlevel_add_host(struct hpsb_host *host);
void highlevel_add_one_host(struct hpsb_host *host);
void highlevel_remove_host(struct hpsb_host *host);
void highlevel_host_reset(struct hpsb_host *host);
......
This diff is collapsed.
This diff is collapsed.
......@@ -39,10 +39,10 @@
#define ACK_TYPE_ERROR 0xe
/* Non-standard "ACK codes" for internal use */
#define ACKX_NONE -1
#define ACKX_SEND_ERROR -2
#define ACKX_ABORTED -3
#define ACKX_TIMEOUT -4
#define ACKX_NONE (-1)
#define ACKX_SEND_ERROR (-2)
#define ACKX_ABORTED (-3)
#define ACKX_TIMEOUT (-4)
#define SPEED_100 0x0
......@@ -116,7 +116,7 @@ struct ext_selfid {
/*
* Note: these mean to be bit fields of a big endian SelfID as seen on a little
* endian machine.
* endian machine. Without swapping.
*/
struct selfid {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -246,7 +246,7 @@ int hpsb_packet_success(struct hpsb_packet *packet)
packet->node_id);
return -EAGAIN;
}
HPSB_PANIC("reached unreachable code 1 in " __FUNCTION__);
HPSB_PANIC("reached unreachable code 1 in %s", __FUNCTION__);
case ACK_BUSY_X:
case ACK_BUSY_A:
......@@ -290,7 +290,7 @@ int hpsb_packet_success(struct hpsb_packet *packet)
return -EAGAIN;
}
HPSB_PANIC("reached unreachable code 2 in " __FUNCTION__);
HPSB_PANIC("reached unreachable code 2 in %s", __FUNCTION__);
}
......
......@@ -6,6 +6,7 @@
#include <linux/types.h>
#include <linux/version.h>
#include <linux/list.h>
#include <linux/init.h>
#include <asm/byteorder.h>
......@@ -20,6 +21,16 @@
#define INIT_TQ_HEAD(tq) INIT_LIST_HEAD(&(tq))
#endif
/* The great kdev_t changeover in 2.5.x */
#include <linux/kdev_t.h>
#ifndef minor
#define minor(dev) MINOR(dev)
#endif
#ifndef __devexit_p
#define __devexit_p(x) x
#endif
/* This showed up around this time */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,12)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -83,6 +83,7 @@ if [ "$CONFIG_ISDN_DRV_HISAX" != "n" ]; then
dep_tristate 'ELSA PCMCIA MicroLink cards' CONFIG_HISAX_ELSA_CS $CONFIG_PCMCIA
dep_tristate 'ST5481 USB ISDN modem (EXPERIMENTAL)' CONFIG_HISAX_ST5481 $CONFIG_HISAX $CONFIG_USB $CONFIG_EXPERIMENTAL
dep_tristate 'AVM Fritz!Card PCI/PCIv2/PnP support (EXPERIMENTAL)' CONFIG_HISAX_FRITZ_PCIPNP $CONFIG_HISAX $CONFIG_EXPERIMENTAL
dep_tristate 'AVM Fritz!Card classic support (EXPERIMENTAL)' CONFIG_HISAX_FRITZ_CLASSIC $CONFIG_HISAX $CONFIG_EXPERIMENTAL
fi
endmenu
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File moved
This diff is collapsed.
File moved
File moved
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment