--- a/arch/i386/pci/acpi.c +++ b/arch/i386/pci/acpi.c @@ -53,7 +53,7 @@ static int __init pci_acpi_init(void) * don't use pci_enable_device(). */ printk(KERN_INFO "PCI: Routing PCI interrupts for all devices because \"pci=routeirq\" specified\n"); - while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) + for_each_pci_dev(dev) acpi_pci_irq_enable(dev); } else printk(KERN_INFO "PCI: If a device doesn't work, try \"pci=routeirq\". If it helps, post a report\n"); --- a/fs/devpts/inode.c +++ b/fs/devpts/inode.c @@ -18,6 +18,7 @@ #include #include #include +#include #define DEVPTS_SUPER_MAGIC 0x1cd1 @@ -32,39 +33,60 @@ static struct { umode_t mode; } config = {.mode = 0600}; +enum { + Opt_uid, Opt_gid, Opt_mode, + Opt_err +}; + +static match_table_t tokens = { + {Opt_uid, "uid=%u"}, + {Opt_gid, "gid=%u"}, + {Opt_mode, "mode=%o"}, + {Opt_err, NULL} +}; + static int devpts_remount(struct super_block *sb, int *flags, char *data) { - int setuid = 0; - int setgid = 0; - uid_t uid = 0; - gid_t gid = 0; - umode_t mode = 0600; - char *this_char; - - this_char = NULL; - while ((this_char = strsep(&data, ",")) != NULL) { - int n; - char dummy; - if (!*this_char) + char *p; + + config.setuid = 0; + config.setgid = 0; + config.uid = 0; + config.gid = 0; + config.mode = 0600; + + while ((p = strsep(&data, ",")) != NULL) { + substring_t args[MAX_OPT_ARGS]; + int token; + int option; + + if (!*p) continue; - if (sscanf(this_char, "uid=%i%c", &n, &dummy) == 1) { - setuid = 1; - uid = n; - } else if (sscanf(this_char, "gid=%i%c", &n, &dummy) == 1) { - setgid = 1; - gid = n; - } else if (sscanf(this_char, "mode=%o%c", &n, &dummy) == 1) - mode = n & ~S_IFMT; - else { - printk("devpts: called with bogus options\n"); + + token = match_token(p, tokens, args); + switch (token) { + case Opt_uid: + if (match_int(&args[0], &option)) + return -EINVAL; + config.uid = option; + config.setuid = 1; + break; + case Opt_gid: + if (match_int(&args[0], &option)) + return -EINVAL; + config.gid = option; + config.setgid = 1; + break; + case Opt_mode: + if (match_octal(&args[0], &option)) + return -EINVAL; + config.mode = option & ~S_IFMT; + break; + default: + printk(KERN_ERR "devpts: called with bogus options\n"); return -EINVAL; } } - config.setuid = setuid; - config.setgid = setgid; - config.uid = uid; - config.gid = gid; - config.mode = mode; return 0; } --- a/arch/mips/arc/Makefile +++ b/arch/mips/arc/Makefile @@ -3,7 +3,7 @@ # lib-y += cmdline.o env.o file.o identify.o init.o \ - misc.o salone.o time.o tree.o + misc.o time.o tree.o lib-$(CONFIG_ARC_MEMORY) += memory.o lib-$(CONFIG_ARC_CONSOLE) += arc_con.o --- a/arch/mips/arc/salone.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Routines to load into memory and execute stand-along program images using - * ARCS PROM firmware. - * - * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) - */ -#include -#include - -LONG __init ArcLoad(CHAR *Path, ULONG TopAddr, ULONG *ExecAddr, ULONG *LowAddr) -{ - return ARC_CALL4(load, Path, TopAddr, ExecAddr, LowAddr); -} - -LONG __init ArcInvoke(ULONG ExecAddr, ULONG StackAddr, ULONG Argc, CHAR *Argv[], - CHAR *Envp[]) -{ - return ARC_CALL5(invoke, ExecAddr, StackAddr, Argc, Argv, Envp); -} - -LONG __init ArcExecute(CHAR *Path, LONG Argc, CHAR *Argv[], CHAR *Envp[]) -{ - return ARC_CALL4(exec, Path, Argc, Argv, Envp); -} --- a/arch/mips/pmc-sierra/yosemite/ht-irq.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2003 PMC-Sierra - * Author: Manish Lachwani (lachwani@pmc-sierra.com) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * 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. - */ - -#include -#include -#include -#include -#include - -/* - * HT Bus fixup for the Titan - * XXX IRQ values need to change based on the board layout - */ -void __init titan_ht_pcibios_fixup_bus(struct pci_bus *bus) -{ - struct pci_bus *current_bus = bus; - struct pci_dev *devices; - struct list_head *devices_link; - - list_for_each(devices_link, &(current_bus->devices)) { - devices = pci_dev_b(devices_link); - if (devices == NULL) - continue; - } - - /* - * PLX and SPKT related changes go here - */ - -} --- a/arch/ppc/syslib/ppc4xx_pm.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Author: Armin Kuster - * - * 2002 (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. - * - * This an attempt to get Power Management going for the IBM 4xx processor. - * This was derived from the ppc4xx._setup.c file - */ - -#include -#include - -#include - -void __init -ppc4xx_pm_init(void) -{ - - unsigned int value = 0; - - /* turn off unused hardware to save power */ -#ifdef CONFIG_405GP - value |= CPM_DCP; /* CodePack */ -#endif - -#if !defined(CONFIG_IBM_OCP_GPIO) - value |= CPM_GPIO0; -#endif - -#if !defined(CONFIG_PPC405_I2C_ADAP) - value |= CPM_IIC0; -#ifdef CONFIG_STB03xxx - value |= CPM_IIC1; -#endif -#endif - - -#if !defined(CONFIG_405_DMA) - value |= CPM_DMA; -#endif - - mtdcr(DCRN_CPMFR, value); - -} --- a/drivers/parport/parport_arc.c +++ /dev/null @@ -1,139 +0,0 @@ -/* Low-level parallel port routines for Archimedes onboard hardware - * - * Author: Phil Blundell - */ - -/* This driver is for the parallel port hardware found on Acorn's old - * range of Archimedes machines. The A5000 and newer systems have PC-style - * I/O hardware and should use the parport_pc driver instead. - * - * The Acorn printer port hardware is very simple. There is a single 8-bit - * write-only latch for the data port and control/status bits are handled - * with various auxilliary input and output lines. The port is not - * bidirectional, does not support any modes other than SPP, and has only - * a subset of the standard printer control lines connected. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#define DATA_ADDRESS 0x3350010 - -/* This is equivalent to the above and only used for request_region. */ -#define PORT_BASE 0x80000000 | ((DATA_ADDRESS - IO_BASE) >> 2) - -/* The hardware can't read from the data latch, so we must use a soft - copy. */ -static unsigned char data_copy; - -/* These are pretty simple. We know the irq is never shared and the - kernel does all the magic that's required. */ -static void arc_enable_irq(struct parport *p) -{ - enable_irq(p->irq); -} - -static void arc_disable_irq(struct parport *p) -{ - disable_irq(p->irq); -} - -static void arc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - parport_generic_irq(irq, (struct parport *) dev_id, regs); -} - -static void arc_write_data(struct parport *p, unsigned char data) -{ - data_copy = data; - outb_t(data, DATA_LATCH); -} - -static unsigned char arc_read_data(struct parport *p) -{ - return data_copy; -} - -static struct parport_operations parport_arc_ops = -{ - .write_data = arc_write_data, - .read_data = arc_read_data, - - .write_control = arc_write_control, - .read_control = arc_read_control, - .frob_control = arc_frob_control, - - .read_status = arc_read_status, - - .enable_irq = arc_enable_irq, - .disable_irq = arc_disable_irq, - - .data_forward = arc_data_forward, - .data_reverse = arc_data_reverse, - - .init_state = arc_init_state, - .save_state = arc_save_state, - .restore_state = arc_restore_state, - - .epp_write_data = parport_ieee1284_epp_write_data, - .epp_read_data = parport_ieee1284_epp_read_data, - .epp_write_addr = parport_ieee1284_epp_write_addr, - .epp_read_addr = parport_ieee1284_epp_read_addr, - - .ecp_write_data = parport_ieee1284_ecp_write_data, - .ecp_read_data = parport_ieee1284_ecp_read_data, - .ecp_write_addr = parport_ieee1284_ecp_write_addr, - - .compat_write_data = parport_ieee1284_write_compat, - .nibble_read_data = parport_ieee1284_read_nibble, - .byte_read_data = parport_ieee1284_read_byte, - - .owner = THIS_MODULE, -}; - -/* --- Initialisation code -------------------------------- */ - -static int parport_arc_init(void) -{ - /* Archimedes hardware provides only one port, at a fixed address */ - struct parport *p; - struct resource res; - char *fake_name = "parport probe"); - - res = request_region(PORT_BASE, 1, fake_name); - if (res == NULL) - return 0; - - p = parport_register_port (PORT_BASE, IRQ_PRINTERACK, - PARPORT_DMA_NONE, &parport_arc_ops); - - if (!p) { - release_region(PORT_BASE, 1); - return 0; - } - - p->modes = PARPORT_MODE_ARCSPP; - p->size = 1; - rename_region(res, p->name); - - printk(KERN_INFO "%s: Archimedes on-board port, using irq %d\n", - p->irq); - - /* Tell the high-level drivers about the port. */ - parport_announce_port (p); - - return 1; -} - -module_init(parport_arc_init) --- a/fs/jffs2/histo.h +++ /dev/null @@ -1,3 +0,0 @@ -/* This file provides the bit-probabilities for the input file */ -#define BIT_DIVIDER 629 -static int bits[9] = { 179,167,183,165,159,198,178,119,}; /* ia32 .so files */ --- a/include/asm-arm/hardware/linkup-l1110.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -* -* Definitions for H3600 Handheld Computer -* -* Copyright 2001 Compaq Computer Corporation. -* -* Use consistent with the GNU GPL is permitted, -* provided that this copyright notice is -* preserved in its entirety in all copies and derived works. -* -* COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, -* AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS -* FITNESS FOR ANY PARTICULAR PURPOSE. -* -* Author: Jamey Hicks. -* -*/ - -/* LinkUp Systems PCCard/CompactFlash Interface for SA-1100 */ - -/* PC Card Status Register */ -#define LINKUP_PRS_S1 (1 << 0) /* voltage control bits S1-S4 */ -#define LINKUP_PRS_S2 (1 << 1) -#define LINKUP_PRS_S3 (1 << 2) -#define LINKUP_PRS_S4 (1 << 3) -#define LINKUP_PRS_BVD1 (1 << 4) -#define LINKUP_PRS_BVD2 (1 << 5) -#define LINKUP_PRS_VS1 (1 << 6) -#define LINKUP_PRS_VS2 (1 << 7) -#define LINKUP_PRS_RDY (1 << 8) -#define LINKUP_PRS_CD1 (1 << 9) -#define LINKUP_PRS_CD2 (1 << 10) - -/* PC Card Command Register */ -#define LINKUP_PRC_S1 (1 << 0) -#define LINKUP_PRC_S2 (1 << 1) -#define LINKUP_PRC_S3 (1 << 2) -#define LINKUP_PRC_S4 (1 << 3) -#define LINKUP_PRC_RESET (1 << 4) -#define LINKUP_PRC_APOE (1 << 5) /* Auto Power Off Enable: clears S1-S4 when either nCD goes high */ -#define LINKUP_PRC_CFE (1 << 6) /* CompactFlash mode Enable: addresses A[10:0] only, A[25:11] high */ -#define LINKUP_PRC_SOE (1 << 7) /* signal output driver enable */ -#define LINKUP_PRC_SSP (1 << 8) /* sock select polarity: 0 for socket 0, 1 for socket 1 */ -#define LINKUP_PRC_MBZ (1 << 15) /* must be zero */ - -struct linkup_l1110 { - volatile short prc; -}; --- a/include/asm-mips/gfx.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * This is the user-visible SGI GFX interface. - * - * This must be used verbatim into the GNU libc. It does not include - * any kernel-only bits on it. - * - * miguel@nuclecu.unam.mx - */ -#ifndef _ASM_GFX_H -#define _ASM_GFX_H - -/* The iocls, yes, they do not make sense, but such is life */ -#define GFX_BASE 100 -#define GFX_GETNUM_BOARDS (GFX_BASE + 1) -#define GFX_GETBOARD_INFO (GFX_BASE + 2) -#define GFX_ATTACH_BOARD (GFX_BASE + 3) -#define GFX_DETACH_BOARD (GFX_BASE + 4) -#define GFX_IS_MANAGED (GFX_BASE + 5) - -#define GFX_MAPALL (GFX_BASE + 10) -#define GFX_LABEL (GFX_BASE + 11) - -#define GFX_INFO_NAME_SIZE 16 -#define GFX_INFO_LABEL_SIZE 16 - -struct gfx_info { - char name [GFX_INFO_NAME_SIZE]; /* board name */ - char label [GFX_INFO_LABEL_SIZE]; /* label name */ - unsigned short int xpmax, ypmax; /* screen resolution */ - unsigned int lenght; /* size of a complete gfx_info for this board */ -}; - -struct gfx_getboardinfo_args { - unsigned int board; /* board number. starting from zero */ - void *buf; /* pointer to gfx_info */ - unsigned int len; /* buffer size of buf */ -}; - -struct gfx_attach_board_args { - unsigned int board; /* board number, starting from zero */ - void *vaddr; /* address where the board registers should be mapped */ -}; - -#ifdef __KERNEL__ -/* umap.c */ -extern void remove_mapping (struct vm_area_struct *vma, struct task_struct *, unsigned long, unsigned long); -extern void *vmalloc_uncached (unsigned long size); -extern int vmap_page_range (struct vm_area_struct *vma, unsigned long from, unsigned long size, unsigned long vaddr); -#endif - -#endif /* _ASM_GFX_H */ --- a/include/asm-mips/riscos-syscall.h +++ /dev/null @@ -1,979 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 1995, 96, 97, 98, 99, 2000 by Ralf Baechle - */ -#ifndef _ASM_RISCOS_SYSCALL_H -#define _ASM_RISCOS_SYSCALL_H - -/* - * The syscalls 0 - 3999 are reserved for a down to the root syscall - * compatibility with RISC/os and IRIX. We'll see how to deal with the - * various "real" BSD variants like Ultrix, NetBSD ... - */ - -/* - * SVR4 syscalls are in the range from 1 to 999 - */ -#define __NR_SVR4 0 -#define __NR_SVR4_syscall (__NR_SVR4 + 0) -#define __NR_SVR4_exit (__NR_SVR4 + 1) -#define __NR_SVR4_fork (__NR_SVR4 + 2) -#define __NR_SVR4_read (__NR_SVR4 + 3) -#define __NR_SVR4_write (__NR_SVR4 + 4) -#define __NR_SVR4_open (__NR_SVR4 + 5) -#define __NR_SVR4_close (__NR_SVR4 + 6) -#define __NR_SVR4_wait (__NR_SVR4 + 7) -#define __NR_SVR4_creat (__NR_SVR4 + 8) -#define __NR_SVR4_link (__NR_SVR4 + 9) -#define __NR_SVR4_unlink (__NR_SVR4 + 10) -#define __NR_SVR4_exec (__NR_SVR4 + 11) -#define __NR_SVR4_chdir (__NR_SVR4 + 12) -#define __NR_SVR4_gtime (__NR_SVR4 + 13) -#define __NR_SVR4_mknod (__NR_SVR4 + 14) -#define __NR_SVR4_chmod (__NR_SVR4 + 15) -#define __NR_SVR4_chown (__NR_SVR4 + 16) -#define __NR_SVR4_sbreak (__NR_SVR4 + 17) -#define __NR_SVR4_stat (__NR_SVR4 + 18) -#define __NR_SVR4_lseek (__NR_SVR4 + 19) -#define __NR_SVR4_getpid (__NR_SVR4 + 20) -#define __NR_SVR4_mount (__NR_SVR4 + 21) -#define __NR_SVR4_umount (__NR_SVR4 + 22) -#define __NR_SVR4_setuid (__NR_SVR4 + 23) -#define __NR_SVR4_getuid (__NR_SVR4 + 24) -#define __NR_SVR4_stime (__NR_SVR4 + 25) -#define __NR_SVR4_ptrace (__NR_SVR4 + 26) -#define __NR_SVR4_alarm (__NR_SVR4 + 27) -#define __NR_SVR4_fstat (__NR_SVR4 + 28) -#define __NR_SVR4_pause (__NR_SVR4 + 29) -#define __NR_SVR4_utime (__NR_SVR4 + 30) -#define __NR_SVR4_stty (__NR_SVR4 + 31) -#define __NR_SVR4_gtty (__NR_SVR4 + 32) -#define __NR_SVR4_access (__NR_SVR4 + 33) -#define __NR_SVR4_nice (__NR_SVR4 + 34) -#define __NR_SVR4_statfs (__NR_SVR4 + 35) -#define __NR_SVR4_sync (__NR_SVR4 + 36) -#define __NR_SVR4_kill (__NR_SVR4 + 37) -#define __NR_SVR4_fstatfs (__NR_SVR4 + 38) -#define __NR_SVR4_setpgrp (__NR_SVR4 + 39) -#define __NR_SVR4_cxenix (__NR_SVR4 + 40) -#define __NR_SVR4_dup (__NR_SVR4 + 41) -#define __NR_SVR4_pipe (__NR_SVR4 + 42) -#define __NR_SVR4_times (__NR_SVR4 + 43) -#define __NR_SVR4_profil (__NR_SVR4 + 44) -#define __NR_SVR4_plock (__NR_SVR4 + 45) -#define __NR_SVR4_setgid (__NR_SVR4 + 46) -#define __NR_SVR4_getgid (__NR_SVR4 + 47) -#define __NR_SVR4_sig (__NR_SVR4 + 48) -#define __NR_SVR4_msgsys (__NR_SVR4 + 49) -#define __NR_SVR4_sysmips (__NR_SVR4 + 50) -#define __NR_SVR4_sysacct (__NR_SVR4 + 51) -#define __NR_SVR4_shmsys (__NR_SVR4 + 52) -#define __NR_SVR4_semsys (__NR_SVR4 + 53) -#define __NR_SVR4_ioctl (__NR_SVR4 + 54) -#define __NR_SVR4_uadmin (__NR_SVR4 + 55) -#define __NR_SVR4_exch (__NR_SVR4 + 56) -#define __NR_SVR4_utssys (__NR_SVR4 + 57) -#define __NR_SVR4_fsync (__NR_SVR4 + 58) -#define __NR_SVR4_exece (__NR_SVR4 + 59) -#define __NR_SVR4_umask (__NR_SVR4 + 60) -#define __NR_SVR4_chroot (__NR_SVR4 + 61) -#define __NR_SVR4_fcntl (__NR_SVR4 + 62) -#define __NR_SVR4_ulimit (__NR_SVR4 + 63) -#define __NR_SVR4_reserved1 (__NR_SVR4 + 64) -#define __NR_SVR4_reserved2 (__NR_SVR4 + 65) -#define __NR_SVR4_reserved3 (__NR_SVR4 + 66) -#define __NR_SVR4_reserved4 (__NR_SVR4 + 67) -#define __NR_SVR4_reserved5 (__NR_SVR4 + 68) -#define __NR_SVR4_reserved6 (__NR_SVR4 + 69) -#define __NR_SVR4_advfs (__NR_SVR4 + 70) -#define __NR_SVR4_unadvfs (__NR_SVR4 + 71) -#define __NR_SVR4_unused1 (__NR_SVR4 + 72) -#define __NR_SVR4_unused2 (__NR_SVR4 + 73) -#define __NR_SVR4_rfstart (__NR_SVR4 + 74) -#define __NR_SVR4_unused3 (__NR_SVR4 + 75) -#define __NR_SVR4_rdebug (__NR_SVR4 + 76) -#define __NR_SVR4_rfstop (__NR_SVR4 + 77) -#define __NR_SVR4_rfsys (__NR_SVR4 + 78) -#define __NR_SVR4_rmdir (__NR_SVR4 + 79) -#define __NR_SVR4_mkdir (__NR_SVR4 + 80) -#define __NR_SVR4_getdents (__NR_SVR4 + 81) -#define __NR_SVR4_libattach (__NR_SVR4 + 82) -#define __NR_SVR4_libdetach (__NR_SVR4 + 83) -#define __NR_SVR4_sysfs (__NR_SVR4 + 84) -#define __NR_SVR4_getmsg (__NR_SVR4 + 85) -#define __NR_SVR4_putmsg (__NR_SVR4 + 86) -#define __NR_SVR4_poll (__NR_SVR4 + 87) -#define __NR_SVR4_lstat (__NR_SVR4 + 88) -#define __NR_SVR4_symlink (__NR_SVR4 + 89) -#define __NR_SVR4_readlink (__NR_SVR4 + 90) -#define __NR_SVR4_setgroups (__NR_SVR4 + 91) -#define __NR_SVR4_getgroups (__NR_SVR4 + 92) -#define __NR_SVR4_fchmod (__NR_SVR4 + 93) -#define __NR_SVR4_fchown (__NR_SVR4 + 94) -#define __NR_SVR4_sigprocmask (__NR_SVR4 + 95) -#define __NR_SVR4_sigsuspend (__NR_SVR4 + 96) -#define __NR_SVR4_sigaltstack (__NR_SVR4 + 97) -#define __NR_SVR4_sigaction (__NR_SVR4 + 98) -#define __NR_SVR4_sigpending (__NR_SVR4 + 99) -#define __NR_SVR4_setcontext (__NR_SVR4 + 100) -#define __NR_SVR4_evsys (__NR_SVR4 + 101) -#define __NR_SVR4_evtrapret (__NR_SVR4 + 102) -#define __NR_SVR4_statvfs (__NR_SVR4 + 103) -#define __NR_SVR4_fstatvfs (__NR_SVR4 + 104) -#define __NR_SVR4_reserved7 (__NR_SVR4 + 105) -#define __NR_SVR4_nfssys (__NR_SVR4 + 106) -#define __NR_SVR4_waitid (__NR_SVR4 + 107) -#define __NR_SVR4_sigsendset (__NR_SVR4 + 108) -#define __NR_SVR4_hrtsys (__NR_SVR4 + 109) -#define __NR_SVR4_acancel (__NR_SVR4 + 110) -#define __NR_SVR4_async (__NR_SVR4 + 111) -#define __NR_SVR4_priocntlset (__NR_SVR4 + 112) -#define __NR_SVR4_pathconf (__NR_SVR4 + 113) -#define __NR_SVR4_mincore (__NR_SVR4 + 114) -#define __NR_SVR4_mmap (__NR_SVR4 + 115) -#define __NR_SVR4_mprotect (__NR_SVR4 + 116) -#define __NR_SVR4_munmap (__NR_SVR4 + 117) -#define __NR_SVR4_fpathconf (__NR_SVR4 + 118) -#define __NR_SVR4_vfork (__NR_SVR4 + 119) -#define __NR_SVR4_fchdir (__NR_SVR4 + 120) -#define __NR_SVR4_readv (__NR_SVR4 + 121) -#define __NR_SVR4_writev (__NR_SVR4 + 122) -#define __NR_SVR4_xstat (__NR_SVR4 + 123) -#define __NR_SVR4_lxstat (__NR_SVR4 + 124) -#define __NR_SVR4_fxstat (__NR_SVR4 + 125) -#define __NR_SVR4_xmknod (__NR_SVR4 + 126) -#define __NR_SVR4_clocal (__NR_SVR4 + 127) -#define __NR_SVR4_setrlimit (__NR_SVR4 + 128) -#define __NR_SVR4_getrlimit (__NR_SVR4 + 129) -#define __NR_SVR4_lchown (__NR_SVR4 + 130) -#define __NR_SVR4_memcntl (__NR_SVR4 + 131) -#define __NR_SVR4_getpmsg (__NR_SVR4 + 132) -#define __NR_SVR4_putpmsg (__NR_SVR4 + 133) -#define __NR_SVR4_rename (__NR_SVR4 + 134) -#define __NR_SVR4_nuname (__NR_SVR4 + 135) -#define __NR_SVR4_setegid (__NR_SVR4 + 136) -#define __NR_SVR4_sysconf (__NR_SVR4 + 137) -#define __NR_SVR4_adjtime (__NR_SVR4 + 138) -#define __NR_SVR4_sysinfo (__NR_SVR4 + 139) -#define __NR_SVR4_reserved8 (__NR_SVR4 + 140) -#define __NR_SVR4_seteuid (__NR_SVR4 + 141) -#define __NR_SVR4_PYRAMID_statis (__NR_SVR4 + 142) -#define __NR_SVR4_PYRAMID_tuning (__NR_SVR4 + 143) -#define __NR_SVR4_PYRAMID_forcerr (__NR_SVR4 + 144) -#define __NR_SVR4_PYRAMID_mpcntl (__NR_SVR4 + 145) -#define __NR_SVR4_reserved9 (__NR_SVR4 + 146) -#define __NR_SVR4_reserved10 (__NR_SVR4 + 147) -#define __NR_SVR4_reserved11 (__NR_SVR4 + 148) -#define __NR_SVR4_reserved12 (__NR_SVR4 + 149) -#define __NR_SVR4_reserved13 (__NR_SVR4 + 150) -#define __NR_SVR4_reserved14 (__NR_SVR4 + 151) -#define __NR_SVR4_reserved15 (__NR_SVR4 + 152) -#define __NR_SVR4_reserved16 (__NR_SVR4 + 153) -#define __NR_SVR4_reserved17 (__NR_SVR4 + 154) -#define __NR_SVR4_reserved18 (__NR_SVR4 + 155) -#define __NR_SVR4_reserved19 (__NR_SVR4 + 156) -#define __NR_SVR4_reserved20 (__NR_SVR4 + 157) -#define __NR_SVR4_reserved21 (__NR_SVR4 + 158) -#define __NR_SVR4_reserved22 (__NR_SVR4 + 159) -#define __NR_SVR4_reserved23 (__NR_SVR4 + 160) -#define __NR_SVR4_reserved24 (__NR_SVR4 + 161) -#define __NR_SVR4_reserved25 (__NR_SVR4 + 162) -#define __NR_SVR4_reserved26 (__NR_SVR4 + 163) -#define __NR_SVR4_reserved27 (__NR_SVR4 + 164) -#define __NR_SVR4_reserved28 (__NR_SVR4 + 165) -#define __NR_SVR4_reserved29 (__NR_SVR4 + 166) -#define __NR_SVR4_reserved30 (__NR_SVR4 + 167) -#define __NR_SVR4_reserved31 (__NR_SVR4 + 168) -#define __NR_SVR4_reserved32 (__NR_SVR4 + 169) -#define __NR_SVR4_reserved33 (__NR_SVR4 + 170) -#define __NR_SVR4_reserved34 (__NR_SVR4 + 171) -#define __NR_SVR4_reserved35 (__NR_SVR4 + 172) -#define __NR_SVR4_reserved36 (__NR_SVR4 + 173) -#define __NR_SVR4_reserved37 (__NR_SVR4 + 174) -#define __NR_SVR4_reserved38 (__NR_SVR4 + 175) -#define __NR_SVR4_reserved39 (__NR_SVR4 + 176) -#define __NR_SVR4_reserved40 (__NR_SVR4 + 177) -#define __NR_SVR4_reserved41 (__NR_SVR4 + 178) -#define __NR_SVR4_reserved42 (__NR_SVR4 + 179) -#define __NR_SVR4_reserved43 (__NR_SVR4 + 180) -#define __NR_SVR4_reserved44 (__NR_SVR4 + 181) -#define __NR_SVR4_reserved45 (__NR_SVR4 + 182) -#define __NR_SVR4_reserved46 (__NR_SVR4 + 183) -#define __NR_SVR4_reserved47 (__NR_SVR4 + 184) -#define __NR_SVR4_reserved48 (__NR_SVR4 + 185) -#define __NR_SVR4_reserved49 (__NR_SVR4 + 186) -#define __NR_SVR4_reserved50 (__NR_SVR4 + 187) -#define __NR_SVR4_reserved51 (__NR_SVR4 + 188) -#define __NR_SVR4_reserved52 (__NR_SVR4 + 189) -#define __NR_SVR4_reserved53 (__NR_SVR4 + 190) -#define __NR_SVR4_reserved54 (__NR_SVR4 + 191) -#define __NR_SVR4_reserved55 (__NR_SVR4 + 192) -#define __NR_SVR4_reserved56 (__NR_SVR4 + 193) -#define __NR_SVR4_reserved57 (__NR_SVR4 + 194) -#define __NR_SVR4_reserved58 (__NR_SVR4 + 195) -#define __NR_SVR4_reserved59 (__NR_SVR4 + 196) -#define __NR_SVR4_reserved60 (__NR_SVR4 + 197) -#define __NR_SVR4_reserved61 (__NR_SVR4 + 198) -#define __NR_SVR4_reserved62 (__NR_SVR4 + 199) -#define __NR_SVR4_reserved63 (__NR_SVR4 + 200) -#define __NR_SVR4_aread (__NR_SVR4 + 201) -#define __NR_SVR4_awrite (__NR_SVR4 + 202) -#define __NR_SVR4_listio (__NR_SVR4 + 203) -#define __NR_SVR4_mips_acancel (__NR_SVR4 + 204) -#define __NR_SVR4_astatus (__NR_SVR4 + 205) -#define __NR_SVR4_await (__NR_SVR4 + 206) -#define __NR_SVR4_areadv (__NR_SVR4 + 207) -#define __NR_SVR4_awritev (__NR_SVR4 + 208) -#define __NR_SVR4_MIPS_reserved1 (__NR_SVR4 + 209) -#define __NR_SVR4_MIPS_reserved2 (__NR_SVR4 + 210) -#define __NR_SVR4_MIPS_reserved3 (__NR_SVR4 + 211) -#define __NR_SVR4_MIPS_reserved4 (__NR_SVR4 + 212) -#define __NR_SVR4_MIPS_reserved5 (__NR_SVR4 + 213) -#define __NR_SVR4_MIPS_reserved6 (__NR_SVR4 + 214) -#define __NR_SVR4_MIPS_reserved7 (__NR_SVR4 + 215) -#define __NR_SVR4_MIPS_reserved8 (__NR_SVR4 + 216) -#define __NR_SVR4_MIPS_reserved9 (__NR_SVR4 + 217) -#define __NR_SVR4_MIPS_reserved10 (__NR_SVR4 + 218) -#define __NR_SVR4_MIPS_reserved11 (__NR_SVR4 + 219) -#define __NR_SVR4_MIPS_reserved12 (__NR_SVR4 + 220) -#define __NR_SVR4_CDC_reserved1 (__NR_SVR4 + 221) -#define __NR_SVR4_CDC_reserved2 (__NR_SVR4 + 222) -#define __NR_SVR4_CDC_reserved3 (__NR_SVR4 + 223) -#define __NR_SVR4_CDC_reserved4 (__NR_SVR4 + 224) -#define __NR_SVR4_CDC_reserved5 (__NR_SVR4 + 225) -#define __NR_SVR4_CDC_reserved6 (__NR_SVR4 + 226) -#define __NR_SVR4_CDC_reserved7 (__NR_SVR4 + 227) -#define __NR_SVR4_CDC_reserved8 (__NR_SVR4 + 228) -#define __NR_SVR4_CDC_reserved9 (__NR_SVR4 + 229) -#define __NR_SVR4_CDC_reserved10 (__NR_SVR4 + 230) -#define __NR_SVR4_CDC_reserved11 (__NR_SVR4 + 231) -#define __NR_SVR4_CDC_reserved12 (__NR_SVR4 + 232) -#define __NR_SVR4_CDC_reserved13 (__NR_SVR4 + 233) -#define __NR_SVR4_CDC_reserved14 (__NR_SVR4 + 234) -#define __NR_SVR4_CDC_reserved15 (__NR_SVR4 + 235) -#define __NR_SVR4_CDC_reserved16 (__NR_SVR4 + 236) -#define __NR_SVR4_CDC_reserved17 (__NR_SVR4 + 237) -#define __NR_SVR4_CDC_reserved18 (__NR_SVR4 + 238) -#define __NR_SVR4_CDC_reserved19 (__NR_SVR4 + 239) -#define __NR_SVR4_CDC_reserved20 (__NR_SVR4 + 240) - -/* - * SYS V syscalls are in the range from 1000 to 1999 - */ -#define __NR_SYSV 1000 -#define __NR_SYSV_syscall (__NR_SYSV + 0) -#define __NR_SYSV_exit (__NR_SYSV + 1) -#define __NR_SYSV_fork (__NR_SYSV + 2) -#define __NR_SYSV_read (__NR_SYSV + 3) -#define __NR_SYSV_write (__NR_SYSV + 4) -#define __NR_SYSV_open (__NR_SYSV + 5) -#define __NR_SYSV_close (__NR_SYSV + 6) -#define __NR_SYSV_wait (__NR_SYSV + 7) -#define __NR_SYSV_creat (__NR_SYSV + 8) -#define __NR_SYSV_link (__NR_SYSV + 9) -#define __NR_SYSV_unlink (__NR_SYSV + 10) -#define __NR_SYSV_execv (__NR_SYSV + 11) -#define __NR_SYSV_chdir (__NR_SYSV + 12) -#define __NR_SYSV_time (__NR_SYSV + 13) -#define __NR_SYSV_mknod (__NR_SYSV + 14) -#define __NR_SYSV_chmod (__NR_SYSV + 15) -#define __NR_SYSV_chown (__NR_SYSV + 16) -#define __NR_SYSV_brk (__NR_SYSV + 17) -#define __NR_SYSV_stat (__NR_SYSV + 18) -#define __NR_SYSV_lseek (__NR_SYSV + 19) -#define __NR_SYSV_getpid (__NR_SYSV + 20) -#define __NR_SYSV_mount (__NR_SYSV + 21) -#define __NR_SYSV_umount (__NR_SYSV + 22) -#define __NR_SYSV_setuid (__NR_SYSV + 23) -#define __NR_SYSV_getuid (__NR_SYSV + 24) -#define __NR_SYSV_stime (__NR_SYSV + 25) -#define __NR_SYSV_ptrace (__NR_SYSV + 26) -#define __NR_SYSV_alarm (__NR_SYSV + 27) -#define __NR_SYSV_fstat (__NR_SYSV + 28) -#define __NR_SYSV_pause (__NR_SYSV + 29) -#define __NR_SYSV_utime (__NR_SYSV + 30) -#define __NR_SYSV_stty (__NR_SYSV + 31) -#define __NR_SYSV_gtty (__NR_SYSV + 32) -#define __NR_SYSV_access (__NR_SYSV + 33) -#define __NR_SYSV_nice (__NR_SYSV + 34) -#define __NR_SYSV_statfs (__NR_SYSV + 35) -#define __NR_SYSV_sync (__NR_SYSV + 36) -#define __NR_SYSV_kill (__NR_SYSV + 37) -#define __NR_SYSV_fstatfs (__NR_SYSV + 38) -#define __NR_SYSV_setpgrp (__NR_SYSV + 39) -#define __NR_SYSV_syssgi (__NR_SYSV + 40) -#define __NR_SYSV_dup (__NR_SYSV + 41) -#define __NR_SYSV_pipe (__NR_SYSV + 42) -#define __NR_SYSV_times (__NR_SYSV + 43) -#define __NR_SYSV_profil (__NR_SYSV + 44) -#define __NR_SYSV_plock (__NR_SYSV + 45) -#define __NR_SYSV_setgid (__NR_SYSV + 46) -#define __NR_SYSV_getgid (__NR_SYSV + 47) -#define __NR_SYSV_sig (__NR_SYSV + 48) -#define __NR_SYSV_msgsys (__NR_SYSV + 49) -#define __NR_SYSV_sysmips (__NR_SYSV + 50) -#define __NR_SYSV_acct (__NR_SYSV + 51) -#define __NR_SYSV_shmsys (__NR_SYSV + 52) -#define __NR_SYSV_semsys (__NR_SYSV + 53) -#define __NR_SYSV_ioctl (__NR_SYSV + 54) -#define __NR_SYSV_uadmin (__NR_SYSV + 55) -#define __NR_SYSV_sysmp (__NR_SYSV + 56) -#define __NR_SYSV_utssys (__NR_SYSV + 57) -#define __NR_SYSV_USG_reserved1 (__NR_SYSV + 58) -#define __NR_SYSV_execve (__NR_SYSV + 59) -#define __NR_SYSV_umask (__NR_SYSV + 60) -#define __NR_SYSV_chroot (__NR_SYSV + 61) -#define __NR_SYSV_fcntl (__NR_SYSV + 62) -#define __NR_SYSV_ulimit (__NR_SYSV + 63) -#define __NR_SYSV_SAFARI4_reserved1 (__NR_SYSV + 64) -#define __NR_SYSV_SAFARI4_reserved2 (__NR_SYSV + 65) -#define __NR_SYSV_SAFARI4_reserved3 (__NR_SYSV + 66) -#define __NR_SYSV_SAFARI4_reserved4 (__NR_SYSV + 67) -#define __NR_SYSV_SAFARI4_reserved5 (__NR_SYSV + 68) -#define __NR_SYSV_SAFARI4_reserved6 (__NR_SYSV + 69) -#define __NR_SYSV_advfs (__NR_SYSV + 70) -#define __NR_SYSV_unadvfs (__NR_SYSV + 71) -#define __NR_SYSV_rmount (__NR_SYSV + 72) -#define __NR_SYSV_rumount (__NR_SYSV + 73) -#define __NR_SYSV_rfstart (__NR_SYSV + 74) -#define __NR_SYSV_getrlimit64 (__NR_SYSV + 75) -#define __NR_SYSV_setrlimit64 (__NR_SYSV + 76) -#define __NR_SYSV_nanosleep (__NR_SYSV + 77) -#define __NR_SYSV_lseek64 (__NR_SYSV + 78) -#define __NR_SYSV_rmdir (__NR_SYSV + 79) -#define __NR_SYSV_mkdir (__NR_SYSV + 80) -#define __NR_SYSV_getdents (__NR_SYSV + 81) -#define __NR_SYSV_sginap (__NR_SYSV + 82) -#define __NR_SYSV_sgikopt (__NR_SYSV + 83) -#define __NR_SYSV_sysfs (__NR_SYSV + 84) -#define __NR_SYSV_getmsg (__NR_SYSV + 85) -#define __NR_SYSV_putmsg (__NR_SYSV + 86) -#define __NR_SYSV_poll (__NR_SYSV + 87) -#define __NR_SYSV_sigreturn (__NR_SYSV + 88) -#define __NR_SYSV_accept (__NR_SYSV + 89) -#define __NR_SYSV_bind (__NR_SYSV + 90) -#define __NR_SYSV_connect (__NR_SYSV + 91) -#define __NR_SYSV_gethostid (__NR_SYSV + 92) -#define __NR_SYSV_getpeername (__NR_SYSV + 93) -#define __NR_SYSV_getsockname (__NR_SYSV + 94) -#define __NR_SYSV_getsockopt (__NR_SYSV + 95) -#define __NR_SYSV_listen (__NR_SYSV + 96) -#define __NR_SYSV_recv (__NR_SYSV + 97) -#define __NR_SYSV_recvfrom (__NR_SYSV + 98) -#define __NR_SYSV_recvmsg (__NR_SYSV + 99) -#define __NR_SYSV_select (__NR_SYSV + 100) -#define __NR_SYSV_send (__NR_SYSV + 101) -#define __NR_SYSV_sendmsg (__NR_SYSV + 102) -#define __NR_SYSV_sendto (__NR_SYSV + 103) -#define __NR_SYSV_sethostid (__NR_SYSV + 104) -#define __NR_SYSV_setsockopt (__NR_SYSV + 105) -#define __NR_SYSV_shutdown (__NR_SYSV + 106) -#define __NR_SYSV_socket (__NR_SYSV + 107) -#define __NR_SYSV_gethostname (__NR_SYSV + 108) -#define __NR_SYSV_sethostname (__NR_SYSV + 109) -#define __NR_SYSV_getdomainname (__NR_SYSV + 110) -#define __NR_SYSV_setdomainname (__NR_SYSV + 111) -#define __NR_SYSV_truncate (__NR_SYSV + 112) -#define __NR_SYSV_ftruncate (__NR_SYSV + 113) -#define __NR_SYSV_rename (__NR_SYSV + 114) -#define __NR_SYSV_symlink (__NR_SYSV + 115) -#define __NR_SYSV_readlink (__NR_SYSV + 116) -#define __NR_SYSV_lstat (__NR_SYSV + 117) -#define __NR_SYSV_nfsmount (__NR_SYSV + 118) -#define __NR_SYSV_nfssvc (__NR_SYSV + 119) -#define __NR_SYSV_getfh (__NR_SYSV + 120) -#define __NR_SYSV_async_daemon (__NR_SYSV + 121) -#define __NR_SYSV_exportfs (__NR_SYSV + 122) -#define __NR_SYSV_setregid (__NR_SYSV + 123) -#define __NR_SYSV_setreuid (__NR_SYSV + 124) -#define __NR_SYSV_getitimer (__NR_SYSV + 125) -#define __NR_SYSV_setitimer (__NR_SYSV + 126) -#define __NR_SYSV_adjtime (__NR_SYSV + 127) -#define __NR_SYSV_BSD_getime (__NR_SYSV + 128) -#define __NR_SYSV_sproc (__NR_SYSV + 129) -#define __NR_SYSV_prctl (__NR_SYSV + 130) -#define __NR_SYSV_procblk (__NR_SYSV + 131) -#define __NR_SYSV_sprocsp (__NR_SYSV + 132) -#define __NR_SYSV_sgigsc (__NR_SYSV + 133) -#define __NR_SYSV_mmap (__NR_SYSV + 134) -#define __NR_SYSV_munmap (__NR_SYSV + 135) -#define __NR_SYSV_mprotect (__NR_SYSV + 136) -#define __NR_SYSV_msync (__NR_SYSV + 137) -#define __NR_SYSV_madvise (__NR_SYSV + 138) -#define __NR_SYSV_pagelock (__NR_SYSV + 139) -#define __NR_SYSV_getpagesize (__NR_SYSV + 140) -#define __NR_SYSV_quotactl (__NR_SYSV + 141) -#define __NR_SYSV_libdetach (__NR_SYSV + 142) -#define __NR_SYSV_BSDgetpgrp (__NR_SYSV + 143) -#define __NR_SYSV_BSDsetpgrp (__NR_SYSV + 144) -#define __NR_SYSV_vhangup (__NR_SYSV + 145) -#define __NR_SYSV_fsync (__NR_SYSV + 146) -#define __NR_SYSV_fchdir (__NR_SYSV + 147) -#define __NR_SYSV_getrlimit (__NR_SYSV + 148) -#define __NR_SYSV_setrlimit (__NR_SYSV + 149) -#define __NR_SYSV_cacheflush (__NR_SYSV + 150) -#define __NR_SYSV_cachectl (__NR_SYSV + 151) -#define __NR_SYSV_fchown (__NR_SYSV + 152) -#define __NR_SYSV_fchmod (__NR_SYSV + 153) -#define __NR_SYSV_wait3 (__NR_SYSV + 154) -#define __NR_SYSV_socketpair (__NR_SYSV + 155) -#define __NR_SYSV_sysinfo (__NR_SYSV + 156) -#define __NR_SYSV_nuname (__NR_SYSV + 157) -#define __NR_SYSV_xstat (__NR_SYSV + 158) -#define __NR_SYSV_lxstat (__NR_SYSV + 159) -#define __NR_SYSV_fxstat (__NR_SYSV + 160) -#define __NR_SYSV_xmknod (__NR_SYSV + 161) -#define __NR_SYSV_ksigaction (__NR_SYSV + 162) -#define __NR_SYSV_sigpending (__NR_SYSV + 163) -#define __NR_SYSV_sigprocmask (__NR_SYSV + 164) -#define __NR_SYSV_sigsuspend (__NR_SYSV + 165) -#define __NR_SYSV_sigpoll (__NR_SYSV + 166) -#define __NR_SYSV_swapctl (__NR_SYSV + 167) -#define __NR_SYSV_getcontext (__NR_SYSV + 168) -#define __NR_SYSV_setcontext (__NR_SYSV + 169) -#define __NR_SYSV_waitsys (__NR_SYSV + 170) -#define __NR_SYSV_sigstack (__NR_SYSV + 171) -#define __NR_SYSV_sigaltstack (__NR_SYSV + 172) -#define __NR_SYSV_sigsendset (__NR_SYSV + 173) -#define __NR_SYSV_statvfs (__NR_SYSV + 174) -#define __NR_SYSV_fstatvfs (__NR_SYSV + 175) -#define __NR_SYSV_getpmsg (__NR_SYSV + 176) -#define __NR_SYSV_putpmsg (__NR_SYSV + 177) -#define __NR_SYSV_lchown (__NR_SYSV + 178) -#define __NR_SYSV_priocntl (__NR_SYSV + 179) -#define __NR_SYSV_ksigqueue (__NR_SYSV + 180) -#define __NR_SYSV_readv (__NR_SYSV + 181) -#define __NR_SYSV_writev (__NR_SYSV + 182) -#define __NR_SYSV_truncate64 (__NR_SYSV + 183) -#define __NR_SYSV_ftruncate64 (__NR_SYSV + 184) -#define __NR_SYSV_mmap64 (__NR_SYSV + 185) -#define __NR_SYSV_dmi (__NR_SYSV + 186) -#define __NR_SYSV_pread (__NR_SYSV + 187) -#define __NR_SYSV_pwrite (__NR_SYSV + 188) - -/* - * BSD 4.3 syscalls are in the range from 2000 to 2999 - */ -#define __NR_BSD43 2000 -#define __NR_BSD43_syscall (__NR_BSD43 + 0) -#define __NR_BSD43_exit (__NR_BSD43 + 1) -#define __NR_BSD43_fork (__NR_BSD43 + 2) -#define __NR_BSD43_read (__NR_BSD43 + 3) -#define __NR_BSD43_write (__NR_BSD43 + 4) -#define __NR_BSD43_open (__NR_BSD43 + 5) -#define __NR_BSD43_close (__NR_BSD43 + 6) -#define __NR_BSD43_wait (__NR_BSD43 + 7) -#define __NR_BSD43_creat (__NR_BSD43 + 8) -#define __NR_BSD43_link (__NR_BSD43 + 9) -#define __NR_BSD43_unlink (__NR_BSD43 + 10) -#define __NR_BSD43_exec (__NR_BSD43 + 11) -#define __NR_BSD43_chdir (__NR_BSD43 + 12) -#define __NR_BSD43_time (__NR_BSD43 + 13) -#define __NR_BSD43_mknod (__NR_BSD43 + 14) -#define __NR_BSD43_chmod (__NR_BSD43 + 15) -#define __NR_BSD43_chown (__NR_BSD43 + 16) -#define __NR_BSD43_sbreak (__NR_BSD43 + 17) -#define __NR_BSD43_oldstat (__NR_BSD43 + 18) -#define __NR_BSD43_lseek (__NR_BSD43 + 19) -#define __NR_BSD43_getpid (__NR_BSD43 + 20) -#define __NR_BSD43_oldmount (__NR_BSD43 + 21) -#define __NR_BSD43_umount (__NR_BSD43 + 22) -#define __NR_BSD43_setuid (__NR_BSD43 + 23) -#define __NR_BSD43_getuid (__NR_BSD43 + 24) -#define __NR_BSD43_stime (__NR_BSD43 + 25) -#define __NR_BSD43_ptrace (__NR_BSD43 + 26) -#define __NR_BSD43_alarm (__NR_BSD43 + 27) -#define __NR_BSD43_oldfstat (__NR_BSD43 + 28) -#define __NR_BSD43_pause (__NR_BSD43 + 29) -#define __NR_BSD43_utime (__NR_BSD43 + 30) -#define __NR_BSD43_stty (__NR_BSD43 + 31) -#define __NR_BSD43_gtty (__NR_BSD43 + 32) -#define __NR_BSD43_access (__NR_BSD43 + 33) -#define __NR_BSD43_nice (__NR_BSD43 + 34) -#define __NR_BSD43_ftime (__NR_BSD43 + 35) -#define __NR_BSD43_sync (__NR_BSD43 + 36) -#define __NR_BSD43_kill (__NR_BSD43 + 37) -#define __NR_BSD43_stat (__NR_BSD43 + 38) -#define __NR_BSD43_oldsetpgrp (__NR_BSD43 + 39) -#define __NR_BSD43_lstat (__NR_BSD43 + 40) -#define __NR_BSD43_dup (__NR_BSD43 + 41) -#define __NR_BSD43_pipe (__NR_BSD43 + 42) -#define __NR_BSD43_times (__NR_BSD43 + 43) -#define __NR_BSD43_profil (__NR_BSD43 + 44) -#define __NR_BSD43_msgsys (__NR_BSD43 + 45) -#define __NR_BSD43_setgid (__NR_BSD43 + 46) -#define __NR_BSD43_getgid (__NR_BSD43 + 47) -#define __NR_BSD43_ssig (__NR_BSD43 + 48) -#define __NR_BSD43_reserved1 (__NR_BSD43 + 49) -#define __NR_BSD43_reserved2 (__NR_BSD43 + 50) -#define __NR_BSD43_sysacct (__NR_BSD43 + 51) -#define __NR_BSD43_phys (__NR_BSD43 + 52) -#define __NR_BSD43_lock (__NR_BSD43 + 53) -#define __NR_BSD43_ioctl (__NR_BSD43 + 54) -#define __NR_BSD43_reboot (__NR_BSD43 + 55) -#define __NR_BSD43_mpxchan (__NR_BSD43 + 56) -#define __NR_BSD43_symlink (__NR_BSD43 + 57) -#define __NR_BSD43_readlink (__NR_BSD43 + 58) -#define __NR_BSD43_execve (__NR_BSD43 + 59) -#define __NR_BSD43_umask (__NR_BSD43 + 60) -#define __NR_BSD43_chroot (__NR_BSD43 + 61) -#define __NR_BSD43_fstat (__NR_BSD43 + 62) -#define __NR_BSD43_reserved3 (__NR_BSD43 + 63) -#define __NR_BSD43_getpagesize (__NR_BSD43 + 64) -#define __NR_BSD43_mremap (__NR_BSD43 + 65) -#define __NR_BSD43_vfork (__NR_BSD43 + 66) -#define __NR_BSD43_vread (__NR_BSD43 + 67) -#define __NR_BSD43_vwrite (__NR_BSD43 + 68) -#define __NR_BSD43_sbrk (__NR_BSD43 + 69) -#define __NR_BSD43_sstk (__NR_BSD43 + 70) -#define __NR_BSD43_mmap (__NR_BSD43 + 71) -#define __NR_BSD43_vadvise (__NR_BSD43 + 72) -#define __NR_BSD43_munmap (__NR_BSD43 + 73) -#define __NR_BSD43_mprotect (__NR_BSD43 + 74) -#define __NR_BSD43_madvise (__NR_BSD43 + 75) -#define __NR_BSD43_vhangup (__NR_BSD43 + 76) -#define __NR_BSD43_vlimit (__NR_BSD43 + 77) -#define __NR_BSD43_mincore (__NR_BSD43 + 78) -#define __NR_BSD43_getgroups (__NR_BSD43 + 79) -#define __NR_BSD43_setgroups (__NR_BSD43 + 80) -#define __NR_BSD43_getpgrp (__NR_BSD43 + 81) -#define __NR_BSD43_setpgrp (__NR_BSD43 + 82) -#define __NR_BSD43_setitimer (__NR_BSD43 + 83) -#define __NR_BSD43_wait3 (__NR_BSD43 + 84) -#define __NR_BSD43_swapon (__NR_BSD43 + 85) -#define __NR_BSD43_getitimer (__NR_BSD43 + 86) -#define __NR_BSD43_gethostname (__NR_BSD43 + 87) -#define __NR_BSD43_sethostname (__NR_BSD43 + 88) -#define __NR_BSD43_getdtablesize (__NR_BSD43 + 89) -#define __NR_BSD43_dup2 (__NR_BSD43 + 90) -#define __NR_BSD43_getdopt (__NR_BSD43 + 91) -#define __NR_BSD43_fcntl (__NR_BSD43 + 92) -#define __NR_BSD43_select (__NR_BSD43 + 93) -#define __NR_BSD43_setdopt (__NR_BSD43 + 94) -#define __NR_BSD43_fsync (__NR_BSD43 + 95) -#define __NR_BSD43_setpriority (__NR_BSD43 + 96) -#define __NR_BSD43_socket (__NR_BSD43 + 97) -#define __NR_BSD43_connect (__NR_BSD43 + 98) -#define __NR_BSD43_oldaccept (__NR_BSD43 + 99) -#define __NR_BSD43_getpriority (__NR_BSD43 + 100) -#define __NR_BSD43_send (__NR_BSD43 + 101) -#define __NR_BSD43_recv (__NR_BSD43 + 102) -#define __NR_BSD43_sigreturn (__NR_BSD43 + 103) -#define __NR_BSD43_bind (__NR_BSD43 + 104) -#define __NR_BSD43_setsockopt (__NR_BSD43 + 105) -#define __NR_BSD43_listen (__NR_BSD43 + 106) -#define __NR_BSD43_vtimes (__NR_BSD43 + 107) -#define __NR_BSD43_sigvec (__NR_BSD43 + 108) -#define __NR_BSD43_sigblock (__NR_BSD43 + 109) -#define __NR_BSD43_sigsetmask (__NR_BSD43 + 110) -#define __NR_BSD43_sigpause (__NR_BSD43 + 111) -#define __NR_BSD43_sigstack (__NR_BSD43 + 112) -#define __NR_BSD43_oldrecvmsg (__NR_BSD43 + 113) -#define __NR_BSD43_oldsendmsg (__NR_BSD43 + 114) -#define __NR_BSD43_vtrace (__NR_BSD43 + 115) -#define __NR_BSD43_gettimeofday (__NR_BSD43 + 116) -#define __NR_BSD43_getrusage (__NR_BSD43 + 117) -#define __NR_BSD43_getsockopt (__NR_BSD43 + 118) -#define __NR_BSD43_reserved4 (__NR_BSD43 + 119) -#define __NR_BSD43_readv (__NR_BSD43 + 120) -#define __NR_BSD43_writev (__NR_BSD43 + 121) -#define __NR_BSD43_settimeofday (__NR_BSD43 + 122) -#define __NR_BSD43_fchown (__NR_BSD43 + 123) -#define __NR_BSD43_fchmod (__NR_BSD43 + 124) -#define __NR_BSD43_oldrecvfrom (__NR_BSD43 + 125) -#define __NR_BSD43_setreuid (__NR_BSD43 + 126) -#define __NR_BSD43_setregid (__NR_BSD43 + 127) -#define __NR_BSD43_rename (__NR_BSD43 + 128) -#define __NR_BSD43_truncate (__NR_BSD43 + 129) -#define __NR_BSD43_ftruncate (__NR_BSD43 + 130) -#define __NR_BSD43_flock (__NR_BSD43 + 131) -#define __NR_BSD43_semsys (__NR_BSD43 + 132) -#define __NR_BSD43_sendto (__NR_BSD43 + 133) -#define __NR_BSD43_shutdown (__NR_BSD43 + 134) -#define __NR_BSD43_socketpair (__NR_BSD43 + 135) -#define __NR_BSD43_mkdir (__NR_BSD43 + 136) -#define __NR_BSD43_rmdir (__NR_BSD43 + 137) -#define __NR_BSD43_utimes (__NR_BSD43 + 138) -#define __NR_BSD43_sigcleanup (__NR_BSD43 + 139) -#define __NR_BSD43_adjtime (__NR_BSD43 + 140) -#define __NR_BSD43_oldgetpeername (__NR_BSD43 + 141) -#define __NR_BSD43_gethostid (__NR_BSD43 + 142) -#define __NR_BSD43_sethostid (__NR_BSD43 + 143) -#define __NR_BSD43_getrlimit (__NR_BSD43 + 144) -#define __NR_BSD43_setrlimit (__NR_BSD43 + 145) -#define __NR_BSD43_killpg (__NR_BSD43 + 146) -#define __NR_BSD43_shmsys (__NR_BSD43 + 147) -#define __NR_BSD43_quota (__NR_BSD43 + 148) -#define __NR_BSD43_qquota (__NR_BSD43 + 149) -#define __NR_BSD43_oldgetsockname (__NR_BSD43 + 150) -#define __NR_BSD43_sysmips (__NR_BSD43 + 151) -#define __NR_BSD43_cacheflush (__NR_BSD43 + 152) -#define __NR_BSD43_cachectl (__NR_BSD43 + 153) -#define __NR_BSD43_debug (__NR_BSD43 + 154) -#define __NR_BSD43_reserved5 (__NR_BSD43 + 155) -#define __NR_BSD43_reserved6 (__NR_BSD43 + 156) -#define __NR_BSD43_nfs_mount (__NR_BSD43 + 157) -#define __NR_BSD43_nfs_svc (__NR_BSD43 + 158) -#define __NR_BSD43_getdirentries (__NR_BSD43 + 159) -#define __NR_BSD43_statfs (__NR_BSD43 + 160) -#define __NR_BSD43_fstatfs (__NR_BSD43 + 161) -#define __NR_BSD43_unmount (__NR_BSD43 + 162) -#define __NR_BSD43_async_daemon (__NR_BSD43 + 163) -#define __NR_BSD43_nfs_getfh (__NR_BSD43 + 164) -#define __NR_BSD43_getdomainname (__NR_BSD43 + 165) -#define __NR_BSD43_setdomainname (__NR_BSD43 + 166) -#define __NR_BSD43_pcfs_mount (__NR_BSD43 + 167) -#define __NR_BSD43_quotactl (__NR_BSD43 + 168) -#define __NR_BSD43_oldexportfs (__NR_BSD43 + 169) -#define __NR_BSD43_smount (__NR_BSD43 + 170) -#define __NR_BSD43_mipshwconf (__NR_BSD43 + 171) -#define __NR_BSD43_exportfs (__NR_BSD43 + 172) -#define __NR_BSD43_nfsfh_open (__NR_BSD43 + 173) -#define __NR_BSD43_libattach (__NR_BSD43 + 174) -#define __NR_BSD43_libdetach (__NR_BSD43 + 175) -#define __NR_BSD43_accept (__NR_BSD43 + 176) -#define __NR_BSD43_reserved7 (__NR_BSD43 + 177) -#define __NR_BSD43_reserved8 (__NR_BSD43 + 178) -#define __NR_BSD43_recvmsg (__NR_BSD43 + 179) -#define __NR_BSD43_recvfrom (__NR_BSD43 + 180) -#define __NR_BSD43_sendmsg (__NR_BSD43 + 181) -#define __NR_BSD43_getpeername (__NR_BSD43 + 182) -#define __NR_BSD43_getsockname (__NR_BSD43 + 183) -#define __NR_BSD43_aread (__NR_BSD43 + 184) -#define __NR_BSD43_awrite (__NR_BSD43 + 185) -#define __NR_BSD43_listio (__NR_BSD43 + 186) -#define __NR_BSD43_acancel (__NR_BSD43 + 187) -#define __NR_BSD43_astatus (__NR_BSD43 + 188) -#define __NR_BSD43_await (__NR_BSD43 + 189) -#define __NR_BSD43_areadv (__NR_BSD43 + 190) -#define __NR_BSD43_awritev (__NR_BSD43 + 191) - -/* - * POSIX syscalls are in the range from 3000 to 3999 - */ -#define __NR_POSIX 3000 -#define __NR_POSIX_syscall (__NR_POSIX + 0) -#define __NR_POSIX_exit (__NR_POSIX + 1) -#define __NR_POSIX_fork (__NR_POSIX + 2) -#define __NR_POSIX_read (__NR_POSIX + 3) -#define __NR_POSIX_write (__NR_POSIX + 4) -#define __NR_POSIX_open (__NR_POSIX + 5) -#define __NR_POSIX_close (__NR_POSIX + 6) -#define __NR_POSIX_wait (__NR_POSIX + 7) -#define __NR_POSIX_creat (__NR_POSIX + 8) -#define __NR_POSIX_link (__NR_POSIX + 9) -#define __NR_POSIX_unlink (__NR_POSIX + 10) -#define __NR_POSIX_exec (__NR_POSIX + 11) -#define __NR_POSIX_chdir (__NR_POSIX + 12) -#define __NR_POSIX_gtime (__NR_POSIX + 13) -#define __NR_POSIX_mknod (__NR_POSIX + 14) -#define __NR_POSIX_chmod (__NR_POSIX + 15) -#define __NR_POSIX_chown (__NR_POSIX + 16) -#define __NR_POSIX_sbreak (__NR_POSIX + 17) -#define __NR_POSIX_stat (__NR_POSIX + 18) -#define __NR_POSIX_lseek (__NR_POSIX + 19) -#define __NR_POSIX_getpid (__NR_POSIX + 20) -#define __NR_POSIX_mount (__NR_POSIX + 21) -#define __NR_POSIX_umount (__NR_POSIX + 22) -#define __NR_POSIX_setuid (__NR_POSIX + 23) -#define __NR_POSIX_getuid (__NR_POSIX + 24) -#define __NR_POSIX_stime (__NR_POSIX + 25) -#define __NR_POSIX_ptrace (__NR_POSIX + 26) -#define __NR_POSIX_alarm (__NR_POSIX + 27) -#define __NR_POSIX_fstat (__NR_POSIX + 28) -#define __NR_POSIX_pause (__NR_POSIX + 29) -#define __NR_POSIX_utime (__NR_POSIX + 30) -#define __NR_POSIX_stty (__NR_POSIX + 31) -#define __NR_POSIX_gtty (__NR_POSIX + 32) -#define __NR_POSIX_access (__NR_POSIX + 33) -#define __NR_POSIX_nice (__NR_POSIX + 34) -#define __NR_POSIX_statfs (__NR_POSIX + 35) -#define __NR_POSIX_sync (__NR_POSIX + 36) -#define __NR_POSIX_kill (__NR_POSIX + 37) -#define __NR_POSIX_fstatfs (__NR_POSIX + 38) -#define __NR_POSIX_getpgrp (__NR_POSIX + 39) -#define __NR_POSIX_syssgi (__NR_POSIX + 40) -#define __NR_POSIX_dup (__NR_POSIX + 41) -#define __NR_POSIX_pipe (__NR_POSIX + 42) -#define __NR_POSIX_times (__NR_POSIX + 43) -#define __NR_POSIX_profil (__NR_POSIX + 44) -#define __NR_POSIX_lock (__NR_POSIX + 45) -#define __NR_POSIX_setgid (__NR_POSIX + 46) -#define __NR_POSIX_getgid (__NR_POSIX + 47) -#define __NR_POSIX_sig (__NR_POSIX + 48) -#define __NR_POSIX_msgsys (__NR_POSIX + 49) -#define __NR_POSIX_sysmips (__NR_POSIX + 50) -#define __NR_POSIX_sysacct (__NR_POSIX + 51) -#define __NR_POSIX_shmsys (__NR_POSIX + 52) -#define __NR_POSIX_semsys (__NR_POSIX + 53) -#define __NR_POSIX_ioctl (__NR_POSIX + 54) -#define __NR_POSIX_uadmin (__NR_POSIX + 55) -#define __NR_POSIX_exch (__NR_POSIX + 56) -#define __NR_POSIX_utssys (__NR_POSIX + 57) -#define __NR_POSIX_USG_reserved1 (__NR_POSIX + 58) -#define __NR_POSIX_exece (__NR_POSIX + 59) -#define __NR_POSIX_umask (__NR_POSIX + 60) -#define __NR_POSIX_chroot (__NR_POSIX + 61) -#define __NR_POSIX_fcntl (__NR_POSIX + 62) -#define __NR_POSIX_ulimit (__NR_POSIX + 63) -#define __NR_POSIX_SAFARI4_reserved1 (__NR_POSIX + 64) -#define __NR_POSIX_SAFARI4_reserved2 (__NR_POSIX + 65) -#define __NR_POSIX_SAFARI4_reserved3 (__NR_POSIX + 66) -#define __NR_POSIX_SAFARI4_reserved4 (__NR_POSIX + 67) -#define __NR_POSIX_SAFARI4_reserved5 (__NR_POSIX + 68) -#define __NR_POSIX_SAFARI4_reserved6 (__NR_POSIX + 69) -#define __NR_POSIX_advfs (__NR_POSIX + 70) -#define __NR_POSIX_unadvfs (__NR_POSIX + 71) -#define __NR_POSIX_rmount (__NR_POSIX + 72) -#define __NR_POSIX_rumount (__NR_POSIX + 73) -#define __NR_POSIX_rfstart (__NR_POSIX + 74) -#define __NR_POSIX_reserved1 (__NR_POSIX + 75) -#define __NR_POSIX_rdebug (__NR_POSIX + 76) -#define __NR_POSIX_rfstop (__NR_POSIX + 77) -#define __NR_POSIX_rfsys (__NR_POSIX + 78) -#define __NR_POSIX_rmdir (__NR_POSIX + 79) -#define __NR_POSIX_mkdir (__NR_POSIX + 80) -#define __NR_POSIX_getdents (__NR_POSIX + 81) -#define __NR_POSIX_sginap (__NR_POSIX + 82) -#define __NR_POSIX_sgikopt (__NR_POSIX + 83) -#define __NR_POSIX_sysfs (__NR_POSIX + 84) -#define __NR_POSIX_getmsg (__NR_POSIX + 85) -#define __NR_POSIX_putmsg (__NR_POSIX + 86) -#define __NR_POSIX_poll (__NR_POSIX + 87) -#define __NR_POSIX_sigreturn (__NR_POSIX + 88) -#define __NR_POSIX_accept (__NR_POSIX + 89) -#define __NR_POSIX_bind (__NR_POSIX + 90) -#define __NR_POSIX_connect (__NR_POSIX + 91) -#define __NR_POSIX_gethostid (__NR_POSIX + 92) -#define __NR_POSIX_getpeername (__NR_POSIX + 93) -#define __NR_POSIX_getsockname (__NR_POSIX + 94) -#define __NR_POSIX_getsockopt (__NR_POSIX + 95) -#define __NR_POSIX_listen (__NR_POSIX + 96) -#define __NR_POSIX_recv (__NR_POSIX + 97) -#define __NR_POSIX_recvfrom (__NR_POSIX + 98) -#define __NR_POSIX_recvmsg (__NR_POSIX + 99) -#define __NR_POSIX_select (__NR_POSIX + 100) -#define __NR_POSIX_send (__NR_POSIX + 101) -#define __NR_POSIX_sendmsg (__NR_POSIX + 102) -#define __NR_POSIX_sendto (__NR_POSIX + 103) -#define __NR_POSIX_sethostid (__NR_POSIX + 104) -#define __NR_POSIX_setsockopt (__NR_POSIX + 105) -#define __NR_POSIX_shutdown (__NR_POSIX + 106) -#define __NR_POSIX_socket (__NR_POSIX + 107) -#define __NR_POSIX_gethostname (__NR_POSIX + 108) -#define __NR_POSIX_sethostname (__NR_POSIX + 109) -#define __NR_POSIX_getdomainname (__NR_POSIX + 110) -#define __NR_POSIX_setdomainname (__NR_POSIX + 111) -#define __NR_POSIX_truncate (__NR_POSIX + 112) -#define __NR_POSIX_ftruncate (__NR_POSIX + 113) -#define __NR_POSIX_rename (__NR_POSIX + 114) -#define __NR_POSIX_symlink (__NR_POSIX + 115) -#define __NR_POSIX_readlink (__NR_POSIX + 116) -#define __NR_POSIX_lstat (__NR_POSIX + 117) -#define __NR_POSIX_nfs_mount (__NR_POSIX + 118) -#define __NR_POSIX_nfs_svc (__NR_POSIX + 119) -#define __NR_POSIX_nfs_getfh (__NR_POSIX + 120) -#define __NR_POSIX_async_daemon (__NR_POSIX + 121) -#define __NR_POSIX_exportfs (__NR_POSIX + 122) -#define __NR_POSIX_SGI_setregid (__NR_POSIX + 123) -#define __NR_POSIX_SGI_setreuid (__NR_POSIX + 124) -#define __NR_POSIX_getitimer (__NR_POSIX + 125) -#define __NR_POSIX_setitimer (__NR_POSIX + 126) -#define __NR_POSIX_adjtime (__NR_POSIX + 127) -#define __NR_POSIX_SGI_bsdgettime (__NR_POSIX + 128) -#define __NR_POSIX_SGI_sproc (__NR_POSIX + 129) -#define __NR_POSIX_SGI_prctl (__NR_POSIX + 130) -#define __NR_POSIX_SGI_blkproc (__NR_POSIX + 131) -#define __NR_POSIX_SGI_reserved1 (__NR_POSIX + 132) -#define __NR_POSIX_SGI_sgigsc (__NR_POSIX + 133) -#define __NR_POSIX_SGI_mmap (__NR_POSIX + 134) -#define __NR_POSIX_SGI_munmap (__NR_POSIX + 135) -#define __NR_POSIX_SGI_mprotect (__NR_POSIX + 136) -#define __NR_POSIX_SGI_msync (__NR_POSIX + 137) -#define __NR_POSIX_SGI_madvise (__NR_POSIX + 138) -#define __NR_POSIX_SGI_mpin (__NR_POSIX + 139) -#define __NR_POSIX_SGI_getpagesize (__NR_POSIX + 140) -#define __NR_POSIX_SGI_libattach (__NR_POSIX + 141) -#define __NR_POSIX_SGI_libdetach (__NR_POSIX + 142) -#define __NR_POSIX_SGI_getpgrp (__NR_POSIX + 143) -#define __NR_POSIX_SGI_setpgrp (__NR_POSIX + 144) -#define __NR_POSIX_SGI_reserved2 (__NR_POSIX + 145) -#define __NR_POSIX_SGI_reserved3 (__NR_POSIX + 146) -#define __NR_POSIX_SGI_reserved4 (__NR_POSIX + 147) -#define __NR_POSIX_SGI_reserved5 (__NR_POSIX + 148) -#define __NR_POSIX_SGI_reserved6 (__NR_POSIX + 149) -#define __NR_POSIX_cacheflush (__NR_POSIX + 150) -#define __NR_POSIX_cachectl (__NR_POSIX + 151) -#define __NR_POSIX_fchown (__NR_POSIX + 152) -#define __NR_POSIX_fchmod (__NR_POSIX + 153) -#define __NR_POSIX_wait3 (__NR_POSIX + 154) -#define __NR_POSIX_mmap (__NR_POSIX + 155) -#define __NR_POSIX_munmap (__NR_POSIX + 156) -#define __NR_POSIX_madvise (__NR_POSIX + 157) -#define __NR_POSIX_BSD_getpagesize (__NR_POSIX + 158) -#define __NR_POSIX_setreuid (__NR_POSIX + 159) -#define __NR_POSIX_setregid (__NR_POSIX + 160) -#define __NR_POSIX_setpgid (__NR_POSIX + 161) -#define __NR_POSIX_getgroups (__NR_POSIX + 162) -#define __NR_POSIX_setgroups (__NR_POSIX + 163) -#define __NR_POSIX_gettimeofday (__NR_POSIX + 164) -#define __NR_POSIX_getrusage (__NR_POSIX + 165) -#define __NR_POSIX_getrlimit (__NR_POSIX + 166) -#define __NR_POSIX_setrlimit (__NR_POSIX + 167) -#define __NR_POSIX_waitpid (__NR_POSIX + 168) -#define __NR_POSIX_dup2 (__NR_POSIX + 169) -#define __NR_POSIX_reserved2 (__NR_POSIX + 170) -#define __NR_POSIX_reserved3 (__NR_POSIX + 171) -#define __NR_POSIX_reserved4 (__NR_POSIX + 172) -#define __NR_POSIX_reserved5 (__NR_POSIX + 173) -#define __NR_POSIX_reserved6 (__NR_POSIX + 174) -#define __NR_POSIX_reserved7 (__NR_POSIX + 175) -#define __NR_POSIX_reserved8 (__NR_POSIX + 176) -#define __NR_POSIX_reserved9 (__NR_POSIX + 177) -#define __NR_POSIX_reserved10 (__NR_POSIX + 178) -#define __NR_POSIX_reserved11 (__NR_POSIX + 179) -#define __NR_POSIX_reserved12 (__NR_POSIX + 180) -#define __NR_POSIX_reserved13 (__NR_POSIX + 181) -#define __NR_POSIX_reserved14 (__NR_POSIX + 182) -#define __NR_POSIX_reserved15 (__NR_POSIX + 183) -#define __NR_POSIX_reserved16 (__NR_POSIX + 184) -#define __NR_POSIX_reserved17 (__NR_POSIX + 185) -#define __NR_POSIX_reserved18 (__NR_POSIX + 186) -#define __NR_POSIX_reserved19 (__NR_POSIX + 187) -#define __NR_POSIX_reserved20 (__NR_POSIX + 188) -#define __NR_POSIX_reserved21 (__NR_POSIX + 189) -#define __NR_POSIX_reserved22 (__NR_POSIX + 190) -#define __NR_POSIX_reserved23 (__NR_POSIX + 191) -#define __NR_POSIX_reserved24 (__NR_POSIX + 192) -#define __NR_POSIX_reserved25 (__NR_POSIX + 193) -#define __NR_POSIX_reserved26 (__NR_POSIX + 194) -#define __NR_POSIX_reserved27 (__NR_POSIX + 195) -#define __NR_POSIX_reserved28 (__NR_POSIX + 196) -#define __NR_POSIX_reserved29 (__NR_POSIX + 197) -#define __NR_POSIX_reserved30 (__NR_POSIX + 198) -#define __NR_POSIX_reserved31 (__NR_POSIX + 199) -#define __NR_POSIX_reserved32 (__NR_POSIX + 200) -#define __NR_POSIX_reserved33 (__NR_POSIX + 201) -#define __NR_POSIX_reserved34 (__NR_POSIX + 202) -#define __NR_POSIX_reserved35 (__NR_POSIX + 203) -#define __NR_POSIX_reserved36 (__NR_POSIX + 204) -#define __NR_POSIX_reserved37 (__NR_POSIX + 205) -#define __NR_POSIX_reserved38 (__NR_POSIX + 206) -#define __NR_POSIX_reserved39 (__NR_POSIX + 207) -#define __NR_POSIX_reserved40 (__NR_POSIX + 208) -#define __NR_POSIX_reserved41 (__NR_POSIX + 209) -#define __NR_POSIX_reserved42 (__NR_POSIX + 210) -#define __NR_POSIX_reserved43 (__NR_POSIX + 211) -#define __NR_POSIX_reserved44 (__NR_POSIX + 212) -#define __NR_POSIX_reserved45 (__NR_POSIX + 213) -#define __NR_POSIX_reserved46 (__NR_POSIX + 214) -#define __NR_POSIX_reserved47 (__NR_POSIX + 215) -#define __NR_POSIX_reserved48 (__NR_POSIX + 216) -#define __NR_POSIX_reserved49 (__NR_POSIX + 217) -#define __NR_POSIX_reserved50 (__NR_POSIX + 218) -#define __NR_POSIX_reserved51 (__NR_POSIX + 219) -#define __NR_POSIX_reserved52 (__NR_POSIX + 220) -#define __NR_POSIX_reserved53 (__NR_POSIX + 221) -#define __NR_POSIX_reserved54 (__NR_POSIX + 222) -#define __NR_POSIX_reserved55 (__NR_POSIX + 223) -#define __NR_POSIX_reserved56 (__NR_POSIX + 224) -#define __NR_POSIX_reserved57 (__NR_POSIX + 225) -#define __NR_POSIX_reserved58 (__NR_POSIX + 226) -#define __NR_POSIX_reserved59 (__NR_POSIX + 227) -#define __NR_POSIX_reserved60 (__NR_POSIX + 228) -#define __NR_POSIX_reserved61 (__NR_POSIX + 229) -#define __NR_POSIX_reserved62 (__NR_POSIX + 230) -#define __NR_POSIX_reserved63 (__NR_POSIX + 231) -#define __NR_POSIX_reserved64 (__NR_POSIX + 232) -#define __NR_POSIX_reserved65 (__NR_POSIX + 233) -#define __NR_POSIX_reserved66 (__NR_POSIX + 234) -#define __NR_POSIX_reserved67 (__NR_POSIX + 235) -#define __NR_POSIX_reserved68 (__NR_POSIX + 236) -#define __NR_POSIX_reserved69 (__NR_POSIX + 237) -#define __NR_POSIX_reserved70 (__NR_POSIX + 238) -#define __NR_POSIX_reserved71 (__NR_POSIX + 239) -#define __NR_POSIX_reserved72 (__NR_POSIX + 240) -#define __NR_POSIX_reserved73 (__NR_POSIX + 241) -#define __NR_POSIX_reserved74 (__NR_POSIX + 242) -#define __NR_POSIX_reserved75 (__NR_POSIX + 243) -#define __NR_POSIX_reserved76 (__NR_POSIX + 244) -#define __NR_POSIX_reserved77 (__NR_POSIX + 245) -#define __NR_POSIX_reserved78 (__NR_POSIX + 246) -#define __NR_POSIX_reserved79 (__NR_POSIX + 247) -#define __NR_POSIX_reserved80 (__NR_POSIX + 248) -#define __NR_POSIX_reserved81 (__NR_POSIX + 249) -#define __NR_POSIX_reserved82 (__NR_POSIX + 250) -#define __NR_POSIX_reserved83 (__NR_POSIX + 251) -#define __NR_POSIX_reserved84 (__NR_POSIX + 252) -#define __NR_POSIX_reserved85 (__NR_POSIX + 253) -#define __NR_POSIX_reserved86 (__NR_POSIX + 254) -#define __NR_POSIX_reserved87 (__NR_POSIX + 255) -#define __NR_POSIX_reserved88 (__NR_POSIX + 256) -#define __NR_POSIX_reserved89 (__NR_POSIX + 257) -#define __NR_POSIX_reserved90 (__NR_POSIX + 258) -#define __NR_POSIX_reserved91 (__NR_POSIX + 259) -#define __NR_POSIX_netboot (__NR_POSIX + 260) -#define __NR_POSIX_netunboot (__NR_POSIX + 261) -#define __NR_POSIX_rdump (__NR_POSIX + 262) -#define __NR_POSIX_setsid (__NR_POSIX + 263) -#define __NR_POSIX_getmaxsig (__NR_POSIX + 264) -#define __NR_POSIX_sigpending (__NR_POSIX + 265) -#define __NR_POSIX_sigprocmask (__NR_POSIX + 266) -#define __NR_POSIX_sigsuspend (__NR_POSIX + 267) -#define __NR_POSIX_sigaction (__NR_POSIX + 268) -#define __NR_POSIX_MIPS_reserved1 (__NR_POSIX + 269) -#define __NR_POSIX_MIPS_reserved2 (__NR_POSIX + 270) -#define __NR_POSIX_MIPS_reserved3 (__NR_POSIX + 271) -#define __NR_POSIX_MIPS_reserved4 (__NR_POSIX + 272) -#define __NR_POSIX_MIPS_reserved5 (__NR_POSIX + 273) -#define __NR_POSIX_MIPS_reserved6 (__NR_POSIX + 274) -#define __NR_POSIX_MIPS_reserved7 (__NR_POSIX + 275) -#define __NR_POSIX_MIPS_reserved8 (__NR_POSIX + 276) -#define __NR_POSIX_MIPS_reserved9 (__NR_POSIX + 277) -#define __NR_POSIX_MIPS_reserved10 (__NR_POSIX + 278) -#define __NR_POSIX_MIPS_reserved11 (__NR_POSIX + 279) -#define __NR_POSIX_TANDEM_reserved1 (__NR_POSIX + 280) -#define __NR_POSIX_TANDEM_reserved2 (__NR_POSIX + 281) -#define __NR_POSIX_TANDEM_reserved3 (__NR_POSIX + 282) -#define __NR_POSIX_TANDEM_reserved4 (__NR_POSIX + 283) -#define __NR_POSIX_TANDEM_reserved5 (__NR_POSIX + 284) -#define __NR_POSIX_TANDEM_reserved6 (__NR_POSIX + 285) -#define __NR_POSIX_TANDEM_reserved7 (__NR_POSIX + 286) -#define __NR_POSIX_TANDEM_reserved8 (__NR_POSIX + 287) -#define __NR_POSIX_TANDEM_reserved9 (__NR_POSIX + 288) -#define __NR_POSIX_TANDEM_reserved10 (__NR_POSIX + 289) -#define __NR_POSIX_TANDEM_reserved11 (__NR_POSIX + 290) -#define __NR_POSIX_TANDEM_reserved12 (__NR_POSIX + 291) -#define __NR_POSIX_TANDEM_reserved13 (__NR_POSIX + 292) -#define __NR_POSIX_TANDEM_reserved14 (__NR_POSIX + 293) -#define __NR_POSIX_TANDEM_reserved15 (__NR_POSIX + 294) -#define __NR_POSIX_TANDEM_reserved16 (__NR_POSIX + 295) -#define __NR_POSIX_TANDEM_reserved17 (__NR_POSIX + 296) -#define __NR_POSIX_TANDEM_reserved18 (__NR_POSIX + 297) -#define __NR_POSIX_TANDEM_reserved19 (__NR_POSIX + 298) -#define __NR_POSIX_TANDEM_reserved20 (__NR_POSIX + 299) -#define __NR_POSIX_SGI_reserved7 (__NR_POSIX + 300) -#define __NR_POSIX_SGI_reserved8 (__NR_POSIX + 301) -#define __NR_POSIX_SGI_reserved9 (__NR_POSIX + 302) -#define __NR_POSIX_SGI_reserved10 (__NR_POSIX + 303) -#define __NR_POSIX_SGI_reserved11 (__NR_POSIX + 304) -#define __NR_POSIX_SGI_reserved12 (__NR_POSIX + 305) -#define __NR_POSIX_SGI_reserved13 (__NR_POSIX + 306) -#define __NR_POSIX_SGI_reserved14 (__NR_POSIX + 307) -#define __NR_POSIX_SGI_reserved15 (__NR_POSIX + 308) -#define __NR_POSIX_SGI_reserved16 (__NR_POSIX + 309) -#define __NR_POSIX_SGI_reserved17 (__NR_POSIX + 310) -#define __NR_POSIX_SGI_reserved18 (__NR_POSIX + 311) -#define __NR_POSIX_SGI_reserved19 (__NR_POSIX + 312) -#define __NR_POSIX_SGI_reserved20 (__NR_POSIX + 313) -#define __NR_POSIX_SGI_reserved21 (__NR_POSIX + 314) -#define __NR_POSIX_SGI_reserved22 (__NR_POSIX + 315) -#define __NR_POSIX_SGI_reserved23 (__NR_POSIX + 316) -#define __NR_POSIX_SGI_reserved24 (__NR_POSIX + 317) -#define __NR_POSIX_SGI_reserved25 (__NR_POSIX + 318) -#define __NR_POSIX_SGI_reserved26 (__NR_POSIX + 319) - -#endif /* _ASM_RISCOS_SYSCALL_H */ --- a/drivers/net/gt64240eth.h +++ /dev/null @@ -1,402 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 2001 Patton Electronics Company - * Copyright (C) 2002 Momentum Computer - * - * Copyright 2000 MontaVista Software Inc. - * Author: MontaVista Software, Inc. - * stevel@mvista.com or support@mvista.com - * - * This program is free software; you can distribute it and/or modify it - * under the terms of the GNU General Public License (Version 2) as - * published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Ethernet driver definitions for the MIPS GT96100 Advanced - * Communication Controller. - * - * Modified for the Marvellous GT64240 Retarded Communication Controller. - */ -#ifndef _GT64240ETH_H -#define _GT64240ETH_H - -#include - -#define ETHERNET_PORTS_DIFFERENCE_OFFSETS 0x400 - -/* Translate those weanie names from Galileo/VxWorks header files: */ - -#define GT64240_MRR MAIN_ROUTING_REGISTER -#define GT64240_CIU_ARBITER_CONFIG COMM_UNIT_ARBITER_CONFIGURATION_REGISTER -#define GT64240_CIU_ARBITER_CONTROL COMM_UNIT_ARBITER_CONTROL -#define GT64240_MAIN_LOW_CAUSE LOW_INTERRUPT_CAUSE_REGISTER -#define GT64240_MAIN_HIGH_CAUSE HIGH_INTERRUPT_CAUSE_REGISTER -#define GT64240_CPU_LOW_MASK CPU_INTERRUPT_MASK_REGISTER_LOW -#define GT64240_CPU_HIGH_MASK CPU_INTERRUPT_MASK_REGISTER_HIGH -#define GT64240_CPU_SELECT_CAUSE CPU_SELECT_CAUSE_REGISTER - -#define GT64240_ETH_PHY_ADDR_REG ETHERNET_PHY_ADDRESS_REGISTER -#define GT64240_ETH_PORT_CONFIG ETHERNET0_PORT_CONFIGURATION_REGISTER -#define GT64240_ETH_PORT_CONFIG_EXT ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER -#define GT64240_ETH_PORT_COMMAND ETHERNET0_PORT_COMMAND_REGISTER -#define GT64240_ETH_PORT_STATUS ETHERNET0_PORT_STATUS_REGISTER -#define GT64240_ETH_IO_SIZE ETHERNET_PORTS_DIFFERENCE_OFFSETS -#define GT64240_ETH_SMI_REG ETHERNET_SMI_REGISTER -#define GT64240_ETH_MIB_COUNT_BASE ETHERNET0_MIB_COUNTER_BASE -#define GT64240_ETH_SDMA_CONFIG ETHERNET0_SDMA_CONFIGURATION_REGISTER -#define GT64240_ETH_SDMA_COMM ETHERNET0_SDMA_COMMAND_REGISTER -#define GT64240_ETH_INT_MASK ETHERNET0_INTERRUPT_MASK_REGISTER -#define GT64240_ETH_INT_CAUSE ETHERNET0_INTERRUPT_CAUSE_REGISTER -#define GT64240_ETH_CURR_TX_DESC_PTR0 ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_CURR_TX_DESC_PTR1 ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER1 -#define GT64240_ETH_1ST_RX_DESC_PTR0 ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_CURR_RX_DESC_PTR0 ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0 -#define GT64240_ETH_HASH_TBL_PTR ETHERNET0_HASH_TABLE_POINTER_REGISTER - -/* Turn on NAPI by default */ - -#define GT64240_NAPI 1 - -/* Some 64240 settings that SHOULD eventually be setup in PROM monitor: */ -/* (Board-specific to the DSL3224 Rev A board ONLY!) */ -#define D3224_MPP_CTRL0_SETTING 0x66669900 -#define D3224_MPP_CTRL1_SETTING 0x00000000 -#define D3224_MPP_CTRL2_SETTING 0x00887700 -#define D3224_MPP_CTRL3_SETTING 0x00000044 -#define D3224_GPP_IO_CTRL_SETTING 0x0000e800 -#define D3224_GPP_LEVEL_CTRL_SETTING 0xf001f703 -#define D3224_GPP_VALUE_SETTING 0x00000000 - -/* Keep the ring sizes a power of two for efficiency. */ -//-#define TX_RING_SIZE 16 -#define TX_RING_SIZE 64 /* TESTING !!! */ -#define RX_RING_SIZE 32 -#define PKT_BUF_SZ 1536 /* Size of each temporary Rx buffer. */ - -#define RX_HASH_TABLE_SIZE 16384 -#define HASH_HOP_NUMBER 12 - -#define NUM_INTERFACES 3 - -#define GT64240ETH_TX_TIMEOUT HZ/4 - -#define MIPS_GT64240_BASE 0xf4000000 -#define GT64240_ETH0_BASE (MIPS_GT64240_BASE + GT64240_ETH_PORT_CONFIG) -#define GT64240_ETH1_BASE (GT64240_ETH0_BASE + GT64240_ETH_IO_SIZE) -#define GT64240_ETH2_BASE (GT64240_ETH1_BASE + GT64240_ETH_IO_SIZE) - -#if defined(CONFIG_MIPS_DSL3224) -#define GT64240_ETHER0_IRQ 4 -#define GT64240_ETHER1_IRQ 4 -#else -#define GT64240_ETHER0_IRQ -1 -#define GT64240_ETHER1_IRQ -1 -#endif - -#define REV_GT64240 0x1 -#define REV_GT64240A 0x10 - -#define GT64240ETH_READ(gp, offset) \ - GT_READ((gp)->port_offset + (offset)) - -#define GT64240ETH_WRITE(gp, offset, data) \ - GT_WRITE((gp)->port_offset + (offset), (data)) - -#define GT64240ETH_SETBIT(gp, offset, bits) \ - GT64240ETH_WRITE((gp), (offset), \ - GT64240ETH_READ((gp), (offset)) | (bits)) - -#define GT64240ETH_CLRBIT(gp, offset, bits) \ - GT64240ETH_WRITE((gp), (offset), \ - GT64240ETH_READ((gp), (offset)) & ~(bits)) - -#define GT64240_READ(ofs) GT_READ(ofs) -#define GT64240_WRITE(ofs, data) GT_WRITE((ofs), (data)) - -/* Bit definitions of the SMI Reg */ -enum { - smirDataMask = 0xffff, - smirPhyAdMask = 0x1f << 16, - smirPhyAdBit = 16, - smirRegAdMask = 0x1f << 21, - smirRegAdBit = 21, - smirOpCode = 1 << 26, - smirReadValid = 1 << 27, - smirBusy = 1 << 28 -}; - -/* Bit definitions of the Port Config Reg */ -enum pcr_bits { - pcrPM = 1 << 0, - pcrRBM = 1 << 1, - pcrPBF = 1 << 2, - pcrEN = 1 << 7, - pcrLPBKMask = 0x3 << 8, - pcrLPBKBit = 1 << 8, - pcrFC = 1 << 10, - pcrHS = 1 << 12, - pcrHM = 1 << 13, - pcrHDM = 1 << 14, - pcrHD = 1 << 15, - pcrISLMask = 0x7 << 28, - pcrISLBit = 28, - pcrACCS = 1 << 31 -}; - -/* Bit definitions of the Port Config Extend Reg */ -enum pcxr_bits { - pcxrIGMP = 1, - pcxrSPAN = 2, - pcxrPAR = 4, - pcxrPRIOtxMask = 0x7 << 3, - pcxrPRIOtxBit = 3, - pcxrPRIOrxMask = 0x3 << 6, - pcxrPRIOrxBit = 6, - pcxrPRIOrxOverride = 1 << 8, - pcxrDPLXen = 1 << 9, - pcxrFCTLen = 1 << 10, - pcxrFLP = 1 << 11, - pcxrFCTL = 1 << 12, - pcxrMFLMask = 0x3 << 14, - pcxrMFLBit = 14, - pcxrMIBclrMode = 1 << 16, - pcxrSpeed = 1 << 18, - pcxrSpeeden = 1 << 19, - pcxrRMIIen = 1 << 20, - pcxrDSCPen = 1 << 21 -}; - -/* Bit definitions of the Port Command Reg */ -enum pcmr_bits { - pcmrFJ = 1 << 15 -}; - - -/* Bit definitions of the Port Status Reg */ -enum psr_bits { - psrSpeed = 1, - psrDuplex = 2, - psrFctl = 4, - psrLink = 8, - psrPause = 1 << 4, - psrTxLow = 1 << 5, - psrTxHigh = 1 << 6, - psrTxInProg = 1 << 7 -}; - -/* Bit definitions of the SDMA Config Reg */ -enum sdcr_bits { - sdcrRCMask = 0xf << 2, - sdcrRCBit = 2, - sdcrBLMR = 1 << 6, - sdcrBLMT = 1 << 7, - sdcrPOVR = 1 << 8, - sdcrRIFB = 1 << 9, - sdcrBSZMask = 0x3 << 12, - sdcrBSZBit = 12 -}; - -/* Bit definitions of the SDMA Command Reg */ -enum sdcmr_bits { - sdcmrERD = 1 << 7, - sdcmrAR = 1 << 15, - sdcmrSTDH = 1 << 16, - sdcmrSTDL = 1 << 17, - sdcmrTXDH = 1 << 23, - sdcmrTXDL = 1 << 24, - sdcmrAT = 1 << 31 -}; - -/* Bit definitions of the Interrupt Cause Reg */ -enum icr_bits { - icrRxBuffer = 1, - icrTxBufferHigh = 1 << 2, - icrTxBufferLow = 1 << 3, - icrTxEndHigh = 1 << 6, - icrTxEndLow = 1 << 7, - icrRxError = 1 << 8, - icrTxErrorHigh = 1 << 10, - icrTxErrorLow = 1 << 11, - icrRxOVR = 1 << 12, - icrTxUdr = 1 << 13, - icrRxBufferQ0 = 1 << 16, - icrRxBufferQ1 = 1 << 17, - icrRxBufferQ2 = 1 << 18, - icrRxBufferQ3 = 1 << 19, - icrRxErrorQ0 = 1 << 20, - icrRxErrorQ1 = 1 << 21, - icrRxErrorQ2 = 1 << 22, - icrRxErrorQ3 = 1 << 23, - icrMIIPhySTC = 1 << 28, - icrSMIdone = 1 << 29, - icrEtherIntSum = 1 << 31 -}; - - -/* The Rx and Tx descriptor lists. */ -#ifdef __LITTLE_ENDIAN -typedef struct { - u32 cmdstat; - u16 reserved; //-prk21aug01 u32 reserved:16; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u32 buff_ptr; - u32 next; -} gt64240_td_t; - -typedef struct { - u32 cmdstat; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u16 buff_sz; //-prk21aug01 u32 buff_sz:16; - u32 buff_ptr; - u32 next; -} gt64240_rd_t; -#elif defined(__BIG_ENDIAN) -typedef struct { - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u16 reserved; //-prk21aug01 u32 reserved:16; - u32 cmdstat; - u32 next; - u32 buff_ptr; -} gt64240_td_t; - -typedef struct { - u16 buff_sz; //-prk21aug01 u32 buff_sz:16; - u16 byte_cnt; //-prk21aug01 u32 byte_cnt:16; - u32 cmdstat; - u32 next; - u32 buff_ptr; -} gt64240_rd_t; -#else -#error Either __BIG_ENDIAN or __LITTLE_ENDIAN must be defined! -#endif - - -/* Values for the Tx command-status descriptor entry. */ -enum td_cmdstat { - txOwn = 1 << 31, - txAutoMode = 1 << 30, - txEI = 1 << 23, - txGenCRC = 1 << 22, - txPad = 1 << 18, - txFirst = 1 << 17, - txLast = 1 << 16, - txErrorSummary = 1 << 15, - txReTxCntMask = 0x0f << 10, - txReTxCntBit = 10, - txCollision = 1 << 9, - txReTxLimit = 1 << 8, - txUnderrun = 1 << 6, - txLateCollision = 1 << 5 -}; - - -/* Values for the Rx command-status descriptor entry. */ -enum rd_cmdstat { - rxOwn = 1 << 31, - rxAutoMode = 1 << 30, - rxEI = 1 << 23, - rxFirst = 1 << 17, - rxLast = 1 << 16, - rxErrorSummary = 1 << 15, - rxIGMP = 1 << 14, - rxHashExpired = 1 << 13, - rxMissedFrame = 1 << 12, - rxFrameType = 1 << 11, - rxShortFrame = 1 << 8, - rxMaxFrameLen = 1 << 7, - rxOverrun = 1 << 6, - rxCollision = 1 << 4, - rxCRCError = 1 -}; - -/* Bit fields of a Hash Table Entry */ -enum hash_table_entry { - hteValid = 1, - hteSkip = 2, - hteRD = 4 -}; - -// The MIB counters -typedef struct { - u32 byteReceived; - u32 byteSent; - u32 framesReceived; - u32 framesSent; - u32 totalByteReceived; - u32 totalFramesReceived; - u32 broadcastFramesReceived; - u32 multicastFramesReceived; - u32 cRCError; - u32 oversizeFrames; - u32 fragments; - u32 jabber; - u32 collision; - u32 lateCollision; - u32 frames64; - u32 frames65_127; - u32 frames128_255; - u32 frames256_511; - u32 frames512_1023; - u32 frames1024_MaxSize; - u32 macRxError; - u32 droppedFrames; - u32 outMulticastFrames; - u32 outBroadcastFrames; - u32 undersizeFrames; -} mib_counters_t; - - -struct gt64240_private { - gt64240_rd_t *rx_ring; - gt64240_td_t *tx_ring; - // The Rx and Tx rings must be 16-byte aligned - dma_addr_t rx_ring_dma; - dma_addr_t tx_ring_dma; - char *hash_table; - // The Hash Table must be 8-byte aligned - dma_addr_t hash_table_dma; - int hash_mode; - - // The Rx buffers must be 8-byte aligned - char *rx_buff; - dma_addr_t rx_buff_dma; - // Tx buffers (tx_skbuff[i]->data) with less than 8 bytes - // of payload must be 8-byte aligned - struct sk_buff *tx_skbuff[TX_RING_SIZE]; - int rx_next_out; /* The next free ring entry to receive */ - int tx_next_in; /* The next free ring entry to send */ - int tx_next_out; /* The last ring entry the ISR processed */ - int tx_count; /* current # of pkts waiting to be sent in Tx ring */ - int intr_work_done; /* number of Rx and Tx pkts processed in the isr */ - int tx_full; /* Tx ring is full */ - - mib_counters_t mib; - struct net_device_stats stats; - - int io_size; - int port_num; // 0 or 1 - u32 port_offset; - - int phy_addr; // PHY address - u32 last_psr; // last value of the port status register - - int options; /* User-settable misc. driver options. */ - int drv_flags; - spinlock_t lock; /* Serialise access to device */ - struct mii_if_info mii_if; - - u32 msg_enable; -}; - -#endif /* _GT64240ETH_H */ --- a/drivers/net/wan/lmc/lmc_prot.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _LMC_PROTO_H_ -#define _LMC_PROTO_H_ - -void lmc_proto_init(lmc_softc_t * const) -void lmc_proto_attach(lmc_softc_t *sc const) -void lmc_proto_detach(lmc_softc *sc const) -void lmc_proto_reopen(lmc_softc_t *sc const) -int lmc_proto_ioctl(lmc_softc_t *sc const, struct ifreq *ifr, int cmd) -void lmc_proto_open(lmc_softc_t *sc const) -void lmc_proto_close(lmc_softc_t *sc const) -unsigned short lmc_proto_type(lmc_softc_t *sc const, struct skbuff *skb) - - -#endif - --- a/arch/ppc/syslib/qspan_pci.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * QSpan pci routines. - * Most 8xx boards use the QSpan PCI bridge. The config address register - * is located 0x500 from the base of the bridge control/status registers. - * The data register is located at 0x504. - * This is a two step operation. First, the address register is written, - * then the data register is read/written as required. - * I don't know what to do about interrupts (yet). - * - * The RPX Classic implementation shares a chip select for normal - * PCI access and QSpan control register addresses. The selection is - * further selected by a bit setting in a board control register. - * Although it should happen, we disable interrupts during this operation - * to make sure some driver doesn't accidentally access the PCI while - * we have switched the chip select. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - - -/* - * This blows...... - * When reading the configuration space, if something does not respond - * the bus times out and we get a machine check interrupt. So, the - * good ol' exception tables come to mind to trap it and return some - * value. - * - * On an error we just return a -1, since that is what the caller wants - * returned if nothing is present. I copied this from __get_user_asm, - * with the only difference of returning -1 instead of EFAULT. - * There is an associated hack in the machine check trap code. - * - * The QSPAN is also a big endian device, that is it makes the PCI - * look big endian to us. This presents a problem for the Linux PCI - * functions, which assume little endian. For example, we see the - * first 32-bit word like this: - * ------------------------ - * | Device ID | Vendor ID | - * ------------------------ - * If we read/write as a double word, that's OK. But in our world, - * when read as a word, device ID is at location 0, not location 2 as - * the little endian PCI would believe. We have to switch bits in - * the PCI addresses given to us to get the data to/from the correct - * byte lanes. - * - * The QSPAN only supports 4 bits of "slot" in the dev_fn instead of 5. - * It always forces the MS bit to zero. Therefore, dev_fn values - * greater than 128 are returned as "no device found" errors. - * - * The QSPAN can only perform long word (32-bit) configuration cycles. - * The "offset" must have the two LS bits set to zero. Read operations - * require we read the entire word and then sort out what should be - * returned. Write operations other than long word require that we - * read the long word, update the proper word or byte, then write the - * entire long word back. - * - * PCI Bridge hack. We assume (correctly) that bus 0 is the primary - * PCI bus from the QSPAN. If we are called with a bus number other - * than zero, we create a Type 1 configuration access that a downstream - * PCI bridge will interpret. - */ - -#define __get_qspan_pci_config(x, addr, op) \ - __asm__ __volatile__( \ - "1: "op" %0,0(%1)\n" \ - " eieio\n" \ - "2:\n" \ - ".section .fixup,\"ax\"\n" \ - "3: li %0,-1\n" \ - " b 2b\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 2\n" \ - " .long 1b,3b\n" \ - ".text" \ - : "=r"(x) : "r"(addr) : " %0") - -#define QS_CONFIG_ADDR ((volatile uint *)(PCI_CSR_ADDR + 0x500)) -#define QS_CONFIG_DATA ((volatile uint *)(PCI_CSR_ADDR + 0x504)) - -#define mk_config_addr(bus, dev, offset) \ - (((bus)<<16) | ((dev)<<8) | (offset & 0xfc)) - -#define mk_config_type1(bus, dev, offset) \ - mk_config_addr(bus, dev, offset) | 1; - -static DEFINE_SPINLOCK(pcibios_lock); - -int qspan_pcibios_read_config_byte(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned char *val) -{ - uint temp; - u_char *cp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(temp, QS_CONFIG_DATA, "lwz"); - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - offset ^= 0x03; - cp = ((u_char *)&temp) + (offset & 0x03); - *val = *cp; - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_read_config_word(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned short *val) -{ - uint temp; - ushort *sp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xffff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(temp, QS_CONFIG_DATA, "lwz"); - offset ^= 0x02; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - sp = ((ushort *)&temp) + ((offset >> 1) & 1); - *val = *sp; - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_read_config_dword(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned int *val) -{ -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) { - *val = 0xffffffff; - return PCIBIOS_DEVICE_NOT_FOUND; - } - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - __get_qspan_pci_config(*val, QS_CONFIG_DATA, "lwz"); - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_byte(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned char val) -{ - uint temp; - u_char *cp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - - qspan_pcibios_read_config_dword(bus, dev_fn, offset, &temp); - - offset ^= 0x03; - cp = ((u_char *)&temp) + (offset & 0x03); - *cp = val; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *QS_CONFIG_DATA = temp; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_word(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned short val) -{ - uint temp; - ushort *sp; -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - - qspan_pcibios_read_config_dword(bus, dev_fn, offset, &temp); - - offset ^= 0x02; - sp = ((ushort *)&temp) + ((offset >> 1) & 1); - *sp = val; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *QS_CONFIG_DATA = temp; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_write_config_dword(unsigned char bus, unsigned char dev_fn, - unsigned char offset, unsigned int val) -{ -#ifdef CONFIG_RPXCLASSIC - unsigned long flags; -#endif - - if ((bus > 7) || (dev_fn > 127)) - return PCIBIOS_DEVICE_NOT_FOUND; - -#ifdef CONFIG_RPXCLASSIC - /* disable interrupts */ - spin_lock_irqsave(&pcibios_lock, flags); - *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; - eieio(); -#endif - - if (bus == 0) - *QS_CONFIG_ADDR = mk_config_addr(bus, dev_fn, offset); - else - *QS_CONFIG_ADDR = mk_config_type1(bus, dev_fn, offset); - *(unsigned int *)QS_CONFIG_DATA = val; - -#ifdef CONFIG_RPXCLASSIC - *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; - eieio(); - spin_unlock_irqrestore(&pcibios_lock, flags); -#endif - - return PCIBIOS_SUCCESSFUL; -} - -int qspan_pcibios_find_device(unsigned short vendor, unsigned short dev_id, - unsigned short index, unsigned char *bus_ptr, - unsigned char *dev_fn_ptr) -{ - int num, devfn; - unsigned int x, vendev; - - if (vendor == 0xffff) - return PCIBIOS_BAD_VENDOR_ID; - vendev = (dev_id << 16) + vendor; - num = 0; - for (devfn = 0; devfn < 32; devfn++) { - qspan_pcibios_read_config_dword(0, devfn<<3, PCI_VENDOR_ID, &x); - if (x == vendev) { - if (index == num) { - *bus_ptr = 0; - *dev_fn_ptr = devfn<<3; - return PCIBIOS_SUCCESSFUL; - } - ++num; - } - } - return PCIBIOS_DEVICE_NOT_FOUND; -} - -int qspan_pcibios_find_class(unsigned int class_code, unsigned short index, - unsigned char *bus_ptr, unsigned char *dev_fn_ptr) -{ - int devnr, x, num; - - num = 0; - for (devnr = 0; devnr < 32; devnr++) { - qspan_pcibios_read_config_dword(0, devnr<<3, PCI_CLASS_REVISION, &x); - if ((x>>8) == class_code) { - if (index == num) { - *bus_ptr = 0; - *dev_fn_ptr = devnr<<3; - return PCIBIOS_SUCCESSFUL; - } - ++num; - } - } - return PCIBIOS_DEVICE_NOT_FOUND; -} - -void __init -m8xx_pcibios_fixup(void)) -{ - /* Lots to do here, all board and configuration specific. */ -} - -void __init -m8xx_setup_pci_ptrs(void)) -{ - set_config_access_method(qspan); - - ppc_md.pcibios_fixup = m8xx_pcibios_fixup; -} - --- a/arch/ppc/syslib/Makefile +++ b/arch/ppc/syslib/Makefile @@ -37,7 +37,6 @@ endif endif obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o $(wdt-mpc8xx-y) \ ppc_sys.o mpc8xx_devices.o mpc8xx_sys.o -obj-$(CONFIG_PCI_QSPAN) += qspan_pci.o obj-$(CONFIG_PPC_OF) += prom_init.o prom.o obj-$(CONFIG_PPC_PMAC) += open_pic.o obj-$(CONFIG_POWER4) += open_pic2.o --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c @@ -5,9 +5,9 @@ Copyright 2000-2001 ATMEL Corporation. Copyright 2003-2004 Simon Kelley. - This code was developed from version 2.1.1 of the Atmel drivers, - released by Atmel corp. under the GPL in December 2002. It also - includes code from the Linux aironet drivers (C) Benjamin Reed, + This code was developed from version 2.1.1 of the Atmel drivers, + released by Atmel corp. under the GPL in December 2002. It also + includes code from the Linux aironet drivers (C) Benjamin Reed, and the Linux PCMCIA package, (C) David Hinds and the Linux wireless extensions, (C) Jean Tourrilhes. @@ -31,7 +31,7 @@ along with Atmel wireless lan drivers; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - For all queries about this code, please contact the current author, + For all queries about this code, please contact the current author, Simon Kelley and not Atmel Corporation. Credit is due to HP UK and Cambridge Online Systems Ltd for supplying @@ -79,13 +79,13 @@ MODULE_DESCRIPTION("Support for Atmel at MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("Atmel at76c50x wireless cards"); -/* The name of the firmware file to be loaded +/* The name of the firmware file to be loaded over-rides any automatic selection */ static char *firmware = NULL; module_param(firmware, charp, 0); /* table of firmware file names */ -static struct { +static struct { AtmelFWType fw_type; const char *fw_file; const char *fw_file_ext; @@ -104,17 +104,17 @@ static struct { #define MAX_SSID_LENGTH 32 #define MGMT_JIFFIES (256 * HZ / 100) -#define MAX_BSS_ENTRIES 64 +#define MAX_BSS_ENTRIES 64 /* registers */ -#define GCR 0x00 // (SIR0) General Configuration Register -#define BSR 0x02 // (SIR1) Bank Switching Select Register +#define GCR 0x00 // (SIR0) General Configuration Register +#define BSR 0x02 // (SIR1) Bank Switching Select Register #define AR 0x04 #define DR 0x08 -#define MR1 0x12 // Mirror Register 1 -#define MR2 0x14 // Mirror Register 2 -#define MR3 0x16 // Mirror Register 3 -#define MR4 0x18 // Mirror Register 4 +#define MR1 0x12 // Mirror Register 1 +#define MR2 0x14 // Mirror Register 2 +#define MR3 0x16 // Mirror Register 3 +#define MR4 0x18 // Mirror Register 4 #define GPR1 0x0c #define GPR2 0x0e @@ -123,9 +123,9 @@ static struct { // Constants for the GCR register. // #define GCR_REMAP 0x0400 // Remap internal SRAM to 0 -#define GCR_SWRES 0x0080 // BIU reset (ARM and PAI are NOT reset) +#define GCR_SWRES 0x0080 // BIU reset (ARM and PAI are NOT reset) #define GCR_CORES 0x0060 // Core Reset (ARM and PAI are reset) -#define GCR_ENINT 0x0002 // Enable Interrupts +#define GCR_ENINT 0x0002 // Enable Interrupts #define GCR_ACKINT 0x0008 // Acknowledge Interrupts #define BSS_SRAM 0x0200 // AMBA module selection --> SRAM @@ -190,7 +190,7 @@ struct rx_desc { u32 Next; u16 MsduPos; u16 MsduSize; - + u8 State; u8 Status; u8 Rate; @@ -199,7 +199,6 @@ struct rx_desc { u8 PreambleType; u16 Duration; u32 RxTime; - }; #define RX_DESC_FLAG_VALID 0x80 @@ -218,16 +217,15 @@ struct rx_desc { #define RX_DESC_DURATION_OFFSET 14 #define RX_DESC_RX_TIME_OFFSET 16 - struct tx_desc { u32 NextDescriptor; u16 TxStartOfFrame; u16 TxLength; - + u8 TxState; u8 TxStatus; u8 RetryCount; - + u8 TxRate; u8 KeyIndex; @@ -238,10 +236,8 @@ struct tx_desc { u8 Reserved; u8 PacketType; u16 HostTxLength; - }; - #define TX_DESC_NEXT_OFFSET 0 #define TX_DESC_POS_OFFSET 4 #define TX_DESC_SIZE_OFFSET 6 @@ -255,8 +251,6 @@ struct tx_desc { #define TX_DESC_PACKET_TYPE_OFFSET 17 #define TX_DESC_HOST_LENGTH_OFFSET 18 - - /////////////////////////////////////////////////////// // Host-MAC interface /////////////////////////////////////////////////////// @@ -266,7 +260,6 @@ struct tx_desc { #define TX_FIRM_OWN 0x80 #define TX_DONE 0x40 - #define TX_ERROR 0x01 #define TX_PACKET_TYPE_DATA 0x01 @@ -280,8 +273,7 @@ struct tx_desc { #define ISR_COMMAND_COMPLETE 0x10 // command completed #define ISR_OUT_OF_RANGE 0x20 // command completed #define ISR_IBSS_MERGE 0x40 // (4.1.2.30): IBSS merge -#define ISR_GENERIC_IRQ 0x80 - +#define ISR_GENERIC_IRQ 0x80 #define Local_Mib_Type 0x01 #define Mac_Address_Mib_Type 0x02 @@ -317,7 +309,6 @@ struct tx_desc { #define LOCAL_MIB_PREAMBLE_TYPE 9 #define MAC_ADDR_MIB_MAC_ADDR_POS 0 - #define CMD_Set_MIB_Vars 0x01 #define CMD_Get_MIB_Vars 0x02 #define CMD_Scan 0x03 @@ -338,7 +329,6 @@ struct tx_desc { #define CMD_STATUS_HOST_ERROR 0xFF #define CMD_STATUS_BUSY 0xFE - #define CMD_BLOCK_COMMAND_OFFSET 0 #define CMD_BLOCK_STATUS_OFFSET 1 #define CMD_BLOCK_PARAMETERS_OFFSET 4 @@ -347,15 +337,15 @@ struct tx_desc { #define MGMT_FRAME_BODY_OFFSET 24 #define MAX_AUTHENTICATION_RETRIES 3 -#define MAX_ASSOCIATION_RETRIES 3 +#define MAX_ASSOCIATION_RETRIES 3 #define AUTHENTICATION_RESPONSE_TIME_OUT 1000 #define MAX_WIRELESS_BODY 2316 /* mtu is 2312, CRC is 4 */ #define LOOP_RETRY_LIMIT 500000 -#define ACTIVE_MODE 1 -#define PS_MODE 2 +#define ACTIVE_MODE 1 +#define PS_MODE 2 #define MAX_ENCRYPTION_KEYS 4 #define MAX_ENCRYPTION_KEY_SIZE 40 @@ -377,7 +367,7 @@ struct tx_desc { #define REG_DOMAIN_MKK1 0x41 //Channel 1-14 Japan(MKK1) #define REG_DOMAIN_ISRAEL 0x50 //Channel 3-9 ISRAEL -#define BSS_TYPE_AD_HOC 1 +#define BSS_TYPE_AD_HOC 1 #define BSS_TYPE_INFRASTRUCTURE 2 #define SCAN_TYPE_ACTIVE 0 @@ -389,7 +379,7 @@ struct tx_desc { #define DATA_FRAME_WS_HEADER_SIZE 30 -/* promiscuous mode control */ +/* promiscuous mode control */ #define PROM_MODE_OFF 0x0 #define PROM_MODE_UNKNOWN 0x1 #define PROM_MODE_CRC_FAILED 0x2 @@ -398,8 +388,7 @@ struct tx_desc { #define PROM_MODE_CTRL 0x10 #define PROM_MODE_BAD_PROTOCOL 0x20 - -#define IFACE_INT_STATUS_OFFSET 0 +#define IFACE_INT_STATUS_OFFSET 0 #define IFACE_INT_MASK_OFFSET 1 #define IFACE_LOCKOUT_HOST_OFFSET 2 #define IFACE_LOCKOUT_MAC_OFFSET 3 @@ -407,7 +396,7 @@ struct tx_desc { #define IFACE_MAC_STAT_OFFSET 30 #define IFACE_GENERIC_INT_TYPE_OFFSET 32 -#define CIPHER_SUITE_NONE 0 +#define CIPHER_SUITE_NONE 0 #define CIPHER_SUITE_WEP_64 1 #define CIPHER_SUITE_TKIP 2 #define CIPHER_SUITE_AES 3 @@ -419,11 +408,11 @@ struct tx_desc { // // -// FuncCtrl field: +// FuncCtrl field: // #define FUNC_CTRL_TxENABLE 0x10 #define FUNC_CTRL_RxENABLE 0x20 -#define FUNC_CTRL_INIT_COMPLETE 0x01 +#define FUNC_CTRL_INIT_COMPLETE 0x01 /* A stub firmware image which reads the MAC address from NVRAM on the card. For copyright information and source see the end of this file. */ @@ -486,10 +475,10 @@ struct atmel_private { struct net_device_stats stats; // device stats spinlock_t irqlock, timerlock; // spinlocks enum { BUS_TYPE_PCCARD, BUS_TYPE_PCI } bus_type; - enum { - CARD_TYPE_PARALLEL_FLASH, + enum { + CARD_TYPE_PARALLEL_FLASH, CARD_TYPE_SPI_FLASH, - CARD_TYPE_EEPROM + CARD_TYPE_EEPROM } card_type; int do_rx_crc; /* If we need to CRC incoming packets */ int probe_crc; /* set if we don't yet know */ @@ -497,18 +486,18 @@ struct atmel_private { u16 rx_desc_head; u16 tx_desc_free, tx_desc_head, tx_desc_tail, tx_desc_previous; u16 tx_free_mem, tx_buff_head, tx_buff_tail; - + u16 frag_seq, frag_len, frag_no; - u8 frag_source[6]; - + u8 frag_source[6]; + u8 wep_is_on, default_key, exclude_unencrypted, encryption_level; u8 group_cipher_suite, pairwise_cipher_suite; u8 wep_keys[MAX_ENCRYPTION_KEYS][MAX_ENCRYPTION_KEY_SIZE]; - int wep_key_len[MAX_ENCRYPTION_KEYS]; + int wep_key_len[MAX_ENCRYPTION_KEYS]; int use_wpa, radio_on_broken; /* firmware dependent stuff. */ u16 host_info_base; - struct host_info_struct { + struct host_info_struct { /* NB this is matched to the hardware, don't change. */ u8 volatile int_status; u8 volatile int_mask; @@ -524,20 +513,20 @@ struct atmel_private { u16 rx_buff_size; u16 rx_desc_pos; u16 rx_desc_count; - + u16 build_version; - u16 command_pos; - + u16 command_pos; + u16 major_version; u16 minor_version; - + u16 func_ctrl; u16 mac_status; u16 generic_IRQ_type; u8 reserved[2]; } host_info; - enum { + enum { STATION_STATE_SCANNING, STATION_STATE_JOINNING, STATION_STATE_AUTHENTICATING, @@ -547,7 +536,7 @@ struct atmel_private { STATION_STATE_DOWN, STATION_STATE_MGMT_ERROR } station_state; - + int operating_mode, power_mode; time_t last_qual; int beacons_this_sec; @@ -560,18 +549,18 @@ struct atmel_private { int long_retry, short_retry; int preamble; int default_beacon_period, beacon_period, listen_interval; - int CurrentAuthentTransactionSeqNum, ExpectedAuthentTransactionSeqNum; + int CurrentAuthentTransactionSeqNum, ExpectedAuthentTransactionSeqNum; int AuthenticationRequestRetryCnt, AssociationRequestRetryCnt, ReAssociationRequestRetryCnt; enum { SITE_SURVEY_IDLE, SITE_SURVEY_IN_PROGRESS, - SITE_SURVEY_COMPLETED + SITE_SURVEY_COMPLETED } site_survey_state; time_t last_survey; int station_was_associated, station_is_associated; int fast_scan; - + struct bss_info { int channel; int SSIDsize; @@ -584,13 +573,12 @@ struct atmel_private { u8 SSID[MAX_SSID_LENGTH]; } BSSinfo[MAX_BSS_ENTRIES]; int BSS_list_entries, current_BSS; - int connect_to_any_BSS; + int connect_to_any_BSS; int SSID_size, new_SSID_size; u8 CurrentBSSID[6], BSSID[6]; u8 SSID[MAX_SSID_LENGTH], new_SSID[MAX_SSID_LENGTH]; u64 last_beacon_timestamp; u8 rx_buf[MAX_WIRELESS_BODY]; - }; static u8 atmel_basic_rates[4] = {0x82,0x84,0x0b,0x16}; @@ -598,39 +586,49 @@ static u8 atmel_basic_rates[4] = {0x82,0 static const struct { int reg_domain; int min, max; - char *name; + char *name; } channel_table[] = { { REG_DOMAIN_FCC, 1, 11, "USA" }, { REG_DOMAIN_DOC, 1, 11, "Canada" }, { REG_DOMAIN_ETSI, 1, 13, "Europe" }, { REG_DOMAIN_SPAIN, 10, 11, "Spain" }, - { REG_DOMAIN_FRANCE, 10, 13, "France" }, + { REG_DOMAIN_FRANCE, 10, 13, "France" }, { REG_DOMAIN_MKK, 14, 14, "MKK" }, { REG_DOMAIN_MKK1, 1, 14, "MKK1" }, { REG_DOMAIN_ISRAEL, 3, 9, "Israel"} }; static void build_wpa_mib(struct atmel_private *priv); static int atmel_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); -static void atmel_copy_to_card(struct net_device *dev, u16 dest, unsigned char *src, u16 len); -static void atmel_copy_to_host(struct net_device *dev, unsigned char *dest, u16 src, u16 len); +static void atmel_copy_to_card(struct net_device *dev, u16 dest, + unsigned char *src, u16 len); +static void atmel_copy_to_host(struct net_device *dev, unsigned char *dest, + u16 src, u16 len); static void atmel_set_gcr(struct net_device *dev, u16 mask); static void atmel_clear_gcr(struct net_device *dev, u16 mask); static int atmel_lock_mac(struct atmel_private *priv); static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data); static void atmel_command_irq(struct atmel_private *priv); static int atmel_validate_channel(struct atmel_private *priv, int channel); -static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, +static void atmel_management_frame(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, u16 frame_len, u8 rssi); static void atmel_management_timer(u_long a); -static void atmel_send_command(struct atmel_private *priv, int command, void *cmd, int cmd_size); -static int atmel_send_command_wait(struct atmel_private *priv, int command, void *cmd, int cmd_size); -static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, +static void atmel_send_command(struct atmel_private *priv, int command, + void *cmd, int cmd_size); +static int atmel_send_command_wait(struct atmel_private *priv, int command, + void *cmd, int cmd_size); +static void atmel_transmit_management_frame(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, u8 *body, int body_len); static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index); -static void atmel_set_mib8(struct atmel_private *priv, u8 type, u8 index, u8 data); -static void atmel_set_mib16(struct atmel_private *priv, u8 type, u8 index, u16 data); -static void atmel_set_mib(struct atmel_private *priv, u8 type, u8 index, u8 *data, int data_len); -static void atmel_get_mib(struct atmel_private *priv, u8 type, u8 index, u8 *data, int data_len); +static void atmel_set_mib8(struct atmel_private *priv, u8 type, u8 index, + u8 data); +static void atmel_set_mib16(struct atmel_private *priv, u8 type, u8 index, + u16 data); +static void atmel_set_mib(struct atmel_private *priv, u8 type, u8 index, + u8 *data, int data_len); +static void atmel_get_mib(struct atmel_private *priv, u8 type, u8 index, + u8 *data, int data_len); static void atmel_scan(struct atmel_private *priv, int specific_ssid); static void atmel_join_bss(struct atmel_private *priv, int bss_index); static void atmel_smooth_qual(struct atmel_private *priv); @@ -650,12 +648,12 @@ static inline u16 atmel_co(struct atmel_ return priv->host_info.command_pos + offset; } -static inline u16 atmel_rx(struct atmel_private *priv, u16 offset, u16 desc) +static inline u16 atmel_rx(struct atmel_private *priv, u16 offset, u16 desc) { return priv->host_info.rx_desc_pos + (sizeof(struct rx_desc) * desc) + offset; } -static inline u16 atmel_tx(struct atmel_private *priv, u16 offset, u16 desc) +static inline u16 atmel_tx(struct atmel_private *priv, u16 offset, u16 desc) { return priv->host_info.tx_desc_pos + (sizeof(struct tx_desc) * desc) + offset; } @@ -682,25 +680,25 @@ static inline void atmel_write16(struct static inline u8 atmel_rmem8(struct atmel_private *priv, u16 pos) { - atmel_writeAR(priv->dev, pos); + atmel_writeAR(priv->dev, pos); return atmel_read8(priv->dev, DR); } static inline void atmel_wmem8(struct atmel_private *priv, u16 pos, u16 data) { - atmel_writeAR(priv->dev, pos); + atmel_writeAR(priv->dev, pos); atmel_write8(priv->dev, DR, data); } static inline u16 atmel_rmem16(struct atmel_private *priv, u16 pos) { - atmel_writeAR(priv->dev, pos); + atmel_writeAR(priv->dev, pos); return atmel_read16(priv->dev, DR); } static inline void atmel_wmem16(struct atmel_private *priv, u16 pos, u16 data) { - atmel_writeAR(priv->dev, pos); + atmel_writeAR(priv->dev, pos); atmel_write16(priv->dev, DR, data); } @@ -710,11 +708,10 @@ static void tx_done_irq(struct atmel_pri { int i; - for (i = 0; + for (i = 0; atmel_rmem8(priv, atmel_tx(priv, TX_DESC_FLAGS_OFFSET, priv->tx_desc_head)) == TX_DONE && i < priv->host_info.tx_desc_count; i++) { - u8 status = atmel_rmem8(priv, atmel_tx(priv, TX_DESC_STATUS_OFFSET, priv->tx_desc_head)); u16 msdu_size = atmel_rmem16(priv, atmel_tx(priv, TX_DESC_SIZE_OFFSET, priv->tx_desc_head)); u8 type = atmel_rmem8(priv, atmel_tx(priv, TX_DESC_PACKET_TYPE_OFFSET, priv->tx_desc_head)); @@ -728,16 +725,16 @@ static void tx_done_irq(struct atmel_pri priv->tx_buff_head = 0; else priv->tx_buff_head += msdu_size; - + if (priv->tx_desc_head < (priv->host_info.tx_desc_count - 1)) - priv->tx_desc_head++ ; + priv->tx_desc_head++ ; else priv->tx_desc_head = 0; - + if (type == TX_PACKET_TYPE_DATA) { if (status == TX_STATUS_SUCCESS) priv->stats.tx_packets++; - else + else priv->stats.tx_errors++; netif_wake_queue(priv->dev); } @@ -748,21 +745,22 @@ static u16 find_tx_buff(struct atmel_pri { u16 bottom_free = priv->host_info.tx_buff_size - priv->tx_buff_tail; - if (priv->tx_desc_free == 3 || priv->tx_free_mem < len) + if (priv->tx_desc_free == 3 || priv->tx_free_mem < len) return 0; - + if (bottom_free >= len) return priv->host_info.tx_buff_pos + priv->tx_buff_tail; - + if (priv->tx_free_mem - bottom_free >= len) { priv->tx_buff_tail = 0; return priv->host_info.tx_buff_pos; } - + return 0; } -static void tx_update_descriptor(struct atmel_private *priv, int is_bcast, u16 len, u16 buff, u8 type) +static void tx_update_descriptor(struct atmel_private *priv, int is_bcast, + u16 len, u16 buff, u8 type) { atmel_wmem16(priv, atmel_tx(priv, TX_DESC_POS_OFFSET, priv->tx_desc_tail), buff); atmel_wmem16(priv, atmel_tx(priv, TX_DESC_SIZE_OFFSET, priv->tx_desc_tail), len); @@ -775,8 +773,8 @@ static void tx_update_descriptor(struct int cipher_type, cipher_length; if (is_bcast) { cipher_type = priv->group_cipher_suite; - if (cipher_type == CIPHER_SUITE_WEP_64 || - cipher_type == CIPHER_SUITE_WEP_128 ) + if (cipher_type == CIPHER_SUITE_WEP_64 || + cipher_type == CIPHER_SUITE_WEP_128) cipher_length = 8; else if (cipher_type == CIPHER_SUITE_TKIP) cipher_length = 12; @@ -790,8 +788,8 @@ static void tx_update_descriptor(struct } } else { cipher_type = priv->pairwise_cipher_suite; - if (cipher_type == CIPHER_SUITE_WEP_64 || - cipher_type == CIPHER_SUITE_WEP_128 ) + if (cipher_type == CIPHER_SUITE_WEP_64 || + cipher_type == CIPHER_SUITE_WEP_128) cipher_length = 8; else if (cipher_type == CIPHER_SUITE_TKIP) cipher_length = 12; @@ -804,9 +802,9 @@ static void tx_update_descriptor(struct cipher_length = 0; } } - + atmel_wmem8(priv, atmel_tx(priv, TX_DESC_CIPHER_TYPE_OFFSET, priv->tx_desc_tail), - cipher_type); + cipher_type); atmel_wmem8(priv, atmel_tx(priv, TX_DESC_CIPHER_LENGTH_OFFSET, priv->tx_desc_tail), cipher_length); } @@ -815,46 +813,46 @@ static void tx_update_descriptor(struct if (priv->tx_desc_previous != priv->tx_desc_tail) atmel_wmem32(priv, atmel_tx(priv, TX_DESC_NEXT_OFFSET, priv->tx_desc_previous), 0); priv->tx_desc_previous = priv->tx_desc_tail; - if (priv->tx_desc_tail < (priv->host_info.tx_desc_count -1 )) + if (priv->tx_desc_tail < (priv->host_info.tx_desc_count - 1)) priv->tx_desc_tail++; else priv->tx_desc_tail = 0; priv->tx_desc_free--; priv->tx_free_mem -= len; - } -static int start_tx (struct sk_buff *skb, struct net_device *dev) +static int start_tx(struct sk_buff *skb, struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); struct ieee80211_hdr_4addr header; unsigned long flags; u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN; u8 SNAP_RFC1024[6] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; - - if (priv->card && priv->present_callback && + + if (priv->card && priv->present_callback && !(*priv->present_callback)(priv->card)) { priv->stats.tx_errors++; dev_kfree_skb(skb); return 0; } - + if (priv->station_state != STATION_STATE_READY) { priv->stats.tx_errors++; dev_kfree_skb(skb); return 0; } - + /* first ensure the timer func cannot run */ - spin_lock_bh(&priv->timerlock); + spin_lock_bh(&priv->timerlock); /* then stop the hardware ISR */ - spin_lock_irqsave(&priv->irqlock, flags); + spin_lock_irqsave(&priv->irqlock, flags); /* nb doing the above in the opposite order will deadlock */ - + /* The Wireless Header is 30 bytes. In the Ethernet packet we "cut" the - 12 first bytes (containing DA/SA) and put them in the appropriate fields of - the Wireless Header. Thus the packet length is then the initial + 18 (+30-12) */ - + 12 first bytes (containing DA/SA) and put them in the appropriate + fields of the Wireless Header. Thus the packet length is then the + initial + 18 (+30-12) */ + if (!(buff = find_tx_buff(priv, len + 18))) { priv->stats.tx_dropped++; spin_unlock_irqrestore(&priv->irqlock, flags); @@ -862,7 +860,7 @@ static int start_tx (struct sk_buff *skb netif_stop_queue(dev); return 1; } - + frame_ctl = IEEE80211_FTYPE_DATA; header.duration_id = 0; header.seq_ctl = 0; @@ -878,7 +876,7 @@ static int start_tx (struct sk_buff *skb memcpy(&header.addr2, dev->dev_addr, 6); memcpy(&header.addr3, skb->data, 6); } - + if (priv->use_wpa) memcpy(&header.addr4, SNAP_RFC1024, 6); @@ -888,27 +886,27 @@ static int start_tx (struct sk_buff *skb /* Copy the packet sans its 802.3 header addresses which have been replaced */ atmel_copy_to_card(dev, buff + DATA_FRAME_WS_HEADER_SIZE, skb->data + 12, len - 12); priv->tx_buff_tail += len - 12 + DATA_FRAME_WS_HEADER_SIZE; - + /* low bit of first byte of destination tells us if broadcast */ tx_update_descriptor(priv, *(skb->data) & 0x01, len + 18, buff, TX_PACKET_TYPE_DATA); dev->trans_start = jiffies; priv->stats.tx_bytes += len; - + spin_unlock_irqrestore(&priv->irqlock, flags); spin_unlock_bh(&priv->timerlock); dev_kfree_skb(skb); - - return 0; + + return 0; } -static void atmel_transmit_management_frame(struct atmel_private *priv, +static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, u8 *body, int body_len) { u16 buff; - int len = MGMT_FRAME_BODY_OFFSET + body_len; - - if (!(buff = find_tx_buff(priv, len))) + int len = MGMT_FRAME_BODY_OFFSET + body_len; + + if (!(buff = find_tx_buff(priv, len))) return; atmel_copy_to_card(priv->dev, buff, (u8 *)header, MGMT_FRAME_BODY_OFFSET); @@ -916,24 +914,25 @@ static void atmel_transmit_management_fr priv->tx_buff_tail += len; tx_update_descriptor(priv, header->addr1[0] & 0x01, len, buff, TX_PACKET_TYPE_MGMT); } - -static void fast_rx_path(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, + +static void fast_rx_path(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, u16 msdu_size, u16 rx_packet_loc, u32 crc) { /* fast path: unfragmented packet copy directly into skbuf */ - u8 mac4[6]; - struct sk_buff *skb; + u8 mac4[6]; + struct sk_buff *skb; unsigned char *skbp; - + /* get the final, mac 4 header field, this tells us encapsulation */ atmel_copy_to_host(priv->dev, mac4, rx_packet_loc + 24, 6); msdu_size -= 6; - + if (priv->do_rx_crc) { crc = crc32_le(crc, mac4, 6); msdu_size -= 4; } - + if (!(skb = dev_alloc_skb(msdu_size + 14))) { priv->stats.rx_dropped++; return; @@ -942,7 +941,7 @@ static void fast_rx_path(struct atmel_pr skb_reserve(skb, 2); skbp = skb_put(skb, msdu_size + 12); atmel_copy_to_host(priv->dev, skbp + 12, rx_packet_loc + 30, msdu_size); - + if (priv->do_rx_crc) { u32 netcrc; crc = crc32_le(crc, skbp + 12, msdu_size); @@ -953,24 +952,25 @@ static void fast_rx_path(struct atmel_pr return; } } - + memcpy(skbp, header->addr1, 6); /* destination address */ - if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) + if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) memcpy(&skbp[6], header->addr3, 6); else memcpy(&skbp[6], header->addr2, 6); /* source address */ - - priv->dev->last_rx=jiffies; + + priv->dev->last_rx = jiffies; skb->dev = priv->dev; skb->protocol = eth_type_trans(skb, priv->dev); - skb->ip_summed = CHECKSUM_NONE; + skb->ip_summed = CHECKSUM_NONE; netif_rx(skb); priv->stats.rx_bytes += 12 + msdu_size; priv->stats.rx_packets++; } /* Test to see if the packet in card memory at packet_loc has a valid CRC - It doesn't matter that this is slow: it is only used to proble the first few packets. */ + It doesn't matter that this is slow: it is only used to proble the first few + packets. */ static int probe_crc(struct atmel_private *priv, u16 packet_loc, u16 msdu_size) { int i = msdu_size - 4; @@ -980,7 +980,7 @@ static int probe_crc(struct atmel_privat return 0; atmel_copy_to_host(priv->dev, (void *)&netcrc, packet_loc + i, 4); - + atmel_writeAR(priv->dev, packet_loc); while (i--) { u8 octet = atmel_read8(priv->dev, DR); @@ -990,20 +990,22 @@ static int probe_crc(struct atmel_privat return (crc ^ 0xffffffff) == netcrc; } -static void frag_rx_path(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, - u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, u8 frag_no, int more_frags) +static void frag_rx_path(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, + u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, + u8 frag_no, int more_frags) { - u8 mac4[6]; + u8 mac4[6]; u8 source[6]; struct sk_buff *skb; - if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) + if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) memcpy(source, header->addr3, 6); else - memcpy(source, header->addr2, 6); - + memcpy(source, header->addr2, 6); + rx_packet_loc += 24; /* skip header */ - + if (priv->do_rx_crc) msdu_size -= 4; @@ -1012,16 +1014,16 @@ static void frag_rx_path(struct atmel_pr msdu_size -= 6; rx_packet_loc += 6; - if (priv->do_rx_crc) + if (priv->do_rx_crc) crc = crc32_le(crc, mac4, 6); - + priv->frag_seq = seq_no; priv->frag_no = 1; priv->frag_len = msdu_size; - memcpy(priv->frag_source, source, 6); + memcpy(priv->frag_source, source, 6); memcpy(&priv->rx_buf[6], source, 6); memcpy(priv->rx_buf, header->addr1, 6); - + atmel_copy_to_host(priv->dev, &priv->rx_buf[12], rx_packet_loc, msdu_size); if (priv->do_rx_crc) { @@ -1033,17 +1035,17 @@ static void frag_rx_path(struct atmel_pr memset(priv->frag_source, 0xff, 6); } } - + } else if (priv->frag_no == frag_no && priv->frag_seq == seq_no && memcmp(priv->frag_source, source, 6) == 0) { - - atmel_copy_to_host(priv->dev, &priv->rx_buf[12 + priv->frag_len], + + atmel_copy_to_host(priv->dev, &priv->rx_buf[12 + priv->frag_len], rx_packet_loc, msdu_size); if (priv->do_rx_crc) { u32 netcrc; - crc = crc32_le(crc, - &priv->rx_buf[12 + priv->frag_len], + crc = crc32_le(crc, + &priv->rx_buf[12 + priv->frag_len], msdu_size); atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + msdu_size, 4); if ((crc ^ 0xffffffff) != netcrc) { @@ -1052,7 +1054,7 @@ static void frag_rx_path(struct atmel_pr more_frags = 1; /* don't send broken assembly */ } } - + priv->frag_len += msdu_size; priv->frag_no++; @@ -1062,60 +1064,60 @@ static void frag_rx_path(struct atmel_pr priv->stats.rx_dropped++; } else { skb_reserve(skb, 2); - memcpy(skb_put(skb, priv->frag_len + 12), + memcpy(skb_put(skb, priv->frag_len + 12), priv->rx_buf, priv->frag_len + 12); priv->dev->last_rx = jiffies; skb->dev = priv->dev; skb->protocol = eth_type_trans(skb, priv->dev); - skb->ip_summed = CHECKSUM_NONE; + skb->ip_summed = CHECKSUM_NONE; netif_rx(skb); priv->stats.rx_bytes += priv->frag_len + 12; priv->stats.rx_packets++; } } - } else priv->wstats.discard.fragment++; } - + static void rx_done_irq(struct atmel_private *priv) { int i; struct ieee80211_hdr_4addr header; - - for (i = 0; + + for (i = 0; atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID && i < priv->host_info.rx_desc_count; i++) { - + u16 msdu_size, rx_packet_loc, frame_ctl, seq_control; u8 status = atmel_rmem8(priv, atmel_rx(priv, RX_DESC_STATUS_OFFSET, priv->rx_desc_head)); u32 crc = 0xffffffff; - + if (status != RX_STATUS_SUCCESS) { if (status == 0xc1) /* determined by experiment */ priv->wstats.discard.nwid++; else - priv->stats.rx_errors++; + priv->stats.rx_errors++; goto next; } msdu_size = atmel_rmem16(priv, atmel_rx(priv, RX_DESC_MSDU_SIZE_OFFSET, priv->rx_desc_head)); rx_packet_loc = atmel_rmem16(priv, atmel_rx(priv, RX_DESC_MSDU_POS_OFFSET, priv->rx_desc_head)); - + if (msdu_size < 30) { - priv->stats.rx_errors++; + priv->stats.rx_errors++; goto next; } - + /* Get header as far as end of seq_ctl */ atmel_copy_to_host(priv->dev, (char *)&header, rx_packet_loc, 24); frame_ctl = le16_to_cpu(header.frame_ctl); seq_control = le16_to_cpu(header.seq_ctl); - /* probe for CRC use here if needed once five packets have arrived with - the same crc status, we assume we know what's happening and stop probing */ + /* probe for CRC use here if needed once five packets have + arrived with the same crc status, we assume we know what's + happening and stop probing */ if (priv->probe_crc) { if (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED)) { priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size); @@ -1130,34 +1132,33 @@ static void rx_done_irq(struct atmel_pri priv->probe_crc = 0; } } - + /* don't CRC header when WEP in use */ if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED))) { crc = crc32_le(0xffffffff, (unsigned char *)&header, 24); } msdu_size -= 24; /* header */ - if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) { - + if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) { int more_fragments = frame_ctl & IEEE80211_FCTL_MOREFRAGS; u8 packet_fragment_no = seq_control & IEEE80211_SCTL_FRAG; u16 packet_sequence_no = (seq_control & IEEE80211_SCTL_SEQ) >> 4; - - if (!more_fragments && packet_fragment_no == 0 ) { + + if (!more_fragments && packet_fragment_no == 0) { fast_rx_path(priv, &header, msdu_size, rx_packet_loc, crc); } else { frag_rx_path(priv, &header, msdu_size, rx_packet_loc, crc, packet_sequence_no, packet_fragment_no, more_fragments); } } - + if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) { /* copy rest of packet into buffer */ atmel_copy_to_host(priv->dev, (unsigned char *)&priv->rx_buf, rx_packet_loc + 24, msdu_size); - + /* we use the same buffer for frag reassembly and control packets */ memset(priv->frag_source, 0xff, 6); - + if (priv->do_rx_crc) { /* last 4 octets is crc */ msdu_size -= 4; @@ -1170,18 +1171,18 @@ static void rx_done_irq(struct atmel_pri atmel_management_frame(priv, &header, msdu_size, atmel_rmem8(priv, atmel_rx(priv, RX_DESC_RSSI_OFFSET, priv->rx_desc_head))); - } + } - next: +next: /* release descriptor */ - atmel_wmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head), RX_DESC_FLAG_CONSUMED); - + atmel_wmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head), RX_DESC_FLAG_CONSUMED); + if (priv->rx_desc_head < (priv->host_info.rx_desc_count - 1)) - priv->rx_desc_head++; + priv->rx_desc_head++; else priv->rx_desc_head = 0; } -} +} static irqreturn_t service_interrupt(int irq, void *dev_id, struct pt_regs *regs) { @@ -1189,7 +1190,7 @@ static irqreturn_t service_interrupt(int struct atmel_private *priv = netdev_priv(dev); u8 isr; int i = -1; - static u8 irq_order[] = { + static u8 irq_order[] = { ISR_OUT_OF_RANGE, ISR_RxCOMPLETE, ISR_TxCOMPLETE, @@ -1199,20 +1200,19 @@ static irqreturn_t service_interrupt(int ISR_IBSS_MERGE, ISR_GENERIC_IRQ }; - - if (priv->card && priv->present_callback && + if (priv->card && priv->present_callback && !(*priv->present_callback)(priv->card)) return IRQ_HANDLED; /* In this state upper-level code assumes it can mess with the card unhampered by interrupts which may change register state. Note that even though the card shouldn't generate interrupts - the inturrupt line may be shared. This allows card setup + the inturrupt line may be shared. This allows card setup to go on without disabling interrupts for a long time. */ if (priv->station_state == STATION_STATE_DOWN) return IRQ_NONE; - + atmel_clear_gcr(dev, GCR_ENINT); /* disable interrupts */ while (1) { @@ -1221,36 +1221,36 @@ static irqreturn_t service_interrupt(int printk(KERN_ALERT "%s: failed to contact MAC.\n", dev->name); return IRQ_HANDLED; } - + isr = atmel_rmem8(priv, atmel_hi(priv, IFACE_INT_STATUS_OFFSET)); atmel_wmem8(priv, atmel_hi(priv, IFACE_LOCKOUT_MAC_OFFSET), 0); - + if (!isr) { atmel_set_gcr(dev, GCR_ENINT); /* enable interrupts */ return i == -1 ? IRQ_NONE : IRQ_HANDLED; } - + atmel_set_gcr(dev, GCR_ACKINT); /* acknowledge interrupt */ - + for (i = 0; i < sizeof(irq_order)/sizeof(u8); i++) if (isr & irq_order[i]) break; - + if (!atmel_lock_mac(priv)) { /* failed to contact card */ printk(KERN_ALERT "%s: failed to contact MAC.\n", dev->name); return IRQ_HANDLED; } - + isr = atmel_rmem8(priv, atmel_hi(priv, IFACE_INT_STATUS_OFFSET)); isr ^= irq_order[i]; atmel_wmem8(priv, atmel_hi(priv, IFACE_INT_STATUS_OFFSET), isr); atmel_wmem8(priv, atmel_hi(priv, IFACE_LOCKOUT_MAC_OFFSET), 0); - + switch (irq_order[i]) { - - case ISR_OUT_OF_RANGE: - if (priv->operating_mode == IW_MODE_INFRA && + + case ISR_OUT_OF_RANGE: + if (priv->operating_mode == IW_MODE_INFRA && priv->station_state == STATION_STATE_READY) { priv->station_is_associated = 0; atmel_scan(priv, 1); @@ -1261,24 +1261,24 @@ static irqreturn_t service_interrupt(int priv->wstats.discard.misc++; /* fall through */ case ISR_RxCOMPLETE: - rx_done_irq(priv); + rx_done_irq(priv); break; - + case ISR_TxCOMPLETE: - tx_done_irq(priv); + tx_done_irq(priv); break; - + case ISR_FATAL_ERROR: printk(KERN_ALERT "%s: *** FATAL error interrupt ***\n", dev->name); atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); break; - - case ISR_COMMAND_COMPLETE: + + case ISR_COMMAND_COMPLETE: atmel_command_irq(priv); break; case ISR_IBSS_MERGE: - atmel_get_mib(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_CUR_BSSID_POS, + atmel_get_mib(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_CUR_BSSID_POS, priv->CurrentBSSID, 6); /* The WPA stuff cares about the current AP address */ if (priv->use_wpa) @@ -1288,24 +1288,23 @@ static irqreturn_t service_interrupt(int printk(KERN_INFO "%s: Generic_irq received.\n", dev->name); break; } - } + } } - -static struct net_device_stats *atmel_get_stats (struct net_device *dev) +static struct net_device_stats *atmel_get_stats(struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); return &priv->stats; } -static struct iw_statistics *atmel_get_wireless_stats (struct net_device *dev) +static struct iw_statistics *atmel_get_wireless_stats(struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); - /* update the link quality here in case we are seeing no beacons + /* update the link quality here in case we are seeing no beacons at all to drive the process */ atmel_smooth_qual(priv); - + priv->wstats.status = priv->station_state; if (priv->operating_mode == IW_MODE_INFRA) { @@ -1328,8 +1327,8 @@ static struct iw_statistics *atmel_get_w | IW_QUAL_NOISE_INVALID; priv->wstats.miss.beacon = 0; } - - return (&priv->wstats); + + return &priv->wstats; } static int atmel_change_mtu(struct net_device *dev, int new_mtu) @@ -1343,21 +1342,21 @@ static int atmel_change_mtu(struct net_d static int atmel_set_mac_address(struct net_device *dev, void *p) { struct sockaddr *addr = p; - + memcpy (dev->dev_addr, addr->sa_data, dev->addr_len); return atmel_open(dev); } EXPORT_SYMBOL(atmel_open); -int atmel_open (struct net_device *dev) +int atmel_open(struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); int i, channel; /* any scheduled timer is no longer needed and might screw things up.. */ del_timer_sync(&priv->management_timer); - + /* Interrupts will not touch the card once in this state... */ priv->station_state = STATION_STATE_DOWN; @@ -1377,7 +1376,7 @@ int atmel_open (struct net_device *dev) priv->site_survey_state = SITE_SURVEY_IDLE; priv->station_is_associated = 0; - if (!reset_atmel_card(dev)) + if (!reset_atmel_card(dev)) return -EAGAIN; if (priv->config_reg_domain) { @@ -1391,26 +1390,26 @@ int atmel_open (struct net_device *dev) if (i == sizeof(channel_table)/sizeof(channel_table[0])) { priv->reg_domain = REG_DOMAIN_MKK1; printk(KERN_ALERT "%s: failed to get regulatory domain: assuming MKK1.\n", dev->name); - } + } } - + if ((channel = atmel_validate_channel(priv, priv->channel))) priv->channel = channel; - /* this moves station_state on.... */ - atmel_scan(priv, 1); + /* this moves station_state on.... */ + atmel_scan(priv, 1); atmel_set_gcr(priv->dev, GCR_ENINT); /* enable interrupts */ return 0; } -static int atmel_close (struct net_device *dev) +static int atmel_close(struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); - + atmel_enter_state(priv, STATION_STATE_DOWN); - - if (priv->bus_type == BUS_TYPE_PCCARD) + + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(dev, GCR, 0x0060); atmel_write16(dev, GCR, 0x0040); return 0; @@ -1438,43 +1437,46 @@ static int atmel_proc_output (char *buf, int i; char *p = buf; char *s, *r, *c; - - p += sprintf(p, "Driver version:\t\t%d.%d\n", DRIVER_MAJOR, DRIVER_MINOR); - + + p += sprintf(p, "Driver version:\t\t%d.%d\n", + DRIVER_MAJOR, DRIVER_MINOR); + if (priv->station_state != STATION_STATE_DOWN) { - p += sprintf(p, "Firmware version:\t%d.%d build %d\nFirmware location:\t", + p += sprintf(p, "Firmware version:\t%d.%d build %d\n" + "Firmware location:\t", priv->host_info.major_version, priv->host_info.minor_version, priv->host_info.build_version); - - if (priv->card_type != CARD_TYPE_EEPROM) + + if (priv->card_type != CARD_TYPE_EEPROM) p += sprintf(p, "on card\n"); - else if (priv->firmware) - p += sprintf(p, "%s loaded by host\n", priv->firmware_id); + else if (priv->firmware) + p += sprintf(p, "%s loaded by host\n", + priv->firmware_id); else - p += sprintf(p, "%s loaded by hotplug\n", priv->firmware_id); - - switch(priv->card_type) { + p += sprintf(p, "%s loaded by hotplug\n", + priv->firmware_id); + + switch (priv->card_type) { case CARD_TYPE_PARALLEL_FLASH: c = "Parallel flash"; break; case CARD_TYPE_SPI_FLASH: c = "SPI flash\n"; break; case CARD_TYPE_EEPROM: c = "EEPROM"; break; default: c = ""; } - r = ""; for (i = 0; i < sizeof(channel_table)/sizeof(channel_table[0]); i++) if (priv->reg_domain == channel_table[i].reg_domain) r = channel_table[i].name; - + p += sprintf(p, "MAC memory type:\t%s\n", c); p += sprintf(p, "Regulatory domain:\t%s\n", r); - p += sprintf(p, "Host CRC checking:\t%s\n", + p += sprintf(p, "Host CRC checking:\t%s\n", priv->do_rx_crc ? "On" : "Off"); p += sprintf(p, "WPA-capable firmware:\t%s\n", priv->use_wpa ? "Yes" : "No"); } - + switch(priv->station_state) { case STATION_STATE_SCANNING: s = "Scanning"; break; case STATION_STATE_JOINNING: s = "Joining"; break; @@ -1486,9 +1488,9 @@ static int atmel_proc_output (char *buf, case STATION_STATE_DOWN: s = "Down"; break; default: s = ""; } - + p += sprintf(p, "Current state:\t\t%s\n", s); - return p - buf; + return p - buf; } static int atmel_read_proc(char *page, char **start, off_t off, @@ -1504,9 +1506,12 @@ static int atmel_read_proc(char *page, c return len; } -struct net_device *init_atmel_card( unsigned short irq, unsigned long port, const AtmelFWType fw_type, - struct device *sys_dev, int (*card_present)(void *), void *card) +struct net_device *init_atmel_card(unsigned short irq, unsigned long port, + const AtmelFWType fw_type, + struct device *sys_dev, + int (*card_present)(void *), void *card) { + struct proc_dir_entry *ent; struct net_device *dev; struct atmel_private *priv; int rc; @@ -1514,11 +1519,11 @@ struct net_device *init_atmel_card( unsi /* Create the network device object. */ dev = alloc_etherdev(sizeof(*priv)); if (!dev) { - printk(KERN_ERR "atmel: Couldn't alloc_etherdev\n"); + printk(KERN_ERR "atmel: Couldn't alloc_etherdev\n"); return NULL; } if (dev_alloc_name(dev, dev->name) < 0) { - printk(KERN_ERR "atmel: Couldn't get name!\n"); + printk(KERN_ERR "atmel: Couldn't get name!\n"); goto err_out_free; } @@ -1550,7 +1555,7 @@ struct net_device *init_atmel_card( unsi memset(priv->BSSID, 0, 6); priv->CurrentBSSID[0] = 0xFF; /* Initialize to something invalid.... */ priv->station_was_associated = 0; - + priv->last_survey = jiffies; priv->preamble = LONG_PREAMBLE; priv->operating_mode = IW_MODE_INFRA; @@ -1586,7 +1591,7 @@ struct net_device *init_atmel_card( unsi spin_lock_init(&priv->timerlock); priv->management_timer.function = atmel_management_timer; priv->management_timer.data = (unsigned long) dev; - + dev->open = atmel_open; dev->stop = atmel_close; dev->change_mtu = atmel_change_mtu; @@ -1597,44 +1602,46 @@ struct net_device *init_atmel_card( unsi dev->do_ioctl = atmel_ioctl; dev->irq = irq; dev->base_addr = port; - + SET_NETDEV_DEV(dev, sys_dev); - + if ((rc = request_irq(dev->irq, service_interrupt, SA_SHIRQ, dev->name, dev))) { - printk(KERN_ERR "%s: register interrupt %d failed, rc %d\n", dev->name, irq, rc ); + printk(KERN_ERR "%s: register interrupt %d failed, rc %d\n", dev->name, irq, rc); goto err_out_free; } - if (!request_region(dev->base_addr, 32, + if (!request_region(dev->base_addr, 32, priv->bus_type == BUS_TYPE_PCCARD ? "atmel_cs" : "atmel_pci")) { goto err_out_irq; } - + if (register_netdev(dev)) goto err_out_res; - + if (!probe_atmel_card(dev)){ unregister_netdev(dev); goto err_out_res; } - + netif_carrier_off(dev); - - create_proc_read_entry ("driver/atmel", 0, NULL, atmel_read_proc, priv); - + + ent = create_proc_read_entry ("driver/atmel", 0, NULL, atmel_read_proc, priv); + if (!ent) + printk(KERN_WARNING "atmel: unable to create /proc entry.\n"); + printk(KERN_INFO "%s: Atmel at76c50x. Version %d.%d. MAC %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", dev->name, DRIVER_MAJOR, DRIVER_MINOR, dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5] ); - + SET_MODULE_OWNER(dev); return dev; - - err_out_res: + +err_out_res: release_region( dev->base_addr, 32); - err_out_irq: +err_out_irq: free_irq(dev->irq, dev); - err_out_free: +err_out_free: free_netdev(dev); return NULL; } @@ -1644,12 +1651,12 @@ EXPORT_SYMBOL(init_atmel_card); void stop_atmel_card(struct net_device *dev) { struct atmel_private *priv = netdev_priv(dev); - + /* put a brick on it... */ - if (priv->bus_type == BUS_TYPE_PCCARD) + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(dev, GCR, 0x0060); atmel_write16(dev, GCR, 0x0040); - + del_timer_sync(&priv->management_timer); unregister_netdev(dev); remove_proc_entry("driver/atmel", NULL); @@ -1675,13 +1682,13 @@ static int atmel_set_essid(struct net_de int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; priv->connect_to_any_BSS = 0; - + /* Check the size of the string */ if (dwrq->length > MAX_SSID_LENGTH + 1) - return -E2BIG ; + return -E2BIG; if (index != 0) return -EINVAL; - + memcpy(priv->new_SSID, extra, dwrq->length - 1); priv->new_SSID_size = dwrq->length - 1; } @@ -1706,7 +1713,7 @@ static int atmel_get_essid(struct net_de extra[priv->SSID_size] = '\0'; dwrq->length = priv->SSID_size + 1; } - + dwrq->flags = !priv->connect_to_any_BSS; /* active */ return 0; @@ -1768,7 +1775,7 @@ static int atmel_set_encode(struct net_d /* WE specify that if a valid key is set, encryption * should be enabled (user may turn it off later) * This is also how "iwconfig ethX key on" works */ - if (index == current_index && + if (index == current_index && priv->wep_key_len[index] > 0) { priv->wep_is_on = 1; priv->exclude_unencrypted = 1; @@ -1783,18 +1790,18 @@ static int atmel_set_encode(struct net_d } else { /* Do we want to just set the transmit key index ? */ int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; - if ( index>=0 && index < 4 ) { + if (index >= 0 && index < 4) { priv->default_key = index; } else /* Don't complain if only change the mode */ - if(!dwrq->flags & IW_ENCODE_MODE) { + if (!dwrq->flags & IW_ENCODE_MODE) { return -EINVAL; } } /* Read the flags */ - if(dwrq->flags & IW_ENCODE_DISABLED) { + if (dwrq->flags & IW_ENCODE_DISABLED) { priv->wep_is_on = 0; - priv->encryption_level = 0; + priv->encryption_level = 0; priv->pairwise_cipher_suite = CIPHER_SUITE_NONE; } else { priv->wep_is_on = 1; @@ -1806,15 +1813,14 @@ static int atmel_set_encode(struct net_d priv->encryption_level = 1; } } - if(dwrq->flags & IW_ENCODE_RESTRICTED) + if (dwrq->flags & IW_ENCODE_RESTRICTED) priv->exclude_unencrypted = 1; - if(dwrq->flags & IW_ENCODE_OPEN) + if(dwrq->flags & IW_ENCODE_OPEN) priv->exclude_unencrypted = 0; - + return -EINPROGRESS; /* Call commit handler */ } - static int atmel_get_encode(struct net_device *dev, struct iw_request_info *info, struct iw_point *dwrq, @@ -1822,7 +1828,7 @@ static int atmel_get_encode(struct net_d { struct atmel_private *priv = netdev_priv(dev); int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; - + if (!priv->wep_is_on) dwrq->flags = IW_ENCODE_DISABLED; else { @@ -1843,7 +1849,7 @@ static int atmel_get_encode(struct net_d memset(extra, 0, 16); memcpy(extra, priv->wep_keys[index], dwrq->length); } - + return 0; } @@ -1862,17 +1868,17 @@ static int atmel_set_rate(struct net_dev char *extra) { struct atmel_private *priv = netdev_priv(dev); - + if (vwrq->fixed == 0) { priv->tx_rate = 3; priv->auto_tx_rate = 1; } else { priv->auto_tx_rate = 0; - + /* Which type of value ? */ - if((vwrq->value < 4) && (vwrq->value >= 0)) { + if ((vwrq->value < 4) && (vwrq->value >= 0)) { /* Setting by rate index */ - priv->tx_rate = vwrq->value; + priv->tx_rate = vwrq->value; } else { /* Setting by frequency value */ switch (vwrq->value) { @@ -1899,7 +1905,7 @@ static int atmel_set_mode(struct net_dev return -EINVAL; priv->operating_mode = *uwrq; - return -EINPROGRESS; + return -EINPROGRESS; } static int atmel_get_mode(struct net_device *dev, @@ -1908,7 +1914,7 @@ static int atmel_get_mode(struct net_dev char *extra) { struct atmel_private *priv = netdev_priv(dev); - + *uwrq = priv->operating_mode; return 0; } @@ -1962,9 +1968,9 @@ static int atmel_set_retry(struct net_de char *extra) { struct atmel_private *priv = netdev_priv(dev); - - if(!vwrq->disabled && (vwrq->flags & IW_RETRY_LIMIT)) { - if(vwrq->flags & IW_RETRY_MAX) + + if (!vwrq->disabled && (vwrq->flags & IW_RETRY_LIMIT)) { + if (vwrq->flags & IW_RETRY_MAX) priv->long_retry = vwrq->value; else if (vwrq->flags & IW_RETRY_MIN) priv->short_retry = vwrq->value; @@ -1973,9 +1979,9 @@ static int atmel_set_retry(struct net_de priv->long_retry = vwrq->value; priv->short_retry = vwrq->value; } - return -EINPROGRESS; + return -EINPROGRESS; } - + return -EINVAL; } @@ -1989,13 +1995,13 @@ static int atmel_get_retry(struct net_de vwrq->disabled = 0; /* Can't be disabled */ /* Note : by default, display the min retry number */ - if((vwrq->flags & IW_RETRY_MAX)) { + if (vwrq->flags & IW_RETRY_MAX) { vwrq->flags = IW_RETRY_LIMIT | IW_RETRY_MAX; vwrq->value = priv->long_retry; } else { vwrq->flags = IW_RETRY_LIMIT; vwrq->value = priv->short_retry; - if(priv->long_retry != priv->short_retry) + if (priv->long_retry != priv->short_retry) vwrq->flags |= IW_RETRY_MIN; } @@ -2010,13 +2016,13 @@ static int atmel_set_rts(struct net_devi struct atmel_private *priv = netdev_priv(dev); int rthr = vwrq->value; - if(vwrq->disabled) + if (vwrq->disabled) rthr = 2347; - if((rthr < 0) || (rthr > 2347)) { + if ((rthr < 0) || (rthr > 2347)) { return -EINVAL; } priv->rts_threshold = rthr; - + return -EINPROGRESS; /* Call commit handler */ } @@ -2026,7 +2032,7 @@ static int atmel_get_rts(struct net_devi char *extra) { struct atmel_private *priv = netdev_priv(dev); - + vwrq->value = priv->rts_threshold; vwrq->disabled = (vwrq->value >= 2347); vwrq->fixed = 1; @@ -2042,14 +2048,14 @@ static int atmel_set_frag(struct net_dev struct atmel_private *priv = netdev_priv(dev); int fthr = vwrq->value; - if(vwrq->disabled) + if (vwrq->disabled) fthr = 2346; - if((fthr < 256) || (fthr > 2346)) { + if ((fthr < 256) || (fthr > 2346)) { return -EINVAL; } fthr &= ~0x1; /* Get an even value - is it really needed ??? */ priv->frag_threshold = fthr; - + return -EINPROGRESS; /* Call commit handler */ } @@ -2077,21 +2083,21 @@ static int atmel_set_freq(struct net_dev { struct atmel_private *priv = netdev_priv(dev); int rc = -EINPROGRESS; /* Call commit handler */ - + /* If setting by frequency, convert to a channel */ - if((fwrq->e == 1) && - (fwrq->m >= (int) 241200000) && - (fwrq->m <= (int) 248700000)) { + if ((fwrq->e == 1) && + (fwrq->m >= (int) 241200000) && + (fwrq->m <= (int) 248700000)) { int f = fwrq->m / 100000; int c = 0; - while((c < 14) && (f != frequency_list[c])) + while ((c < 14) && (f != frequency_list[c])) c++; /* Hack to fall through... */ fwrq->e = 0; fwrq->m = c + 1; } /* Setting by channel number */ - if((fwrq->m > 1000) || (fwrq->e > 0)) + if ((fwrq->m > 1000) || (fwrq->e > 0)) rc = -EOPNOTSUPP; else { int channel = fwrq->m; @@ -2099,7 +2105,7 @@ static int atmel_set_freq(struct net_dev priv->channel = channel; } else { rc = -EINVAL; - } + } } return rc; } @@ -2130,7 +2136,7 @@ static int atmel_set_scan(struct net_dev * This is not an error, while the device perform scanning, * traffic doesn't flow, so it's a perfect DoS... * Jean II */ - + if (priv->station_state == STATION_STATE_DOWN) return -EAGAIN; @@ -2142,15 +2148,15 @@ static int atmel_set_scan(struct net_dev /* Initiate a scan command */ if (priv->site_survey_state == SITE_SURVEY_IN_PROGRESS) return -EBUSY; - + del_timer_sync(&priv->management_timer); spin_lock_irqsave(&priv->irqlock, flags); - + priv->site_survey_state = SITE_SURVEY_IN_PROGRESS; priv->fast_scan = 0; atmel_scan(priv, 0); spin_unlock_irqrestore(&priv->irqlock, flags); - + return 0; } @@ -2163,11 +2169,11 @@ static int atmel_get_scan(struct net_dev int i; char *current_ev = extra; struct iw_event iwe; - + if (priv->site_survey_state != SITE_SURVEY_COMPLETED) return -EAGAIN; - - for(i=0; iBSS_list_entries; i++) { + + for (i = 0; i < priv->BSS_list_entries; i++) { iwe.cmd = SIOCGIWAP; iwe.u.ap_addr.sa_family = ARPHRD_ETHER; memcpy(iwe.u.ap_addr.sa_data, priv->BSSinfo[i].BSSID, 6); @@ -2179,16 +2185,16 @@ static int atmel_get_scan(struct net_dev iwe.cmd = SIOCGIWESSID; iwe.u.data.flags = 1; current_ev = iwe_stream_add_point(current_ev, extra + IW_SCAN_MAX_DATA, &iwe, priv->BSSinfo[i].SSID); - + iwe.cmd = SIOCGIWMODE; iwe.u.mode = priv->BSSinfo[i].BSStype; current_ev = iwe_stream_add_event(current_ev, extra + IW_SCAN_MAX_DATA, &iwe, IW_EV_UINT_LEN); - + iwe.cmd = SIOCGIWFREQ; iwe.u.freq.m = priv->BSSinfo[i].channel; iwe.u.freq.e = 0; current_ev = iwe_stream_add_event(current_ev, extra + IW_SCAN_MAX_DATA, &iwe, IW_EV_FREQ_LEN); - + iwe.cmd = SIOCGIWENCODE; if (priv->BSSinfo[i].UsingWEP) iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; @@ -2196,13 +2202,12 @@ static int atmel_get_scan(struct net_dev iwe.u.data.flags = IW_ENCODE_DISABLED; iwe.u.data.length = 0; current_ev = iwe_stream_add_point(current_ev, extra + IW_SCAN_MAX_DATA, &iwe, NULL); - } /* Length of data */ dwrq->length = (current_ev - extra); - dwrq->flags = 0; - + dwrq->flags = 0; + return 0; } @@ -2213,7 +2218,7 @@ static int atmel_get_range(struct net_de { struct atmel_private *priv = netdev_priv(dev); struct iw_range *range = (struct iw_range *) extra; - int k,i,j; + int k, i, j; dwrq->length = sizeof(struct iw_range); memset(range, 0, sizeof(struct iw_range)); @@ -2226,14 +2231,14 @@ static int atmel_get_range(struct net_de break; } if (range->num_channels != 0) { - for(k = 0, i = channel_table[j].min; i <= channel_table[j].max; i++) { + for (k = 0, i = channel_table[j].min; i <= channel_table[j].max; i++) { range->freq[k].i = i; /* List index */ - range->freq[k].m = frequency_list[i-1] * 100000; + range->freq[k].m = frequency_list[i - 1] * 100000; range->freq[k++].e = 1; /* Values in table in MHz -> * 10^5 * 10 */ } range->num_frequency = k; } - + range->max_qual.qual = 100; range->max_qual.level = 100; range->max_qual.noise = 0; @@ -2261,11 +2266,11 @@ static int atmel_get_range(struct net_de range->encoding_size[1] = 13; range->num_encoding_sizes = 2; range->max_encoding_tokens = 4; - + range->pmp_flags = IW_POWER_ON; range->pmt_flags = IW_POWER_ON; range->pm_capa = 0; - + range->we_version_source = WIRELESS_EXT; range->we_version_compiled = WIRELESS_EXT; range->retry_capa = IW_RETRY_LIMIT ; @@ -2289,7 +2294,7 @@ static int atmel_set_wap(struct net_devi if (awrq->sa_family != ARPHRD_ETHER) return -EINVAL; - + if (memcmp(bcast, awrq->sa_data, 6) == 0) { del_timer_sync(&priv->management_timer); spin_lock_irqsave(&priv->irqlock, flags); @@ -2297,8 +2302,8 @@ static int atmel_set_wap(struct net_devi spin_unlock_irqrestore(&priv->irqlock, flags); return 0; } - - for(i=0; iBSS_list_entries; i++) { + + for (i = 0; i < priv->BSS_list_entries; i++) { if (memcmp(priv->BSSinfo[i].BSSID, awrq->sa_data, 6) == 0) { if (!priv->wep_is_on && priv->BSSinfo[i].UsingWEP) { return -EINVAL; @@ -2313,10 +2318,10 @@ static int atmel_set_wap(struct net_devi } } } - + return -EINVAL; } - + static int atmel_config_commit(struct net_device *dev, struct iw_request_info *info, /* NULL */ void *zwrq, /* NULL */ @@ -2325,18 +2330,18 @@ static int atmel_config_commit(struct ne return atmel_open(dev); } -static const iw_handler atmel_handler[] = +static const iw_handler atmel_handler[] = { (iw_handler) atmel_config_commit, /* SIOCSIWCOMMIT */ - (iw_handler) atmel_get_name, /* SIOCGIWNAME */ + (iw_handler) atmel_get_name, /* SIOCGIWNAME */ (iw_handler) NULL, /* SIOCSIWNWID */ (iw_handler) NULL, /* SIOCGIWNWID */ (iw_handler) atmel_set_freq, /* SIOCSIWFREQ */ (iw_handler) atmel_get_freq, /* SIOCGIWFREQ */ (iw_handler) atmel_set_mode, /* SIOCSIWMODE */ (iw_handler) atmel_get_mode, /* SIOCGIWMODE */ - (iw_handler) NULL, /* SIOCSIWSENS */ - (iw_handler) NULL, /* SIOCGIWSENS */ + (iw_handler) NULL, /* SIOCSIWSENS */ + (iw_handler) NULL, /* SIOCGIWSENS */ (iw_handler) NULL, /* SIOCSIWRANGE */ (iw_handler) atmel_get_range, /* SIOCGIWRANGE */ (iw_handler) NULL, /* SIOCSIWPRIV */ @@ -2350,13 +2355,13 @@ static const iw_handler atmel_handler[] (iw_handler) atmel_set_wap, /* SIOCSIWAP */ (iw_handler) atmel_get_wap, /* SIOCGIWAP */ (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCGIWAPLIST */ + (iw_handler) NULL, /* SIOCGIWAPLIST */ (iw_handler) atmel_set_scan, /* SIOCSIWSCAN */ (iw_handler) atmel_get_scan, /* SIOCGIWSCAN */ (iw_handler) atmel_set_essid, /* SIOCSIWESSID */ (iw_handler) atmel_get_essid, /* SIOCGIWESSID */ - (iw_handler) NULL, /* SIOCSIWNICKN */ - (iw_handler) NULL, /* SIOCGIWNICKN */ + (iw_handler) NULL, /* SIOCSIWNICKN */ + (iw_handler) NULL, /* SIOCGIWNICKN */ (iw_handler) NULL, /* -- hole -- */ (iw_handler) NULL, /* -- hole -- */ (iw_handler) atmel_set_rate, /* SIOCSIWRATE */ @@ -2365,8 +2370,8 @@ static const iw_handler atmel_handler[] (iw_handler) atmel_get_rts, /* SIOCGIWRTS */ (iw_handler) atmel_set_frag, /* SIOCSIWFRAG */ (iw_handler) atmel_get_frag, /* SIOCGIWFRAG */ - (iw_handler) NULL, /* SIOCSIWTXPOW */ - (iw_handler) NULL, /* SIOCGIWTXPOW */ + (iw_handler) NULL, /* SIOCSIWTXPOW */ + (iw_handler) NULL, /* SIOCGIWTXPOW */ (iw_handler) atmel_set_retry, /* SIOCSIWRETRY */ (iw_handler) atmel_get_retry, /* SIOCGIWRETRY */ (iw_handler) atmel_set_encode, /* SIOCSIWENCODE */ @@ -2375,39 +2380,51 @@ static const iw_handler atmel_handler[] (iw_handler) atmel_get_power, /* SIOCGIWPOWER */ }; - -static const iw_handler atmel_private_handler[] = +static const iw_handler atmel_private_handler[] = { NULL, /* SIOCIWFIRSTPRIV */ }; typedef struct atmel_priv_ioctl { char id[32]; - unsigned char __user *data; - unsigned short len; + unsigned char __user *data; + unsigned short len; } atmel_priv_ioctl; - -#define ATMELFWL SIOCIWFIRSTPRIV -#define ATMELIDIFC ATMELFWL + 1 -#define ATMELRD ATMELFWL + 2 -#define ATMELMAGIC 0x51807 +#define ATMELFWL SIOCIWFIRSTPRIV +#define ATMELIDIFC ATMELFWL + 1 +#define ATMELRD ATMELFWL + 2 +#define ATMELMAGIC 0x51807 #define REGDOMAINSZ 20 static const struct iw_priv_args atmel_private_args[] = { -/*{ cmd, set_args, get_args, name } */ - { ATMELFWL, IW_PRIV_TYPE_BYTE | IW_PRIV_SIZE_FIXED | sizeof (atmel_priv_ioctl), IW_PRIV_TYPE_NONE, "atmelfwl" }, - { ATMELIDIFC, IW_PRIV_TYPE_NONE, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "atmelidifc" }, - { ATMELRD, IW_PRIV_TYPE_CHAR | REGDOMAINSZ, IW_PRIV_TYPE_NONE, "regdomain" }, + { + .cmd = ATMELFWL, + .set_args = IW_PRIV_TYPE_BYTE + | IW_PRIV_SIZE_FIXED + | sizeof (atmel_priv_ioctl), + .get_args = IW_PRIV_TYPE_NONE, + .name = "atmelfwl" + }, { + .cmd = ATMELIDIFC, + .set_args = IW_PRIV_TYPE_NONE, + .get_args = IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + .name = "atmelidifc" + }, { + .cmd = ATMELRD, + .set_args = IW_PRIV_TYPE_CHAR | REGDOMAINSZ, + .get_args = IW_PRIV_TYPE_NONE, + .name = "regdomain" + }, }; -static const struct iw_handler_def atmel_handler_def = +static const struct iw_handler_def atmel_handler_def = { .num_standard = sizeof(atmel_handler)/sizeof(iw_handler), - .num_private = sizeof(atmel_private_handler)/sizeof(iw_handler), - .num_private_args = sizeof(atmel_private_args)/sizeof(struct iw_priv_args), + .num_private = sizeof(atmel_private_handler)/sizeof(iw_handler), + .num_private_args = sizeof(atmel_private_args)/sizeof(struct iw_priv_args), .standard = (iw_handler *) atmel_handler, - .private = (iw_handler *) atmel_private_handler, + .private = (iw_handler *) atmel_private_handler, .private_args = (struct iw_priv_args *) atmel_private_args, .get_wireless_stats = atmel_get_wireless_stats }; @@ -2419,13 +2436,13 @@ static int atmel_ioctl(struct net_device atmel_priv_ioctl com; struct iwreq *wrq = (struct iwreq *) rq; unsigned char *new_firmware; - char domain[REGDOMAINSZ+1]; + char domain[REGDOMAINSZ + 1]; switch (cmd) { case ATMELIDIFC: - wrq->u.param.value = ATMELMAGIC; + wrq->u.param.value = ATMELMAGIC; break; - + case ATMELFWL: if (copy_from_user(&com, rq->ifr_data, sizeof(com))) { rc = -EFAULT; @@ -2449,7 +2466,7 @@ static int atmel_ioctl(struct net_device } kfree(priv->firmware); - + priv->firmware = new_firmware; priv->firmware_length = com.len; strncpy(priv->firmware_id, com.id, 31); @@ -2461,7 +2478,7 @@ static int atmel_ioctl(struct net_device rc = -EFAULT; break; } - + if (!capable(CAP_NET_ADMIN)) { rc = -EPERM; break; @@ -2484,15 +2501,15 @@ static int atmel_ioctl(struct net_device rc = 0; } } - + if (rc == 0 && priv->station_state != STATION_STATE_DOWN) rc = atmel_open(dev); break; - + default: rc = -EOPNOTSUPP; } - + return rc; } @@ -2503,17 +2520,17 @@ struct auth_body { u8 el_id; u8 chall_text_len; u8 chall_text[253]; -}; +}; static void atmel_enter_state(struct atmel_private *priv, int new_state) { int old_state = priv->station_state; - + if (new_state == old_state) return; - + priv->station_state = new_state; - + if (new_state == STATION_STATE_READY) { netif_start_queue(priv->dev); netif_carrier_on(priv->dev); @@ -2540,7 +2557,7 @@ static void atmel_scan(struct atmel_priv u8 options; u8 SSID_size; } cmd; - + memset(cmd.BSSID, 0xff, 6); if (priv->fast_scan) { @@ -2554,17 +2571,17 @@ static void atmel_scan(struct atmel_priv cmd.min_channel_time = cpu_to_le16(10); cmd.max_channel_time = cpu_to_le16(120); } - + cmd.options = 0; - + if (!specific_ssid) cmd.options |= SCAN_OPTIONS_SITE_SURVEY; - - cmd.channel = (priv->channel & 0x7f); + + cmd.channel = (priv->channel & 0x7f); cmd.scan_type = SCAN_TYPE_ACTIVE; - cmd.BSS_type = cpu_to_le16(priv->operating_mode == IW_MODE_ADHOC ? + cmd.BSS_type = cpu_to_le16(priv->operating_mode == IW_MODE_ADHOC ? BSS_TYPE_AD_HOC : BSS_TYPE_INFRASTRUCTURE); - + atmel_send_command(priv, CMD_Scan, &cmd, sizeof(cmd)); /* This must come after all hardware access to avoid being messed up @@ -2591,16 +2608,15 @@ static void join(struct atmel_private *p cmd.BSS_type = type; cmd.timeout = cpu_to_le16(2000); - atmel_send_command(priv, CMD_Join, &cmd, sizeof(cmd)); + atmel_send_command(priv, CMD_Join, &cmd, sizeof(cmd)); } - static void start(struct atmel_private *priv, int type) { struct { u8 BSSID[6]; u8 SSID[MAX_SSID_LENGTH]; - u8 BSS_type; + u8 BSS_type; u8 channel; u8 SSID_size; u8 reserved[3]; @@ -2612,13 +2628,14 @@ static void start(struct atmel_private * cmd.BSS_type = type; cmd.channel = (priv->channel & 0x7f); - atmel_send_command(priv, CMD_Start, &cmd, sizeof(cmd)); + atmel_send_command(priv, CMD_Start, &cmd, sizeof(cmd)); } -static void handle_beacon_probe(struct atmel_private *priv, u16 capability, u8 channel) +static void handle_beacon_probe(struct atmel_private *priv, u16 capability, + u8 channel) { int rejoin = 0; - int new = capability & C80211_MGMT_CAPABILITY_ShortPreamble ? + int new = capability & C80211_MGMT_CAPABILITY_ShortPreamble ? SHORT_PREAMBLE : LONG_PREAMBLE; if (priv->preamble != new) { @@ -2626,48 +2643,48 @@ static void handle_beacon_probe(struct a rejoin = 1; atmel_set_mib8(priv, Local_Mib_Type, LOCAL_MIB_PREAMBLE_TYPE, new); } - + if (priv->channel != channel) { priv->channel = channel; rejoin = 1; atmel_set_mib8(priv, Phy_Mib_Type, PHY_MIB_CHANNEL_POS, channel); } - + if (rejoin) { priv->station_is_associated = 0; atmel_enter_state(priv, STATION_STATE_JOINNING); - + if (priv->operating_mode == IW_MODE_INFRA) join(priv, BSS_TYPE_INFRASTRUCTURE); - else + else join(priv, BSS_TYPE_AD_HOC); - } + } } - -static void send_authentication_request(struct atmel_private *priv, u16 system, u8 *challenge, int challenge_len) +static void send_authentication_request(struct atmel_private *priv, u16 system, + u8 *challenge, int challenge_len) { struct ieee80211_hdr_4addr header; struct auth_body auth; - - header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); - header.duration_id = cpu_to_le16(0x8000); + + header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); + header.duration_id = cpu_to_le16(0x8000); header.seq_ctl = 0; memcpy(header.addr1, priv->CurrentBSSID, 6); memcpy(header.addr2, priv->dev->dev_addr, 6); memcpy(header.addr3, priv->CurrentBSSID, 6); - - if (priv->wep_is_on && priv->CurrentAuthentTransactionSeqNum != 1) + + if (priv->wep_is_on && priv->CurrentAuthentTransactionSeqNum != 1) /* no WEP for authentication frames with TrSeqNo 1 */ header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); - - auth.alg = cpu_to_le16(system); + + auth.alg = cpu_to_le16(system); auth.status = 0; auth.trans_seq = cpu_to_le16(priv->CurrentAuthentTransactionSeqNum); - priv->ExpectedAuthentTransactionSeqNum = priv->CurrentAuthentTransactionSeqNum+1; + priv->ExpectedAuthentTransactionSeqNum = priv->CurrentAuthentTransactionSeqNum+1; priv->CurrentAuthentTransactionSeqNum += 2; - + if (challenge_len != 0) { auth.el_id = 16; /* challenge_text */ auth.chall_text_len = challenge_len; @@ -2685,7 +2702,7 @@ static void send_association_request(str struct ieee80211_hdr_4addr header; struct ass_req_format { u16 capability; - u16 listen_interval; + u16 listen_interval; u8 ap[6]; /* nothing after here directly accessible */ u8 ssid_el_id; u8 ssid_len; @@ -2694,15 +2711,15 @@ static void send_association_request(str u8 sup_rates_len; u8 rates[4]; } body; - - header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | + + header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | (is_reassoc ? IEEE80211_STYPE_REASSOC_REQ : IEEE80211_STYPE_ASSOC_REQ)); header.duration_id = cpu_to_le16(0x8000); header.seq_ctl = 0; - memcpy(header.addr1, priv->CurrentBSSID, 6); + memcpy(header.addr1, priv->CurrentBSSID, 6); memcpy(header.addr2, priv->dev->dev_addr, 6); - memcpy(header.addr3, priv->CurrentBSSID, 6); + memcpy(header.addr3, priv->CurrentBSSID, 6); body.capability = cpu_to_le16(C80211_MGMT_CAPABILITY_ESS); if (priv->wep_is_on) @@ -2711,18 +2728,18 @@ static void send_association_request(str body.capability |= cpu_to_le16(C80211_MGMT_CAPABILITY_ShortPreamble); body.listen_interval = cpu_to_le16(priv->listen_interval * priv->beacon_period); - + /* current AP address - only in reassoc frame */ if (is_reassoc) { - memcpy(body.ap, priv->CurrentBSSID, 6); + memcpy(body.ap, priv->CurrentBSSID, 6); ssid_el_p = (u8 *)&body.ssid_el_id; bodysize = 18 + priv->SSID_size; } else { ssid_el_p = (u8 *)&body.ap[0]; bodysize = 12 + priv->SSID_size; } - - ssid_el_p[0]= C80211_MGMT_ElementID_SSID; + + ssid_el_p[0] = C80211_MGMT_ElementID_SSID; ssid_el_p[1] = priv->SSID_size; memcpy(ssid_el_p + 2, priv->SSID, priv->SSID_size); ssid_el_p[2 + priv->SSID_size] = C80211_MGMT_ElementID_SupportedRates; @@ -2732,7 +2749,8 @@ static void send_association_request(str atmel_transmit_management_frame(priv, &header, (void *)&body, bodysize); } -static int is_frame_from_current_bss(struct atmel_private *priv, struct ieee80211_hdr_4addr *header) +static int is_frame_from_current_bss(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header) { if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0; @@ -2745,29 +2763,29 @@ static int retrieve_bss(struct atmel_pri int i; int max_rssi = -128; int max_index = -1; - + if (priv->BSS_list_entries == 0) return -1; - + if (priv->connect_to_any_BSS) { - /* Select a BSS with the max-RSSI but of the same type and of the same WEP mode - and that it is not marked as 'bad' (i.e. we had previously failed to connect to - this BSS with the settings that we currently use) */ + /* Select a BSS with the max-RSSI but of the same type and of + the same WEP mode and that it is not marked as 'bad' (i.e. + we had previously failed to connect to this BSS with the + settings that we currently use) */ priv->current_BSS = 0; - for(i=0; iBSS_list_entries; i++) { + for (i = 0; i < priv->BSS_list_entries; i++) { if (priv->operating_mode == priv->BSSinfo[i].BSStype && - ((!priv->wep_is_on && !priv->BSSinfo[i].UsingWEP) || + ((!priv->wep_is_on && !priv->BSSinfo[i].UsingWEP) || (priv->wep_is_on && priv->BSSinfo[i].UsingWEP)) && !(priv->BSSinfo[i].channel & 0x80)) { max_rssi = priv->BSSinfo[i].RSSI; priv->current_BSS = max_index = i; } - } return max_index; } - - for(i=0; iBSS_list_entries; i++) { + + for (i = 0; i < priv->BSS_list_entries; i++) { if (priv->SSID_size == priv->BSSinfo[i].SSIDsize && memcmp(priv->SSID, priv->BSSinfo[i].SSID, priv->SSID_size) == 0 && priv->operating_mode == priv->BSSinfo[i].BSStype && @@ -2781,19 +2799,19 @@ static int retrieve_bss(struct atmel_pri return max_index; } - -static void store_bss_info(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, - u16 capability, u16 beacon_period, u8 channel, u8 rssi, - u8 ssid_len, u8 *ssid, int is_beacon) +static void store_bss_info(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, u16 capability, + u16 beacon_period, u8 channel, u8 rssi, u8 ssid_len, + u8 *ssid, int is_beacon) { u8 *bss = capability & C80211_MGMT_CAPABILITY_ESS ? header->addr2 : header->addr3; int i, index; - - for (index = -1, i = 0; i < priv->BSS_list_entries; i++) - if (memcmp(bss, priv->BSSinfo[i].BSSID, 6) == 0) + + for (index = -1, i = 0; i < priv->BSS_list_entries; i++) + if (memcmp(bss, priv->BSSinfo[i].BSSID, 6) == 0) index = i; - /* If we process a probe and an entry from this BSS exists + /* If we process a probe and an entry from this BSS exists we will update the BSS entry with the info from this BSS. If we process a beacon we will only update RSSI */ @@ -2820,8 +2838,8 @@ static void store_bss_info(struct atmel_ priv->BSSinfo[index].BSStype = IW_MODE_ADHOC; else if (capability & C80211_MGMT_CAPABILITY_ESS) priv->BSSinfo[index].BSStype =IW_MODE_INFRA; - - priv->BSSinfo[index].preamble = capability & C80211_MGMT_CAPABILITY_ShortPreamble ? + + priv->BSSinfo[index].preamble = capability & C80211_MGMT_CAPABILITY_ShortPreamble ? SHORT_PREAMBLE : LONG_PREAMBLE; } @@ -2831,8 +2849,8 @@ static void authenticate(struct atmel_pr u16 status = le16_to_cpu(auth->status); u16 trans_seq_no = le16_to_cpu(auth->trans_seq); u16 system = le16_to_cpu(auth->alg); - - if (status == C80211_MGMT_SC_Success && !priv->wep_is_on) { + + if (status == C80211_MGMT_SC_Success && !priv->wep_is_on) { /* no WEP */ if (priv->station_was_associated) { atmel_enter_state(priv, STATION_STATE_REASSOCIATING); @@ -2842,20 +2860,20 @@ static void authenticate(struct atmel_pr atmel_enter_state(priv, STATION_STATE_ASSOCIATING); send_association_request(priv, 0); return; - } + } } - - if (status == C80211_MGMT_SC_Success && priv->wep_is_on) { + + if (status == C80211_MGMT_SC_Success && priv->wep_is_on) { /* WEP */ if (trans_seq_no != priv->ExpectedAuthentTransactionSeqNum) return; - + if (trans_seq_no == 0x0002 && auth->el_id == C80211_MGMT_ElementID_ChallengeText) { send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len); return; } - + if (trans_seq_no == 0x0004) { if(priv->station_was_associated) { atmel_enter_state(priv, STATION_STATE_REASSOCIATING); @@ -2865,10 +2883,10 @@ static void authenticate(struct atmel_pr atmel_enter_state(priv, STATION_STATE_ASSOCIATING); send_association_request(priv, 0); return; - } + } } - } - + } + if (status == C80211_MGMT_SC_AuthAlgNotSupported) { /* Do opensystem first, then try sharedkey */ if (system == C80211_MGMT_AAN_OPENSYSTEM) { @@ -2876,17 +2894,16 @@ static void authenticate(struct atmel_pr send_authentication_request(priv, C80211_MGMT_AAN_SHAREDKEY, NULL, 0); } else if (priv->connect_to_any_BSS) { int bss_index; - + priv->BSSinfo[(int)(priv->current_BSS)].channel |= 0x80; - + if ((bss_index = retrieve_bss(priv)) != -1) { atmel_join_bss(priv, bss_index); return; } } } - - + priv->AuthenticationRequestRetryCnt = 0; atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); priv->station_is_associated = 0; @@ -2902,38 +2919,44 @@ static void associate(struct atmel_priva u8 length; u8 rates[4]; } *ass_resp = (struct ass_resp_format *)priv->rx_buf; - - u16 status = le16_to_cpu(ass_resp->status); + + u16 status = le16_to_cpu(ass_resp->status); u16 ass_id = le16_to_cpu(ass_resp->ass_id); - u16 rates_len = ass_resp->length > 4 ? 4 : ass_resp->length; - + u16 rates_len = ass_resp->length > 4 ? 4 : ass_resp->length; + if (frame_len < 8 + rates_len) return; - + if (status == C80211_MGMT_SC_Success) { if (subtype == C80211_SUBTYPE_MGMT_ASS_RESPONSE) priv->AssociationRequestRetryCnt = 0; else priv->ReAssociationRequestRetryCnt = 0; - - atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_STATION_ID_POS, ass_id & 0x3fff); - atmel_set_mib(priv, Phy_Mib_Type, PHY_MIB_RATE_SET_POS, ass_resp->rates, rates_len); + + atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_STATION_ID_POS, ass_id & 0x3fff); + atmel_set_mib(priv, Phy_Mib_Type, + PHY_MIB_RATE_SET_POS, ass_resp->rates, rates_len); if (priv->power_mode == 0) { priv->listen_interval = 1; - atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_PS_MODE_POS, ACTIVE_MODE); - atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 1); + atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_PS_MODE_POS, ACTIVE_MODE); + atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 1); } else { priv->listen_interval = 2; - atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_PS_MODE_POS, PS_MODE); - atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 2); + atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_PS_MODE_POS, PS_MODE); + atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 2); } - + priv->station_is_associated = 1; priv->station_was_associated = 1; atmel_enter_state(priv, STATION_STATE_READY); return; } - + if (subtype == C80211_SUBTYPE_MGMT_ASS_RESPONSE && status != C80211_MGMT_SC_AssDeniedBSSRate && status != C80211_MGMT_SC_SupportCapabilities && @@ -2943,7 +2966,7 @@ static void associate(struct atmel_priva send_association_request(priv, 0); return; } - + if (subtype == C80211_SUBTYPE_MGMT_REASS_RESPONSE && status != C80211_MGMT_SC_AssDeniedBSSRate && status != C80211_MGMT_SC_SupportCapabilities && @@ -2953,17 +2976,16 @@ static void associate(struct atmel_priva send_association_request(priv, 1); return; } - + atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); priv->station_is_associated = 0; - - if(priv->connect_to_any_BSS) { + + if (priv->connect_to_any_BSS) { int bss_index; priv->BSSinfo[(int)(priv->current_BSS)].channel |= 0x80; - - if ((bss_index = retrieve_bss(priv)) != -1) + + if ((bss_index = retrieve_bss(priv)) != -1) atmel_join_bss(priv, bss_index); - } } @@ -2977,7 +2999,7 @@ void atmel_join_bss(struct atmel_private /* The WPA stuff cares about the current AP address */ if (priv->use_wpa) build_wpa_mib(priv); - + /* When switching to AdHoc turn OFF Power Save if needed */ if (bss->BSStype == IW_MODE_ADHOC && @@ -2985,25 +3007,28 @@ void atmel_join_bss(struct atmel_private priv->power_mode) { priv->power_mode = 0; priv->listen_interval = 1; - atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_PS_MODE_POS, ACTIVE_MODE); - atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 1); + atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_PS_MODE_POS, ACTIVE_MODE); + atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, + MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 1); } - + priv->operating_mode = bss->BSStype; - priv->channel = bss->channel & 0x7f; + priv->channel = bss->channel & 0x7f; priv->beacon_period = bss->beacon_period; - + if (priv->preamble != bss->preamble) { priv->preamble = bss->preamble; - atmel_set_mib8(priv, Local_Mib_Type, LOCAL_MIB_PREAMBLE_TYPE, bss->preamble); + atmel_set_mib8(priv, Local_Mib_Type, + LOCAL_MIB_PREAMBLE_TYPE, bss->preamble); } - + if (!priv->wep_is_on && bss->UsingWEP) { atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); priv->station_is_associated = 0; return; } - + if (priv->wep_is_on && !bss->UsingWEP) { atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); priv->station_is_associated = 0; @@ -3011,30 +3036,28 @@ void atmel_join_bss(struct atmel_private } atmel_enter_state(priv, STATION_STATE_JOINNING); - + if (priv->operating_mode == IW_MODE_INFRA) join(priv, BSS_TYPE_INFRASTRUCTURE); - else + else join(priv, BSS_TYPE_AD_HOC); } - static void restart_search(struct atmel_private *priv) { int bss_index; - + if (!priv->connect_to_any_BSS) { atmel_scan(priv, 1); } else { priv->BSSinfo[(int)(priv->current_BSS)].channel |= 0x80; - - if ((bss_index = retrieve_bss(priv)) != -1) + + if ((bss_index = retrieve_bss(priv)) != -1) atmel_join_bss(priv, bss_index); else atmel_scan(priv, 0); - - } -} + } +} static void smooth_rssi(struct atmel_private *priv, u8 rssi) { @@ -3050,21 +3073,21 @@ static void smooth_rssi(struct atmel_pri } rssi = rssi * 100 / max_rssi; - if((rssi + old) % 2) - priv->wstats.qual.level = ((rssi + old)/2) + 1; + if ((rssi + old) % 2) + priv->wstats.qual.level = (rssi + old) / 2 + 1; else - priv->wstats.qual.level = ((rssi + old)/2); + priv->wstats.qual.level = (rssi + old) / 2; priv->wstats.qual.updated |= IW_QUAL_LEVEL_UPDATED; priv->wstats.qual.updated &= ~IW_QUAL_LEVEL_INVALID; } static void atmel_smooth_qual(struct atmel_private *priv) { - unsigned long time_diff = (jiffies - priv->last_qual)/HZ; + unsigned long time_diff = (jiffies - priv->last_qual) / HZ; while (time_diff--) { priv->last_qual += HZ; - priv->wstats.qual.qual = priv->wstats.qual.qual/2; - priv->wstats.qual.qual += + priv->wstats.qual.qual = priv->wstats.qual.qual / 2; + priv->wstats.qual.qual += priv->beacons_this_sec * priv->beacon_period * (priv->wstats.qual.level + 100) / 4000; priv->beacons_this_sec = 0; } @@ -3073,15 +3096,17 @@ static void atmel_smooth_qual(struct atm } /* deals with incoming managment frames. */ -static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr_4addr *header, - u16 frame_len, u8 rssi) +static void atmel_management_frame(struct atmel_private *priv, + struct ieee80211_hdr_4addr *header, + u16 frame_len, u8 rssi) { u16 subtype; - - switch (subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE) { - case C80211_SUBTYPE_MGMT_BEACON : + + subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE; + switch (subtype) { + case C80211_SUBTYPE_MGMT_BEACON: case C80211_SUBTYPE_MGMT_ProbeResponse: - + /* beacon frame has multiple variable-length fields - never let an engineer loose with a data structure design. */ { @@ -3099,7 +3124,7 @@ static void atmel_management_frame(struc u8 ds_length; /* ds here */ } *beacon = (struct beacon_format *)priv->rx_buf; - + u8 channel, rates_length, ssid_length; u64 timestamp = le64_to_cpu(beacon->timestamp); u16 beacon_interval = le16_to_cpu(beacon->interval); @@ -3107,7 +3132,7 @@ static void atmel_management_frame(struc u8 *beaconp = priv->rx_buf; ssid_length = beacon->ssid_length; /* this blows chunks. */ - if (frame_len < 14 || frame_len < ssid_length + 15) + if (frame_len < 14 || frame_len < ssid_length + 15) return; rates_length = beaconp[beacon->ssid_length + 15]; if (frame_len < ssid_length + rates_length + 18) @@ -3115,10 +3140,10 @@ static void atmel_management_frame(struc if (ssid_length > MAX_SSID_LENGTH) return; channel = beaconp[ssid_length + rates_length + 18]; - + if (priv->station_state == STATION_STATE_READY) { smooth_rssi(priv, rssi); - if (is_frame_from_current_bss(priv, header)) { + if (is_frame_from_current_bss(priv, header)) { priv->beacons_this_sec++; atmel_smooth_qual(priv); if (priv->last_beacon_timestamp) { @@ -3132,41 +3157,43 @@ static void atmel_management_frame(struc handle_beacon_probe(priv, capability, channel); } } - - if (priv->station_state == STATION_STATE_SCANNING ) - store_bss_info(priv, header, capability, beacon_interval, channel, - rssi, ssid_length, &beacon->rates_el_id, - subtype == C80211_SUBTYPE_MGMT_BEACON) ; + + if (priv->station_state == STATION_STATE_SCANNING) + store_bss_info(priv, header, capability, + beacon_interval, channel, rssi, + ssid_length, + &beacon->rates_el_id, + subtype == C80211_SUBTYPE_MGMT_BEACON); } break; - + case C80211_SUBTYPE_MGMT_Authentication: if (priv->station_state == STATION_STATE_AUTHENTICATING) authenticate(priv, frame_len); - + break; - + case C80211_SUBTYPE_MGMT_ASS_RESPONSE: case C80211_SUBTYPE_MGMT_REASS_RESPONSE: - - if (priv->station_state == STATION_STATE_ASSOCIATING || + + if (priv->station_state == STATION_STATE_ASSOCIATING || priv->station_state == STATION_STATE_REASSOCIATING) associate(priv, frame_len, subtype); - + break; case C80211_SUBTYPE_MGMT_DISASSOSIATION: - if (priv->station_is_associated && - priv->operating_mode == IW_MODE_INFRA && + if (priv->station_is_associated && + priv->operating_mode == IW_MODE_INFRA && is_frame_from_current_bss(priv, header)) { priv->station_was_associated = 0; priv->station_is_associated = 0; - + atmel_enter_state(priv, STATION_STATE_JOINNING); join(priv, BSS_TYPE_INFRASTRUCTURE); } - + break; case C80211_SUBTYPE_MGMT_Deauthentication: @@ -3177,7 +3204,7 @@ static void atmel_management_frame(struc atmel_enter_state(priv, STATION_STATE_JOINNING); join(priv, BSS_TYPE_INFRASTRUCTURE); } - + break; } } @@ -3185,76 +3212,73 @@ static void atmel_management_frame(struc /* run when timer expires */ static void atmel_management_timer(u_long a) { - struct net_device *dev = (struct net_device *) a; - struct atmel_private *priv = netdev_priv(dev); - unsigned long flags; - - /* Check if the card has been yanked. */ - if (priv->card && priv->present_callback && - !(*priv->present_callback)(priv->card)) - return; - - spin_lock_irqsave(&priv->irqlock, flags); - - switch (priv->station_state) { - - case STATION_STATE_AUTHENTICATING: - if (priv->AuthenticationRequestRetryCnt >= MAX_AUTHENTICATION_RETRIES) { - atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); - priv->station_is_associated = 0; - priv->AuthenticationRequestRetryCnt = 0; - restart_search(priv); - } else { - priv->AuthenticationRequestRetryCnt++; - priv->CurrentAuthentTransactionSeqNum = 0x0001; - mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); - send_authentication_request(priv, C80211_MGMT_AAN_OPENSYSTEM, NULL, 0); - } - - break; + struct net_device *dev = (struct net_device *) a; + struct atmel_private *priv = netdev_priv(dev); + unsigned long flags; - case STATION_STATE_ASSOCIATING: - if (priv->AssociationRequestRetryCnt == MAX_ASSOCIATION_RETRIES) { - atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); - priv->station_is_associated = 0; - priv->AssociationRequestRetryCnt = 0; - restart_search(priv); - } else { - priv->AssociationRequestRetryCnt++; - mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); - send_association_request(priv, 0); - } + /* Check if the card has been yanked. */ + if (priv->card && priv->present_callback && + !(*priv->present_callback)(priv->card)) + return; - break; - - case STATION_STATE_REASSOCIATING: - if (priv->ReAssociationRequestRetryCnt == MAX_ASSOCIATION_RETRIES) { - atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); - priv->station_is_associated = 0; - priv->ReAssociationRequestRetryCnt = 0; - restart_search(priv); - } else { - priv->ReAssociationRequestRetryCnt++; - mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); - send_association_request(priv, 1); - } + spin_lock_irqsave(&priv->irqlock, flags); + + switch (priv->station_state) { + case STATION_STATE_AUTHENTICATING: + if (priv->AuthenticationRequestRetryCnt >= MAX_AUTHENTICATION_RETRIES) { + atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); + priv->station_is_associated = 0; + priv->AuthenticationRequestRetryCnt = 0; + restart_search(priv); + } else { + priv->AuthenticationRequestRetryCnt++; + priv->CurrentAuthentTransactionSeqNum = 0x0001; + mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); + send_authentication_request(priv, C80211_MGMT_AAN_OPENSYSTEM, NULL, 0); + } break; - - default: + + case STATION_STATE_ASSOCIATING: + if (priv->AssociationRequestRetryCnt == MAX_ASSOCIATION_RETRIES) { + atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); + priv->station_is_associated = 0; + priv->AssociationRequestRetryCnt = 0; + restart_search(priv); + } else { + priv->AssociationRequestRetryCnt++; + mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); + send_association_request(priv, 0); + } break; - } - - spin_unlock_irqrestore(&priv->irqlock, flags); + + case STATION_STATE_REASSOCIATING: + if (priv->ReAssociationRequestRetryCnt == MAX_ASSOCIATION_RETRIES) { + atmel_enter_state(priv, STATION_STATE_MGMT_ERROR); + priv->station_is_associated = 0; + priv->ReAssociationRequestRetryCnt = 0; + restart_search(priv); + } else { + priv->ReAssociationRequestRetryCnt++; + mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); + send_association_request(priv, 1); + } + break; + + default: + break; + } + + spin_unlock_irqrestore(&priv->irqlock, flags); } - + static void atmel_command_irq(struct atmel_private *priv) { u8 status = atmel_rmem8(priv, atmel_co(priv, CMD_BLOCK_STATUS_OFFSET)); u8 command = atmel_rmem8(priv, atmel_co(priv, CMD_BLOCK_COMMAND_OFFSET)); int fast_scan; - - if (status == CMD_STATUS_IDLE || + + if (status == CMD_STATUS_IDLE || status == CMD_STATUS_IN_PROGRESS) return; @@ -3266,20 +3290,20 @@ static void atmel_command_irq(struct atm atmel_get_mib(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_CUR_BSSID_POS, (u8 *)priv->CurrentBSSID, 6); atmel_enter_state(priv, STATION_STATE_READY); - } + } break; - + case CMD_Scan: fast_scan = priv->fast_scan; priv->fast_scan = 0; - + if (status != CMD_STATUS_COMPLETE) { atmel_scan(priv, 1); } else { int bss_index = retrieve_bss(priv); if (bss_index != -1) { atmel_join_bss(priv, bss_index); - } else if (priv->operating_mode == IW_MODE_ADHOC && + } else if (priv->operating_mode == IW_MODE_ADHOC && priv->SSID_size != 0) { start(priv, BSS_TYPE_AD_HOC); } else { @@ -3289,16 +3313,16 @@ static void atmel_command_irq(struct atm priv->site_survey_state = SITE_SURVEY_COMPLETED; } break; - + case CMD_SiteSurvey: priv->fast_scan = 0; - + if (status != CMD_STATUS_COMPLETE) return; - + priv->site_survey_state = SITE_SURVEY_COMPLETED; if (priv->station_is_associated) { - atmel_enter_state(priv, STATION_STATE_READY); + atmel_enter_state(priv, STATION_STATE_READY); } else { atmel_scan(priv, 1); } @@ -3312,16 +3336,15 @@ static void atmel_command_irq(struct atm } else { priv->AuthenticationRequestRetryCnt = 0; atmel_enter_state(priv, STATION_STATE_AUTHENTICATING); - + mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); priv->CurrentAuthentTransactionSeqNum = 0x0001; send_authentication_request(priv, C80211_MGMT_AAN_SHAREDKEY, NULL, 0); } return; } - + atmel_scan(priv, 1); - } } @@ -3333,20 +3356,20 @@ static int atmel_wakeup_firmware(struct if (priv->card_type == CARD_TYPE_SPI_FLASH) atmel_set_gcr(priv->dev, GCR_REMAP); - + /* wake up on-board processor */ atmel_clear_gcr(priv->dev, 0x0040); atmel_write16(priv->dev, BSR, BSS_SRAM); - + if (priv->card_type == CARD_TYPE_SPI_FLASH) mdelay(100); /* and wait for it */ - for (i = LOOP_RETRY_LIMIT; i; i--) { + for (i = LOOP_RETRY_LIMIT; i; i--) { mr1 = atmel_read16(priv->dev, MR1); mr3 = atmel_read16(priv->dev, MR3); - - if (mr3 & MAC_BOOT_COMPLETE) + + if (mr3 & MAC_BOOT_COMPLETE) break; if (mr1 & MAC_BOOT_COMPLETE && priv->bus_type == BUS_TYPE_PCCARD) @@ -3357,35 +3380,36 @@ static int atmel_wakeup_firmware(struct printk(KERN_ALERT "%s: MAC failed to boot.\n", priv->dev->name); return 0; } - + if ((priv->host_info_base = atmel_read16(priv->dev, MR2)) == 0xffff) { printk(KERN_ALERT "%s: card missing.\n", priv->dev->name); return 0; } - - /* now check for completion of MAC initialization through - the FunCtrl field of the IFACE, poll MR1 to detect completion of - MAC initialization, check completion status, set interrupt mask, - enables interrupts and calls Tx and Rx initialization functions */ - + + /* now check for completion of MAC initialization through + the FunCtrl field of the IFACE, poll MR1 to detect completion of + MAC initialization, check completion status, set interrupt mask, + enables interrupts and calls Tx and Rx initialization functions */ + atmel_wmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET), FUNC_CTRL_INIT_COMPLETE); - - for (i = LOOP_RETRY_LIMIT; i; i--) { + + for (i = LOOP_RETRY_LIMIT; i; i--) { mr1 = atmel_read16(priv->dev, MR1); mr3 = atmel_read16(priv->dev, MR3); - - if (mr3 & MAC_INIT_COMPLETE) + + if (mr3 & MAC_INIT_COMPLETE) break; if (mr1 & MAC_INIT_COMPLETE && priv->bus_type == BUS_TYPE_PCCARD) break; } - + if (i == 0) { - printk(KERN_ALERT "%s: MAC failed to initialise.\n", priv->dev->name); + printk(KERN_ALERT "%s: MAC failed to initialise.\n", + priv->dev->name); return 0; } - + /* Check for MAC_INIT_OK only on the register that the MAC_INIT_OK was set */ if ((mr3 & MAC_INIT_COMPLETE) && !(atmel_read16(priv->dev, MR3) & MAC_INIT_OK)) { @@ -3398,9 +3422,9 @@ static int atmel_wakeup_firmware(struct return 0; } - atmel_copy_to_host(priv->dev, (unsigned char *)iface, + atmel_copy_to_host(priv->dev, (unsigned char *)iface, priv->host_info_base, sizeof(*iface)); - + iface->tx_buff_pos = le16_to_cpu(iface->tx_buff_pos); iface->tx_buff_size = le16_to_cpu(iface->tx_buff_size); iface->tx_desc_pos = le16_to_cpu(iface->tx_desc_pos); @@ -3424,16 +3448,16 @@ static int probe_atmel_card(struct net_d { int rc = 0; struct atmel_private *priv = netdev_priv(dev); - + /* reset pccard */ - if (priv->bus_type == BUS_TYPE_PCCARD) + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(dev, GCR, 0x0060); - + atmel_write16(dev, GCR, 0x0040); mdelay(500); - + if (atmel_read16(dev, MR2) == 0) { - /* No stored firmware so load a small stub which just + /* No stored firmware so load a small stub which just tells us the MAC address */ int i; priv->card_type = CARD_TYPE_EEPROM; @@ -3442,7 +3466,7 @@ static int probe_atmel_card(struct net_d atmel_set_gcr(dev, GCR_REMAP); atmel_clear_gcr(priv->dev, 0x0040); atmel_write16(dev, BSR, BSS_SRAM); - for (i = LOOP_RETRY_LIMIT; i; i--) + for (i = LOOP_RETRY_LIMIT; i; i--) if (atmel_read16(dev, MR3) & MAC_BOOT_COMPLETE) break; if (i == 0) { @@ -3451,7 +3475,7 @@ static int probe_atmel_card(struct net_d atmel_copy_to_host(dev, dev->dev_addr, atmel_read16(dev, MR2), 6); /* got address, now squash it again until the network interface is opened */ - if (priv->bus_type == BUS_TYPE_PCCARD) + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(dev, GCR, 0x0060); atmel_write16(dev, GCR, 0x0040); rc = 1; @@ -3459,7 +3483,7 @@ static int probe_atmel_card(struct net_d } else if (atmel_read16(dev, MR4) == 0) { /* Mac address easy in this case. */ priv->card_type = CARD_TYPE_PARALLEL_FLASH; - atmel_write16(dev, BSR, 1); + atmel_write16(dev, BSR, 1); atmel_copy_to_host(dev, dev->dev_addr, 0xc000, 6); atmel_write16(dev, BSR, 0x200); rc = 1; @@ -3469,16 +3493,16 @@ static int probe_atmel_card(struct net_d priv->card_type = CARD_TYPE_SPI_FLASH; if (atmel_wakeup_firmware(priv)) { atmel_get_mib(priv, Mac_Address_Mib_Type, 0, dev->dev_addr, 6); - + /* got address, now squash it again until the network interface is opened */ - if (priv->bus_type == BUS_TYPE_PCCARD) + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(dev, GCR, 0x0060); atmel_write16(dev, GCR, 0x0040); rc = 1; } } - + if (rc) { if (dev->dev_addr[0] == 0xFF) { u8 default_mac[] = {0x00,0x04, 0x25, 0x00, 0x00, 0x00}; @@ -3486,27 +3510,27 @@ static int probe_atmel_card(struct net_d memcpy(dev->dev_addr, default_mac, 6); } } - + return rc; } -static void build_wep_mib(struct atmel_private *priv) /* Move the encyption information on the MIB structure. This routine is for the pre-WPA firmware: later firmware has a different format MIB and a different routine. */ +static void build_wep_mib(struct atmel_private *priv) { struct { /* NB this is matched to the hardware, don't change. */ - u8 wep_is_on; + u8 wep_is_on; u8 default_key; /* 0..3 */ u8 reserved; u8 exclude_unencrypted; - + u32 WEPICV_error_count; u32 WEP_excluded_count; - + u8 wep_keys[MAX_ENCRYPTION_KEYS][13]; - u8 encryption_level; /* 0, 1, 2 */ - u8 reserved2[3]; + u8 encryption_level; /* 0, 1, 2 */ + u8 reserved2[3]; } mib; int i; @@ -3515,54 +3539,55 @@ static void build_wep_mib(struct atmel_p if (priv->wep_key_len[priv->default_key] > 5) mib.encryption_level = 2; else - mib.encryption_level = 1; + mib.encryption_level = 1; } else { mib.encryption_level = 0; } mib.default_key = priv->default_key; mib.exclude_unencrypted = priv->exclude_unencrypted; - - for(i = 0; i < MAX_ENCRYPTION_KEYS; i++) + + for (i = 0; i < MAX_ENCRYPTION_KEYS; i++) memcpy(mib.wep_keys[i], priv->wep_keys[i], 13); - + atmel_set_mib(priv, Mac_Wep_Mib_Type, 0, (u8 *)&mib, sizeof(mib)); } static void build_wpa_mib(struct atmel_private *priv) { - /* This is for the later (WPA enabled) firmware. */ + /* This is for the later (WPA enabled) firmware. */ struct { /* NB this is matched to the hardware, don't change. */ u8 cipher_default_key_value[MAX_ENCRYPTION_KEYS][MAX_ENCRYPTION_KEY_SIZE]; u8 receiver_address[6]; - u8 wep_is_on; + u8 wep_is_on; u8 default_key; /* 0..3 */ u8 group_key; u8 exclude_unencrypted; u8 encryption_type; u8 reserved; - + u32 WEPICV_error_count; u32 WEP_excluded_count; - + u8 key_RSC[4][8]; } mib; - + int i; mib.wep_is_on = priv->wep_is_on; mib.exclude_unencrypted = priv->exclude_unencrypted; memcpy(mib.receiver_address, priv->CurrentBSSID, 6); - + /* zero all the keys before adding in valid ones. */ memset(mib.cipher_default_key_value, 0, sizeof(mib.cipher_default_key_value)); - + if (priv->wep_is_on) { - /* There's a comment in the Atmel code to the effect that this is only valid - when still using WEP, it may need to be set to something to use WPA */ + /* There's a comment in the Atmel code to the effect that this + is only valid when still using WEP, it may need to be set to + something to use WPA */ memset(mib.key_RSC, 0, sizeof(mib.key_RSC)); - + mib.default_key = mib.group_key = 255; for (i = 0; i < MAX_ENCRYPTION_KEYS; i++) { if (priv->wep_key_len[i] > 0) { @@ -3570,12 +3595,12 @@ static void build_wpa_mib(struct atmel_p if (i == priv->default_key) { mib.default_key = i; mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-1] = 7; - mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-2] = priv->pairwise_cipher_suite; + mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-2] = priv->pairwise_cipher_suite; } else { mib.group_key = i; priv->group_cipher_suite = priv->pairwise_cipher_suite; mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-1] = 1; - mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-2] = priv->group_cipher_suite; + mib.cipher_default_key_value[i][MAX_ENCRYPTION_KEY_SIZE-2] = priv->group_cipher_suite; } } } @@ -3583,47 +3608,47 @@ static void build_wpa_mib(struct atmel_p mib.default_key = mib.group_key != 255 ? mib.group_key : 0; if (mib.group_key == 255) mib.group_key = mib.default_key; - + } - + atmel_set_mib(priv, Mac_Wep_Mib_Type, 0, (u8 *)&mib, sizeof(mib)); } - -static int reset_atmel_card(struct net_device *dev) + +static int reset_atmel_card(struct net_device *dev) { /* do everything necessary to wake up the hardware, including waiting for the lightning strike and throwing the knife switch.... - set all the Mib values which matter in the card to match + set all the Mib values which matter in the card to match their settings in the atmel_private structure. Some of these can be altered on the fly, but many (WEP, infrastucture or ad-hoc) can only be changed by tearing down the world and coming back through here. - This routine is also responsible for initialising some - hardware-specific fields in the atmel_private structure, + This routine is also responsible for initialising some + hardware-specific fields in the atmel_private structure, including a copy of the firmware's hostinfo stucture which is the route into the rest of the firmare datastructures. */ struct atmel_private *priv = netdev_priv(dev); u8 configuration; - + /* data to add to the firmware names, in priority order this implemenents firmware versioning */ - + static char *firmware_modifier[] = { "-wpa", "", NULL }; - + /* reset pccard */ - if (priv->bus_type == BUS_TYPE_PCCARD) + if (priv->bus_type == BUS_TYPE_PCCARD) atmel_write16(priv->dev, GCR, 0x0060); - + /* stop card , disable interrupts */ atmel_write16(priv->dev, GCR, 0x0040); - + if (priv->card_type == CARD_TYPE_EEPROM) { /* copy in firmware if needed */ const struct firmware *fw_entry = NULL; @@ -3636,13 +3661,13 @@ static int reset_atmel_card(struct net_d "%s: card type is unknown: assuming at76c502 firmware is OK.\n", dev->name); printk(KERN_INFO - "%s: if not, use the firmware= module parameter.\n", + "%s: if not, use the firmware= module parameter.\n", dev->name); strcpy(priv->firmware_id, "atmel_at76c502.bin"); } if (request_firmware(&fw_entry, priv->firmware_id, priv->sys_dev) != 0) { - printk(KERN_ALERT - "%s: firmware %s is missing, cannot continue.\n", + printk(KERN_ALERT + "%s: firmware %s is missing, cannot continue.\n", dev->name, priv->firmware_id); return 0; } @@ -3654,7 +3679,7 @@ static int reset_atmel_card(struct net_d while (fw_table[fw_index].fw_type != priv->firmware_type && fw_table[fw_index].fw_type != ATMEL_FW_TYPE_NONE) fw_index++; - + /* construct the actual firmware file name */ if (fw_table[fw_index].fw_type != ATMEL_FW_TYPE_NONE) { int i; @@ -3669,24 +3694,24 @@ static int reset_atmel_card(struct net_d } } if (!success) { - printk(KERN_ALERT - "%s: firmware %s is missing, cannot start.\n", + printk(KERN_ALERT + "%s: firmware %s is missing, cannot start.\n", dev->name, priv->firmware_id); priv->firmware_id[0] = '\0'; - return 0; + return 0; } } - + fw = fw_entry->data; len = fw_entry->size; } - + if (len <= 0x6000) { atmel_write16(priv->dev, BSR, BSS_IRAM); atmel_copy_to_card(priv->dev, 0, fw, len); atmel_set_gcr(priv->dev, GCR_REMAP); } else { - /* Remap */ + /* Remap */ atmel_set_gcr(priv->dev, GCR_REMAP); atmel_write16(priv->dev, BSR, BSS_IRAM); atmel_copy_to_card(priv->dev, 0, fw, 0x6000); @@ -3708,45 +3733,45 @@ static int reset_atmel_card(struct net_d the 3com broken-ness filter. */ priv->use_wpa = (priv->host_info.major_version == 4); priv->radio_on_broken = (priv->host_info.major_version == 5); - + /* unmask all irq sources */ atmel_wmem8(priv, atmel_hi(priv, IFACE_INT_MASK_OFFSET), 0xff); - + /* int Tx system and enable Tx */ atmel_wmem8(priv, atmel_tx(priv, TX_DESC_FLAGS_OFFSET, 0), 0); atmel_wmem32(priv, atmel_tx(priv, TX_DESC_NEXT_OFFSET, 0), 0x80000000L); atmel_wmem16(priv, atmel_tx(priv, TX_DESC_POS_OFFSET, 0), 0); atmel_wmem16(priv, atmel_tx(priv, TX_DESC_SIZE_OFFSET, 0), 0); - priv->tx_desc_free = priv->host_info.tx_desc_count; - priv->tx_desc_head = 0; - priv->tx_desc_tail = 0; + priv->tx_desc_free = priv->host_info.tx_desc_count; + priv->tx_desc_head = 0; + priv->tx_desc_tail = 0; priv->tx_desc_previous = 0; priv->tx_free_mem = priv->host_info.tx_buff_size; - priv->tx_buff_head = 0; - priv->tx_buff_tail = 0; - - configuration = atmel_rmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET)); - atmel_wmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET), + priv->tx_buff_head = 0; + priv->tx_buff_tail = 0; + + configuration = atmel_rmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET)); + atmel_wmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET), configuration | FUNC_CTRL_TxENABLE); /* init Rx system and enable */ priv->rx_desc_head = 0; - - configuration = atmel_rmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET)); - atmel_wmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET), + + configuration = atmel_rmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET)); + atmel_wmem8(priv, atmel_hi(priv, IFACE_FUNC_CTRL_OFFSET), configuration | FUNC_CTRL_RxENABLE); - + if (!priv->radio_on_broken) { - if (atmel_send_command_wait(priv, CMD_EnableRadio, NULL, 0) == + if (atmel_send_command_wait(priv, CMD_EnableRadio, NULL, 0) == CMD_STATUS_REJECTED_RADIO_OFF) { - printk(KERN_INFO + printk(KERN_INFO "%s: cannot turn the radio on. (Hey radio, you're beautiful!)\n", dev->name); return 0; } } - + /* set up enough MIB values to run. */ atmel_set_mib8(priv, Local_Mib_Type, LOCAL_MIB_AUTO_TX_RATE_POS, priv->auto_tx_rate); atmel_set_mib8(priv, Local_Mib_Type, LOCAL_MIB_TX_PROMISCUOUS_POS, PROM_MODE_OFF); @@ -3755,7 +3780,7 @@ static int reset_atmel_card(struct net_d atmel_set_mib8(priv, Mac_Mib_Type, MAC_MIB_SHORT_RETRY_POS, priv->short_retry); atmel_set_mib8(priv, Mac_Mib_Type, MAC_MIB_LONG_RETRY_POS, priv->long_retry); atmel_set_mib8(priv, Local_Mib_Type, LOCAL_MIB_PREAMBLE_TYPE, priv->preamble); - atmel_set_mib(priv, Mac_Address_Mib_Type, MAC_ADDR_MIB_MAC_ADDR_POS, + atmel_set_mib(priv, Mac_Address_Mib_Type, MAC_ADDR_MIB_MAC_ADDR_POS, priv->dev->dev_addr, 6); atmel_set_mib8(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_PS_MODE_POS, ACTIVE_MODE); atmel_set_mib16(priv, Mac_Mgmt_Mib_Type, MAC_MGMT_MIB_LISTEN_INTERVAL_POS, 1); @@ -3766,42 +3791,44 @@ static int reset_atmel_card(struct net_d build_wpa_mib(priv); else build_wep_mib(priv); - + return 1; } -static void atmel_send_command(struct atmel_private *priv, int command, void *cmd, int cmd_size) +static void atmel_send_command(struct atmel_private *priv, int command, + void *cmd, int cmd_size) { if (cmd) - atmel_copy_to_card(priv->dev, atmel_co(priv, CMD_BLOCK_PARAMETERS_OFFSET), + atmel_copy_to_card(priv->dev, atmel_co(priv, CMD_BLOCK_PARAMETERS_OFFSET), cmd, cmd_size); - + atmel_wmem8(priv, atmel_co(priv, CMD_BLOCK_COMMAND_OFFSET), command); atmel_wmem8(priv, atmel_co(priv, CMD_BLOCK_STATUS_OFFSET), 0); } - -static int atmel_send_command_wait(struct atmel_private *priv, int command, void *cmd, int cmd_size) + +static int atmel_send_command_wait(struct atmel_private *priv, int command, + void *cmd, int cmd_size) { int i, status; - + atmel_send_command(priv, command, cmd, cmd_size); - + for (i = 5000; i; i--) { status = atmel_rmem8(priv, atmel_co(priv, CMD_BLOCK_STATUS_OFFSET)); - if (status != CMD_STATUS_IDLE && + if (status != CMD_STATUS_IDLE && status != CMD_STATUS_IN_PROGRESS) break; udelay(20); } - + if (i == 0) { printk(KERN_ALERT "%s: failed to contact MAC.\n", priv->dev->name); status = CMD_STATUS_HOST_ERROR; - } else { + } else { if (command != CMD_EnableRadio) status = CMD_STATUS_COMPLETE; } - + return status; } @@ -3827,7 +3854,8 @@ static void atmel_set_mib8(struct atmel_ atmel_send_command_wait(priv, CMD_Set_MIB_Vars, &m, MIB_HEADER_SIZE + 1); } -static void atmel_set_mib16(struct atmel_private *priv, u8 type, u8 index, u16 data) +static void atmel_set_mib16(struct atmel_private *priv, u8 type, u8 index, + u16 data) { struct get_set_mib m; m.type = type; @@ -3839,7 +3867,8 @@ static void atmel_set_mib16(struct atmel atmel_send_command_wait(priv, CMD_Set_MIB_Vars, &m, MIB_HEADER_SIZE + 2); } -static void atmel_set_mib(struct atmel_private *priv, u8 type, u8 index, u8 *data, int data_len) +static void atmel_set_mib(struct atmel_private *priv, u8 type, u8 index, + u8 *data, int data_len) { struct get_set_mib m; m.type = type; @@ -3848,23 +3877,24 @@ static void atmel_set_mib(struct atmel_p if (data_len > MIB_MAX_DATA_BYTES) printk(KERN_ALERT "%s: MIB buffer too small.\n", priv->dev->name); - + memcpy(m.data, data, data_len); atmel_send_command_wait(priv, CMD_Set_MIB_Vars, &m, MIB_HEADER_SIZE + data_len); } -static void atmel_get_mib(struct atmel_private *priv, u8 type, u8 index, u8 *data, int data_len) +static void atmel_get_mib(struct atmel_private *priv, u8 type, u8 index, + u8 *data, int data_len) { struct get_set_mib m; m.type = type; m.size = data_len; m.index = index; - + if (data_len > MIB_MAX_DATA_BYTES) printk(KERN_ALERT "%s: MIB buffer too small.\n", priv->dev->name); - + atmel_send_command_wait(priv, CMD_Get_MIB_Vars, &m, MIB_HEADER_SIZE + data_len); - atmel_copy_to_host(priv->dev, data, + atmel_copy_to_host(priv->dev, data, atmel_co(priv, CMD_BLOCK_PARAMETERS_OFFSET + MIB_HEADER_SIZE), data_len); } @@ -3873,11 +3903,12 @@ static void atmel_writeAR(struct net_dev int i; outw(data, dev->base_addr + AR); /* Address register appears to need some convincing..... */ - for (i = 0; data != inw(dev->base_addr + AR) && i<10; i++) + for (i = 0; data != inw(dev->base_addr + AR) && i < 10; i++) outw(data, dev->base_addr + AR); } -static void atmel_copy_to_card(struct net_device *dev, u16 dest, unsigned char *src, u16 len) +static void atmel_copy_to_card(struct net_device *dev, u16 dest, + unsigned char *src, u16 len) { int i; atmel_writeAR(dev, dest); @@ -3894,7 +3925,8 @@ static void atmel_copy_to_card(struct ne atmel_write8(dev, DR, *src); } -static void atmel_copy_to_host(struct net_device *dev, unsigned char *dest, u16 src, u16 len) +static void atmel_copy_to_host(struct net_device *dev, unsigned char *dest, + u16 src, u16 len) { int i; atmel_writeAR(dev, src); @@ -3930,22 +3962,24 @@ static int atmel_lock_mac(struct atmel_p break; udelay(20); } - - if (!i) return 0; /* timed out */ - + + if (!i) + return 0; /* timed out */ + atmel_wmem8(priv, atmel_hi(priv, IFACE_LOCKOUT_MAC_OFFSET), 1); if (atmel_rmem8(priv, atmel_hi(priv, IFACE_LOCKOUT_HOST_OFFSET))) { atmel_wmem8(priv, atmel_hi(priv, IFACE_LOCKOUT_MAC_OFFSET), 0); - if (!j--) return 0; /* timed out */ + if (!j--) + return 0; /* timed out */ goto retry; } - + return 1; } static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data) { - atmel_writeAR(priv->dev, pos); + atmel_writeAR(priv->dev, pos); atmel_write16(priv->dev, DR, data); /* card is little-endian */ atmel_write16(priv->dev, DR, data >> 16); } @@ -4017,9 +4051,9 @@ static void atmel_wmem32(struct atmel_pr serial output, since SO is normally high. But it does cause 8 clock cycles and thus 8 bits to be clocked in to the chip. See Atmel's SPI - controller (e.g. AT91M55800) timing and 4K + controller (e.g. AT91M55800) timing and 4K SPI EEPROM manuals */ - + .set NVRAM_SCRATCH, 0x02000100 /* arbitrary area for scratchpad memory */ .set NVRAM_IMAGE, 0x02000200 .set NVRAM_LENGTH, 0x0200 @@ -4032,24 +4066,24 @@ static void atmel_wmem32(struct atmel_pr .set MR4, 0xC RESET_VECTOR: b RESET_HANDLER -UNDEF_VECTOR: +UNDEF_VECTOR: b HALT1 -SWI_VECTOR: +SWI_VECTOR: b HALT1 -IABORT_VECTOR: +IABORT_VECTOR: b HALT1 -DABORT_VECTOR: -RESERVED_VECTOR: +DABORT_VECTOR: +RESERVED_VECTOR: b HALT1 -IRQ_VECTOR: +IRQ_VECTOR: b HALT1 -FIQ_VECTOR: +FIQ_VECTOR: b HALT1 HALT1: b HALT1 RESET_HANDLER: mov r0, #CPSR_INITIAL msr CPSR_c, r0 /* This is probably unnecessary */ - + /* I'm guessing this is initializing clock generator electronics for SPI */ ldr r0, =SPI_CGEN_BASE mov r1, #0 @@ -4061,7 +4095,7 @@ RESET_HANDLER: str r1, [r0, #28] mov r1, #1 str r1, [r0, #8] - + ldr r0, =MRBASE mov r1, #0 strh r1, [r0, #MR1] @@ -4094,7 +4128,7 @@ GET_WHOLE_NVRAM: ldmia sp!, {lr} bx lr .endfunc - + .func Get_MAC_Addr, GET_MAC_ADDR GET_MAC_ADDR: stmdb sp!, {lr} @@ -4110,13 +4144,13 @@ GET_MAC_ADDR: .func Delay9, DELAY9 DELAY9: adds r0, r0, r0, LSL #3 /* r0 = r0 * 9 */ -DELAYLOOP: +DELAYLOOP: beq DELAY9_done subs r0, r0, #1 b DELAYLOOP -DELAY9_done: +DELAY9_done: bx lr -.endfunc +.endfunc .func SP_Init, SP_INIT SP_INIT: @@ -4145,26 +4179,26 @@ SP_INIT: ldr r0, [r0, #SP_RDR] bx lr .endfunc -.func NVRAM_Init, NVRAM_INIT +.func NVRAM_Init, NVRAM_INIT NVRAM_INIT: ldr r1, =SP_BASE ldr r0, [r1, #SP_RDR] mov r0, #NVRAM_CMD_RDSR str r0, [r1, #SP_TDR] -SP_loop1: +SP_loop1: ldr r0, [r1, #SP_SR] tst r0, #SP_TDRE beq SP_loop1 mov r0, #SPI_8CLOCKS - str r0, [r1, #SP_TDR] -SP_loop2: + str r0, [r1, #SP_TDR] +SP_loop2: ldr r0, [r1, #SP_SR] tst r0, #SP_TDRE beq SP_loop2 ldr r0, [r1, #SP_RDR] -SP_loop3: +SP_loop3: ldr r0, [r1, #SP_SR] tst r0, #SP_RDRF beq SP_loop3 @@ -4173,7 +4207,7 @@ SP_loop3: and r0, r0, #255 bx lr .endfunc - + .func NVRAM_Xfer, NVRAM_XFER /* r0 = dest address */ /* r1 = not used */ @@ -4185,11 +4219,11 @@ NVRAM_XFER: mov r4, r3 /* save r3 (length) */ mov r0, r2, LSR #5 /* SPI memories put A8 in the command field */ and r0, r0, #8 - add r0, r0, #NVRAM_CMD_READ + add r0, r0, #NVRAM_CMD_READ ldr r1, =NVRAM_SCRATCH strb r0, [r1, #0] /* save command in NVRAM_SCRATCH[0] */ strb r2, [r1, #1] /* save low byte of source address in NVRAM_SCRATCH[1] */ -_local1: +_local1: bl NVRAM_INIT tst r0, #NVRAM_SR_RDY bne _local1 @@ -4211,7 +4245,7 @@ NVRAM_XFER2: cmp r0, #0 bls _local2 ldr r5, =NVRAM_SCRATCH -_local4: +_local4: ldrb r6, [r5, r3] str r6, [r4, #SP_TDR] _local3: @@ -4225,7 +4259,7 @@ _local2: mov r3, #SPI_8CLOCKS str r3, [r4, #SP_TDR] ldr r0, [r4, #SP_RDR] -_local5: +_local5: ldr r0, [r4, #SP_SR] tst r0, #SP_RDRF beq _local5 @@ -4233,12 +4267,12 @@ _local5: mov r0, #0 cmp r2, #0 /* r2 is # of bytes to copy in */ bls _local6 -_local7: +_local7: ldr r5, [r4, #SP_SR] tst r5, #SP_TDRE beq _local7 str r3, [r4, #SP_TDR] /* r3 has SPI_8CLOCKS */ -_local8: +_local8: ldr r5, [r4, #SP_SR] tst r5, #SP_RDRF beq _local8 --- a/drivers/scsi/FlashPoint.c +++ b/drivers/scsi/FlashPoint.c @@ -15,116 +15,46 @@ */ - #include - #ifndef CONFIG_SCSI_OMIT_FLASHPOINT - #define MAX_CARDS 8 #undef BUSTYPE_PCI - -#define OS_InPortByte(port) inb(port) -#define OS_InPortWord(port) inw(port) -#define OS_InPortLong(port) inl(port) -#define OS_OutPortByte(port, value) outb(value, port) -#define OS_OutPortWord(port, value) outw(value, port) -#define OS_OutPortLong(port, value) outl(value, port) - - -/* - Define name replacements for compatibility with the Linux BusLogic Driver. -*/ - -#define SccbMgr_sense_adapter FlashPoint_ProbeHostAdapter -#define SccbMgr_config_adapter FlashPoint_HardwareResetHostAdapter -#define SccbMgr_unload_card FlashPoint_ReleaseHostAdapter -#define SccbMgr_start_sccb FlashPoint_StartCCB -#define SccbMgr_abort_sccb FlashPoint_AbortCCB -#define SccbMgr_my_int FlashPoint_InterruptPending -#define SccbMgr_isr FlashPoint_HandleInterrupt - - -#define MAX_CDBLEN 12 - -#define SCAM_LEV_2 1 - #define CRCMASK 0xA001 -#define BL_VENDOR_ID 0x104B -#define FP_DEVICE_ID 0x8130 -#define MM_DEVICE_ID 0x1040 - - #define FAILURE 0xFFFFFFFFL +#define BIT(x) ((unsigned char)(1<<(x))) /* single-bit mask in bit position x */ +#define BITW(x) ((unsigned short)(1<<(x))) /* single-bit mask in bit position x */ -typedef unsigned char UCHAR; -typedef unsigned short USHORT; -typedef unsigned int UINT; -typedef unsigned long ULONG; -typedef unsigned char * PUCHAR; -typedef unsigned short* PUSHORT; -typedef unsigned long * PULONG; -typedef void * PVOID; - - -typedef unsigned char * uchar_ptr; -typedef unsigned short * ushort_ptr; -typedef unsigned long * ulong_ptr; - - -#define s08bits char -#define s16bits short -#define s32bits long - -#define u08bits unsigned s08bits -#define u16bits unsigned s16bits -#define u32bits unsigned s32bits - -typedef u08bits * pu08bits; -typedef u16bits * pu16bits; -typedef u32bits * pu32bits; - - -#define BIT(x) ((UCHAR)(1<<(x))) /* single-bit mask in bit position x */ -#define BITW(x) ((USHORT)(1<<(x))) /* single-bit mask in bit position x */ - - - - -typedef struct _SCCB *PSCCB; -typedef void (*CALL_BK_FN)(PSCCB); - - -typedef struct SCCBMgr_info { - ULONG si_baseaddr; - UCHAR si_present; - UCHAR si_intvect; - UCHAR si_id; - UCHAR si_lun; - USHORT si_fw_revision; - USHORT si_per_targ_init_sync; - USHORT si_per_targ_fast_nego; - USHORT si_per_targ_ultra_nego; - USHORT si_per_targ_no_disc; - USHORT si_per_targ_wide_nego; - USHORT si_flags; - UCHAR si_card_family; - UCHAR si_bustype; - UCHAR si_card_model[3]; - UCHAR si_relative_cardnum; - UCHAR si_reserved[4]; - ULONG si_OS_reserved; - UCHAR si_XlatInfo[4]; - ULONG si_reserved2[5]; - ULONG si_secondary_range; -} SCCBMGR_INFO; - -typedef SCCBMGR_INFO * PSCCBMGR_INFO; +struct sccb; +typedef void (*CALL_BK_FN) (struct sccb *); +struct sccb_mgr_info { + unsigned long si_baseaddr; + unsigned char si_present; + unsigned char si_intvect; + unsigned char si_id; + unsigned char si_lun; + unsigned short si_fw_revision; + unsigned short si_per_targ_init_sync; + unsigned short si_per_targ_fast_nego; + unsigned short si_per_targ_ultra_nego; + unsigned short si_per_targ_no_disc; + unsigned short si_per_targ_wide_nego; + unsigned short si_flags; + unsigned char si_card_family; + unsigned char si_bustype; + unsigned char si_card_model[3]; + unsigned char si_relative_cardnum; + unsigned char si_reserved[4]; + unsigned long si_OS_reserved; + unsigned char si_XlatInfo[4]; + unsigned long si_reserved2[5]; + unsigned long si_secondary_range; +}; #define SCSI_PARITY_ENA 0x0001 #define LOW_BYTE_TERM 0x0010 @@ -138,107 +68,81 @@ typedef SCCBMGR_INFO * PSCCBMGR_INF #define FLAG_SCAM_ENABLED 0x0080 #define FLAG_SCAM_LEVEL2 0x0100 - - - #define HARPOON_FAMILY 0x02 - -#define ISA_BUS_CARD 0x01 -#define EISA_BUS_CARD 0x02 -#define PCI_BUS_CARD 0x03 -#define VESA_BUS_CARD 0x04 - /* SCCB struc used for both SCCB and UCB manager compiles! * The UCB Manager treats the SCCB as it's 'native hardware structure' */ - #pragma pack(1) -typedef struct _SCCB { - UCHAR OperationCode; - UCHAR ControlByte; - UCHAR CdbLength; - UCHAR RequestSenseLength; - ULONG DataLength; - ULONG DataPointer; - UCHAR CcbRes[2]; - UCHAR HostStatus; - UCHAR TargetStatus; - UCHAR TargID; - UCHAR Lun; - UCHAR Cdb[12]; - UCHAR CcbRes1; - UCHAR Reserved1; - ULONG Reserved2; - ULONG SensePointer; - - - CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ - ULONG SccbIOPort; /* Identifies board base port */ - UCHAR SccbStatus; - UCHAR SCCBRes2; - USHORT SccbOSFlags; - - - ULONG Sccb_XferCnt; /* actual transfer count */ - ULONG Sccb_ATC; - ULONG SccbVirtDataPtr; /* virtual addr for OS/2 */ - ULONG Sccb_res1; - USHORT Sccb_MGRFlags; - USHORT Sccb_sgseg; - UCHAR Sccb_scsimsg; /* identify msg for selection */ - UCHAR Sccb_tag; - UCHAR Sccb_scsistat; - UCHAR Sccb_idmsg; /* image of last msg in */ - PSCCB Sccb_forwardlink; - PSCCB Sccb_backlink; - ULONG Sccb_savedATC; - UCHAR Save_Cdb[6]; - UCHAR Save_CdbLen; - UCHAR Sccb_XferState; - ULONG Sccb_SGoffset; - } SCCB; - -#define SCCB_SIZE sizeof(SCCB) +struct sccb { + unsigned char OperationCode; + unsigned char ControlByte; + unsigned char CdbLength; + unsigned char RequestSenseLength; + unsigned long DataLength; + unsigned long DataPointer; + unsigned char CcbRes[2]; + unsigned char HostStatus; + unsigned char TargetStatus; + unsigned char TargID; + unsigned char Lun; + unsigned char Cdb[12]; + unsigned char CcbRes1; + unsigned char Reserved1; + unsigned long Reserved2; + unsigned long SensePointer; + + CALL_BK_FN SccbCallback; /* VOID (*SccbCallback)(); */ + unsigned long SccbIOPort; /* Identifies board base port */ + unsigned char SccbStatus; + unsigned char SCCBRes2; + unsigned short SccbOSFlags; + + unsigned long Sccb_XferCnt; /* actual transfer count */ + unsigned long Sccb_ATC; + unsigned long SccbVirtDataPtr; /* virtual addr for OS/2 */ + unsigned long Sccb_res1; + unsigned short Sccb_MGRFlags; + unsigned short Sccb_sgseg; + unsigned char Sccb_scsimsg; /* identify msg for selection */ + unsigned char Sccb_tag; + unsigned char Sccb_scsistat; + unsigned char Sccb_idmsg; /* image of last msg in */ + struct sccb *Sccb_forwardlink; + struct sccb *Sccb_backlink; + unsigned long Sccb_savedATC; + unsigned char Save_Cdb[6]; + unsigned char Save_CdbLen; + unsigned char Sccb_XferState; + unsigned long Sccb_SGoffset; +}; #pragma pack() - - -#define SCSI_INITIATOR_COMMAND 0x00 -#define TARGET_MODE_COMMAND 0x01 #define SCATTER_GATHER_COMMAND 0x02 #define RESIDUAL_COMMAND 0x03 #define RESIDUAL_SG_COMMAND 0x04 #define RESET_COMMAND 0x81 +#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ +#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ +#define SCCB_DATA_XFER_OUT 0x10 /* Write */ +#define SCCB_DATA_XFER_IN 0x08 /* Read */ -#define F_USE_CMD_Q 0x20 /*Inidcates TAGGED command. */ -#define TAG_TYPE_MASK 0xC0 /*Type of tag msg to send. */ -#define TAG_Q_MASK 0xE0 -#define SCCB_DATA_XFER_OUT 0x10 /* Write */ -#define SCCB_DATA_XFER_IN 0x08 /* Read */ - - -#define FOURTEEN_BYTES 0x00 /* Request Sense Buffer size */ -#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ - +#define NO_AUTO_REQUEST_SENSE 0x01 /* No Request Sense Buffer */ -#define BUS_FREE_ST 0 +#define BUS_FREE_ST 0 #define SELECT_ST 1 -#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ -#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ -#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ -#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ +#define SELECT_BDR_ST 2 /* Select w\ Bus Device Reset */ +#define SELECT_SN_ST 3 /* Select w\ Sync Nego */ +#define SELECT_WN_ST 4 /* Select w\ Wide Data Nego */ +#define SELECT_Q_ST 5 /* Select w\ Tagged Q'ing */ #define COMMAND_ST 6 #define DATA_OUT_ST 7 #define DATA_IN_ST 8 #define DISCONNECT_ST 9 -#define STATUS_ST 10 #define ABORT_ST 11 -#define MESSAGE_ST 12 - #define F_HOST_XFER_DIR 0x01 #define F_ALL_XFERRED 0x02 @@ -247,163 +151,115 @@ typedef struct _SCCB { #define F_ODD_BALL_CNT 0x10 #define F_NO_DATA_YET 0x80 - #define F_STATUSLOADED 0x01 -#define F_MSGLOADED 0x02 #define F_DEV_SELECTED 0x04 - -#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ +#define SCCB_COMPLETE 0x00 /* SCCB completed without error */ #define SCCB_DATA_UNDER_RUN 0x0C -#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ +#define SCCB_SELECTION_TIMEOUT 0x11 /* Set SCSI selection timed out */ #define SCCB_DATA_OVER_RUN 0x12 -#define SCCB_UNEXPECTED_BUS_FREE 0x13 /* Target dropped SCSI BSY */ -#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ - -#define SCCB_INVALID_OP_CODE 0x16 /* SCCB invalid operation code */ -#define SCCB_INVALID_SCCB 0x1A /* Invalid SCCB - bad parameter */ -#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ -#define SCCB_BM_ERR 0x30 /* BusMaster error. */ -#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ - - - -#define SCCB_INVALID_DIRECTION 0x18 /* Invalid target direction */ -#define SCCB_DUPLICATE_SCCB 0x19 /* Duplicate SCCB */ -#define SCCB_SCSI_RST 0x35 /* SCSI RESET detected. */ +#define SCCB_PHASE_SEQUENCE_FAIL 0x14 /* Target bus phase sequence failure */ +#define SCCB_GROSS_FW_ERR 0x27 /* Major problem! */ +#define SCCB_BM_ERR 0x30 /* BusMaster error. */ +#define SCCB_PARITY_ERR 0x34 /* SCSI parity error */ #define SCCB_IN_PROCESS 0x00 #define SCCB_SUCCESS 0x01 #define SCCB_ABORT 0x02 -#define SCCB_NOT_FOUND 0x03 #define SCCB_ERROR 0x04 -#define SCCB_INVALID 0x05 - -#define SCCB_SIZE sizeof(SCCB) - #define ORION_FW_REV 3110 -#define HARP_REVD 1 - - -#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ - -#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ +#define QUEUE_DEPTH 254+1 /*1 for Normal disconnect 32 for Q'ing. */ -#define WIDE_SCSI 1 +#define MAX_MB_CARDS 4 /* Max. no of cards suppoerted on Mother Board */ #define MAX_SCSI_TAR 16 #define MAX_LUN 32 #define LUN_MASK 0x1f -#if defined(HARP_REVA) -#define SG_BUF_CNT 15 /*Number of prefetched elements. */ -#else -#define SG_BUF_CNT 16 /*Number of prefetched elements. */ -#endif - -#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ -#define SG_LOCAL_MASK 0x00000000L -#define SG_ELEMENT_MASK 0xFFFFFFFFL - - -#define RD_HARPOON(ioport) OS_InPortByte((u32bits)ioport) -#define RDW_HARPOON(ioport) OS_InPortWord((u32bits)ioport) -#define RD_HARP32(ioport,offset,data) (data = OS_InPortLong((u32bits)(ioport + offset))) -#define WR_HARPOON(ioport,val) OS_OutPortByte((u32bits)ioport,(u08bits) val) -#define WRW_HARPOON(ioport,val) OS_OutPortWord((u32bits)ioport,(u16bits)val) -#define WR_HARP32(ioport,offset,data) OS_OutPortLong((u32bits)(ioport + offset), data) +#define SG_BUF_CNT 16 /*Number of prefetched elements. */ +#define SG_ELEMENT_SIZE 8 /*Eight byte per element. */ + +#define RD_HARPOON(ioport) inb((u32)ioport) +#define RDW_HARPOON(ioport) inw((u32)ioport) +#define RD_HARP32(ioport,offset,data) (data = inl((u32)(ioport + offset))) +#define WR_HARPOON(ioport,val) outb((u8) val, (u32)ioport) +#define WRW_HARPOON(ioport,val) outw((u16)val, (u32)ioport) +#define WR_HARP32(ioport,offset,data) outl(data, (u32)(ioport + offset)) #define TAR_SYNC_MASK (BIT(7)+BIT(6)) -#define SYNC_UNKNOWN 0x00 #define SYNC_TRYING BIT(6) #define SYNC_SUPPORTED (BIT(7)+BIT(6)) #define TAR_WIDE_MASK (BIT(5)+BIT(4)) -#define WIDE_DISABLED 0x00 #define WIDE_ENABLED BIT(4) #define WIDE_NEGOCIATED BIT(5) #define TAR_TAG_Q_MASK (BIT(3)+BIT(2)) -#define TAG_Q_UNKNOWN 0x00 #define TAG_Q_TRYING BIT(2) #define TAG_Q_REJECT BIT(3) -#define TAG_Q_SUPPORTED (BIT(3)+BIT(2)) #define TAR_ALLOW_DISC BIT(0) - #define EE_SYNC_MASK (BIT(0)+BIT(1)) -#define EE_SYNC_ASYNC 0x00 #define EE_SYNC_5MB BIT(0) #define EE_SYNC_10MB BIT(1) #define EE_SYNC_20MB (BIT(0)+BIT(1)) -#define EE_ALLOW_DISC BIT(6) #define EE_WIDE_SCSI BIT(7) +struct sccb_mgr_tar_info { -typedef struct SCCBMgr_tar_info *PSCCBMgr_tar_info; - - -typedef struct SCCBMgr_tar_info { - - PSCCB TarSelQ_Head; - PSCCB TarSelQ_Tail; - UCHAR TarLUN_CA; /*Contingent Allgiance */ - UCHAR TarTagQ_Cnt; - UCHAR TarSelQ_Cnt; - UCHAR TarStatus; - UCHAR TarEEValue; - UCHAR TarSyncCtrl; - UCHAR TarReserved[2]; /* for alignment */ - UCHAR LunDiscQ_Idx[MAX_LUN]; - UCHAR TarLUNBusy[MAX_LUN]; -} SCCBMGR_TAR_INFO; - -typedef struct NVRAMInfo { - UCHAR niModel; /* Model No. of card */ - UCHAR niCardNo; /* Card no. */ - ULONG niBaseAddr; /* Port Address of card */ - UCHAR niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ - UCHAR niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ - UCHAR niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ - UCHAR niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ - UCHAR niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ - UCHAR niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ -}NVRAMINFO; - -typedef NVRAMINFO *PNVRamInfo; + struct sccb *TarSelQ_Head; + struct sccb *TarSelQ_Tail; + unsigned char TarLUN_CA; /*Contingent Allgiance */ + unsigned char TarTagQ_Cnt; + unsigned char TarSelQ_Cnt; + unsigned char TarStatus; + unsigned char TarEEValue; + unsigned char TarSyncCtrl; + unsigned char TarReserved[2]; /* for alignment */ + unsigned char LunDiscQ_Idx[MAX_LUN]; + unsigned char TarLUNBusy[MAX_LUN]; +}; + +struct nvram_info { + unsigned char niModel; /* Model No. of card */ + unsigned char niCardNo; /* Card no. */ + unsigned long niBaseAddr; /* Port Address of card */ + unsigned char niSysConf; /* Adapter Configuration byte - Byte 16 of eeprom map */ + unsigned char niScsiConf; /* SCSI Configuration byte - Byte 17 of eeprom map */ + unsigned char niScamConf; /* SCAM Configuration byte - Byte 20 of eeprom map */ + unsigned char niAdapId; /* Host Adapter ID - Byte 24 of eerpom map */ + unsigned char niSyncTbl[MAX_SCSI_TAR / 2]; /* Sync/Wide byte of targets */ + unsigned char niScamTbl[MAX_SCSI_TAR][4]; /* Compressed Scam name string of Targets */ +}; #define MODEL_LT 1 #define MODEL_DL 2 #define MODEL_LW 3 #define MODEL_DW 4 +struct sccb_card { + struct sccb *currentSCCB; + struct sccb_mgr_info *cardInfo; + + unsigned long ioPort; + + unsigned short cmdCounter; + unsigned char discQCount; + unsigned char tagQ_Lst; + unsigned char cardIndex; + unsigned char scanIndex; + unsigned char globalFlags; + unsigned char ourId; + struct nvram_info *pNvRamInfo; + struct sccb *discQ_Tbl[QUEUE_DEPTH]; -typedef struct SCCBcard { - PSCCB currentSCCB; - PSCCBMGR_INFO cardInfo; - - ULONG ioPort; - - USHORT cmdCounter; - UCHAR discQCount; - UCHAR tagQ_Lst; - UCHAR cardIndex; - UCHAR scanIndex; - UCHAR globalFlags; - UCHAR ourId; - PNVRamInfo pNvRamInfo; - PSCCB discQ_Tbl[QUEUE_DEPTH]; - -}SCCBCARD; - -typedef struct SCCBcard *PSCCBcard; - +}; #define F_TAG_STARTED 0x01 #define F_CONLUN_IO 0x02 @@ -414,13 +270,10 @@ typedef struct SCCBcard *PSCCBcard; #define F_NEW_SCCB_CMD 0x40 #define F_UPDATE_EEPROM 0x80 - #define ID_STRING_LENGTH 32 -#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ - -#define TYPE_CODE1 00 /*No ID yet */ +#define TYPE_CODE0 0x63 /*Level2 Mstr (bits 7-6), */ -#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ +#define SLV_TYPE_CODE0 0xA3 /*Priority Bit set (bits 7-6), */ #define ASSIGN_ID 0x00 #define SET_P_FLAG 0x01 @@ -430,97 +283,42 @@ typedef struct SCCBcard *PSCCBcard; #define ID_0_7 0x18 #define ID_8_F 0x11 -#define ID_10_17 0x12 -#define ID_18_1F 0x0B #define MISC_CODE 0x14 #define CLR_P_FLAG 0x18 -#define LOCATE_ON 0x12 -#define LOCATE_OFF 0x0B - -#define LVL_1_MST 0x00 -#define LVL_2_MST 0x40 -#define DOM_LVL_2 0xC0 - #define INIT_SELTD 0x01 #define LEVEL2_TAR 0x02 - -enum scam_id_st { ID0,ID1,ID2,ID3,ID4,ID5,ID6,ID7,ID8,ID9,ID10,ID11,ID12, - ID13,ID14,ID15,ID_UNUSED,ID_UNASSIGNED,ID_ASSIGNED,LEGACY, - CLR_PRIORITY,NO_ID_AVAIL }; +enum scam_id_st { ID0, ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, ID10, ID11, + ID12, + ID13, ID14, ID15, ID_UNUSED, ID_UNASSIGNED, ID_ASSIGNED, LEGACY, + CLR_PRIORITY, NO_ID_AVAIL +}; typedef struct SCCBscam_info { - UCHAR id_string[ID_STRING_LENGTH]; - enum scam_id_st state; - -} SCCBSCAM_INFO, *PSCCBSCAM_INFO; + unsigned char id_string[ID_STRING_LENGTH]; + enum scam_id_st state; +} SCCBSCAM_INFO; -#define SCSI_TEST_UNIT_READY 0x00 -#define SCSI_REZERO_UNIT 0x01 #define SCSI_REQUEST_SENSE 0x03 -#define SCSI_FORMAT_UNIT 0x04 -#define SCSI_REASSIGN 0x07 #define SCSI_READ 0x08 #define SCSI_WRITE 0x0A -#define SCSI_SEEK 0x0B -#define SCSI_INQUIRY 0x12 -#define SCSI_MODE_SELECT 0x15 -#define SCSI_RESERVE_UNIT 0x16 -#define SCSI_RELEASE_UNIT 0x17 -#define SCSI_MODE_SENSE 0x1A #define SCSI_START_STOP_UNIT 0x1B -#define SCSI_SEND_DIAGNOSTIC 0x1D -#define SCSI_READ_CAPACITY 0x25 #define SCSI_READ_EXTENDED 0x28 #define SCSI_WRITE_EXTENDED 0x2A -#define SCSI_SEEK_EXTENDED 0x2B #define SCSI_WRITE_AND_VERIFY 0x2E -#define SCSI_VERIFY 0x2F -#define SCSI_READ_DEFECT_DATA 0x37 -#define SCSI_WRITE_BUFFER 0x3B -#define SCSI_READ_BUFFER 0x3C -#define SCSI_RECV_DIAGNOSTIC 0x1C -#define SCSI_READ_LONG 0x3E -#define SCSI_WRITE_LONG 0x3F -#define SCSI_LAST_SCSI_CMND SCSI_WRITE_LONG -#define SCSI_INVALID_CMND 0xFF - - #define SSGOOD 0x00 #define SSCHECK 0x02 -#define SSCOND_MET 0x04 -#define SSBUSY 0x08 -#define SSRESERVATION_CONFLICT 0x18 -#define SSCMD_TERM 0x22 #define SSQ_FULL 0x28 - -#define SKNO_SEN 0x00 -#define SKRECOV_ERR 0x01 -#define SKNOT_RDY 0x02 -#define SKMED_ERR 0x03 -#define SKHW_ERR 0x04 -#define SKILL_REQ 0x05 -#define SKUNIT_ATTN 0x06 -#define SKDATA_PROTECT 0x07 -#define SKBLNK_CHK 0x08 -#define SKCPY_ABORT 0x0A -#define SKABORT_CMD 0x0B -#define SKEQUAL 0x0C -#define SKVOL_OVF 0x0D -#define SKMIS_CMP 0x0E - - #define SMCMD_COMP 0x00 #define SMEXT 0x01 #define SMSAVE_DATA_PTR 0x02 #define SMREST_DATA_PTR 0x03 #define SMDISC 0x04 -#define SMINIT_DETEC_ERR 0x05 #define SMABORT 0x06 #define SMREJECT 0x07 #define SMNO_OP 0x08 @@ -533,62 +331,31 @@ typedef struct SCCBscam_info { #define SMIDENT 0x80 #define DISC_PRIV 0x40 - #define SMSYNC 0x01 -#define SM10MBS 0x19 /* 100ns */ -#define SM5MBS 0x32 /* 200ns */ -#define SMOFFSET 0x0F /* Maxoffset value */ #define SMWDTR 0x03 #define SM8BIT 0x00 #define SM16BIT 0x01 -#define SM32BIT 0x02 -#define SMIGNORWR 0x23 /* Ignore Wide Residue */ - - -#define ARBITRATION_DELAY 0x01 /* 2.4us using a 40Mhz clock */ -#define BUS_SETTLE_DELAY 0x01 /* 400ns */ -#define BUS_CLEAR_DELAY 0x01 /* 800ns */ - - - -#define SPHASE_TO 0x0A /* 10 second timeout waiting for */ -#define SCMD_TO 0x0F /* Overall command timeout */ - - +#define SMIGNORWR 0x23 /* Ignore Wide Residue */ #define SIX_BYTE_CMD 0x06 -#define TEN_BYTE_CMD 0x0A #define TWELVE_BYTE_CMD 0x0C #define ASYNC 0x00 -#define PERI25NS 0x06 /* 25/4ns to next clock for xbow. */ -#define SYNC10MBS 0x19 -#define SYNC5MBS 0x32 -#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ - +#define MAX_OFFSET 0x0F /* Maxbyteoffset for Sync Xfers */ #define EEPROM_WD_CNT 256 #define EEPROM_CHECK_SUM 0 #define FW_SIGNATURE 2 #define MODEL_NUMB_0 4 -#define MODEL_NUMB_1 5 #define MODEL_NUMB_2 6 -#define MODEL_NUMB_3 7 #define MODEL_NUMB_4 8 -#define MODEL_NUMB_5 9 -#define IO_BASE_ADDR 10 -#define IRQ_NUMBER 12 -#define PCI_INT_PIN 13 -#define BUS_DELAY 14 /*On time in byte 14 off delay in 15 */ #define SYSTEM_CONFIG 16 #define SCSI_CONFIG 17 #define BIOS_CONFIG 18 -#define SPIN_UP_DELAY 19 #define SCAM_CONFIG 20 #define ADAPTER_SCSI_ID 24 - #define IGNORE_B_SCAN 32 #define SEND_START_ENA 34 #define DEVICE_ENABLE 36 @@ -603,717 +370,405 @@ typedef struct SCCBscam_info { #define SYNC_RATE_TBLcd 50 #define SYNC_RATE_TBLef 52 +#define EE_SCAMBASE 256 +#define SCAM_ENABLED BIT(2) +#define SCAM_LEVEL2 BIT(3) -#define EE_SCAMBASE 256 +#define RENEGO_ENA BITW(10) +#define CONNIO_ENA BITW(11) +#define GREEN_PC_ENA BITW(12) +#define AUTO_RATE_00 00 +#define AUTO_RATE_05 01 +#define AUTO_RATE_10 02 +#define AUTO_RATE_20 03 +#define WIDE_NEGO_BIT BIT(7) +#define DISC_ENABLE_BIT BIT(6) - #define DOM_MASTER (BIT(0) + BIT(1)) - #define SCAM_ENABLED BIT(2) - #define SCAM_LEVEL2 BIT(3) +#define hp_vendor_id_0 0x00 /* LSB */ +#define ORION_VEND_0 0x4B +#define hp_vendor_id_1 0x01 /* MSB */ +#define ORION_VEND_1 0x10 - #define RENEGO_ENA BITW(10) - #define CONNIO_ENA BITW(11) - #define GREEN_PC_ENA BITW(12) +#define hp_device_id_0 0x02 /* LSB */ +#define ORION_DEV_0 0x30 - - #define AUTO_RATE_00 00 - #define AUTO_RATE_05 01 - #define AUTO_RATE_10 02 - #define AUTO_RATE_20 03 - - #define WIDE_NEGO_BIT BIT(7) - #define DISC_ENABLE_BIT BIT(6) - - - - #define hp_vendor_id_0 0x00 /* LSB */ - #define ORION_VEND_0 0x4B - - #define hp_vendor_id_1 0x01 /* MSB */ - #define ORION_VEND_1 0x10 - - #define hp_device_id_0 0x02 /* LSB */ - #define ORION_DEV_0 0x30 - - #define hp_device_id_1 0x03 /* MSB */ - #define ORION_DEV_1 0x81 +#define hp_device_id_1 0x03 /* MSB */ +#define ORION_DEV_1 0x81 /* Sub Vendor ID and Sub Device ID only available in - Harpoon Version 2 and higher */ - - #define hp_sub_vendor_id_0 0x04 /* LSB */ - #define hp_sub_vendor_id_1 0x05 /* MSB */ - #define hp_sub_device_id_0 0x06 /* LSB */ - #define hp_sub_device_id_1 0x07 /* MSB */ - - - #define hp_dual_addr_lo 0x08 - #define hp_dual_addr_lmi 0x09 - #define hp_dual_addr_hmi 0x0A - #define hp_dual_addr_hi 0x0B - - #define hp_semaphore 0x0C - #define SCCB_MGR_ACTIVE BIT(0) - #define TICKLE_ME BIT(1) - #define SCCB_MGR_PRESENT BIT(3) - #define BIOS_IN_USE BIT(4) - - #define hp_user_defined_D 0x0D - - #define hp_reserved_E 0x0E - - #define hp_sys_ctrl 0x0F - - #define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ - #define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ - #define HALT_MACH BIT(3) /*Halt State Machine */ - #define HARD_ABORT BIT(4) /*Hard Abort */ - #define DIAG_MODE BIT(5) /*Diagnostic Mode */ - - #define BM_ABORT_TMOUT 0x50 /*Halt State machine time out */ - - #define hp_sys_cfg 0x10 - - #define DONT_RST_FIFO BIT(7) /*Don't reset FIFO */ - - - #define hp_host_ctrl0 0x11 - - #define DUAL_ADDR_MODE BIT(0) /*Enable 64-bit addresses */ - #define IO_MEM_SPACE BIT(1) /*I/O Memory Space */ - #define RESOURCE_LOCK BIT(2) /*Enable Resource Lock */ - #define IGNOR_ACCESS_ERR BIT(3) /*Ignore Access Error */ - #define HOST_INT_EDGE BIT(4) /*Host interrupt level/edge mode sel */ - #define SIX_CLOCKS BIT(5) /*6 Clocks between Strobe */ - #define DMA_EVEN_PARITY BIT(6) /*Enable DMA Enen Parity */ - -/* - #define BURST_MODE BIT(0) -*/ + Harpoon Version 2 and higher */ - #define hp_reserved_12 0x12 +#define hp_sub_device_id_0 0x06 /* LSB */ - #define hp_host_blk_cnt 0x13 +#define hp_semaphore 0x0C +#define SCCB_MGR_ACTIVE BIT(0) +#define TICKLE_ME BIT(1) +#define SCCB_MGR_PRESENT BIT(3) +#define BIOS_IN_USE BIT(4) - #define XFER_BLK1 0x00 /* 0 0 0 1 byte per block*/ - #define XFER_BLK2 0x01 /* 0 0 1 2 byte per block*/ - #define XFER_BLK4 0x02 /* 0 1 0 4 byte per block*/ - #define XFER_BLK8 0x03 /* 0 1 1 8 byte per block*/ - #define XFER_BLK16 0x04 /* 1 0 0 16 byte per block*/ - #define XFER_BLK32 0x05 /* 1 0 1 32 byte per block*/ - #define XFER_BLK64 0x06 /* 1 1 0 64 byte per block*/ - - #define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes*/ +#define hp_sys_ctrl 0x0F +#define STOP_CLK BIT(0) /*Turn off BusMaster Clock */ +#define DRVR_RST BIT(1) /*Firmware Reset to 80C15 chip */ +#define HALT_MACH BIT(3) /*Halt State Machine */ +#define HARD_ABORT BIT(4) /*Hard Abort */ - #define hp_reserved_14 0x14 - #define hp_reserved_15 0x15 - #define hp_reserved_16 0x16 +#define hp_host_blk_cnt 0x13 - #define hp_int_mask 0x17 +#define XFER_BLK64 0x06 /* 1 1 0 64 byte per block */ - #define INT_CMD_COMPL BIT(0) /* DMA command complete */ - #define INT_EXT_STATUS BIT(1) /* Extended Status Set */ - #define INT_SCSI BIT(2) /* Scsi block interrupt */ - #define INT_FIFO_RDY BIT(4) /* FIFO data ready */ +#define BM_THRESHOLD 0x40 /* PCI mode can only xfer 16 bytes */ +#define hp_int_mask 0x17 - #define hp_xfer_cnt_lo 0x18 - #define hp_xfer_cnt_mi 0x19 - #define hp_xfer_cnt_hi 0x1A - #define hp_xfer_cmd 0x1B +#define INT_CMD_COMPL BIT(0) /* DMA command complete */ +#define INT_EXT_STATUS BIT(1) /* Extended Status Set */ - #define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ - #define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ - #define XFER_HOST_MPU 0x02 /* 0 1 0 Transfer Host -> MPU */ - #define XFER_MPU_HOST 0x03 /* 0 1 1 Transfer MPU -> Host */ - #define XFER_DMA_MPU 0x04 /* 1 0 0 Transfer DMA -> MPU */ - #define XFER_MPU_DMA 0x05 /* 1 0 1 Transfer MPU -> DMA */ - #define SET_SEMAPHORE 0x06 /* 1 1 0 Set Semaphore */ - #define XFER_NOP 0x07 /* 1 1 1 Transfer NOP */ - #define XFER_MB_MPU 0x06 /* 1 1 0 Transfer MB -> MPU */ - #define XFER_MB_DMA 0x07 /* 1 1 1 Transfer MB -> DMA */ +#define hp_xfer_cnt_lo 0x18 +#define hp_xfer_cnt_hi 0x1A +#define hp_xfer_cmd 0x1B +#define XFER_HOST_DMA 0x00 /* 0 0 0 Transfer Host -> DMA */ +#define XFER_DMA_HOST 0x01 /* 0 0 1 Transfer DMA -> Host */ - #define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ - #define XFER_HOST_8BIT 0x08 /* 0 1 8 BIT Transfer Size */ - #define XFER_HOST_16BIT 0x10 /* 1 0 16 BIT Transfer Size */ - #define XFER_HOST_32BIT 0x18 /* 1 1 32 BIT Transfer Size */ +#define XFER_HOST_AUTO 0x00 /* 0 0 Auto Transfer Size */ - #define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ - #define XFER_DMA_16BIT 0x40 /* 1 0 16 BIT Transfer Size */ +#define XFER_DMA_8BIT 0x20 /* 0 1 8 BIT Transfer Size */ - #define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ +#define DISABLE_INT BIT(7) /*Do not interrupt at end of cmd. */ - #define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define WIDE_HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_16BIT)) - #define WIDE_HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_16BIT)) +#define HOST_WRT_CMD ((DISABLE_INT + XFER_HOST_DMA + XFER_HOST_AUTO + XFER_DMA_8BIT)) +#define HOST_RD_CMD ((DISABLE_INT + XFER_DMA_HOST + XFER_HOST_AUTO + XFER_DMA_8BIT)) - #define hp_host_addr_lo 0x1C - #define hp_host_addr_lmi 0x1D - #define hp_host_addr_hmi 0x1E - #define hp_host_addr_hi 0x1F +#define hp_host_addr_lo 0x1C +#define hp_host_addr_hmi 0x1E - #define hp_pio_data 0x20 - #define hp_reserved_21 0x21 - #define hp_ee_ctrl 0x22 +#define hp_ee_ctrl 0x22 - #define EXT_ARB_ACK BIT(7) - #define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ - #define SEE_MS BIT(5) - #define SEE_CS BIT(3) - #define SEE_CLK BIT(2) - #define SEE_DO BIT(1) - #define SEE_DI BIT(0) +#define EXT_ARB_ACK BIT(7) +#define SCSI_TERM_ENA_H BIT(6) /* SCSI high byte terminator */ +#define SEE_MS BIT(5) +#define SEE_CS BIT(3) +#define SEE_CLK BIT(2) +#define SEE_DO BIT(1) +#define SEE_DI BIT(0) - #define EE_READ 0x06 - #define EE_WRITE 0x05 - #define EWEN 0x04 - #define EWEN_ADDR 0x03C0 - #define EWDS 0x04 - #define EWDS_ADDR 0x0000 +#define EE_READ 0x06 +#define EE_WRITE 0x05 +#define EWEN 0x04 +#define EWEN_ADDR 0x03C0 +#define EWDS 0x04 +#define EWDS_ADDR 0x0000 - #define hp_brdctl 0x23 +#define hp_bm_ctrl 0x26 - #define DAT_7 BIT(7) - #define DAT_6 BIT(6) - #define DAT_5 BIT(5) - #define BRD_STB BIT(4) - #define BRD_CS BIT(3) - #define BRD_WR BIT(2) +#define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ +#define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ +#define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ +#define FAST_SINGLE BIT(6) /*?? */ - #define hp_reserved_24 0x24 - #define hp_reserved_25 0x25 +#define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) +#define hp_sg_addr 0x28 +#define hp_page_ctrl 0x29 +#define SCATTER_EN BIT(0) +#define SGRAM_ARAM BIT(1) +#define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ +#define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ +#define hp_pci_stat_cfg 0x2D - #define hp_bm_ctrl 0x26 +#define REC_MASTER_ABORT BIT(5) /*received Master abort */ - #define SCSI_TERM_ENA_L BIT(0) /*Enable/Disable external terminators */ - #define FLUSH_XFER_CNTR BIT(1) /*Flush transfer counter */ - #define BM_XFER_MIN_8 BIT(2) /*Enable bus master transfer of 9 */ - #define BIOS_ENA BIT(3) /*Enable BIOS/FLASH Enable */ - #define FORCE1_XFER BIT(5) /*Always xfer one byte in byte mode */ - #define FAST_SINGLE BIT(6) /*?? */ +#define hp_rev_num 0x33 - #define BMCTRL_DEFAULT (FORCE1_XFER|FAST_SINGLE|SCSI_TERM_ENA_L) +#define hp_stack_data 0x34 +#define hp_stack_addr 0x35 - #define hp_reserved_27 0x27 +#define hp_ext_status 0x36 - #define hp_sg_addr 0x28 - #define hp_page_ctrl 0x29 - - #define SCATTER_EN BIT(0) - #define SGRAM_ARAM BIT(1) - #define BIOS_SHADOW BIT(2) - #define G_INT_DISABLE BIT(3) /* Enable/Disable all Interrupts */ - #define NARROW_SCSI_CARD BIT(4) /* NARROW/WIDE SCSI config pin */ - - #define hp_reserved_2A 0x2A - #define hp_pci_cmd_cfg 0x2B - - #define IO_SPACE_ENA BIT(0) /*enable I/O space */ - #define MEM_SPACE_ENA BIT(1) /*enable memory space */ - #define BUS_MSTR_ENA BIT(2) /*enable bus master operation */ - #define MEM_WI_ENA BIT(4) /*enable Write and Invalidate */ - #define PAR_ERR_RESP BIT(6) /*enable parity error responce. */ - - #define hp_reserved_2C 0x2C - - #define hp_pci_stat_cfg 0x2D - - #define DATA_PARITY_ERR BIT(0) - #define REC_TARGET_ABORT BIT(4) /*received Target abort */ - #define REC_MASTER_ABORT BIT(5) /*received Master abort */ - #define SIG_SYSTEM_ERR BIT(6) - #define DETECTED_PAR_ERR BIT(7) - - #define hp_reserved_2E 0x2E - - #define hp_sys_status 0x2F - - #define SLV_DATA_RDY BIT(0) /*Slave data ready */ - #define XFER_CNT_ZERO BIT(1) /*Transfer counter = 0 */ - #define BM_FIFO_EMPTY BIT(2) /*FIFO empty */ - #define BM_FIFO_FULL BIT(3) /*FIFO full */ - #define HOST_OP_DONE BIT(4) /*host operation done */ - #define DMA_OP_DONE BIT(5) /*DMA operation done */ - #define SLV_OP_DONE BIT(6) /*Slave operation done */ - #define PWR_ON_FLAG BIT(7) /*Power on flag */ - - #define hp_reserved_30 0x30 - - #define hp_host_status0 0x31 - - #define HOST_TERM BIT(5) /*Host Terminal Count */ - #define HOST_TRSHLD BIT(6) /*Host Threshold */ - #define CONNECTED_2_HOST BIT(7) /*Connected to Host */ - - #define hp_reserved_32 0x32 - - #define hp_rev_num 0x33 - - #define REV_A_CONST 0x0E - #define REV_B_CONST 0x0E - - #define hp_stack_data 0x34 - #define hp_stack_addr 0x35 - - #define hp_ext_status 0x36 - - #define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ - #define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ - #define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ - #define FIFO_TC_NOT_ZERO BIT(2) /*FIFO or transfer counter not zero */ - #define CHIP_RST_OCCUR BIT(3) /*Chip reset occurs */ - #define CMD_ABORTED BIT(4) /*Command aborted */ - #define BM_PARITY_ERR BIT(5) /*parity error on data received */ - #define PIO_OVERRUN BIT(6) /*Slave data overrun */ - #define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ - #define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ +#define BM_FORCE_OFF BIT(0) /*Bus Master is forced to get off */ +#define PCI_TGT_ABORT BIT(0) /*PCI bus master transaction aborted */ +#define PCI_DEV_TMOUT BIT(1) /*PCI Device Time out */ +#define CMD_ABORTED BIT(4) /*Command aborted */ +#define BM_PARITY_ERR BIT(5) /*parity error on data received */ +#define PIO_OVERRUN BIT(6) /*Slave data overrun */ +#define BM_CMD_BUSY BIT(7) /*Bus master transfer command busy */ +#define BAD_EXT_STATUS (BM_FORCE_OFF | PCI_DEV_TMOUT | CMD_ABORTED | \ BM_PARITY_ERR | PIO_OVERRUN) - #define hp_int_status 0x37 - - #define BM_CMD_CMPL BIT(0) /*Bus Master command complete */ - #define EXT_STATUS_ON BIT(1) /*Extended status is valid */ - #define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ - #define BM_FIFO_RDY BIT(4) - #define INT_ASSERTED BIT(5) /* */ - #define SRAM_BUSY BIT(6) /*Scatter/Gather RAM busy */ - #define CMD_REG_BUSY BIT(7) - - - #define hp_fifo_cnt 0x38 - #define hp_curr_host_cnt 0x39 - #define hp_reserved_3A 0x3A - #define hp_fifo_in_addr 0x3B - - #define hp_fifo_out_addr 0x3C - #define hp_reserved_3D 0x3D - #define hp_reserved_3E 0x3E - #define hp_reserved_3F 0x3F - - - - #define hp_intena 0x40 - - #define RESET BITW(7) - #define PROG_HLT BITW(6) - #define PARITY BITW(5) - #define FIFO BITW(4) - #define SEL BITW(3) - #define SCAM_SEL BITW(2) - #define RSEL BITW(1) - #define TIMEOUT BITW(0) - #define BUS_FREE BITW(15) - #define XFER_CNT_0 BITW(14) - #define PHASE BITW(13) - #define IUNKWN BITW(12) - #define ICMD_COMP BITW(11) - #define ITICKLE BITW(10) - #define IDO_STRT BITW(9) - #define ITAR_DISC BITW(8) - #define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) - #define CLR_ALL_INT 0xFFFF - #define CLR_ALL_INT_1 0xFF00 - - #define hp_intstat 0x42 - - #define hp_scsisig 0x44 - - #define SCSI_SEL BIT(7) - #define SCSI_BSY BIT(6) - #define SCSI_REQ BIT(5) - #define SCSI_ACK BIT(4) - #define SCSI_ATN BIT(3) - #define SCSI_CD BIT(2) - #define SCSI_MSG BIT(1) - #define SCSI_IOBIT BIT(0) - - #define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) - #define S_CMD_PH (BIT(2) ) - #define S_MSGO_PH (BIT(2)+BIT(1) ) - #define S_STAT_PH (BIT(2) +BIT(0)) - #define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) - #define S_DATAI_PH ( BIT(0)) - #define S_DATAO_PH 0x00 - #define S_ILL_PH ( BIT(1) ) - - #define hp_scsictrl_0 0x45 - - #define NO_ARB BIT(7) - #define SEL_TAR BIT(6) - #define ENA_ATN BIT(4) - #define ENA_RESEL BIT(2) - #define SCSI_RST BIT(1) - #define ENA_SCAM_SEL BIT(0) - +#define hp_int_status 0x37 +#define EXT_STATUS_ON BIT(1) /*Extended status is valid */ +#define SCSI_INTERRUPT BIT(2) /*Global indication of a SCSI int. */ +#define INT_ASSERTED BIT(5) /* */ - #define hp_portctrl_0 0x46 +#define hp_fifo_cnt 0x38 - #define SCSI_PORT BIT(7) - #define SCSI_INBIT BIT(6) - #define DMA_PORT BIT(5) - #define DMA_RD BIT(4) - #define HOST_PORT BIT(3) - #define HOST_WRT BIT(2) - #define SCSI_BUS_EN BIT(1) - #define START_TO BIT(0) +#define hp_intena 0x40 - #define hp_scsireset 0x47 +#define RESET BITW(7) +#define PROG_HLT BITW(6) +#define PARITY BITW(5) +#define FIFO BITW(4) +#define SEL BITW(3) +#define SCAM_SEL BITW(2) +#define RSEL BITW(1) +#define TIMEOUT BITW(0) +#define BUS_FREE BITW(15) +#define XFER_CNT_0 BITW(14) +#define PHASE BITW(13) +#define IUNKWN BITW(12) +#define ICMD_COMP BITW(11) +#define ITICKLE BITW(10) +#define IDO_STRT BITW(9) +#define ITAR_DISC BITW(8) +#define AUTO_INT (BITW(12)+BITW(11)+BITW(10)+BITW(9)+BITW(8)) +#define CLR_ALL_INT 0xFFFF +#define CLR_ALL_INT_1 0xFF00 - #define SCSI_TAR BIT(7) - #define SCSI_INI BIT(6) - #define SCAM_EN BIT(5) - #define ACK_HOLD BIT(4) - #define DMA_RESET BIT(3) - #define HPSCSI_RESET BIT(2) - #define PROG_RESET BIT(1) - #define FIFO_CLR BIT(0) +#define hp_intstat 0x42 - #define hp_xfercnt_0 0x48 - #define hp_xfercnt_1 0x49 - #define hp_xfercnt_2 0x4A - #define hp_xfercnt_3 0x4B +#define hp_scsisig 0x44 - #define hp_fifodata_0 0x4C - #define hp_fifodata_1 0x4D - #define hp_addstat 0x4E +#define SCSI_SEL BIT(7) +#define SCSI_BSY BIT(6) +#define SCSI_REQ BIT(5) +#define SCSI_ACK BIT(4) +#define SCSI_ATN BIT(3) +#define SCSI_CD BIT(2) +#define SCSI_MSG BIT(1) +#define SCSI_IOBIT BIT(0) - #define SCAM_TIMER BIT(7) - #define AUTO_RUNNING BIT(6) - #define FAST_SYNC BIT(5) - #define SCSI_MODE8 BIT(3) - #define SCSI_PAR_ERR BIT(0) +#define S_SCSI_PHZ (BIT(2)+BIT(1)+BIT(0)) +#define S_MSGO_PH (BIT(2)+BIT(1) ) +#define S_MSGI_PH (BIT(2)+BIT(1)+BIT(0)) +#define S_DATAI_PH ( BIT(0)) +#define S_DATAO_PH 0x00 +#define S_ILL_PH ( BIT(1) ) - #define hp_prgmcnt_0 0x4F +#define hp_scsictrl_0 0x45 - #define AUTO_PC_MASK 0x3F +#define SEL_TAR BIT(6) +#define ENA_ATN BIT(4) +#define ENA_RESEL BIT(2) +#define SCSI_RST BIT(1) +#define ENA_SCAM_SEL BIT(0) - #define hp_selfid_0 0x50 - #define hp_selfid_1 0x51 - #define hp_arb_id 0x52 +#define hp_portctrl_0 0x46 - #define ARB_ID (BIT(3) + BIT(2) + BIT(1) + BIT(0)) +#define SCSI_PORT BIT(7) +#define SCSI_INBIT BIT(6) +#define DMA_PORT BIT(5) +#define DMA_RD BIT(4) +#define HOST_PORT BIT(3) +#define HOST_WRT BIT(2) +#define SCSI_BUS_EN BIT(1) +#define START_TO BIT(0) - #define hp_select_id 0x53 +#define hp_scsireset 0x47 - #define RESEL_ID (BIT(7) + BIT(6) + BIT(5) + BIT(4)) - #define SELECT_ID (BIT(3) + BIT(2) + BIT(1) + BIT(0)) +#define SCSI_INI BIT(6) +#define SCAM_EN BIT(5) +#define DMA_RESET BIT(3) +#define HPSCSI_RESET BIT(2) +#define PROG_RESET BIT(1) +#define FIFO_CLR BIT(0) - #define hp_synctarg_base 0x54 - #define hp_synctarg_12 0x54 - #define hp_synctarg_13 0x55 - #define hp_synctarg_14 0x56 - #define hp_synctarg_15 0x57 +#define hp_xfercnt_0 0x48 +#define hp_xfercnt_2 0x4A - #define hp_synctarg_8 0x58 - #define hp_synctarg_9 0x59 - #define hp_synctarg_10 0x5A - #define hp_synctarg_11 0x5B +#define hp_fifodata_0 0x4C +#define hp_addstat 0x4E - #define hp_synctarg_4 0x5C - #define hp_synctarg_5 0x5D - #define hp_synctarg_6 0x5E - #define hp_synctarg_7 0x5F +#define SCAM_TIMER BIT(7) +#define SCSI_MODE8 BIT(3) +#define SCSI_PAR_ERR BIT(0) - #define hp_synctarg_0 0x60 - #define hp_synctarg_1 0x61 - #define hp_synctarg_2 0x62 - #define hp_synctarg_3 0x63 +#define hp_prgmcnt_0 0x4F - #define RATE_20MB 0x00 - #define RATE_10MB ( BIT(5)) - #define RATE_6_6MB ( BIT(6) ) - #define RATE_5MB ( BIT(6)+BIT(5)) - #define RATE_4MB (BIT(7) ) - #define RATE_3_33MB (BIT(7) +BIT(5)) - #define RATE_2_85MB (BIT(7)+BIT(6) ) - #define RATE_2_5MB (BIT(7)+BIT(5)+BIT(6)) - #define NEXT_CLK BIT(5) - #define SLOWEST_SYNC (BIT(7)+BIT(6)+BIT(5)) - #define NARROW_SCSI BIT(4) - #define SYNC_OFFSET (BIT(3) + BIT(2) + BIT(1) + BIT(0)) - #define DEFAULT_ASYNC 0x00 - #define DEFAULT_OFFSET 0x0F +#define hp_selfid_0 0x50 +#define hp_selfid_1 0x51 +#define hp_arb_id 0x52 - #define hp_autostart_0 0x64 - #define hp_autostart_1 0x65 - #define hp_autostart_2 0x66 - #define hp_autostart_3 0x67 +#define hp_select_id 0x53 +#define hp_synctarg_base 0x54 +#define hp_synctarg_12 0x54 +#define hp_synctarg_13 0x55 +#define hp_synctarg_14 0x56 +#define hp_synctarg_15 0x57 +#define hp_synctarg_8 0x58 +#define hp_synctarg_9 0x59 +#define hp_synctarg_10 0x5A +#define hp_synctarg_11 0x5B - #define DISABLE 0x00 - #define AUTO_IMMED BIT(5) - #define SELECT BIT(6) - #define RESELECT (BIT(6)+BIT(5)) - #define BUSFREE BIT(7) - #define XFER_0 (BIT(7)+BIT(5)) - #define END_DATA (BIT(7)+BIT(6)) - #define MSG_PHZ (BIT(7)+BIT(6)+BIT(5)) +#define hp_synctarg_4 0x5C +#define hp_synctarg_5 0x5D +#define hp_synctarg_6 0x5E +#define hp_synctarg_7 0x5F - #define hp_gp_reg_0 0x68 - #define hp_gp_reg_1 0x69 - #define hp_gp_reg_2 0x6A - #define hp_gp_reg_3 0x6B +#define hp_synctarg_0 0x60 +#define hp_synctarg_1 0x61 +#define hp_synctarg_2 0x62 +#define hp_synctarg_3 0x63 - #define hp_seltimeout 0x6C +#define NARROW_SCSI BIT(4) +#define DEFAULT_OFFSET 0x0F +#define hp_autostart_0 0x64 +#define hp_autostart_1 0x65 +#define hp_autostart_3 0x67 - #define TO_2ms 0x54 /* 2.0503ms */ - #define TO_4ms 0x67 /* 3.9959ms */ +#define AUTO_IMMED BIT(5) +#define SELECT BIT(6) +#define END_DATA (BIT(7)+BIT(6)) - #define TO_5ms 0x03 /* 4.9152ms */ - #define TO_10ms 0x07 /* 11.xxxms */ - #define TO_250ms 0x99 /* 250.68ms */ - #define TO_290ms 0xB1 /* 289.99ms */ - #define TO_350ms 0xD6 /* 350.62ms */ - #define TO_417ms 0xFF /* 417.79ms */ +#define hp_gp_reg_0 0x68 +#define hp_gp_reg_1 0x69 +#define hp_gp_reg_3 0x6B - #define hp_clkctrl_0 0x6D +#define hp_seltimeout 0x6C - #define PWR_DWN BIT(6) - #define ACTdeassert BIT(4) - #define ATNonErr BIT(3) - #define CLK_30MHZ BIT(1) - #define CLK_40MHZ (BIT(1) + BIT(0)) - #define CLK_50MHZ BIT(2) +#define TO_4ms 0x67 /* 3.9959ms */ - #define CLKCTRL_DEFAULT (ACTdeassert | CLK_40MHZ) +#define TO_5ms 0x03 /* 4.9152ms */ +#define TO_10ms 0x07 /* 11.xxxms */ +#define TO_250ms 0x99 /* 250.68ms */ +#define TO_290ms 0xB1 /* 289.99ms */ - #define hp_fiforead 0x6E - #define hp_fifowrite 0x6F +#define hp_clkctrl_0 0x6D - #define hp_offsetctr 0x70 - #define hp_xferstat 0x71 +#define PWR_DWN BIT(6) +#define ACTdeassert BIT(4) +#define CLK_40MHZ (BIT(1) + BIT(0)) - #define FIFO_FULL BIT(7) - #define FIFO_EMPTY BIT(6) - #define FIFO_MASK 0x3F /* Mask for the FIFO count value. */ - #define FIFO_LEN 0x20 +#define CLKCTRL_DEFAULT (ACTdeassert | CLK_40MHZ) - #define hp_portctrl_1 0x72 +#define hp_fiforead 0x6E +#define hp_fifowrite 0x6F - #define EVEN_HOST_P BIT(5) - #define INVT_SCSI BIT(4) - #define CHK_SCSI_P BIT(3) - #define HOST_MODE8 BIT(0) - #define HOST_MODE16 0x00 +#define hp_offsetctr 0x70 +#define hp_xferstat 0x71 - #define hp_xfer_pad 0x73 +#define FIFO_EMPTY BIT(6) - #define ID_UNLOCK BIT(3) - #define XFER_PAD BIT(2) +#define hp_portctrl_1 0x72 - #define hp_scsidata_0 0x74 - #define hp_scsidata_1 0x75 - #define hp_timer_0 0x76 - #define hp_timer_1 0x77 +#define CHK_SCSI_P BIT(3) +#define HOST_MODE8 BIT(0) - #define hp_reserved_78 0x78 - #define hp_reserved_79 0x79 - #define hp_reserved_7A 0x7A - #define hp_reserved_7B 0x7B +#define hp_xfer_pad 0x73 - #define hp_reserved_7C 0x7C - #define hp_reserved_7D 0x7D - #define hp_reserved_7E 0x7E - #define hp_reserved_7F 0x7F +#define ID_UNLOCK BIT(3) - #define hp_aramBase 0x80 - #define BIOS_DATA_OFFSET 0x60 - #define BIOS_RELATIVE_CARD 0x64 +#define hp_scsidata_0 0x74 +#define hp_scsidata_1 0x75 +#define hp_aramBase 0x80 +#define BIOS_DATA_OFFSET 0x60 +#define BIOS_RELATIVE_CARD 0x64 +#define AR3 (BITW(9) + BITW(8)) +#define SDATA BITW(10) +#define CRD_OP BITW(11) /* Cmp Reg. w/ Data */ - #define AUTO_LEN 0x80 - #define AR0 0x00 - #define AR1 BITW(8) - #define AR2 BITW(9) - #define AR3 (BITW(9) + BITW(8)) - #define SDATA BITW(10) +#define CRR_OP BITW(12) /* Cmp Reg. w. Reg. */ - #define NOP_OP 0x00 /* Nop command */ +#define CPE_OP (BITW(14)+BITW(11)) /* Cmp SCSI phs & Branch EQ */ - #define CRD_OP BITW(11) /* Cmp Reg. w/ Data */ +#define CPN_OP (BITW(14)+BITW(12)) /* Cmp SCSI phs & Branch NOT EQ */ - #define CRR_OP BITW(12) /* Cmp Reg. w. Reg. */ +#define ADATA_OUT 0x00 +#define ADATA_IN BITW(8) +#define ACOMMAND BITW(10) +#define ASTATUS (BITW(10)+BITW(8)) +#define AMSG_OUT (BITW(10)+BITW(9)) +#define AMSG_IN (BITW(10)+BITW(9)+BITW(8)) - #define CBE_OP (BITW(14)+BITW(12)+BITW(11)) /* Cmp SCSI cmd class & Branch EQ */ - - #define CBN_OP (BITW(14)+BITW(13)) /* Cmp SCSI cmd class & Branch NOT EQ */ - - #define CPE_OP (BITW(14)+BITW(11)) /* Cmp SCSI phs & Branch EQ */ +#define BRH_OP BITW(13) /* Branch */ - #define CPN_OP (BITW(14)+BITW(12)) /* Cmp SCSI phs & Branch NOT EQ */ +#define ALWAYS 0x00 +#define EQUAL BITW(8) +#define NOT_EQ BITW(9) +#define TCB_OP (BITW(13)+BITW(11)) /* Test condition & branch */ - #define ADATA_OUT 0x00 - #define ADATA_IN BITW(8) - #define ACOMMAND BITW(10) - #define ASTATUS (BITW(10)+BITW(8)) - #define AMSG_OUT (BITW(10)+BITW(9)) - #define AMSG_IN (BITW(10)+BITW(9)+BITW(8)) - #define AILLEGAL (BITW(9)+BITW(8)) +#define FIFO_0 BITW(10) +#define MPM_OP BITW(15) /* Match phase and move data */ - #define BRH_OP BITW(13) /* Branch */ +#define MRR_OP BITW(14) /* Move DReg. to Reg. */ - - #define ALWAYS 0x00 - #define EQUAL BITW(8) - #define NOT_EQ BITW(9) +#define S_IDREG (BIT(2)+BIT(1)+BIT(0)) - #define TCB_OP (BITW(13)+BITW(11)) /* Test condition & branch */ +#define D_AR0 0x00 +#define D_AR1 BIT(0) +#define D_BUCKET (BIT(2) + BIT(1) + BIT(0)) - - #define ATN_SET BITW(8) - #define ATN_RESET BITW(9) - #define XFER_CNT (BITW(9)+BITW(8)) - #define FIFO_0 BITW(10) - #define FIFO_NOT0 (BITW(10)+BITW(8)) - #define T_USE_SYNC0 (BITW(10)+BITW(9)) +#define RAT_OP (BITW(14)+BITW(13)+BITW(11)) +#define SSI_OP (BITW(15)+BITW(11)) - #define MPM_OP BITW(15) /* Match phase and move data */ +#define SSI_ITAR_DISC (ITAR_DISC >> 8) +#define SSI_IDO_STRT (IDO_STRT >> 8) - #define MDR_OP (BITW(12)+BITW(11)) /* Move data to Reg. */ +#define SSI_ICMD_COMP (ICMD_COMP >> 8) +#define SSI_ITICKLE (ITICKLE >> 8) - #define MRR_OP BITW(14) /* Move DReg. to Reg. */ +#define SSI_IUNKWN (IUNKWN >> 8) +#define SSI_INO_CC (IUNKWN >> 8) +#define SSI_IRFAIL (IUNKWN >> 8) +#define NP 0x10 /*Next Phase */ +#define NTCMD 0x02 /*Non- Tagged Command start */ +#define CMDPZ 0x04 /*Command phase */ +#define DINT 0x12 /*Data Out/In interrupt */ +#define DI 0x13 /*Data Out */ +#define DC 0x19 /*Disconnect Message */ +#define ST 0x1D /*Status Phase */ +#define UNKNWN 0x24 /*Unknown bus action */ +#define CC 0x25 /*Command Completion failure */ +#define TICK 0x26 /*New target reselected us. */ +#define SELCHK 0x28 /*Select & Check SCSI ID latch reg */ - #define S_IDREG (BIT(2)+BIT(1)+BIT(0)) +#define ID_MSG_STRT hp_aramBase + 0x00 +#define NON_TAG_ID_MSG hp_aramBase + 0x06 +#define CMD_STRT hp_aramBase + 0x08 +#define SYNC_MSGS hp_aramBase + 0x08 - - #define D_AR0 0x00 - #define D_AR1 BIT(0) - #define D_AR2 BIT(1) - #define D_AR3 (BIT(1) + BIT(0)) - #define D_SDATA BIT(2) - #define D_BUCKET (BIT(2) + BIT(1) + BIT(0)) - - - #define ADR_OP (BITW(13)+BITW(12)) /* Logical AND Reg. w. Data */ - - #define ADS_OP (BITW(14)+BITW(13)+BITW(12)) - - #define ODR_OP (BITW(13)+BITW(12)+BITW(11)) - - #define ODS_OP (BITW(14)+BITW(13)+BITW(12)+BITW(11)) - - #define STR_OP (BITW(15)+BITW(14)) /* Store to A_Reg. */ - - #define AINT_ENA1 0x00 - #define AINT_STAT1 BITW(8) - #define ASCSI_SIG BITW(9) - #define ASCSI_CNTL (BITW(9)+BITW(8)) - #define APORT_CNTL BITW(10) - #define ARST_CNTL (BITW(10)+BITW(8)) - #define AXFERCNT0 (BITW(10)+BITW(9)) - #define AXFERCNT1 (BITW(10)+BITW(9)+BITW(8)) - #define AXFERCNT2 BITW(11) - #define AFIFO_DATA (BITW(11)+BITW(8)) - #define ASCSISELID (BITW(11)+BITW(9)) - #define ASCSISYNC0 (BITW(11)+BITW(9)+BITW(8)) - - - #define RAT_OP (BITW(14)+BITW(13)+BITW(11)) - - #define SSI_OP (BITW(15)+BITW(11)) - - - #define SSI_ITAR_DISC (ITAR_DISC >> 8) - #define SSI_IDO_STRT (IDO_STRT >> 8) - #define SSI_IDI_STRT (IDO_STRT >> 8) - - #define SSI_ICMD_COMP (ICMD_COMP >> 8) - #define SSI_ITICKLE (ITICKLE >> 8) - - #define SSI_IUNKWN (IUNKWN >> 8) - #define SSI_INO_CC (IUNKWN >> 8) - #define SSI_IRFAIL (IUNKWN >> 8) - - - #define NP 0x10 /*Next Phase */ - #define NTCMD 0x02 /*Non- Tagged Command start */ - #define CMDPZ 0x04 /*Command phase */ - #define DINT 0x12 /*Data Out/In interrupt */ - #define DI 0x13 /*Data Out */ - #define MI 0x14 /*Message In */ - #define DC 0x19 /*Disconnect Message */ - #define ST 0x1D /*Status Phase */ - #define UNKNWN 0x24 /*Unknown bus action */ - #define CC 0x25 /*Command Completion failure */ - #define TICK 0x26 /*New target reselected us. */ - #define RFAIL 0x27 /*Reselection failed */ - #define SELCHK 0x28 /*Select & Check SCSI ID latch reg */ - - - #define ID_MSG_STRT hp_aramBase + 0x00 - #define NON_TAG_ID_MSG hp_aramBase + 0x06 - #define CMD_STRT hp_aramBase + 0x08 - #define SYNC_MSGS hp_aramBase + 0x08 - - - - - - #define TAG_STRT 0x00 - #define SELECTION_START 0x00 - #define DISCONNECT_START 0x10/2 - #define END_DATA_START 0x14/2 - #define NONTAG_STRT 0x02/2 - #define CMD_ONLY_STRT CMDPZ/2 - #define TICKLE_STRT TICK/2 - #define SELCHK_STRT SELCHK/2 - - - - -#define mEEPROM_CLK_DELAY(port) (RD_HARPOON(port+hp_intstat_1)) - -#define mWAIT_10MS(port) (RD_HARPOON(port+hp_intstat_1)) - - -#define CLR_XFER_CNT(port) (WR_HARPOON(port+hp_xfercnt_0, 0x00)) - -#define SET_XFER_CNT(port, data) (WR_HARP32(port,hp_xfercnt_0,data)) +#define TAG_STRT 0x00 +#define DISCONNECT_START 0x10/2 +#define END_DATA_START 0x14/2 +#define CMD_ONLY_STRT CMDPZ/2 +#define SELCHK_STRT SELCHK/2 #define GET_XFER_CNT(port, xfercnt) {RD_HARP32(port,hp_xfercnt_0,xfercnt); xfercnt &= 0xFFFFFF;} /* #define GET_XFER_CNT(port, xfercnt) (xfercnt = RD_HARPOON(port+hp_xfercnt_2), \ xfercnt <<= 16,\ - xfercnt |= RDW_HARPOON((USHORT)(port+hp_xfercnt_0))) + xfercnt |= RDW_HARPOON((unsigned short)(port+hp_xfercnt_0))) */ -#define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (USHORT)(addr & 0x0000FFFFL)),\ +#define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (unsigned short)(addr & 0x0000FFFFL)),\ addr >>= 16,\ - WRW_HARPOON((port+hp_host_addr_hmi), (USHORT)(addr & 0x0000FFFFL)),\ + WRW_HARPOON((port+hp_host_addr_hmi), (unsigned short)(addr & 0x0000FFFFL)),\ WR_HARP32(port,hp_xfercnt_0,count),\ - WRW_HARPOON((port+hp_xfer_cnt_lo), (USHORT)(count & 0x0000FFFFL)),\ + WRW_HARPOON((port+hp_xfer_cnt_lo), (unsigned short)(count & 0x0000FFFFL)),\ count >>= 16,\ WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF))) #define ACCEPT_MSG(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ WR_HARPOON(port+hp_scsisig, S_ILL_PH);} - #define ACCEPT_MSG_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));} -#define ACCEPT_STAT(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ - WR_HARPOON(port+hp_scsisig, S_ILL_PH);} - -#define ACCEPT_STAT_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\ - WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));} - #define DISABLE_AUTO(port) (WR_HARPOON(port+hp_scsireset, PROG_RESET),\ WR_HARPOON(port+hp_scsireset, 0x00)) @@ -1329,1194 +784,1220 @@ typedef struct SCCBscam_info { #define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \ (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE))) +static unsigned char FPT_sisyncn(unsigned long port, unsigned char p_card, + unsigned char syncFlag); +static void FPT_ssel(unsigned long port, unsigned char p_card); +static void FPT_sres(unsigned long port, unsigned char p_card, + struct sccb_card *pCurrCard); +static void FPT_shandem(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB); +static void FPT_stsyncn(unsigned long port, unsigned char p_card); +static void FPT_sisyncr(unsigned long port, unsigned char sync_pulse, + unsigned char offset); +static void FPT_sssyncv(unsigned long p_port, unsigned char p_id, + unsigned char p_sync_value, + struct sccb_mgr_tar_info *currTar_Info); +static void FPT_sresb(unsigned long port, unsigned char p_card); +static void FPT_sxfrp(unsigned long p_port, unsigned char p_card); +static void FPT_schkdd(unsigned long port, unsigned char p_card); +static unsigned char FPT_RdStack(unsigned long port, unsigned char index); +static void FPT_WrStack(unsigned long portBase, unsigned char index, + unsigned char data); +static unsigned char FPT_ChkIfChipInitialized(unsigned long ioPort); + +static void FPT_SendMsg(unsigned long port, unsigned char message); +static void FPT_queueFlushTargSccb(unsigned char p_card, unsigned char thisTarg, + unsigned char error_code); + +static void FPT_sinits(struct sccb *p_sccb, unsigned char p_card); +static void FPT_RNVRamData(struct nvram_info *pNvRamInfo); + +static unsigned char FPT_siwidn(unsigned long port, unsigned char p_card); +static void FPT_stwidn(unsigned long port, unsigned char p_card); +static void FPT_siwidr(unsigned long port, unsigned char width); + +static void FPT_queueSelectFail(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_queueDisconnect(struct sccb *p_SCCB, unsigned char p_card); +static void FPT_queueCmdComplete(struct sccb_card *pCurrCard, + struct sccb *p_SCCB, unsigned char p_card); +static void FPT_queueSearchSelect(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_queueFlushSccb(unsigned char p_card, unsigned char error_code); +static void FPT_queueAddSccb(struct sccb *p_SCCB, unsigned char card); +static unsigned char FPT_queueFindSccb(struct sccb *p_SCCB, + unsigned char p_card); +static void FPT_utilUpdateResidual(struct sccb *p_SCCB); +static unsigned short FPT_CalcCrc16(unsigned char buffer[]); +static unsigned char FPT_CalcLrc(unsigned char buffer[]); + +static void FPT_Wait1Second(unsigned long p_port); +static void FPT_Wait(unsigned long p_port, unsigned char p_delay); +static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode); +static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data, + unsigned short ee_addr); +static unsigned short FPT_utilEERead(unsigned long p_port, + unsigned short ee_addr); +static unsigned short FPT_utilEEReadOrg(unsigned long p_port, + unsigned short ee_addr); +static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd, + unsigned short ee_addr); + +static void FPT_phaseDataOut(unsigned long port, unsigned char p_card); +static void FPT_phaseDataIn(unsigned long port, unsigned char p_card); +static void FPT_phaseCommand(unsigned long port, unsigned char p_card); +static void FPT_phaseStatus(unsigned long port, unsigned char p_card); +static void FPT_phaseMsgOut(unsigned long port, unsigned char p_card); +static void FPT_phaseMsgIn(unsigned long port, unsigned char p_card); +static void FPT_phaseIllegal(unsigned long port, unsigned char p_card); + +static void FPT_phaseDecode(unsigned long port, unsigned char p_card); +static void FPT_phaseChkFifo(unsigned long port, unsigned char p_card); +static void FPT_phaseBusFree(unsigned long p_port, unsigned char p_card); + +static void FPT_XbowInit(unsigned long port, unsigned char scamFlg); +static void FPT_BusMasterInit(unsigned long p_port); +static void FPT_DiagEEPROM(unsigned long p_port); + +static void FPT_dataXferProcessor(unsigned long port, + struct sccb_card *pCurrCard); +static void FPT_busMstrSGDataXferStart(unsigned long port, + struct sccb *pCurrSCCB); +static void FPT_busMstrDataXferStart(unsigned long port, + struct sccb *pCurrSCCB); +static void FPT_hostDataXferAbort(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB); +static void FPT_hostDataXferRestart(struct sccb *currSCCB); + +static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port, + unsigned char p_card, + struct sccb_card *pCurrCard, + unsigned short p_int); + +static void FPT_SccbMgrTableInitAll(void); +static void FPT_SccbMgrTableInitCard(struct sccb_card *pCurrCard, + unsigned char p_card); +static void FPT_SccbMgrTableInitTarget(unsigned char p_card, + unsigned char target); + +static void FPT_scini(unsigned char p_card, unsigned char p_our_id, + unsigned char p_power_up); + +static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type); +static void FPT_scbusf(unsigned long p_port); +static void FPT_scsel(unsigned long p_port); +static void FPT_scasid(unsigned char p_card, unsigned long p_port); +static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data); +static unsigned char FPT_scsendi(unsigned long p_port, + unsigned char p_id_string[]); +static unsigned char FPT_sciso(unsigned long p_port, + unsigned char p_id_string[]); +static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit); +static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit); +static unsigned char FPT_scvalq(unsigned char p_quintet); +static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id); +static void FPT_scwtsel(unsigned long p_port); +static void FPT_inisci(unsigned char p_card, unsigned long p_port, + unsigned char p_our_id); +static void FPT_scsavdi(unsigned char p_card, unsigned long p_port); +static unsigned char FPT_scmachid(unsigned char p_card, + unsigned char p_id_string[]); + +static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card); +static void FPT_autoLoadDefaultMap(unsigned long p_port); + +static struct sccb_mgr_tar_info FPT_sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR] = + { {{0}} }; +static struct sccb_card FPT_BL_Card[MAX_CARDS] = { {0} }; +static SCCBSCAM_INFO FPT_scamInfo[MAX_SCSI_TAR] = { {{0}} }; +static struct nvram_info FPT_nvRamInfo[MAX_MB_CARDS] = { {0} }; + +static unsigned char FPT_mbCards = 0; +static unsigned char FPT_scamHAString[] = + { 0x63, 0x07, 'B', 'U', 'S', 'L', 'O', 'G', 'I', 'C', + ' ', 'B', 'T', '-', '9', '3', '0', + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 +}; +static unsigned short FPT_default_intena = 0; - -void scsiStartAuto(ULONG port); -static UCHAR FPT_sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag); -static void FPT_ssel(ULONG port, UCHAR p_card); -static void FPT_sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard); -static void FPT_shandem(ULONG port, UCHAR p_card,PSCCB pCurrSCCB); -static void FPT_stsyncn(ULONG port, UCHAR p_card); -static void FPT_sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset); -static void FPT_sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value, - PSCCBMgr_tar_info currTar_Info); -static void FPT_sresb(ULONG port, UCHAR p_card); -static void FPT_sxfrp(ULONG p_port, UCHAR p_card); -static void FPT_schkdd(ULONG port, UCHAR p_card); -static UCHAR FPT_RdStack(ULONG port, UCHAR index); -static void FPT_WrStack(ULONG portBase, UCHAR index, UCHAR data); -static UCHAR FPT_ChkIfChipInitialized(ULONG ioPort); - -static void FPT_SendMsg(ULONG port, UCHAR message); -static void FPT_queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, - UCHAR error_code); - -static void FPT_sinits(PSCCB p_sccb, UCHAR p_card); -static void FPT_RNVRamData(PNVRamInfo pNvRamInfo); - -static UCHAR FPT_siwidn(ULONG port, UCHAR p_card); -static void FPT_stwidn(ULONG port, UCHAR p_card); -static void FPT_siwidr(ULONG port, UCHAR width); - - -static void FPT_queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_queueDisconnect(PSCCB p_SCCB, UCHAR p_card); -static void FPT_queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_SCCB, - UCHAR p_card); -static void FPT_queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_queueFlushSccb(UCHAR p_card, UCHAR error_code); -static void FPT_queueAddSccb(PSCCB p_SCCB, UCHAR card); -static UCHAR FPT_queueFindSccb(PSCCB p_SCCB, UCHAR p_card); -static void FPT_utilUpdateResidual(PSCCB p_SCCB); -static USHORT FPT_CalcCrc16(UCHAR buffer[]); -static UCHAR FPT_CalcLrc(UCHAR buffer[]); - - -static void FPT_Wait1Second(ULONG p_port); -static void FPT_Wait(ULONG p_port, UCHAR p_delay); -static void FPT_utilEEWriteOnOff(ULONG p_port,UCHAR p_mode); -static void FPT_utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr); -static USHORT FPT_utilEERead(ULONG p_port, USHORT ee_addr); -static USHORT FPT_utilEEReadOrg(ULONG p_port, USHORT ee_addr); -static void FPT_utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr); - - - -static void FPT_phaseDataOut(ULONG port, UCHAR p_card); -static void FPT_phaseDataIn(ULONG port, UCHAR p_card); -static void FPT_phaseCommand(ULONG port, UCHAR p_card); -static void FPT_phaseStatus(ULONG port, UCHAR p_card); -static void FPT_phaseMsgOut(ULONG port, UCHAR p_card); -static void FPT_phaseMsgIn(ULONG port, UCHAR p_card); -static void FPT_phaseIllegal(ULONG port, UCHAR p_card); - -static void FPT_phaseDecode(ULONG port, UCHAR p_card); -static void FPT_phaseChkFifo(ULONG port, UCHAR p_card); -static void FPT_phaseBusFree(ULONG p_port, UCHAR p_card); - - - - -static void FPT_XbowInit(ULONG port, UCHAR scamFlg); -static void FPT_BusMasterInit(ULONG p_port); -static void FPT_DiagEEPROM(ULONG p_port); - - - - -void busMstrAbort(ULONG port); -static void FPT_dataXferProcessor(ULONG port, PSCCBcard pCurrCard); -static void FPT_busMstrSGDataXferStart(ULONG port, PSCCB pCurrSCCB); -static void FPT_busMstrDataXferStart(ULONG port, PSCCB pCurrSCCB); -static void FPT_hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB); -static void FPT_hostDataXferRestart(PSCCB currSCCB); - - -static UCHAR FPT_SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, - PSCCBcard pCurrCard, USHORT p_int); - -static void FPT_SccbMgrTableInitAll(void); -static void FPT_SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card); -static void FPT_SccbMgrTableInitTarget(UCHAR p_card, UCHAR target); - - - -static void FPT_scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up); - -static int FPT_scarb(ULONG p_port, UCHAR p_sel_type); -static void FPT_scbusf(ULONG p_port); -static void FPT_scsel(ULONG p_port); -static void FPT_scasid(UCHAR p_card, ULONG p_port); -static UCHAR FPT_scxferc(ULONG p_port, UCHAR p_data); -static UCHAR FPT_scsendi(ULONG p_port, UCHAR p_id_string[]); -static UCHAR FPT_sciso(ULONG p_port, UCHAR p_id_string[]); -static void FPT_scwirod(ULONG p_port, UCHAR p_data_bit); -static void FPT_scwiros(ULONG p_port, UCHAR p_data_bit); -static UCHAR FPT_scvalq(UCHAR p_quintet); -static UCHAR FPT_scsell(ULONG p_port, UCHAR targ_id); -static void FPT_scwtsel(ULONG p_port); -static void FPT_inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id); -static void FPT_scsavdi(UCHAR p_card, ULONG p_port); -static UCHAR FPT_scmachid(UCHAR p_card, UCHAR p_id_string[]); - - -static void FPT_autoCmdCmplt(ULONG p_port, UCHAR p_card); -static void FPT_autoLoadDefaultMap(ULONG p_port); - - - -void OS_start_timer(unsigned long ioport, unsigned long timeout); -void OS_stop_timer(unsigned long ioport, unsigned long timeout); -void OS_disable_int(unsigned char intvec); -void OS_enable_int(unsigned char intvec); -void OS_delay(unsigned long count); -int OS_VirtToPhys(u32bits CardHandle, u32bits *physaddr, u32bits *virtaddr); - -static SCCBMGR_TAR_INFO FPT_sccbMgrTbl[MAX_CARDS][MAX_SCSI_TAR] = { { { 0 } } }; -static SCCBCARD FPT_BL_Card[MAX_CARDS] = { { 0 } }; -static SCCBSCAM_INFO FPT_scamInfo[MAX_SCSI_TAR] = { { { 0 } } }; -static NVRAMINFO FPT_nvRamInfo[MAX_MB_CARDS] = { { 0 } }; - - -static UCHAR FPT_mbCards = 0; -static UCHAR FPT_scamHAString[] = {0x63, 0x07, 'B', 'U', 'S', 'L', 'O', 'G', 'I', 'C', \ - ' ', 'B', 'T', '-', '9', '3', '0', \ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \ - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}; - -static USHORT FPT_default_intena = 0; - - -static void (*FPT_s_PhaseTbl[8]) (ULONG, UCHAR)= { 0 }; - +static void (*FPT_s_PhaseTbl[8]) (unsigned long, unsigned char) = { +0}; /*--------------------------------------------------------------------- * - * Function: SccbMgr_sense_adapter + * Function: FlashPoint_ProbeHostAdapter * * Description: Setup and/or Search for cards and return info to caller. * *---------------------------------------------------------------------*/ -static int SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo) +static int FlashPoint_ProbeHostAdapter(struct sccb_mgr_info *pCardInfo) { - static UCHAR first_time = 1; + static unsigned char first_time = 1; - UCHAR i,j,id,ScamFlg; - USHORT temp,temp2,temp3,temp4,temp5,temp6; - ULONG ioport; - PNVRamInfo pCurrNvRam; + unsigned char i, j, id, ScamFlg; + unsigned short temp, temp2, temp3, temp4, temp5, temp6; + unsigned long ioport; + struct nvram_info *pCurrNvRam; - ioport = pCardInfo->si_baseaddr; + ioport = pCardInfo->si_baseaddr; + if (RD_HARPOON(ioport + hp_vendor_id_0) != ORION_VEND_0) + return (int)FAILURE; - if (RD_HARPOON(ioport+hp_vendor_id_0) != ORION_VEND_0) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_vendor_id_1) != ORION_VEND_1)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_vendor_id_1) != ORION_VEND_1)) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_device_id_0) != ORION_DEV_0)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_device_id_0) != ORION_DEV_0)) - return((int)FAILURE); + if ((RD_HARPOON(ioport + hp_device_id_1) != ORION_DEV_1)) + return (int)FAILURE; - if ((RD_HARPOON(ioport+hp_device_id_1) != ORION_DEV_1)) - return((int)FAILURE); - - - if (RD_HARPOON(ioport+hp_rev_num) != 0x0f){ + if (RD_HARPOON(ioport + hp_rev_num) != 0x0f) { /* For new Harpoon then check for sub_device ID LSB the bits(0-3) must be all ZERO for compatible with current version of SCCBMgr, else skip this Harpoon device. */ - if (RD_HARPOON(ioport+hp_sub_device_id_0) & 0x0f) - return((int)FAILURE); + if (RD_HARPOON(ioport + hp_sub_device_id_0) & 0x0f) + return (int)FAILURE; } - if (first_time) - { - FPT_SccbMgrTableInitAll(); - first_time = 0; + if (first_time) { + FPT_SccbMgrTableInitAll(); + first_time = 0; FPT_mbCards = 0; - } + } - if(FPT_RdStack(ioport, 0) != 0x00) { - if(FPT_ChkIfChipInitialized(ioport) == 0) - { + if (FPT_RdStack(ioport, 0) != 0x00) { + if (FPT_ChkIfChipInitialized(ioport) == 0) { pCurrNvRam = NULL; - WR_HARPOON(ioport+hp_semaphore, 0x00); - FPT_XbowInit(ioport, 0); /*Must Init the SCSI before attempting */ + WR_HARPOON(ioport + hp_semaphore, 0x00); + FPT_XbowInit(ioport, 0); /*Must Init the SCSI before attempting */ FPT_DiagEEPROM(ioport); - } - else - { - if(FPT_mbCards < MAX_MB_CARDS) { + } else { + if (FPT_mbCards < MAX_MB_CARDS) { pCurrNvRam = &FPT_nvRamInfo[FPT_mbCards]; FPT_mbCards++; pCurrNvRam->niBaseAddr = ioport; FPT_RNVRamData(pCurrNvRam); - }else - return((int) FAILURE); + } else + return (int)FAILURE; } - }else + } else pCurrNvRam = NULL; - WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(ioport+hp_sys_ctrl, 0x00); + WR_HARPOON(ioport + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(ioport + hp_sys_ctrl, 0x00); - if(pCurrNvRam) + if (pCurrNvRam) pCardInfo->si_id = pCurrNvRam->niAdapId; else - pCardInfo->si_id = (UCHAR)(FPT_utilEERead(ioport, (ADAPTER_SCSI_ID/2)) & - (UCHAR)0x0FF); - - pCardInfo->si_lun = 0x00; - pCardInfo->si_fw_revision = ORION_FW_REV; - temp2 = 0x0000; - temp3 = 0x0000; - temp4 = 0x0000; - temp5 = 0x0000; - temp6 = 0x0000; + pCardInfo->si_id = + (unsigned + char)(FPT_utilEERead(ioport, + (ADAPTER_SCSI_ID / + 2)) & (unsigned char)0x0FF); + + pCardInfo->si_lun = 0x00; + pCardInfo->si_fw_revision = ORION_FW_REV; + temp2 = 0x0000; + temp3 = 0x0000; + temp4 = 0x0000; + temp5 = 0x0000; + temp6 = 0x0000; - for (id = 0; id < (16/2); id++) { + for (id = 0; id < (16 / 2); id++) { - if(pCurrNvRam){ - temp = (USHORT) pCurrNvRam->niSyncTbl[id]; + if (pCurrNvRam) { + temp = (unsigned short)pCurrNvRam->niSyncTbl[id]; temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) + - (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); - }else - temp = FPT_utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id)); - - for (i = 0; i < 2; temp >>=8,i++) { - - temp2 >>= 1; - temp3 >>= 1; - temp4 >>= 1; - temp5 >>= 1; - temp6 >>= 1; - switch (temp & 0x3) - { - case AUTO_RATE_20: /* Synchronous, 20 mega-transfers/second */ - temp6 |= 0x8000; /* Fall through */ - case AUTO_RATE_10: /* Synchronous, 10 mega-transfers/second */ - temp5 |= 0x8000; /* Fall through */ - case AUTO_RATE_05: /* Synchronous, 5 mega-transfers/second */ - temp2 |= 0x8000; /* Fall through */ - case AUTO_RATE_00: /* Asynchronous */ - break; - } + (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); + } else + temp = + FPT_utilEERead(ioport, + (unsigned short)((SYNC_RATE_TBL / 2) + + id)); + + for (i = 0; i < 2; temp >>= 8, i++) { + + temp2 >>= 1; + temp3 >>= 1; + temp4 >>= 1; + temp5 >>= 1; + temp6 >>= 1; + switch (temp & 0x3) { + case AUTO_RATE_20: /* Synchronous, 20 mega-transfers/second */ + temp6 |= 0x8000; /* Fall through */ + case AUTO_RATE_10: /* Synchronous, 10 mega-transfers/second */ + temp5 |= 0x8000; /* Fall through */ + case AUTO_RATE_05: /* Synchronous, 5 mega-transfers/second */ + temp2 |= 0x8000; /* Fall through */ + case AUTO_RATE_00: /* Asynchronous */ + break; + } - if (temp & DISC_ENABLE_BIT) - temp3 |= 0x8000; + if (temp & DISC_ENABLE_BIT) + temp3 |= 0x8000; - if (temp & WIDE_NEGO_BIT) - temp4 |= 0x8000; + if (temp & WIDE_NEGO_BIT) + temp4 |= 0x8000; - } - } + } + } - pCardInfo->si_per_targ_init_sync = temp2; - pCardInfo->si_per_targ_no_disc = temp3; - pCardInfo->si_per_targ_wide_nego = temp4; - pCardInfo->si_per_targ_fast_nego = temp5; - pCardInfo->si_per_targ_ultra_nego = temp6; + pCardInfo->si_per_targ_init_sync = temp2; + pCardInfo->si_per_targ_no_disc = temp3; + pCardInfo->si_per_targ_wide_nego = temp4; + pCardInfo->si_per_targ_fast_nego = temp5; + pCardInfo->si_per_targ_ultra_nego = temp6; - if(pCurrNvRam) + if (pCurrNvRam) i = pCurrNvRam->niSysConf; else - i = (UCHAR)(FPT_utilEERead(ioport, (SYSTEM_CONFIG/2))); + i = (unsigned + char)(FPT_utilEERead(ioport, (SYSTEM_CONFIG / 2))); - if(pCurrNvRam) + if (pCurrNvRam) ScamFlg = pCurrNvRam->niScamConf; else - ScamFlg = (UCHAR) FPT_utilEERead(ioport, SCAM_CONFIG/2); - - pCardInfo->si_flags = 0x0000; - - if (i & 0x01) - pCardInfo->si_flags |= SCSI_PARITY_ENA; - - if (!(i & 0x02)) - pCardInfo->si_flags |= SOFT_RESET; - - if (i & 0x10) - pCardInfo->si_flags |= EXTENDED_TRANSLATION; - - if (ScamFlg & SCAM_ENABLED) - pCardInfo->si_flags |= FLAG_SCAM_ENABLED; + ScamFlg = + (unsigned char)FPT_utilEERead(ioport, SCAM_CONFIG / 2); - if (ScamFlg & SCAM_LEVEL2) - pCardInfo->si_flags |= FLAG_SCAM_LEVEL2; + pCardInfo->si_flags = 0x0000; - j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L); - if (i & 0x04) { - j |= SCSI_TERM_ENA_L; - } - WR_HARPOON(ioport+hp_bm_ctrl, j ); - - j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H); - if (i & 0x08) { - j |= SCSI_TERM_ENA_H; - } - WR_HARPOON(ioport+hp_ee_ctrl, j ); - - if (!(RD_HARPOON(ioport+hp_page_ctrl) & NARROW_SCSI_CARD)) - - pCardInfo->si_flags |= SUPPORT_16TAR_32LUN; - - pCardInfo->si_card_family = HARPOON_FAMILY; - pCardInfo->si_bustype = BUSTYPE_PCI; - - if(pCurrNvRam){ - pCardInfo->si_card_model[0] = '9'; - switch(pCurrNvRam->niModel & 0x0f){ - case MODEL_LT: - pCardInfo->si_card_model[1] = '3'; - pCardInfo->si_card_model[2] = '0'; - break; - case MODEL_LW: - pCardInfo->si_card_model[1] = '5'; - pCardInfo->si_card_model[2] = '0'; - break; - case MODEL_DL: - pCardInfo->si_card_model[1] = '3'; - pCardInfo->si_card_model[2] = '2'; - break; - case MODEL_DW: - pCardInfo->si_card_model[1] = '5'; - pCardInfo->si_card_model[2] = '2'; - break; - } - }else{ - temp = FPT_utilEERead(ioport, (MODEL_NUMB_0/2)); - pCardInfo->si_card_model[0] = (UCHAR)(temp >> 8); - temp = FPT_utilEERead(ioport, (MODEL_NUMB_2/2)); - - pCardInfo->si_card_model[1] = (UCHAR)(temp & 0x00FF); - pCardInfo->si_card_model[2] = (UCHAR)(temp >> 8); - } - - if (pCardInfo->si_card_model[1] == '3') - { - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= LOW_BYTE_TERM; - } - else if (pCardInfo->si_card_model[2] == '0') - { - temp = RD_HARPOON(ioport+hp_xfer_pad); - WR_HARPOON(ioport+hp_xfer_pad, (temp & ~BIT(4))); - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= LOW_BYTE_TERM; - WR_HARPOON(ioport+hp_xfer_pad, (temp | BIT(4))); - if (RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7)) - pCardInfo->si_flags |= HIGH_BYTE_TERM; - WR_HARPOON(ioport+hp_xfer_pad, temp); - } - else - { - temp = RD_HARPOON(ioport+hp_ee_ctrl); - temp2 = RD_HARPOON(ioport+hp_xfer_pad); - WR_HARPOON(ioport+hp_ee_ctrl, (temp | SEE_CS)); - WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4))); - temp3 = 0; - for (i = 0; i < 8; i++) - { - temp3 <<= 1; - if (!(RD_HARPOON(ioport+hp_ee_ctrl) & BIT(7))) - temp3 |= 1; - WR_HARPOON(ioport+hp_xfer_pad, (temp2 & ~BIT(4))); - WR_HARPOON(ioport+hp_xfer_pad, (temp2 | BIT(4))); - } - WR_HARPOON(ioport+hp_ee_ctrl, temp); - WR_HARPOON(ioport+hp_xfer_pad, temp2); - if (!(temp3 & BIT(7))) - pCardInfo->si_flags |= LOW_BYTE_TERM; - if (!(temp3 & BIT(6))) - pCardInfo->si_flags |= HIGH_BYTE_TERM; - } + if (i & 0x01) + pCardInfo->si_flags |= SCSI_PARITY_ENA; + if (!(i & 0x02)) + pCardInfo->si_flags |= SOFT_RESET; + + if (i & 0x10) + pCardInfo->si_flags |= EXTENDED_TRANSLATION; + + if (ScamFlg & SCAM_ENABLED) + pCardInfo->si_flags |= FLAG_SCAM_ENABLED; + + if (ScamFlg & SCAM_LEVEL2) + pCardInfo->si_flags |= FLAG_SCAM_LEVEL2; + + j = (RD_HARPOON(ioport + hp_bm_ctrl) & ~SCSI_TERM_ENA_L); + if (i & 0x04) { + j |= SCSI_TERM_ENA_L; + } + WR_HARPOON(ioport + hp_bm_ctrl, j); + + j = (RD_HARPOON(ioport + hp_ee_ctrl) & ~SCSI_TERM_ENA_H); + if (i & 0x08) { + j |= SCSI_TERM_ENA_H; + } + WR_HARPOON(ioport + hp_ee_ctrl, j); + + if (!(RD_HARPOON(ioport + hp_page_ctrl) & NARROW_SCSI_CARD)) + + pCardInfo->si_flags |= SUPPORT_16TAR_32LUN; + + pCardInfo->si_card_family = HARPOON_FAMILY; + pCardInfo->si_bustype = BUSTYPE_PCI; + + if (pCurrNvRam) { + pCardInfo->si_card_model[0] = '9'; + switch (pCurrNvRam->niModel & 0x0f) { + case MODEL_LT: + pCardInfo->si_card_model[1] = '3'; + pCardInfo->si_card_model[2] = '0'; + break; + case MODEL_LW: + pCardInfo->si_card_model[1] = '5'; + pCardInfo->si_card_model[2] = '0'; + break; + case MODEL_DL: + pCardInfo->si_card_model[1] = '3'; + pCardInfo->si_card_model[2] = '2'; + break; + case MODEL_DW: + pCardInfo->si_card_model[1] = '5'; + pCardInfo->si_card_model[2] = '2'; + break; + } + } else { + temp = FPT_utilEERead(ioport, (MODEL_NUMB_0 / 2)); + pCardInfo->si_card_model[0] = (unsigned char)(temp >> 8); + temp = FPT_utilEERead(ioport, (MODEL_NUMB_2 / 2)); + + pCardInfo->si_card_model[1] = (unsigned char)(temp & 0x00FF); + pCardInfo->si_card_model[2] = (unsigned char)(temp >> 8); + } + + if (pCardInfo->si_card_model[1] == '3') { + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= LOW_BYTE_TERM; + } else if (pCardInfo->si_card_model[2] == '0') { + temp = RD_HARPOON(ioport + hp_xfer_pad); + WR_HARPOON(ioport + hp_xfer_pad, (temp & ~BIT(4))); + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= LOW_BYTE_TERM; + WR_HARPOON(ioport + hp_xfer_pad, (temp | BIT(4))); + if (RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7)) + pCardInfo->si_flags |= HIGH_BYTE_TERM; + WR_HARPOON(ioport + hp_xfer_pad, temp); + } else { + temp = RD_HARPOON(ioport + hp_ee_ctrl); + temp2 = RD_HARPOON(ioport + hp_xfer_pad); + WR_HARPOON(ioport + hp_ee_ctrl, (temp | SEE_CS)); + WR_HARPOON(ioport + hp_xfer_pad, (temp2 | BIT(4))); + temp3 = 0; + for (i = 0; i < 8; i++) { + temp3 <<= 1; + if (!(RD_HARPOON(ioport + hp_ee_ctrl) & BIT(7))) + temp3 |= 1; + WR_HARPOON(ioport + hp_xfer_pad, (temp2 & ~BIT(4))); + WR_HARPOON(ioport + hp_xfer_pad, (temp2 | BIT(4))); + } + WR_HARPOON(ioport + hp_ee_ctrl, temp); + WR_HARPOON(ioport + hp_xfer_pad, temp2); + if (!(temp3 & BIT(7))) + pCardInfo->si_flags |= LOW_BYTE_TERM; + if (!(temp3 & BIT(6))) + pCardInfo->si_flags |= HIGH_BYTE_TERM; + } - ARAM_ACCESS(ioport); + ARAM_ACCESS(ioport); - for ( i = 0; i < 4; i++ ) { + for (i = 0; i < 4; i++) { - pCardInfo->si_XlatInfo[i] = - RD_HARPOON(ioport+hp_aramBase+BIOS_DATA_OFFSET+i); - } + pCardInfo->si_XlatInfo[i] = + RD_HARPOON(ioport + hp_aramBase + BIOS_DATA_OFFSET + i); + } /* return with -1 if no sort, else return with logical card number sorted by BIOS (zero-based) */ pCardInfo->si_relative_cardnum = - (UCHAR)(RD_HARPOON(ioport+hp_aramBase+BIOS_RELATIVE_CARD)-1); + (unsigned + char)(RD_HARPOON(ioport + hp_aramBase + BIOS_RELATIVE_CARD) - 1); - SGRAM_ACCESS(ioport); + SGRAM_ACCESS(ioport); - FPT_s_PhaseTbl[0] = FPT_phaseDataOut; - FPT_s_PhaseTbl[1] = FPT_phaseDataIn; - FPT_s_PhaseTbl[2] = FPT_phaseIllegal; - FPT_s_PhaseTbl[3] = FPT_phaseIllegal; - FPT_s_PhaseTbl[4] = FPT_phaseCommand; - FPT_s_PhaseTbl[5] = FPT_phaseStatus; - FPT_s_PhaseTbl[6] = FPT_phaseMsgOut; - FPT_s_PhaseTbl[7] = FPT_phaseMsgIn; + FPT_s_PhaseTbl[0] = FPT_phaseDataOut; + FPT_s_PhaseTbl[1] = FPT_phaseDataIn; + FPT_s_PhaseTbl[2] = FPT_phaseIllegal; + FPT_s_PhaseTbl[3] = FPT_phaseIllegal; + FPT_s_PhaseTbl[4] = FPT_phaseCommand; + FPT_s_PhaseTbl[5] = FPT_phaseStatus; + FPT_s_PhaseTbl[6] = FPT_phaseMsgOut; + FPT_s_PhaseTbl[7] = FPT_phaseMsgIn; - pCardInfo->si_present = 0x01; + pCardInfo->si_present = 0x01; - return(0); + return 0; } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_config_adapter + * Function: FlashPoint_HardwareResetHostAdapter * * Description: Setup adapter for normal operation (hard reset). * *---------------------------------------------------------------------*/ -static ULONG SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo) +static unsigned long FlashPoint_HardwareResetHostAdapter(struct sccb_mgr_info + *pCardInfo) { - PSCCBcard CurrCard = NULL; - PNVRamInfo pCurrNvRam; - UCHAR i,j,thisCard, ScamFlg; - USHORT temp,sync_bit_map,id; - ULONG ioport; + struct sccb_card *CurrCard = NULL; + struct nvram_info *pCurrNvRam; + unsigned char i, j, thisCard, ScamFlg; + unsigned short temp, sync_bit_map, id; + unsigned long ioport; - ioport = pCardInfo->si_baseaddr; + ioport = pCardInfo->si_baseaddr; - for(thisCard =0; thisCard <= MAX_CARDS; thisCard++) { + for (thisCard = 0; thisCard <= MAX_CARDS; thisCard++) { - if (thisCard == MAX_CARDS) { + if (thisCard == MAX_CARDS) { - return(FAILURE); - } + return FAILURE; + } - if (FPT_BL_Card[thisCard].ioPort == ioport) { + if (FPT_BL_Card[thisCard].ioPort == ioport) { - CurrCard = &FPT_BL_Card[thisCard]; - FPT_SccbMgrTableInitCard(CurrCard,thisCard); - break; - } + CurrCard = &FPT_BL_Card[thisCard]; + FPT_SccbMgrTableInitCard(CurrCard, thisCard); + break; + } - else if (FPT_BL_Card[thisCard].ioPort == 0x00) { + else if (FPT_BL_Card[thisCard].ioPort == 0x00) { - FPT_BL_Card[thisCard].ioPort = ioport; - CurrCard = &FPT_BL_Card[thisCard]; + FPT_BL_Card[thisCard].ioPort = ioport; + CurrCard = &FPT_BL_Card[thisCard]; - if(FPT_mbCards) - for(i = 0; i < FPT_mbCards; i++){ - if(CurrCard->ioPort == FPT_nvRamInfo[i].niBaseAddr) - CurrCard->pNvRamInfo = &FPT_nvRamInfo[i]; + if (FPT_mbCards) + for (i = 0; i < FPT_mbCards; i++) { + if (CurrCard->ioPort == + FPT_nvRamInfo[i].niBaseAddr) + CurrCard->pNvRamInfo = + &FPT_nvRamInfo[i]; } - FPT_SccbMgrTableInitCard(CurrCard,thisCard); - CurrCard->cardIndex = thisCard; - CurrCard->cardInfo = pCardInfo; + FPT_SccbMgrTableInitCard(CurrCard, thisCard); + CurrCard->cardIndex = thisCard; + CurrCard->cardInfo = pCardInfo; - break; - } - } + break; + } + } pCurrNvRam = CurrCard->pNvRamInfo; - if(pCurrNvRam){ + if (pCurrNvRam) { ScamFlg = pCurrNvRam->niScamConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(ioport, SCAM_CONFIG / 2); } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(ioport, SCAM_CONFIG/2); - } - - FPT_BusMasterInit(ioport); - FPT_XbowInit(ioport, ScamFlg); + FPT_BusMasterInit(ioport); + FPT_XbowInit(ioport, ScamFlg); - FPT_autoLoadDefaultMap(ioport); + FPT_autoLoadDefaultMap(ioport); + for (i = 0, id = 0x01; i != pCardInfo->si_id; i++, id <<= 1) { + } - for (i = 0,id = 0x01; i != pCardInfo->si_id; i++,id <<= 1){} - - WR_HARPOON(ioport+hp_selfid_0, id); - WR_HARPOON(ioport+hp_selfid_1, 0x00); - WR_HARPOON(ioport+hp_arb_id, pCardInfo->si_id); - CurrCard->ourId = pCardInfo->si_id; - - i = (UCHAR) pCardInfo->si_flags; - if (i & SCSI_PARITY_ENA) - WR_HARPOON(ioport+hp_portctrl_1,(HOST_MODE8 | CHK_SCSI_P)); - - j = (RD_HARPOON(ioport+hp_bm_ctrl) & ~SCSI_TERM_ENA_L); - if (i & LOW_BYTE_TERM) - j |= SCSI_TERM_ENA_L; - WR_HARPOON(ioport+hp_bm_ctrl, j); - - j = (RD_HARPOON(ioport+hp_ee_ctrl) & ~SCSI_TERM_ENA_H); - if (i & HIGH_BYTE_TERM) - j |= SCSI_TERM_ENA_H; - WR_HARPOON(ioport+hp_ee_ctrl, j ); + WR_HARPOON(ioport + hp_selfid_0, id); + WR_HARPOON(ioport + hp_selfid_1, 0x00); + WR_HARPOON(ioport + hp_arb_id, pCardInfo->si_id); + CurrCard->ourId = pCardInfo->si_id; + i = (unsigned char)pCardInfo->si_flags; + if (i & SCSI_PARITY_ENA) + WR_HARPOON(ioport + hp_portctrl_1, (HOST_MODE8 | CHK_SCSI_P)); - if (!(pCardInfo->si_flags & SOFT_RESET)) { + j = (RD_HARPOON(ioport + hp_bm_ctrl) & ~SCSI_TERM_ENA_L); + if (i & LOW_BYTE_TERM) + j |= SCSI_TERM_ENA_L; + WR_HARPOON(ioport + hp_bm_ctrl, j); - FPT_sresb(ioport,thisCard); + j = (RD_HARPOON(ioport + hp_ee_ctrl) & ~SCSI_TERM_ENA_H); + if (i & HIGH_BYTE_TERM) + j |= SCSI_TERM_ENA_H; + WR_HARPOON(ioport + hp_ee_ctrl, j); - FPT_scini(thisCard, pCardInfo->si_id, 0); - } + if (!(pCardInfo->si_flags & SOFT_RESET)) { + FPT_sresb(ioport, thisCard); + FPT_scini(thisCard, pCardInfo->si_id, 0); + } - if (pCardInfo->si_flags & POST_ALL_UNDERRRUNS) - CurrCard->globalFlags |= F_NO_FILTER; + if (pCardInfo->si_flags & POST_ALL_UNDERRRUNS) + CurrCard->globalFlags |= F_NO_FILTER; - if(pCurrNvRam){ - if(pCurrNvRam->niSysConf & 0x10) + if (pCurrNvRam) { + if (pCurrNvRam->niSysConf & 0x10) + CurrCard->globalFlags |= F_GREEN_PC; + } else { + if (FPT_utilEERead(ioport, (SYSTEM_CONFIG / 2)) & GREEN_PC_ENA) CurrCard->globalFlags |= F_GREEN_PC; } - else{ - if (FPT_utilEERead(ioport, (SYSTEM_CONFIG/2)) & GREEN_PC_ENA) - CurrCard->globalFlags |= F_GREEN_PC; - } /* Set global flag to indicate Re-Negotiation to be done on all - ckeck condition */ - if(pCurrNvRam){ - if(pCurrNvRam->niScsiConf & 0x04) + ckeck condition */ + if (pCurrNvRam) { + if (pCurrNvRam->niScsiConf & 0x04) + CurrCard->globalFlags |= F_DO_RENEGO; + } else { + if (FPT_utilEERead(ioport, (SCSI_CONFIG / 2)) & RENEGO_ENA) CurrCard->globalFlags |= F_DO_RENEGO; - } - else{ - if (FPT_utilEERead(ioport, (SCSI_CONFIG/2)) & RENEGO_ENA) - CurrCard->globalFlags |= F_DO_RENEGO; } - if(pCurrNvRam){ - if(pCurrNvRam->niScsiConf & 0x08) + if (pCurrNvRam) { + if (pCurrNvRam->niScsiConf & 0x08) + CurrCard->globalFlags |= F_CONLUN_IO; + } else { + if (FPT_utilEERead(ioport, (SCSI_CONFIG / 2)) & CONNIO_ENA) CurrCard->globalFlags |= F_CONLUN_IO; } - else{ - if (FPT_utilEERead(ioport, (SCSI_CONFIG/2)) & CONNIO_ENA) - CurrCard->globalFlags |= F_CONLUN_IO; - } - - temp = pCardInfo->si_per_targ_no_disc; + temp = pCardInfo->si_per_targ_no_disc; - for (i = 0,id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) { + for (i = 0, id = 1; i < MAX_SCSI_TAR; i++, id <<= 1) { - if (temp & id) - FPT_sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC; - } + if (temp & id) + FPT_sccbMgrTbl[thisCard][i].TarStatus |= TAR_ALLOW_DISC; + } - sync_bit_map = 0x0001; + sync_bit_map = 0x0001; - for (id = 0; id < (MAX_SCSI_TAR/2); id++) { + for (id = 0; id < (MAX_SCSI_TAR / 2); id++) { - if(pCurrNvRam){ - temp = (USHORT) pCurrNvRam->niSyncTbl[id]; + if (pCurrNvRam) { + temp = (unsigned short)pCurrNvRam->niSyncTbl[id]; temp = ((temp & 0x03) + ((temp << 4) & 0xc0)) + - (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); - }else - temp = FPT_utilEERead(ioport, (USHORT)((SYNC_RATE_TBL/2)+id)); - - for (i = 0; i < 2; temp >>=8,i++) { - - if (pCardInfo->si_per_targ_init_sync & sync_bit_map) { - - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue = (UCHAR)temp; - } - - else { - FPT_sccbMgrTbl[thisCard][id*2+i].TarStatus |= SYNC_SUPPORTED; - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue = - (UCHAR)(temp & ~EE_SYNC_MASK); - } + (((temp << 4) & 0x0300) + ((temp << 8) & 0xc000)); + } else + temp = + FPT_utilEERead(ioport, + (unsigned short)((SYNC_RATE_TBL / 2) + + id)); + + for (i = 0; i < 2; temp >>= 8, i++) { + + if (pCardInfo->si_per_targ_init_sync & sync_bit_map) { + + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue = + (unsigned char)temp; + } + + else { + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarStatus |= + SYNC_SUPPORTED; + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue = + (unsigned char)(temp & ~EE_SYNC_MASK); + } /* if ((pCardInfo->si_per_targ_wide_nego & sync_bit_map) || (id*2+i >= 8)){ */ - if (pCardInfo->si_per_targ_wide_nego & sync_bit_map){ - - FPT_sccbMgrTbl[thisCard][id*2+i].TarEEValue |= EE_WIDE_SCSI; - - } - - else { /* NARROW SCSI */ - FPT_sccbMgrTbl[thisCard][id*2+i].TarStatus |= WIDE_NEGOCIATED; - } + if (pCardInfo->si_per_targ_wide_nego & sync_bit_map) { + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarEEValue |= + EE_WIDE_SCSI; - sync_bit_map <<= 1; + } + else { /* NARROW SCSI */ + FPT_sccbMgrTbl[thisCard][id * 2 + + i].TarStatus |= + WIDE_NEGOCIATED; + } + sync_bit_map <<= 1; - } - } + } + } - WR_HARPOON((ioport+hp_semaphore), - (UCHAR)(RD_HARPOON((ioport+hp_semaphore)) | SCCB_MGR_PRESENT)); + WR_HARPOON((ioport + hp_semaphore), + (unsigned char)(RD_HARPOON((ioport + hp_semaphore)) | + SCCB_MGR_PRESENT)); - return((ULONG)CurrCard); + return (unsigned long)CurrCard; } -static void SccbMgr_unload_card(ULONG pCurrCard) +static void FlashPoint_ReleaseHostAdapter(unsigned long pCurrCard) { - UCHAR i; - ULONG portBase; - ULONG regOffset; - ULONG scamData; - ULONG *pScamTbl; - PNVRamInfo pCurrNvRam; + unsigned char i; + unsigned long portBase; + unsigned long regOffset; + unsigned long scamData; + unsigned long *pScamTbl; + struct nvram_info *pCurrNvRam; - pCurrNvRam = ((PSCCBcard)pCurrCard)->pNvRamInfo; + pCurrNvRam = ((struct sccb_card *)pCurrCard)->pNvRamInfo; - if(pCurrNvRam){ + if (pCurrNvRam) { FPT_WrStack(pCurrNvRam->niBaseAddr, 0, pCurrNvRam->niModel); FPT_WrStack(pCurrNvRam->niBaseAddr, 1, pCurrNvRam->niSysConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 2, pCurrNvRam->niScsiConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 3, pCurrNvRam->niScamConf); FPT_WrStack(pCurrNvRam->niBaseAddr, 4, pCurrNvRam->niAdapId); - for(i = 0; i < MAX_SCSI_TAR / 2; i++) - FPT_WrStack(pCurrNvRam->niBaseAddr, (UCHAR)(i+5), pCurrNvRam->niSyncTbl[i]); + for (i = 0; i < MAX_SCSI_TAR / 2; i++) + FPT_WrStack(pCurrNvRam->niBaseAddr, + (unsigned char)(i + 5), + pCurrNvRam->niSyncTbl[i]); portBase = pCurrNvRam->niBaseAddr; - for(i = 0; i < MAX_SCSI_TAR; i++){ - regOffset = hp_aramBase + 64 + i*4; - pScamTbl = (ULONG *) &pCurrNvRam->niScamTbl[i]; + for (i = 0; i < MAX_SCSI_TAR; i++) { + regOffset = hp_aramBase + 64 + i * 4; + pScamTbl = (unsigned long *)&pCurrNvRam->niScamTbl[i]; scamData = *pScamTbl; WR_HARP32(portBase, regOffset, scamData); } - }else{ - FPT_WrStack(((PSCCBcard)pCurrCard)->ioPort, 0, 0); + } else { + FPT_WrStack(((struct sccb_card *)pCurrCard)->ioPort, 0, 0); } } - -static void FPT_RNVRamData(PNVRamInfo pNvRamInfo) +static void FPT_RNVRamData(struct nvram_info *pNvRamInfo) { - UCHAR i; - ULONG portBase; - ULONG regOffset; - ULONG scamData; - ULONG *pScamTbl; + unsigned char i; + unsigned long portBase; + unsigned long regOffset; + unsigned long scamData; + unsigned long *pScamTbl; - pNvRamInfo->niModel = FPT_RdStack(pNvRamInfo->niBaseAddr, 0); - pNvRamInfo->niSysConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 1); + pNvRamInfo->niModel = FPT_RdStack(pNvRamInfo->niBaseAddr, 0); + pNvRamInfo->niSysConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 1); pNvRamInfo->niScsiConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 2); pNvRamInfo->niScamConf = FPT_RdStack(pNvRamInfo->niBaseAddr, 3); - pNvRamInfo->niAdapId = FPT_RdStack(pNvRamInfo->niBaseAddr, 4); + pNvRamInfo->niAdapId = FPT_RdStack(pNvRamInfo->niBaseAddr, 4); - for(i = 0; i < MAX_SCSI_TAR / 2; i++) - pNvRamInfo->niSyncTbl[i] = FPT_RdStack(pNvRamInfo->niBaseAddr, (UCHAR)(i+5)); + for (i = 0; i < MAX_SCSI_TAR / 2; i++) + pNvRamInfo->niSyncTbl[i] = + FPT_RdStack(pNvRamInfo->niBaseAddr, (unsigned char)(i + 5)); portBase = pNvRamInfo->niBaseAddr; - for(i = 0; i < MAX_SCSI_TAR; i++){ - regOffset = hp_aramBase + 64 + i*4; + for (i = 0; i < MAX_SCSI_TAR; i++) { + regOffset = hp_aramBase + 64 + i * 4; RD_HARP32(portBase, regOffset, scamData); - pScamTbl = (ULONG *) &pNvRamInfo->niScamTbl[i]; + pScamTbl = (unsigned long *)&pNvRamInfo->niScamTbl[i]; *pScamTbl = scamData; } } -static UCHAR FPT_RdStack(ULONG portBase, UCHAR index) +static unsigned char FPT_RdStack(unsigned long portBase, unsigned char index) { WR_HARPOON(portBase + hp_stack_addr, index); - return(RD_HARPOON(portBase + hp_stack_data)); + return RD_HARPOON(portBase + hp_stack_data); } -static void FPT_WrStack(ULONG portBase, UCHAR index, UCHAR data) +static void FPT_WrStack(unsigned long portBase, unsigned char index, + unsigned char data) { WR_HARPOON(portBase + hp_stack_addr, index); WR_HARPOON(portBase + hp_stack_data, data); } - -static UCHAR FPT_ChkIfChipInitialized(ULONG ioPort) +static unsigned char FPT_ChkIfChipInitialized(unsigned long ioPort) { - if((RD_HARPOON(ioPort + hp_arb_id) & 0x0f) != FPT_RdStack(ioPort, 4)) - return(0); - if((RD_HARPOON(ioPort + hp_clkctrl_0) & CLKCTRL_DEFAULT) - != CLKCTRL_DEFAULT) - return(0); - if((RD_HARPOON(ioPort + hp_seltimeout) == TO_250ms) || - (RD_HARPOON(ioPort + hp_seltimeout) == TO_290ms)) - return(1); - return(0); + if ((RD_HARPOON(ioPort + hp_arb_id) & 0x0f) != FPT_RdStack(ioPort, 4)) + return 0; + if ((RD_HARPOON(ioPort + hp_clkctrl_0) & CLKCTRL_DEFAULT) + != CLKCTRL_DEFAULT) + return 0; + if ((RD_HARPOON(ioPort + hp_seltimeout) == TO_250ms) || + (RD_HARPOON(ioPort + hp_seltimeout) == TO_290ms)) + return 1; + return 0; } + /*--------------------------------------------------------------------- * - * Function: SccbMgr_start_sccb + * Function: FlashPoint_StartCCB * * Description: Start a command pointed to by p_Sccb. When the * command is completed it will be returned via the * callback function. * *---------------------------------------------------------------------*/ -static void SccbMgr_start_sccb(ULONG pCurrCard, PSCCB p_Sccb) +static void FlashPoint_StartCCB(unsigned long pCurrCard, struct sccb *p_Sccb) { - ULONG ioport; - UCHAR thisCard, lun; - PSCCB pSaveSccb; - CALL_BK_FN callback; + unsigned long ioport; + unsigned char thisCard, lun; + struct sccb *pSaveSccb; + CALL_BK_FN callback; - thisCard = ((PSCCBcard) pCurrCard)->cardIndex; - ioport = ((PSCCBcard) pCurrCard)->ioPort; + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - if((p_Sccb->TargID > MAX_SCSI_TAR) || (p_Sccb->Lun > MAX_LUN)) - { + if ((p_Sccb->TargID > MAX_SCSI_TAR) || (p_Sccb->Lun > MAX_LUN)) { p_Sccb->HostStatus = SCCB_COMPLETE; p_Sccb->SccbStatus = SCCB_ERROR; - callback = (CALL_BK_FN)p_Sccb->SccbCallback; + callback = (CALL_BK_FN) p_Sccb->SccbCallback; if (callback) callback(p_Sccb); return; } - FPT_sinits(p_Sccb,thisCard); + FPT_sinits(p_Sccb, thisCard); + if (!((struct sccb_card *)pCurrCard)->cmdCounter) { + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + | SCCB_MGR_ACTIVE)); - if (!((PSCCBcard) pCurrCard)->cmdCounter) - { - WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore) - | SCCB_MGR_ACTIVE)); - - if (((PSCCBcard) pCurrCard)->globalFlags & F_GREEN_PC) - { - WR_HARPOON(ioport+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(ioport+hp_sys_ctrl, 0x00); - } - } + if (((struct sccb_card *)pCurrCard)->globalFlags & F_GREEN_PC) { + WR_HARPOON(ioport + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(ioport + hp_sys_ctrl, 0x00); + } + } - ((PSCCBcard)pCurrCard)->cmdCounter++; + ((struct sccb_card *)pCurrCard)->cmdCounter++; - if (RD_HARPOON(ioport+hp_semaphore) & BIOS_IN_USE) { + if (RD_HARPOON(ioport + hp_semaphore) & BIOS_IN_USE) { - WR_HARPOON(ioport+hp_semaphore, (RD_HARPOON(ioport+hp_semaphore) - | TICKLE_ME)); - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + | TICKLE_ME)); + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)->currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - else if ((RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)) { + else if ((RD_HARPOON(ioport + hp_page_ctrl) & G_INT_DISABLE)) { - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)->currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - else { + else { - MDISABLE_INT(ioport); + MDISABLE_INT(ioport); - if((((PSCCBcard) pCurrCard)->globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + if ((((struct sccb_card *)pCurrCard)->globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[thisCard][p_Sccb->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) lun = p_Sccb->Lun; else lun = 0; - if ((((PSCCBcard) pCurrCard)->currentSCCB == NULL) && - (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarSelQ_Cnt == 0) && - (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarLUNBusy[lun] - == 0)) { - - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_ssel(p_Sccb->SccbIOPort,thisCard); - } + if ((((struct sccb_card *)pCurrCard)->currentSCCB == NULL) && + (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarSelQ_Cnt == 0) + && (FPT_sccbMgrTbl[thisCard][p_Sccb->TargID].TarLUNBusy[lun] + == 0)) { - else { + ((struct sccb_card *)pCurrCard)->currentSCCB = p_Sccb; + FPT_ssel(p_Sccb->SccbIOPort, thisCard); + } - if(p_Sccb->OperationCode == RESET_COMMAND) - { - pSaveSccb = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail(&FPT_BL_Card[thisCard], thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSccb; - } - else - { - FPT_queueAddSccb(p_Sccb,thisCard); - } - } + else { + if (p_Sccb->OperationCode == RESET_COMMAND) { + pSaveSccb = + ((struct sccb_card *)pCurrCard)-> + currentSCCB; + ((struct sccb_card *)pCurrCard)->currentSCCB = + p_Sccb; + FPT_queueSelectFail(&FPT_BL_Card[thisCard], + thisCard); + ((struct sccb_card *)pCurrCard)->currentSCCB = + pSaveSccb; + } else { + FPT_queueAddSccb(p_Sccb, thisCard); + } + } - MENABLE_INT(ioport); - } + MENABLE_INT(ioport); + } } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_abort_sccb + * Function: FlashPoint_AbortCCB * * Description: Abort the command pointed to by p_Sccb. When the * command is completed it will be returned via the * callback function. * *---------------------------------------------------------------------*/ -static int SccbMgr_abort_sccb(ULONG pCurrCard, PSCCB p_Sccb) +static int FlashPoint_AbortCCB(unsigned long pCurrCard, struct sccb *p_Sccb) { - ULONG ioport; + unsigned long ioport; - UCHAR thisCard; + unsigned char thisCard; CALL_BK_FN callback; - UCHAR TID; - PSCCB pSaveSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char TID; + struct sccb *pSaveSCCB; + struct sccb_mgr_tar_info *currTar_Info; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - ioport = ((PSCCBcard) pCurrCard)->ioPort; + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; - thisCard = ((PSCCBcard)pCurrCard)->cardIndex; - - if (!(RD_HARPOON(ioport+hp_page_ctrl) & G_INT_DISABLE)) - { + if (!(RD_HARPOON(ioport + hp_page_ctrl) & G_INT_DISABLE)) { - if (FPT_queueFindSccb(p_Sccb,thisCard)) - { + if (FPT_queueFindSccb(p_Sccb, thisCard)) { - ((PSCCBcard)pCurrCard)->cmdCounter--; + ((struct sccb_card *)pCurrCard)->cmdCounter--; - if (!((PSCCBcard)pCurrCard)->cmdCounter) - WR_HARPOON(ioport+hp_semaphore,(RD_HARPOON(ioport+hp_semaphore) - & (UCHAR)(~(SCCB_MGR_ACTIVE | TICKLE_ME)) )); + if (!((struct sccb_card *)pCurrCard)->cmdCounter) + WR_HARPOON(ioport + hp_semaphore, + (RD_HARPOON(ioport + hp_semaphore) + & (unsigned + char)(~(SCCB_MGR_ACTIVE | + TICKLE_ME)))); p_Sccb->SccbStatus = SCCB_ABORT; callback = p_Sccb->SccbCallback; callback(p_Sccb); - return(0); + return 0; } - else - { - if (((PSCCBcard)pCurrCard)->currentSCCB == p_Sccb) - { + else { + if (((struct sccb_card *)pCurrCard)->currentSCCB == + p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - return(0); + return 0; } - else - { + else { TID = p_Sccb->TargID; - - if(p_Sccb->Sccb_tag) - { + if (p_Sccb->Sccb_tag) { MDISABLE_INT(ioport); - if (((PSCCBcard) pCurrCard)->discQ_Tbl[p_Sccb->Sccb_tag]==p_Sccb) - { + if (((struct sccb_card *)pCurrCard)-> + discQ_Tbl[p_Sccb->Sccb_tag] == + p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - p_Sccb->Sccb_scsistat = ABORT_ST; - p_Sccb->Sccb_scsimsg = SMABORT_TAG; - - if(((PSCCBcard) pCurrCard)->currentSCCB == NULL) - { - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_ssel(ioport, thisCard); - } - else - { - pSaveSCCB = ((PSCCBcard) pCurrCard)->currentSCCB; - ((PSCCBcard) pCurrCard)->currentSCCB = p_Sccb; - FPT_queueSelectFail((PSCCBcard) pCurrCard, thisCard); - ((PSCCBcard) pCurrCard)->currentSCCB = pSaveSCCB; + p_Sccb->Sccb_scsistat = + ABORT_ST; + p_Sccb->Sccb_scsimsg = + SMABORT_TAG; + + if (((struct sccb_card *) + pCurrCard)->currentSCCB == + NULL) { + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = p_Sccb; + FPT_ssel(ioport, + thisCard); + } else { + pSaveSCCB = + ((struct sccb_card + *)pCurrCard)-> + currentSCCB; + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = p_Sccb; + FPT_queueSelectFail((struct sccb_card *)pCurrCard, thisCard); + ((struct sccb_card *) + pCurrCard)-> + currentSCCB = pSaveSCCB; } } MENABLE_INT(ioport); - return(0); - } - else - { - currTar_Info = &FPT_sccbMgrTbl[thisCard][p_Sccb->TargID]; - - if(FPT_BL_Card[thisCard].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_Sccb->Lun]] - == p_Sccb) - { + return 0; + } else { + currTar_Info = + &FPT_sccbMgrTbl[thisCard][p_Sccb-> + TargID]; + + if (FPT_BL_Card[thisCard]. + discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_Sccb->Lun]] + == p_Sccb) { p_Sccb->SccbStatus = SCCB_ABORT; - return(0); + return 0; } } } } } - return(-1); + return -1; } - /*--------------------------------------------------------------------- * - * Function: SccbMgr_my_int + * Function: FlashPoint_InterruptPending * * Description: Do a quick check to determine if there is a pending * interrupt for this card and disable the IRQ Pin if so. * *---------------------------------------------------------------------*/ -static UCHAR SccbMgr_my_int(ULONG pCurrCard) +static unsigned char FlashPoint_InterruptPending(unsigned long pCurrCard) { - ULONG ioport; + unsigned long ioport; - ioport = ((PSCCBcard)pCurrCard)->ioPort; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; - if (RD_HARPOON(ioport+hp_int_status) & INT_ASSERTED) - { - return(1); - } + if (RD_HARPOON(ioport + hp_int_status) & INT_ASSERTED) { + return 1; + } - else + else - return(0); + return 0; } - - /*--------------------------------------------------------------------- * - * Function: SccbMgr_isr + * Function: FlashPoint_HandleInterrupt * * Description: This is our entry point when an interrupt is generated * by the card and the upper level driver passes it on to * us. * *---------------------------------------------------------------------*/ -static int SccbMgr_isr(ULONG pCurrCard) +static int FlashPoint_HandleInterrupt(unsigned long pCurrCard) { - PSCCB currSCCB; - UCHAR thisCard,result,bm_status, bm_int_st; - USHORT hp_int; - UCHAR i, target; - ULONG ioport; - - thisCard = ((PSCCBcard)pCurrCard)->cardIndex; - ioport = ((PSCCBcard)pCurrCard)->ioPort; - - MDISABLE_INT(ioport); - - if ((bm_int_st=RD_HARPOON(ioport+hp_int_status)) & EXT_STATUS_ON) - bm_status = RD_HARPOON(ioport+hp_ext_status) & (UCHAR)BAD_EXT_STATUS; - else - bm_status = 0; - - WR_HARPOON(ioport+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); + struct sccb *currSCCB; + unsigned char thisCard, result, bm_status, bm_int_st; + unsigned short hp_int; + unsigned char i, target; + unsigned long ioport; + + thisCard = ((struct sccb_card *)pCurrCard)->cardIndex; + ioport = ((struct sccb_card *)pCurrCard)->ioPort; + + MDISABLE_INT(ioport); + + if ((bm_int_st = RD_HARPOON(ioport + hp_int_status)) & EXT_STATUS_ON) + bm_status = + RD_HARPOON(ioport + + hp_ext_status) & (unsigned char)BAD_EXT_STATUS; + else + bm_status = 0; - while ((hp_int = RDW_HARPOON((ioport+hp_intstat)) & FPT_default_intena) | - bm_status) - { + WR_HARPOON(ioport + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); - currSCCB = ((PSCCBcard)pCurrCard)->currentSCCB; + while ((hp_int = + RDW_HARPOON((ioport + + hp_intstat)) & FPT_default_intena) | bm_status) { - if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) { - result = FPT_SccbMgr_bad_isr(ioport,thisCard,((PSCCBcard)pCurrCard),hp_int); - WRW_HARPOON((ioport+hp_intstat), (FIFO | TIMEOUT | RESET | SCAM_SEL)); - bm_status = 0; + currSCCB = ((struct sccb_card *)pCurrCard)->currentSCCB; - if (result) { + if (hp_int & (FIFO | TIMEOUT | RESET | SCAM_SEL) || bm_status) { + result = + FPT_SccbMgr_bad_isr(ioport, thisCard, + ((struct sccb_card *)pCurrCard), + hp_int); + WRW_HARPOON((ioport + hp_intstat), + (FIFO | TIMEOUT | RESET | SCAM_SEL)); + bm_status = 0; - MENABLE_INT(ioport); - return(result); - } - } + if (result) { + MENABLE_INT(ioport); + return result; + } + } - else if (hp_int & ICMD_COMP) { + else if (hp_int & ICMD_COMP) { - if ( !(hp_int & BUS_FREE) ) { - /* Wait for the BusFree before starting a new command. We - must also check for being reselected since the BusFree - may not show up if another device reselects us in 1.5us or - less. SRR Wednesday, 3/8/1995. - */ - while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL))) ; - } + if (!(hp_int & BUS_FREE)) { + /* Wait for the BusFree before starting a new command. We + must also check for being reselected since the BusFree + may not show up if another device reselects us in 1.5us or + less. SRR Wednesday, 3/8/1995. + */ + while (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL))) ; + } - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) - FPT_phaseChkFifo(ioport, thisCard); + FPT_phaseChkFifo(ioport, thisCard); /* WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ICMD_COMP | ITAR_DISC | XFER_CNT_0)); */ - WRW_HARPOON((ioport+hp_intstat), CLR_ALL_INT_1); - - FPT_autoCmdCmplt(ioport,thisCard); + WRW_HARPOON((ioport + hp_intstat), CLR_ALL_INT_1); - } + FPT_autoCmdCmplt(ioport, thisCard); + } - else if (hp_int & ITAR_DISC) - { - - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) { - - FPT_phaseChkFifo(ioport, thisCard); - - } - - if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR) { - - WR_HARPOON(ioport+hp_gp_reg_1, 0x00); - currSCCB->Sccb_XferState |= F_NO_DATA_YET; - - currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; - } + else if (hp_int & ITAR_DISC) { - currSCCB->Sccb_scsistat = DISCONNECT_ST; - FPT_queueDisconnect(currSCCB,thisCard); + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { - /* Wait for the BusFree before starting a new command. We - must also check for being reselected since the BusFree - may not show up if another device reselects us in 1.5us or - less. SRR Wednesday, 3/8/1995. - */ - while (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL)) && - !((RDW_HARPOON((ioport+hp_intstat)) & PHASE) && - RD_HARPOON((ioport+hp_scsisig)) == - (SCSI_BSY | SCSI_REQ | SCSI_CD | SCSI_MSG | SCSI_IOBIT))) ; + FPT_phaseChkFifo(ioport, thisCard); - /* - The additional loop exit condition above detects a timing problem - with the revision D/E harpoon chips. The caller should reset the - host adapter to recover when 0xFE is returned. - */ - if (!(RDW_HARPOON((ioport+hp_intstat)) & (BUS_FREE | RSEL))) - { - MENABLE_INT(ioport); - return 0xFE; - } + } - WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC)); + if (RD_HARPOON(ioport + hp_gp_reg_1) == SMSAVE_DATA_PTR) { + WR_HARPOON(ioport + hp_gp_reg_1, 0x00); + currSCCB->Sccb_XferState |= F_NO_DATA_YET; - ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD; + currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; + } - } + currSCCB->Sccb_scsistat = DISCONNECT_ST; + FPT_queueDisconnect(currSCCB, thisCard); + /* Wait for the BusFree before starting a new command. We + must also check for being reselected since the BusFree + may not show up if another device reselects us in 1.5us or + less. SRR Wednesday, 3/8/1995. + */ + while (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL)) + && !((RDW_HARPOON((ioport + hp_intstat)) & PHASE) + && RD_HARPOON((ioport + hp_scsisig)) == + (SCSI_BSY | SCSI_REQ | SCSI_CD | SCSI_MSG | + SCSI_IOBIT))) ; - else if (hp_int & RSEL) { + /* + The additional loop exit condition above detects a timing problem + with the revision D/E harpoon chips. The caller should reset the + host adapter to recover when 0xFE is returned. + */ + if (! + (RDW_HARPOON((ioport + hp_intstat)) & + (BUS_FREE | RSEL))) { + MENABLE_INT(ioport); + return 0xFE; + } - WRW_HARPOON((ioport+hp_intstat), (PROG_HLT | RSEL | PHASE | BUS_FREE)); + WRW_HARPOON((ioport + hp_intstat), + (BUS_FREE | ITAR_DISC)); - if (RDW_HARPOON((ioport+hp_intstat)) & ITAR_DISC) - { - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) - { - FPT_phaseChkFifo(ioport, thisCard); - } + ((struct sccb_card *)pCurrCard)->globalFlags |= + F_NEW_SCCB_CMD; - if (RD_HARPOON(ioport+hp_gp_reg_1) == SMSAVE_DATA_PTR) - { - WR_HARPOON(ioport+hp_gp_reg_1, 0x00); - currSCCB->Sccb_XferState |= F_NO_DATA_YET; - currSCCB->Sccb_savedATC = currSCCB->Sccb_ATC; - } + } - WRW_HARPOON((ioport+hp_intstat), (BUS_FREE | ITAR_DISC)); - currSCCB->Sccb_scsistat = DISCONNECT_ST; - FPT_queueDisconnect(currSCCB,thisCard); - } + else if (hp_int & RSEL) { - FPT_sres(ioport,thisCard,((PSCCBcard)pCurrCard)); - FPT_phaseDecode(ioport,thisCard); + WRW_HARPOON((ioport + hp_intstat), + (PROG_HLT | RSEL | PHASE | BUS_FREE)); - } + if (RDW_HARPOON((ioport + hp_intstat)) & ITAR_DISC) { + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { + FPT_phaseChkFifo(ioport, thisCard); + } + if (RD_HARPOON(ioport + hp_gp_reg_1) == + SMSAVE_DATA_PTR) { + WR_HARPOON(ioport + hp_gp_reg_1, 0x00); + currSCCB->Sccb_XferState |= + F_NO_DATA_YET; + currSCCB->Sccb_savedATC = + currSCCB->Sccb_ATC; + } - else if ((hp_int & IDO_STRT) && (!(hp_int & BUS_FREE))) - { + WRW_HARPOON((ioport + hp_intstat), + (BUS_FREE | ITAR_DISC)); + currSCCB->Sccb_scsistat = DISCONNECT_ST; + FPT_queueDisconnect(currSCCB, thisCard); + } - WRW_HARPOON((ioport+hp_intstat), (IDO_STRT | XFER_CNT_0)); - FPT_phaseDecode(ioport,thisCard); + FPT_sres(ioport, thisCard, + ((struct sccb_card *)pCurrCard)); + FPT_phaseDecode(ioport, thisCard); - } + } + else if ((hp_int & IDO_STRT) && (!(hp_int & BUS_FREE))) { - else if ( (hp_int & IUNKWN) || (hp_int & PROG_HLT) ) - { - WRW_HARPOON((ioport+hp_intstat), (PHASE | IUNKWN | PROG_HLT)); - if ((RD_HARPOON(ioport+hp_prgmcnt_0) & (UCHAR)0x3f)< (UCHAR)SELCHK) - { - FPT_phaseDecode(ioport,thisCard); - } - else - { - /* Harpoon problem some SCSI target device respond to selection - with short BUSY pulse (<400ns) this will make the Harpoon is not able - to latch the correct Target ID into reg. x53. - The work around require to correct this reg. But when write to this - reg. (0x53) also increment the FIFO write addr reg (0x6f), thus we - need to read this reg first then restore it later. After update to 0x53 */ + WRW_HARPOON((ioport + hp_intstat), + (IDO_STRT | XFER_CNT_0)); + FPT_phaseDecode(ioport, thisCard); - i = (UCHAR)(RD_HARPOON(ioport+hp_fifowrite)); - target = (UCHAR)(RD_HARPOON(ioport+hp_gp_reg_3)); - WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) ID_UNLOCK); - WR_HARPOON(ioport+hp_select_id, (UCHAR)(target | target<<4)); - WR_HARPOON(ioport+hp_xfer_pad, (UCHAR) 0x00); - WR_HARPOON(ioport+hp_fifowrite, i); - WR_HARPOON(ioport+hp_autostart_3, (AUTO_IMMED+TAG_STRT)); - } - } + } - else if (hp_int & XFER_CNT_0) { + else if ((hp_int & IUNKWN) || (hp_int & PROG_HLT)) { + WRW_HARPOON((ioport + hp_intstat), + (PHASE | IUNKWN | PROG_HLT)); + if ((RD_HARPOON(ioport + hp_prgmcnt_0) & (unsigned char) + 0x3f) < (unsigned char)SELCHK) { + FPT_phaseDecode(ioport, thisCard); + } else { + /* Harpoon problem some SCSI target device respond to selection + with short BUSY pulse (<400ns) this will make the Harpoon is not able + to latch the correct Target ID into reg. x53. + The work around require to correct this reg. But when write to this + reg. (0x53) also increment the FIFO write addr reg (0x6f), thus we + need to read this reg first then restore it later. After update to 0x53 */ - WRW_HARPOON((ioport+hp_intstat), XFER_CNT_0); + i = (unsigned + char)(RD_HARPOON(ioport + hp_fifowrite)); + target = + (unsigned + char)(RD_HARPOON(ioport + hp_gp_reg_3)); + WR_HARPOON(ioport + hp_xfer_pad, + (unsigned char)ID_UNLOCK); + WR_HARPOON(ioport + hp_select_id, + (unsigned char)(target | target << + 4)); + WR_HARPOON(ioport + hp_xfer_pad, + (unsigned char)0x00); + WR_HARPOON(ioport + hp_fifowrite, i); + WR_HARPOON(ioport + hp_autostart_3, + (AUTO_IMMED + TAG_STRT)); + } + } - FPT_schkdd(ioport,thisCard); + else if (hp_int & XFER_CNT_0) { - } + WRW_HARPOON((ioport + hp_intstat), XFER_CNT_0); + FPT_schkdd(ioport, thisCard); - else if (hp_int & BUS_FREE) { + } - WRW_HARPOON((ioport+hp_intstat), BUS_FREE); + else if (hp_int & BUS_FREE) { - if (((PSCCBcard)pCurrCard)->globalFlags & F_HOST_XFER_ACT) { + WRW_HARPOON((ioport + hp_intstat), BUS_FREE); - FPT_hostDataXferAbort(ioport,thisCard,currSCCB); - } + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_HOST_XFER_ACT) { - FPT_phaseBusFree(ioport,thisCard); + FPT_hostDataXferAbort(ioport, thisCard, + currSCCB); } + FPT_phaseBusFree(ioport, thisCard); + } - else if (hp_int & ITICKLE) { - - WRW_HARPOON((ioport+hp_intstat), ITICKLE); - ((PSCCBcard)pCurrCard)->globalFlags |= F_NEW_SCCB_CMD; - } - - - - if (((PSCCBcard)pCurrCard)->globalFlags & F_NEW_SCCB_CMD) { + else if (hp_int & ITICKLE) { + WRW_HARPOON((ioport + hp_intstat), ITICKLE); + ((struct sccb_card *)pCurrCard)->globalFlags |= + F_NEW_SCCB_CMD; + } - ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD; + if (((struct sccb_card *)pCurrCard)-> + globalFlags & F_NEW_SCCB_CMD) { + ((struct sccb_card *)pCurrCard)->globalFlags &= + ~F_NEW_SCCB_CMD; - if (((PSCCBcard)pCurrCard)->currentSCCB == NULL) { + if (((struct sccb_card *)pCurrCard)->currentSCCB == + NULL) { - FPT_queueSearchSelect(((PSCCBcard)pCurrCard),thisCard); - } + FPT_queueSearchSelect(((struct sccb_card *) + pCurrCard), thisCard); + } - if (((PSCCBcard)pCurrCard)->currentSCCB != NULL) { - ((PSCCBcard)pCurrCard)->globalFlags &= ~F_NEW_SCCB_CMD; - FPT_ssel(ioport,thisCard); - } + if (((struct sccb_card *)pCurrCard)->currentSCCB != + NULL) { + ((struct sccb_card *)pCurrCard)->globalFlags &= + ~F_NEW_SCCB_CMD; + FPT_ssel(ioport, thisCard); + } - break; + break; - } + } - } /*end while */ + } /*end while */ - MENABLE_INT(ioport); + MENABLE_INT(ioport); - return(0); + return 0; } /*--------------------------------------------------------------------- @@ -2529,150 +2010,149 @@ static int SccbMgr_isr(ULONG pCurrCard) * processing time. * *---------------------------------------------------------------------*/ -static UCHAR FPT_SccbMgr_bad_isr(ULONG p_port, UCHAR p_card, - PSCCBcard pCurrCard, USHORT p_int) +static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port, + unsigned char p_card, + struct sccb_card *pCurrCard, + unsigned short p_int) { - UCHAR temp, ScamFlg; - PSCCBMgr_tar_info currTar_Info; - PNVRamInfo pCurrNvRam; - - - if (RD_HARPOON(p_port+hp_ext_status) & - (BM_FORCE_OFF | PCI_DEV_TMOUT | BM_PARITY_ERR | PIO_OVERRUN) ) - { + unsigned char temp, ScamFlg; + struct sccb_mgr_tar_info *currTar_Info; + struct nvram_info *pCurrNvRam; - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) - { + if (RD_HARPOON(p_port + hp_ext_status) & + (BM_FORCE_OFF | PCI_DEV_TMOUT | BM_PARITY_ERR | PIO_OVERRUN)) { - FPT_hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB); - } + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) { - if (RD_HARPOON(p_port+hp_pci_stat_cfg) & REC_MASTER_ABORT) - - { - WR_HARPOON(p_port+hp_pci_stat_cfg, - (RD_HARPOON(p_port+hp_pci_stat_cfg) & ~REC_MASTER_ABORT)); - - WR_HARPOON(p_port+hp_host_blk_cnt, 0x00); - - } - - if (pCurrCard->currentSCCB != NULL) - { + FPT_hostDataXferAbort(p_port, p_card, + pCurrCard->currentSCCB); + } - if (!pCurrCard->currentSCCB->HostStatus) - pCurrCard->currentSCCB->HostStatus = SCCB_BM_ERR; + if (RD_HARPOON(p_port + hp_pci_stat_cfg) & REC_MASTER_ABORT) + { + WR_HARPOON(p_port + hp_pci_stat_cfg, + (RD_HARPOON(p_port + hp_pci_stat_cfg) & + ~REC_MASTER_ABORT)); - FPT_sxfrp(p_port,p_card); + WR_HARPOON(p_port + hp_host_blk_cnt, 0x00); - temp = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) & - (EXT_ARB_ACK | SCSI_TERM_ENA_H)); - WR_HARPOON(p_port+hp_ee_ctrl, ((UCHAR)temp | SEE_MS | SEE_CS)); - WR_HARPOON(p_port+hp_ee_ctrl, temp); + } - if (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - FPT_phaseDecode(p_port,p_card); - } - } - } + if (pCurrCard->currentSCCB != NULL) { + if (!pCurrCard->currentSCCB->HostStatus) + pCurrCard->currentSCCB->HostStatus = + SCCB_BM_ERR; - else if (p_int & RESET) - { + FPT_sxfrp(p_port, p_card); - WR_HARPOON(p_port+hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(p_port+hp_sys_ctrl, 0x00); - if (pCurrCard->currentSCCB != NULL) { + temp = (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)); + WR_HARPOON(p_port + hp_ee_ctrl, + ((unsigned char)temp | SEE_MS | SEE_CS)); + WR_HARPOON(p_port + hp_ee_ctrl, temp); - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + if (! + (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | RESET))) { + FPT_phaseDecode(p_port, p_card); + } + } + } - FPT_hostDataXferAbort(p_port,p_card, pCurrCard->currentSCCB); - } + else if (p_int & RESET) { + WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); + WR_HARPOON(p_port + hp_sys_ctrl, 0x00); + if (pCurrCard->currentSCCB != NULL) { - DISABLE_AUTO(p_port); + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) - FPT_sresb(p_port,p_card); + FPT_hostDataXferAbort(p_port, p_card, + pCurrCard->currentSCCB); + } - while(RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST) {} + DISABLE_AUTO(p_port); - pCurrNvRam = pCurrCard->pNvRamInfo; - if(pCurrNvRam){ - ScamFlg = pCurrNvRam->niScamConf; - } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(p_port, SCAM_CONFIG/2); - } + FPT_sresb(p_port, p_card); - FPT_XbowInit(p_port, ScamFlg); + while (RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST) { + } - FPT_scini(p_card, pCurrCard->ourId, 0); + pCurrNvRam = pCurrCard->pNvRamInfo; + if (pCurrNvRam) { + ScamFlg = pCurrNvRam->niScamConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(p_port, + SCAM_CONFIG / 2); + } - return(0xFF); - } + FPT_XbowInit(p_port, ScamFlg); + FPT_scini(p_card, pCurrCard->ourId, 0); - else if (p_int & FIFO) { + return 0xFF; + } - WRW_HARPOON((p_port+hp_intstat), FIFO); + else if (p_int & FIFO) { - if (pCurrCard->currentSCCB != NULL) - FPT_sxfrp(p_port,p_card); - } + WRW_HARPOON((p_port + hp_intstat), FIFO); - else if (p_int & TIMEOUT) - { + if (pCurrCard->currentSCCB != NULL) + FPT_sxfrp(p_port, p_card); + } - DISABLE_AUTO(p_port); + else if (p_int & TIMEOUT) { - WRW_HARPOON((p_port+hp_intstat), - (PROG_HLT | TIMEOUT | SEL |BUS_FREE | PHASE | IUNKWN)); + DISABLE_AUTO(p_port); - pCurrCard->currentSCCB->HostStatus = SCCB_SELECTION_TIMEOUT; + WRW_HARPOON((p_port + hp_intstat), + (PROG_HLT | TIMEOUT | SEL | BUS_FREE | PHASE | + IUNKWN)); + pCurrCard->currentSCCB->HostStatus = SCCB_SELECTION_TIMEOUT; - currTar_Info = &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; - if((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - currTar_Info->TarLUNBusy[pCurrCard->currentSCCB->Lun] = 0; + currTar_Info = + &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; + if ((pCurrCard->globalFlags & F_CONLUN_IO) + && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + currTar_Info->TarLUNBusy[pCurrCard->currentSCCB->Lun] = + 0; else - currTar_Info->TarLUNBusy[0] = 0; - + currTar_Info->TarLUNBusy[0] = 0; - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI, + currTar_Info); - FPT_queueCmdComplete(pCurrCard, pCurrCard->currentSCCB, p_card); + FPT_queueCmdComplete(pCurrCard, pCurrCard->currentSCCB, p_card); - } + } - else if (p_int & SCAM_SEL) - { + else if (p_int & SCAM_SEL) { - FPT_scarb(p_port,LEVEL2_TAR); - FPT_scsel(p_port); - FPT_scasid(p_card, p_port); + FPT_scarb(p_port, LEVEL2_TAR); + FPT_scsel(p_port); + FPT_scasid(p_card, p_port); - FPT_scbusf(p_port); + FPT_scbusf(p_port); - WRW_HARPOON((p_port+hp_intstat), SCAM_SEL); - } + WRW_HARPOON((p_port + hp_intstat), SCAM_SEL); + } - return(0x00); + return 0x00; } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2683,21 +2163,19 @@ static UCHAR FPT_SccbMgr_bad_isr(ULONG p static void FPT_SccbMgrTableInitAll() { - UCHAR thisCard; + unsigned char thisCard; - for (thisCard = 0; thisCard < MAX_CARDS; thisCard++) - { - FPT_SccbMgrTableInitCard(&FPT_BL_Card[thisCard],thisCard); + for (thisCard = 0; thisCard < MAX_CARDS; thisCard++) { + FPT_SccbMgrTableInitCard(&FPT_BL_Card[thisCard], thisCard); - FPT_BL_Card[thisCard].ioPort = 0x00; - FPT_BL_Card[thisCard].cardInfo = NULL; - FPT_BL_Card[thisCard].cardIndex = 0xFF; - FPT_BL_Card[thisCard].ourId = 0x00; - FPT_BL_Card[thisCard].pNvRamInfo = NULL; - } + FPT_BL_Card[thisCard].ioPort = 0x00; + FPT_BL_Card[thisCard].cardInfo = NULL; + FPT_BL_Card[thisCard].cardIndex = 0xFF; + FPT_BL_Card[thisCard].ourId = 0x00; + FPT_BL_Card[thisCard].pNvRamInfo = NULL; + } } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2706,33 +2184,30 @@ static void FPT_SccbMgrTableInitAll() * *---------------------------------------------------------------------*/ -static void FPT_SccbMgrTableInitCard(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_SccbMgrTableInitCard(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR scsiID, qtag; + unsigned char scsiID, qtag; - for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) - { + for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) { FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; } - for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) - { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus = 0; - FPT_sccbMgrTbl[p_card][scsiID].TarEEValue = 0; - FPT_SccbMgrTableInitTarget(p_card, scsiID); - } + for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) { + FPT_sccbMgrTbl[p_card][scsiID].TarStatus = 0; + FPT_sccbMgrTbl[p_card][scsiID].TarEEValue = 0; + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } - pCurrCard->scanIndex = 0x00; - pCurrCard->currentSCCB = NULL; - pCurrCard->globalFlags = 0x00; - pCurrCard->cmdCounter = 0x00; + pCurrCard->scanIndex = 0x00; + pCurrCard->currentSCCB = NULL; + pCurrCard->globalFlags = 0x00; + pCurrCard->cmdCounter = 0x00; pCurrCard->tagQ_Lst = 0x01; - pCurrCard->discQCount = 0; - + pCurrCard->discQCount = 0; } - /*--------------------------------------------------------------------- * * Function: SccbMgrTableInit @@ -2741,11 +2216,12 @@ static void FPT_SccbMgrTableInitCard(PSC * *---------------------------------------------------------------------*/ -static void FPT_SccbMgrTableInitTarget(UCHAR p_card, UCHAR target) +static void FPT_SccbMgrTableInitTarget(unsigned char p_card, + unsigned char target) { - UCHAR lun, qtag; - PSCCBMgr_tar_info currTar_Info; + unsigned char lun, qtag; + struct sccb_mgr_tar_info *currTar_Info; currTar_Info = &FPT_sccbMgrTbl[p_card][target]; @@ -2757,19 +2233,15 @@ static void FPT_SccbMgrTableInitTarget(U currTar_Info->TarTagQ_Cnt = 0; currTar_Info->TarLUN_CA = 0; - - for (lun = 0; lun < MAX_LUN; lun++) - { + for (lun = 0; lun < MAX_LUN; lun++) { currTar_Info->TarLUNBusy[lun] = 0; currTar_Info->LunDiscQ_Idx[lun] = 0; } - for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) - { - if(FPT_BL_Card[p_card].discQ_Tbl[qtag] != NULL) - { - if(FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == target) - { + for (qtag = 0; qtag < QUEUE_DEPTH; qtag++) { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] != NULL) { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == + target) { FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; FPT_BL_Card[p_card].discQCount--; } @@ -2777,7 +2249,6 @@ static void FPT_SccbMgrTableInitTarget(U } } - /*--------------------------------------------------------------------- * * Function: sfetm @@ -2787,71 +2258,66 @@ static void FPT_SccbMgrTableInitTarget(U * *---------------------------------------------------------------------*/ -static UCHAR FPT_sfm(ULONG port, PSCCB pCurrSCCB) +static unsigned char FPT_sfm(unsigned long port, struct sccb *pCurrSCCB) { - UCHAR message; - USHORT TimeOutLoop; + unsigned char message; + unsigned short TimeOutLoop; TimeOutLoop = 0; - while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (TimeOutLoop++ < 20000) ){} - - - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (TimeOutLoop++ < 20000)) { + } - message = RD_HARPOON(port+hp_scsidata_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_scsisig, SCSI_ACK + S_MSGI_PH); + message = RD_HARPOON(port + hp_scsidata_0); + WR_HARPOON(port + hp_scsisig, SCSI_ACK + S_MSGI_PH); if (TimeOutLoop > 20000) - message = 0x00; /* force message byte = 0 if Time Out on Req */ + message = 0x00; /* force message byte = 0 if Time Out on Req */ - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (RD_HARPOON(port+hp_addstat) & SCSI_PAR_ERR)) - { - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - WR_HARPOON(port+hp_xferstat, 0); - WR_HARPOON(port+hp_fiforead, 0); - WR_HARPOON(port+hp_fifowrite, 0); - if (pCurrSCCB != NULL) - { + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (RD_HARPOON(port + hp_addstat) & SCSI_PAR_ERR)) { + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_xferstat, 0); + WR_HARPOON(port + hp_fiforead, 0); + WR_HARPOON(port + hp_fifowrite, 0); + if (pCurrSCCB != NULL) { pCurrSCCB->Sccb_scsimsg = SMPARITY; } message = 0x00; - do - { + do { ACCEPT_MSG_ATN(port); TimeOutLoop = 0; - while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (TimeOutLoop++ < 20000) ){} - if (TimeOutLoop > 20000) - { - WRW_HARPOON((port+hp_intstat), PARITY); - return(message); + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (TimeOutLoop++ < 20000)) { } - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) != S_MSGI_PH) - { - WRW_HARPOON((port+hp_intstat), PARITY); - return(message); + if (TimeOutLoop > 20000) { + WRW_HARPOON((port + hp_intstat), PARITY); + return message; + } + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) != + S_MSGI_PH) { + WRW_HARPOON((port + hp_intstat), PARITY); + return message; } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - RD_HARPOON(port+hp_scsidata_0); + RD_HARPOON(port + hp_scsidata_0); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); - }while(1); + } while (1); } - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - WR_HARPOON(port+hp_xferstat, 0); - WR_HARPOON(port+hp_fiforead, 0); - WR_HARPOON(port+hp_fifowrite, 0); - return(message); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_xferstat, 0); + WR_HARPOON(port + hp_fiforead, 0); + WR_HARPOON(port + hp_fifowrite, 0); + return message; } - /*--------------------------------------------------------------------- * * Function: FPT_ssel @@ -2860,102 +2326,90 @@ static UCHAR FPT_sfm(ULONG port, PSCCB p * *---------------------------------------------------------------------*/ -static void FPT_ssel(ULONG port, UCHAR p_card) +static void FPT_ssel(unsigned long port, unsigned char p_card) { - UCHAR auto_loaded, i, target, *theCCB; - - ULONG cdb_reg; - PSCCBcard CurrCard; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - UCHAR lastTag, lun; + unsigned char auto_loaded, i, target, *theCCB; - CurrCard = &FPT_BL_Card[p_card]; - currSCCB = CurrCard->currentSCCB; - target = currSCCB->TargID; - currTar_Info = &FPT_sccbMgrTbl[p_card][target]; - lastTag = CurrCard->tagQ_Lst; + unsigned long cdb_reg; + struct sccb_card *CurrCard; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + unsigned char lastTag, lun; - ARAM_ACCESS(port); + CurrCard = &FPT_BL_Card[p_card]; + currSCCB = CurrCard->currentSCCB; + target = currSCCB->TargID; + currTar_Info = &FPT_sccbMgrTbl[p_card][target]; + lastTag = CurrCard->tagQ_Lst; + ARAM_ACCESS(port); if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) currSCCB->ControlByte &= ~F_USE_CMD_Q; - if(((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) + if (((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - lun = currSCCB->Lun; + lun = currSCCB->Lun; else lun = 0; + if (CurrCard->globalFlags & F_TAG_STARTED) { + if (!(currSCCB->ControlByte & F_USE_CMD_Q)) { + if ((currTar_Info->TarLUN_CA == 0) + && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) + == TAG_Q_TRYING)) { + + if (currTar_Info->TarTagQ_Cnt != 0) { + currTar_Info->TarLUNBusy[lun] = 1; + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - if (CurrCard->globalFlags & F_TAG_STARTED) - { - if (!(currSCCB->ControlByte & F_USE_CMD_Q)) - { - if ((currTar_Info->TarLUN_CA == 0) - && ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) - == TAG_Q_TRYING)) - { - - if (currTar_Info->TarTagQ_Cnt !=0) - { - currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - else { - currTar_Info->TarLUNBusy[lun] = 1; - } - - } /*End non-tagged */ - - else { - currTar_Info->TarLUNBusy[lun] = 1; - } - - } /*!Use cmd Q Tagged */ - - else { - if (currTar_Info->TarLUN_CA == 1) - { - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - currTar_Info->TarLUNBusy[lun] = 1; + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - } /*else use cmd Q tagged */ + } + /*End non-tagged */ + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - } /*if glob tagged started */ + } + /*!Use cmd Q Tagged */ + else { + if (currTar_Info->TarLUN_CA == 1) { + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - else { - currTar_Info->TarLUNBusy[lun] = 1; - } + currTar_Info->TarLUNBusy[lun] = 1; + } /*else use cmd Q tagged */ + } + /*if glob tagged started */ + else { + currTar_Info->TarLUNBusy[lun] = 1; + } - if((((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - || (!(currSCCB->ControlByte & F_USE_CMD_Q)))) - { - if(CurrCard->discQCount >= QUEUE_DEPTH) - { + if ((((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + || (!(currSCCB->ControlByte & F_USE_CMD_Q)))) { + if (CurrCard->discQCount >= QUEUE_DEPTH) { currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); + FPT_queueSelectFail(CurrCard, p_card); SGRAM_ACCESS(port); return; } - for (i = 1; i < QUEUE_DEPTH; i++) - { - if (++lastTag >= QUEUE_DEPTH) lastTag = 1; - if (CurrCard->discQ_Tbl[lastTag] == NULL) - { + for (i = 1; i < QUEUE_DEPTH; i++) { + if (++lastTag >= QUEUE_DEPTH) + lastTag = 1; + if (CurrCard->discQ_Tbl[lastTag] == NULL) { CurrCard->tagQ_Lst = lastTag; currTar_Info->LunDiscQ_Idx[lun] = lastTag; CurrCard->discQ_Tbl[lastTag] = currSCCB; @@ -2963,206 +2417,206 @@ static void FPT_ssel(ULONG port, UCHAR p break; } } - if(i == QUEUE_DEPTH) - { + if (i == QUEUE_DEPTH) { currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); + FPT_queueSelectFail(CurrCard, p_card); SGRAM_ACCESS(port); return; } } + auto_loaded = 0; + WR_HARPOON(port + hp_select_id, target); + WR_HARPOON(port + hp_gp_reg_3, target); /* Use by new automation logic */ - auto_loaded = 0; + if (currSCCB->OperationCode == RESET_COMMAND) { + WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~DISC_PRIV))); - WR_HARPOON(port+hp_select_id, target); - WR_HARPOON(port+hp_gp_reg_3, target); /* Use by new automation logic */ + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + NP); - if (currSCCB->OperationCode == RESET_COMMAND) { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+ - (currSCCB->Sccb_idmsg & ~DISC_PRIV))); + currSCCB->Sccb_scsimsg = SMDEV_RESET; - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+NP); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); + auto_loaded = 1; + currSCCB->Sccb_scsistat = SELECT_BDR_ST; - currSCCB->Sccb_scsimsg = SMDEV_RESET; + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - auto_loaded = 1; - currSCCB->Sccb_scsistat = SELECT_BDR_ST; + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } + FPT_sssyncv(port, target, NARROW_SCSI, currTar_Info); + FPT_SccbMgrTableInitTarget(p_card, target); - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + } - FPT_sssyncv(port, target, NARROW_SCSI,currTar_Info); - FPT_SccbMgrTableInitTarget(p_card, target); + else if (currSCCB->Sccb_scsistat == ABORT_ST) { + WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~DISC_PRIV))); - } + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - else if(currSCCB->Sccb_scsistat == ABORT_ST) - { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+ - (currSCCB->Sccb_idmsg & ~DISC_PRIV))); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + + (((unsigned + char)(currSCCB-> + ControlByte & + TAG_TYPE_MASK) + >> 6) | (unsigned char) + 0x20))); + WRW_HARPOON((port + SYNC_MSGS + 2), + (MPM_OP + AMSG_OUT + currSCCB->Sccb_tag)); + WRW_HARPOON((port + SYNC_MSGS + 4), (BRH_OP + ALWAYS + NP)); - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); + auto_loaded = 1; - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+ - (((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK) - >> 6) | (UCHAR)0x20))); - WRW_HARPOON((port+SYNC_MSGS+2), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_tag)); - WRW_HARPOON((port+SYNC_MSGS+4), (BRH_OP+ALWAYS+NP )); - - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - auto_loaded = 1; - - } - - else if (!(currTar_Info->TarStatus & WIDE_NEGOCIATED)) { - auto_loaded = FPT_siwidn(port,p_card); - currSCCB->Sccb_scsistat = SELECT_WN_ST; - } + } - else if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) - == SYNC_SUPPORTED)) { - auto_loaded = FPT_sisyncn(port,p_card, 0); - currSCCB->Sccb_scsistat = SELECT_SN_ST; - } + else if (!(currTar_Info->TarStatus & WIDE_NEGOCIATED)) { + auto_loaded = FPT_siwidn(port, p_card); + currSCCB->Sccb_scsistat = SELECT_WN_ST; + } + else if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) + == SYNC_SUPPORTED)) { + auto_loaded = FPT_sisyncn(port, p_card, 0); + currSCCB->Sccb_scsistat = SELECT_SN_ST; + } - if (!auto_loaded) - { + if (!auto_loaded) { - if (currSCCB->ControlByte & F_USE_CMD_Q) - { + if (currSCCB->ControlByte & F_USE_CMD_Q) { - CurrCard->globalFlags |= F_TAG_STARTED; + CurrCard->globalFlags |= F_TAG_STARTED; - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) - == TAG_Q_REJECT) - { - currSCCB->ControlByte &= ~F_USE_CMD_Q; + if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) + == TAG_Q_REJECT) { + currSCCB->ControlByte &= ~F_USE_CMD_Q; - /* Fix up the start instruction with a jump to - Non-Tag-CMD handling */ - WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD); + /* Fix up the start instruction with a jump to + Non-Tag-CMD handling */ + WRW_HARPOON((port + ID_MSG_STRT), + BRH_OP + ALWAYS + NTCMD); - WRW_HARPOON((port+NON_TAG_ID_MSG), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + WRW_HARPOON((port + NON_TAG_ID_MSG), + (MPM_OP + AMSG_OUT + + currSCCB->Sccb_idmsg)); - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); - /* Setup our STATE so we know what happend when - the wheels fall off. */ - currSCCB->Sccb_scsistat = SELECT_ST; + /* Setup our STATE so we know what happend when + the wheels fall off. */ + currSCCB->Sccb_scsistat = SELECT_ST; - currTar_Info->TarLUNBusy[lun] = 1; - } + currTar_Info->TarLUNBusy[lun] = 1; + } - else - { - WRW_HARPOON((port+ID_MSG_STRT), (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + else { + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + currSCCB->Sccb_idmsg)); - WRW_HARPOON((port+ID_MSG_STRT+2), (MPM_OP+AMSG_OUT+ - (((UCHAR)(currSCCB->ControlByte & TAG_TYPE_MASK) - >> 6) | (UCHAR)0x20))); + WRW_HARPOON((port + ID_MSG_STRT + 2), + (MPM_OP + AMSG_OUT + + (((unsigned char)(currSCCB-> + ControlByte & + TAG_TYPE_MASK) + >> 6) | (unsigned char)0x20))); - for (i = 1; i < QUEUE_DEPTH; i++) - { - if (++lastTag >= QUEUE_DEPTH) lastTag = 1; - if (CurrCard->discQ_Tbl[lastTag] == NULL) - { - WRW_HARPOON((port+ID_MSG_STRT+6), - (MPM_OP+AMSG_OUT+lastTag)); + for (i = 1; i < QUEUE_DEPTH; i++) { + if (++lastTag >= QUEUE_DEPTH) + lastTag = 1; + if (CurrCard->discQ_Tbl[lastTag] == + NULL) { + WRW_HARPOON((port + + ID_MSG_STRT + 6), + (MPM_OP + AMSG_OUT + + lastTag)); CurrCard->tagQ_Lst = lastTag; currSCCB->Sccb_tag = lastTag; - CurrCard->discQ_Tbl[lastTag] = currSCCB; + CurrCard->discQ_Tbl[lastTag] = + currSCCB; CurrCard->discQCount++; break; } } + if (i == QUEUE_DEPTH) { + currTar_Info->TarLUNBusy[lun] = 1; + FPT_queueSelectFail(CurrCard, p_card); + SGRAM_ACCESS(port); + return; + } - if ( i == QUEUE_DEPTH ) - { - currTar_Info->TarLUNBusy[lun] = 1; - FPT_queueSelectFail(CurrCard,p_card); - SGRAM_ACCESS(port); - return; - } - - currSCCB->Sccb_scsistat = SELECT_Q_ST; - - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - } - } - - else - { - - WRW_HARPOON((port+ID_MSG_STRT),BRH_OP+ALWAYS+NTCMD); + currSCCB->Sccb_scsistat = SELECT_Q_ST; - WRW_HARPOON((port+NON_TAG_ID_MSG), - (MPM_OP+AMSG_OUT+currSCCB->Sccb_idmsg)); + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + } + } - currSCCB->Sccb_scsistat = SELECT_ST; + else { - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - } + WRW_HARPOON((port + ID_MSG_STRT), + BRH_OP + ALWAYS + NTCMD); + WRW_HARPOON((port + NON_TAG_ID_MSG), + (MPM_OP + AMSG_OUT + currSCCB->Sccb_idmsg)); - theCCB = (UCHAR *)&currSCCB->Cdb[0]; + currSCCB->Sccb_scsistat = SELECT_ST; - cdb_reg = port + CMD_STRT; + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + } - for (i=0; i < currSCCB->CdbLength; i++) - { - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + *theCCB)); - cdb_reg +=2; - theCCB++; - } + theCCB = (unsigned char *)&currSCCB->Cdb[0]; - if (currSCCB->CdbLength != TWELVE_BYTE_CMD) - WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+ NP)); + cdb_reg = port + CMD_STRT; - } /* auto_loaded */ + for (i = 0; i < currSCCB->CdbLength; i++) { + WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + *theCCB)); + cdb_reg += 2; + theCCB++; + } - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); + if (currSCCB->CdbLength != TWELVE_BYTE_CMD) + WRW_HARPOON(cdb_reg, (BRH_OP + ALWAYS + NP)); - WRW_HARPOON((port+hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE)); + } + /* auto_loaded */ + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); + WR_HARPOON(port + hp_xferstat, 0x00); - WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT)); + WRW_HARPOON((port + hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE)); + WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT)); - if (!(currSCCB->Sccb_MGRFlags & F_DEV_SELECTED)) - { - WR_HARPOON(port+hp_scsictrl_0, (SEL_TAR | ENA_ATN | ENA_RESEL | ENA_SCAM_SEL)); - } - else - { + if (!(currSCCB->Sccb_MGRFlags & F_DEV_SELECTED)) { + WR_HARPOON(port + hp_scsictrl_0, + (SEL_TAR | ENA_ATN | ENA_RESEL | ENA_SCAM_SEL)); + } else { -/* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (UCHAR)0x1F); +/* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (unsigned char)0x1F); auto_loaded |= AUTO_IMMED; */ - auto_loaded = AUTO_IMMED; + auto_loaded = AUTO_IMMED; - DISABLE_AUTO(port); + DISABLE_AUTO(port); - WR_HARPOON(port+hp_autostart_3, auto_loaded); - } + WR_HARPOON(port + hp_autostart_3, auto_loaded); + } - SGRAM_ACCESS(port); + SGRAM_ACCESS(port); } - /*--------------------------------------------------------------------- * * Function: FPT_sres @@ -3171,303 +2625,276 @@ static void FPT_ssel(ULONG port, UCHAR p * *---------------------------------------------------------------------*/ -static void FPT_sres(ULONG port, UCHAR p_card, PSCCBcard pCurrCard) +static void FPT_sres(unsigned long port, unsigned char p_card, + struct sccb_card *pCurrCard) { - UCHAR our_target, message, lun = 0, tag, msgRetryCount; - - - PSCCBMgr_tar_info currTar_Info; - PSCCB currSCCB; - + unsigned char our_target, message, lun = 0, tag, msgRetryCount; + struct sccb_mgr_tar_info *currTar_Info; + struct sccb *currSCCB; - - if(pCurrCard->currentSCCB != NULL) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; + if (pCurrCard->currentSCCB != NULL) { + currTar_Info = + &FPT_sccbMgrTbl[p_card][pCurrCard->currentSCCB->TargID]; DISABLE_AUTO(port); - - WR_HARPOON((port+hp_scsictrl_0),(ENA_RESEL | ENA_SCAM_SEL)); - + WR_HARPOON((port + hp_scsictrl_0), (ENA_RESEL | ENA_SCAM_SEL)); currSCCB = pCurrCard->currentSCCB; - if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { currTar_Info->TarStatus &= ~TAR_WIDE_MASK; currSCCB->Sccb_scsistat = BUS_FREE_ST; } - if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { currTar_Info->TarStatus &= ~TAR_SYNC_MASK; currSCCB->Sccb_scsistat = BUS_FREE_ST; } - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - currTar_Info->TarLUNBusy[currSCCB->Lun] = 0; - if(currSCCB->Sccb_scsistat != ABORT_ST) - { + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { + currTar_Info->TarLUNBusy[currSCCB->Lun] = 0; + if (currSCCB->Sccb_scsistat != ABORT_ST) { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[currSCCB->Lun]] - = NULL; - } - } - else - { - currTar_Info->TarLUNBusy[0] = 0; - if(currSCCB->Sccb_tag) - { - if(currSCCB->Sccb_scsistat != ABORT_ST) - { - pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL; - } - }else - { - if(currSCCB->Sccb_scsistat != ABORT_ST) - { - pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL; - } + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[currSCCB-> + Lun]] + = NULL; + } + } else { + currTar_Info->TarLUNBusy[0] = 0; + if (currSCCB->Sccb_tag) { + if (currSCCB->Sccb_scsistat != ABORT_ST) { + pCurrCard->discQCount--; + pCurrCard->discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; + } + } else { + if (currSCCB->Sccb_scsistat != ABORT_ST) { + pCurrCard->discQCount--; + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = + NULL; + } } } - FPT_queueSelectFail(&FPT_BL_Card[p_card],p_card); + FPT_queueSelectFail(&FPT_BL_Card[p_card], p_card); } - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); - - our_target = (UCHAR)(RD_HARPOON(port+hp_select_id) >> 4); + our_target = (unsigned char)(RD_HARPOON(port + hp_select_id) >> 4); currTar_Info = &FPT_sccbMgrTbl[p_card][our_target]; - msgRetryCount = 0; - do - { + do { currTar_Info = &FPT_sccbMgrTbl[p_card][our_target]; tag = 0; + while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) { + if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) { - while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) - { - if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) - { - - WRW_HARPOON((port+hp_intstat), PHASE); + WRW_HARPOON((port + hp_intstat), PHASE); return; } } - WRW_HARPOON((port+hp_intstat), PHASE); - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) - { - - message = FPT_sfm(port,pCurrCard->currentSCCB); - if (message) - { - - if (message <= (0x80 | LUN_MASK)) - { - lun = message & (UCHAR)LUN_MASK; - - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING) - { - if (currTar_Info->TarTagQ_Cnt != 0) - { + WRW_HARPOON((port + hp_intstat), PHASE); + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) { - if (!(currTar_Info->TarLUN_CA)) - { - ACCEPT_MSG(port); /*Release the ACK for ID msg. */ + message = FPT_sfm(port, pCurrCard->currentSCCB); + if (message) { + if (message <= (0x80 | LUN_MASK)) { + lun = message & (unsigned char)LUN_MASK; - message = FPT_sfm(port,pCurrCard->currentSCCB); - if (message) - { - ACCEPT_MSG(port); + if ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING) { + if (currTar_Info->TarTagQ_Cnt != + 0) { + + if (! + (currTar_Info-> + TarLUN_CA)) { + ACCEPT_MSG(port); /*Release the ACK for ID msg. */ + + message = + FPT_sfm + (port, + pCurrCard-> + currentSCCB); + if (message) { + ACCEPT_MSG + (port); } else - message = 0; - - if(message != 0) - { - tag = FPT_sfm(port,pCurrCard->currentSCCB); + message + = 0; - if (!(tag)) - message = 0; + if (message != + 0) { + tag = + FPT_sfm + (port, + pCurrCard-> + currentSCCB); + + if (! + (tag)) + message + = + 0; } - } /*C.A. exists! */ - - } /*End Q cnt != 0 */ - - } /*End Tag cmds supported! */ - - } /*End valid ID message. */ - - else - { + } + /*C.A. exists! */ + } + /*End Q cnt != 0 */ + } + /*End Tag cmds supported! */ + } + /*End valid ID message. */ + else { ACCEPT_MSG_ATN(port); } - } /* End good id message. */ - - else - { + } + /* End good id message. */ + else { message = 0; } - } - else - { + } else { ACCEPT_MSG_ATN(port); - while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) && - !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) && - (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ; + while (! + (RDW_HARPOON((port + hp_intstat)) & + (PHASE | RESET)) + && !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) + && (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ; return; } - if(message == 0) - { + if (message == 0) { msgRetryCount++; - if(msgRetryCount == 1) - { + if (msgRetryCount == 1) { FPT_SendMsg(port, SMPARITY); - } - else - { + } else { FPT_SendMsg(port, SMDEV_RESET); - FPT_sssyncv(port, our_target, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, our_target, NARROW_SCSI, + currTar_Info); - if (FPT_sccbMgrTbl[p_card][our_target].TarEEValue & EE_SYNC_MASK) - { - - FPT_sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_SYNC_MASK; + if (FPT_sccbMgrTbl[p_card][our_target]. + TarEEValue & EE_SYNC_MASK) { + + FPT_sccbMgrTbl[p_card][our_target]. + TarStatus &= ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][our_target].TarEEValue & EE_WIDE_SCSI) - { + if (FPT_sccbMgrTbl[p_card][our_target]. + TarEEValue & EE_WIDE_SCSI) { - FPT_sccbMgrTbl[p_card][our_target].TarStatus &= ~TAR_WIDE_MASK; + FPT_sccbMgrTbl[p_card][our_target]. + TarStatus &= ~TAR_WIDE_MASK; } - - FPT_queueFlushTargSccb(p_card, our_target, SCCB_COMPLETE); - FPT_SccbMgrTableInitTarget(p_card,our_target); + FPT_queueFlushTargSccb(p_card, our_target, + SCCB_COMPLETE); + FPT_SccbMgrTableInitTarget(p_card, our_target); return; } } - }while(message == 0); + } while (message == 0); - - - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { currTar_Info->TarLUNBusy[lun] = 1; - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[lun]]; - if(pCurrCard->currentSCCB != NULL) - { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[lun]]; + if (pCurrCard->currentSCCB != NULL) { ACCEPT_MSG(port); - } - else - { + } else { ACCEPT_MSG_ATN(port); } - } - else - { + } else { currTar_Info->TarLUNBusy[0] = 1; - - if (tag) - { - if (pCurrCard->discQ_Tbl[tag] != NULL) - { - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[tag]; - currTar_Info->TarTagQ_Cnt--; + if (tag) { + if (pCurrCard->discQ_Tbl[tag] != NULL) { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[tag]; + currTar_Info->TarTagQ_Cnt--; ACCEPT_MSG(port); + } else { + ACCEPT_MSG_ATN(port); } - else - { - ACCEPT_MSG_ATN(port); - } - }else - { - pCurrCard->currentSCCB = pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]]; - if(pCurrCard->currentSCCB != NULL) - { + } else { + pCurrCard->currentSCCB = + pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]]; + if (pCurrCard->currentSCCB != NULL) { ACCEPT_MSG(port); - } - else - { + } else { ACCEPT_MSG_ATN(port); } } } - if(pCurrCard->currentSCCB != NULL) - { - if(pCurrCard->currentSCCB->Sccb_scsistat == ABORT_ST) - { - /* During Abort Tag command, the target could have got re-selected - and completed the command. Check the select Q and remove the CCB - if it is in the Select Q */ + if (pCurrCard->currentSCCB != NULL) { + if (pCurrCard->currentSCCB->Sccb_scsistat == ABORT_ST) { + /* During Abort Tag command, the target could have got re-selected + and completed the command. Check the select Q and remove the CCB + if it is in the Select Q */ FPT_queueFindSccb(pCurrCard->currentSCCB, p_card); } } - - while (!(RDW_HARPOON((port+hp_intstat)) & (PHASE | RESET)) && - !(RD_HARPOON(port+hp_scsisig) & SCSI_REQ) && - (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) ; + while (!(RDW_HARPOON((port + hp_intstat)) & (PHASE | RESET)) && + !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) && + (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ; } -static void FPT_SendMsg(ULONG port, UCHAR message) +static void FPT_SendMsg(unsigned long port, unsigned char message) { - while(!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) - { - if (! (RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) - { + while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) { + if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) { - WRW_HARPOON((port+hp_intstat), PHASE); + WRW_HARPOON((port + hp_intstat), PHASE); return; } } - WRW_HARPOON((port+hp_intstat), PHASE); - if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) - { - WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - + WRW_HARPOON((port + hp_intstat), PHASE); + if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) { + WRW_HARPOON((port + hp_intstat), + (BUS_FREE | PHASE | XFER_CNT_0)); - WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(port+hp_scsidata_0,message); + WR_HARPOON(port + hp_scsidata_0, message); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); ACCEPT_MSG(port); - WR_HARPOON(port+hp_portctrl_0, 0x00); + WR_HARPOON(port + hp_portctrl_0, 0x00); if ((message == SMABORT) || (message == SMDEV_RESET) || - (message == SMABORT_TAG) ) - { - while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | PHASE))) {} + (message == SMABORT_TAG)) { + while (! + (RDW_HARPOON((port + hp_intstat)) & + (BUS_FREE | PHASE))) { + } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + WRW_HARPOON((port + hp_intstat), BUS_FREE); } } } @@ -3481,178 +2908,180 @@ static void FPT_SendMsg(ULONG port, UCHA * target device. * *---------------------------------------------------------------------*/ -static void FPT_sdecm(UCHAR message, ULONG port, UCHAR p_card) +static void FPT_sdecm(unsigned char message, unsigned long port, + unsigned char p_card) { - PSCCB currSCCB; - PSCCBcard CurrCard; - PSCCBMgr_tar_info currTar_Info; + struct sccb *currSCCB; + struct sccb_card *CurrCard; + struct sccb_mgr_tar_info *currTar_Info; CurrCard = &FPT_BL_Card[p_card]; currSCCB = CurrCard->currentSCCB; currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - if (message == SMREST_DATA_PTR) - { - if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET)) - { + if (message == SMREST_DATA_PTR) { + if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET)) { currSCCB->Sccb_ATC = currSCCB->Sccb_savedATC; FPT_hostDataXferRestart(currSCCB); } ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - else if (message == SMCMD_COMP) - { - + else if (message == SMCMD_COMP) { - if (currSCCB->Sccb_scsistat == SELECT_Q_ST) - { - currTar_Info->TarStatus &= ~(UCHAR)TAR_TAG_Q_MASK; - currTar_Info->TarStatus |= (UCHAR)TAG_Q_REJECT; + if (currSCCB->Sccb_scsistat == SELECT_Q_ST) { + currTar_Info->TarStatus &= + ~(unsigned char)TAR_TAG_Q_MASK; + currTar_Info->TarStatus |= (unsigned char)TAG_Q_REJECT; } ACCEPT_MSG(port); } - else if ((message == SMNO_OP) || (message >= SMIDENT) - || (message == SMINIT_RECOVERY) || (message == SMREL_RECOVERY)) - { + else if ((message == SMNO_OP) || (message >= SMIDENT) + || (message == SMINIT_RECOVERY) || (message == SMREL_RECOVERY)) { ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - else if (message == SMREJECT) - { + else if (message == SMREJECT) { if ((currSCCB->Sccb_scsistat == SELECT_SN_ST) || - (currSCCB->Sccb_scsistat == SELECT_WN_ST) || - ((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING ) || - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING ) ) - + (currSCCB->Sccb_scsistat == SELECT_WN_ST) || + ((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING) + || ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING)) { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + WRW_HARPOON((port + hp_intstat), BUS_FREE); ACCEPT_MSG(port); - - while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {} - - if(currSCCB->Lun == 0x00) + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE))) { - if ((currSCCB->Sccb_scsistat == SELECT_SN_ST)) - { + } - currTar_Info->TarStatus |= (UCHAR)SYNC_SUPPORTED; + if (currSCCB->Lun == 0x00) { + if ((currSCCB->Sccb_scsistat == SELECT_SN_ST)) { - currTar_Info->TarEEValue &= ~EE_SYNC_MASK; - } + currTar_Info->TarStatus |= + (unsigned char)SYNC_SUPPORTED; - else if ((currSCCB->Sccb_scsistat == SELECT_WN_ST)) - { + currTar_Info->TarEEValue &= + ~EE_SYNC_MASK; + } + else if ((currSCCB->Sccb_scsistat == + SELECT_WN_ST)) { - currTar_Info->TarStatus = (currTar_Info->TarStatus & - ~WIDE_ENABLED) | WIDE_NEGOCIATED; + currTar_Info->TarStatus = + (currTar_Info-> + TarStatus & ~WIDE_ENABLED) | + WIDE_NEGOCIATED; - currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; + currTar_Info->TarEEValue &= + ~EE_WIDE_SCSI; } - else if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING ) - { - currTar_Info->TarStatus = (currTar_Info->TarStatus & - ~(UCHAR)TAR_TAG_Q_MASK) | TAG_Q_REJECT; - + else if ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) == + TAG_Q_TRYING) { + currTar_Info->TarStatus = + (currTar_Info-> + TarStatus & ~(unsigned char) + TAR_TAG_Q_MASK) | TAG_Q_REJECT; currSCCB->ControlByte &= ~F_USE_CMD_Q; CurrCard->discQCount--; - CurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL; + CurrCard->discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; currSCCB->Sccb_tag = 0x00; } } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { - if(currSCCB->Lun == 0x00) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (currSCCB->Lun == 0x00) { + WRW_HARPOON((port + hp_intstat), + BUS_FREE); CurrCard->globalFlags |= F_NEW_SCCB_CMD; } } - else - { + else { - if((CurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - currTar_Info->TarLUNBusy[currSCCB->Lun] = 1; + if ((CurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info-> + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + currTar_Info->TarLUNBusy[currSCCB-> + Lun] = 1; else currTar_Info->TarLUNBusy[0] = 1; + currSCCB->ControlByte &= + ~(unsigned char)F_USE_CMD_Q; - currSCCB->ControlByte &= ~(UCHAR)F_USE_CMD_Q; - - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - else - { + else { ACCEPT_MSG(port); - while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) && - (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {} - - if (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE)) + while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) && + (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE))) { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + } + + if (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } } - else if (message == SMEXT) - { + else if (message == SMEXT) { ACCEPT_MSG(port); - FPT_shandem(port,p_card,currSCCB); + FPT_shandem(port, p_card, currSCCB); } - else if (message == SMIGNORWR) - { + else if (message == SMIGNORWR) { - ACCEPT_MSG(port); /* ACK the RESIDUE MSG */ + ACCEPT_MSG(port); /* ACK the RESIDUE MSG */ - message = FPT_sfm(port,currSCCB); + message = FPT_sfm(port, currSCCB); - if(currSCCB->Sccb_scsimsg != SMPARITY) + if (currSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - - else - { + else { currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; currSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - /*--------------------------------------------------------------------- * * Function: FPT_shandem @@ -3660,76 +3089,65 @@ static void FPT_sdecm(UCHAR message, ULO * Description: Decide what to do with the extended message. * *---------------------------------------------------------------------*/ -static void FPT_shandem(ULONG port, UCHAR p_card, PSCCB pCurrSCCB) +static void FPT_shandem(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB) { - UCHAR length,message; + unsigned char length, message; - length = FPT_sfm(port,pCurrSCCB); - if (length) - { + length = FPT_sfm(port, pCurrSCCB); + if (length) { ACCEPT_MSG(port); - message = FPT_sfm(port,pCurrSCCB); - if (message) - { + message = FPT_sfm(port, pCurrSCCB); + if (message) { - if (message == SMSYNC) - { + if (message == SMSYNC) { - if (length == 0x03) - { + if (length == 0x03) { ACCEPT_MSG(port); - FPT_stsyncn(port,p_card); - } - else - { + FPT_stsyncn(port, p_card); + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); } - } - else if (message == SMWDTR) - { + } else if (message == SMWDTR) { - if (length == 0x02) - { + if (length == 0x02) { ACCEPT_MSG(port); - FPT_stwidn(port,p_card); - } - else - { + FPT_stwidn(port, p_card); + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + + DISCONNECT_START)); } - } - else - { + } else { pCurrSCCB->Sccb_scsimsg = SMREJECT; ACCEPT_MSG_ATN(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - } - else - { - if(pCurrSCCB->Sccb_scsimsg != SMPARITY) + } else { + if (pCurrSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - }else - { - if(pCurrSCCB->Sccb_scsimsg == SMPARITY) - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + } else { + if (pCurrSCCB->Sccb_scsimsg == SMPARITY) + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } - /*--------------------------------------------------------------------- * * Function: FPT_sisyncn @@ -3739,73 +3157,79 @@ static void FPT_shandem(ULONG port, UCHA * *---------------------------------------------------------------------*/ -static UCHAR FPT_sisyncn(ULONG port, UCHAR p_card, UCHAR syncFlag) +static unsigned char FPT_sisyncn(unsigned long port, unsigned char p_card, + unsigned char syncFlag) { - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - - if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING)) { - - - WRW_HARPOON((port+ID_MSG_STRT), - (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV))); - - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); - - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC)); + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) + if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING)) { - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 12)); + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~(unsigned char)DISC_PRIV))); - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 25)); + WRW_HARPOON((port + SYNC_MSGS + 0), + (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03)); + WRW_HARPOON((port + SYNC_MSGS + 4), + (MPM_OP + AMSG_OUT + SMSYNC)); - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) + if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 50)); + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 12)); - else - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+ 00)); + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == + EE_SYNC_10MB) + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 25)); - WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+DEFAULT_OFFSET)); - WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP )); + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == + EE_SYNC_5MB) + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 50)); - if(syncFlag == 0) - { - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_TRYING); - } else - { - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - } - - - return(1); - } + WRW_HARPOON((port + SYNC_MSGS + 6), + (MPM_OP + AMSG_OUT + 00)); - else { - - currTar_Info->TarStatus |= (UCHAR)SYNC_SUPPORTED; - currTar_Info->TarEEValue &= ~EE_SYNC_MASK; - return(0); - } + WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 10), + (MPM_OP + AMSG_OUT + DEFAULT_OFFSET)); + WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP)); + + if (syncFlag == 0) { + WR_HARPOON(port + hp_autostart_3, + (SELECT + SELCHK_STRT)); + currTar_Info->TarStatus = + ((currTar_Info-> + TarStatus & ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_TRYING); + } else { + WR_HARPOON(port + hp_autostart_3, + (AUTO_IMMED + CMD_ONLY_STRT)); + } + + return 1; + } + + else { + + currTar_Info->TarStatus |= (unsigned char)SYNC_SUPPORTED; + currTar_Info->TarEEValue &= ~EE_SYNC_MASK; + return 0; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_stsyncn @@ -3814,131 +3238,128 @@ static UCHAR FPT_sisyncn(ULONG port, UCH * necessary. * *---------------------------------------------------------------------*/ -static void FPT_stsyncn(ULONG port, UCHAR p_card) +static void FPT_stsyncn(unsigned long port, unsigned char p_card) { - UCHAR sync_msg,offset,sync_reg,our_sync_msg; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char sync_msg, offset, sync_reg, our_sync_msg; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - sync_msg = FPT_sfm(port,currSCCB); + sync_msg = FPT_sfm(port, currSCCB); - if((sync_msg == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((sync_msg == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } - ACCEPT_MSG(port); - + ACCEPT_MSG(port); - offset = FPT_sfm(port,currSCCB); + offset = FPT_sfm(port, currSCCB); - if((offset == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((offset == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } - if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - - our_sync_msg = 12; /* Setup our Message to 20mb/s */ + if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_20MB) - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) + our_sync_msg = 12; /* Setup our Message to 20mb/s */ - our_sync_msg = 25; /* Setup our Message to 10mb/s */ + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_10MB) - else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) + our_sync_msg = 25; /* Setup our Message to 10mb/s */ - our_sync_msg = 50; /* Setup our Message to 5mb/s */ - else - - our_sync_msg = 0; /* Message = Async */ - - if (sync_msg < our_sync_msg) { - sync_msg = our_sync_msg; /*if faster, then set to max. */ - } + else if ((currTar_Info->TarEEValue & EE_SYNC_MASK) == EE_SYNC_5MB) - if (offset == ASYNC) - sync_msg = ASYNC; - - if (offset > MAX_OFFSET) - offset = MAX_OFFSET; + our_sync_msg = 50; /* Setup our Message to 5mb/s */ + else - sync_reg = 0x00; + our_sync_msg = 0; /* Message = Async */ - if (sync_msg > 12) + if (sync_msg < our_sync_msg) { + sync_msg = our_sync_msg; /*if faster, then set to max. */ + } - sync_reg = 0x20; /* Use 10MB/s */ + if (offset == ASYNC) + sync_msg = ASYNC; - if (sync_msg > 25) + if (offset > MAX_OFFSET) + offset = MAX_OFFSET; - sync_reg = 0x40; /* Use 6.6MB/s */ + sync_reg = 0x00; - if (sync_msg > 38) + if (sync_msg > 12) - sync_reg = 0x60; /* Use 5MB/s */ + sync_reg = 0x20; /* Use 10MB/s */ - if (sync_msg > 50) + if (sync_msg > 25) - sync_reg = 0x80; /* Use 4MB/s */ + sync_reg = 0x40; /* Use 6.6MB/s */ - if (sync_msg > 62) + if (sync_msg > 38) - sync_reg = 0xA0; /* Use 3.33MB/s */ + sync_reg = 0x60; /* Use 5MB/s */ - if (sync_msg > 75) + if (sync_msg > 50) - sync_reg = 0xC0; /* Use 2.85MB/s */ + sync_reg = 0x80; /* Use 4MB/s */ - if (sync_msg > 87) + if (sync_msg > 62) - sync_reg = 0xE0; /* Use 2.5MB/s */ + sync_reg = 0xA0; /* Use 3.33MB/s */ - if (sync_msg > 100) { + if (sync_msg > 75) - sync_reg = 0x00; /* Use ASYNC */ - offset = 0x00; - } + sync_reg = 0xC0; /* Use 2.85MB/s */ + if (sync_msg > 87) - if (currTar_Info->TarStatus & WIDE_ENABLED) + sync_reg = 0xE0; /* Use 2.5MB/s */ - sync_reg |= offset; + if (sync_msg > 100) { - else + sync_reg = 0x00; /* Use ASYNC */ + offset = 0x00; + } - sync_reg |= (offset | NARROW_SCSI); + if (currTar_Info->TarStatus & WIDE_ENABLED) - FPT_sssyncv(port,currSCCB->TargID,sync_reg,currTar_Info); + sync_reg |= offset; + else - if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + sync_reg |= (offset | NARROW_SCSI); + FPT_sssyncv(port, currSCCB->TargID, sync_reg, currTar_Info); - ACCEPT_MSG(port); + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED); + ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); - } + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_SUPPORTED); - else { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); + } + else { - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); - FPT_sisyncr(port,sync_msg,offset); + FPT_sisyncr(port, sync_msg, offset); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_SYNC_MASK) | (UCHAR)SYNC_SUPPORTED); - } + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_SYNC_MASK) | + (unsigned char)SYNC_SUPPORTED); + } } - /*--------------------------------------------------------------------- * * Function: FPT_sisyncr @@ -3946,28 +3367,28 @@ static void FPT_stsyncn(ULONG port, UCHA * Description: Answer the targets sync message. * *---------------------------------------------------------------------*/ -static void FPT_sisyncr(ULONG port,UCHAR sync_pulse, UCHAR offset) +static void FPT_sisyncr(unsigned long port, unsigned char sync_pulse, + unsigned char offset) { - ARAM_ACCESS(port); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x03 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMSYNC)); - WRW_HARPOON((port+SYNC_MSGS+6), (MPM_OP+AMSG_OUT+sync_pulse)); - WRW_HARPOON((port+SYNC_MSGS+8), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+10),(MPM_OP+AMSG_OUT+offset)); - WRW_HARPOON((port+SYNC_MSGS+12),(BRH_OP+ALWAYS+NP )); - SGRAM_ACCESS(port); + ARAM_ACCESS(port); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03)); + WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMSYNC)); + WRW_HARPOON((port + SYNC_MSGS + 6), (MPM_OP + AMSG_OUT + sync_pulse)); + WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 10), (MPM_OP + AMSG_OUT + offset)); + WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP)); + SGRAM_ACCESS(port); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT)); + WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) { + } } - - /*--------------------------------------------------------------------- * * Function: FPT_siwidn @@ -3977,50 +3398,53 @@ static void FPT_sisyncr(ULONG port,UCHAR * *---------------------------------------------------------------------*/ -static UCHAR FPT_siwidn(ULONG port, UCHAR p_card) +static unsigned char FPT_siwidn(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - - if (!((currTar_Info->TarStatus & TAR_WIDE_MASK) == WIDE_NEGOCIATED)) { + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - WRW_HARPOON((port+ID_MSG_STRT), - (MPM_OP+AMSG_OUT+(currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV))); + if (!((currTar_Info->TarStatus & TAR_WIDE_MASK) == WIDE_NEGOCIATED)) { - WRW_HARPOON((port+ID_MSG_STRT+2),BRH_OP+ALWAYS+CMDPZ); + WRW_HARPOON((port + ID_MSG_STRT), + (MPM_OP + AMSG_OUT + + (currSCCB-> + Sccb_idmsg & ~(unsigned char)DISC_PRIV))); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR)); - WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+8), (MPM_OP+AMSG_OUT+ SM16BIT)); - WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP )); + WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ); - WR_HARPOON(port+hp_autostart_3, (SELECT+SELCHK_STRT)); + WRW_HARPOON((port + SYNC_MSGS + 0), + (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02)); + WRW_HARPOON((port + SYNC_MSGS + 4), + (MPM_OP + AMSG_OUT + SMWDTR)); + WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 8), + (MPM_OP + AMSG_OUT + SM16BIT)); + WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP)); + WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT)); - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_WIDE_MASK) | (UCHAR)WIDE_ENABLED); + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_WIDE_MASK) | + (unsigned char)WIDE_ENABLED); - return(1); - } + return 1; + } - else { + else { - currTar_Info->TarStatus = ((currTar_Info->TarStatus & - ~(UCHAR)TAR_WIDE_MASK) | WIDE_NEGOCIATED); + currTar_Info->TarStatus = ((currTar_Info->TarStatus & + ~(unsigned char)TAR_WIDE_MASK) | + WIDE_NEGOCIATED); - currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; - return(0); - } + currTar_Info->TarEEValue &= ~EE_WIDE_SCSI; + return 0; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_stwidn @@ -4029,79 +3453,70 @@ static UCHAR FPT_siwidn(ULONG port, UCHA * necessary. * *---------------------------------------------------------------------*/ -static void FPT_stwidn(ULONG port, UCHAR p_card) +static void FPT_stwidn(unsigned long port, unsigned char p_card) { - UCHAR width; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char width; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + currTar_Info = &FPT_sccbMgrTbl[p_card][currSCCB->TargID]; - width = FPT_sfm(port,currSCCB); + width = FPT_sfm(port, currSCCB); - if((width == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) - { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if ((width == 0x00) && (currSCCB->Sccb_scsimsg == SMPARITY)) { + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); return; } + if (!(currTar_Info->TarEEValue & EE_WIDE_SCSI)) + width = 0; - if (!(currTar_Info->TarEEValue & EE_WIDE_SCSI)) - width = 0; - - if (width) { - currTar_Info->TarStatus |= WIDE_ENABLED; - width = 0; - } - else { - width = NARROW_SCSI; - currTar_Info->TarStatus &= ~WIDE_ENABLED; - } - - - FPT_sssyncv(port,currSCCB->TargID,width,currTar_Info); - - - if (currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + if (width) { + currTar_Info->TarStatus |= WIDE_ENABLED; + width = 0; + } else { + width = NARROW_SCSI; + currTar_Info->TarStatus &= ~WIDE_ENABLED; + } + FPT_sssyncv(port, currSCCB->TargID, width, currTar_Info); + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { - currTar_Info->TarStatus |= WIDE_NEGOCIATED; + currTar_Info->TarStatus |= WIDE_NEGOCIATED; - if (!((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_SUPPORTED)) - { - ACCEPT_MSG_ATN(port); - ARAM_ACCESS(port); - FPT_sisyncn(port,p_card, 1); - currSCCB->Sccb_scsistat = SELECT_SN_ST; - SGRAM_ACCESS(port); - } - else - { - ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + if (! + ((currTar_Info->TarStatus & TAR_SYNC_MASK) == + SYNC_SUPPORTED)) { + ACCEPT_MSG_ATN(port); + ARAM_ACCESS(port); + FPT_sisyncn(port, p_card, 1); + currSCCB->Sccb_scsistat = SELECT_SN_ST; + SGRAM_ACCESS(port); + } else { + ACCEPT_MSG(port); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } - } - - else { + } + else { - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - width = SM16BIT; - else - width = SM8BIT; + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) + width = SM16BIT; + else + width = SM8BIT; - FPT_siwidr(port,width); + FPT_siwidr(port, width); - currTar_Info->TarStatus |= (WIDE_NEGOCIATED | WIDE_ENABLED); - } + currTar_Info->TarStatus |= (WIDE_NEGOCIATED | WIDE_ENABLED); + } } - /*--------------------------------------------------------------------- * * Function: FPT_siwidr @@ -4109,27 +3524,26 @@ static void FPT_stwidn(ULONG port, UCHAR * Description: Answer the targets Wide nego message. * *---------------------------------------------------------------------*/ -static void FPT_siwidr(ULONG port, UCHAR width) +static void FPT_siwidr(unsigned long port, unsigned char width) { - ARAM_ACCESS(port); - WRW_HARPOON((port+SYNC_MSGS+0), (MPM_OP+AMSG_OUT+SMEXT )); - WRW_HARPOON((port+SYNC_MSGS+2), (MPM_OP+AMSG_OUT+0x02 )); - WRW_HARPOON((port+SYNC_MSGS+4), (MPM_OP+AMSG_OUT+SMWDTR)); - WRW_HARPOON((port+SYNC_MSGS+6), (RAT_OP )); - WRW_HARPOON((port+SYNC_MSGS+8),(MPM_OP+AMSG_OUT+width)); - WRW_HARPOON((port+SYNC_MSGS+10),(BRH_OP+ALWAYS+NP )); - SGRAM_ACCESS(port); + ARAM_ACCESS(port); + WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT)); + WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02)); + WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMWDTR)); + WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP)); + WRW_HARPOON((port + SYNC_MSGS + 8), (MPM_OP + AMSG_OUT + width)); + WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP)); + SGRAM_ACCESS(port); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT_1); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(port+hp_autostart_3, (AUTO_IMMED+CMD_ONLY_STRT)); + WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT)); - while (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | AUTO_INT))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) { + } } - - /*--------------------------------------------------------------------- * * Function: FPT_sssyncv @@ -4138,71 +3552,71 @@ static void FPT_siwidr(ULONG port, UCHAR * ID specified. * *---------------------------------------------------------------------*/ -static void FPT_sssyncv(ULONG p_port, UCHAR p_id, UCHAR p_sync_value, - PSCCBMgr_tar_info currTar_Info) -{ - UCHAR index; - - index = p_id; - - switch (index) { - - case 0: - index = 12; /* hp_synctarg_0 */ - break; - case 1: - index = 13; /* hp_synctarg_1 */ - break; - case 2: - index = 14; /* hp_synctarg_2 */ - break; - case 3: - index = 15; /* hp_synctarg_3 */ - break; - case 4: - index = 8; /* hp_synctarg_4 */ - break; - case 5: - index = 9; /* hp_synctarg_5 */ - break; - case 6: - index = 10; /* hp_synctarg_6 */ - break; - case 7: - index = 11; /* hp_synctarg_7 */ - break; - case 8: - index = 4; /* hp_synctarg_8 */ - break; - case 9: - index = 5; /* hp_synctarg_9 */ - break; - case 10: - index = 6; /* hp_synctarg_10 */ - break; - case 11: - index = 7; /* hp_synctarg_11 */ - break; - case 12: - index = 0; /* hp_synctarg_12 */ - break; - case 13: - index = 1; /* hp_synctarg_13 */ - break; - case 14: - index = 2; /* hp_synctarg_14 */ - break; - case 15: - index = 3; /* hp_synctarg_15 */ +static void FPT_sssyncv(unsigned long p_port, unsigned char p_id, + unsigned char p_sync_value, + struct sccb_mgr_tar_info *currTar_Info) +{ + unsigned char index; + + index = p_id; + + switch (index) { + + case 0: + index = 12; /* hp_synctarg_0 */ + break; + case 1: + index = 13; /* hp_synctarg_1 */ + break; + case 2: + index = 14; /* hp_synctarg_2 */ + break; + case 3: + index = 15; /* hp_synctarg_3 */ + break; + case 4: + index = 8; /* hp_synctarg_4 */ + break; + case 5: + index = 9; /* hp_synctarg_5 */ + break; + case 6: + index = 10; /* hp_synctarg_6 */ + break; + case 7: + index = 11; /* hp_synctarg_7 */ + break; + case 8: + index = 4; /* hp_synctarg_8 */ + break; + case 9: + index = 5; /* hp_synctarg_9 */ + break; + case 10: + index = 6; /* hp_synctarg_10 */ + break; + case 11: + index = 7; /* hp_synctarg_11 */ + break; + case 12: + index = 0; /* hp_synctarg_12 */ + break; + case 13: + index = 1; /* hp_synctarg_13 */ + break; + case 14: + index = 2; /* hp_synctarg_14 */ + break; + case 15: + index = 3; /* hp_synctarg_15 */ - } + } - WR_HARPOON(p_port+hp_synctarg_base+index, p_sync_value); + WR_HARPOON(p_port + hp_synctarg_base + index, p_sync_value); currTar_Info->TarSyncCtrl = p_sync_value; } - /*--------------------------------------------------------------------- * * Function: FPT_sresb @@ -4210,69 +3624,67 @@ static void FPT_sssyncv(ULONG p_port, UC * Description: Reset the desired card's SCSI bus. * *---------------------------------------------------------------------*/ -static void FPT_sresb(ULONG port, UCHAR p_card) +static void FPT_sresb(unsigned long port, unsigned char p_card) { - UCHAR scsiID, i; + unsigned char scsiID, i; + + struct sccb_mgr_tar_info *currTar_Info; - PSCCBMgr_tar_info currTar_Info; + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) | G_INT_DISABLE)); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - WR_HARPOON(port+hp_page_ctrl, - (RD_HARPOON(port+hp_page_ctrl) | G_INT_DISABLE)); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WR_HARPOON(port + hp_scsictrl_0, SCSI_RST); - WR_HARPOON(port+hp_scsictrl_0, SCSI_RST); + scsiID = RD_HARPOON(port + hp_seltimeout); + WR_HARPOON(port + hp_seltimeout, TO_5ms); + WRW_HARPOON((port + hp_intstat), TIMEOUT); - scsiID = RD_HARPOON(port+hp_seltimeout); - WR_HARPOON(port+hp_seltimeout,TO_5ms); - WRW_HARPOON((port+hp_intstat), TIMEOUT); + WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT | START_TO)); - WR_HARPOON(port+hp_portctrl_0,(SCSI_PORT | START_TO)); + while (!(RDW_HARPOON((port + hp_intstat)) & TIMEOUT)) { + } - while (!(RDW_HARPOON((port+hp_intstat)) & TIMEOUT)) {} + WR_HARPOON(port + hp_seltimeout, scsiID); - WR_HARPOON(port+hp_seltimeout,scsiID); + WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL); - WR_HARPOON(port+hp_scsictrl_0, ENA_SCAM_SEL); + FPT_Wait(port, TO_5ms); - FPT_Wait(port, TO_5ms); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WR_HARPOON(port + hp_int_mask, (RD_HARPOON(port + hp_int_mask) | 0x00)); - WR_HARPOON(port+hp_int_mask, (RD_HARPOON(port+hp_int_mask) | 0x00)); + for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) { + currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; - for (scsiID = 0; scsiID < MAX_SCSI_TAR; scsiID++) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; + if (currTar_Info->TarEEValue & EE_SYNC_MASK) { + currTar_Info->TarSyncCtrl = 0; + currTar_Info->TarStatus &= ~TAR_SYNC_MASK; + } - if (currTar_Info->TarEEValue & EE_SYNC_MASK) - { - currTar_Info->TarSyncCtrl = 0; - currTar_Info->TarStatus &= ~TAR_SYNC_MASK; - } - - if (currTar_Info->TarEEValue & EE_WIDE_SCSI) - { - currTar_Info->TarStatus &= ~TAR_WIDE_MASK; - } + if (currTar_Info->TarEEValue & EE_WIDE_SCSI) { + currTar_Info->TarStatus &= ~TAR_WIDE_MASK; + } - FPT_sssyncv(port, scsiID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info); - FPT_SccbMgrTableInitTarget(p_card, scsiID); - } + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } - FPT_BL_Card[p_card].scanIndex = 0x00; - FPT_BL_Card[p_card].currentSCCB = NULL; - FPT_BL_Card[p_card].globalFlags &= ~(F_TAG_STARTED | F_HOST_XFER_ACT - | F_NEW_SCCB_CMD); - FPT_BL_Card[p_card].cmdCounter = 0x00; + FPT_BL_Card[p_card].scanIndex = 0x00; + FPT_BL_Card[p_card].currentSCCB = NULL; + FPT_BL_Card[p_card].globalFlags &= ~(F_TAG_STARTED | F_HOST_XFER_ACT + | F_NEW_SCCB_CMD); + FPT_BL_Card[p_card].cmdCounter = 0x00; FPT_BL_Card[p_card].discQCount = 0x00; - FPT_BL_Card[p_card].tagQ_Lst = 0x01; + FPT_BL_Card[p_card].tagQ_Lst = 0x01; - for(i = 0; i < QUEUE_DEPTH; i++) + for (i = 0; i < QUEUE_DEPTH; i++) FPT_BL_Card[p_card].discQ_Tbl[i] = NULL; - WR_HARPOON(port+hp_page_ctrl, - (RD_HARPOON(port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & ~G_INT_DISABLE)); } @@ -4283,46 +3695,43 @@ static void FPT_sresb(ULONG port, UCHAR * Description: Setup for the Auto Sense command. * *---------------------------------------------------------------------*/ -static void FPT_ssenss(PSCCBcard pCurrCard) +static void FPT_ssenss(struct sccb_card *pCurrCard) { - UCHAR i; - PSCCB currSCCB; + unsigned char i; + struct sccb *currSCCB; - currSCCB = pCurrCard->currentSCCB; + currSCCB = pCurrCard->currentSCCB; + currSCCB->Save_CdbLen = currSCCB->CdbLength; - currSCCB->Save_CdbLen = currSCCB->CdbLength; + for (i = 0; i < 6; i++) { - for (i = 0; i < 6; i++) { - - currSCCB->Save_Cdb[i] = currSCCB->Cdb[i]; - } + currSCCB->Save_Cdb[i] = currSCCB->Cdb[i]; + } - currSCCB->CdbLength = SIX_BYTE_CMD; - currSCCB->Cdb[0] = SCSI_REQUEST_SENSE; - currSCCB->Cdb[1] = currSCCB->Cdb[1] & (UCHAR)0xE0; /*Keep LUN. */ - currSCCB->Cdb[2] = 0x00; - currSCCB->Cdb[3] = 0x00; - currSCCB->Cdb[4] = currSCCB->RequestSenseLength; - currSCCB->Cdb[5] = 0x00; + currSCCB->CdbLength = SIX_BYTE_CMD; + currSCCB->Cdb[0] = SCSI_REQUEST_SENSE; + currSCCB->Cdb[1] = currSCCB->Cdb[1] & (unsigned char)0xE0; /*Keep LUN. */ + currSCCB->Cdb[2] = 0x00; + currSCCB->Cdb[3] = 0x00; + currSCCB->Cdb[4] = currSCCB->RequestSenseLength; + currSCCB->Cdb[5] = 0x00; - currSCCB->Sccb_XferCnt = (unsigned long)currSCCB->RequestSenseLength; + currSCCB->Sccb_XferCnt = (unsigned long)currSCCB->RequestSenseLength; - currSCCB->Sccb_ATC = 0x00; + currSCCB->Sccb_ATC = 0x00; - currSCCB->Sccb_XferState |= F_AUTO_SENSE; + currSCCB->Sccb_XferState |= F_AUTO_SENSE; - currSCCB->Sccb_XferState &= ~F_SG_XFER; + currSCCB->Sccb_XferState &= ~F_SG_XFER; - currSCCB->Sccb_idmsg = currSCCB->Sccb_idmsg & ~(UCHAR)DISC_PRIV; + currSCCB->Sccb_idmsg = currSCCB->Sccb_idmsg & ~(unsigned char)DISC_PRIV; - currSCCB->ControlByte = 0x00; + currSCCB->ControlByte = 0x00; - currSCCB->Sccb_MGRFlags &= F_STATUSLOADED; + currSCCB->Sccb_MGRFlags &= F_STATUSLOADED; } - - /*--------------------------------------------------------------------- * * Function: FPT_sxfrp @@ -4332,81 +3741,81 @@ static void FPT_ssenss(PSCCBcard pCurrCa * *---------------------------------------------------------------------*/ -static void FPT_sxfrp(ULONG p_port, UCHAR p_card) +static void FPT_sxfrp(unsigned long p_port, unsigned char p_card) { - UCHAR curr_phz; + unsigned char curr_phz; + DISABLE_AUTO(p_port); - DISABLE_AUTO(p_port); + if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { - if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { + FPT_hostDataXferAbort(p_port, p_card, + FPT_BL_Card[p_card].currentSCCB); - FPT_hostDataXferAbort(p_port,p_card,FPT_BL_Card[p_card].currentSCCB); + } - } + /* If the Automation handled the end of the transfer then do not + match the phase or we will get out of sync with the ISR. */ - /* If the Automation handled the end of the transfer then do not - match the phase or we will get out of sync with the ISR. */ + if (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | XFER_CNT_0 | AUTO_INT)) + return; - if (RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | XFER_CNT_0 | AUTO_INT)) - return; + WR_HARPOON(p_port + hp_xfercnt_0, 0x00); - WR_HARPOON(p_port+hp_xfercnt_0, 0x00); + curr_phz = RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ; - curr_phz = RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ; + WRW_HARPOON((p_port + hp_intstat), XFER_CNT_0); - WRW_HARPOON((p_port+hp_intstat), XFER_CNT_0); + WR_HARPOON(p_port + hp_scsisig, curr_phz); + while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET)) && + (curr_phz == + (RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ))) + { + if (curr_phz & (unsigned char)SCSI_IOBIT) { + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, curr_phz); + if (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { + RD_HARPOON(p_port + hp_fifodata_0); + } + } else { + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | HOST_WRT)); + if (RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY) { + WR_HARPOON(p_port + hp_fifodata_0, 0xFA); + } + } + } /* End of While loop for padding data I/O phase */ - while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET)) && - (curr_phz == (RD_HARPOON(p_port+hp_scsisig) & (UCHAR)S_SCSI_PHZ)) ) - { - if (curr_phz & (UCHAR)SCSI_IOBIT) - { - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - - if (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)) - { - RD_HARPOON(p_port+hp_fifodata_0); - } - } - else - { - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | HOST_WRT)); - if (RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY) - { - WR_HARPOON(p_port+hp_fifodata_0,0xFA); - } - } - } /* End of While loop for padding data I/O phase */ - - while ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ) - break; - } - - WR_HARPOON(p_port+hp_portctrl_0, (SCSI_PORT | HOST_PORT | SCSI_INBIT)); - while (!(RD_HARPOON(p_port+hp_xferstat) & FIFO_EMPTY)) - { - RD_HARPOON(p_port+hp_fifodata_0); - } - - if ( !(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RESET))) - { - WR_HARPOON(p_port+hp_autostart_0, (AUTO_IMMED+DISCONNECT_START)); - while (!(RDW_HARPOON((p_port+hp_intstat)) & AUTO_INT)) {} - - if (RDW_HARPOON((p_port+hp_intstat)) & (ICMD_COMP | ITAR_DISC)) - while (!(RDW_HARPOON((p_port+hp_intstat)) & (BUS_FREE | RSEL))) ; - } -} + while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) + break; + } + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | HOST_PORT | SCSI_INBIT)); + while (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { + RD_HARPOON(p_port + hp_fifodata_0); + } -/*--------------------------------------------------------------------- - * + if (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { + WR_HARPOON(p_port + hp_autostart_0, + (AUTO_IMMED + DISCONNECT_START)); + while (!(RDW_HARPOON((p_port + hp_intstat)) & AUTO_INT)) { + } + + if (RDW_HARPOON((p_port + hp_intstat)) & + (ICMD_COMP | ITAR_DISC)) + while (! + (RDW_HARPOON((p_port + hp_intstat)) & + (BUS_FREE | RSEL))) ; + } +} + +/*--------------------------------------------------------------------- + * * Function: FPT_schkdd * * Description: Make sure data has been flushed from both FIFOs and abort @@ -4414,111 +3823,99 @@ static void FPT_sxfrp(ULONG p_port, UCHA * *---------------------------------------------------------------------*/ -static void FPT_schkdd(ULONG port, UCHAR p_card) +static void FPT_schkdd(unsigned long port, unsigned char p_card) { - USHORT TimeOutLoop; - UCHAR sPhase; - - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - - if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) && - (currSCCB->Sccb_scsistat != DATA_IN_ST)) { - return; - } + unsigned short TimeOutLoop; + unsigned char sPhase; + struct sccb *currSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT) - { + if ((currSCCB->Sccb_scsistat != DATA_OUT_ST) && + (currSCCB->Sccb_scsistat != DATA_IN_ST)) { + return; + } - currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt-1); + if (currSCCB->Sccb_XferState & F_ODD_BALL_CNT) { - currSCCB->Sccb_XferCnt = 1; + currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - 1); - currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT; - WRW_HARPOON((port+hp_fiforead), (USHORT) 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); - } + currSCCB->Sccb_XferCnt = 1; - else - { + currSCCB->Sccb_XferState &= ~F_ODD_BALL_CNT; + WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00); + WR_HARPOON(port + hp_xferstat, 0x00); + } - currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + else { - currSCCB->Sccb_XferCnt = 0; - } + currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->Sccb_XferCnt = 0; + } - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } - FPT_hostDataXferAbort(port,p_card,currSCCB); + FPT_hostDataXferAbort(port, p_card, currSCCB); + while (RD_HARPOON(port + hp_scsisig) & SCSI_ACK) { + } - while (RD_HARPOON(port+hp_scsisig) & SCSI_ACK) {} + TimeOutLoop = 0; - TimeOutLoop = 0; + while (RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY) { + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + return; + } + if (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) { + break; + } + if (RDW_HARPOON((port + hp_intstat)) & RESET) { + return; + } + if ((RD_HARPOON(port + hp_scsisig) & SCSI_REQ) + || (TimeOutLoop++ > 0x3000)) + break; + } - while(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY) - { - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) { - return; - } - if (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) { - break; - } - if (RDW_HARPOON((port+hp_intstat)) & RESET) { - return; - } - if ((RD_HARPOON(port+hp_scsisig) & SCSI_REQ) || (TimeOutLoop++>0x3000) ) - break; - } + sPhase = RD_HARPOON(port + hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ); + if ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) || + (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) || + (sPhase == (SCSI_BSY | S_DATAO_PH)) || + (sPhase == (SCSI_BSY | S_DATAI_PH))) { - sPhase = RD_HARPOON(port+hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ); - if ((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) || - (RD_HARPOON(port+hp_offsetctr) & (UCHAR)0x1F) || - (sPhase == (SCSI_BSY | S_DATAO_PH)) || - (sPhase == (SCSI_BSY | S_DATAI_PH))) - { + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED)) { + if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + FPT_phaseDataIn(port, p_card); + } - if (!(currSCCB->Sccb_XferState & F_ALL_XFERRED)) - { - if (currSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - FPT_phaseDataIn(port,p_card); - } - - else { - FPT_phaseDataOut(port,p_card); - } - } - else - { - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & - (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET))) - { - WRW_HARPOON((port+hp_intstat), AUTO_INT); - FPT_phaseDecode(port,p_card); - } - } + else { + FPT_phaseDataOut(port, p_card); + } + } else { + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & + (BUS_FREE | ICMD_COMP | ITAR_DISC | RESET))) { + WRW_HARPOON((port + hp_intstat), AUTO_INT); + FPT_phaseDecode(port, p_card); + } + } - } + } - else { - WR_HARPOON(port+hp_portctrl_0, 0x00); - } + else { + WR_HARPOON(port + hp_portctrl_0, 0x00); + } } - /*--------------------------------------------------------------------- * * Function: FPT_sinits @@ -4527,39 +3924,37 @@ static void FPT_schkdd(ULONG port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_sinits(PSCCB p_sccb, UCHAR p_card) +static void FPT_sinits(struct sccb *p_sccb, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; + struct sccb_mgr_tar_info *currTar_Info; - if((p_sccb->TargID > MAX_SCSI_TAR) || (p_sccb->Lun > MAX_LUN)) - { + if ((p_sccb->TargID > MAX_SCSI_TAR) || (p_sccb->Lun > MAX_LUN)) { return; } - currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - p_sccb->Sccb_XferState = 0x00; - p_sccb->Sccb_XferCnt = p_sccb->DataLength; + p_sccb->Sccb_XferState = 0x00; + p_sccb->Sccb_XferCnt = p_sccb->DataLength; - if ((p_sccb->OperationCode == SCATTER_GATHER_COMMAND) || - (p_sccb->OperationCode == RESIDUAL_SG_COMMAND)) { + if ((p_sccb->OperationCode == SCATTER_GATHER_COMMAND) || + (p_sccb->OperationCode == RESIDUAL_SG_COMMAND)) { - p_sccb->Sccb_SGoffset = 0; - p_sccb->Sccb_XferState = F_SG_XFER; - p_sccb->Sccb_XferCnt = 0x00; - } + p_sccb->Sccb_SGoffset = 0; + p_sccb->Sccb_XferState = F_SG_XFER; + p_sccb->Sccb_XferCnt = 0x00; + } - if (p_sccb->DataLength == 0x00) + if (p_sccb->DataLength == 0x00) - p_sccb->Sccb_XferState |= F_ALL_XFERRED; + p_sccb->Sccb_XferState |= F_ALL_XFERRED; - if (p_sccb->ControlByte & F_USE_CMD_Q) - { - if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) - p_sccb->ControlByte &= ~F_USE_CMD_Q; + if (p_sccb->ControlByte & F_USE_CMD_Q) { + if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_REJECT) + p_sccb->ControlByte &= ~F_USE_CMD_Q; - else - currTar_Info->TarStatus |= TAG_Q_TRYING; - } + else + currTar_Info->TarStatus |= TAG_Q_TRYING; + } /* For !single SCSI device in system & device allow Disconnect or command is tag_q type then send Cmd with Disconnect Enable @@ -4570,35 +3965,35 @@ static void FPT_sinits(PSCCB p_sccb, UCH (currTar_Info->TarStatus & TAR_ALLOW_DISC)) || (currTar_Info->TarStatus & TAG_Q_TRYING)) { */ - if ((currTar_Info->TarStatus & TAR_ALLOW_DISC) || - (currTar_Info->TarStatus & TAG_Q_TRYING)) { - p_sccb->Sccb_idmsg = (UCHAR)(SMIDENT | DISC_PRIV) | p_sccb->Lun; - } + if ((currTar_Info->TarStatus & TAR_ALLOW_DISC) || + (currTar_Info->TarStatus & TAG_Q_TRYING)) { + p_sccb->Sccb_idmsg = + (unsigned char)(SMIDENT | DISC_PRIV) | p_sccb->Lun; + } - else { + else { - p_sccb->Sccb_idmsg = (UCHAR)SMIDENT | p_sccb->Lun; - } + p_sccb->Sccb_idmsg = (unsigned char)SMIDENT | p_sccb->Lun; + } - p_sccb->HostStatus = 0x00; - p_sccb->TargetStatus = 0x00; - p_sccb->Sccb_tag = 0x00; - p_sccb->Sccb_MGRFlags = 0x00; - p_sccb->Sccb_sgseg = 0x00; - p_sccb->Sccb_ATC = 0x00; - p_sccb->Sccb_savedATC = 0x00; + p_sccb->HostStatus = 0x00; + p_sccb->TargetStatus = 0x00; + p_sccb->Sccb_tag = 0x00; + p_sccb->Sccb_MGRFlags = 0x00; + p_sccb->Sccb_sgseg = 0x00; + p_sccb->Sccb_ATC = 0x00; + p_sccb->Sccb_savedATC = 0x00; /* p_sccb->SccbVirtDataPtr = 0x00; p_sccb->Sccb_forwardlink = NULL; p_sccb->Sccb_backlink = NULL; */ - p_sccb->Sccb_scsistat = BUS_FREE_ST; - p_sccb->SccbStatus = SCCB_IN_PROCESS; - p_sccb->Sccb_scsimsg = SMNO_OP; + p_sccb->Sccb_scsistat = BUS_FREE_ST; + p_sccb->SccbStatus = SCCB_IN_PROCESS; + p_sccb->Sccb_scsimsg = SMNO_OP; } - /*--------------------------------------------------------------------- * * Function: Phase Decode @@ -4607,23 +4002,21 @@ static void FPT_sinits(PSCCB p_sccb, UCH * *---------------------------------------------------------------------*/ -static void FPT_phaseDecode(ULONG p_port, UCHAR p_card) +static void FPT_phaseDecode(unsigned long p_port, unsigned char p_card) { - unsigned char phase_ref; - void (*phase) (ULONG, UCHAR); - + unsigned char phase_ref; + void (*phase) (unsigned long, unsigned char); - DISABLE_AUTO(p_port); + DISABLE_AUTO(p_port); - phase_ref = (UCHAR) (RD_HARPOON(p_port+hp_scsisig) & S_SCSI_PHZ); + phase_ref = + (unsigned char)(RD_HARPOON(p_port + hp_scsisig) & S_SCSI_PHZ); - phase = FPT_s_PhaseTbl[phase_ref]; + phase = FPT_s_PhaseTbl[phase_ref]; - (*phase)(p_port, p_card); /* Call the correct phase func */ + (*phase) (p_port, p_card); /* Call the correct phase func */ } - - /*--------------------------------------------------------------------- * * Function: Data Out Phase @@ -4632,42 +4025,39 @@ static void FPT_phaseDecode(ULONG p_port * *---------------------------------------------------------------------*/ -static void FPT_phaseDataOut(ULONG port, UCHAR p_card) +static void FPT_phaseDataOut(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (currSCCB == NULL) - { - return; /* Exit if No SCCB record */ - } + struct sccb *currSCCB; - currSCCB->Sccb_scsistat = DATA_OUT_ST; - currSCCB->Sccb_XferState &= ~(F_HOST_XFER_DIR | F_NO_DATA_YET); + currSCCB = FPT_BL_Card[p_card].currentSCCB; + if (currSCCB == NULL) { + return; /* Exit if No SCCB record */ + } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + currSCCB->Sccb_scsistat = DATA_OUT_ST; + currSCCB->Sccb_XferState &= ~(F_HOST_XFER_DIR | F_NO_DATA_YET); - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START)); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START)); - if (currSCCB->Sccb_XferCnt == 0) { + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_XferCnt == 0) { - if ((currSCCB->ControlByte & SCCB_DATA_XFER_OUT) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - currSCCB->HostStatus = SCCB_DATA_OVER_RUN; + if ((currSCCB->ControlByte & SCCB_DATA_XFER_OUT) && + (currSCCB->HostStatus == SCCB_COMPLETE)) + currSCCB->HostStatus = SCCB_DATA_OVER_RUN; - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET))) - FPT_phaseDecode(port,p_card); - } + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET))) + FPT_phaseDecode(port, p_card); + } } - /*--------------------------------------------------------------------- * * Function: Data In Phase @@ -4676,43 +4066,40 @@ static void FPT_phaseDataOut(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseDataIn(ULONG port, UCHAR p_card) +static void FPT_phaseDataIn(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB == NULL) - { - return; /* Exit if No SCCB record */ - } + struct sccb *currSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - currSCCB->Sccb_scsistat = DATA_IN_ST; - currSCCB->Sccb_XferState |= F_HOST_XFER_DIR; - currSCCB->Sccb_XferState &= ~F_NO_DATA_YET; + if (currSCCB == NULL) { + return; /* Exit if No SCCB record */ + } - WR_HARPOON(port+hp_portctrl_0, SCSI_PORT); + currSCCB->Sccb_scsistat = DATA_IN_ST; + currSCCB->Sccb_XferState |= F_HOST_XFER_DIR; + currSCCB->Sccb_XferState &= ~F_NO_DATA_YET; - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WR_HARPOON(port + hp_portctrl_0, SCSI_PORT); - WR_HARPOON(port+hp_autostart_0, (END_DATA+END_DATA_START)); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START)); - if (currSCCB->Sccb_XferCnt == 0) { + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_XferCnt == 0) { - if ((currSCCB->ControlByte & SCCB_DATA_XFER_IN) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - currSCCB->HostStatus = SCCB_DATA_OVER_RUN; + if ((currSCCB->ControlByte & SCCB_DATA_XFER_IN) && + (currSCCB->HostStatus == SCCB_COMPLETE)) + currSCCB->HostStatus = SCCB_DATA_OVER_RUN; - FPT_sxfrp(port,p_card); - if (!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | RESET))) - FPT_phaseDecode(port,p_card); + FPT_sxfrp(port, p_card); + if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET))) + FPT_phaseDecode(port, p_card); - } + } } /*--------------------------------------------------------------------- @@ -4723,50 +4110,49 @@ static void FPT_phaseDataIn(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseCommand(ULONG p_port, UCHAR p_card) +static void FPT_phaseCommand(unsigned long p_port, unsigned char p_card) { - PSCCB currSCCB; - ULONG cdb_reg; - UCHAR i; + struct sccb *currSCCB; + unsigned long cdb_reg; + unsigned char i; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB->OperationCode == RESET_COMMAND) { + currSCCB = FPT_BL_Card[p_card].currentSCCB; - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - currSCCB->CdbLength = SIX_BYTE_CMD; - } + if (currSCCB->OperationCode == RESET_COMMAND) { - WR_HARPOON(p_port+hp_scsisig, 0x00); + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + currSCCB->CdbLength = SIX_BYTE_CMD; + } - ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_scsisig, 0x00); + ARAM_ACCESS(p_port); - cdb_reg = p_port + CMD_STRT; + cdb_reg = p_port + CMD_STRT; - for (i=0; i < currSCCB->CdbLength; i++) { + for (i = 0; i < currSCCB->CdbLength; i++) { - if (currSCCB->OperationCode == RESET_COMMAND) + if (currSCCB->OperationCode == RESET_COMMAND) - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + 0x00)); + WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + 0x00)); - else - WRW_HARPOON(cdb_reg, (MPM_OP + ACOMMAND + currSCCB->Cdb[i])); - cdb_reg +=2; - } + else + WRW_HARPOON(cdb_reg, + (MPM_OP + ACOMMAND + currSCCB->Cdb[i])); + cdb_reg += 2; + } - if (currSCCB->CdbLength != TWELVE_BYTE_CMD) - WRW_HARPOON(cdb_reg, (BRH_OP+ALWAYS+ NP)); + if (currSCCB->CdbLength != TWELVE_BYTE_CMD) + WRW_HARPOON(cdb_reg, (BRH_OP + ALWAYS + NP)); - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT)); + WR_HARPOON(p_port + hp_portctrl_0, (SCSI_PORT)); - currSCCB->Sccb_scsistat = COMMAND_ST; + currSCCB->Sccb_scsistat = COMMAND_ST; - WR_HARPOON(p_port+hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT)); - SGRAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT)); + SGRAM_ACCESS(p_port); } - /*--------------------------------------------------------------------- * * Function: Status phase @@ -4775,19 +4161,18 @@ static void FPT_phaseCommand(ULONG p_por * *---------------------------------------------------------------------*/ -static void FPT_phaseStatus(ULONG port, UCHAR p_card) +static void FPT_phaseStatus(unsigned long port, unsigned char p_card) { - /* Start-up the automation to finish off this command and let the - isr handle the interrupt for command complete when it comes in. - We could wait here for the interrupt to be generated? - */ + /* Start-up the automation to finish off this command and let the + isr handle the interrupt for command complete when it comes in. + We could wait here for the interrupt to be generated? + */ - WR_HARPOON(port+hp_scsisig, 0x00); + WR_HARPOON(port + hp_scsisig, 0x00); - WR_HARPOON(port+hp_autostart_0, (AUTO_IMMED+END_DATA_START)); + WR_HARPOON(port + hp_autostart_0, (AUTO_IMMED + END_DATA_START)); } - /*--------------------------------------------------------------------- * * Function: Phase Message Out @@ -4797,11 +4182,11 @@ static void FPT_phaseStatus(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseMsgOut(ULONG port, UCHAR p_card) +static void FPT_phaseMsgOut(unsigned long port, unsigned char p_card) { - UCHAR message,scsiID; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char message, scsiID; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; currSCCB = FPT_BL_Card[p_card].currentSCCB; @@ -4810,133 +4195,124 @@ static void FPT_phaseMsgOut(ULONG port, message = currSCCB->Sccb_scsimsg; scsiID = currSCCB->TargID; - if (message == SMDEV_RESET) - { - + if (message == SMDEV_RESET) { currTar_Info = &FPT_sccbMgrTbl[p_card][scsiID]; currTar_Info->TarSyncCtrl = 0; - FPT_sssyncv(port, scsiID, NARROW_SCSI,currTar_Info); + FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info); - if (FPT_sccbMgrTbl[p_card][scsiID].TarEEValue & EE_SYNC_MASK) - { + if (FPT_sccbMgrTbl[p_card][scsiID]. + TarEEValue & EE_SYNC_MASK) { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= ~TAR_SYNC_MASK; + FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= + ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][scsiID].TarEEValue & EE_WIDE_SCSI) - { + if (FPT_sccbMgrTbl[p_card][scsiID]. + TarEEValue & EE_WIDE_SCSI) { - FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= ~TAR_WIDE_MASK; + FPT_sccbMgrTbl[p_card][scsiID].TarStatus &= + ~TAR_WIDE_MASK; } - - FPT_queueFlushSccb(p_card,SCCB_COMPLETE); - FPT_SccbMgrTableInitTarget(p_card,scsiID); - } - else if (currSCCB->Sccb_scsistat == ABORT_ST) - { + FPT_queueFlushSccb(p_card, SCCB_COMPLETE); + FPT_SccbMgrTableInitTarget(p_card, scsiID); + } else if (currSCCB->Sccb_scsistat == ABORT_ST) { currSCCB->HostStatus = SCCB_COMPLETE; - if(FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] != NULL) - { - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; + if (FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] != + NULL) { + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] = NULL; FPT_sccbMgrTbl[p_card][scsiID].TarTagQ_Cnt--; } - - } - else if (currSCCB->Sccb_scsistat < COMMAND_ST) - { + } + else if (currSCCB->Sccb_scsistat < COMMAND_ST) { - if(message == SMNO_OP) - { + if (message == SMNO_OP) { currSCCB->Sccb_MGRFlags |= F_DEV_SELECTED; - - FPT_ssel(port,p_card); + + FPT_ssel(port, p_card); return; } - } - else - { - + } else { if (message == SMABORT) - FPT_queueFlushSccb(p_card,SCCB_COMPLETE); + FPT_queueFlushSccb(p_card, SCCB_COMPLETE); } - } - else - { + } else { message = SMABORT; } - WRW_HARPOON((port+hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - + WRW_HARPOON((port + hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0)); - WR_HARPOON(port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(port+hp_scsidata_0,message); + WR_HARPOON(port + hp_scsidata_0, message); - WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); + WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH)); ACCEPT_MSG(port); - WR_HARPOON(port+hp_portctrl_0, 0x00); + WR_HARPOON(port + hp_portctrl_0, 0x00); - if ((message == SMABORT) || (message == SMDEV_RESET) || - (message == SMABORT_TAG) ) - { + if ((message == SMABORT) || (message == SMDEV_RESET) || + (message == SMABORT_TAG)) { - while(!(RDW_HARPOON((port+hp_intstat)) & (BUS_FREE | PHASE))) {} + while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | PHASE))) { + } - if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE) - { - WRW_HARPOON((port+hp_intstat), BUS_FREE); + if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) { + WRW_HARPOON((port + hp_intstat), BUS_FREE); - if (currSCCB != NULL) - { + if (currSCCB != NULL) { - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card]. + globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarLUNBusy[currSCCB->Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarLUNBusy[0] = 0; - FPT_queueCmdComplete(&FPT_BL_Card[p_card],currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + currSCCB, p_card); } - else - { - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + else { + FPT_BL_Card[p_card].globalFlags |= + F_NEW_SCCB_CMD; } } - else - { + else { - FPT_sxfrp(port,p_card); + FPT_sxfrp(port, p_card); } } - else - { + else { - if(message == SMPARITY) - { + if (message == SMPARITY) { currSCCB->Sccb_scsimsg = SMNO_OP; - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); - } - else - { - FPT_sxfrp(port,p_card); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); + } else { + FPT_sxfrp(port, p_card); } } } - /*--------------------------------------------------------------------- * * Function: Message In phase @@ -4945,49 +4321,43 @@ static void FPT_phaseMsgOut(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseMsgIn(ULONG port, UCHAR p_card) +static void FPT_phaseMsgIn(unsigned long port, unsigned char p_card) { - UCHAR message; - PSCCB currSCCB; + unsigned char message; + struct sccb *currSCCB; currSCCB = FPT_BL_Card[p_card].currentSCCB; - if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) - { + if (FPT_BL_Card[p_card].globalFlags & F_HOST_XFER_ACT) { FPT_phaseChkFifo(port, p_card); } - message = RD_HARPOON(port+hp_scsidata_0); - if ((message == SMDISC) || (message == SMSAVE_DATA_PTR)) - { + message = RD_HARPOON(port + hp_scsidata_0); + if ((message == SMDISC) || (message == SMSAVE_DATA_PTR)) { - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+END_DATA_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + END_DATA_START)); } - else - { - - message = FPT_sfm(port,currSCCB); - if (message) - { + else { + message = FPT_sfm(port, currSCCB); + if (message) { - FPT_sdecm(message,port,p_card); + FPT_sdecm(message, port, p_card); - } - else - { - if(currSCCB->Sccb_scsimsg != SMPARITY) + } else { + if (currSCCB->Sccb_scsimsg != SMPARITY) ACCEPT_MSG(port); - WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START)); + WR_HARPOON(port + hp_autostart_1, + (AUTO_IMMED + DISCONNECT_START)); } } } - /*--------------------------------------------------------------------- * * Function: Illegal phase @@ -4998,25 +4368,23 @@ static void FPT_phaseMsgIn(ULONG port, U * *---------------------------------------------------------------------*/ -static void FPT_phaseIllegal(ULONG port, UCHAR p_card) +static void FPT_phaseIllegal(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; + struct sccb *currSCCB; - currSCCB = FPT_BL_Card[p_card].currentSCCB; + currSCCB = FPT_BL_Card[p_card].currentSCCB; - WR_HARPOON(port+hp_scsisig, RD_HARPOON(port+hp_scsisig)); - if (currSCCB != NULL) { + WR_HARPOON(port + hp_scsisig, RD_HARPOON(port + hp_scsisig)); + if (currSCCB != NULL) { - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - currSCCB->Sccb_scsistat = ABORT_ST; - currSCCB->Sccb_scsimsg = SMABORT; - } + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + currSCCB->Sccb_scsistat = ABORT_ST; + currSCCB->Sccb_scsimsg = SMABORT; + } - ACCEPT_MSG_ATN(port); + ACCEPT_MSG_ATN(port); } - - /*--------------------------------------------------------------------- * * Function: Phase Check FIFO @@ -5026,76 +4394,69 @@ static void FPT_phaseIllegal(ULONG port, * *---------------------------------------------------------------------*/ -static void FPT_phaseChkFifo(ULONG port, UCHAR p_card) +static void FPT_phaseChkFifo(unsigned long port, unsigned char p_card) { - ULONG xfercnt; - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; - - if (currSCCB->Sccb_scsistat == DATA_IN_ST) - { - - while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) && - (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {} - - - if (!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) - { - currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + unsigned long xfercnt; + struct sccb *currSCCB; - currSCCB->Sccb_XferCnt = 0; - - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) - { - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } - - FPT_hostDataXferAbort(port,p_card,currSCCB); + currSCCB = FPT_BL_Card[p_card].currentSCCB; - FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); + if (currSCCB->Sccb_scsistat == DATA_IN_ST) { - while((!(RD_HARPOON(port+hp_xferstat) & FIFO_EMPTY)) && - (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY)) {} + while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) && + (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)) { + } - } - } /*End Data In specific code. */ + if (!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) { + currSCCB->Sccb_ATC += currSCCB->Sccb_XferCnt; + currSCCB->Sccb_XferCnt = 0; + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } - GET_XFER_CNT(port,xfercnt); + FPT_hostDataXferAbort(port, p_card, currSCCB); + FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]); - WR_HARPOON(port+hp_xfercnt_0, 0x00); + while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) + && (RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY)) { + } + } + } - WR_HARPOON(port+hp_portctrl_0, 0x00); + /*End Data In specific code. */ + GET_XFER_CNT(port, xfercnt); - currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - xfercnt); + WR_HARPOON(port + hp_xfercnt_0, 0x00); - currSCCB->Sccb_XferCnt = xfercnt; + WR_HARPOON(port + hp_portctrl_0, 0x00); - if ((RDW_HARPOON((port+hp_intstat)) & PARITY) && - (currSCCB->HostStatus == SCCB_COMPLETE)) { + currSCCB->Sccb_ATC += (currSCCB->Sccb_XferCnt - xfercnt); - currSCCB->HostStatus = SCCB_PARITY_ERR; - WRW_HARPOON((port+hp_intstat), PARITY); - } + currSCCB->Sccb_XferCnt = xfercnt; + if ((RDW_HARPOON((port + hp_intstat)) & PARITY) && + (currSCCB->HostStatus == SCCB_COMPLETE)) { - FPT_hostDataXferAbort(port,p_card,currSCCB); + currSCCB->HostStatus = SCCB_PARITY_ERR; + WRW_HARPOON((port + hp_intstat), PARITY); + } + FPT_hostDataXferAbort(port, p_card, currSCCB); - WR_HARPOON(port+hp_fifowrite, 0x00); - WR_HARPOON(port+hp_fiforead, 0x00); - WR_HARPOON(port+hp_xferstat, 0x00); + WR_HARPOON(port + hp_fifowrite, 0x00); + WR_HARPOON(port + hp_fiforead, 0x00); + WR_HARPOON(port + hp_xferstat, 0x00); - WRW_HARPOON((port+hp_intstat), XFER_CNT_0); + WRW_HARPOON((port + hp_intstat), XFER_CNT_0); } - /*--------------------------------------------------------------------- * * Function: Phase Bus Free @@ -5104,96 +4465,94 @@ static void FPT_phaseChkFifo(ULONG port, * because of command complete or from a disconnect. * *---------------------------------------------------------------------*/ -static void FPT_phaseBusFree(ULONG port, UCHAR p_card) +static void FPT_phaseBusFree(unsigned long port, unsigned char p_card) { - PSCCB currSCCB; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; + struct sccb *currSCCB; - if (currSCCB != NULL) - { + currSCCB = FPT_BL_Card[p_card].currentSCCB; - DISABLE_AUTO(port); + if (currSCCB != NULL) { + DISABLE_AUTO(port); - if (currSCCB->OperationCode == RESET_COMMAND) - { + if (currSCCB->OperationCode == RESET_COMMAND) { - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 0; - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, + p_card); - FPT_queueSearchSelect(&FPT_BL_Card[p_card],p_card); + FPT_queueSearchSelect(&FPT_BL_Card[p_card], p_card); - } + } - else if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= - (UCHAR)SYNC_SUPPORTED; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK; - } - - else if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = - (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. - TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI; - } - - else if(currSCCB->Sccb_scsistat == SELECT_Q_ST) - { - /* Make sure this is not a phony BUS_FREE. If we were - reselected or if BUSY is NOT on then this is a - valid BUS FREE. SRR Wednesday, 5/10/1995. */ - - if ((!(RD_HARPOON(port+hp_scsisig) & SCSI_BSY)) || - (RDW_HARPOON((port+hp_intstat)) & RSEL)) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_TAG_Q_MASK; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= TAG_Q_REJECT; - } - - else - { - return; - } - } - - else - { - - currSCCB->Sccb_scsistat = BUS_FREE_ST; - - if (!currSCCB->HostStatus) - { - currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; - } - - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; - else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + else if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= + (unsigned char)SYNC_SUPPORTED; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_SYNC_MASK; + } - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); - return; - } + else if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = + (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_WIDE_SCSI; + } - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + else if (currSCCB->Sccb_scsistat == SELECT_Q_ST) { + /* Make sure this is not a phony BUS_FREE. If we were + reselected or if BUSY is NOT on then this is a + valid BUS FREE. SRR Wednesday, 5/10/1995. */ - } /*end if !=null */ -} + if ((!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) || + (RDW_HARPOON((port + hp_intstat)) & RSEL)) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus &= ~TAR_TAG_Q_MASK; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus |= TAG_Q_REJECT; + } + + else { + return; + } + } + + else { + + currSCCB->Sccb_scsistat = BUS_FREE_ST; + + if (!currSCCB->HostStatus) { + currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL; + } + + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 0; + else + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 0; + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, + p_card); + return; + } + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + } /*end if !=null */ +} /*--------------------------------------------------------------------- * @@ -5202,103 +4561,101 @@ static void FPT_phaseBusFree(ULONG port, * Description: Load the Automation RAM with the defualt map values. * *---------------------------------------------------------------------*/ -static void FPT_autoLoadDefaultMap(ULONG p_port) +static void FPT_autoLoadDefaultMap(unsigned long p_port) { - ULONG map_addr; + unsigned long map_addr; - ARAM_ACCESS(p_port); - map_addr = p_port + hp_aramBase; + ARAM_ACCESS(p_port); + map_addr = p_port + hp_aramBase; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0xC0)); /*ID MESSAGE */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x20)); /*SIMPLE TAG QUEUEING MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, RAT_OP); /*RESET ATTENTION */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+AMSG_OUT+ 0x00)); /*TAG ID MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 0 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 1 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 2 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 3 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 4 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 5 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 6 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 7 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 8 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 9 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 10 */ - map_addr +=2; - WRW_HARPOON(map_addr, (MPM_OP+ACOMMAND+ 0x00)); /*CDB BYTE 11 */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPE_OP+ADATA_OUT+ DINT)); /*JUMP IF DATA OUT */ - map_addr +=2; - WRW_HARPOON(map_addr, (TCB_OP+FIFO_0+ DI)); /*JUMP IF NO DATA IN FIFO */ - map_addr +=2; /*This means AYNC DATA IN */ - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IDO_STRT)); /*STOP AND INTERRUPT */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPE_OP+ADATA_IN+DINT)); /*JUMP IF NOT DATA IN PHZ */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ ST)); /*IF NOT MSG IN CHECK 4 DATA IN */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x02)); /*SAVE DATA PTR MSG? */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ DC)); /*GO CHECK FOR DISCONNECT MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_AR1)); /*SAVE DATA PTRS MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ ST)); /*IF NOT MSG IN CHECK DATA IN */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x04)); /*DISCONNECT MSG? */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ UNKNWN));/*UKNKNOWN MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_BUCKET));/*XFER DISCONNECT MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ITAR_DISC));/*STOP AND INTERRUPT */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+ASTATUS+ UNKNWN));/*JUMP IF NOT STATUS PHZ. */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_AR0)); /*GET STATUS BYTE */ - map_addr +=2; - WRW_HARPOON(map_addr, (CPN_OP+AMSG_IN+ CC)); /*ERROR IF NOT MSG IN PHZ */ - map_addr +=2; - WRW_HARPOON(map_addr, (CRD_OP+SDATA+ 0x00)); /*CHECK FOR CMD COMPLETE MSG. */ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+NOT_EQ+ CC)); /*ERROR IF NOT CMD COMPLETE MSG. */ - map_addr +=2; - WRW_HARPOON(map_addr, (MRR_OP+SDATA+ D_BUCKET));/*GET CMD COMPLETE MSG */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ICMD_COMP));/*END OF COMMAND */ - map_addr +=2; - - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IUNKWN)); /*RECEIVED UNKNOWN MSG BYTE */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_ITICKLE)); /*BIOS Tickled the Mgr */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_IRFAIL)); /*EXPECTED ID/TAG MESSAGES AND */ - map_addr +=2; /* DIDN'T GET ONE */ - WRW_HARPOON(map_addr, (CRR_OP+AR3+ S_IDREG)); /* comp SCSI SEL ID & AR3*/ - map_addr +=2; - WRW_HARPOON(map_addr, (BRH_OP+EQUAL+ 0x00)); /*SEL ID OK then Conti. */ - map_addr +=2; - WRW_HARPOON(map_addr, (SSI_OP+ SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0xC0)); /*ID MESSAGE */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0x20)); /*SIMPLE TAG QUEUEING MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, RAT_OP); /*RESET ATTENTION */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + AMSG_OUT + 0x00)); /*TAG ID MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 0 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 1 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 2 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 3 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 4 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 5 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 6 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 7 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 8 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 9 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 10 */ + map_addr += 2; + WRW_HARPOON(map_addr, (MPM_OP + ACOMMAND + 0x00)); /*CDB BYTE 11 */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPE_OP + ADATA_OUT + DINT)); /*JUMP IF DATA OUT */ + map_addr += 2; + WRW_HARPOON(map_addr, (TCB_OP + FIFO_0 + DI)); /*JUMP IF NO DATA IN FIFO */ + map_addr += 2; /*This means AYNC DATA IN */ + WRW_HARPOON(map_addr, (SSI_OP + SSI_IDO_STRT)); /*STOP AND INTERRUPT */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPE_OP + ADATA_IN + DINT)); /*JUMP IF NOT DATA IN PHZ */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + ST)); /*IF NOT MSG IN CHECK 4 DATA IN */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x02)); /*SAVE DATA PTR MSG? */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + DC)); /*GO CHECK FOR DISCONNECT MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_AR1)); /*SAVE DATA PTRS MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + ST)); /*IF NOT MSG IN CHECK DATA IN */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x04)); /*DISCONNECT MSG? */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + UNKNWN)); /*UKNKNOWN MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_BUCKET)); /*XFER DISCONNECT MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ITAR_DISC)); /*STOP AND INTERRUPT */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + ASTATUS + UNKNWN)); /*JUMP IF NOT STATUS PHZ. */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_AR0)); /*GET STATUS BYTE */ + map_addr += 2; + WRW_HARPOON(map_addr, (CPN_OP + AMSG_IN + CC)); /*ERROR IF NOT MSG IN PHZ */ + map_addr += 2; + WRW_HARPOON(map_addr, (CRD_OP + SDATA + 0x00)); /*CHECK FOR CMD COMPLETE MSG. */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + NOT_EQ + CC)); /*ERROR IF NOT CMD COMPLETE MSG. */ + map_addr += 2; + WRW_HARPOON(map_addr, (MRR_OP + SDATA + D_BUCKET)); /*GET CMD COMPLETE MSG */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ICMD_COMP)); /*END OF COMMAND */ + map_addr += 2; + + WRW_HARPOON(map_addr, (SSI_OP + SSI_IUNKWN)); /*RECEIVED UNKNOWN MSG BYTE */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_ITICKLE)); /*BIOS Tickled the Mgr */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_IRFAIL)); /*EXPECTED ID/TAG MESSAGES AND */ + map_addr += 2; /* DIDN'T GET ONE */ + WRW_HARPOON(map_addr, (CRR_OP + AR3 + S_IDREG)); /* comp SCSI SEL ID & AR3 */ + map_addr += 2; + WRW_HARPOON(map_addr, (BRH_OP + EQUAL + 0x00)); /*SEL ID OK then Conti. */ + map_addr += 2; + WRW_HARPOON(map_addr, (SSI_OP + SSI_INO_CC)); /*NO COMMAND COMPLETE AFTER STATUS */ - - - SGRAM_ACCESS(p_port); + SGRAM_ACCESS(p_port); } /*--------------------------------------------------------------------- @@ -5310,203 +4667,261 @@ static void FPT_autoLoadDefaultMap(ULONG * *---------------------------------------------------------------------*/ -static void FPT_autoCmdCmplt(ULONG p_port, UCHAR p_card) +static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card) { - PSCCB currSCCB; - UCHAR status_byte; - - currSCCB = FPT_BL_Card[p_card].currentSCCB; + struct sccb *currSCCB; + unsigned char status_byte; - status_byte = RD_HARPOON(p_port+hp_gp_reg_0); + currSCCB = FPT_BL_Card[p_card].currentSCCB; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA = 0; + status_byte = RD_HARPOON(p_port + hp_gp_reg_0); - if (status_byte != SSGOOD) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA = 0; - if (status_byte == SSQ_FULL) { + if (status_byte != SSGOOD) { + if (status_byte == SSQ_FULL) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - currSCCB->Sccb_MGRFlags |= F_STATUSLOADED; - - FPT_queueSelectFail(&FPT_BL_Card[p_card],p_card); + currSCCB->Sccb_MGRFlags |= F_STATUSLOADED; - return; - } + FPT_queueSelectFail(&FPT_BL_Card[p_card], p_card); - if(currSCCB->Sccb_scsistat == SELECT_SN_ST) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= - (UCHAR)SYNC_SUPPORTED; - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_SYNC_MASK; - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + return; + } - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + if (currSCCB->Sccb_scsistat == SELECT_SN_ST) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus |= + (unsigned char)SYNC_SUPPORTED; + + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_SYNC_MASK; + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - return; - - } - - if(currSCCB->Sccb_scsistat == SELECT_WN_ST) - { + return; - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = - (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. - TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + } - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= ~EE_WIDE_SCSI; - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + if (currSCCB->Sccb_scsistat == SELECT_WN_ST) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus = + (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & ~WIDE_ENABLED) | WIDE_NEGOCIATED; + + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue &= + ~EE_WIDE_SCSI; + FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = 1; + if (FPT_BL_Card[p_card].discQCount != 0) FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card].discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card].discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + LunDiscQ_Idx[0]] = NULL; } } - return; - - } - - if (status_byte == SSCHECK) - { - if(FPT_BL_Card[p_card].globalFlags & F_DO_RENEGO) - { - if (FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_SYNC_MASK) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_SYNC_MASK; + return; + + } + + if (status_byte == SSCHECK) { + if (FPT_BL_Card[p_card].globalFlags & F_DO_RENEGO) { + if (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarEEValue & EE_SYNC_MASK) { + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarStatus &= ~TAR_SYNC_MASK; } - if (FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarEEValue & EE_WIDE_SCSI) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus &= ~TAR_WIDE_MASK; + if (FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarEEValue & EE_WIDE_SCSI) { + FPT_sccbMgrTbl[p_card][currSCCB-> + TargID]. + TarStatus &= ~TAR_WIDE_MASK; } } } - if (!(currSCCB->Sccb_XferState & F_AUTO_SENSE)) { - - currSCCB->SccbStatus = SCCB_ERROR; - currSCCB->TargetStatus = status_byte; - - if (status_byte == SSCHECK) { - - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUN_CA - = 1; - - - if (currSCCB->RequestSenseLength != NO_AUTO_REQUEST_SENSE) { + if (!(currSCCB->Sccb_XferState & F_AUTO_SENSE)) { - if (currSCCB->RequestSenseLength == 0) - currSCCB->RequestSenseLength = 14; + currSCCB->SccbStatus = SCCB_ERROR; + currSCCB->TargetStatus = status_byte; - FPT_ssenss(&FPT_BL_Card[p_card]); - FPT_BL_Card[p_card].globalFlags |= F_NEW_SCCB_CMD; + if (status_byte == SSCHECK) { - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 1; - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[currSCCB->Lun]] = NULL; - } - else - { - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 1; - if(currSCCB->Sccb_tag) - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[currSCCB->Sccb_tag] = NULL; - }else - { - if(FPT_BL_Card[p_card].discQCount != 0) - FPT_BL_Card[p_card].discQCount--; - FPT_BL_Card[p_card].discQ_Tbl[FPT_sccbMgrTbl[p_card][currSCCB->TargID].LunDiscQ_Idx[0]] = NULL; + FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarLUN_CA = 1; + + if (currSCCB->RequestSenseLength != + NO_AUTO_REQUEST_SENSE) { + + if (currSCCB->RequestSenseLength == 0) + currSCCB->RequestSenseLength = + 14; + + FPT_ssenss(&FPT_BL_Card[p_card]); + FPT_BL_Card[p_card].globalFlags |= + F_NEW_SCCB_CMD; + + if (((FPT_BL_Card[p_card]. + globalFlags & F_CONLUN_IO) + && + ((FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { + FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarLUNBusy[currSCCB->Lun] = + 1; + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card[p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[FPT_sccbMgrTbl + [p_card] + [currSCCB-> + TargID]. + LunDiscQ_Idx + [currSCCB->Lun]] = + NULL; + } else { + FPT_sccbMgrTbl[p_card] + [currSCCB->TargID]. + TarLUNBusy[0] = 1; + if (currSCCB->Sccb_tag) { + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card + [p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl[currSCCB-> + Sccb_tag] + = NULL; + } else { + if (FPT_BL_Card[p_card]. + discQCount != 0) + FPT_BL_Card + [p_card]. + discQCount--; + FPT_BL_Card[p_card]. + discQ_Tbl + [FPT_sccbMgrTbl + [p_card][currSCCB-> + TargID]. + LunDiscQ_Idx[0]] = + NULL; } } - return; - } - } - } - } - + return; + } + } + } + } - if((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB->Lun] = 0; + if ((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((FPT_sccbMgrTbl[p_card][currSCCB->TargID]. + TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[currSCCB-> + Lun] = 0; else - FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; + FPT_sccbMgrTbl[p_card][currSCCB->TargID].TarLUNBusy[0] = 0; - - FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], currSCCB, p_card); } #define SHORT_WAIT 0x0000000F #define LONG_WAIT 0x0000FFFFL - /*--------------------------------------------------------------------- * * Function: Data Transfer Processor @@ -5525,37 +4940,33 @@ static void FPT_autoCmdCmplt(ULONG p_por * *---------------------------------------------------------------------*/ -static void FPT_dataXferProcessor(ULONG port, PSCCBcard pCurrCard) +static void FPT_dataXferProcessor(unsigned long port, + struct sccb_card *pCurrCard) { - PSCCB currSCCB; + struct sccb *currSCCB; - currSCCB = pCurrCard->currentSCCB; + currSCCB = pCurrCard->currentSCCB; - if (currSCCB->Sccb_XferState & F_SG_XFER) - { - if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + if (currSCCB->Sccb_XferState & F_SG_XFER) { + if (pCurrCard->globalFlags & F_HOST_XFER_ACT) + { + currSCCB->Sccb_sgseg += (unsigned char)SG_BUF_CNT; + currSCCB->Sccb_SGoffset = 0x00; + } + pCurrCard->globalFlags |= F_HOST_XFER_ACT; - { - currSCCB->Sccb_sgseg += (UCHAR)SG_BUF_CNT; - currSCCB->Sccb_SGoffset = 0x00; - } + FPT_busMstrSGDataXferStart(port, currSCCB); + } + + else { + if (!(pCurrCard->globalFlags & F_HOST_XFER_ACT)) { pCurrCard->globalFlags |= F_HOST_XFER_ACT; - - FPT_busMstrSGDataXferStart(port, currSCCB); - } - else - { - if (!(pCurrCard->globalFlags & F_HOST_XFER_ACT)) - { - pCurrCard->globalFlags |= F_HOST_XFER_ACT; - - FPT_busMstrDataXferStart(port, currSCCB); - } - } + FPT_busMstrDataXferStart(port, currSCCB); + } + } } - /*--------------------------------------------------------------------- * * Function: BusMaster Scatter Gather Data Transfer Start @@ -5563,104 +4974,101 @@ static void FPT_dataXferProcessor(ULONG * Description: * *---------------------------------------------------------------------*/ -static void FPT_busMstrSGDataXferStart(ULONG p_port, PSCCB pcurrSCCB) +static void FPT_busMstrSGDataXferStart(unsigned long p_port, + struct sccb *pcurrSCCB) { - ULONG count,addr,tmpSGCnt; - UINT sg_index; - UCHAR sg_count, i; - ULONG reg_offset; - - - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - - count = ((ULONG) HOST_RD_CMD)<<24; - } - - else { - count = ((ULONG) HOST_WRT_CMD)<<24; - } - - sg_count = 0; - tmpSGCnt = 0; - sg_index = pcurrSCCB->Sccb_sgseg; - reg_offset = hp_aramBase; - + unsigned long count, addr, tmpSGCnt; + unsigned int sg_index; + unsigned char sg_count, i; + unsigned long reg_offset; - i = (UCHAR) (RD_HARPOON(p_port+hp_page_ctrl) & ~(SGRAM_ARAM|SCATTER_EN)); + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + count = ((unsigned long)HOST_RD_CMD) << 24; + } - WR_HARPOON(p_port+hp_page_ctrl, i); - - while ((sg_count < (UCHAR)SG_BUF_CNT) && - ((ULONG)(sg_index * (UINT)SG_ELEMENT_SIZE) < pcurrSCCB->DataLength) ) { - - tmpSGCnt += *(((ULONG *)pcurrSCCB->DataPointer)+ - (sg_index * 2)); + else { + count = ((unsigned long)HOST_WRT_CMD) << 24; + } - count |= *(((ULONG *)pcurrSCCB->DataPointer)+ - (sg_index * 2)); + sg_count = 0; + tmpSGCnt = 0; + sg_index = pcurrSCCB->Sccb_sgseg; + reg_offset = hp_aramBase; - addr = *(((ULONG *)pcurrSCCB->DataPointer)+ - ((sg_index * 2) + 1)); + i = (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & + ~(SGRAM_ARAM | SCATTER_EN)); + WR_HARPOON(p_port + hp_page_ctrl, i); - if ((!sg_count) && (pcurrSCCB->Sccb_SGoffset)) { + while ((sg_count < (unsigned char)SG_BUF_CNT) && + ((unsigned long)(sg_index * (unsigned int)SG_ELEMENT_SIZE) < + pcurrSCCB->DataLength)) { - addr += ((count & 0x00FFFFFFL) - pcurrSCCB->Sccb_SGoffset); - count = (count & 0xFF000000L) | pcurrSCCB->Sccb_SGoffset; + tmpSGCnt += *(((unsigned long *)pcurrSCCB->DataPointer) + + (sg_index * 2)); - tmpSGCnt = count & 0x00FFFFFFL; - } + count |= *(((unsigned long *)pcurrSCCB->DataPointer) + + (sg_index * 2)); - WR_HARP32(p_port,reg_offset,addr); - reg_offset +=4; + addr = *(((unsigned long *)pcurrSCCB->DataPointer) + + ((sg_index * 2) + 1)); - WR_HARP32(p_port,reg_offset,count); - reg_offset +=4; + if ((!sg_count) && (pcurrSCCB->Sccb_SGoffset)) { - count &= 0xFF000000L; - sg_index++; - sg_count++; + addr += + ((count & 0x00FFFFFFL) - pcurrSCCB->Sccb_SGoffset); + count = + (count & 0xFF000000L) | pcurrSCCB->Sccb_SGoffset; - } /*End While */ + tmpSGCnt = count & 0x00FFFFFFL; + } - pcurrSCCB->Sccb_XferCnt = tmpSGCnt; + WR_HARP32(p_port, reg_offset, addr); + reg_offset += 4; - WR_HARPOON(p_port+hp_sg_addr,(sg_count<<4)); + WR_HARP32(p_port, reg_offset, count); + reg_offset += 4; - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + count &= 0xFF000000L; + sg_index++; + sg_count++; - WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt); + } /*End While */ + pcurrSCCB->Sccb_XferCnt = tmpSGCnt; - WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH); - } + WR_HARPOON(p_port + hp_sg_addr, (sg_count << 4)); - else { + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); - if ((!(RD_HARPOON(p_port+hp_synctarg_0) & NARROW_SCSI)) && - (tmpSGCnt & 0x000000001)) - { + WR_HARPOON(p_port + hp_portctrl_0, + (DMA_PORT | SCSI_PORT | SCSI_INBIT)); + WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); + } - pcurrSCCB->Sccb_XferState |= F_ODD_BALL_CNT; - tmpSGCnt--; - } + else { + if ((!(RD_HARPOON(p_port + hp_synctarg_0) & NARROW_SCSI)) && + (tmpSGCnt & 0x000000001)) { - WR_HARP32(p_port,hp_xfercnt_0,tmpSGCnt); + pcurrSCCB->Sccb_XferState |= F_ODD_BALL_CNT; + tmpSGCnt--; + } - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD)); - WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH); - } + WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | DMA_PORT | DMA_RD)); + WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); + } - WR_HARPOON(p_port+hp_page_ctrl, (UCHAR) (i | SCATTER_EN)); + WR_HARPOON(p_port + hp_page_ctrl, (unsigned char)(i | SCATTER_EN)); } - /*--------------------------------------------------------------------- * * Function: BusMaster Data Transfer Start @@ -5668,47 +5076,49 @@ static void FPT_busMstrSGDataXferStart(U * Description: * *---------------------------------------------------------------------*/ -static void FPT_busMstrDataXferStart(ULONG p_port, PSCCB pcurrSCCB) +static void FPT_busMstrDataXferStart(unsigned long p_port, + struct sccb *pcurrSCCB) { - ULONG addr,count; - - if (!(pcurrSCCB->Sccb_XferState & F_AUTO_SENSE)) { + unsigned long addr, count; - count = pcurrSCCB->Sccb_XferCnt; + if (!(pcurrSCCB->Sccb_XferState & F_AUTO_SENSE)) { - addr = (ULONG) pcurrSCCB->DataPointer + pcurrSCCB->Sccb_ATC; - } + count = pcurrSCCB->Sccb_XferCnt; - else { - addr = pcurrSCCB->SensePointer; - count = pcurrSCCB->RequestSenseLength; + addr = + (unsigned long)pcurrSCCB->DataPointer + pcurrSCCB->Sccb_ATC; + } - } + else { + addr = pcurrSCCB->SensePointer; + count = pcurrSCCB->RequestSenseLength; - HP_SETUP_ADDR_CNT(p_port,addr,count); + } + HP_SETUP_ADDR_CNT(p_port, addr, count); - if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { + if (pcurrSCCB->Sccb_XferState & F_HOST_XFER_DIR) { - WR_HARPOON(p_port+hp_portctrl_0,(DMA_PORT | SCSI_PORT | SCSI_INBIT)); - WR_HARPOON(p_port+hp_scsisig, S_DATAI_PH); + WR_HARPOON(p_port + hp_portctrl_0, + (DMA_PORT | SCSI_PORT | SCSI_INBIT)); + WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); - WR_HARPOON(p_port+hp_xfer_cmd, - (XFER_DMA_HOST | XFER_HOST_AUTO | XFER_DMA_8BIT)); - } + WR_HARPOON(p_port + hp_xfer_cmd, + (XFER_DMA_HOST | XFER_HOST_AUTO | XFER_DMA_8BIT)); + } - else { + else { - WR_HARPOON(p_port+hp_portctrl_0,(SCSI_PORT | DMA_PORT | DMA_RD)); - WR_HARPOON(p_port+hp_scsisig, S_DATAO_PH); + WR_HARPOON(p_port + hp_portctrl_0, + (SCSI_PORT | DMA_PORT | DMA_RD)); + WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); - WR_HARPOON(p_port+hp_xfer_cmd, - (XFER_HOST_DMA | XFER_HOST_AUTO | XFER_DMA_8BIT)); + WR_HARPOON(p_port + hp_xfer_cmd, + (XFER_HOST_DMA | XFER_HOST_AUTO | XFER_DMA_8BIT)); - } + } } - /*--------------------------------------------------------------------- * * Function: BusMaster Timeout Handler @@ -5721,37 +5131,38 @@ static void FPT_busMstrDataXferStart(ULO * command busy is also time out, it'll just give up. * *---------------------------------------------------------------------*/ -static UCHAR FPT_busMstrTimeOut(ULONG p_port) +static unsigned char FPT_busMstrTimeOut(unsigned long p_port) { - ULONG timeout; + unsigned long timeout; - timeout = LONG_WAIT; + timeout = LONG_WAIT; - WR_HARPOON(p_port+hp_sys_ctrl, HALT_MACH); + WR_HARPOON(p_port + hp_sys_ctrl, HALT_MACH); - while ((!(RD_HARPOON(p_port+hp_ext_status) & CMD_ABORTED)) && timeout--) {} + while ((!(RD_HARPOON(p_port + hp_ext_status) & CMD_ABORTED)) + && timeout--) { + } - - - if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) { - WR_HARPOON(p_port+hp_sys_ctrl, HARD_ABORT); + if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { + WR_HARPOON(p_port + hp_sys_ctrl, HARD_ABORT); - timeout = LONG_WAIT; - while ((RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} - } + timeout = LONG_WAIT; + while ((RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } + } - RD_HARPOON(p_port+hp_int_status); /*Clear command complete */ + RD_HARPOON(p_port + hp_int_status); /*Clear command complete */ - if (RD_HARPOON(p_port+hp_ext_status) & BM_CMD_BUSY) { - return(1); - } + if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { + return 1; + } - else { - return(0); - } + else { + return 0; + } } - /*--------------------------------------------------------------------- * * Function: Host Data Transfer Abort @@ -5759,256 +5170,282 @@ static UCHAR FPT_busMstrTimeOut(ULONG p_ * Description: Abort any in progress transfer. * *---------------------------------------------------------------------*/ -static void FPT_hostDataXferAbort(ULONG port, UCHAR p_card, PSCCB pCurrSCCB) +static void FPT_hostDataXferAbort(unsigned long port, unsigned char p_card, + struct sccb *pCurrSCCB) { - ULONG timeout; - ULONG remain_cnt; - UINT sg_ptr; - - FPT_BL_Card[p_card].globalFlags &= ~F_HOST_XFER_ACT; - - if (pCurrSCCB->Sccb_XferState & F_AUTO_SENSE) { - - - if (!(RD_HARPOON(port+hp_int_status) & INT_CMD_COMPL)) { - - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) | FLUSH_XFER_CNTR)); - timeout = LONG_WAIT; - - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} - - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) & ~FLUSH_XFER_CNTR)); - - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { - - if (FPT_busMstrTimeOut(port)) { - - if (pCurrSCCB->HostStatus == 0x00) + unsigned long timeout; + unsigned long remain_cnt; + unsigned int sg_ptr; - pCurrSCCB->HostStatus = SCCB_BM_ERR; + FPT_BL_Card[p_card].globalFlags &= ~F_HOST_XFER_ACT; - } + if (pCurrSCCB->Sccb_XferState & F_AUTO_SENSE) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) + if (!(RD_HARPOON(port + hp_int_status) & INT_CMD_COMPL)) { - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) | + FLUSH_XFER_CNTR)); + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) - - { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } - } - - else if (pCurrSCCB->Sccb_XferCnt) { - - if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { - - - WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) & - ~SCATTER_EN)); + while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } - WR_HARPOON(port+hp_sg_addr,0x00); + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) & + ~FLUSH_XFER_CNTR)); - sg_ptr = pCurrSCCB->Sccb_sgseg + SG_BUF_CNT; + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - if (sg_ptr > (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE)) { + if (FPT_busMstrTimeOut(port)) { - sg_ptr = (UINT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE); - } + if (pCurrSCCB->HostStatus == 0x00) - remain_cnt = pCurrSCCB->Sccb_XferCnt; + pCurrSCCB->HostStatus = + SCCB_BM_ERR; - while (remain_cnt < 0x01000000L) { + } - sg_ptr--; + if (RD_HARPOON(port + hp_int_status) & + INT_EXT_STATUS) - if (remain_cnt > (ULONG)(*(((ULONG *)pCurrSCCB-> - DataPointer) + (sg_ptr * 2)))) { + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) - remain_cnt -= (ULONG)(*(((ULONG *)pCurrSCCB-> - DataPointer) + (sg_ptr * 2))); - } + if (pCurrSCCB->HostStatus == + 0x00) + { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } + } - else { + else if (pCurrSCCB->Sccb_XferCnt) { - break; - } - } + if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & + ~SCATTER_EN)); + WR_HARPOON(port + hp_sg_addr, 0x00); - if (remain_cnt < 0x01000000L) { + sg_ptr = pCurrSCCB->Sccb_sgseg + SG_BUF_CNT; + if (sg_ptr > + (unsigned int)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE)) { - pCurrSCCB->Sccb_SGoffset = remain_cnt; + sg_ptr = + (unsigned int)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE); + } - pCurrSCCB->Sccb_sgseg = (USHORT)sg_ptr; + remain_cnt = pCurrSCCB->Sccb_XferCnt; + while (remain_cnt < 0x01000000L) { - if ((ULONG)(sg_ptr * SG_ELEMENT_SIZE) == pCurrSCCB->DataLength - && (remain_cnt == 0)) + sg_ptr--; - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - } + if (remain_cnt > + (unsigned + long)(*(((unsigned long *)pCurrSCCB-> + DataPointer) + (sg_ptr * 2)))) { - else { + remain_cnt -= + (unsigned + long)(*(((unsigned long *) + pCurrSCCB->DataPointer) + + (sg_ptr * 2))); + } + else { - if (pCurrSCCB->HostStatus == 0x00) { + break; + } + } - pCurrSCCB->HostStatus = SCCB_GROSS_FW_ERR; - } - } - } + if (remain_cnt < 0x01000000L) { + pCurrSCCB->Sccb_SGoffset = remain_cnt; - if (!(pCurrSCCB->Sccb_XferState & F_HOST_XFER_DIR)) { + pCurrSCCB->Sccb_sgseg = (unsigned short)sg_ptr; + if ((unsigned long)(sg_ptr * SG_ELEMENT_SIZE) == + pCurrSCCB->DataLength && (remain_cnt == 0)) - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + pCurrSCCB->Sccb_XferState |= + F_ALL_XFERRED; + } - FPT_busMstrTimeOut(port); - } + else { - else { + if (pCurrSCCB->HostStatus == 0x00) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + pCurrSCCB->HostStatus = + SCCB_GROSS_FW_ERR; + } + } + } - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + if (!(pCurrSCCB->Sccb_XferState & F_HOST_XFER_DIR)) { - if (pCurrSCCB->HostStatus == 0x00) { + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } + FPT_busMstrTimeOut(port); + } - } - } + else { - else { + if (RD_HARPOON(port + hp_int_status) & + INT_EXT_STATUS) { + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) { - if ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) { + if (pCurrSCCB->HostStatus == + 0x00) { - timeout = SHORT_WAIT; + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && - ((RD_HARPOON(port+hp_fifo_cnt)) >= BM_THRESHOLD) && - timeout--) {} - } + } + } - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + else { - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) | - FLUSH_XFER_CNTR)); + if ((RD_HARPOON(port + hp_fifo_cnt)) >= BM_THRESHOLD) { - timeout = LONG_WAIT; + timeout = SHORT_WAIT; - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && - timeout--) {} + while ((RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) + && ((RD_HARPOON(port + hp_fifo_cnt)) >= + BM_THRESHOLD) && timeout--) { + } + } - WR_HARPOON(port+hp_bm_ctrl, (RD_HARPOON(port+hp_bm_ctrl) & - ~FLUSH_XFER_CNTR)); + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) | + FLUSH_XFER_CNTR)); - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) { + while ((RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) && timeout--) { + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } + WR_HARPOON(port + hp_bm_ctrl, + (RD_HARPOON(port + hp_bm_ctrl) & + ~FLUSH_XFER_CNTR)); - FPT_busMstrTimeOut(port); - } - } + if (RD_HARPOON(port + hp_ext_status) & + BM_CMD_BUSY) { - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + if (pCurrSCCB->HostStatus == 0x00) { - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } - if (pCurrSCCB->HostStatus == 0x00) { + FPT_busMstrTimeOut(port); + } + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } - } - } + if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) { - } + if (RD_HARPOON(port + hp_ext_status) & + BAD_EXT_STATUS) { - else { + if (pCurrSCCB->HostStatus == 0x00) { + pCurrSCCB->HostStatus = + SCCB_BM_ERR; + } + } + } + } - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + } - timeout = LONG_WAIT; + else { - while ((RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) && timeout--) {} + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - if (RD_HARPOON(port+hp_ext_status) & BM_CMD_BUSY) { + timeout = LONG_WAIT; - if (pCurrSCCB->HostStatus == 0x00) { + while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) + && timeout--) { + } - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } + if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) { - FPT_busMstrTimeOut(port); - } - } + if (pCurrSCCB->HostStatus == 0x00) { + pCurrSCCB->HostStatus = SCCB_BM_ERR; + } - if (RD_HARPOON(port+hp_int_status) & INT_EXT_STATUS) { + FPT_busMstrTimeOut(port); + } + } - if (RD_HARPOON(port+hp_ext_status) & BAD_EXT_STATUS) { + if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) { - if (pCurrSCCB->HostStatus == 0x00) { + if (RD_HARPOON(port + hp_ext_status) & BAD_EXT_STATUS) { - pCurrSCCB->HostStatus = SCCB_BM_ERR; - } - } + if (pCurrSCCB->HostStatus == 0x00) { - } + pCurrSCCB->HostStatus = SCCB_BM_ERR; + } + } - if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { + } - WR_HARPOON(port+hp_page_ctrl, (RD_HARPOON(port+hp_page_ctrl) & - ~SCATTER_EN)); + if (pCurrSCCB->Sccb_XferState & F_SG_XFER) { - WR_HARPOON(port+hp_sg_addr,0x00); + WR_HARPOON(port + hp_page_ctrl, + (RD_HARPOON(port + hp_page_ctrl) & + ~SCATTER_EN)); - pCurrSCCB->Sccb_sgseg += SG_BUF_CNT; + WR_HARPOON(port + hp_sg_addr, 0x00); - pCurrSCCB->Sccb_SGoffset = 0x00; + pCurrSCCB->Sccb_sgseg += SG_BUF_CNT; + pCurrSCCB->Sccb_SGoffset = 0x00; - if ((ULONG)(pCurrSCCB->Sccb_sgseg * SG_ELEMENT_SIZE) >= - pCurrSCCB->DataLength) { + if ((unsigned long)(pCurrSCCB->Sccb_sgseg * + SG_ELEMENT_SIZE) >= + pCurrSCCB->DataLength) { - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; + pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - pCurrSCCB->Sccb_sgseg = (USHORT)(pCurrSCCB->DataLength / SG_ELEMENT_SIZE); + pCurrSCCB->Sccb_sgseg = + (unsigned short)(pCurrSCCB->DataLength / + SG_ELEMENT_SIZE); - } - } + } + } - else { + else { - if (!(pCurrSCCB->Sccb_XferState & F_AUTO_SENSE)) + if (!(pCurrSCCB->Sccb_XferState & F_AUTO_SENSE)) - pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; - } - } + pCurrSCCB->Sccb_XferState |= F_ALL_XFERRED; + } + } - WR_HARPOON(port+hp_int_mask,(INT_CMD_COMPL | SCSI_INTERRUPT)); + WR_HARPOON(port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); } - - /*--------------------------------------------------------------------- * * Function: Host Data Transfer Restart @@ -6017,47 +5454,47 @@ static void FPT_hostDataXferAbort(ULONG * pointers message. * *---------------------------------------------------------------------*/ -static void FPT_hostDataXferRestart(PSCCB currSCCB) +static void FPT_hostDataXferRestart(struct sccb *currSCCB) { - ULONG data_count; - UINT sg_index; - ULONG *sg_ptr; + unsigned long data_count; + unsigned int sg_index; + unsigned long *sg_ptr; - if (currSCCB->Sccb_XferState & F_SG_XFER) { + if (currSCCB->Sccb_XferState & F_SG_XFER) { - currSCCB->Sccb_XferCnt = 0; + currSCCB->Sccb_XferCnt = 0; - sg_index = 0xffff; /*Index by long words into sg list. */ - data_count = 0; /*Running count of SG xfer counts. */ + sg_index = 0xffff; /*Index by long words into sg list. */ + data_count = 0; /*Running count of SG xfer counts. */ - sg_ptr = (ULONG *)currSCCB->DataPointer; + sg_ptr = (unsigned long *)currSCCB->DataPointer; - while (data_count < currSCCB->Sccb_ATC) { + while (data_count < currSCCB->Sccb_ATC) { - sg_index++; - data_count += *(sg_ptr+(sg_index * 2)); - } + sg_index++; + data_count += *(sg_ptr + (sg_index * 2)); + } - if (data_count == currSCCB->Sccb_ATC) { + if (data_count == currSCCB->Sccb_ATC) { - currSCCB->Sccb_SGoffset = 0; - sg_index++; - } + currSCCB->Sccb_SGoffset = 0; + sg_index++; + } - else { - currSCCB->Sccb_SGoffset = data_count - currSCCB->Sccb_ATC; - } + else { + currSCCB->Sccb_SGoffset = + data_count - currSCCB->Sccb_ATC; + } - currSCCB->Sccb_sgseg = (USHORT)sg_index; - } + currSCCB->Sccb_sgseg = (unsigned short)sg_index; + } - else { - currSCCB->Sccb_XferCnt = currSCCB->DataLength - currSCCB->Sccb_ATC; - } + else { + currSCCB->Sccb_XferCnt = + currSCCB->DataLength - currSCCB->Sccb_ATC; + } } - - /*--------------------------------------------------------------------- * * Function: FPT_scini @@ -6066,177 +5503,192 @@ static void FPT_hostDataXferRestart(PSCC * *---------------------------------------------------------------------*/ -static void FPT_scini(UCHAR p_card, UCHAR p_our_id, UCHAR p_power_up) +static void FPT_scini(unsigned char p_card, unsigned char p_our_id, + unsigned char p_power_up) { - UCHAR loser,assigned_id; - ULONG p_port; + unsigned char loser, assigned_id; + unsigned long p_port; - UCHAR i,k,ScamFlg ; - PSCCBcard currCard; - PNVRamInfo pCurrNvRam; + unsigned char i, k, ScamFlg; + struct sccb_card *currCard; + struct nvram_info *pCurrNvRam; - currCard = &FPT_BL_Card[p_card]; - p_port = currCard->ioPort; + currCard = &FPT_BL_Card[p_card]; + p_port = currCard->ioPort; pCurrNvRam = currCard->pNvRamInfo; - - if(pCurrNvRam){ + if (pCurrNvRam) { ScamFlg = pCurrNvRam->niScamConf; i = pCurrNvRam->niSysConf; + } else { + ScamFlg = + (unsigned char)FPT_utilEERead(p_port, SCAM_CONFIG / 2); + i = (unsigned + char)(FPT_utilEERead(p_port, (SYSTEM_CONFIG / 2))); } - else{ - ScamFlg = (UCHAR) FPT_utilEERead(p_port, SCAM_CONFIG/2); - i = (UCHAR)(FPT_utilEERead(p_port, (SYSTEM_CONFIG/2))); - } - if(!(i & 0x02)) /* check if reset bus in AutoSCSI parameter set */ + if (!(i & 0x02)) /* check if reset bus in AutoSCSI parameter set */ return; - FPT_inisci(p_card,p_port, p_our_id); + FPT_inisci(p_card, p_port, p_our_id); - /* Force to wait 1 sec after SCSI bus reset. Some SCAM device FW - too slow to return to SCAM selection */ + /* Force to wait 1 sec after SCSI bus reset. Some SCAM device FW + too slow to return to SCAM selection */ - /* if (p_power_up) - FPT_Wait1Second(p_port); - else - FPT_Wait(p_port, TO_250ms); */ + /* if (p_power_up) + FPT_Wait1Second(p_port); + else + FPT_Wait(p_port, TO_250ms); */ - FPT_Wait1Second(p_port); + FPT_Wait1Second(p_port); - if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) - { - while (!(FPT_scarb(p_port,INIT_SELTD))) {} + if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) { + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } - FPT_scsel(p_port); + FPT_scsel(p_port); - do { - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,DOM_MSTR); - loser = FPT_scsendi(p_port,&FPT_scamInfo[p_our_id].id_string[0]); - } while ( loser == 0xFF ); + do { + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, DOM_MSTR); + loser = + FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id].id_string[0]); + } while (loser == 0xFF); - FPT_scbusf(p_port); + FPT_scbusf(p_port); - if ((p_power_up) && (!loser)) - { - FPT_sresb(p_port,p_card); - FPT_Wait(p_port, TO_250ms); + if ((p_power_up) && (!loser)) { + FPT_sresb(p_port, p_card); + FPT_Wait(p_port, TO_250ms); - while (!(FPT_scarb(p_port,INIT_SELTD))) {} + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } - FPT_scsel(p_port); + FPT_scsel(p_port); - do { - FPT_scxferc(p_port, SYNC_PTRN); - FPT_scxferc(p_port, DOM_MSTR); - loser = FPT_scsendi(p_port,&FPT_scamInfo[p_our_id]. - id_string[0]); - } while ( loser == 0xFF ); + do { + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, DOM_MSTR); + loser = + FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id]. + id_string[0]); + } while (loser == 0xFF); - FPT_scbusf(p_port); - } - } + FPT_scbusf(p_port); + } + } - else - { - loser = 0; - } + else { + loser = 0; + } + if (!loser) { - if (!loser) - { + FPT_scamInfo[p_our_id].state = ID_ASSIGNED; - FPT_scamInfo[p_our_id].state = ID_ASSIGNED; + if (ScamFlg & SCAM_ENABLED) { + for (i = 0; i < MAX_SCSI_TAR; i++) { + if ((FPT_scamInfo[i].state == ID_UNASSIGNED) || + (FPT_scamInfo[i].state == ID_UNUSED)) { + if (FPT_scsell(p_port, i)) { + FPT_scamInfo[i].state = LEGACY; + if ((FPT_scamInfo[i]. + id_string[0] != 0xFF) + || (FPT_scamInfo[i]. + id_string[1] != 0xFA)) { - if (ScamFlg & SCAM_ENABLED) - { + FPT_scamInfo[i]. + id_string[0] = 0xFF; + FPT_scamInfo[i]. + id_string[1] = 0xFA; + if (pCurrNvRam == NULL) + currCard-> + globalFlags + |= + F_UPDATE_EEPROM; + } + } + } + } - for (i=0; i < MAX_SCSI_TAR; i++) - { - if ((FPT_scamInfo[i].state == ID_UNASSIGNED) || - (FPT_scamInfo[i].state == ID_UNUSED)) - { - if (FPT_scsell(p_port,i)) - { - FPT_scamInfo[i].state = LEGACY; - if ((FPT_scamInfo[i].id_string[0] != 0xFF) || - (FPT_scamInfo[i].id_string[1] != 0xFA)) - { - - FPT_scamInfo[i].id_string[0] = 0xFF; - FPT_scamInfo[i].id_string[1] = 0xFA; - if(pCurrNvRam == NULL) - currCard->globalFlags |= F_UPDATE_EEPROM; - } - } - } - } - - FPT_sresb(p_port,p_card); - FPT_Wait1Second(p_port); - while (!(FPT_scarb(p_port,INIT_SELTD))) {} - FPT_scsel(p_port); - FPT_scasid(p_card, p_port); - } + FPT_sresb(p_port, p_card); + FPT_Wait1Second(p_port); + while (!(FPT_scarb(p_port, INIT_SELTD))) { + } + FPT_scsel(p_port); + FPT_scasid(p_card, p_port); + } - } + } - else if ((loser) && (ScamFlg & SCAM_ENABLED)) - { - FPT_scamInfo[p_our_id].id_string[0] = SLV_TYPE_CODE0; - assigned_id = 0; - FPT_scwtsel(p_port); - - do { - while (FPT_scxferc(p_port,0x00) != SYNC_PTRN) {} - - i = FPT_scxferc(p_port,0x00); - if (i == ASSIGN_ID) - { - if (!(FPT_scsendi(p_port,&FPT_scamInfo[p_our_id].id_string[0]))) - { - i = FPT_scxferc(p_port,0x00); - if (FPT_scvalq(i)) - { - k = FPT_scxferc(p_port,0x00); - - if (FPT_scvalq(k)) - { - currCard->ourId = - ((UCHAR)(i<<3)+(k & (UCHAR)7)) & (UCHAR) 0x3F; - FPT_inisci(p_card, p_port, p_our_id); - FPT_scamInfo[currCard->ourId].state = ID_ASSIGNED; - FPT_scamInfo[currCard->ourId].id_string[0] - = SLV_TYPE_CODE0; - assigned_id = 1; - } - } - } - } - - else if (i == SET_P_FLAG) - { - if (!(FPT_scsendi(p_port, - &FPT_scamInfo[p_our_id].id_string[0]))) - FPT_scamInfo[p_our_id].id_string[0] |= 0x80; - } - }while (!assigned_id); + else if ((loser) && (ScamFlg & SCAM_ENABLED)) { + FPT_scamInfo[p_our_id].id_string[0] = SLV_TYPE_CODE0; + assigned_id = 0; + FPT_scwtsel(p_port); + + do { + while (FPT_scxferc(p_port, 0x00) != SYNC_PTRN) { + } + + i = FPT_scxferc(p_port, 0x00); + if (i == ASSIGN_ID) { + if (! + (FPT_scsendi + (p_port, + &FPT_scamInfo[p_our_id].id_string[0]))) { + i = FPT_scxferc(p_port, 0x00); + if (FPT_scvalq(i)) { + k = FPT_scxferc(p_port, 0x00); + + if (FPT_scvalq(k)) { + currCard->ourId = + ((unsigned char)(i + << + 3) + + + (k & + (unsigned char)7)) + & (unsigned char) + 0x3F; + FPT_inisci(p_card, + p_port, + p_our_id); + FPT_scamInfo[currCard-> + ourId]. + state = ID_ASSIGNED; + FPT_scamInfo[currCard-> + ourId]. + id_string[0] + = SLV_TYPE_CODE0; + assigned_id = 1; + } + } + } + } - while (FPT_scxferc(p_port,0x00) != CFG_CMPLT) {} - } + else if (i == SET_P_FLAG) { + if (!(FPT_scsendi(p_port, + &FPT_scamInfo[p_our_id]. + id_string[0]))) + FPT_scamInfo[p_our_id].id_string[0] |= + 0x80; + } + } while (!assigned_id); - if (ScamFlg & SCAM_ENABLED) - { - FPT_scbusf(p_port); - if (currCard->globalFlags & F_UPDATE_EEPROM) - { - FPT_scsavdi(p_card, p_port); - currCard->globalFlags &= ~F_UPDATE_EEPROM; - } - } + while (FPT_scxferc(p_port, 0x00) != CFG_CMPLT) { + } + } + if (ScamFlg & SCAM_ENABLED) { + FPT_scbusf(p_port); + if (currCard->globalFlags & F_UPDATE_EEPROM) { + FPT_scsavdi(p_card, p_port); + currCard->globalFlags &= ~F_UPDATE_EEPROM; + } + } /* for (i=0,k=0; i < MAX_SCSI_TAR; i++) @@ -6253,7 +5705,6 @@ static void FPT_scini(UCHAR p_card, UCHA */ } - /*--------------------------------------------------------------------- * * Function: FPT_scarb @@ -6262,59 +5713,60 @@ static void FPT_scini(UCHAR p_card, UCHA * *---------------------------------------------------------------------*/ -static int FPT_scarb(ULONG p_port, UCHAR p_sel_type) +static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type) { - if (p_sel_type == INIT_SELTD) - { - - while (RD_HARPOON(p_port+hp_scsisig) & (SCSI_SEL | SCSI_BSY)) {} - - - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL) - return(0); + if (p_sel_type == INIT_SELTD) { - if (RD_HARPOON(p_port+hp_scsidata_0) != 00) - return(0); + while (RD_HARPOON(p_port + hp_scsisig) & (SCSI_SEL | SCSI_BSY)) { + } - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_BSY)); + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) + return 0; - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_SEL) { + if (RD_HARPOON(p_port + hp_scsidata_0) != 00) + return 0; - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) & - ~SCSI_BSY)); - return(0); - } + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_BSY)); + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) { - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_SEL)); + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) & + ~SCSI_BSY)); + return 0; + } - if (RD_HARPOON(p_port+hp_scsidata_0) != 00) { + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_SEL)); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) & - ~(SCSI_BSY | SCSI_SEL))); - return(0); - } - } + if (RD_HARPOON(p_port + hp_scsidata_0) != 00) { + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) & + ~(SCSI_BSY | SCSI_SEL))); + return 0; + } + } - WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0) - & ~ACTdeassert)); - WR_HARPOON(p_port+hp_scsireset, SCAM_EN); - WR_HARPOON(p_port+hp_scsidata_0, 0x00); - WR_HARPOON(p_port+hp_scsidata_1, 0x00); - WR_HARPOON(p_port+hp_portctrl_0, SCSI_BUS_EN); + WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) + & ~ACTdeassert)); + WR_HARPOON(p_port + hp_scsireset, SCAM_EN); + WR_HARPOON(p_port + hp_scsidata_0, 0x00); + WR_HARPOON(p_port + hp_scsidata_1, 0x00); + WR_HARPOON(p_port + hp_portctrl_0, SCSI_BUS_EN); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) | SCSI_MSG)); + WR_HARPOON(p_port + hp_scsisig, + (RD_HARPOON(p_port + hp_scsisig) | SCSI_MSG)); - WR_HARPOON(p_port+hp_scsisig, (RD_HARPOON(p_port+hp_scsisig) - & ~SCSI_BSY)); + WR_HARPOON(p_port + hp_scsisig, (RD_HARPOON(p_port + hp_scsisig) + & ~SCSI_BSY)); - FPT_Wait(p_port,TO_250ms); + FPT_Wait(p_port, TO_250ms); - return(1); + return 1; } - /*--------------------------------------------------------------------- * * Function: FPT_scbusf @@ -6323,34 +5775,30 @@ static int FPT_scarb(ULONG p_port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_scbusf(ULONG p_port) +static void FPT_scbusf(unsigned long p_port) { - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)); - + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); - WR_HARPOON(p_port+hp_scsidata_0, 0x00); + WR_HARPOON(p_port + hp_scsidata_0, 0x00); - WR_HARPOON(p_port+hp_portctrl_0, (RD_HARPOON(p_port+hp_portctrl_0) - & ~SCSI_BUS_EN)); + WR_HARPOON(p_port + hp_portctrl_0, (RD_HARPOON(p_port + hp_portctrl_0) + & ~SCSI_BUS_EN)); - WR_HARPOON(p_port+hp_scsisig, 0x00); + WR_HARPOON(p_port + hp_scsisig, 0x00); + WR_HARPOON(p_port + hp_scsireset, (RD_HARPOON(p_port + hp_scsireset) + & ~SCAM_EN)); - WR_HARPOON(p_port+hp_scsireset, (RD_HARPOON(p_port+hp_scsireset) - & ~SCAM_EN)); + WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) + | ACTdeassert)); - WR_HARPOON(p_port+hp_clkctrl_0, (RD_HARPOON(p_port+hp_clkctrl_0) - | ACTdeassert)); + WRW_HARPOON((p_port + hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL)); - WRW_HARPOON((p_port+hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL)); - - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & ~G_INT_DISABLE)); } - - /*--------------------------------------------------------------------- * * Function: FPT_scasid @@ -6359,85 +5807,74 @@ static void FPT_scbusf(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_scasid(UCHAR p_card, ULONG p_port) +static void FPT_scasid(unsigned char p_card, unsigned long p_port) { - UCHAR temp_id_string[ID_STRING_LENGTH]; + unsigned char temp_id_string[ID_STRING_LENGTH]; - UCHAR i,k,scam_id; - UCHAR crcBytes[3]; - PNVRamInfo pCurrNvRam; - ushort_ptr pCrcBytes; + unsigned char i, k, scam_id; + unsigned char crcBytes[3]; + struct nvram_info *pCurrNvRam; + unsigned short *pCrcBytes; pCurrNvRam = FPT_BL_Card[p_card].pNvRamInfo; - i=0; + i = 0; - while (!i) - { + while (!i) { + + for (k = 0; k < ID_STRING_LENGTH; k++) { + temp_id_string[k] = (unsigned char)0x00; + } + + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, ASSIGN_ID); - for (k=0; k < ID_STRING_LENGTH; k++) - { - temp_id_string[k] = (UCHAR) 0x00; - } - - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,ASSIGN_ID); - - if (!(FPT_sciso(p_port,&temp_id_string[0]))) - { - if(pCurrNvRam){ - pCrcBytes = (ushort_ptr)&crcBytes[0]; + if (!(FPT_sciso(p_port, &temp_id_string[0]))) { + if (pCurrNvRam) { + pCrcBytes = (unsigned short *)&crcBytes[0]; *pCrcBytes = FPT_CalcCrc16(&temp_id_string[0]); crcBytes[2] = FPT_CalcLrc(&temp_id_string[0]); temp_id_string[1] = crcBytes[2]; temp_id_string[2] = crcBytes[0]; temp_id_string[3] = crcBytes[1]; - for(k = 4; k < ID_STRING_LENGTH; k++) - temp_id_string[k] = (UCHAR) 0x00; + for (k = 4; k < ID_STRING_LENGTH; k++) + temp_id_string[k] = (unsigned char)0x00; } - i = FPT_scmachid(p_card,temp_id_string); - - if (i == CLR_PRIORITY) - { - FPT_scxferc(p_port,MISC_CODE); - FPT_scxferc(p_port,CLR_P_FLAG); - i = 0; /*Not the last ID yet. */ - } - - else if (i != NO_ID_AVAIL) - { - if (i < 8 ) - FPT_scxferc(p_port,ID_0_7); - else - FPT_scxferc(p_port,ID_8_F); - - scam_id = (i & (UCHAR) 0x07); - - - for (k=1; k < 0x08; k <<= 1) - if (!( k & i )) - scam_id += 0x08; /*Count number of zeros in DB0-3. */ + i = FPT_scmachid(p_card, temp_id_string); - FPT_scxferc(p_port,scam_id); + if (i == CLR_PRIORITY) { + FPT_scxferc(p_port, MISC_CODE); + FPT_scxferc(p_port, CLR_P_FLAG); + i = 0; /*Not the last ID yet. */ + } - i = 0; /*Not the last ID yet. */ - } - } + else if (i != NO_ID_AVAIL) { + if (i < 8) + FPT_scxferc(p_port, ID_0_7); + else + FPT_scxferc(p_port, ID_8_F); - else - { - i = 1; - } + scam_id = (i & (unsigned char)0x07); - } /*End while */ + for (k = 1; k < 0x08; k <<= 1) + if (!(k & i)) + scam_id += 0x08; /*Count number of zeros in DB0-3. */ - FPT_scxferc(p_port,SYNC_PTRN); - FPT_scxferc(p_port,CFG_CMPLT); -} + FPT_scxferc(p_port, scam_id); + i = 0; /*Not the last ID yet. */ + } + } + else { + i = 1; + } + } /*End while */ + FPT_scxferc(p_port, SYNC_PTRN); + FPT_scxferc(p_port, CFG_CMPLT); +} /*--------------------------------------------------------------------- * @@ -6447,32 +5884,32 @@ static void FPT_scasid(UCHAR p_card, ULO * *---------------------------------------------------------------------*/ -static void FPT_scsel(ULONG p_port) +static void FPT_scsel(unsigned long p_port) { - WR_HARPOON(p_port+hp_scsisig, SCSI_SEL); - FPT_scwiros(p_port, SCSI_MSG); - - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY)); + WR_HARPOON(p_port + hp_scsisig, SCSI_SEL); + FPT_scwiros(p_port, SCSI_MSG); + WR_HARPOON(p_port + hp_scsisig, (SCSI_SEL | SCSI_BSY)); - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); - WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) | - (UCHAR)(BIT(7)+BIT(6)))); + WR_HARPOON(p_port + hp_scsisig, + (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + WR_HARPOON(p_port + hp_scsidata_0, + (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) | + (unsigned char)(BIT(7) + BIT(6)))); + WR_HARPOON(p_port + hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + FPT_scwiros(p_port, SCSI_SEL); - WR_HARPOON(p_port+hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD)); - FPT_scwiros(p_port, SCSI_SEL); + WR_HARPOON(p_port + hp_scsidata_0, + (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) & + ~(unsigned char)BIT(6))); + FPT_scwirod(p_port, BIT(6)); - WR_HARPOON(p_port+hp_scsidata_0, (UCHAR)(RD_HARPOON(p_port+hp_scsidata_0) & - ~(UCHAR)BIT(6))); - FPT_scwirod(p_port, BIT(6)); - - WR_HARPOON(p_port+hp_scsisig, (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); + WR_HARPOON(p_port + hp_scsisig, + (SCSI_SEL | SCSI_BSY | SCSI_IOBIT | SCSI_CD)); } - - /*--------------------------------------------------------------------- * * Function: FPT_scxferc @@ -6481,48 +5918,47 @@ static void FPT_scsel(ULONG p_port) * *---------------------------------------------------------------------*/ -static UCHAR FPT_scxferc(ULONG p_port, UCHAR p_data) +static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data) { - UCHAR curr_data, ret_data; + unsigned char curr_data, ret_data; - curr_data = p_data | BIT(7) | BIT(5); /*Start with DB7 & DB5 asserted. */ + curr_data = p_data | BIT(7) | BIT(5); /*Start with DB7 & DB5 asserted. */ - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(7); + curr_data &= ~BIT(7); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(7)); /*Wait for DB7 to be released. */ - while (!(RD_HARPOON(p_port+hp_scsidata_0) & BIT(5))); + FPT_scwirod(p_port, BIT(7)); /*Wait for DB7 to be released. */ + while (!(RD_HARPOON(p_port + hp_scsidata_0) & BIT(5))) ; - ret_data = (RD_HARPOON(p_port+hp_scsidata_0) & (UCHAR) 0x1F); + ret_data = (RD_HARPOON(p_port + hp_scsidata_0) & (unsigned char)0x1F); - curr_data |= BIT(6); + curr_data |= BIT(6); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(5); + curr_data &= ~BIT(5); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(5)); /*Wait for DB5 to be released. */ + FPT_scwirod(p_port, BIT(5)); /*Wait for DB5 to be released. */ - curr_data &= ~(BIT(4)|BIT(3)|BIT(2)|BIT(1)|BIT(0)); /*Release data bits */ - curr_data |= BIT(7); + curr_data &= ~(BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0)); /*Release data bits */ + curr_data |= BIT(7); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - curr_data &= ~BIT(6); + curr_data &= ~BIT(6); - WR_HARPOON(p_port+hp_scsidata_0, curr_data); + WR_HARPOON(p_port + hp_scsidata_0, curr_data); - FPT_scwirod(p_port,BIT(6)); /*Wait for DB6 to be released. */ + FPT_scwirod(p_port, BIT(6)); /*Wait for DB6 to be released. */ - return(ret_data); + return ret_data; } - /*--------------------------------------------------------------------- * * Function: FPT_scsendi @@ -6532,51 +5968,50 @@ static UCHAR FPT_scxferc(ULONG p_port, U * *---------------------------------------------------------------------*/ -static UCHAR FPT_scsendi(ULONG p_port, UCHAR p_id_string[]) +static unsigned char FPT_scsendi(unsigned long p_port, + unsigned char p_id_string[]) { - UCHAR ret_data,byte_cnt,bit_cnt,defer; + unsigned char ret_data, byte_cnt, bit_cnt, defer; - defer = 0; + defer = 0; - for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { + for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { - for (bit_cnt = 0x80; bit_cnt != 0 ; bit_cnt >>= 1) { + for (bit_cnt = 0x80; bit_cnt != 0; bit_cnt >>= 1) { - if (defer) - ret_data = FPT_scxferc(p_port,00); + if (defer) + ret_data = FPT_scxferc(p_port, 00); - else if (p_id_string[byte_cnt] & bit_cnt) + else if (p_id_string[byte_cnt] & bit_cnt) - ret_data = FPT_scxferc(p_port,02); + ret_data = FPT_scxferc(p_port, 02); - else { + else { - ret_data = FPT_scxferc(p_port,01); - if (ret_data & 02) - defer = 1; - } + ret_data = FPT_scxferc(p_port, 01); + if (ret_data & 02) + defer = 1; + } - if ((ret_data & 0x1C) == 0x10) - return(0x00); /*End of isolation stage, we won! */ + if ((ret_data & 0x1C) == 0x10) + return 0x00; /*End of isolation stage, we won! */ - if (ret_data & 0x1C) - return(0xFF); + if (ret_data & 0x1C) + return 0xFF; - if ((defer) && (!(ret_data & 0x1F))) - return(0x01); /*End of isolation stage, we lost. */ + if ((defer) && (!(ret_data & 0x1F))) + return 0x01; /*End of isolation stage, we lost. */ - } /*bit loop */ + } /*bit loop */ - } /*byte loop */ + } /*byte loop */ - if (defer) - return(0x01); /*We lost */ - else - return(0); /*We WON! Yeeessss! */ + if (defer) + return 0x01; /*We lost */ + else + return 0; /*We WON! Yeeessss! */ } - - /*--------------------------------------------------------------------- * * Function: FPT_sciso @@ -6585,31 +6020,31 @@ static UCHAR FPT_scsendi(ULONG p_port, U * *---------------------------------------------------------------------*/ -static UCHAR FPT_sciso(ULONG p_port, UCHAR p_id_string[]) +static unsigned char FPT_sciso(unsigned long p_port, + unsigned char p_id_string[]) { - UCHAR ret_data,the_data,byte_cnt,bit_cnt; + unsigned char ret_data, the_data, byte_cnt, bit_cnt; - the_data = 0; + the_data = 0; - for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { + for (byte_cnt = 0; byte_cnt < ID_STRING_LENGTH; byte_cnt++) { - for (bit_cnt = 0; bit_cnt < 8; bit_cnt++) { + for (bit_cnt = 0; bit_cnt < 8; bit_cnt++) { - ret_data = FPT_scxferc(p_port,0); + ret_data = FPT_scxferc(p_port, 0); - if (ret_data & 0xFC) - return(0xFF); + if (ret_data & 0xFC) + return 0xFF; - else { + else { - the_data <<= 1; - if (ret_data & BIT(1)) { - the_data |= 1; - } - } + the_data <<= 1; + if (ret_data & BIT(1)) { + the_data |= 1; + } + } - if ((ret_data & 0x1F) == 0) - { + if ((ret_data & 0x1F) == 0) { /* if(bit_cnt != 0 || bit_cnt != 8) { @@ -6620,23 +6055,21 @@ static UCHAR FPT_sciso(ULONG p_port, UCH continue; } */ - if (byte_cnt) - return(0x00); - else - return(0xFF); - } + if (byte_cnt) + return 0x00; + else + return 0xFF; + } - } /*bit loop */ + } /*bit loop */ - p_id_string[byte_cnt] = the_data; + p_id_string[byte_cnt] = the_data; - } /*byte loop */ + } /*byte loop */ - return(0); + return 0; } - - /*--------------------------------------------------------------------- * * Function: FPT_scwirod @@ -6646,26 +6079,24 @@ static UCHAR FPT_sciso(ULONG p_port, UCH * *---------------------------------------------------------------------*/ -static void FPT_scwirod(ULONG p_port, UCHAR p_data_bit) +static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit) { - UCHAR i; + unsigned char i; - i = 0; - while ( i < MAX_SCSI_TAR ) { + i = 0; + while (i < MAX_SCSI_TAR) { - if (RD_HARPOON(p_port+hp_scsidata_0) & p_data_bit) + if (RD_HARPOON(p_port + hp_scsidata_0) & p_data_bit) - i = 0; + i = 0; - else + else - i++; + i++; - } + } } - - /*--------------------------------------------------------------------- * * Function: FPT_scwiros @@ -6675,25 +6106,24 @@ static void FPT_scwirod(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static void FPT_scwiros(ULONG p_port, UCHAR p_data_bit) +static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit) { - UCHAR i; + unsigned char i; - i = 0; - while ( i < MAX_SCSI_TAR ) { + i = 0; + while (i < MAX_SCSI_TAR) { - if (RD_HARPOON(p_port+hp_scsisig) & p_data_bit) + if (RD_HARPOON(p_port + hp_scsisig) & p_data_bit) - i = 0; + i = 0; - else + else - i++; + i++; - } + } } - /*--------------------------------------------------------------------- * * Function: FPT_scvalq @@ -6702,23 +6132,22 @@ static void FPT_scwiros(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static UCHAR FPT_scvalq(UCHAR p_quintet) +static unsigned char FPT_scvalq(unsigned char p_quintet) { - UCHAR count; + unsigned char count; - for (count=1; count < 0x08; count<<=1) { - if (!(p_quintet & count)) - p_quintet -= 0x80; - } + for (count = 1; count < 0x08; count <<= 1) { + if (!(p_quintet & count)) + p_quintet -= 0x80; + } - if (p_quintet & 0x18) - return(0); + if (p_quintet & 0x18) + return 0; - else - return(1); + else + return 1; } - /*--------------------------------------------------------------------- * * Function: FPT_scsell @@ -6729,75 +6158,78 @@ static UCHAR FPT_scvalq(UCHAR p_quintet) * *---------------------------------------------------------------------*/ -static UCHAR FPT_scsell(ULONG p_port, UCHAR targ_id) +static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id) { - ULONG i; - - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)); + unsigned long i; - ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); - WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) | SCAM_TIMER)); - WR_HARPOON(p_port+hp_seltimeout,TO_4ms); + ARAM_ACCESS(p_port); + WR_HARPOON(p_port + hp_addstat, + (RD_HARPOON(p_port + hp_addstat) | SCAM_TIMER)); + WR_HARPOON(p_port + hp_seltimeout, TO_4ms); - for (i = p_port+CMD_STRT; i < p_port+CMD_STRT+12; i+=2) { - WRW_HARPOON(i, (MPM_OP+ACOMMAND)); - } - WRW_HARPOON(i, (BRH_OP+ALWAYS+ NP)); - - WRW_HARPOON((p_port+hp_intstat), - (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT)); + for (i = p_port + CMD_STRT; i < p_port + CMD_STRT + 12; i += 2) { + WRW_HARPOON(i, (MPM_OP + ACOMMAND)); + } + WRW_HARPOON(i, (BRH_OP + ALWAYS + NP)); - WR_HARPOON(p_port+hp_select_id, targ_id); + WRW_HARPOON((p_port + hp_intstat), + (RESET | TIMEOUT | SEL | BUS_FREE | AUTO_INT)); - WR_HARPOON(p_port+hp_portctrl_0, SCSI_PORT); - WR_HARPOON(p_port+hp_autostart_3, (SELECT | CMD_ONLY_STRT)); - WR_HARPOON(p_port+hp_scsictrl_0, (SEL_TAR | ENA_RESEL)); + WR_HARPOON(p_port + hp_select_id, targ_id); + WR_HARPOON(p_port + hp_portctrl_0, SCSI_PORT); + WR_HARPOON(p_port + hp_autostart_3, (SELECT | CMD_ONLY_STRT)); + WR_HARPOON(p_port + hp_scsictrl_0, (SEL_TAR | ENA_RESEL)); - while (!(RDW_HARPOON((p_port+hp_intstat)) & - (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) {} + while (!(RDW_HARPOON((p_port + hp_intstat)) & + (RESET | PROG_HLT | TIMEOUT | AUTO_INT))) { + } - if (RDW_HARPOON((p_port+hp_intstat)) & RESET) - FPT_Wait(p_port, TO_250ms); + if (RDW_HARPOON((p_port + hp_intstat)) & RESET) + FPT_Wait(p_port, TO_250ms); - DISABLE_AUTO(p_port); + DISABLE_AUTO(p_port); - WR_HARPOON(p_port+hp_addstat,(RD_HARPOON(p_port+hp_addstat) & ~SCAM_TIMER)); - WR_HARPOON(p_port+hp_seltimeout,TO_290ms); + WR_HARPOON(p_port + hp_addstat, + (RD_HARPOON(p_port + hp_addstat) & ~SCAM_TIMER)); + WR_HARPOON(p_port + hp_seltimeout, TO_290ms); - SGRAM_ACCESS(p_port); + SGRAM_ACCESS(p_port); - if (RDW_HARPOON((p_port+hp_intstat)) & (RESET | TIMEOUT) ) { + if (RDW_HARPOON((p_port + hp_intstat)) & (RESET | TIMEOUT)) { - WRW_HARPOON((p_port+hp_intstat), - (RESET | TIMEOUT | SEL | BUS_FREE | PHASE)); + WRW_HARPOON((p_port + hp_intstat), + (RESET | TIMEOUT | SEL | BUS_FREE | PHASE)); - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & + ~G_INT_DISABLE)); - return(0); /*No legacy device */ - } + return 0; /*No legacy device */ + } - else { + else { - while(!(RDW_HARPOON((p_port+hp_intstat)) & BUS_FREE)) { - if (RD_HARPOON(p_port+hp_scsisig) & SCSI_REQ) - { - WR_HARPOON(p_port+hp_scsisig, (SCSI_ACK + S_ILL_PH)); - ACCEPT_MSG(p_port); - } + while (!(RDW_HARPOON((p_port + hp_intstat)) & BUS_FREE)) { + if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) { + WR_HARPOON(p_port + hp_scsisig, + (SCSI_ACK + S_ILL_PH)); + ACCEPT_MSG(p_port); + } } - WRW_HARPOON((p_port+hp_intstat), CLR_ALL_INT_1); + WRW_HARPOON((p_port + hp_intstat), CLR_ALL_INT_1); - WR_HARPOON(p_port+hp_page_ctrl, - (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)); + WR_HARPOON(p_port + hp_page_ctrl, + (RD_HARPOON(p_port + hp_page_ctrl) & + ~G_INT_DISABLE)); - return(1); /*Found one of them oldies! */ - } + return 1; /*Found one of them oldies! */ + } } /*--------------------------------------------------------------------- @@ -6808,12 +6240,12 @@ static UCHAR FPT_scsell(ULONG p_port, UC * *---------------------------------------------------------------------*/ -static void FPT_scwtsel(ULONG p_port) +static void FPT_scwtsel(unsigned long p_port) { - while(!(RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) {} + while (!(RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) { + } } - /*--------------------------------------------------------------------- * * Function: FPT_inisci @@ -6822,57 +6254,64 @@ static void FPT_scwtsel(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_inisci(UCHAR p_card, ULONG p_port, UCHAR p_our_id) +static void FPT_inisci(unsigned char p_card, unsigned long p_port, + unsigned char p_our_id) { - UCHAR i,k,max_id; - USHORT ee_data; - PNVRamInfo pCurrNvRam; + unsigned char i, k, max_id; + unsigned short ee_data; + struct nvram_info *pCurrNvRam; pCurrNvRam = FPT_BL_Card[p_card].pNvRamInfo; - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_id = 0x08; + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_id = 0x08; - else - max_id = 0x10; + else + max_id = 0x10; - if(pCurrNvRam){ - for(i = 0; i < max_id; i++){ + if (pCurrNvRam) { + for (i = 0; i < max_id; i++) { - for(k = 0; k < 4; k++) - FPT_scamInfo[i].id_string[k] = pCurrNvRam->niScamTbl[i][k]; - for(k = 4; k < ID_STRING_LENGTH; k++) - FPT_scamInfo[i].id_string[k] = (UCHAR) 0x00; + for (k = 0; k < 4; k++) + FPT_scamInfo[i].id_string[k] = + pCurrNvRam->niScamTbl[i][k]; + for (k = 4; k < ID_STRING_LENGTH; k++) + FPT_scamInfo[i].id_string[k] = + (unsigned char)0x00; - if(FPT_scamInfo[i].id_string[0] == 0x00) - FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ - else - FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ + if (FPT_scamInfo[i].id_string[0] == 0x00) + FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ + else + FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ } - }else { - for (i=0; i < max_id; i++) - { - for (k=0; k < ID_STRING_LENGTH; k+=2) - { - ee_data = FPT_utilEERead(p_port, (USHORT)((EE_SCAMBASE/2) + - (USHORT) (i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2))); - FPT_scamInfo[i].id_string[k] = (UCHAR) ee_data; - ee_data >>= 8; - FPT_scamInfo[i].id_string[k+1] = (UCHAR) ee_data; - } + } else { + for (i = 0; i < max_id; i++) { + for (k = 0; k < ID_STRING_LENGTH; k += 2) { + ee_data = + FPT_utilEERead(p_port, + (unsigned + short)((EE_SCAMBASE / 2) + + (unsigned short)(i * + ((unsigned short)ID_STRING_LENGTH / 2)) + (unsigned short)(k / 2))); + FPT_scamInfo[i].id_string[k] = + (unsigned char)ee_data; + ee_data >>= 8; + FPT_scamInfo[i].id_string[k + 1] = + (unsigned char)ee_data; + } - if ((FPT_scamInfo[i].id_string[0] == 0x00) || - (FPT_scamInfo[i].id_string[0] == 0xFF)) + if ((FPT_scamInfo[i].id_string[0] == 0x00) || + (FPT_scamInfo[i].id_string[0] == 0xFF)) - FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ + FPT_scamInfo[i].state = ID_UNUSED; /*Default to unused ID. */ - else - FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ + else + FPT_scamInfo[i].state = ID_UNASSIGNED; /*Default to unassigned ID. */ - } + } } - for(k = 0; k < ID_STRING_LENGTH; k++) + for (k = 0; k < ID_STRING_LENGTH; k++) FPT_scamInfo[p_our_id].id_string[k] = FPT_scamHAString[k]; } @@ -6886,127 +6325,114 @@ static void FPT_inisci(UCHAR p_card, ULO * *---------------------------------------------------------------------*/ -static UCHAR FPT_scmachid(UCHAR p_card, UCHAR p_id_string[]) +static unsigned char FPT_scmachid(unsigned char p_card, + unsigned char p_id_string[]) { - UCHAR i,k,match; - - - for (i=0; i < MAX_SCSI_TAR; i++) { - - match = 1; - - for (k=0; k < ID_STRING_LENGTH; k++) - { - if (p_id_string[k] != FPT_scamInfo[i].id_string[k]) - match = 0; - } + unsigned char i, k, match; - if (match) - { - FPT_scamInfo[i].state = ID_ASSIGNED; - return(i); - } + for (i = 0; i < MAX_SCSI_TAR; i++) { - } + match = 1; + for (k = 0; k < ID_STRING_LENGTH; k++) { + if (p_id_string[k] != FPT_scamInfo[i].id_string[k]) + match = 0; + } + if (match) { + FPT_scamInfo[i].state = ID_ASSIGNED; + return i; + } - if (p_id_string[0] & BIT(5)) - i = 8; - else - i = MAX_SCSI_TAR; + } - if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04)) - match = p_id_string[1] & (UCHAR) 0x1F; - else - match = 7; + if (p_id_string[0] & BIT(5)) + i = 8; + else + i = MAX_SCSI_TAR; - while (i > 0) - { - i--; + if (((p_id_string[0] & 0x06) == 0x02) + || ((p_id_string[0] & 0x06) == 0x04)) + match = p_id_string[1] & (unsigned char)0x1F; + else + match = 7; - if (FPT_scamInfo[match].state == ID_UNUSED) - { - for (k=0; k < ID_STRING_LENGTH; k++) - { - FPT_scamInfo[match].id_string[k] = p_id_string[k]; - } + while (i > 0) { + i--; - FPT_scamInfo[match].state = ID_ASSIGNED; + if (FPT_scamInfo[match].state == ID_UNUSED) { + for (k = 0; k < ID_STRING_LENGTH; k++) { + FPT_scamInfo[match].id_string[k] = + p_id_string[k]; + } - if(FPT_BL_Card[p_card].pNvRamInfo == NULL) - FPT_BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM; - return(match); + FPT_scamInfo[match].state = ID_ASSIGNED; - } + if (FPT_BL_Card[p_card].pNvRamInfo == NULL) + FPT_BL_Card[p_card].globalFlags |= + F_UPDATE_EEPROM; + return match; + } - match--; + match--; - if (match == 0xFF) - { - if (p_id_string[0] & BIT(5)) - match = 7; - else - match = MAX_SCSI_TAR-1; + if (match == 0xFF) { + if (p_id_string[0] & BIT(5)) + match = 7; + else + match = MAX_SCSI_TAR - 1; + } } - } - + if (p_id_string[0] & BIT(7)) { + return CLR_PRIORITY; + } - if (p_id_string[0] & BIT(7)) - { - return(CLR_PRIORITY); - } - - - if (p_id_string[0] & BIT(5)) - i = 8; - else - i = MAX_SCSI_TAR; - - if (((p_id_string[0] & 0x06) == 0x02) || ((p_id_string[0] & 0x06) == 0x04)) - match = p_id_string[1] & (UCHAR) 0x1F; - else - match = 7; + if (p_id_string[0] & BIT(5)) + i = 8; + else + i = MAX_SCSI_TAR; - while (i > 0) - { + if (((p_id_string[0] & 0x06) == 0x02) + || ((p_id_string[0] & 0x06) == 0x04)) + match = p_id_string[1] & (unsigned char)0x1F; + else + match = 7; - i--; + while (i > 0) { - if (FPT_scamInfo[match].state == ID_UNASSIGNED) - { - for (k=0; k < ID_STRING_LENGTH; k++) - { - FPT_scamInfo[match].id_string[k] = p_id_string[k]; - } + i--; - FPT_scamInfo[match].id_string[0] |= BIT(7); - FPT_scamInfo[match].state = ID_ASSIGNED; - if(FPT_BL_Card[p_card].pNvRamInfo == NULL) - FPT_BL_Card[p_card].globalFlags |= F_UPDATE_EEPROM; - return(match); + if (FPT_scamInfo[match].state == ID_UNASSIGNED) { + for (k = 0; k < ID_STRING_LENGTH; k++) { + FPT_scamInfo[match].id_string[k] = + p_id_string[k]; + } - } + FPT_scamInfo[match].id_string[0] |= BIT(7); + FPT_scamInfo[match].state = ID_ASSIGNED; + if (FPT_BL_Card[p_card].pNvRamInfo == NULL) + FPT_BL_Card[p_card].globalFlags |= + F_UPDATE_EEPROM; + return match; + } - match--; + match--; - if (match == 0xFF) - { - if (p_id_string[0] & BIT(5)) - match = 7; - else - match = MAX_SCSI_TAR-1; + if (match == 0xFF) { + if (p_id_string[0] & BIT(5)) + match = 7; + else + match = MAX_SCSI_TAR - 1; + } } - } - return(NO_ID_AVAIL); + return NO_ID_AVAIL; } - /*--------------------------------------------------------------------- * * Function: FPT_scsavdi @@ -7015,45 +6441,41 @@ static UCHAR FPT_scmachid(UCHAR p_card, * *---------------------------------------------------------------------*/ -static void FPT_scsavdi(UCHAR p_card, ULONG p_port) +static void FPT_scsavdi(unsigned char p_card, unsigned long p_port) { - UCHAR i,k,max_id; - USHORT ee_data,sum_data; - - - sum_data = 0x0000; + unsigned char i, k, max_id; + unsigned short ee_data, sum_data; - for (i = 1; i < EE_SCAMBASE/2; i++) - { - sum_data += FPT_utilEERead(p_port, i); - } + sum_data = 0x0000; + for (i = 1; i < EE_SCAMBASE / 2; i++) { + sum_data += FPT_utilEERead(p_port, i); + } - FPT_utilEEWriteOnOff(p_port,1); /* Enable write access to the EEPROM */ - - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_id = 0x08; + FPT_utilEEWriteOnOff(p_port, 1); /* Enable write access to the EEPROM */ - else - max_id = 0x10; + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_id = 0x08; - for (i=0; i < max_id; i++) - { + else + max_id = 0x10; - for (k=0; k < ID_STRING_LENGTH; k+=2) - { - ee_data = FPT_scamInfo[i].id_string[k+1]; - ee_data <<= 8; - ee_data |= FPT_scamInfo[i].id_string[k]; - sum_data += ee_data; - FPT_utilEEWrite(p_port, ee_data, (USHORT)((EE_SCAMBASE/2) + - (USHORT)(i*((USHORT)ID_STRING_LENGTH/2)) + (USHORT)(k/2))); - } - } + for (i = 0; i < max_id; i++) { + for (k = 0; k < ID_STRING_LENGTH; k += 2) { + ee_data = FPT_scamInfo[i].id_string[k + 1]; + ee_data <<= 8; + ee_data |= FPT_scamInfo[i].id_string[k]; + sum_data += ee_data; + FPT_utilEEWrite(p_port, ee_data, + (unsigned short)((EE_SCAMBASE / 2) + + (unsigned short)(i * + ((unsigned short)ID_STRING_LENGTH / 2)) + (unsigned short)(k / 2))); + } + } - FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM/2); - FPT_utilEEWriteOnOff(p_port,0); /* Turn off write access */ + FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM / 2); + FPT_utilEEWriteOnOff(p_port, 0); /* Turn off write access */ } /*--------------------------------------------------------------------- @@ -7064,48 +6486,47 @@ static void FPT_scsavdi(UCHAR p_card, UL * *---------------------------------------------------------------------*/ -static void FPT_XbowInit(ULONG port, UCHAR ScamFlg) +static void FPT_XbowInit(unsigned long port, unsigned char ScamFlg) { -UCHAR i; + unsigned char i; - i = RD_HARPOON(port+hp_page_ctrl); - WR_HARPOON(port+hp_page_ctrl, (UCHAR) (i | G_INT_DISABLE)); + i = RD_HARPOON(port + hp_page_ctrl); + WR_HARPOON(port + hp_page_ctrl, (unsigned char)(i | G_INT_DISABLE)); - WR_HARPOON(port+hp_scsireset,0x00); - WR_HARPOON(port+hp_portctrl_1,HOST_MODE8); + WR_HARPOON(port + hp_scsireset, 0x00); + WR_HARPOON(port + hp_portctrl_1, HOST_MODE8); - WR_HARPOON(port+hp_scsireset,(DMA_RESET | HPSCSI_RESET | PROG_RESET | \ - FIFO_CLR)); + WR_HARPOON(port + hp_scsireset, (DMA_RESET | HPSCSI_RESET | PROG_RESET | + FIFO_CLR)); - WR_HARPOON(port+hp_scsireset,SCSI_INI); + WR_HARPOON(port + hp_scsireset, SCSI_INI); - WR_HARPOON(port+hp_clkctrl_0,CLKCTRL_DEFAULT); + WR_HARPOON(port + hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(port+hp_scsisig,0x00); /* Clear any signals we might */ - WR_HARPOON(port+hp_scsictrl_0,ENA_SCAM_SEL); + WR_HARPOON(port + hp_scsisig, 0x00); /* Clear any signals we might */ + WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL); - WRW_HARPOON((port+hp_intstat), CLR_ALL_INT); + WRW_HARPOON((port + hp_intstat), CLR_ALL_INT); - FPT_default_intena = RESET | RSEL | PROG_HLT | TIMEOUT | - BUS_FREE | XFER_CNT_0 | AUTO_INT; + FPT_default_intena = RESET | RSEL | PROG_HLT | TIMEOUT | + BUS_FREE | XFER_CNT_0 | AUTO_INT; - if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) + if ((ScamFlg & SCAM_ENABLED) && (ScamFlg & SCAM_LEVEL2)) FPT_default_intena |= SCAM_SEL; - WRW_HARPOON((port+hp_intena), FPT_default_intena); + WRW_HARPOON((port + hp_intena), FPT_default_intena); - WR_HARPOON(port+hp_seltimeout,TO_290ms); + WR_HARPOON(port + hp_seltimeout, TO_290ms); - /* Turn on SCSI_MODE8 for narrow cards to fix the - strapping issue with the DUAL CHANNEL card */ - if (RD_HARPOON(port+hp_page_ctrl) & NARROW_SCSI_CARD) - WR_HARPOON(port+hp_addstat,SCSI_MODE8); + /* Turn on SCSI_MODE8 for narrow cards to fix the + strapping issue with the DUAL CHANNEL card */ + if (RD_HARPOON(port + hp_page_ctrl) & NARROW_SCSI_CARD) + WR_HARPOON(port + hp_addstat, SCSI_MODE8); - WR_HARPOON(port+hp_page_ctrl, i); + WR_HARPOON(port + hp_page_ctrl, i); } - /*--------------------------------------------------------------------- * * Function: FPT_BusMasterInit @@ -7114,28 +6535,24 @@ UCHAR i; * *---------------------------------------------------------------------*/ -static void FPT_BusMasterInit(ULONG p_port) +static void FPT_BusMasterInit(unsigned long p_port) { + WR_HARPOON(p_port + hp_sys_ctrl, DRVR_RST); + WR_HARPOON(p_port + hp_sys_ctrl, 0x00); - WR_HARPOON(p_port+hp_sys_ctrl, DRVR_RST); - WR_HARPOON(p_port+hp_sys_ctrl, 0x00); - - WR_HARPOON(p_port+hp_host_blk_cnt, XFER_BLK64); + WR_HARPOON(p_port + hp_host_blk_cnt, XFER_BLK64); + WR_HARPOON(p_port + hp_bm_ctrl, (BMCTRL_DEFAULT)); - WR_HARPOON(p_port+hp_bm_ctrl, (BMCTRL_DEFAULT)); + WR_HARPOON(p_port + hp_ee_ctrl, (SCSI_TERM_ENA_H)); - WR_HARPOON(p_port+hp_ee_ctrl, (SCSI_TERM_ENA_H)); - - - RD_HARPOON(p_port+hp_int_status); /*Clear interrupts. */ - WR_HARPOON(p_port+hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); - WR_HARPOON(p_port+hp_page_ctrl, (RD_HARPOON(p_port+hp_page_ctrl) & - ~SCATTER_EN)); + RD_HARPOON(p_port + hp_int_status); /*Clear interrupts. */ + WR_HARPOON(p_port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); + WR_HARPOON(p_port + hp_page_ctrl, (RD_HARPOON(p_port + hp_page_ctrl) & + ~SCATTER_EN)); } - /*--------------------------------------------------------------------- * * Function: FPT_DiagEEPROM @@ -7145,158 +6562,153 @@ static void FPT_BusMasterInit(ULONG p_po * *---------------------------------------------------------------------*/ -static void FPT_DiagEEPROM(ULONG p_port) +static void FPT_DiagEEPROM(unsigned long p_port) { - USHORT index,temp,max_wd_cnt; - - if (RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD) - max_wd_cnt = EEPROM_WD_CNT; - else - max_wd_cnt = EEPROM_WD_CNT * 2; - - temp = FPT_utilEERead(p_port, FW_SIGNATURE/2); - - if (temp == 0x4641) { - - for (index = 2; index < max_wd_cnt; index++) { + unsigned short index, temp, max_wd_cnt; - temp += FPT_utilEERead(p_port, index); - - } - - if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM/2)) { - - return; /*EEPROM is Okay so return now! */ - } - } - - - FPT_utilEEWriteOnOff(p_port,(UCHAR)1); - - for (index = 0; index < max_wd_cnt; index++) { - - FPT_utilEEWrite(p_port, 0x0000, index); - } + if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) + max_wd_cnt = EEPROM_WD_CNT; + else + max_wd_cnt = EEPROM_WD_CNT * 2; - temp = 0; + temp = FPT_utilEERead(p_port, FW_SIGNATURE / 2); - FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE/2); - temp += 0x4641; - FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0/2); - temp += 0x3920; - FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2/2); - temp += 0x3033; - FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4/2); - temp += 0x2020; - FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG/2); - temp += 0x70D3; - FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG/2); - temp += 0x0010; - FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG/2); - temp += 0x0003; - FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID/2); - temp += 0x0007; - - FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN/2); - temp += 0x0000; - FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA/2); - temp += 0x0000; - FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE/2); - temp += 0x0000; - - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd/2); - temp += 0x4242; - FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef/2); - temp += 0x4242; - - - FPT_utilEEWrite(p_port, 0x6C46, 64/2); /*PRODUCT ID */ - temp += 0x6C46; - FPT_utilEEWrite(p_port, 0x7361, 66/2); /* FlashPoint LT */ - temp += 0x7361; - FPT_utilEEWrite(p_port, 0x5068, 68/2); - temp += 0x5068; - FPT_utilEEWrite(p_port, 0x696F, 70/2); - temp += 0x696F; - FPT_utilEEWrite(p_port, 0x746E, 72/2); - temp += 0x746E; - FPT_utilEEWrite(p_port, 0x4C20, 74/2); - temp += 0x4C20; - FPT_utilEEWrite(p_port, 0x2054, 76/2); - temp += 0x2054; - FPT_utilEEWrite(p_port, 0x2020, 78/2); - temp += 0x2020; - - index = ((EE_SCAMBASE/2)+(7*16)); - FPT_utilEEWrite(p_port, (0x0700+TYPE_CODE0), index); - temp += (0x0700+TYPE_CODE0); - index++; - FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */ - temp += 0x5542; /* BUSLOGIC */ - index++; - FPT_utilEEWrite(p_port, 0x4C53, index); - temp += 0x4C53; - index++; - FPT_utilEEWrite(p_port, 0x474F, index); - temp += 0x474F; - index++; - FPT_utilEEWrite(p_port, 0x4349, index); - temp += 0x4349; - index++; - FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */ - temp += 0x5442; /* BT- 930 */ - index++; - FPT_utilEEWrite(p_port, 0x202D, index); - temp += 0x202D; - index++; - FPT_utilEEWrite(p_port, 0x3339, index); - temp += 0x3339; - index++; /*Serial # */ - FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */ - temp += 0x2030; - index++; - FPT_utilEEWrite(p_port, 0x5453, index); - temp += 0x5453; - index++; - FPT_utilEEWrite(p_port, 0x5645, index); - temp += 0x5645; - index++; - FPT_utilEEWrite(p_port, 0x2045, index); - temp += 0x2045; - index++; - FPT_utilEEWrite(p_port, 0x202F, index); - temp += 0x202F; - index++; - FPT_utilEEWrite(p_port, 0x4F4A, index); - temp += 0x4F4A; - index++; - FPT_utilEEWrite(p_port, 0x204E, index); - temp += 0x204E; - index++; - FPT_utilEEWrite(p_port, 0x3539, index); - temp += 0x3539; + if (temp == 0x4641) { + for (index = 2; index < max_wd_cnt; index++) { + temp += FPT_utilEERead(p_port, index); + + } + + if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM / 2)) { + + return; /*EEPROM is Okay so return now! */ + } + } + + FPT_utilEEWriteOnOff(p_port, (unsigned char)1); + + for (index = 0; index < max_wd_cnt; index++) { + + FPT_utilEEWrite(p_port, 0x0000, index); + } + + temp = 0; + + FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE / 2); + temp += 0x4641; + FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0 / 2); + temp += 0x3920; + FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2 / 2); + temp += 0x3033; + FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4 / 2); + temp += 0x2020; + FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG / 2); + temp += 0x70D3; + FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG / 2); + temp += 0x0010; + FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG / 2); + temp += 0x0003; + FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID / 2); + temp += 0x0007; + + FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN / 2); + temp += 0x0000; + FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA / 2); + temp += 0x0000; + FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE / 2); + temp += 0x0000; + + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89 / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd / 2); + temp += 0x4242; + FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef / 2); + temp += 0x4242; + + FPT_utilEEWrite(p_port, 0x6C46, 64 / 2); /*PRODUCT ID */ + temp += 0x6C46; + FPT_utilEEWrite(p_port, 0x7361, 66 / 2); /* FlashPoint LT */ + temp += 0x7361; + FPT_utilEEWrite(p_port, 0x5068, 68 / 2); + temp += 0x5068; + FPT_utilEEWrite(p_port, 0x696F, 70 / 2); + temp += 0x696F; + FPT_utilEEWrite(p_port, 0x746E, 72 / 2); + temp += 0x746E; + FPT_utilEEWrite(p_port, 0x4C20, 74 / 2); + temp += 0x4C20; + FPT_utilEEWrite(p_port, 0x2054, 76 / 2); + temp += 0x2054; + FPT_utilEEWrite(p_port, 0x2020, 78 / 2); + temp += 0x2020; + + index = ((EE_SCAMBASE / 2) + (7 * 16)); + FPT_utilEEWrite(p_port, (0x0700 + TYPE_CODE0), index); + temp += (0x0700 + TYPE_CODE0); + index++; + FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */ + temp += 0x5542; /* BUSLOGIC */ + index++; + FPT_utilEEWrite(p_port, 0x4C53, index); + temp += 0x4C53; + index++; + FPT_utilEEWrite(p_port, 0x474F, index); + temp += 0x474F; + index++; + FPT_utilEEWrite(p_port, 0x4349, index); + temp += 0x4349; + index++; + FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */ + temp += 0x5442; /* BT- 930 */ + index++; + FPT_utilEEWrite(p_port, 0x202D, index); + temp += 0x202D; + index++; + FPT_utilEEWrite(p_port, 0x3339, index); + temp += 0x3339; + index++; /*Serial # */ + FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */ + temp += 0x2030; + index++; + FPT_utilEEWrite(p_port, 0x5453, index); + temp += 0x5453; + index++; + FPT_utilEEWrite(p_port, 0x5645, index); + temp += 0x5645; + index++; + FPT_utilEEWrite(p_port, 0x2045, index); + temp += 0x2045; + index++; + FPT_utilEEWrite(p_port, 0x202F, index); + temp += 0x202F; + index++; + FPT_utilEEWrite(p_port, 0x4F4A, index); + temp += 0x4F4A; + index++; + FPT_utilEEWrite(p_port, 0x204E, index); + temp += 0x204E; + index++; + FPT_utilEEWrite(p_port, 0x3539, index); + temp += 0x3539; - FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM/2); + FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM / 2); - FPT_utilEEWriteOnOff(p_port,(UCHAR)0); + FPT_utilEEWriteOnOff(p_port, (unsigned char)0); } - /*--------------------------------------------------------------------- * * Function: Queue Search Select @@ -7305,103 +6717,127 @@ static void FPT_DiagEEPROM(ULONG p_port) * *---------------------------------------------------------------------*/ -static void FPT_queueSearchSelect(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_queueSearchSelect(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR scan_ptr, lun; - PSCCBMgr_tar_info currTar_Info; - PSCCB pOldSccb; + unsigned char scan_ptr, lun; + struct sccb_mgr_tar_info *currTar_Info; + struct sccb *pOldSccb; - scan_ptr = pCurrCard->scanIndex; - do - { + scan_ptr = pCurrCard->scanIndex; + do { currTar_Info = &FPT_sccbMgrTbl[p_card][scan_ptr]; - if((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING)) - { - if (currTar_Info->TarSelQ_Cnt != 0) - { + if ((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING)) { + if (currTar_Info->TarSelQ_Cnt != 0) { scan_ptr++; if (scan_ptr == MAX_SCSI_TAR) scan_ptr = 0; - - for(lun=0; lun < MAX_LUN; lun++) - { - if(currTar_Info->TarLUNBusy[lun] == 0) - { - pCurrCard->currentSCCB = currTar_Info->TarSelQ_Head; + for (lun = 0; lun < MAX_LUN; lun++) { + if (currTar_Info->TarLUNBusy[lun] == 0) { + + pCurrCard->currentSCCB = + currTar_Info->TarSelQ_Head; pOldSccb = NULL; - while((pCurrCard->currentSCCB != NULL) && - (lun != pCurrCard->currentSCCB->Lun)) - { - pOldSccb = pCurrCard->currentSCCB; - pCurrCard->currentSCCB = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_forwardlink; + while ((pCurrCard-> + currentSCCB != NULL) + && (lun != + pCurrCard-> + currentSCCB->Lun)) { + pOldSccb = + pCurrCard-> + currentSCCB; + pCurrCard->currentSCCB = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; } - if(pCurrCard->currentSCCB == NULL) + if (pCurrCard->currentSCCB == + NULL) continue; - if(pOldSccb != NULL) - { - pOldSccb->Sccb_forwardlink = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_forwardlink; - pOldSccb->Sccb_backlink = (PSCCB)(pCurrCard->currentSCCB)-> - Sccb_backlink; - currTar_Info->TarSelQ_Cnt--; - } - else - { - currTar_Info->TarSelQ_Head = (PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink; - - if (currTar_Info->TarSelQ_Head == NULL) - { - currTar_Info->TarSelQ_Tail = NULL; - currTar_Info->TarSelQ_Cnt = 0; - } - else - { - currTar_Info->TarSelQ_Cnt--; - currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL; + if (pOldSccb != NULL) { + pOldSccb-> + Sccb_forwardlink = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; + pOldSccb-> + Sccb_backlink = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_backlink; + currTar_Info-> + TarSelQ_Cnt--; + } else { + currTar_Info-> + TarSelQ_Head = + (struct sccb + *)(pCurrCard-> + currentSCCB)-> + Sccb_forwardlink; + + if (currTar_Info-> + TarSelQ_Head == + NULL) { + currTar_Info-> + TarSelQ_Tail + = NULL; + currTar_Info-> + TarSelQ_Cnt + = 0; + } else { + currTar_Info-> + TarSelQ_Cnt--; + currTar_Info-> + TarSelQ_Head-> + Sccb_backlink + = + (struct sccb + *)NULL; } } - pCurrCard->scanIndex = scan_ptr; + pCurrCard->scanIndex = scan_ptr; - pCurrCard->globalFlags |= F_NEW_SCCB_CMD; + pCurrCard->globalFlags |= + F_NEW_SCCB_CMD; - break; + break; } } } - else - { + else { scan_ptr++; if (scan_ptr == MAX_SCSI_TAR) { scan_ptr = 0; } } - } - else - { + } else { if ((currTar_Info->TarSelQ_Cnt != 0) && - (currTar_Info->TarLUNBusy[0] == 0)) - { + (currTar_Info->TarLUNBusy[0] == 0)) { - pCurrCard->currentSCCB = currTar_Info->TarSelQ_Head; + pCurrCard->currentSCCB = + currTar_Info->TarSelQ_Head; - currTar_Info->TarSelQ_Head = (PSCCB)(pCurrCard->currentSCCB)->Sccb_forwardlink; + currTar_Info->TarSelQ_Head = + (struct sccb *)(pCurrCard->currentSCCB)-> + Sccb_forwardlink; - if (currTar_Info->TarSelQ_Head == NULL) - { + if (currTar_Info->TarSelQ_Head == NULL) { currTar_Info->TarSelQ_Tail = NULL; currTar_Info->TarSelQ_Cnt = 0; - } - else - { + } else { currTar_Info->TarSelQ_Cnt--; - currTar_Info->TarSelQ_Head->Sccb_backlink = (PSCCB)NULL; + currTar_Info->TarSelQ_Head-> + Sccb_backlink = (struct sccb *)NULL; } scan_ptr++; @@ -7415,11 +6851,9 @@ static void FPT_queueSearchSelect(PSCCBc break; } - else - { + else { scan_ptr++; - if (scan_ptr == MAX_SCSI_TAR) - { + if (scan_ptr == MAX_SCSI_TAR) { scan_ptr = 0; } } @@ -7427,7 +6861,6 @@ static void FPT_queueSearchSelect(PSCCBc } while (scan_ptr != pCurrCard->scanIndex); } - /*--------------------------------------------------------------------- * * Function: Queue Select Fail @@ -7436,37 +6869,39 @@ static void FPT_queueSearchSelect(PSCCBc * *---------------------------------------------------------------------*/ -static void FPT_queueSelectFail(PSCCBcard pCurrCard, UCHAR p_card) +static void FPT_queueSelectFail(struct sccb_card *pCurrCard, + unsigned char p_card) { - UCHAR thisTarg; - PSCCBMgr_tar_info currTar_Info; + unsigned char thisTarg; + struct sccb_mgr_tar_info *currTar_Info; - if (pCurrCard->currentSCCB != NULL) - { - thisTarg = (UCHAR)(((PSCCB)(pCurrCard->currentSCCB))->TargID); - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + if (pCurrCard->currentSCCB != NULL) { + thisTarg = + (unsigned char)(((struct sccb *)(pCurrCard->currentSCCB))-> + TargID); + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - pCurrCard->currentSCCB->Sccb_backlink = (PSCCB)NULL; + pCurrCard->currentSCCB->Sccb_backlink = (struct sccb *)NULL; - pCurrCard->currentSCCB->Sccb_forwardlink = currTar_Info->TarSelQ_Head; + pCurrCard->currentSCCB->Sccb_forwardlink = + currTar_Info->TarSelQ_Head; - if (currTar_Info->TarSelQ_Cnt == 0) - { - currTar_Info->TarSelQ_Tail = pCurrCard->currentSCCB; - } - - else - { - currTar_Info->TarSelQ_Head->Sccb_backlink = pCurrCard->currentSCCB; - } + if (currTar_Info->TarSelQ_Cnt == 0) { + currTar_Info->TarSelQ_Tail = pCurrCard->currentSCCB; + } + else { + currTar_Info->TarSelQ_Head->Sccb_backlink = + pCurrCard->currentSCCB; + } - currTar_Info->TarSelQ_Head = pCurrCard->currentSCCB; + currTar_Info->TarSelQ_Head = pCurrCard->currentSCCB; - pCurrCard->currentSCCB = NULL; - currTar_Info->TarSelQ_Cnt++; - } + pCurrCard->currentSCCB = NULL; + currTar_Info->TarSelQ_Cnt++; + } } + /*--------------------------------------------------------------------- * * Function: Queue Command Complete @@ -7475,101 +6910,97 @@ static void FPT_queueSelectFail(PSCCBcar * *---------------------------------------------------------------------*/ -static void FPT_queueCmdComplete(PSCCBcard pCurrCard, PSCCB p_sccb, - UCHAR p_card) +static void FPT_queueCmdComplete(struct sccb_card *pCurrCard, + struct sccb *p_sccb, unsigned char p_card) { - UCHAR i, SCSIcmd; - CALL_BK_FN callback; - PSCCBMgr_tar_info currTar_Info; - - SCSIcmd = p_sccb->Cdb[0]; - - - if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED)) { - - if ((p_sccb->ControlByte & (SCCB_DATA_XFER_OUT | SCCB_DATA_XFER_IN)) && - (p_sccb->HostStatus == SCCB_COMPLETE) && - (p_sccb->TargetStatus != SSCHECK)) + unsigned char i, SCSIcmd; + CALL_BK_FN callback; + struct sccb_mgr_tar_info *currTar_Info; - if ((SCSIcmd == SCSI_READ) || - (SCSIcmd == SCSI_WRITE) || - (SCSIcmd == SCSI_READ_EXTENDED) || - (SCSIcmd == SCSI_WRITE_EXTENDED) || - (SCSIcmd == SCSI_WRITE_AND_VERIFY) || - (SCSIcmd == SCSI_START_STOP_UNIT) || - (pCurrCard->globalFlags & F_NO_FILTER) - ) - p_sccb->HostStatus = SCCB_DATA_UNDER_RUN; - } + SCSIcmd = p_sccb->Cdb[0]; + if (!(p_sccb->Sccb_XferState & F_ALL_XFERRED)) { - if(p_sccb->SccbStatus == SCCB_IN_PROCESS) - { - if (p_sccb->HostStatus || p_sccb->TargetStatus) - p_sccb->SccbStatus = SCCB_ERROR; - else - p_sccb->SccbStatus = SCCB_SUCCESS; + if ((p_sccb-> + ControlByte & (SCCB_DATA_XFER_OUT | SCCB_DATA_XFER_IN)) + && (p_sccb->HostStatus == SCCB_COMPLETE) + && (p_sccb->TargetStatus != SSCHECK)) + + if ((SCSIcmd == SCSI_READ) || + (SCSIcmd == SCSI_WRITE) || + (SCSIcmd == SCSI_READ_EXTENDED) || + (SCSIcmd == SCSI_WRITE_EXTENDED) || + (SCSIcmd == SCSI_WRITE_AND_VERIFY) || + (SCSIcmd == SCSI_START_STOP_UNIT) || + (pCurrCard->globalFlags & F_NO_FILTER) + ) + p_sccb->HostStatus = SCCB_DATA_UNDER_RUN; + } + + if (p_sccb->SccbStatus == SCCB_IN_PROCESS) { + if (p_sccb->HostStatus || p_sccb->TargetStatus) + p_sccb->SccbStatus = SCCB_ERROR; + else + p_sccb->SccbStatus = SCCB_SUCCESS; } - if (p_sccb->Sccb_XferState & F_AUTO_SENSE) { + if (p_sccb->Sccb_XferState & F_AUTO_SENSE) { - p_sccb->CdbLength = p_sccb->Save_CdbLen; - for (i=0; i < 6; i++) { - p_sccb->Cdb[i] = p_sccb->Save_Cdb[i]; - } - } + p_sccb->CdbLength = p_sccb->Save_CdbLen; + for (i = 0; i < 6; i++) { + p_sccb->Cdb[i] = p_sccb->Save_Cdb[i]; + } + } - if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) || - (p_sccb->OperationCode == RESIDUAL_COMMAND)) { + if ((p_sccb->OperationCode == RESIDUAL_SG_COMMAND) || + (p_sccb->OperationCode == RESIDUAL_COMMAND)) { - FPT_utilUpdateResidual(p_sccb); - } + FPT_utilUpdateResidual(p_sccb); + } - pCurrCard->cmdCounter--; - if (!pCurrCard->cmdCounter) { + pCurrCard->cmdCounter--; + if (!pCurrCard->cmdCounter) { - if (pCurrCard->globalFlags & F_GREEN_PC) { - WR_HARPOON(pCurrCard->ioPort+hp_clkctrl_0,(PWR_DWN | CLKCTRL_DEFAULT)); - WR_HARPOON(pCurrCard->ioPort+hp_sys_ctrl, STOP_CLK); - } + if (pCurrCard->globalFlags & F_GREEN_PC) { + WR_HARPOON(pCurrCard->ioPort + hp_clkctrl_0, + (PWR_DWN | CLKCTRL_DEFAULT)); + WR_HARPOON(pCurrCard->ioPort + hp_sys_ctrl, STOP_CLK); + } - WR_HARPOON(pCurrCard->ioPort+hp_semaphore, - (RD_HARPOON(pCurrCard->ioPort+hp_semaphore) & ~SCCB_MGR_ACTIVE)); + WR_HARPOON(pCurrCard->ioPort + hp_semaphore, + (RD_HARPOON(pCurrCard->ioPort + hp_semaphore) & + ~SCCB_MGR_ACTIVE)); - } + } - if(pCurrCard->discQCount != 0) - { - currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - if(((pCurrCard->globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { + if (pCurrCard->discQCount != 0) { + currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; + if (((pCurrCard->globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != + TAG_Q_TRYING))) { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = NULL; - } - else - { - if(p_sccb->Sccb_tag) - { + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_sccb->Lun]] = NULL; + } else { + if (p_sccb->Sccb_tag) { pCurrCard->discQCount--; pCurrCard->discQ_Tbl[p_sccb->Sccb_tag] = NULL; - }else - { + } else { pCurrCard->discQCount--; - pCurrCard->discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = NULL; + pCurrCard->discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = NULL; } } } - callback = (CALL_BK_FN)p_sccb->SccbCallback; - callback(p_sccb); - pCurrCard->globalFlags |= F_NEW_SCCB_CMD; - pCurrCard->currentSCCB = NULL; + callback = (CALL_BK_FN) p_sccb->SccbCallback; + callback(p_sccb); + pCurrCard->globalFlags |= F_NEW_SCCB_CMD; + pCurrCard->currentSCCB = NULL; } - /*--------------------------------------------------------------------- * * Function: Queue Disconnect @@ -7577,33 +7008,32 @@ static void FPT_queueCmdComplete(PSCCBca * Description: Add SCCB to our disconnect array. * *---------------------------------------------------------------------*/ -static void FPT_queueDisconnect(PSCCB p_sccb, UCHAR p_card) +static void FPT_queueDisconnect(struct sccb *p_sccb, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; + struct sccb_mgr_tar_info *currTar_Info; currTar_Info = &FPT_sccbMgrTbl[p_card][p_sccb->TargID]; - if(((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && - ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) - { - FPT_BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[p_sccb->Lun]] = p_sccb; - } - else - { - if (p_sccb->Sccb_tag) - { - FPT_BL_Card[p_card].discQ_Tbl[p_sccb->Sccb_tag] = p_sccb; - FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarLUNBusy[0] = 0; + if (((FPT_BL_Card[p_card].globalFlags & F_CONLUN_IO) && + ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))) { + FPT_BL_Card[p_card].discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[p_sccb->Lun]] = + p_sccb; + } else { + if (p_sccb->Sccb_tag) { + FPT_BL_Card[p_card].discQ_Tbl[p_sccb->Sccb_tag] = + p_sccb; + FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarLUNBusy[0] = + 0; FPT_sccbMgrTbl[p_card][p_sccb->TargID].TarTagQ_Cnt++; - }else - { - FPT_BL_Card[p_card].discQ_Tbl[currTar_Info->LunDiscQ_Idx[0]] = p_sccb; + } else { + FPT_BL_Card[p_card].discQ_Tbl[currTar_Info-> + LunDiscQ_Idx[0]] = p_sccb; } } FPT_BL_Card[p_card].currentSCCB = NULL; } - /*--------------------------------------------------------------------- * * Function: Queue Flush SCCB @@ -7612,33 +7042,35 @@ static void FPT_queueDisconnect(PSCCB p_ * *---------------------------------------------------------------------*/ -static void FPT_queueFlushSccb(UCHAR p_card, UCHAR error_code) +static void FPT_queueFlushSccb(unsigned char p_card, unsigned char error_code) { - UCHAR qtag,thisTarg; - PSCCB currSCCB; - PSCCBMgr_tar_info currTar_Info; + unsigned char qtag, thisTarg; + struct sccb *currSCCB; + struct sccb_mgr_tar_info *currTar_Info; - currSCCB = FPT_BL_Card[p_card].currentSCCB; - if(currSCCB != NULL) - { - thisTarg = (UCHAR)currSCCB->TargID; - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + currSCCB = FPT_BL_Card[p_card].currentSCCB; + if (currSCCB != NULL) { + thisTarg = (unsigned char)currSCCB->TargID; + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - for (qtag=0; qtagTargID == thisTarg)) - { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] && + (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == + thisTarg)) { - FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = (UCHAR)error_code; - - FPT_queueCmdComplete(&FPT_BL_Card[p_card],FPT_BL_Card[p_card].discQ_Tbl[qtag], p_card); + FPT_BL_Card[p_card].discQ_Tbl[qtag]-> + HostStatus = (unsigned char)error_code; - FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; - currTar_Info->TarTagQ_Cnt--; + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + FPT_BL_Card[p_card]. + discQ_Tbl[qtag], p_card); - } - } + FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; + currTar_Info->TarTagQ_Cnt--; + + } + } } } @@ -7651,61 +7083,57 @@ static void FPT_queueFlushSccb(UCHAR p_ * *---------------------------------------------------------------------*/ -static void FPT_queueFlushTargSccb(UCHAR p_card, UCHAR thisTarg, - UCHAR error_code) +static void FPT_queueFlushTargSccb(unsigned char p_card, unsigned char thisTarg, + unsigned char error_code) { - UCHAR qtag; - PSCCBMgr_tar_info currTar_Info; + unsigned char qtag; + struct sccb_mgr_tar_info *currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; + currTar_Info = &FPT_sccbMgrTbl[p_card][thisTarg]; - for (qtag=0; qtagTargID == thisTarg)) - { + if (FPT_BL_Card[p_card].discQ_Tbl[qtag] && + (FPT_BL_Card[p_card].discQ_Tbl[qtag]->TargID == thisTarg)) { - FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = (UCHAR)error_code; + FPT_BL_Card[p_card].discQ_Tbl[qtag]->HostStatus = + (unsigned char)error_code; - FPT_queueCmdComplete(&FPT_BL_Card[p_card],FPT_BL_Card[p_card].discQ_Tbl[qtag], p_card); + FPT_queueCmdComplete(&FPT_BL_Card[p_card], + FPT_BL_Card[p_card]. + discQ_Tbl[qtag], p_card); - FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; - currTar_Info->TarTagQ_Cnt--; + FPT_BL_Card[p_card].discQ_Tbl[qtag] = NULL; + currTar_Info->TarTagQ_Cnt--; - } - } + } + } } - - - - -static void FPT_queueAddSccb(PSCCB p_SCCB, UCHAR p_card) +static void FPT_queueAddSccb(struct sccb *p_SCCB, unsigned char p_card) { - PSCCBMgr_tar_info currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; + struct sccb_mgr_tar_info *currTar_Info; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; - p_SCCB->Sccb_forwardlink = NULL; + p_SCCB->Sccb_forwardlink = NULL; - p_SCCB->Sccb_backlink = currTar_Info->TarSelQ_Tail; + p_SCCB->Sccb_backlink = currTar_Info->TarSelQ_Tail; - if (currTar_Info->TarSelQ_Cnt == 0) { + if (currTar_Info->TarSelQ_Cnt == 0) { - currTar_Info->TarSelQ_Head = p_SCCB; - } - - else { + currTar_Info->TarSelQ_Head = p_SCCB; + } - currTar_Info->TarSelQ_Tail->Sccb_forwardlink = p_SCCB; - } + else { + currTar_Info->TarSelQ_Tail->Sccb_forwardlink = p_SCCB; + } - currTar_Info->TarSelQ_Tail = p_SCCB; - currTar_Info->TarSelQ_Cnt++; + currTar_Info->TarSelQ_Tail = p_SCCB; + currTar_Info->TarSelQ_Cnt++; } - /*--------------------------------------------------------------------- * * Function: Queue Find SCCB @@ -7715,54 +7143,56 @@ static void FPT_queueAddSccb(PSCCB p_SCC * *---------------------------------------------------------------------*/ -static UCHAR FPT_queueFindSccb(PSCCB p_SCCB, UCHAR p_card) +static unsigned char FPT_queueFindSccb(struct sccb *p_SCCB, + unsigned char p_card) { - PSCCB q_ptr; - PSCCBMgr_tar_info currTar_Info; + struct sccb *q_ptr; + struct sccb_mgr_tar_info *currTar_Info; - currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; + currTar_Info = &FPT_sccbMgrTbl[p_card][p_SCCB->TargID]; - q_ptr = currTar_Info->TarSelQ_Head; + q_ptr = currTar_Info->TarSelQ_Head; - while(q_ptr != NULL) { + while (q_ptr != NULL) { - if (q_ptr == p_SCCB) { + if (q_ptr == p_SCCB) { + if (currTar_Info->TarSelQ_Head == q_ptr) { - if (currTar_Info->TarSelQ_Head == q_ptr) { - - currTar_Info->TarSelQ_Head = q_ptr->Sccb_forwardlink; + currTar_Info->TarSelQ_Head = + q_ptr->Sccb_forwardlink; } - if (currTar_Info->TarSelQ_Tail == q_ptr) { + if (currTar_Info->TarSelQ_Tail == q_ptr) { - currTar_Info->TarSelQ_Tail = q_ptr->Sccb_backlink; + currTar_Info->TarSelQ_Tail = + q_ptr->Sccb_backlink; } - if (q_ptr->Sccb_forwardlink != NULL) { - q_ptr->Sccb_forwardlink->Sccb_backlink = q_ptr->Sccb_backlink; + if (q_ptr->Sccb_forwardlink != NULL) { + q_ptr->Sccb_forwardlink->Sccb_backlink = + q_ptr->Sccb_backlink; } - if (q_ptr->Sccb_backlink != NULL) { - q_ptr->Sccb_backlink->Sccb_forwardlink = q_ptr->Sccb_forwardlink; + if (q_ptr->Sccb_backlink != NULL) { + q_ptr->Sccb_backlink->Sccb_forwardlink = + q_ptr->Sccb_forwardlink; } - currTar_Info->TarSelQ_Cnt--; - - return(1); - } + currTar_Info->TarSelQ_Cnt--; - else { - q_ptr = q_ptr->Sccb_forwardlink; - } - } + return 1; + } + else { + q_ptr = q_ptr->Sccb_forwardlink; + } + } - return(0); + return 0; } - /*--------------------------------------------------------------------- * * Function: Utility Update Residual Count @@ -7776,48 +7206,47 @@ static UCHAR FPT_queueFindSccb(PSCCB p_S * *---------------------------------------------------------------------*/ -static void FPT_utilUpdateResidual(PSCCB p_SCCB) +static void FPT_utilUpdateResidual(struct sccb *p_SCCB) { - ULONG partial_cnt; - UINT sg_index; - ULONG *sg_ptr; + unsigned long partial_cnt; + unsigned int sg_index; + unsigned long *sg_ptr; - if (p_SCCB->Sccb_XferState & F_ALL_XFERRED) { + if (p_SCCB->Sccb_XferState & F_ALL_XFERRED) { - p_SCCB->DataLength = 0x0000; - } + p_SCCB->DataLength = 0x0000; + } - else if (p_SCCB->Sccb_XferState & F_SG_XFER) { + else if (p_SCCB->Sccb_XferState & F_SG_XFER) { - partial_cnt = 0x0000; + partial_cnt = 0x0000; - sg_index = p_SCCB->Sccb_sgseg; + sg_index = p_SCCB->Sccb_sgseg; - sg_ptr = (ULONG *)p_SCCB->DataPointer; + sg_ptr = (unsigned long *)p_SCCB->DataPointer; - if (p_SCCB->Sccb_SGoffset) { + if (p_SCCB->Sccb_SGoffset) { partial_cnt = p_SCCB->Sccb_SGoffset; sg_index++; - } + } - while ( ((ULONG)sg_index * (ULONG)SG_ELEMENT_SIZE) < - p_SCCB->DataLength ) { + while (((unsigned long)sg_index * + (unsigned long)SG_ELEMENT_SIZE) < p_SCCB->DataLength) { - partial_cnt += *(sg_ptr+(sg_index * 2)); + partial_cnt += *(sg_ptr + (sg_index * 2)); sg_index++; - } + } - p_SCCB->DataLength = partial_cnt; - } + p_SCCB->DataLength = partial_cnt; + } - else { + else { - p_SCCB->DataLength -= p_SCCB->Sccb_ATC; - } + p_SCCB->DataLength -= p_SCCB->Sccb_ATC; + } } - /*--------------------------------------------------------------------- * * Function: Wait 1 Second @@ -7826,23 +7255,22 @@ static void FPT_utilUpdateResidual(PSCC * *---------------------------------------------------------------------*/ -static void FPT_Wait1Second(ULONG p_port) +static void FPT_Wait1Second(unsigned long p_port) { - UCHAR i; + unsigned char i; - for(i=0; i < 4; i++) { + for (i = 0; i < 4; i++) { - FPT_Wait(p_port, TO_250ms); + FPT_Wait(p_port, TO_250ms); - if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST)) - break; + if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) + break; - if((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) - break; - } + if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) + break; + } } - /*--------------------------------------------------------------------- * * Function: FPT_Wait @@ -7851,45 +7279,43 @@ static void FPT_Wait1Second(ULONG p_port * *---------------------------------------------------------------------*/ -static void FPT_Wait(ULONG p_port, UCHAR p_delay) +static void FPT_Wait(unsigned long p_port, unsigned char p_delay) { - UCHAR old_timer; - UCHAR green_flag; + unsigned char old_timer; + unsigned char green_flag; - old_timer = RD_HARPOON(p_port+hp_seltimeout); + old_timer = RD_HARPOON(p_port + hp_seltimeout); - green_flag=RD_HARPOON(p_port+hp_clkctrl_0); - WR_HARPOON(p_port+hp_clkctrl_0, CLKCTRL_DEFAULT); + green_flag = RD_HARPOON(p_port + hp_clkctrl_0); + WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); - WR_HARPOON(p_port+hp_seltimeout,p_delay); - WRW_HARPOON((p_port+hp_intstat), TIMEOUT); - WRW_HARPOON((p_port+hp_intena), (FPT_default_intena & ~TIMEOUT)); + WR_HARPOON(p_port + hp_seltimeout, p_delay); + WRW_HARPOON((p_port + hp_intstat), TIMEOUT); + WRW_HARPOON((p_port + hp_intena), (FPT_default_intena & ~TIMEOUT)); + WR_HARPOON(p_port + hp_portctrl_0, + (RD_HARPOON(p_port + hp_portctrl_0) | START_TO)); - WR_HARPOON(p_port+hp_portctrl_0, - (RD_HARPOON(p_port+hp_portctrl_0) | START_TO)); + while (!(RDW_HARPOON((p_port + hp_intstat)) & TIMEOUT)) { - while (!(RDW_HARPOON((p_port+hp_intstat)) & TIMEOUT)) { + if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) + break; - if ((RD_HARPOON(p_port+hp_scsictrl_0) & SCSI_RST)) - break; - - if ((RDW_HARPOON((p_port+hp_intstat)) & SCAM_SEL)) - break; - } + if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) + break; + } - WR_HARPOON(p_port+hp_portctrl_0, - (RD_HARPOON(p_port+hp_portctrl_0) & ~START_TO)); + WR_HARPOON(p_port + hp_portctrl_0, + (RD_HARPOON(p_port + hp_portctrl_0) & ~START_TO)); - WRW_HARPOON((p_port+hp_intstat), TIMEOUT); - WRW_HARPOON((p_port+hp_intena), FPT_default_intena); + WRW_HARPOON((p_port + hp_intstat), TIMEOUT); + WRW_HARPOON((p_port + hp_intena), FPT_default_intena); - WR_HARPOON(p_port+hp_clkctrl_0,green_flag); + WR_HARPOON(p_port + hp_clkctrl_0, green_flag); - WR_HARPOON(p_port+hp_seltimeout,old_timer); + WR_HARPOON(p_port + hp_seltimeout, old_timer); } - /*--------------------------------------------------------------------- * * Function: Enable/Disable Write to EEPROM @@ -7899,26 +7325,26 @@ static void FPT_Wait(ULONG p_port, UCHAR * *---------------------------------------------------------------------*/ -static void FPT_utilEEWriteOnOff(ULONG p_port,UCHAR p_mode) +static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode) { - UCHAR ee_value; - - ee_value = (UCHAR)(RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H)); + unsigned char ee_value; - if (p_mode) + ee_value = + (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)); - FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR); + if (p_mode) - else + FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR); + else - FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR); + FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /*Turn off Master Select */ + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ } - /*--------------------------------------------------------------------- * * Function: Write EEPROM @@ -7928,46 +7354,46 @@ static void FPT_utilEEWriteOnOff(ULONG p * *---------------------------------------------------------------------*/ -static void FPT_utilEEWrite(ULONG p_port, USHORT ee_data, USHORT ee_addr) +static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data, + unsigned short ee_addr) { - UCHAR ee_value; - USHORT i; - - ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H))| - (SEE_MS | SEE_CS)); - - + unsigned char ee_value; + unsigned short i; - FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr); + ee_value = + (unsigned + char)((RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)) | (SEE_MS | SEE_CS)); + FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr); - ee_value |= (SEE_MS + SEE_CS); + ee_value |= (SEE_MS + SEE_CS); - for(i = 0x8000; i != 0; i>>=1) { + for (i = 0x8000; i != 0; i >>= 1) { - if (i & ee_data) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; - - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - } - ee_value &= (EXT_ARB_ACK | SCSI_TERM_ENA_H); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); - - FPT_Wait(p_port, TO_10ms); + if (i & ee_data) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */ - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /* Turn off Master Select */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + } + ee_value &= (EXT_ARB_ACK | SCSI_TERM_ENA_H); + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); + + FPT_Wait(p_port, TO_10ms); + + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */ + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /* Turn off Master Select */ } /*--------------------------------------------------------------------- @@ -7979,25 +7405,25 @@ static void FPT_utilEEWrite(ULONG p_port * *---------------------------------------------------------------------*/ -static USHORT FPT_utilEERead(ULONG p_port, USHORT ee_addr) +static unsigned short FPT_utilEERead(unsigned long p_port, + unsigned short ee_addr) { - USHORT i, ee_data1, ee_data2; + unsigned short i, ee_data1, ee_data2; i = 0; ee_data1 = FPT_utilEEReadOrg(p_port, ee_addr); - do - { + do { ee_data2 = FPT_utilEEReadOrg(p_port, ee_addr); - if(ee_data1 == ee_data2) - return(ee_data1); + if (ee_data1 == ee_data2) + return ee_data1; ee_data1 = ee_data2; i++; - }while(i < 4); + } while (i < 4); - return(ee_data1); + return ee_data1; } /*--------------------------------------------------------------------- @@ -8009,45 +7435,45 @@ static USHORT FPT_utilEERead(ULONG p_por * *---------------------------------------------------------------------*/ -static USHORT FPT_utilEEReadOrg(ULONG p_port, USHORT ee_addr) +static unsigned short FPT_utilEEReadOrg(unsigned long p_port, + unsigned short ee_addr) { - UCHAR ee_value; - USHORT i, ee_data; + unsigned char ee_value; + unsigned short i, ee_data; - ee_value = (UCHAR)((RD_HARPOON(p_port+hp_ee_ctrl) & (EXT_ARB_ACK | SCSI_TERM_ENA_H))| - (SEE_MS | SEE_CS)); + ee_value = + (unsigned + char)((RD_HARPOON(p_port + hp_ee_ctrl) & + (EXT_ARB_ACK | SCSI_TERM_ENA_H)) | (SEE_MS | SEE_CS)); + FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr); - FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr); + ee_value |= (SEE_MS + SEE_CS); + ee_data = 0; + for (i = 1; i <= 16; i++) { - ee_value |= (SEE_MS + SEE_CS); - ee_data = 0; + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); - for(i = 1; i <= 16; i++) { + ee_data <<= 1; - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - ee_data <<= 1; - - if (RD_HARPOON(p_port+hp_ee_ctrl) & SEE_DI) - ee_data |= 1; - } + if (RD_HARPOON(p_port + hp_ee_ctrl) & SEE_DI) + ee_data |= 1; + } - ee_value &= ~(SEE_MS + SEE_CS); - WR_HARPOON(p_port+hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); /*Turn off Master Select */ + ee_value &= ~(SEE_MS + SEE_CS); + WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ - return(ee_data); + return ee_data; } - /*--------------------------------------------------------------------- * * Function: Send EE command and Address to the EEPROM @@ -8057,101 +7483,95 @@ static USHORT FPT_utilEEReadOrg(ULONG p_ * *---------------------------------------------------------------------*/ -static void FPT_utilEESendCmdAddr(ULONG p_port, UCHAR ee_cmd, USHORT ee_addr) +static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd, + unsigned short ee_addr) { - UCHAR ee_value; - UCHAR narrow_flg; + unsigned char ee_value; + unsigned char narrow_flg; - USHORT i; + unsigned short i; + narrow_flg = + (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & + NARROW_SCSI_CARD); - narrow_flg= (UCHAR)(RD_HARPOON(p_port+hp_page_ctrl) & NARROW_SCSI_CARD); + ee_value = SEE_MS; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CS; /* Set CS to EEPROM */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); - ee_value = SEE_MS; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); + for (i = 0x04; i != 0; i >>= 1) { - ee_value |= SEE_CS; /* Set CS to EEPROM */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - - for(i = 0x04; i != 0; i>>=1) { - - if (i & ee_cmd) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; + if (i & ee_cmd) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - } + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + } + if (narrow_flg) + i = 0x0080; - if (narrow_flg) - i = 0x0080; + else + i = 0x0200; - else - i = 0x0200; + while (i != 0) { + if (i & ee_addr) + ee_value |= SEE_DO; + else + ee_value &= ~SEE_DO; - while (i != 0) { + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value |= SEE_CLK; /* Clock data! */ + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + ee_value &= ~SEE_CLK; + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + WR_HARPOON(p_port + hp_ee_ctrl, ee_value); + + i >>= 1; + } +} - if (i & ee_addr) - ee_value |= SEE_DO; - else - ee_value &= ~SEE_DO; - - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value |= SEE_CLK; /* Clock data! */ - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - ee_value &= ~SEE_CLK; - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - WR_HARPOON(p_port+hp_ee_ctrl, ee_value); - - i >>= 1; - } -} - -static USHORT FPT_CalcCrc16(UCHAR buffer[]) -{ - USHORT crc=0; - int i,j; - USHORT ch; - for (i=0; i < ID_STRING_LENGTH; i++) - { - ch = (USHORT) buffer[i]; - for(j=0; j < 8; j++) - { - if ((crc ^ ch) & 1) - crc = (crc >> 1) ^ CRCMASK; - else - crc >>= 1; - ch >>= 1; - } - } - return(crc); +static unsigned short FPT_CalcCrc16(unsigned char buffer[]) +{ + unsigned short crc = 0; + int i, j; + unsigned short ch; + for (i = 0; i < ID_STRING_LENGTH; i++) { + ch = (unsigned short)buffer[i]; + for (j = 0; j < 8; j++) { + if ((crc ^ ch) & 1) + crc = (crc >> 1) ^ CRCMASK; + else + crc >>= 1; + ch >>= 1; + } + } + return crc; } -static UCHAR FPT_CalcLrc(UCHAR buffer[]) +static unsigned char FPT_CalcLrc(unsigned char buffer[]) { int i; - UCHAR lrc; + unsigned char lrc; lrc = 0; - for(i = 0; i < ID_STRING_LENGTH; i++) + for (i = 0; i < ID_STRING_LENGTH; i++) lrc ^= buffer[i]; - return(lrc); + return lrc; } - - /* The following inline definitions avoid type conflicts. */ @@ -8159,51 +7579,49 @@ static UCHAR FPT_CalcLrc(UCHAR buffer[]) static inline unsigned char FlashPoint__ProbeHostAdapter(struct FlashPoint_Info *FlashPointInfo) { - return FlashPoint_ProbeHostAdapter((PSCCBMGR_INFO) FlashPointInfo); + return FlashPoint_ProbeHostAdapter((struct sccb_mgr_info *) + FlashPointInfo); } - static inline FlashPoint_CardHandle_T FlashPoint__HardwareResetHostAdapter(struct FlashPoint_Info *FlashPointInfo) { - return FlashPoint_HardwareResetHostAdapter((PSCCBMGR_INFO) FlashPointInfo); + return FlashPoint_HardwareResetHostAdapter((struct sccb_mgr_info *) + FlashPointInfo); } static inline void FlashPoint__ReleaseHostAdapter(FlashPoint_CardHandle_T CardHandle) { - FlashPoint_ReleaseHostAdapter(CardHandle); + FlashPoint_ReleaseHostAdapter(CardHandle); } - static inline void -FlashPoint__StartCCB(FlashPoint_CardHandle_T CardHandle, struct BusLogic_CCB *CCB) +FlashPoint__StartCCB(FlashPoint_CardHandle_T CardHandle, + struct BusLogic_CCB *CCB) { - FlashPoint_StartCCB(CardHandle, (PSCCB) CCB); + FlashPoint_StartCCB(CardHandle, (struct sccb *)CCB); } - static inline void -FlashPoint__AbortCCB(FlashPoint_CardHandle_T CardHandle, struct BusLogic_CCB *CCB) +FlashPoint__AbortCCB(FlashPoint_CardHandle_T CardHandle, + struct BusLogic_CCB *CCB) { - FlashPoint_AbortCCB(CardHandle, (PSCCB) CCB); + FlashPoint_AbortCCB(CardHandle, (struct sccb *)CCB); } - static inline boolean FlashPoint__InterruptPending(FlashPoint_CardHandle_T CardHandle) { - return FlashPoint_InterruptPending(CardHandle); + return FlashPoint_InterruptPending(CardHandle); } - static inline int FlashPoint__HandleInterrupt(FlashPoint_CardHandle_T CardHandle) { - return FlashPoint_HandleInterrupt(CardHandle); + return FlashPoint_HandleInterrupt(CardHandle); } - #define FlashPoint_ProbeHostAdapter FlashPoint__ProbeHostAdapter #define FlashPoint_HardwareResetHostAdapter FlashPoint__HardwareResetHostAdapter #define FlashPoint_ReleaseHostAdapter FlashPoint__ReleaseHostAdapter @@ -8212,9 +7630,7 @@ FlashPoint__HandleInterrupt(FlashPoint_C #define FlashPoint_InterruptPending FlashPoint__InterruptPending #define FlashPoint_HandleInterrupt FlashPoint__HandleInterrupt - -#else /* CONFIG_SCSI_OMIT_FLASHPOINT */ - +#else /* CONFIG_SCSI_OMIT_FLASHPOINT */ /* Define prototypes for the FlashPoint SCCB Manager Functions. @@ -8222,12 +7638,11 @@ FlashPoint__HandleInterrupt(FlashPoint_C extern unsigned char FlashPoint_ProbeHostAdapter(struct FlashPoint_Info *); extern FlashPoint_CardHandle_T - FlashPoint_HardwareResetHostAdapter(struct FlashPoint_Info *); +FlashPoint_HardwareResetHostAdapter(struct FlashPoint_Info *); extern void FlashPoint_StartCCB(FlashPoint_CardHandle_T, struct BusLogic_CCB *); extern int FlashPoint_AbortCCB(FlashPoint_CardHandle_T, struct BusLogic_CCB *); extern boolean FlashPoint_InterruptPending(FlashPoint_CardHandle_T); extern int FlashPoint_HandleInterrupt(FlashPoint_CardHandle_T); extern void FlashPoint_ReleaseHostAdapter(FlashPoint_CardHandle_T); - -#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */ +#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */ --- a/drivers/net/ne2.c +++ b/drivers/net/ne2.c @@ -75,6 +75,7 @@ static const char *version = "ne2.c:v0.9 #include #include #include +#include #include #include @@ -403,7 +404,7 @@ static int __init ne2_probe1(struct net_ outb(inb(base_addr + NE_RESET), base_addr + NE_RESET); while ((inb_p(base_addr + EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(" not found (no reset ack).\n"); retval = -ENODEV; goto out; @@ -556,7 +557,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; @@ -757,7 +758,7 @@ retry: #endif while ((inb_p(nic_base + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk("%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/wireless/strip.c +++ b/drivers/net/wireless/strip.c @@ -112,7 +112,7 @@ static const char StripVersion[] = "1.3A #include #include #include - +#include /************************************************************************/ /* Useful structures and definitions */ @@ -404,8 +404,6 @@ static const StringDescriptor CommandStr (S)->battery_voltage.c[0] && \ memcmp(&(S)->true_dev_addr, zero_address.c, sizeof(zero_address))) -static const char hextable[16] = "0123456789ABCDEF"; - static const MetricomAddress zero_address; static const MetricomAddress broadcast_address = { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} }; @@ -1285,13 +1283,13 @@ static __u8 *add_checksum(__u8 * buffer, __u8 *p = buffer; while (p < end) sum += *p++; - end[3] = hextable[sum & 0xF]; + end[3] = large_digits[sum & 0xF]; sum >>= 4; - end[2] = hextable[sum & 0xF]; + end[2] = large_digits[sum & 0xF]; sum >>= 4; - end[1] = hextable[sum & 0xF]; + end[1] = large_digits[sum & 0xF]; sum >>= 4; - end[0] = hextable[sum & 0xF]; + end[0] = large_digits[sum & 0xF]; return (end + 4); } @@ -1372,15 +1370,15 @@ static unsigned char *strip_make_packet( *ptr++ = 0x0D; *ptr++ = '*'; - *ptr++ = hextable[haddr.c[2] >> 4]; - *ptr++ = hextable[haddr.c[2] & 0xF]; - *ptr++ = hextable[haddr.c[3] >> 4]; - *ptr++ = hextable[haddr.c[3] & 0xF]; + *ptr++ = large_digits[haddr.c[2] >> 4]; + *ptr++ = large_digits[haddr.c[2] & 0xF]; + *ptr++ = large_digits[haddr.c[3] >> 4]; + *ptr++ = large_digits[haddr.c[3] & 0xF]; *ptr++ = '-'; - *ptr++ = hextable[haddr.c[4] >> 4]; - *ptr++ = hextable[haddr.c[4] & 0xF]; - *ptr++ = hextable[haddr.c[5] >> 4]; - *ptr++ = hextable[haddr.c[5] & 0xF]; + *ptr++ = large_digits[haddr.c[4] >> 4]; + *ptr++ = large_digits[haddr.c[4] & 0xF]; + *ptr++ = large_digits[haddr.c[5] >> 4]; + *ptr++ = large_digits[haddr.c[5] & 0xF]; *ptr++ = '*'; *ptr++ = key.c[0]; *ptr++ = key.c[1]; @@ -1569,7 +1567,7 @@ static int strip_xmit(struct sk_buff *sk del_timer(&strip_info->idle_timer); - if (jiffies - strip_info->pps_timer > HZ) { + if (time_after(jiffies, strip_info->pps_timer + HZ)) { unsigned long t = jiffies - strip_info->pps_timer; unsigned long rx_pps_count = (strip_info->rx_pps_count * HZ * 8 + t / 2) / t; unsigned long tx_pps_count = (strip_info->tx_pps_count * HZ * 8 + t / 2) / t; --- a/drivers/net/ne-h8300.c +++ b/drivers/net/ne-h8300.c @@ -27,6 +27,7 @@ static const char version1[] = #include #include #include +#include #include #include @@ -365,7 +366,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -580,7 +581,7 @@ retry: #endif while ((inb_p(NE_BASE + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/arm/etherh.c +++ b/drivers/net/arm/etherh.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -356,7 +357,7 @@ etherh_block_output (struct net_device * dma_start = jiffies; while ((readb (addr + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_ERR "%s: timeout waiting for TX RDC\n", dev->name); etherh_reset (dev); --- a/drivers/net/apne.c +++ b/drivers/net/apne.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -216,7 +217,7 @@ static int __init apne_probe1(struct net outb(inb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((inb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(" not found (no reset ack).\n"); return -ENODEV; } @@ -382,7 +383,7 @@ apne_reset_8390(struct net_device *dev) /* This check _should_not_ be necessary, omit eventually. */ while ((inb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -530,7 +531,7 @@ apne_block_output(struct net_device *dev dma_start = jiffies; while ((inb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk("%s: timeout waiting for Tx RDC.\n", dev->name); apne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/ne.c +++ b/drivers/net/ne.c @@ -50,6 +50,7 @@ static const char version2[] = #include #include #include +#include #include #include @@ -350,7 +351,7 @@ static int __init ne_probe1(struct net_d outb(inb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((inb_p(ioaddr + EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { if (bad_card) { printk(" (warning: no reset ack)"); break; @@ -589,7 +590,7 @@ static void ne_reset_8390(struct net_dev /* This check _should_not_ be necessary, omit eventually. */ while ((inb_p(NE_BASE+EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; } @@ -796,7 +797,7 @@ retry: #endif while ((inb_p(nic_base + EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name); ne_reset_8390(dev); NS8390_init(dev,1); --- a/drivers/net/tulip/pnic.c +++ b/drivers/net/tulip/pnic.c @@ -16,6 +16,7 @@ #include #include +#include #include "tulip.h" @@ -68,7 +69,7 @@ void pnic_lnk_change(struct net_device * */ if (tulip_media_cap[dev->if_port] & MediaIsMII) return; - if (! tp->nwayset || jiffies - dev->trans_start > 1*HZ) { + if (! tp->nwayset || time_after(jiffies, dev->trans_start + 1*HZ)) { tp->csr6 = 0x00420000 | (tp->csr6 & 0x0000fdff); iowrite32(tp->csr6, ioaddr + CSR6); iowrite32(0x30, ioaddr + CSR12); --- a/drivers/net/tokenring/olympic.c +++ b/drivers/net/tokenring/olympic.c @@ -100,6 +100,7 @@ #include #include #include +#include #include @@ -267,11 +268,16 @@ static int __devinit olympic_probe(struc register_netdev(dev) ; printk("Olympic: %s registered as: %s\n",olympic_priv->olympic_card_name,dev->name); if (olympic_priv->olympic_network_monitor) { /* Must go after register_netdev as we need the device name */ + struct proc_dir_entry *proc_dir_entry; char proc_name[20] ; strcpy(proc_name,"net/olympic_") ; strcat(proc_name,dev->name) ; - create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,(void *)dev) ; - printk("Olympic: Network Monitor information: /proc/%s\n",proc_name); + proc_dir_entry = create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,dev); + + if (proc_dir_entry) + printk(KERN_INFO "Olympic: Network Monitor information: /proc/%s\n",proc_name); + else + printk(KERN_WARNING "Olympic: Network Monitor information: /proc/%s could not be created\n",proc_name); } return 0 ; @@ -300,14 +306,14 @@ static int __devinit olympic_init(struct olympic_priv=(struct olympic_private *)dev->priv; olympic_mmio=olympic_priv->olympic_mmio; - printk("%s \n", version); + printk("%s\n", version); printk("%s. I/O at %hx, MMIO at %p, LAP at %p, using irq %d\n", olympic_priv->olympic_card_name, (unsigned int) dev->base_addr,olympic_priv->olympic_mmio, olympic_priv->olympic_lap, dev->irq); writel(readl(olympic_mmio+BCTL) | BCTL_SOFTRESET,olympic_mmio+BCTL); t=jiffies; while((readl(olympic_mmio+BCTL)) & BCTL_SOFTRESET) { schedule(); - if(jiffies-t > 40*HZ) { + if(time_after(jiffies, t + 40*HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding.\n"); return -ENODEV; } @@ -359,7 +365,7 @@ static int __devinit olympic_init(struct t=jiffies; while (!readl(olympic_mmio+CLKCTL) & CLKCTL_PAUSE) { schedule() ; - if(jiffies-t > 2*HZ) { + if(time_after(jiffies, t + 2*HZ)) { printk(KERN_ERR "IBM Cardbus tokenring adapter not responsing.\n") ; return -ENODEV; } @@ -373,7 +379,7 @@ static int __devinit olympic_init(struct t=jiffies; while(!((readl(olympic_mmio+SISR_RR)) & SISR_SRB_REPLY)) { schedule(); - if(jiffies-t > 15*HZ) { + if(time_after(jiffies, t + 15*HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding.\n"); return -ENODEV; } @@ -468,7 +474,7 @@ static int olympic_open(struct net_devic #if OLYMPIC_DEBUG printk("LAPWWO: %x, LAPA: %x\n",readw(olympic_mmio+LAPWWO), readl(olympic_mmio+LAPA)); printk("SISR Mask = %04x\n", readl(olympic_mmio+SISR_MASK)); - printk("Before the open command \n"); + printk("Before the open command\n"); #endif do { memset_io(init_srb,0,SRB_COMMAND_SIZE); @@ -519,7 +525,7 @@ static int olympic_open(struct net_devic olympic_priv->srb_queued=0; break; } - if ((jiffies-t) > 10*HZ) { + if (time_after(jiffies, t + 10*HZ)) { printk(KERN_WARNING "%s: SRB timed out. \n",dev->name) ; olympic_priv->srb_queued=0; break ; @@ -549,7 +555,7 @@ static int olympic_open(struct net_devic break; case 0x07: if (!olympic_priv->olympic_ring_speed && open_finished) { /* Autosense , first time around */ - printk(KERN_WARNING "%s: Retrying at different ring speed \n", dev->name); + printk(KERN_WARNING "%s: Retrying at different ring speed\n", dev->name); open_finished = 0 ; continue; } @@ -558,7 +564,7 @@ static int olympic_open(struct net_devic if (!olympic_priv->olympic_ring_speed && ((err & 0x0f) == 0x0d)) { printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n",dev->name); - printk(KERN_WARNING "%s: Please try again with a specified ring speed \n",dev->name); + printk(KERN_WARNING "%s: Please try again with a specified ring speed\n",dev->name); } else { printk(KERN_WARNING "%s: %s - %s\n", dev->name, open_maj_error[(err & 0xf0) >> 4], @@ -771,7 +777,7 @@ static void olympic_rx(struct net_device olympic_priv->rx_status_last_received++ ; olympic_priv->rx_status_last_received &= (OLYMPIC_RX_RING_SIZE -1); #if OLYMPIC_DEBUG - printk("rx status: %x rx len: %x \n", le32_to_cpu(rx_status->status_buffercnt), le32_to_cpu(rx_status->fragmentcnt_framelen)); + printk("rx status: %x rx len: %x\n", le32_to_cpu(rx_status->status_buffercnt), le32_to_cpu(rx_status->fragmentcnt_framelen)); #endif length = le32_to_cpu(rx_status->fragmentcnt_framelen) & 0xffff; buffer_cnt = le32_to_cpu(rx_status->status_buffercnt) & 0xffff; @@ -786,15 +792,15 @@ static void olympic_rx(struct net_device if (l_status_buffercnt & 0x3B000000) { if (olympic_priv->olympic_message_level) { if (l_status_buffercnt & (1<<29)) /* Rx Frame Truncated */ - printk(KERN_WARNING "%s: Rx Frame Truncated \n",dev->name); + printk(KERN_WARNING "%s: Rx Frame Truncated\n",dev->name); if (l_status_buffercnt & (1<<28)) /*Rx receive overrun */ - printk(KERN_WARNING "%s: Rx Frame Receive overrun \n",dev->name); + printk(KERN_WARNING "%s: Rx Frame Receive overrun\n",dev->name); if (l_status_buffercnt & (1<<27)) /* No receive buffers */ - printk(KERN_WARNING "%s: No receive buffers \n",dev->name); + printk(KERN_WARNING "%s: No receive buffers\n",dev->name); if (l_status_buffercnt & (1<<25)) /* Receive frame error detect */ - printk(KERN_WARNING "%s: Receive frame error detect \n",dev->name); + printk(KERN_WARNING "%s: Receive frame error detect\n",dev->name); if (l_status_buffercnt & (1<<24)) /* Received Error Detect */ - printk(KERN_WARNING "%s: Received Error Detect \n",dev->name); + printk(KERN_WARNING "%s: Received Error Detect\n",dev->name); } olympic_priv->rx_ring_last_received += i ; olympic_priv->rx_ring_last_received &= (OLYMPIC_RX_RING_SIZE -1) ; @@ -808,7 +814,7 @@ static void olympic_rx(struct net_device } if (skb == NULL) { - printk(KERN_WARNING "%s: Not enough memory to copy packet to upper layers. \n",dev->name) ; + printk(KERN_WARNING "%s: Not enough memory to copy packet to upper layers.\n",dev->name) ; olympic_priv->olympic_stats.rx_dropped++ ; /* Update counters even though we don't transfer the frame */ olympic_priv->rx_ring_last_received += i ; @@ -1111,7 +1117,7 @@ static int olympic_close(struct net_devi } if (t == 0) { - printk(KERN_WARNING "%s: SRB timed out. May not be fatal. \n",dev->name) ; + printk(KERN_WARNING "%s: SRB timed out. May not be fatal.\n",dev->name) ; } olympic_priv->srb_queued=0; } @@ -1250,7 +1256,7 @@ static void olympic_srb_bh(struct net_de case 0x00: break ; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name) ; + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name) ; break ; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n",dev->name); @@ -1277,13 +1283,13 @@ static void olympic_srb_bh(struct net_de case 0x00: break ; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name) ; + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name) ; break ; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n",dev->name) ; break ; case 0x39: /* Must deal with this if individual multicast addresses used */ - printk(KERN_INFO "%s: Group address not found \n",dev->name); + printk(KERN_INFO "%s: Group address not found\n",dev->name); break ; default: break ; @@ -1298,10 +1304,10 @@ static void olympic_srb_bh(struct net_de switch (readb(srb+2)) { case 0x00: if (olympic_priv->olympic_message_level) - printk(KERN_INFO "%s: Functional Address Mask Set \n",dev->name) ; + printk(KERN_INFO "%s: Functional Address Mask Set\n",dev->name) ; break ; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name) ; + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name) ; break ; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n",dev->name) ; @@ -1321,7 +1327,7 @@ static void olympic_srb_bh(struct net_de printk(KERN_INFO "%s: Read Log issued\n",dev->name) ; break ; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name) ; + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name) ; break ; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n",dev->name) ; @@ -1339,7 +1345,7 @@ static void olympic_srb_bh(struct net_de printk(KERN_INFO "%s: Read Source Routing Counters issued\n",dev->name) ; break ; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name) ; + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name) ; break ; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n",dev->name) ; @@ -1422,7 +1428,7 @@ static void olympic_arb_cmd(struct net_d printk("Loc %d = %02x\n",i,readb(frame_data + i)); } - printk("next %04x, fs %02x, len %04x \n",readw(buf_ptr+offsetof(struct mac_receive_buffer,next)), readb(buf_ptr+offsetof(struct mac_receive_buffer,frame_status)), readw(buf_ptr+offsetof(struct mac_receive_buffer,buffer_length))); + printk("next %04x, fs %02x, len %04x\n",readw(buf_ptr+offsetof(struct mac_receive_buffer,next)), readb(buf_ptr+offsetof(struct mac_receive_buffer,frame_status)), readw(buf_ptr+offsetof(struct mac_receive_buffer,buffer_length))); } #endif mac_frame = dev_alloc_skb(frame_len) ; @@ -1442,10 +1448,10 @@ static void olympic_arb_cmd(struct net_d if (olympic_priv->olympic_network_monitor) { struct trh_hdr *mac_hdr ; - printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name) ; + printk(KERN_WARNING "%s: Received MAC Frame, details:\n",dev->name) ; mac_hdr = (struct trh_hdr *)mac_frame->data ; - printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->daddr[0], mac_hdr->daddr[1], mac_hdr->daddr[2], mac_hdr->daddr[3], mac_hdr->daddr[4], mac_hdr->daddr[5]) ; - printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->saddr[0], mac_hdr->saddr[1], mac_hdr->saddr[2], mac_hdr->saddr[3], mac_hdr->saddr[4], mac_hdr->saddr[5]) ; + printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name , mac_hdr->daddr[0], mac_hdr->daddr[1], mac_hdr->daddr[2], mac_hdr->daddr[3], mac_hdr->daddr[4], mac_hdr->daddr[5]) ; + printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name , mac_hdr->saddr[0], mac_hdr->saddr[1], mac_hdr->saddr[2], mac_hdr->saddr[3], mac_hdr->saddr[4], mac_hdr->saddr[5]) ; } mac_frame->dev = dev ; mac_frame->protocol = tr_type_trans(mac_frame,dev); @@ -1506,20 +1512,20 @@ drop_frame: writel(readl(olympic_mmio+BCTL)&~(3<<13),olympic_mmio+BCTL); netif_stop_queue(dev); olympic_priv->srb = readw(olympic_priv->olympic_lap + LAPWWO) ; - printk(KERN_WARNING "%s: Adapter has been closed \n", dev->name) ; + printk(KERN_WARNING "%s: Adapter has been closed\n", dev->name) ; } /* If serious error */ if (olympic_priv->olympic_message_level) { if (lan_status_diff & LSC_SIG_LOSS) - printk(KERN_WARNING "%s: No receive signal detected \n", dev->name) ; + printk(KERN_WARNING "%s: No receive signal detected\n", dev->name) ; if (lan_status_diff & LSC_HARD_ERR) - printk(KERN_INFO "%s: Beaconing \n",dev->name); + printk(KERN_INFO "%s: Beaconing\n",dev->name); if (lan_status_diff & LSC_SOFT_ERR) - printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame \n",dev->name); + printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame\n",dev->name); if (lan_status_diff & LSC_TRAN_BCN) printk(KERN_INFO "%s: We are tranmitting the beacon, aaah\n",dev->name); if (lan_status_diff & LSC_SS) - printk(KERN_INFO "%s: Single Station on the ring \n", dev->name); + printk(KERN_INFO "%s: Single Station on the ring\n", dev->name); if (lan_status_diff & LSC_RING_REC) printk(KERN_INFO "%s: Ring recovery ongoing\n",dev->name); if (lan_status_diff & LSC_FDX_MODE) @@ -1529,7 +1535,7 @@ drop_frame: if (lan_status_diff & LSC_CO) { if (olympic_priv->olympic_message_level) - printk(KERN_INFO "%s: Counter Overflow \n", dev->name); + printk(KERN_INFO "%s: Counter Overflow\n", dev->name); /* Issue READ.LOG command */ @@ -1568,7 +1574,7 @@ drop_frame: } /* Lan.change.status */ else - printk(KERN_WARNING "%s: Unknown arb command \n", dev->name); + printk(KERN_WARNING "%s: Unknown arb command\n", dev->name); } static void olympic_asb_bh(struct net_device *dev) @@ -1595,10 +1601,10 @@ static void olympic_asb_bh(struct net_de if (olympic_priv->asb_queued == 2) { switch (readb(asb_block+2)) { case 0x01: - printk(KERN_WARNING "%s: Unrecognized command code \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized command code\n", dev->name); break ; case 0x26: - printk(KERN_WARNING "%s: Unrecognized buffer address \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized buffer address\n", dev->name); break ; case 0xFF: /* Valid response, everything should be ok again */ @@ -1694,10 +1700,10 @@ static int olympic_proc_info(char *buffe swab16(readw(opt+offsetof(struct olympic_parameters_table, auth_source_class))), swab16(readw(opt+offsetof(struct olympic_parameters_table, att_code)))); - size += sprintf(buffer+size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", + size += sprintf(buffer+size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl :\n", dev->name) ; - size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x : %04x : %04x : %04x : \n", + size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x : %04x : %04x : %04x :\n", dev->name, readb(opt+offsetof(struct olympic_parameters_table, source_addr)), readb(opt+offsetof(struct olympic_parameters_table, source_addr)+1), @@ -1712,10 +1718,10 @@ static int olympic_proc_info(char *buffe swab16(readw(opt+offsetof(struct olympic_parameters_table, mon_error))), swab16(readw(opt+offsetof(struct olympic_parameters_table, frame_correl)))); - size += sprintf(buffer+size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys : \n", + size += sprintf(buffer+size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys :\n", dev->name) ; - size += sprintf(buffer+size, "%6s: : %02x : %02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x : \n", + size += sprintf(buffer+size, "%6s: : %02x : %02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x :\n", dev->name, swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_transmit))), swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_receive))), @@ -1771,7 +1777,7 @@ static struct pci_driver olympic_driver static int __init olympic_pci_init(void) { - return pci_module_init (&olympic_driver) ; + return pci_register_driver (&olympic_driver); } static void __exit olympic_pci_cleanup(void) --- a/drivers/net/tokenring/lanstreamer.c +++ b/drivers/net/tokenring/lanstreamer.c @@ -122,6 +122,8 @@ #include #include #include +#include +#include #include @@ -358,7 +360,7 @@ static int __devinit streamer_init_one(s pcr |= PCI_COMMAND_SERR; pci_write_config_word (pdev, PCI_COMMAND, pcr); - printk("%s \n", version); + printk("%s\n", version); printk("%s: %s. I/O at %hx, MMIO at %p, using irq %d\n",dev->name, streamer_priv->streamer_card_name, (unsigned int) dev->base_addr, @@ -512,7 +514,7 @@ static int streamer_reset(struct net_dev while (!((readw(streamer_mmio + SISR)) & SISR_SRB_REPLY)) { msleep_interruptible(100); - if (jiffies - t > 40 * HZ) { + if (time_after(jiffies, t + 40 * HZ)) { printk(KERN_ERR "IBM PCI tokenring card not responding\n"); release_region(dev->base_addr, STREAMER_IO_SPACE); @@ -657,7 +659,7 @@ static int streamer_open(struct net_devi #if STREAMER_DEBUG writew(readw(streamer_mmio + LAPWWO), streamer_mmio + LAPA); - printk("srb open request: \n"); + printk("srb open request:\n"); for (i = 0; i < 16; i++) { printk("%x:", ntohs(readw(streamer_mmio + LAPDINC))); } @@ -670,17 +672,15 @@ static int streamer_open(struct net_devi writew(LISR_SRB_CMD, streamer_mmio + LISR_SUM); spin_unlock_irqrestore(&streamer_priv->streamer_lock, flags); - while (streamer_priv->srb_queued) { - interruptible_sleep_on_timeout(&streamer_priv->srb_wait, 5 * HZ); - if (signal_pending(current)) { - printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); - printk(KERN_WARNING "SISR=%x MISR=%x, LISR=%x\n", - readw(streamer_mmio + SISR), - readw(streamer_mmio + MISR_RUM), - readw(streamer_mmio + LISR)); - streamer_priv->srb_queued = 0; - break; - } + wait_event_interruptible_timeout(streamer_priv->srb_wait, + !streamer_priv->srb_queued, 5 * HZ); + if (signal_pending(current)) { + printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); + printk(KERN_WARNING "SISR=%x MISR=%x, LISR=%x\n", + readw(streamer_mmio + SISR), + readw(streamer_mmio + MISR_RUM), + readw(streamer_mmio + LISR)); + streamer_priv->srb_queued = 0; } #if STREAMER_DEBUG @@ -707,7 +707,7 @@ static int streamer_open(struct net_devi if (srb_word != 0) { if (srb_word == 0x07) { if (!streamer_priv->streamer_ring_speed && open_finished) { /* Autosense , first time around */ - printk(KERN_WARNING "%s: Retrying at different ring speed \n", + printk(KERN_WARNING "%s: Retrying at different ring speed\n", dev->name); open_finished = 0; } else { @@ -723,7 +723,7 @@ static int streamer_open(struct net_devi && ((error_code & 0x0f) == 0x0d)) { printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name); - printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name); + printk(KERN_WARNING "%s: Please try again with a specified ring speed\n", dev->name); free_irq(dev->irq, dev); return -EIO; } @@ -929,7 +929,7 @@ static void streamer_rx(struct net_devic if (rx_desc->status & 0x7E830000) { /* errors */ if (streamer_priv->streamer_message_level) { - printk(KERN_WARNING "%s: Rx Error %x \n", + printk(KERN_WARNING "%s: Rx Error %x\n", dev->name, rx_desc->status); } } else { /* received without errors */ @@ -942,7 +942,7 @@ static void streamer_rx(struct net_devic if (skb == NULL) { - printk(KERN_WARNING "%s: Not enough memory to copy packet to upper layers. \n", dev->name); + printk(KERN_WARNING "%s: Not enough memory to copy packet to upper layers.\n", dev->name); streamer_priv->streamer_stats.rx_dropped++; } else { /* we allocated an skb OK */ skb->dev = dev; @@ -1224,20 +1224,15 @@ static int streamer_close(struct net_dev spin_unlock_irqrestore(&streamer_priv->streamer_lock, flags); - while (streamer_priv->srb_queued) - { - interruptible_sleep_on_timeout(&streamer_priv->srb_wait, - jiffies + 60 * HZ); - if (signal_pending(current)) - { - printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); - printk(KERN_WARNING "SISR=%x MISR=%x LISR=%x\n", - readw(streamer_mmio + SISR), - readw(streamer_mmio + MISR_RUM), - readw(streamer_mmio + LISR)); - streamer_priv->srb_queued = 0; - break; - } + wait_event_interruptible_timeout(streamer_priv->srb_wait, + !streamer_priv->srb_queued, 60*HZ); + if (signal_pending(current)) { + printk(KERN_WARNING "%s: SRB timed out.\n", dev->name); + printk(KERN_WARNING "SISR=%x MISR=%x LISR=%x\n", + readw(streamer_mmio + SISR), + readw(streamer_mmio + MISR_RUM), + readw(streamer_mmio + LISR)); + streamer_priv->srb_queued = 0; } streamer_priv->rx_ring_last_received = (streamer_priv->rx_ring_last_received + 1) & (STREAMER_RX_RING_SIZE - 1); @@ -1374,7 +1369,7 @@ static void streamer_srb_bh(struct net_d case 0x00: break; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n",dev->name); + printk(KERN_WARNING "%s: Unrecognized srb command\n",dev->name); break; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n", dev->name); @@ -1402,13 +1397,13 @@ static void streamer_srb_bh(struct net_d case 0x00: break; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized srb command\n", dev->name); break; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n", dev->name); break; case 0x39: /* Must deal with this if individual multicast addresses used */ - printk(KERN_INFO "%s: Group address not found \n", dev->name); + printk(KERN_INFO "%s: Group address not found\n", dev->name); break; default: break; @@ -1424,10 +1419,10 @@ static void streamer_srb_bh(struct net_d switch (srb_word) { case 0x00: if (streamer_priv->streamer_message_level) - printk(KERN_INFO "%s: Functional Address Mask Set \n", dev->name); + printk(KERN_INFO "%s: Functional Address Mask Set\n", dev->name); break; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized srb command\n", dev->name); break; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n", dev->name); @@ -1458,7 +1453,7 @@ static void streamer_srb_bh(struct net_d } break; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized srb command\n", dev->name); break; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n", dev->name); @@ -1477,7 +1472,7 @@ static void streamer_srb_bh(struct net_d printk(KERN_INFO "%s: Read Source Routing Counters issued\n", dev->name); break; case 0x01: - printk(KERN_WARNING "%s: Unrecognized srb command \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized srb command\n", dev->name); break; case 0x04: printk(KERN_WARNING "%s: Adapter must be open for this operation, doh!!\n", dev->name); @@ -1573,7 +1568,7 @@ static void streamer_arb_cmd(struct net_ (streamer_mmio + LAPDINC))); } - printk("next %04x, fs %02x, len %04x \n", next, + printk("next %04x, fs %02x, len %04x\n", next, status, len); } #endif @@ -1609,16 +1604,16 @@ static void streamer_arb_cmd(struct net_ } while (next_ptr && (buff_off = next_ptr)); #if STREAMER_NETWORK_MONITOR - printk(KERN_WARNING "%s: Received MAC Frame, details: \n", + printk(KERN_WARNING "%s: Received MAC Frame, details:\n", dev->name); mac_hdr = (struct trh_hdr *) mac_frame->data; printk(KERN_WARNING - "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", + "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, mac_hdr->daddr[0], mac_hdr->daddr[1], mac_hdr->daddr[2], mac_hdr->daddr[3], mac_hdr->daddr[4], mac_hdr->daddr[5]); printk(KERN_WARNING - "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", + "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, mac_hdr->saddr[0], mac_hdr->saddr[1], mac_hdr->saddr[2], mac_hdr->saddr[3], mac_hdr->saddr[4], mac_hdr->saddr[5]); @@ -1691,15 +1686,15 @@ drop_frame: /* If serious error */ if (streamer_priv->streamer_message_level) { if (lan_status_diff & LSC_SIG_LOSS) - printk(KERN_WARNING "%s: No receive signal detected \n", dev->name); + printk(KERN_WARNING "%s: No receive signal detected\n", dev->name); if (lan_status_diff & LSC_HARD_ERR) - printk(KERN_INFO "%s: Beaconing \n", dev->name); + printk(KERN_INFO "%s: Beaconing\n", dev->name); if (lan_status_diff & LSC_SOFT_ERR) - printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame \n", dev->name); + printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame\n", dev->name); if (lan_status_diff & LSC_TRAN_BCN) printk(KERN_INFO "%s: We are tranmitting the beacon, aaah\n", dev->name); if (lan_status_diff & LSC_SS) - printk(KERN_INFO "%s: Single Station on the ring \n", dev->name); + printk(KERN_INFO "%s: Single Station on the ring\n", dev->name); if (lan_status_diff & LSC_RING_REC) printk(KERN_INFO "%s: Ring recovery ongoing\n", dev->name); if (lan_status_diff & LSC_FDX_MODE) @@ -1708,7 +1703,7 @@ drop_frame: if (lan_status_diff & LSC_CO) { if (streamer_priv->streamer_message_level) - printk(KERN_INFO "%s: Counter Overflow \n", dev->name); + printk(KERN_INFO "%s: Counter Overflow\n", dev->name); /* Issue READ.LOG command */ @@ -1738,7 +1733,7 @@ drop_frame: streamer_priv->streamer_lan_status = lan_status; } /* Lan.change.status */ else - printk(KERN_WARNING "%s: Unknown arb command \n", dev->name); + printk(KERN_WARNING "%s: Unknown arb command\n", dev->name); } static void streamer_asb_bh(struct net_device *dev) @@ -1769,10 +1764,10 @@ static void streamer_asb_bh(struct net_d rc=ntohs(readw(streamer_mmio+LAPD)) >> 8; switch (rc) { case 0x01: - printk(KERN_WARNING "%s: Unrecognized command code \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized command code\n", dev->name); break; case 0x26: - printk(KERN_WARNING "%s: Unrecognized buffer address \n", dev->name); + printk(KERN_WARNING "%s: Unrecognized buffer address\n", dev->name); break; case 0xFF: /* Valid response, everything should be ok again */ @@ -1904,10 +1899,10 @@ static int sprintf_info(char *buffer, st ntohs(spt.acc_priority), ntohs(spt.auth_source_class), ntohs(spt.att_code)); - size += sprintf(buffer + size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", dev->name); + size += sprintf(buffer + size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl :\n", dev->name); size += sprintf(buffer + size, - "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x : %04x : %04x : %04x : \n", + "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x : %04x : %04x : %04x :\n", dev->name, spt.source_addr[0], spt.source_addr[1], spt.source_addr[2], spt.source_addr[3], spt.source_addr[4], spt.source_addr[5], @@ -1915,11 +1910,11 @@ static int sprintf_info(char *buffer, st ntohs(spt.lan_status), ntohs(spt.local_ring), ntohs(spt.mon_error), ntohs(spt.frame_correl)); - size += sprintf(buffer + size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys : \n", + size += sprintf(buffer + size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys :\n", dev->name); size += sprintf(buffer + size, - "%6s: : %02x : %02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x : \n", + "%6s: : %02x : %02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x :\n", dev->name, ntohs(spt.beacon_transmit), ntohs(spt.beacon_receive), spt.beacon_naun[0], spt.beacon_naun[1], spt.beacon_naun[2], @@ -1998,7 +1993,7 @@ static struct pci_driver streamer_pci_dr }; static int __init streamer_init_module(void) { - return pci_module_init(&streamer_pci_driver); + return pci_register_driver(&streamer_pci_driver); } static void __exit streamer_cleanup_module(void) { --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -844,7 +845,7 @@ static void media_check(unsigned long ar media = inw(ioaddr+WN4_MEDIA) & 0xc810; /* Ignore collisions unless we've had no irq's recently */ - if (jiffies - lp->last_irq < HZ) { + if (time_before(jiffies, lp->last_irq + HZ)) { media &= ~0x0010; } else { /* Try harder to detect carrier errors */ --- a/drivers/net/ns83820.c +++ b/drivers/net/ns83820.c @@ -115,6 +115,7 @@ #include #include #include +#include #include #include @@ -1606,7 +1607,7 @@ static void ns83820_run_bist(struct net_ { struct ns83820 *dev = PRIV(ndev); int timed_out = 0; - long start; + unsigned long start; u32 status; int loops = 0; @@ -1624,7 +1625,7 @@ static void ns83820_run_bist(struct net_ break; if (status & fail) break; - if ((jiffies - start) >= HZ) { + if (time_after_eq(jiffies, start + HZ)) { timed_out = 1; break; } @@ -1827,9 +1828,9 @@ static int __devinit ns83820_init_one(st /* See if we can set the dma mask early on; failure is fatal. */ if (sizeof(dma_addr_t) == 8 && - !pci_set_dma_mask(pci_dev, 0xffffffffffffffffULL)) { + !pci_set_dma_mask(pci_dev, DMA_64BIT_MASK)) { using_dac = 1; - } else if (!pci_set_dma_mask(pci_dev, 0xffffffff)) { + } else if (!pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) { using_dac = 0; } else { printk(KERN_WARNING "ns83820.c: pci_set_dma_mask failed!\n"); @@ -2175,7 +2176,7 @@ static struct pci_driver driver = { static int __init ns83820_init(void) { printk(KERN_INFO "ns83820.c: National Semiconductor DP83820 10/100/1000 driver.\n"); - return pci_module_init(&driver); + return pci_register_driver(&driver); } static void __exit ns83820_exit(void) --- a/drivers/net/hp100.c +++ b/drivers/net/hp100.c @@ -115,6 +115,7 @@ #include #include #include +#include #include @@ -405,7 +406,7 @@ struct net_device * __init hp100_probe(i #ifdef HP100_DEBUG_B hp100_outw(0x4200, TRACE); - printk("hp100: %s: probe\n", dev->name); + printk(KERN_DEBUG "hp100: %s: probe\n", dev->name); #endif if (unit >= 0) { @@ -441,7 +442,7 @@ static int __devinit hp100_probe1(struct #ifdef HP100_DEBUG_B hp100_outw(0x4201, TRACE); - printk("hp100: %s: probe1\n", dev->name); + printk(KERN_DEBUG "hp100: %s: probe1\n", dev->name); #endif /* memory region for programmed i/o */ @@ -454,13 +455,13 @@ static int __devinit hp100_probe1(struct chip = hp100_inw(PAGING) & HP100_CHIPID_MASK; #ifdef HP100_DEBUG if (chip == HP100_CHIPID_SHASTA) - printk("hp100: %s: Shasta Chip detected. (This is a pre 802.12 chip)\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Shasta Chip detected. (This is a pre 802.12 chip)\n", dev->name); else if (chip == HP100_CHIPID_RAINIER) - printk("hp100: %s: Rainier Chip detected. (This is a pre 802.12 chip)\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Rainier Chip detected. (This is a pre 802.12 chip)\n", dev->name); else if (chip == HP100_CHIPID_LASSEN) - printk("hp100: %s: Lassen Chip detected.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Lassen Chip detected.\n", dev->name); else - printk("hp100: %s: Warning: Unknown CASCADE chip (id=0x%.4x).\n", dev->name, chip); + printk(KERN_DEBUG "hp100: %s: Warning: Unknown CASCADE chip (id=0x%.4x).\n", dev->name, chip); #endif dev->base_addr = ioaddr; @@ -517,7 +518,7 @@ static int __devinit hp100_probe1(struct if (local_mode < 1 || local_mode > 4) local_mode = 1; /* default */ #ifdef HP100_DEBUG - printk("hp100: %s: original LSW = 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: original LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif @@ -525,17 +526,17 @@ static int __devinit hp100_probe1(struct hp100_outw(HP100_MEM_EN | HP100_RESET_LB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_RESET_HB, OPTION_LSW); - printk("hp100: IO mapped mode forced.\n"); + printk(KERN_INFO "hp100: IO mapped mode forced.\n"); } else if (local_mode == 2) { hp100_outw(HP100_MEM_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_SET_LB, OPTION_LSW); hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_RESET_HB, OPTION_LSW); - printk("hp100: Shared memory mode requested.\n"); + printk(KERN_INFO "hp100: Shared memory mode requested.\n"); } else if (local_mode == 4) { if (chip == HP100_CHIPID_LASSEN) { hp100_outw(HP100_BM_WRITE | HP100_BM_READ | HP100_SET_HB, OPTION_LSW); hp100_outw(HP100_IO_EN | HP100_MEM_EN | HP100_RESET_LB, OPTION_LSW); - printk("hp100: Busmaster mode requested.\n"); + printk(KERN_INFO "hp100: Busmaster mode requested.\n"); } local_mode = 1; } @@ -546,7 +547,7 @@ static int __devinit hp100_probe1(struct if ((lsw & HP100_IO_EN) && (~lsw & HP100_MEM_EN) && (~lsw & (HP100_BM_WRITE | HP100_BM_READ))) { #ifdef HP100_DEBUG - printk("hp100: %s: IO_EN bit is set on card.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: IO_EN bit is set on card.\n", dev->name); #endif local_mode = 3; } else if (chip == HP100_CHIPID_LASSEN && @@ -561,13 +562,13 @@ static int __devinit hp100_probe1(struct /* Gracefully fallback to shared memory */ goto busmasterfail; } - printk("hp100: Busmaster mode enabled.\n"); + printk(KERN_INFO "hp100: Busmaster mode enabled.\n"); hp100_outw(HP100_MEM_EN | HP100_IO_EN | HP100_RESET_LB, OPTION_LSW); } else { busmasterfail: #ifdef HP100_DEBUG - printk("hp100: %s: Card not configured for BM or BM not supported with this card.\n", dev->name); - printk("hp100: %s: Trying shared memory mode.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Card not configured for BM or BM not supported with this card.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Trying shared memory mode.\n", dev->name); #endif /* In this case, try shared memory mode */ local_mode = 2; @@ -576,7 +577,7 @@ static int __devinit hp100_probe1(struct } } #ifdef HP100_DEBUG - printk("hp100: %s: new LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); + printk(KERN_DEBUG "hp100: %s: new LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif /* Check for shared memory on the card, eventually remap it */ @@ -593,7 +594,7 @@ static int __devinit hp100_probe1(struct mem_ptr_phys &= ~0x1fff; /* 8k alignment */ if (bus == HP100_BUS_ISA && (mem_ptr_phys & ~0xfffff) != 0) { - printk("hp100: Can only use programmed i/o mode.\n"); + printk(KERN_INFO "hp100: Can only use programmed i/o mode.\n"); mem_ptr_phys = 0; mem_mapped = 0; local_mode = 3; /* Use programmed i/o */ @@ -606,18 +607,18 @@ static int __devinit hp100_probe1(struct for (virt_memory_size = memory_size; virt_memory_size > 16383; virt_memory_size >>= 1) { if ((mem_ptr_virt = ioremap((u_long) mem_ptr_phys, virt_memory_size)) == NULL) { #ifdef HP100_DEBUG - printk("hp100: %s: ioremap for 0x%x bytes high PCI memory at 0x%lx failed\n", dev->name, virt_memory_size, mem_ptr_phys); + printk(KERN_DEBUG "hp100: %s: ioremap for 0x%x bytes high PCI memory at 0x%lx failed\n", dev->name, virt_memory_size, mem_ptr_phys); #endif } else { #ifdef HP100_DEBUG - printk("hp100: %s: remapped 0x%x bytes high PCI memory at 0x%lx to %p.\n", dev->name, virt_memory_size, mem_ptr_phys, mem_ptr_virt); + printk(KERN_DEBUG "hp100: %s: remapped 0x%x bytes high PCI memory at 0x%lx to %p.\n", dev->name, virt_memory_size, mem_ptr_phys, mem_ptr_virt); #endif break; } } if (mem_ptr_virt == NULL) { /* all ioremap tries failed */ - printk("hp100: Failed to ioremap the PCI card memory. Will have to use i/o mapped mode.\n"); + printk(KERN_WARNING "hp100: Failed to ioremap the PCI card memory. Will have to use i/o mapped mode.\n"); local_mode = 3; virt_memory_size = 0; } @@ -628,7 +629,7 @@ static int __devinit hp100_probe1(struct mem_mapped = 0; mem_ptr_phys = 0; mem_ptr_virt = NULL; - printk("hp100: Using (slow) programmed i/o mode.\n"); + printk(KERN_INFO "hp100: Using (slow) programmed i/o mode.\n"); } /* Initialise the "private" data structure for this card. */ @@ -710,7 +711,7 @@ static int __devinit hp100_probe1(struct lp->whatever_offset = ((u_long) page_baddr) - ((u_long) lp->page_vaddr_algn); #ifdef HP100_DEBUG_BM - printk("hp100: %s: Reserved DMA memory from 0x%x to 0x%x\n", dev->name, (u_int) lp->page_vaddr_algn, (u_int) lp->page_vaddr_algn + MAX_RINGSIZE); + printk(KERN_DEBUG "hp100: %s: Reserved DMA memory from 0x%x to 0x%x\n", dev->name, (u_int) lp->page_vaddr_algn, (u_int) lp->page_vaddr_algn + MAX_RINGSIZE); #endif lp->rxrcommit = lp->txrcommit = 0; lp->rxrhead = lp->rxrtail = &(lp->rxring[0]); @@ -728,7 +729,7 @@ static int __devinit hp100_probe1(struct lp->lan_type = hp100_sense_lan(dev); /* Print out a message what about what we think we have probed. */ - printk("hp100: at 0x%x, IRQ %d, ", ioaddr, dev->irq); + printk(KERN_INFO "hp100: at 0x%x, IRQ %d, ", ioaddr, dev->irq); switch (bus) { case HP100_BUS_EISA: printk("EISA"); @@ -743,7 +744,7 @@ static int __devinit hp100_probe1(struct printk(" bus, %dk SRAM (rx/tx %d%%).\n", lp->memory_size >> 10, lp->rx_ratio); if (lp->mode == 2) { /* memory mapped */ - printk("hp100: Memory area at 0x%lx-0x%lx", mem_ptr_phys, + printk(KERN_INFO "hp100: Memory area at 0x%lx-0x%lx", mem_ptr_phys, (mem_ptr_phys + (mem_ptr_phys > 0x100000 ? (u_long) lp->memory_size : 16 * 1024)) - 1); if (mem_ptr_virt) printk(" (virtual base %p)", mem_ptr_virt); @@ -754,7 +755,7 @@ static int __devinit hp100_probe1(struct dev->mem_end = mem_ptr_phys + lp->memory_size; } - printk("hp100: "); + printk(KERN_INFO "hp100: "); if (lp->lan_type != HP100_LAN_ERR) printk("Adapter is attached to "); switch (lp->lan_type) { @@ -797,7 +798,7 @@ static void hp100_hwinit(struct net_devi #ifdef HP100_DEBUG_B hp100_outw(0x4202, TRACE); - printk("hp100: %s: hwinit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hwinit\n", dev->name); #endif /* Initialise the card. -------------------------------------------- */ @@ -892,12 +893,12 @@ static void hp100_mmuinit(struct net_dev #ifdef HP100_DEBUG_B hp100_outw(0x4203, TRACE); - printk("hp100: %s: mmuinit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: mmuinit\n", dev->name); #endif #ifdef HP100_DEBUG if (0 != (hp100_inw(OPTION_LSW) & HP100_HW_RST)) { - printk("hp100: %s: Not in reset when entering mmuinit. Fix me.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Not in reset when entering mmuinit. Fix me.\n", dev->name); return; } #endif @@ -990,7 +991,7 @@ static void hp100_mmuinit(struct net_dev recv_stop = (xmit_stop * (lp->rx_ratio) / 100) & ~(0x03ff); hp100_outw((pdl_stop >> 4) - 1, PDL_MEM_STOP); #ifdef HP100_DEBUG_BM - printk("hp100: %s: PDL_STOP = 0x%x\n", dev->name, pdl_stop); + printk(KERN_DEBUG "hp100: %s: PDL_STOP = 0x%x\n", dev->name, pdl_stop); #endif } else { /* ETR chip (Lassen) in busmaster mode */ @@ -1001,16 +1002,16 @@ static void hp100_mmuinit(struct net_dev hp100_outw(xmit_stop >> 4, TX_MEM_STOP); hp100_outw(recv_stop >> 4, RX_MEM_STOP); #ifdef HP100_DEBUG_BM - printk("hp100: %s: TX_STOP = 0x%x\n", dev->name, xmit_stop >> 4); - printk("hp100: %s: RX_STOP = 0x%x\n", dev->name, recv_stop >> 4); + printk(KERN_DEBUG "hp100: %s: TX_STOP = 0x%x\n", dev->name, xmit_stop >> 4); + printk(KERN_DEBUG "hp100: %s: RX_STOP = 0x%x\n", dev->name, recv_stop >> 4); #endif } else { /* Slave modes (memory mapped and programmed io) */ hp100_outw((((lp->memory_size * lp->rx_ratio) / 100) >> 4), RX_MEM_STOP); hp100_outw(((lp->memory_size - 1) >> 4), TX_MEM_STOP); #ifdef HP100_DEBUG - printk("hp100: %s: TX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(TX_MEM_STOP)); - printk("hp100: %s: RX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(RX_MEM_STOP)); + printk(KERN_DEBUG "hp100: %s: TX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(TX_MEM_STOP)); + printk(KERN_DEBUG "hp100: %s: RX_MEM_STOP: 0x%x\n", dev->name, hp100_inw(RX_MEM_STOP)); #endif } @@ -1072,7 +1073,7 @@ static int hp100_open(struct net_device #ifdef HP100_DEBUG_B hp100_outw(0x4204, TRACE); - printk("hp100: %s: open\n", dev->name); + printk(KERN_DEBUG "hp100: %s: open\n", dev->name); #endif /* New: if bus is PCI or EISA, interrupts might be shared interrupts */ @@ -1080,7 +1081,7 @@ static int hp100_open(struct net_device lp->bus == HP100_BUS_PCI || lp->bus == HP100_BUS_EISA ? SA_SHIRQ : SA_INTERRUPT, "hp100", dev)) { - printk("hp100: %s: unable to get IRQ %d\n", dev->name, dev->irq); + printk(KERN_WARNING "hp100: %s: unable to get IRQ %d\n", dev->name, dev->irq); return -EAGAIN; } @@ -1109,7 +1110,7 @@ static int hp100_close(struct net_device #ifdef HP100_DEBUG_B hp100_outw(0x4205, TRACE); - printk("hp100: %s: close\n", dev->name); + printk(KERN_DEBUG "hp100: %s: close\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1125,7 +1126,7 @@ static int hp100_close(struct net_device free_irq(dev->irq, dev); #ifdef HP100_DEBUG - printk("hp100: %s: close LSW = 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: close LSW = 0x%x\n", dev->name, hp100_inw(OPTION_LSW)); #endif @@ -1149,11 +1150,11 @@ static void hp100_init_pdls(struct net_d #ifdef HP100_DEBUG_B hp100_outw(0x4206, TRACE); - printk("hp100: %s: init pdls\n", dev->name); + printk(KERN_DEBUG "hp100: %s: init pdls\n", dev->name); #endif if (0 == lp->page_vaddr_algn) - printk("hp100: %s: Warning: lp->page_vaddr_algn not initialised!\n", dev->name); + printk(KERN_WARNING "hp100: %s: Warning: lp->page_vaddr_algn not initialised!\n", dev->name); else { /* pageptr shall point into the DMA accessible memory region */ /* we use this pointer to status the upper limit of allocated */ @@ -1193,7 +1194,7 @@ static int hp100_init_rxpdl(struct net_d /* pdlptr is starting address for this pdl */ if (0 != (((unsigned long) pdlptr) & 0xf)) - printk("hp100: %s: Init rxpdl: Unaligned pdlptr 0x%lx.\n", + printk(KERN_INFO "hp100: %s: Init rxpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); ringptr->pdl = pdlptr + 1; @@ -1220,7 +1221,7 @@ static int hp100_init_txpdl(struct net_d register u32 * pdlptr) { if (0 != (((unsigned long) pdlptr) & 0xf)) - printk("hp100: %s: Init txpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); + printk(KERN_INFO "hp100: %s: Init txpdl: Unaligned pdlptr 0x%lx.\n", dev->name, (unsigned long) pdlptr); ringptr->pdl = pdlptr; /* +1; */ ringptr->pdl_paddr = virt_to_whatever(dev, pdlptr); /* +1 */ @@ -1248,7 +1249,7 @@ static int hp100_build_rx_pdl(hp100_ring #ifdef HP100_DEBUG_B hp100_outw(0x4207, TRACE); - printk("hp100: %s: build rx pdl\n", dev->name); + printk(KERN_DEBUG "hp100: %s: build rx pdl\n", dev->name); #endif /* Allocate skb buffer of maximum size */ @@ -1276,7 +1277,7 @@ static int hp100_build_rx_pdl(hp100_ring * directly before the PDL. */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: build_rx_pdl: PDH@0x%x, skb->data (len %d) at 0x%x\n", + printk(KERN_DEBUG "hp100: %s: build_rx_pdl: PDH@0x%x, skb->data (len %d) at 0x%x\n", dev->name, (u_int) ringptr->pdl, ((MAX_ETHER_SIZE + 2 + 3) / 4) * 4, (unsigned int) ringptr->skb->data); @@ -1291,7 +1292,7 @@ static int hp100_build_rx_pdl(hp100_ring #ifdef HP100_DEBUG_BM for (p = (ringptr->pdl); p < (ringptr->pdl + 5); p++) - printk("hp100: %s: Adr 0x%.8x = 0x%.8x\n", dev->name, (u_int) p, (u_int) * p); + printk(KERN_DEBUG "hp100: %s: Adr 0x%.8x = 0x%.8x\n", dev->name, (u_int) p, (u_int) * p); #endif return (1); } @@ -1301,7 +1302,7 @@ static int hp100_build_rx_pdl(hp100_ring * making the PDL only 1 fragment (i.e. the 4 byte packet status) */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: build_rx_pdl: PDH@0x%x, No space for skb.\n", dev->name, (u_int) ringptr->pdl); + printk(KERN_DEBUG "hp100: %s: build_rx_pdl: PDH@0x%x, No space for skb.\n", dev->name, (u_int) ringptr->pdl); #endif ringptr->pdl[0] = 0x00010000; /* PDH: Count=1 Fragment */ @@ -1328,7 +1329,7 @@ static void hp100_rxfill(struct net_devi #ifdef HP100_DEBUG_B hp100_outw(0x4208, TRACE); - printk("hp100: %s: rxfill\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rxfill\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1345,7 +1346,7 @@ static void hp100_rxfill(struct net_devi /* Hand this PDL over to the card */ /* Note: This needs performance page selected! */ #ifdef HP100_DEBUG_BM - printk("hp100: %s: rxfill: Hand to card: pdl #%d @0x%x phys:0x%x, buffer: 0x%x\n", + printk(KERN_DEBUG "hp100: %s: rxfill: Hand to card: pdl #%d @0x%x phys:0x%x, buffer: 0x%x\n", dev->name, lp->rxrcommit, (u_int) ringptr->pdl, (u_int) ringptr->pdl_paddr, (u_int) ringptr->pdl[3]); #endif @@ -1369,7 +1370,7 @@ static void hp100_BM_shutdown(struct net #ifdef HP100_DEBUG_B hp100_outw(0x4209, TRACE); - printk("hp100: %s: bm shutdown\n", dev->name); + printk(KERN_DEBUG "hp100: %s: bm shutdown\n", dev->name); #endif hp100_page(PERFORMANCE); @@ -1418,7 +1419,7 @@ static void hp100_BM_shutdown(struct net } if (time >= 10000) - printk("hp100: %s: BM shutdown error.\n", dev->name); + printk(KERN_INFO "hp100: %s: BM shutdown error.\n", dev->name); /* To ensure all bus master outloading activity has ceased, * wait until the Tx PDA count goes to zero or no more Tx space @@ -1450,7 +1451,7 @@ static int hp100_check_lan(struct net_de if (lp->lan_type < 0) { /* no LAN type detected yet? */ hp100_stop_interface(dev); if ((lp->lan_type = hp100_sense_lan(dev)) < 0) { - printk("hp100: %s: no connection found - check wire\n", dev->name); + printk(KERN_INFO "hp100: %s: no connection found - check wire\n", dev->name); hp100_start_interface(dev); /* 10Mb/s RX packets maybe handled */ return -EIO; } @@ -1476,7 +1477,7 @@ static int hp100_start_xmit_bm(struct sk #ifdef HP100_DEBUG_B hp100_outw(0x4210, TRACE); - printk("hp100: %s: start_xmit_bm\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit_bm\n", dev->name); #endif if (skb == NULL) { @@ -1496,10 +1497,10 @@ static int hp100_start_xmit_bm(struct sk if (lp->txrtail->next == lp->txrhead) { /* No memory. */ #ifdef HP100_DEBUG - printk("hp100: %s: start_xmit_bm: No TX PDL available.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit_bm: No TX PDL available.\n", dev->name); #endif /* not waited long enough since last tx? */ - if (jiffies - dev->trans_start < HZ) + if (time_before(jiffies, dev->trans_start + HZ)) return -EAGAIN; if (hp100_check_lan(dev)) @@ -1507,7 +1508,7 @@ static int hp100_start_xmit_bm(struct sk if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { /* we have a 100Mb/s adapter but it isn't connected to hub */ - printk("hp100: %s: login to 100Mb/s hub retry\n", dev->name); + printk(KERN_INFO "hp100: %s: login to 100Mb/s hub retry\n", dev->name); hp100_stop_interface(dev); lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); @@ -1518,17 +1519,17 @@ static int hp100_start_xmit_bm(struct sk hp100_ints_on(); spin_unlock_irqrestore(&lp->lock, flags); if (i == HP100_LAN_ERR) - printk("hp100: %s: link down detected\n", dev->name); + printk(KERN_INFO "hp100: %s: link down detected\n", dev->name); else if (lp->lan_type != i) { /* cable change! */ /* it's very hard - all network settings must be changed!!! */ - printk("hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); + printk(KERN_INFO "hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); lp->lan_type = i; hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); } else { - printk("hp100: %s: interface reset\n", dev->name); + printk(KERN_INFO "hp100: %s: interface reset\n", dev->name); hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); @@ -1595,7 +1596,7 @@ static void hp100_clean_txring(struct ne #ifdef HP100_DEBUG_B hp100_outw(0x4211, TRACE); - printk("hp100: %s: clean txring\n", dev->name); + printk(KERN_DEBUG "hp100: %s: clean txring\n", dev->name); #endif /* How many PDLs have been transmitted? */ @@ -1603,12 +1604,12 @@ static void hp100_clean_txring(struct ne #ifdef HP100_DEBUG if (donecount > MAX_TX_PDL) - printk("hp100: %s: Warning: More PDLs transmitted than commited to card???\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Warning: More PDLs transmitted than commited to card???\n", dev->name); #endif for (; 0 != donecount; donecount--) { #ifdef HP100_DEBUG_BM - printk("hp100: %s: Free skb: data @0x%.8x txrcommit=0x%x TXPDL=0x%x, done=0x%x\n", + printk(KERN_DEBUG "hp100: %s: Free skb: data @0x%.8x txrcommit=0x%x TXPDL=0x%x, done=0x%x\n", dev->name, (u_int) lp->txrhead->skb->data, lp->txrcommit, hp100_inb(TX_PDL), donecount); #endif @@ -1632,7 +1633,7 @@ static int hp100_start_xmit(struct sk_bu #ifdef HP100_DEBUG_B hp100_outw(0x4212, TRACE); - printk("hp100: %s: start_xmit\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit\n", dev->name); #endif if (skb == NULL) { @@ -1649,19 +1650,19 @@ static int hp100_start_xmit(struct sk_bu i = hp100_inl(TX_MEM_FREE) & 0x7fffffff; if (!(((i / 2) - 539) > (skb->len + 16) && (hp100_inb(TX_PKT_CNT) < 255))) { #ifdef HP100_DEBUG - printk("hp100: %s: start_xmit: tx free mem = 0x%x\n", dev->name, i); + printk(KERN_DEBUG "hp100: %s: start_xmit: tx free mem = 0x%x\n", dev->name, i); #endif /* not waited long enough since last failed tx try? */ - if (jiffies - dev->trans_start < HZ) { + if (time_before(jiffies, dev->trans_start + HZ)) { #ifdef HP100_DEBUG - printk("hp100: %s: trans_start timing problem\n", + printk(KERN_DEBUG "hp100: %s: trans_start timing problem\n", dev->name); #endif return -EAGAIN; } if (lp->lan_type == HP100_LAN_100 && lp->hub_status < 0) { /* we have a 100Mb/s adapter but it isn't connected to hub */ - printk("hp100: %s: login to 100Mb/s hub retry\n", dev->name); + printk(KERN_DEBUG "hp100: %s: login to 100Mb/s hub retry\n", dev->name); hp100_stop_interface(dev); lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); @@ -1672,17 +1673,17 @@ static int hp100_start_xmit(struct sk_bu hp100_ints_on(); spin_unlock_irqrestore(&lp->lock, flags); if (i == HP100_LAN_ERR) - printk("hp100: %s: link down detected\n", dev->name); + printk(KERN_DEBUG "hp100: %s: link down detected\n", dev->name); else if (lp->lan_type != i) { /* cable change! */ /* it's very hard - all network setting must be changed!!! */ - printk("hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); + printk(KERN_INFO "hp100: %s: cable change 10Mb/s <-> 100Mb/s detected\n", dev->name); lp->lan_type = i; hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); hp100_start_interface(dev); } else { - printk("hp100: %s: interface reset\n", dev->name); + printk(KERN_INFO "hp100: %s: interface reset\n", dev->name); hp100_stop_interface(dev); if (lp->lan_type == HP100_LAN_100) lp->hub_status = hp100_login_to_vg_hub(dev, 0); @@ -1696,7 +1697,7 @@ static int hp100_start_xmit(struct sk_bu for (i = 0; i < 6000 && (hp100_inb(OPTION_MSW) & HP100_TX_CMD); i++) { #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: busy\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit: busy\n", dev->name); #endif } @@ -1707,7 +1708,7 @@ static int hp100_start_xmit(struct sk_bu * when the current packet being transmitted on the wire is completed. */ hp100_outw(HP100_TX_COMPLETE, IRQ_STATUS); #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: irq_status=0x%.4x, irqmask=0x%.4x, len=%d\n", + printk(KERN_DEBUG "hp100: %s: start_xmit: irq_status=0x%.4x, irqmask=0x%.4x, len=%d\n", dev->name, val, hp100_inw(IRQ_MASK), (int) skb->len); #endif @@ -1748,7 +1749,7 @@ static int hp100_start_xmit(struct sk_bu dev_kfree_skb_any(skb); #ifdef HP100_DEBUG_TX - printk("hp100: %s: start_xmit: end\n", dev->name); + printk(KERN_DEBUG "hp100: %s: start_xmit: end\n", dev->name); #endif return 0; @@ -1774,7 +1775,7 @@ static void hp100_rx(struct net_device * #ifdef DEBUG_B hp100_outw(0x4213, TRACE); - printk("hp100: %s: rx\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx\n", dev->name); #endif /* First get indication of received lan packet */ @@ -1783,7 +1784,7 @@ static void hp100_rx(struct net_device * packets = hp100_inb(RX_PKT_CNT); #ifdef HP100_DEBUG_RX if (packets > 1) - printk("hp100: %s: rx: waiting packets = %d\n", dev->name, packets); + printk(KERN_DEBUG "hp100: %s: rx: waiting packets = %d\n", dev->name, packets); #endif while (packets-- > 0) { @@ -1791,7 +1792,7 @@ static void hp100_rx(struct net_device * /* really advanced to the next packet. */ for (pkt_len = 0; pkt_len < 6000 && (hp100_inb(OPTION_MSW) & HP100_ADV_NXT_PKT); pkt_len++) { #ifdef HP100_DEBUG_RX - printk ("hp100: %s: rx: busy, remaining packets = %d\n", dev->name, packets); + printk (KERN_DEBUG "hp100: %s: rx: busy, remaining packets = %d\n", dev->name, packets); #endif } @@ -1808,7 +1809,7 @@ static void hp100_rx(struct net_device * pkt_len = ((header & HP100_PKT_LEN_MASK) + 3) & ~3; #ifdef HP100_DEBUG_RX - printk("hp100: %s: rx: new packet - length=%d, errors=0x%x, dest=0x%x\n", + printk(KERN_DEBUG "hp100: %s: rx: new packet - length=%d, errors=0x%x, dest=0x%x\n", dev->name, header & HP100_PKT_LEN_MASK, (header >> 16) & 0xfff8, (header >> 16) & 7); #endif @@ -1817,7 +1818,7 @@ static void hp100_rx(struct net_device * skb = dev_alloc_skb(pkt_len+2); if (skb == NULL) { /* Not enough memory->drop packet */ #ifdef HP100_DEBUG - printk("hp100: %s: rx: couldn't allocate a sk_buff of size %d\n", + printk(KERN_DEBUG "hp100: %s: rx: couldn't allocate a sk_buff of size %d\n", dev->name, pkt_len); #endif lp->stats.rx_dropped++; @@ -1845,7 +1846,7 @@ static void hp100_rx(struct net_device * skb->protocol = eth_type_trans(skb, dev); #ifdef HP100_DEBUG_RX - printk("hp100: %s: rx: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", + printk(KERN_DEBUG "hp100: %s: rx: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", dev->name, ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7], ptr[8], ptr[9], ptr[10], ptr[11]); @@ -1867,7 +1868,7 @@ static void hp100_rx(struct net_device * } } /* end of while(there are packets) loop */ #ifdef HP100_DEBUG_RX - printk("hp100_rx: %s: end\n", dev->name); + printk(KERN_DEBUG "hp100_rx: %s: end\n", dev->name); #endif } @@ -1884,18 +1885,18 @@ static void hp100_rx_bm(struct net_devic #ifdef HP100_DEBUG_B hp100_outw(0x4214, TRACE); - printk("hp100: %s: rx_bm\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm\n", dev->name); #endif #ifdef HP100_DEBUG if (0 == lp->rxrcommit) { - printk("hp100: %s: rx_bm called although no PDLs were committed to adapter?\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm called although no PDLs were committed to adapter?\n", dev->name); return; } else /* RX_PKT_CNT states how many PDLs are currently formatted and available to * the cards BM engine */ if ((hp100_inw(RX_PKT_CNT) & 0x00ff) >= lp->rxrcommit) { - printk("hp100: %s: More packets received than commited? RX_PKT_CNT=0x%x, commit=0x%x\n", + printk(KERN_DEBUG "hp100: %s: More packets received than commited? RX_PKT_CNT=0x%x, commit=0x%x\n", dev->name, hp100_inw(RX_PKT_CNT) & 0x00ff, lp->rxrcommit); return; @@ -1920,10 +1921,10 @@ static void hp100_rx_bm(struct net_devic pci_unmap_single(lp->pci_dev, (dma_addr_t) ptr->pdl[3], MAX_ETHER_SIZE, PCI_DMA_FROMDEVICE); #ifdef HP100_DEBUG_BM - printk("hp100: %s: rx_bm: header@0x%x=0x%x length=%d, errors=0x%x, dest=0x%x\n", + printk(KERN_DEBUG "hp100: %s: rx_bm: header@0x%x=0x%x length=%d, errors=0x%x, dest=0x%x\n", dev->name, (u_int) (ptr->pdl - 1), (u_int) header, pkt_len, (header >> 16) & 0xfff8, (header >> 16) & 7); - printk("hp100: %s: RX_PDL_COUNT:0x%x TX_PDL_COUNT:0x%x, RX_PKT_CNT=0x%x PDH=0x%x, Data@0x%x len=0x%x\n", + printk(KERN_DEBUG "hp100: %s: RX_PDL_COUNT:0x%x TX_PDL_COUNT:0x%x, RX_PKT_CNT=0x%x PDH=0x%x, Data@0x%x len=0x%x\n", dev->name, hp100_inb(RX_PDL), hp100_inb(TX_PDL), hp100_inb(RX_PKT_CNT), (u_int) * (ptr->pdl), (u_int) * (ptr->pdl + 3), (u_int) * (ptr->pdl + 4)); @@ -1932,7 +1933,7 @@ static void hp100_rx_bm(struct net_devic if ((pkt_len >= MIN_ETHER_SIZE) && (pkt_len <= MAX_ETHER_SIZE)) { if (ptr->skb == NULL) { - printk("hp100: %s: rx_bm: skb null\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm: skb null\n", dev->name); /* can happen if we only allocated room for the pdh due to memory shortage. */ lp->stats.rx_dropped++; } else { @@ -1955,7 +1956,7 @@ static void hp100_rx_bm(struct net_devic } } else { #ifdef HP100_DEBUG - printk("hp100: %s: rx_bm: Received bad packet (length=%d)\n", dev->name, pkt_len); + printk(KERN_DEBUG "hp100: %s: rx_bm: Received bad packet (length=%d)\n", dev->name, pkt_len); #endif if (ptr->skb != NULL) dev_kfree_skb_any(ptr->skb); @@ -1968,7 +1969,7 @@ static void hp100_rx_bm(struct net_devic if (0 == hp100_build_rx_pdl(lp->rxrtail, dev)) { /* No space for skb, header can still be received. */ #ifdef HP100_DEBUG - printk("hp100: %s: rx_bm: No space for new PDL.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: rx_bm: No space for new PDL.\n", dev->name); #endif return; } else { /* successfully allocated new PDL - put it in ringlist at tail. */ @@ -2008,7 +2009,7 @@ static void hp100_update_stats(struct ne #ifdef HP100_DEBUG_B hp100_outw(0x4216, TRACE); - printk("hp100: %s: update-stats\n", dev->name); + printk(KERN_DEBUG "hp100: %s: update-stats\n", dev->name); #endif /* Note: Statistics counters clear when read. */ @@ -2035,7 +2036,7 @@ static void hp100_misc_interrupt(struct #ifdef HP100_DEBUG_B int ioaddr = dev->base_addr; hp100_outw(0x4216, TRACE); - printk("hp100: %s: misc_interrupt\n", dev->name); + printk(KERN_DEBUG "hp100: %s: misc_interrupt\n", dev->name); #endif /* Note: Statistics counters clear when read. */ @@ -2049,7 +2050,7 @@ static void hp100_clear_stats(struct hp1 #ifdef HP100_DEBUG_B hp100_outw(0x4217, TRACE); - printk("hp100: %s: clear_stats\n", dev->name); + printk(KERN_DEBUG "hp100: %s: clear_stats\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2078,7 +2079,7 @@ static void hp100_set_multicast_list(str #ifdef HP100_DEBUG_B hp100_outw(0x4218, TRACE); - printk("hp100: %s: set_mc_list\n", dev->name); + printk(KERN_DEBUG "hp100: %s: set_mc_list\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2104,13 +2105,13 @@ static void hp100_set_multicast_list(str memset(&lp->hash_bytes, 0x00, 8); #ifdef HP100_DEBUG - printk("hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc_count); + printk(KERN_DEBUG "hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc_count); #endif for (i = 0, dmi = dev->mc_list; i < dev->mc_count; i++, dmi = dmi->next) { addrs = dmi->dmi_addr; if ((*addrs & 0x01) == 0x01) { /* multicast address? */ #ifdef HP100_DEBUG - printk("hp100: %s: multicast = %02x:%02x:%02x:%02x:%02x:%02x, ", + printk(KERN_DEBUG "hp100: %s: multicast = %02x:%02x:%02x:%02x:%02x:%02x, ", dev->name, addrs[0], addrs[1], addrs[2], addrs[3], addrs[4], addrs[5]); #endif @@ -2119,7 +2120,7 @@ static void hp100_set_multicast_list(str printk(":%02x:", idx); } #ifdef HP100_DEBUG - printk("idx = %i\n", idx); + printk(KERN_DEBUG "idx = %i\n", idx); #endif lp->hash_bytes[idx >> 3] |= (1 << (idx & 7)); } @@ -2146,7 +2147,7 @@ static void hp100_set_multicast_list(str for (i = 0; i < 8; i++) hp100_outb(lp->hash_bytes[i], HASH_BYTE0 + i); #ifdef HP100_DEBUG - printk("hp100: %s: mac1 = 0x%x, mac2 = 0x%x, multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", + printk(KERN_DEBUG "hp100: %s: mac1 = 0x%x, mac2 = 0x%x, multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, lp->mac1_mode, lp->mac2_mode, lp->hash_bytes[0], lp->hash_bytes[1], lp->hash_bytes[2], lp->hash_bytes[3], @@ -2156,7 +2157,7 @@ static void hp100_set_multicast_list(str if (lp->lan_type == HP100_LAN_100) { #ifdef HP100_DEBUG - printk("hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); #endif lp->hub_status = hp100_login_to_vg_hub(dev, 1); /* force a relogin to the hub */ } @@ -2171,7 +2172,7 @@ static void hp100_set_multicast_list(str for (i = 0; i < 8; i++) hp100_outb(lp->hash_bytes[i], HASH_BYTE0 + i); #ifdef HP100_DEBUG - printk("hp100: %s: multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", + printk(KERN_DEBUG "hp100: %s: multicast hash = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, lp->hash_bytes[0], lp->hash_bytes[1], lp->hash_bytes[2], lp->hash_bytes[3], lp->hash_bytes[4], @@ -2181,7 +2182,7 @@ static void hp100_set_multicast_list(str if (lp->lan_type == HP100_LAN_100) { #ifdef HP100_DEBUG - printk("hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: 100VG MAC settings have changed - relogin.\n", dev->name); #endif lp->hub_status = hp100_login_to_vg_hub(dev, 1); /* force a relogin to the hub */ } @@ -2224,7 +2225,7 @@ static irqreturn_t hp100_interrupt(int i /* hp100_page( PERFORMANCE ); */ val = hp100_inw(IRQ_STATUS); #ifdef HP100_DEBUG_IRQ - printk("hp100: %s: mode=%x,IRQ_STAT=0x%.4x,RXPKTCNT=0x%.2x RXPDL=0x%.2x TXPKTCNT=0x%.2x TXPDL=0x%.2x\n", + printk(KERN_DEBUG "hp100: %s: mode=%x,IRQ_STAT=0x%.4x,RXPKTCNT=0x%.2x RXPDL=0x%.2x TXPKTCNT=0x%.2x TXPDL=0x%.2x\n", dev->name, lp->mode, (u_int) val, hp100_inb(RX_PKT_CNT), hp100_inb(RX_PDL), hp100_inb(TX_PKT_CNT), hp100_inb(TX_PDL)); #endif @@ -2246,7 +2247,7 @@ static irqreturn_t hp100_interrupt(int i if (lp->mode == 1) hp100_rx_bm(dev); else { - printk("hp100: %s: rx_pdl_fill_compl interrupt although not busmaster?\n", dev->name); + printk(KERN_INFO "hp100: %s: rx_pdl_fill_compl interrupt although not busmaster?\n", dev->name); } } @@ -2283,7 +2284,7 @@ static irqreturn_t hp100_interrupt(int i */ if (val & (HP100_TX_ERROR | HP100_RX_ERROR)) { #ifdef HP100_DEBUG_IRQ - printk("hp100: %s: TX/RX Error IRQ\n", dev->name); + printk(KERN_DEBUG "hp100: %s: TX/RX Error IRQ\n", dev->name); #endif hp100_update_stats(dev); if (lp->mode == 1) { @@ -2312,7 +2313,7 @@ static irqreturn_t hp100_interrupt(int i if (val & HP100_MISC_ERROR) { /* New for J2585B */ #ifdef HP100_DEBUG_IRQ printk - ("hp100: %s: Misc. Error Interrupt - Check cabling.\n", + (KERN_DEBUG "hp100: %s: Misc. Error Interrupt - Check cabling.\n", dev->name); #endif if (lp->mode == 1) { @@ -2339,7 +2340,7 @@ static void hp100_start_interface(struct #ifdef HP100_DEBUG_B hp100_outw(0x4220, TRACE); - printk("hp100: %s: hp100_start_interface\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hp100_start_interface\n", dev->name); #endif spin_lock_irqsave(&lp->lock, flags); @@ -2399,7 +2400,7 @@ static void hp100_stop_interface(struct u_int val; #ifdef HP100_DEBUG_B - printk("hp100: %s: hp100_stop_interface\n", dev->name); + printk(KERN_DEBUG "hp100: %s: hp100_stop_interface\n", dev->name); hp100_outw(0x4221, TRACE); #endif @@ -2423,7 +2424,7 @@ static void hp100_stop_interface(struct hp100_page(PERFORMANCE); return; } - printk("hp100: %s: hp100_stop_interface - timeout\n", dev->name); + printk(KERN_INFO "hp100: %s: hp100_stop_interface - timeout\n", dev->name); hp100_page(PERFORMANCE); } } @@ -2443,7 +2444,7 @@ static void hp100_load_eeprom(struct net for (i = 0; i < 10000; i++) if (!(hp100_inb(OPTION_MSW) & HP100_EE_LOAD)) return; - printk("hp100: %s: hp100_load_eeprom - timeout\n", dev->name); + printk(KERN_INFO "hp100: %s: hp100_load_eeprom - timeout\n", dev->name); } /* Sense connection status. @@ -2466,7 +2467,7 @@ static int hp100_sense_lan(struct net_de val_VG = hp100_inb(VG_LAN_CFG_1); hp100_page(PERFORMANCE); #ifdef HP100_DEBUG - printk("hp100: %s: sense_lan: val_VG = 0x%04x, val_10 = 0x%04x\n", + printk(KERN_DEBUG "hp100: %s: sense_lan: val_VG = 0x%04x, val_10 = 0x%04x\n", dev->name, val_VG, val_10); #endif @@ -2508,7 +2509,7 @@ static int hp100_down_vg_link(struct net #ifdef HP100_DEBUG_B hp100_outw(0x4224, TRACE); - printk("hp100: %s: down_vg_link\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link\n", dev->name); #endif hp100_page(MAC_CTRL); @@ -2539,7 +2540,7 @@ static int hp100_down_vg_link(struct net #ifdef HP100_DEBUG if (time_after_eq(jiffies, time)) - printk("hp100: %s: down_vg_link: Link does not go down?\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link: Link does not go down?\n", dev->name); #endif /* To prevent condition where Rev 1 VG MAC and old hubs do not complete */ @@ -2590,7 +2591,7 @@ static int hp100_down_vg_link(struct net if (time_before_eq(time, jiffies)) { #ifdef HP100_DEBUG - printk("hp100: %s: down_vg_link: timeout\n", dev->name); + printk(KERN_DEBUG "hp100: %s: down_vg_link: timeout\n", dev->name); #endif return -EIO; } @@ -2614,7 +2615,7 @@ static int hp100_login_to_vg_hub(struct #ifdef HP100_DEBUG_B hp100_outw(0x4225, TRACE); - printk("hp100: %s: login_to_vg_hub\n", dev->name); + printk(KERN_DEBUG "hp100: %s: login_to_vg_hub\n", dev->name); #endif /* Initiate a login sequence iff VG MAC is enabled and either Load Address @@ -2625,7 +2626,7 @@ static int hp100_login_to_vg_hub(struct startst = hp100_inb(VG_LAN_CFG_1); if ((force_relogin == 1) || (hp100_inb(MAC_CFG_4) & HP100_MAC_SEL_ST)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Start training\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Start training\n", dev->name); #endif /* Ensure VG Reset bit is 1 (i.e., do not reset) */ @@ -2640,7 +2641,7 @@ static int hp100_login_to_vg_hub(struct hp100_andb(~(HP100_LINK_CMD /* |HP100_LOAD_ADDR */ ), VG_LAN_CFG_1); #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Bring down the link\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Bring down the link\n", dev->name); #endif /* Wait for link to drop */ @@ -2690,12 +2691,12 @@ static int hp100_login_to_vg_hub(struct if (time_after_eq(jiffies, time)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Link cable status not ok? Training aborted.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Link cable status not ok? Training aborted.\n", dev->name); #endif } else { #ifdef HP100_DEBUG_TRAINING printk - ("hp100: %s: HUB tones detected. Trying to train.\n", + (KERN_DEBUG "hp100: %s: HUB tones detected. Trying to train.\n", dev->name); #endif @@ -2704,7 +2705,7 @@ static int hp100_login_to_vg_hub(struct val = hp100_inb(VG_LAN_CFG_1); if ((val & (HP100_LINK_UP_ST))) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Passed training.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Passed training.\n", dev->name); #endif break; } @@ -2716,30 +2717,30 @@ static int hp100_login_to_vg_hub(struct /* If LINK_UP_ST is set, then we are logged into the hub. */ if (time_before_eq(jiffies, time) && (val & HP100_LINK_UP_ST)) { #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: Successfully logged into the HUB.\n", dev->name); + printk(KERN_DEBUG "hp100: %s: Successfully logged into the HUB.\n", dev->name); if (lp->chip == HP100_CHIPID_LASSEN) { val = hp100_inw(TRAIN_ALLOW); - printk("hp100: %s: Card supports 100VG MAC Version \"%s\" ", + printk(KERN_DEBUG "hp100: %s: Card supports 100VG MAC Version \"%s\" ", dev->name, (hp100_inw(TRAIN_REQUEST) & HP100_CARD_MACVER) ? "802.12" : "Pre"); printk("Driver will use MAC Version \"%s\"\n", (val & HP100_HUB_MACVER) ? "802.12" : "Pre"); - printk("hp100: %s: Frame format is %s.\n", dev->name, (val & HP100_MALLOW_FRAMEFMT) ? "802.5" : "802.3"); + printk(KERN_DEBUG "hp100: %s: Frame format is %s.\n", dev->name, (val & HP100_MALLOW_FRAMEFMT) ? "802.5" : "802.3"); } #endif } else { /* If LINK_UP_ST is not set, login was not successful */ - printk("hp100: %s: Problem logging into the HUB.\n", dev->name); + printk(KERN_INFO "hp100: %s: Problem logging into the HUB.\n", dev->name); if (lp->chip == HP100_CHIPID_LASSEN) { /* Check allowed Register to find out why there is a problem. */ val = hp100_inw(TRAIN_ALLOW); /* won't work on non-ETR card */ #ifdef HP100_DEBUG_TRAINING - printk("hp100: %s: MAC Configuration requested: 0x%04x, HUB allowed: 0x%04x\n", dev->name, hp100_inw(TRAIN_REQUEST), val); + printk(KERN_DEBUG "hp100: %s: MAC Configuration requested: 0x%04x, HUB allowed: 0x%04x\n", dev->name, hp100_inw(TRAIN_REQUEST), val); #endif if (val & HP100_MALLOW_ACCDENIED) - printk("hp100: %s: HUB access denied.\n", dev->name); + printk(KERN_INFO "hp100: %s: HUB access denied.\n", dev->name); if (val & HP100_MALLOW_CONFIGURE) - printk("hp100: %s: MAC Configuration is incompatible with the Network.\n", dev->name); + printk(KERN_INFO "hp100: %s: MAC Configuration is incompatible with the Network.\n", dev->name); if (val & HP100_MALLOW_DUPADDR) - printk("hp100: %s: Duplicate MAC Address on the Network.\n", dev->name); + printk(KERN_INFO "hp100: %s: Duplicate MAC Address on the Network.\n", dev->name); } } @@ -2760,7 +2761,7 @@ static int hp100_login_to_vg_hub(struct if (val & HP100_LINK_UP_ST) return (0); /* login was ok */ else { - printk("hp100: %s: Training failed.\n", dev->name); + printk(KERN_INFO "hp100: %s: Training failed.\n", dev->name); hp100_down_vg_link(dev); return -EIO; } @@ -2776,7 +2777,7 @@ static void hp100_cascade_reset(struct n #ifdef HP100_DEBUG_B hp100_outw(0x4226, TRACE); - printk("hp100: %s: cascade_reset\n", dev->name); + printk(KERN_DEBUG "hp100: %s: cascade_reset\n", dev->name); #endif if (enable) { @@ -2808,21 +2809,21 @@ void hp100_RegisterDump(struct net_devic int Register; /* Dump common registers */ - printk("hp100: %s: Cascade Register Dump\n", dev->name); - printk("hardware id #1: 0x%.2x\n", hp100_inb(HW_ID)); - printk("hardware id #2/paging: 0x%.2x\n", hp100_inb(PAGING)); - printk("option #1: 0x%.4x\n", hp100_inw(OPTION_LSW)); - printk("option #2: 0x%.4x\n", hp100_inw(OPTION_MSW)); + printk(KERN_INFO "hp100: %s: Cascade Register Dump\n", dev->name); + printk(KERN_INFO "hardware id #1: 0x%.2x\n", hp100_inb(HW_ID)); + printk(KERN_INFO "hardware id #2/paging: 0x%.2x\n", hp100_inb(PAGING)); + printk(KERN_INFO "option #1: 0x%.4x\n", hp100_inw(OPTION_LSW)); + printk(KERN_INFO "option #2: 0x%.4x\n", hp100_inw(OPTION_MSW)); /* Dump paged registers */ for (Page = 0; Page < 8; Page++) { /* Dump registers */ - printk("page: 0x%.2x\n", Page); + printk(KERN_INFO "page: 0x%.2x\n", Page); outw(Page, ioaddr + 0x02); for (Register = 0x8; Register < 0x22; Register += 2) { /* Display Register contents except data port */ if (((Register != 0x10) && (Register != 0x12)) || (Page > 0)) { - printk("0x%.2x = 0x%.4x\n", Register, inw(ioaddr + Register)); + printk(KERN_INFO "0x%.2x = 0x%.4x\n", Register, inw(ioaddr + Register)); } } } @@ -2866,7 +2867,7 @@ static int __init hp100_eisa_probe (stru goto out1; #ifdef HP100_DEBUG - printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, + printk(KERN_DEBUG "hp100: %s: EISA adapter found at 0x%x\n", dev->name, dev->base_addr); #endif gendev->driver_data = dev; @@ -2917,7 +2918,7 @@ static int __devinit hp100_pci_probe (st pci_read_config_word(pdev, PCI_COMMAND, &pci_command); if (!(pci_command & PCI_COMMAND_IO)) { #ifdef HP100_DEBUG - printk("hp100: %s: PCI I/O Bit has not been set. Setting...\n", dev->name); + printk(KERN_DEBUG "hp100: %s: PCI I/O Bit has not been set. Setting...\n", dev->name); #endif pci_command |= PCI_COMMAND_IO; pci_write_config_word(pdev, PCI_COMMAND, pci_command); @@ -2925,7 +2926,7 @@ static int __devinit hp100_pci_probe (st if (!(pci_command & PCI_COMMAND_MASTER)) { #ifdef HP100_DEBUG - printk("hp100: %s: PCI Master Bit has not been set. Setting...\n", dev->name); + printk(KERN_DEBUG "hp100: %s: PCI Master Bit has not been set. Setting...\n", dev->name); #endif pci_command |= PCI_COMMAND_MASTER; pci_write_config_word(pdev, PCI_COMMAND, pci_command); @@ -2937,7 +2938,7 @@ static int __devinit hp100_pci_probe (st goto out1; #ifdef HP100_DEBUG - printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); + printk(KERN_DEBUG "hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); #endif pci_set_drvdata(pdev, dev); return 0; @@ -3048,7 +3049,7 @@ static int __init hp100_module_init(void goto out2; #endif #ifdef CONFIG_PCI - err = pci_module_init(&hp100_pci_driver); + err = pci_register_driver(&hp100_pci_driver); if (err && err != -ENODEV) goto out3; #endif --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c @@ -105,6 +105,7 @@ #include #include #include +#include #include #include @@ -658,7 +659,7 @@ static int init586(struct net_device *de s = jiffies; /* warning: only active with interrupts on !! */ while (!(cfg_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } @@ -684,7 +685,7 @@ static int init586(struct net_device *de s = jiffies; while (!(ias_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } @@ -709,7 +710,7 @@ static int init586(struct net_device *de s = jiffies; while (!(tdr_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) { + if (time_after(jiffies, s + 30*HZ/100)) { printk(KERN_WARNING "%s: %d Problems while running the TDR.\n", dev->name, __LINE__); result = 1; break; @@ -798,7 +799,7 @@ static int init586(struct net_device *de elmc_id_attn586(); s = jiffies; while (!(mc_cmd->cmd_status & STAT_COMPL)) { - if (jiffies - s > 30*HZ/100) + if (time_after(jiffies, s + 30*HZ/100)) break; } if (!(mc_cmd->cmd_status & STAT_COMPL)) { --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -258,6 +258,7 @@ static int vortex_debug = 1; #include #include #include +#include #include /* For NR_IRQS only. */ #include #include @@ -2717,7 +2718,7 @@ boomerang_rx(struct net_device *dev) skb = dev_alloc_skb(PKT_BUF_SZ); if (skb == NULL) { static unsigned long last_jif; - if ((jiffies - last_jif) > 10 * HZ) { + if (time_after(jiffies, last_jif + 10 * HZ)) { printk(KERN_WARNING "%s: memory shortage\n", dev->name); last_jif = jiffies; } @@ -3367,7 +3368,7 @@ static int __init vortex_init (void) { int pci_rc, eisa_rc; - pci_rc = pci_module_init(&vortex_driver); + pci_rc = pci_register_driver(&vortex_driver); eisa_rc = vortex_eisa_init(); if (pci_rc == 0) --- a/drivers/net/eth16i.c +++ b/drivers/net/eth16i.c @@ -161,6 +161,7 @@ static char *version = #include #include #include +#include #include #include @@ -754,7 +755,7 @@ static void eth16i_set_port(int ioaddr, static int eth16i_send_probe_packet(int ioaddr, unsigned char *b, int l) { - int starttime; + unsigned long starttime; outb(0xff, ioaddr + TX_STATUS_REG); @@ -765,7 +766,7 @@ static int eth16i_send_probe_packet(int outb(TX_START | 1, ioaddr + TRANSMIT_START_REG); while( (inb(ioaddr + TX_STATUS_REG) & 0x80) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { return -1; } } @@ -775,18 +776,18 @@ static int eth16i_send_probe_packet(int static int eth16i_receive_probe_packet(int ioaddr) { - int starttime; + unsigned long starttime; starttime = jiffies; while((inb(ioaddr + TX_STATUS_REG) & 0x20) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { if(eth16i_debug > 1) printk(KERN_DEBUG "Timeout occurred waiting transmit packet received\n"); starttime = jiffies; while((inb(ioaddr + RX_STATUS_REG) & 0x80) == 0) { - if( (jiffies - starttime) > TX_TIMEOUT) { + if( time_after(jiffies, starttime + TX_TIMEOUT)) { if(eth16i_debug > 1) printk(KERN_DEBUG "Timeout occurred waiting receive packet\n"); return -1; --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -905,7 +905,7 @@ static int epp_open(struct net_device *d /* autoprobe baud rate */ tstart = jiffies; i = 0; - while ((signed)(jiffies-tstart-HZ/3) < 0) { + while (time_before(jiffies, tstart + HZ/3)) { if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) goto epptimeout; if ((stat & (EPP_NRAEF|EPP_NRHF)) == EPP_NRHF) { --- a/drivers/net/arcnet/arcnet.c +++ b/drivers/net/arcnet/arcnet.c @@ -52,6 +52,7 @@ #include #include #include +#include /* "do nothing" functions for protocol drivers */ static void null_rx(struct net_device *dev, int bufnum, @@ -733,7 +734,7 @@ static void arcnet_timeout(struct net_de spin_unlock_irqrestore(&lp->lock, flags); - if (jiffies - lp->last_timeout > 10*HZ) { + if (time_after(jiffies, lp->last_timeout + 10*HZ)) { BUGMSG(D_EXTRA, "tx timed out%s (status=%Xh, intmask=%Xh, dest=%02Xh)\n", msg, status, lp->intmask, lp->lasttrans_dest); lp->last_timeout = jiffies; --- a/drivers/net/shaper.c +++ b/drivers/net/shaper.c @@ -83,6 +83,7 @@ #include #include #include +#include #include #include @@ -168,7 +169,7 @@ static int shaper_start_xmit(struct sk_b /* * Queue over time. Spill packet. */ - if(SHAPERCB(skb)->shapeclock-jiffies > SHAPER_LATENCY) { + if(time_after(SHAPERCB(skb)->shapeclock,jiffies + SHAPER_LATENCY)) { dev_kfree_skb(skb); shaper->stats.tx_dropped++; } else --- a/drivers/net/seeq8005.c +++ b/drivers/net/seeq8005.c @@ -46,6 +46,7 @@ static const char version[] = #include #include #include +#include #include #include @@ -699,7 +700,7 @@ static void hardware_send_packet(struct int ioaddr = dev->base_addr; int status = inw(SEEQ_STATUS); int transmit_ptr = 0; - int tmp; + unsigned long tmp; if (net_debug>4) { printk("%s: send 0x%04x\n",dev->name,length); @@ -724,7 +725,7 @@ static void hardware_send_packet(struct /* drain FIFO */ tmp = jiffies; - while ( (((status=inw(SEEQ_STATUS)) & SEEQSTAT_FIFO_EMPTY) == 0) && (jiffies - tmp < HZ)) + while ( (((status=inw(SEEQ_STATUS)) & SEEQSTAT_FIFO_EMPTY) == 0) && time_before(jiffies, tmp + HZ)) mb(); /* doit ! */ --- a/drivers/net/ppp_async.c +++ b/drivers/net/ppp_async.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -577,7 +578,7 @@ ppp_async_encode(struct asyncppp *ap) * character if necessary. */ if (islcp || flag_time == 0 - || jiffies - ap->last_xmit >= flag_time) + || time_after_eq(jiffies, ap->last_xmit + flag_time)) *buf++ = PPP_FLAG; ap->last_xmit = jiffies; fcs = PPP_INITFCS; --- a/drivers/net/oaknet.c +++ b/drivers/net/oaknet.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -606,7 +607,7 @@ retry: #endif while ((ei_ibp(base + EN0_ISR) & ENISR_RDC) == 0) { - if (jiffies - start > OAKNET_WAIT) { + if (time_after(jiffies, start + OAKNET_WAIT)) { printk("%s: timeout waiting for Tx RDC.\n", dev->name); oaknet_reset_8390(dev); NS8390_init(dev, TRUE); --- a/drivers/net/zorro8390.c +++ b/drivers/net/zorro8390.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -151,7 +152,7 @@ static int __devinit zorro8390_init(stru z_writeb(z_readb(ioaddr + NE_RESET), ioaddr + NE_RESET); while ((z_readb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING " not found (no reset ack).\n"); return -ENODEV; } @@ -273,7 +274,7 @@ static void zorro8390_reset_8390(struct /* This check _should_not_ be necessary, omit eventually. */ while ((z_readb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) - if (jiffies - reset_start_time > 2*HZ/100) { + if (time_after(jiffies, reset_start_time + 2*HZ/100)) { printk(KERN_WARNING "%s: ne_reset_8390() did not complete.\n", dev->name); break; @@ -400,7 +401,7 @@ static void zorro8390_block_output(struc dma_start = jiffies; while ((z_readb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) - if (jiffies - dma_start > 2*HZ/100) { /* 20ms */ + if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ printk(KERN_ERR "%s: timeout waiting for Tx RDC.\n", dev->name); zorro8390_reset_8390(dev); --- a/drivers/usb/input/ati_remote.c +++ b/drivers/usb/input/ati_remote.c @@ -96,6 +96,7 @@ #include #include #include +#include /* * Module and Version Information, Module Parameters @@ -472,7 +473,7 @@ static void ati_remote_input_report(stru /* Filter duplicate events which happen "too close" together. */ if ((ati_remote->old_data[0] == data[1]) && (ati_remote->old_data[1] == data[2]) && - ((ati_remote->old_jiffies + FILTER_TIME) > jiffies)) { + time_before(jiffies, ati_remote->old_jiffies + FILTER_TIME)) { ati_remote->repeat_count++; } else { ati_remote->repeat_count = 0; @@ -507,16 +508,16 @@ static void ati_remote_input_report(stru * pad down, so we increase acceleration, ramping up over two seconds to * a maximum speed. The acceleration curve is #defined above. */ - if ((jiffies - ati_remote->old_jiffies) > (HZ >> 2)) { + if (time_after(jiffies, ati_remote->old_jiffies + (HZ >> 2))) { acc = 1; ati_remote->acc_jiffies = jiffies; } - else if ((jiffies - ati_remote->acc_jiffies) < (HZ >> 3)) acc = accel[0]; - else if ((jiffies - ati_remote->acc_jiffies) < (HZ >> 2)) acc = accel[1]; - else if ((jiffies - ati_remote->acc_jiffies) < (HZ >> 1)) acc = accel[2]; - else if ((jiffies - ati_remote->acc_jiffies) < HZ ) acc = accel[3]; - else if ((jiffies - ati_remote->acc_jiffies) < HZ+(HZ>>1)) acc = accel[4]; - else if ((jiffies - ati_remote->acc_jiffies) < (HZ << 1)) acc = accel[5]; + else if (time_before(jiffies, ati_remote->acc_jiffies + (HZ >> 3))) acc = accel[0]; + else if (time_before(jiffies, ati_remote->acc_jiffies + (HZ >> 2))) acc = accel[1]; + else if (time_before(jiffies, ati_remote->acc_jiffies + (HZ >> 1))) acc = accel[2]; + else if (time_before(jiffies, ati_remote->acc_jiffies + HZ)) acc = accel[3]; + else if (time_before(jiffies, ati_remote->acc_jiffies + HZ+(HZ>>1))) acc = accel[4]; + else if (time_before(jiffies, ati_remote->acc_jiffies + (HZ << 1))) acc = accel[5]; else acc = accel[6]; input_regs(dev, regs); @@ -568,7 +569,7 @@ static void ati_remote_irq_in(struct urb case -ECONNRESET: /* unlink */ case -ENOENT: case -ESHUTDOWN: - dev_dbg(&ati_remote->interface->dev, "%s: urb error status, unlink? \n", + dev_dbg(&ati_remote->interface->dev, "%s: urb error status, unlink?\n", __FUNCTION__); return; default: /* error */ @@ -722,7 +723,7 @@ static int ati_remote_probe(struct usb_i return -ENODEV; } if (le16_to_cpu(endpoint_in->wMaxPacketSize) == 0) { - err("%s: endpoint_in message size==0? \n", __FUNCTION__); + err("%s: endpoint_in message size==0?\n", __FUNCTION__); return -ENODEV; } --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -443,6 +443,7 @@ #include #include #include +#include #include #include @@ -2335,7 +2336,7 @@ static ide_startstop_t idetape_rw_callba } if (time_after(jiffies, tape->insert_time)) tape->insert_speed = tape->insert_size / 1024 * HZ / (jiffies - tape->insert_time); - if (jiffies - tape->avg_time >= HZ) { + if (time_after_eq(jiffies, tape->avg_time + HZ)) { tape->avg_speed = tape->avg_size * HZ / (jiffies - tape->avg_time) / 1024; tape->avg_size = 0; tape->avg_time = jiffies; @@ -2496,7 +2497,7 @@ static ide_startstop_t idetape_do_reques } else { return ide_do_reset(drive); } - } else if (jiffies - tape->dsc_polling_start > IDETAPE_DSC_MA_THRESHOLD) + } else if (time_after(jiffies, tape->dsc_polling_start + IDETAPE_DSC_MA_THRESHOLD)) tape->dsc_polling_frequency = IDETAPE_DSC_MA_SLOW; idetape_postpone_request(drive); return ide_stopped; --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include @@ -676,7 +678,7 @@ static int __init BusLogic_InitializeMul if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -831,7 +833,7 @@ static int __init BusLogic_InitializeMul if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -885,7 +887,7 @@ static int __init BusLogic_InitializeFla if (pci_enable_device(PCI_Device)) continue; - if (pci_set_dma_mask(PCI_Device, (u64) 0xffffffff)) + if (pci_set_dma_mask(PCI_Device, DMA_32BIT_MASK)) continue; Bus = PCI_Device->bus->number; @@ -2289,7 +2291,7 @@ static int __init BusLogic_init(void) */ release_region(HostAdapter->IO_Address, HostAdapter->AddressCount); if (!request_region(HostAdapter->IO_Address, HostAdapter->AddressCount, HostAdapter->FullModelName)) { - printk(KERN_WARNING "BusLogic: Release and re-register of " "port 0x%04lx failed \n", (unsigned long) HostAdapter->IO_Address); + printk(KERN_WARNING "BusLogic: Release and re-register of " "port 0x%04lx failed\n", (unsigned long) HostAdapter->IO_Address); BusLogic_DestroyCCBs(HostAdapter); BusLogic_ReleaseResources(HostAdapter); list_del(&HostAdapter->host_list); @@ -2895,7 +2897,7 @@ static int BusLogic_QueueCommand(struct */ if (HostAdapter->ActiveCommands[TargetID] == 0) HostAdapter->LastSequencePoint[TargetID] = jiffies; - else if (jiffies - HostAdapter->LastSequencePoint[TargetID] > 4 * HZ) { + else if (time_after(jiffies, HostAdapter->LastSequencePoint[TargetID] + 4 * HZ)) { HostAdapter->LastSequencePoint[TargetID] = jiffies; QueueTag = BusLogic_OrderedQueueTag; } --- a/drivers/scsi/osst.c +++ b/drivers/scsi/osst.c @@ -50,6 +50,7 @@ static const char * osst_version = "0.99 #include #include #include +#include #include #include #include @@ -803,7 +804,7 @@ static int osst_wait_frame(struct osst_t ) && result >= 0) { #if DEBUG - if (debugging || jiffies - startwait >= 2*HZ/OSST_POLL_PER_SEC) + if (debugging || time_after_eq(jiffies, startwait + 2*HZ/OSST_POLL_PER_SEC)) printk (OSST_DEB_MSG "%s:D: Succ wait f fr %i (>%i): %i-%i %i (%i): %3li.%li s\n", name, curr, curr+minlast, STp->first_frame_position, @@ -814,7 +815,7 @@ static int osst_wait_frame(struct osst_t return 0; } #if DEBUG - if (jiffies - startwait >= 2*HZ/OSST_POLL_PER_SEC && notyetprinted) + if (time_after_eq(jiffies, startwait + 2*HZ/OSST_POLL_PER_SEC) && notyetprinted) { printk (OSST_DEB_MSG "%s:D: Wait for frame %i (>%i): %i-%i %i (%i)\n", name, curr, curr+minlast, STp->first_frame_position, @@ -862,7 +863,7 @@ static int osst_recover_wait_frame(struc retval = osst_write_error_recovery(STp, aSRpnt, 0); break; } - schedule_timeout_interruptible(HZ / OSST_POLL_PER_SEC); + msleep(1000 / OSST_POLL_PER_SEC); STp->buffer->b_data = mybuf; STp->buffer->buffer_size = 24; memset(cmd, 0, MAX_COMMAND_SIZE); @@ -1557,7 +1558,7 @@ static int osst_reposition_and_retry(str osst_set_frame_position(STp, aSRpnt, frame + skip, 1); flag = 0; attempts--; - schedule_timeout_interruptible(msecs_to_jiffies(100)); + msleep(100); } if (osst_get_frame_position(STp, aSRpnt) < 0) { /* additional write error */ #if DEBUG @@ -1618,7 +1619,7 @@ static int osst_reposition_and_retry(str debugging = 0; } #endif - schedule_timeout_interruptible(msecs_to_jiffies(100)); + msleep(100); } printk(KERN_ERR "%s:E: Failed to find valid tape media\n", name); #if DEBUG --- a/drivers/scsi/ppa.c +++ b/drivers/scsi/ppa.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -726,7 +727,7 @@ static int ppa_engine(ppa_struct *dev, s retv--; if (retv) { - if ((jiffies - dev->jstart) > (1 * HZ)) { + if (time_after(jiffies, dev->jstart + (1 * HZ))) { printk ("ppa: Parallel port cable is unplugged!!\n"); ppa_fail(dev, DID_BUS_BUSY); --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -1017,7 +1018,7 @@ static inline void cmd_frob(struct Comma if (Cmnd->device->tagged_supported) { if (qpti->cmd_count[Cmnd->device->id] == 0) qpti->tag_ages[Cmnd->device->id] = jiffies; - if ((jiffies - qpti->tag_ages[Cmnd->device->id]) > (5*HZ)) { + if (time_after(jiffies, qpti->tag_ages[Cmnd->device->id] + (5*HZ))) { cmd->control_flags = CFLAG_ORDERED_TAG; qpti->tag_ages[Cmnd->device->id] = jiffies; } else --- a/drivers/scsi/qlogicfc.c +++ b/drivers/scsi/qlogicfc.c @@ -61,6 +61,8 @@ #include #include #include +#include +#include #include #include #include "scsi.h" @@ -737,8 +739,8 @@ static int isp2x00_detect(struct scsi_ho continue; /* Try to configure DMA attributes. */ - if (pci_set_dma_mask(pdev, 0xffffffffffffffffULL) && - pci_set_dma_mask(pdev, 0xffffffffULL)) + if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) && + pci_set_dma_mask(pdev, DMA_32BIT_MASK)) continue; host = scsi_register(tmpt, sizeof(struct isp2x00_hostdata)); @@ -1325,7 +1327,7 @@ static int isp2x00_queuecommand(Scsi_Cmn cmd->control_flags = cpu_to_le16(CFLAG_READ); if (Cmnd->device->tagged_supported) { - if ((jiffies - hostdata->tag_ages[Cmnd->device->id]) > (2 * ISP_TIMEOUT)) { + if (time_after(jiffies, hostdata->tag_ages[Cmnd->device->id] + (2 * ISP_TIMEOUT))) { cmd->control_flags |= cpu_to_le16(CFLAG_ORDERED_TAG); hostdata->tag_ages[Cmnd->device->id] = jiffies; } else @@ -1826,14 +1828,14 @@ static int isp2x00_reset_hardware(struct #if DEBUG_ISP2x00 - printk("qlogicfc%d : mbox 0 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX0)); - printk("qlogicfc%d : mbox 1 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX1)); - printk("qlogicfc%d : mbox 2 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX2)); - printk("qlogicfc%d : mbox 3 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX3)); - printk("qlogicfc%d : mbox 4 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX4)); - printk("qlogicfc%d : mbox 5 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX5)); - printk("qlogicfc%d : mbox 6 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX6)); - printk("qlogicfc%d : mbox 7 0x%04x \n", hostdata->host_id, inw(host->io_port + MBOX7)); + printk("qlogicfc%d : mbox 0 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX0)); + printk("qlogicfc%d : mbox 1 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX1)); + printk("qlogicfc%d : mbox 2 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX2)); + printk("qlogicfc%d : mbox 3 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX3)); + printk("qlogicfc%d : mbox 4 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX4)); + printk("qlogicfc%d : mbox 5 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX5)); + printk("qlogicfc%d : mbox 6 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX6)); + printk("qlogicfc%d : mbox 7 0x%04x\n", hostdata->host_id, inw(host->io_port + MBOX7)); #endif /* DEBUG_ISP2x00 */ DEBUG(printk("qlogicfc%d : verifying checksum\n", hostdata->host_id)); --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -179,6 +179,7 @@ static int print_unex = 1; #include #include #include /* for invalidate_buffers() */ +#include /* * PS/2 floppies have much slower step rates than regular floppies. @@ -242,7 +243,6 @@ static int allowed_drive_mask = 0x33; static int irqdma_allocated; -#define LOCAL_END_REQUEST #define DEVICE_NAME "floppy" #include @@ -736,7 +736,7 @@ static int disk_change(int drive) { int fdc = FDC(drive); #ifdef FLOPPY_SANITY_CHECK - if (jiffies - UDRS->select_date < UDP->select_delay) + if (time_before(jiffies, UDRS->select_date + UDP->select_delay)) DPRINT("WARNING disk change called early\n"); if (!(FDCS->dor & (0x10 << UNIT(drive))) || (FDCS->dor & 3) != UNIT(drive) || fdc != FDC(drive)) { @@ -1064,7 +1064,7 @@ static int fd_wait_for_completion(unsign return 1; } - if ((signed)(jiffies - delay) < 0) { + if (time_before(jiffies, delay)) { del_timer(&fd_timer); fd_timer.function = function; fd_timer.expires = delay; @@ -1524,7 +1524,7 @@ static void setup_rw_floppy(void) * again just before spinup completion. Beware that * after scandrives, we must again wait for selection. */ - if ((signed)(ready_date - jiffies) > DP->select_delay) { + if (time_after(ready_date, jiffies + DP->select_delay)) { ready_date -= DP->select_delay; function = (timeout_fn) floppy_start; } else @@ -3812,7 +3812,7 @@ static int check_floppy_change(struct ge if (UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY)) return 1; - if (UDP->checkfreq < (int)(jiffies - UDRS->last_checked)) { + if (time_after(jiffies, UDRS->last_checked + UDP->checkfreq)) { if (floppy_grab_irq_and_dma()) { return 1; } --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include #include "DAC960.h" @@ -2526,7 +2528,7 @@ static boolean DAC960_RegisterBlockDevic /* for now, let all request queues share controller's lock */ RequestQueue = blk_init_queue(DAC960_RequestFunction,&Controller->queue_lock); if (!RequestQueue) { - printk("DAC960: failure to allocate request queue\n"); + printk(KERN_WARNING "DAC960: failure to allocate request queue\n"); continue; } Controller->RequestQueue[n] = RequestQueue; @@ -3600,7 +3602,7 @@ static void DAC960_V1_ProcessCompletedCo #ifdef FORCE_RETRY_FAILURE_DEBUG if (!(++retry_count % 10000)) { - printk("V1 error retry failure test\n"); + printk(KERN_DEBUG "V1 error retry failure test\n"); normal_completion = false; DAC960_V1_ReadWriteError(Command); } @@ -3664,8 +3666,8 @@ static void DAC960_V1_ProcessCompletedCo (NewEnquiry->EventLogSequenceNumber != OldEnquiry->EventLogSequenceNumber) || Controller->MonitoringTimerCount == 0 || - (jiffies - Controller->SecondaryMonitoringTime - >= DAC960_SecondaryMonitoringInterval)) + time_after_eq(jiffies, Controller->SecondaryMonitoringTime + + DAC960_SecondaryMonitoringInterval)) { Controller->V1.NeedLogicalDriveInformation = true; Controller->V1.NewEventLogSequenceNumber = @@ -4688,7 +4690,7 @@ static void DAC960_V2_ProcessCompletedCo #ifdef FORCE_RETRY_FAILURE_DEBUG if (!(++retry_count % 10000)) { - printk("V2 error retry failure test\n"); + printk(KERN_DEBUG "V2 error retry failure test\n"); normal_completion = false; DAC960_V2_ReadWriteError(Command); } @@ -5650,8 +5652,8 @@ static void DAC960_MonitoringTimerFuncti unsigned int StatusChangeCounter = Controller->V2.HealthStatusBuffer->StatusChangeCounter; boolean ForceMonitoringCommand = false; - if (jiffies - Controller->SecondaryMonitoringTime - > DAC960_SecondaryMonitoringInterval) + if (time_after(jiffies, Controller->SecondaryMonitoringTime + + DAC960_SecondaryMonitoringInterval)) { int LogicalDriveNumber; for (LogicalDriveNumber = 0; @@ -5679,8 +5681,8 @@ static void DAC960_MonitoringTimerFuncti ControllerInfo->ConsistencyChecksActive + ControllerInfo->RebuildsActive + ControllerInfo->OnlineExpansionsActive == 0 || - jiffies - Controller->PrimaryMonitoringTime - < DAC960_MonitoringTimerInterval) && + time_before(jiffies, Controller->PrimaryMonitoringTime + + DAC960_MonitoringTimerInterval)) && !ForceMonitoringCommand) { Controller->MonitoringTimer.expires = @@ -5817,8 +5819,8 @@ static void DAC960_Message(DAC960_Messag Controller->ProgressBufferLength = Length; if (Controller->EphemeralProgressMessage) { - if (jiffies - Controller->LastProgressReportTime - >= DAC960_ProgressReportingInterval) + if (time_after_eq(jiffies, Controller->LastProgressReportTime + + DAC960_ProgressReportingInterval)) { printk("%sDAC960#%d: %s", DAC960_MessageLevelMap[MessageLevel], Controller->ControllerNumber, Buffer); @@ -6233,6 +6235,7 @@ static boolean DAC960_V2_TranslatePhysic static boolean DAC960_V2_ExecuteUserCommand(DAC960_Controller_T *Controller, unsigned char *UserCommand) { + DEFINE_WAIT(wait); DAC960_Command_T *Command; DAC960_V2_CommandMailbox_T *CommandMailbox; unsigned long flags; @@ -6423,7 +6426,9 @@ static boolean DAC960_V2_ExecuteUserComm while (Controller->V2.NewControllerInformation->PhysicalScanActive) { DAC960_ExecuteCommand(Command); - sleep_on_timeout(&Controller->CommandWaitQueue, HZ); + prepare_to_wait(&Controller->CommandWaitQueue, &wait, TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ); + finish_wait(&Controller->CommandWaitQueue, &wait); } DAC960_UserCritical("Discovery Completed\n", Controller); } @@ -7023,15 +7028,13 @@ static int DAC960_gam_ioctl(struct inode GetHealthStatus.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) return -EFAULT; - while (Controller->V2.HealthStatusBuffer->StatusChangeCounter - == HealthStatusBuffer.StatusChangeCounter && - Controller->V2.HealthStatusBuffer->NextEventSequenceNumber - == HealthStatusBuffer.NextEventSequenceNumber) - { - interruptible_sleep_on_timeout(&Controller->HealthStatusWaitQueue, - DAC960_MonitoringTimerInterval); - if (signal_pending(current)) return -EINTR; - } + wait_event_interruptible_timeout(Controller->HealthStatusWaitQueue, + (Controller->V2.HealthStatusBuffer->StatusChangeCounter + != HealthStatusBuffer.StatusChangeCounter || + Controller->V2.HealthStatusBuffer->NextEventSequenceNumber + != HealthStatusBuffer.NextEventSequenceNumber), + DAC960_MonitoringTimerInterval); + if (signal_pending(current)) return -EINTR; if (copy_to_user(GetHealthStatus.HealthStatusBuffer, Controller->V2.HealthStatusBuffer, sizeof(DAC960_V2_HealthStatusBuffer_T))) --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "agp.h" /* NVIDIA registers */ @@ -256,7 +257,7 @@ static void nvidia_tlbflush(struct agp_m do { pci_read_config_dword(nvidia_private.dev_1, NVIDIA_1_WBC, &wbc_reg); - if ((signed)(end - jiffies) <= 0) { + if (time_before_eq(end, jiffies)) { printk(KERN_ERR PFX "TLB flush took more than 3 seconds.\n"); } --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -65,8 +66,6 @@ MODULE_LICENSE("GPL"); #define MAX_CTLR 8 #define CTLR_SHIFT 8 -#define CPQARRAY_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */ - static int nr_ctlr; static ctlr_info_t *hba[MAX_CTLR]; @@ -213,13 +212,18 @@ static struct proc_dir_entry *proc_array */ static void __init ida_procinit(int i) { + struct proc_dir_entry *ent; + if (proc_array == NULL) { proc_array = proc_mkdir("cpqarray", proc_root_driver); if (!proc_array) return; } - create_proc_read_entry(hba[i]->devname, 0, proc_array, + ent = create_proc_read_entry(hba[i]->devname, 0, proc_array, ida_proc_get_info, hba[i]); + if (!ent) + printk(KERN_WARNING + "cpqarray: unable to create /proc entry\n"); } /* @@ -360,7 +364,7 @@ static void __devexit cpqarray_remove_on ctlr_info_t *tmp_ptr; if (pci_get_drvdata(pdev) == NULL) { - printk( KERN_ERR "cpqarray: Unable to remove device \n"); + printk( KERN_ERR "cpqarray: Unable to remove device\n"); return; } @@ -368,7 +372,7 @@ static void __devexit cpqarray_remove_on i = tmp_ptr->ctlr; if (hba[i] == NULL) { printk(KERN_ERR "cpqarray: controller %d appears to have" - "already been removed \n", i); + "already been removed\n", i); return; } pci_set_drvdata(pdev, NULL); @@ -383,7 +387,7 @@ static void __devexit cpqarray_remove_on { if (hba[i] == NULL) { printk(KERN_ERR "cpqarray: controller %d appears to have" - "already been removed \n", i); + "already been removed\n", i); return; } cpqarray_remove_one(i); @@ -626,7 +630,7 @@ static int cpqarray_pci_init(ctlr_info_t for(i=0; i<6; i++) addr[i] = pci_resource_start(pdev, i); - if (pci_set_dma_mask(pdev, CPQARRAY_DMA_MASK) != 0) + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) { printk(KERN_ERR "cpqarray: Unable to set DMA mask\n"); return -1; --- a/drivers/net/ioc3-eth.c +++ b/drivers/net/ioc3-eth.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -1195,17 +1196,17 @@ static int ioc3_probe(struct pci_dev *pd int err, pci_using_dac; /* Configure DMA attributes. */ - err = pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); if (!err) { pci_using_dac = 1; - err = pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL); + err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); if (err < 0) { printk(KERN_ERR "%s: Unable to obtain 64 bit DMA " "for consistent allocations\n", pci_name(pdev)); goto out; } } else { - err = pci_set_dma_mask(pdev, 0xffffffffULL); + err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); if (err) { printk(KERN_ERR "%s: No usable DMA configuration, " "aborting.\n", pci_name(pdev)); --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c @@ -89,6 +89,7 @@ #include #include #include +#include #include #include @@ -1052,7 +1053,7 @@ static int __devinit inia100_probe_one(s if (pci_enable_device(pdev)) goto out; - if (pci_set_dma_mask(pdev, 0xffffffffULL)) { + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "Unable to set 32bit DMA " "on inia100 adapter, ignoring.\n"); goto out_disable_device; --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2776,7 +2777,7 @@ static int nsp32_detect(struct scsi_host /* * setup DMA */ - if (pci_set_dma_mask(PCIDEV, 0xffffffffUL) != 0) { + if (pci_set_dma_mask(PCIDEV, DMA_32BIT_MASK) != 0) { nsp32_msg (KERN_ERR, "failed to set PCI DMA mask"); goto scsi_unregister; } --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -1289,7 +1290,7 @@ TCM_ID: TCM_5: /* isolation complete.. */ /* mbuf[32]=0; - printk(" \n%x %x %x %s\n ",assignid_map,mbuf[0],mbuf[1],&mbuf[2]); */ + printk("\n%x %x %x %s\n ",assignid_map,mbuf[0],mbuf[1],&mbuf[2]); */ i = 15; j = mbuf[0]; if ((j & 0x20) != 0) { /* bit5=1:ID upto 7 */ @@ -2631,7 +2632,7 @@ static int atp870u_probe(struct pci_dev if (pci_enable_device(pdev)) return -EIO; - if (!pci_set_dma_mask(pdev, 0xFFFFFFFFUL)) { + if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { printk(KERN_INFO "atp870u: use 32bit DMA mask.\n"); } else { printk(KERN_ERR "atp870u: DMA mask required but not available.\n"); @@ -3109,7 +3110,7 @@ static int atp870u_abort(struct scsi_cmn dev = (struct atp_unit *)&host->hostdata; c = scmd_channel(SCpnt); - printk(" atp870u: abort Channel = %x \n", c); + printk(" atp870u: abort Channel = %x\n", c); printk("working=%x last_cmd=%x ", dev->working[c], dev->last_cmd[c]); printk(" quhdu=%x quendu=%x ", dev->quhd[c], dev->quend[c]); tmport = dev->ioport[c]; --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c @@ -400,6 +400,7 @@ #include #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #include +#include #else #include #include "sd.h" @@ -4187,7 +4188,7 @@ static int __init gdth_detect(struct scs return 0; } - printk("GDT-HA: Storage RAID Controller Driver. Version: %s \n",GDTH_VERSION_STR); + printk("GDT-HA: Storage RAID Controller Driver. Version: %s\n",GDTH_VERSION_STR); /* initializations */ gdth_polling = TRUE; b = 0; gdth_clear_events(); @@ -4527,15 +4528,15 @@ static int __init gdth_detect(struct scs if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat &GDT_64BIT)|| /* 64-bit DMA only supported from FW >= x.43 */ (!ha->dma64_support)) { - if (pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffff)) { + if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "GDT-PCI %d: Unable to set 32-bit DMA\n", hanum); err = TRUE; } } else { shp->max_cmd_len = 16; - if (!pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffffffffffffULL)) { + if (!pci_set_dma_mask(pcistr[ctr].pdev, DMA_64BIT_MASK)) { printk("GDT-PCI %d: 64-bit DMA enabled\n", hanum); - } else if (pci_set_dma_mask(pcistr[ctr].pdev, 0xffffffff)) { + } else if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "GDT-PCI %d: Unable to set 64/32-bit DMA\n", hanum); err = TRUE; } --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c @@ -348,6 +348,7 @@ #include #include #include +#include #include #include @@ -1763,7 +1764,7 @@ qla1280_chip_diag(struct scsi_qla_host * int status = 0; int cnt; uint16_t data; - dprintk(3, "qla1280_chip_diag: testing device at 0x%p \n", ®->id_l); + dprintk(3, "qla1280_chip_diag: testing device at 0x%p\n", ®->id_l); dprintk(1, "scsi(%ld): Verifying chip\n", ha->host_no); @@ -2195,7 +2196,7 @@ qla1280_set_defaults(struct scsi_qla_hos struct nvram *nv = &ha->nvram; int bus, target; - dprintk(1, "Using defaults for NVRAM: \n"); + dprintk(1, "Using defaults for NVRAM:\n"); memset(nv, 0, sizeof(struct nvram)); /* nv->cntr_flags_1.disable_loading_risc_code = 1; */ @@ -3122,7 +3123,7 @@ qla1280_64bit_start_scsi(struct scsi_qla cpu_to_le32(sg_dma_len(sg))); } dprintk(5, "qla1280_64bit_start_scsi: Scatter/gather " - "command packet data - b %i, t %i, l %i \n", + "command packet data - b %i, t %i, l %i\n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd)); qla1280_dump_buffer(5, (char *)pkt, @@ -3183,7 +3184,7 @@ qla1280_64bit_start_scsi(struct scsi_qla } dprintk(5, "qla1280_64bit_start_scsi: " "continuation packet data - b %i, t " - "%i, l %i \n", SCSI_BUS_32(cmd), + "%i, l %i\n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd)); qla1280_dump_buffer(5, (char *)pkt, REQUEST_ENTRY_SIZE); @@ -3207,14 +3208,14 @@ qla1280_64bit_start_scsi(struct scsi_qla dprintk(5, "qla1280_64bit_start_scsi: No scatter/" "gather command packet data - b %i, t %i, " - "l %i \n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), + "l %i\n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd)); qla1280_dump_buffer(5, (char *)pkt, REQUEST_ENTRY_SIZE); } } else { /* No data transfer */ dprintk(5, "qla1280_64bit_start_scsi: No data, command " - "packet data - b %i, t %i, l %i \n", + "packet data - b %i, t %i, l %i\n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd)); qla1280_dump_buffer(5, (char *)pkt, REQUEST_ENTRY_SIZE); } @@ -3314,7 +3315,7 @@ qla1280_32bit_start_scsi(struct scsi_qla cmd->cmnd[0]); seg_cnt = 1; } else { - /* dprintk(1, "No data transfer \n"); */ + /* dprintk(1, "No data transfer\n"); */ seg_cnt = 0; } @@ -3479,7 +3480,7 @@ qla1280_32bit_start_scsi(struct scsi_qla } } else { /* No data transfer at all */ dprintk(5, "qla1280_32bit_start_scsi: No data, command " - "packet data - \n"); + "packet data -\n"); qla1280_dump_buffer(5, (char *)pkt, REQUEST_ENTRY_SIZE); } dprintk(5, "qla1280_32bit_start_scsi: First IOCB block:\n"); @@ -3668,7 +3669,7 @@ qla1280_isr(struct scsi_qla_host *ha, st if (mailbox[0] & BIT_0) { /* Get mailbox data. */ - /* dprintk(1, "qla1280_isr: In Get mailbox data \n"); */ + /* dprintk(1, "qla1280_isr: In Get mailbox data\n"); */ wptr = &mailbox[0]; *wptr++ = RD_REG_WORD(®->mailbox0); @@ -3776,7 +3777,7 @@ qla1280_isr(struct scsi_qla_host *ha, st break; default: - /* dprintk(1, "qla1280_isr: default case of switch MB \n"); */ + /* dprintk(1, "qla1280_isr: default case of switch MB\n"); */ if (mailbox[0] < MBA_ASYNC_EVENT) { wptr = &mailbox[0]; memcpy((uint16_t *) ha->mailbox_out, wptr, @@ -4333,10 +4334,10 @@ __qla1280_print_scsi_cmd(struct scsi_cmn /* if (cmd->use_sg) { sg = (struct scatterlist *) cmd->request_buffer; - printk(" SG buffer: \n"); + printk(" SG buffer:\n"); qla1280_dump_buffer(1, (char *)sg, (cmd->use_sg*sizeof(struct scatterlist))); } */ - printk(" tag=%d, transfersize=0x%x \n", + printk(" tag=%d, transfersize=0x%x\n", cmd->tag, cmd->transfersize); printk(" Pid=%li, SP=0x%p\n", cmd->pid, CMD_SP(cmd)); printk(" underflow size = 0x%x, direction=0x%x\n", @@ -4568,8 +4569,8 @@ qla1280_probe_one(struct pci_dev *pdev, ha->devnum = devnum; /* specifies microcode load address */ #ifdef QLA_64BIT_PTR - if (pci_set_dma_mask(ha->pdev, (dma_addr_t) ~ 0ULL)) { - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) { + if (pci_set_dma_mask(ha->pdev, DMA_64BIT_MASK)) { + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "scsi(%li): Unable to set a " "suitable DMA mask - aborting\n", ha->host_no); error = -ENODEV; @@ -4579,7 +4580,7 @@ qla1280_probe_one(struct pci_dev *pdev, dprintk(2, "scsi(%li): 64 Bit PCI Addressing Enabled\n", ha->host_no); #else - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) { + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) { printk(KERN_WARNING "scsi(%li): Unable to set a " "suitable DMA mask - aborting\n", ha->host_no); error = -ENODEV; --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include "scsi.h" @@ -2093,7 +2094,7 @@ make_local_pdev(adapter_t *adapter, stru memcpy(*pdev, adapter->dev, sizeof(struct pci_dev)); - if( pci_set_dma_mask(*pdev, 0xffffffff) != 0 ) { + if( pci_set_dma_mask(*pdev, DMA_32BIT_MASK) != 0 ) { kfree(*pdev); return -1; } @@ -4858,10 +4859,10 @@ megaraid_probe_one(struct pci_dev *pdev, /* Set the Mode of addressing to 64 bit if we can */ if ((adapter->flag & BOARD_64BIT) && (sizeof(dma_addr_t) == 8)) { - pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + pci_set_dma_mask(pdev, DMA_64BIT_MASK); adapter->has_64bit_addr = 1; } else { - pci_set_dma_mask(pdev, 0xffffffff); + pci_set_dma_mask(pdev, DMA_32BIT_MASK); adapter->has_64bit_addr = 0; } --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -176,7 +176,7 @@ #include #include #include - +#include #include #include @@ -7279,10 +7279,10 @@ ips_init_phase1(struct pci_dev *pci_dev, * are guaranteed to be < 4G. */ if (IPS_ENABLE_DMA64 && IPS_HAS_ENH_SGLIST(ha) && - !pci_set_dma_mask(ha->pcidev, 0xffffffffffffffffULL)) { + !pci_set_dma_mask(ha->pcidev, DMA_64BIT_MASK)) { (ha)->flags |= IPS_HA_ENH_SG; } else { - if (pci_set_dma_mask(ha->pcidev, 0xffffffffULL) != 0) { + if (pci_set_dma_mask(ha->pcidev, DMA_32BIT_MASK) != 0) { printk(KERN_WARNING "Unable to set DMA Mask\n"); return ips_abort_init(ha, index); } --- a/drivers/scsi/initio.c +++ b/drivers/scsi/initio.c @@ -127,6 +127,7 @@ #include #include #include +#include #include #include @@ -779,7 +780,7 @@ static int init_tulip(HCS * pCurHcb, SCB pCurHcb->HCS_BIOS, pCurHcb->HCS_SCSI_ID); /*------------------- reset SCSI Bus ---------------------------*/ if (pCurHcb->HCS_Config & HCC_SCSI_RESET) { - printk("i91u: Reset SCSI Bus ... \n"); + printk("i91u: Reset SCSI Bus ...\n"); tul_reset_scsi(pCurHcb, seconds); } TUL_WR(pCurHcb->HCS_Base + TUL_SCFG1, 0x17); @@ -2780,7 +2781,7 @@ static int tul_NewReturnNumberOfAdapters if (((dRegValue & 0xFF00) >> 8) == 0xFF) dRegValue = 0; wBIOS = (wBIOS << 8) + ((UWORD) ((dRegValue & 0xFF00) >> 8)); - if (pci_set_dma_mask(pDev, 0xffffffff)) { + if (pci_set_dma_mask(pDev, DMA_32BIT_MASK)) { printk(KERN_WARNING "i91u: Could not set 32 bit DMA mask\n"); continue; --- a/drivers/scsi/eata.c +++ b/drivers/scsi/eata.c @@ -490,6 +490,7 @@ #include #include #include +#include #include #include #include @@ -1426,7 +1427,7 @@ static int port_detect(unsigned long por if (ha->pdev) { pci_set_master(ha->pdev); - if (pci_set_dma_mask(ha->pdev, 0xffffffff)) + if (pci_set_dma_mask(ha->pdev, DMA_32BIT_MASK)) printk("%s: warning, pci_set_dma_mask failed.\n", ha->board_name); } --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c @@ -61,6 +61,7 @@ MODULE_DESCRIPTION("Adaptec I2O RAID Dri #include #include #include +#include #include /* for boot_cpu_data */ #include @@ -884,8 +885,8 @@ static int adpt_install_hba(struct scsi_ return -EINVAL; } pci_set_master(pDev); - if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) && - pci_set_dma_mask(pDev, 0xffffffffULL)) + if (pci_set_dma_mask(pDev, DMA_64BIT_MASK) && + pci_set_dma_mask(pDev, DMA_32BIT_MASK)) return -EINVAL; base_addr0_phys = pci_resource_start(pDev,0); @@ -1404,11 +1405,11 @@ static int adpt_i2o_parse_lct(adpt_hba* scsi_id = buf[1]; scsi_lun = (buf[2]>>8 )&0xff; if(bus_no >= MAX_CHANNEL) { // Something wrong skip it - printk(KERN_WARNING"%s: Channel number %d out of range \n", pHba->name, bus_no); + printk(KERN_WARNING"%s: Channel number %d out of range\n", pHba->name, bus_no); continue; } if (scsi_id >= MAX_ID){ - printk(KERN_WARNING"%s: SCSI ID %d out of range \n", pHba->name, bus_no); + printk(KERN_WARNING"%s: SCSI ID %d out of range\n", pHba->name, bus_no); continue; } if(bus_no > pHba->top_scsi_channel){ @@ -2420,7 +2421,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba adpt_i2o_install_device(pHba, d); if(bus_no >= MAX_CHANNEL) { // Something wrong skip it - printk(KERN_WARNING"%s: Channel number %d out of range \n", pHba->name, bus_no); + printk(KERN_WARNING"%s: Channel number %d out of range\n", pHba->name, bus_no); continue; } pDev = pHba->channel[bus_no].device[scsi_id]; @@ -2749,7 +2750,7 @@ static s32 adpt_i2o_status_get(adpt_hba* kmalloc(sizeof(i2o_status_block),GFP_KERNEL|ADDR32); if(pHba->status_block == NULL) { printk(KERN_ERR - "dpti%d: Get Status Block failed; Out of memory. \n", + "dpti%d: Get Status Block failed; Out of memory.\n", pHba->unit); return -ENOMEM; } --- a/drivers/block/umem.c +++ b/drivers/block/umem.c @@ -50,7 +50,7 @@ #include #include #include - +#include #include /* O_ACCMODE */ #include /* HDIO_GETGEO */ @@ -892,8 +892,8 @@ static int __devinit mm_pci_probe(struct printk(KERN_INFO "Micro Memory(tm) controller #%d found at %02x:%02x (PCI Mem Module (Battery Backup))\n", card->card_number, dev->bus->number, dev->devfn); - if (pci_set_dma_mask(dev, 0xffffffffffffffffLL) && - !pci_set_dma_mask(dev, 0xffffffffLL)) { + if (pci_set_dma_mask(dev, DMA_64BIT_MASK) && + pci_set_dma_mask(dev, DMA_32BIT_MASK)) { printk(KERN_WARNING "MM%d: NO suitable DMA found\n",num_cards); return -ENOMEM; } --- a/arch/i386/kernel/cpu/cpufreq/cpufreq-nforce2.c +++ b/arch/i386/kernel/cpu/cpufreq/cpufreq-nforce2.c @@ -177,9 +177,9 @@ static unsigned int nforce2_fsb_read(int */ static int nforce2_set_fsb(unsigned int fsb) { - u32 pll, temp = 0; + u32 temp = 0; unsigned int tfsb; - int diff; + int diff, pll; if ((fsb > max_fsb) || (fsb < NFORCE2_MIN_FSB)) { printk(KERN_ERR "cpufreq: FSB %d is out of range!\n", fsb); --- a/drivers/macintosh/apm_emu.c +++ b/drivers/macintosh/apm_emu.c @@ -520,6 +520,7 @@ static struct miscdevice apm_device = { static int __init apm_emu_init(void) { struct proc_dir_entry *apm_proc; + int rc; if (sys_ctrler != SYS_CTRLER_PMU) { printk(KERN_INFO "apm_emu: Requires a machine with a PMU.\n"); @@ -530,7 +531,12 @@ static int __init apm_emu_init(void) if (apm_proc) apm_proc->owner = THIS_MODULE; - misc_register(&apm_device); + rc = misc_register(&apm_device); + if (rc < 0) { + remove_proc_entry("apm", NULL); + printk(KERN_ERR "apm_emu: Failed to register APM Emulation.\n"); + return rc; + } pmu_register_sleep_notifier(&apm_sleep_notifier); --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -376,7 +376,7 @@ static ssize_t selinux_transaction_write char *data; ssize_t rv; - if (ino >= sizeof(write_op)/sizeof(write_op[0]) || !write_op[ino]) + if (ino >= ARRAY_SIZE(write_op) || !write_op[ino]) return -EINVAL; data = simple_transaction_get(file, buf, size); @@ -1161,7 +1161,7 @@ static int sel_make_avc_files(struct den #endif }; - for (i = 0; i < sizeof (files) / sizeof (files[0]); i++) { + for (i = 0; i < ARRAY_SIZE(files); i++) { struct inode *inode; struct dentry *dentry; --- a/security/selinux/ss/avtab.c +++ b/security/selinux/ss/avtab.c @@ -359,7 +359,7 @@ int avtab_read_item(void *fp, u32 vers, return -1; } - for (i = 0; i < sizeof(spec_order)/sizeof(u16); i++) { + for (i = 0; i < ARRAY_SIZE(spec_order); i++) { if (val & spec_order[i]) { key.specified = spec_order[i] | enabled; datum.data = le32_to_cpu(buf32[items++]); --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -103,7 +103,7 @@ static struct policydb_compat_info *poli int i; struct policydb_compat_info *info = NULL; - for (i = 0; i < sizeof(policydb_compat)/sizeof(*info); i++) { + for (i = 0; i < ARRAY_SIZE(policydb_compat); i++) { if (policydb_compat[i].version == version) { info = &policydb_compat[i]; break; --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c @@ -1939,7 +1939,7 @@ static int __init cp_init (void) #ifdef MODULE printk("%s", version); #endif - return pci_module_init (&cp_driver); + return pci_register_driver (&cp_driver); } static void __exit cp_exit (void) --- a/drivers/net/8139too.c +++ b/drivers/net/8139too.c @@ -108,6 +108,7 @@ #include #include #include +#include #include #include #include @@ -1596,6 +1597,7 @@ static inline void rtl8139_thread_iter ( static int rtl8139_thread (void *data) { + DEFINE_WAIT(wait); struct net_device *dev = data; struct rtl8139_private *tp = netdev_priv(dev); unsigned long timeout; @@ -1606,7 +1608,9 @@ static int rtl8139_thread (void *data) while (1) { timeout = next_tick; do { - timeout = interruptible_sleep_on_timeout (&tp->thr_wait, timeout); + prepare_to_wait(&tp->thr_wait, &wait, TASK_INTERRUPTIBLE); + timeout = schedule_timeout(timeout); + finish_wait(&tp->thr_wait, &wait); /* make swsusp happy with our thread */ try_to_freeze(); } while (!signal_pending (current) && (timeout > 0)); @@ -2635,7 +2639,7 @@ static int __init rtl8139_init_module (v printk (KERN_INFO RTL8139_DRIVER_NAME "\n"); #endif - return pci_module_init (&rtl8139_pci_driver); + return pci_register_driver (&rtl8139_pci_driver); } --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c @@ -730,7 +730,7 @@ static struct pci_driver acenic_pci_driv static int __init acenic_init(void) { - return pci_module_init(&acenic_pci_driver); + return pci_register_driver(&acenic_pci_driver); } static void __exit acenic_exit(void) --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c @@ -2159,7 +2159,7 @@ static struct pci_driver amd8111e_driver static int __init amd8111e_init(void) { - return pci_module_init(&amd8111e_driver); + return pci_register_driver(&amd8111e_driver); } static void __exit amd8111e_cleanup(void) --- a/drivers/net/defxx.c +++ b/drivers/net/defxx.c @@ -3444,7 +3444,7 @@ static int __init dfx_init(void) { int rc_pci, rc_eisa; - rc_pci = pci_module_init(&dfx_driver); + rc_pci = pci_register_driver(&dfx_driver); if (rc_pci >= 0) dfx_have_pci = 1; rc_eisa = dfx_eisa_init(); --- a/drivers/net/dl2k.c +++ b/drivers/net/dl2k.c @@ -1848,7 +1848,7 @@ static struct pci_driver rio_driver = { static int __init rio_init (void) { - return pci_module_init (&rio_driver); + return pci_register_driver (&rio_driver); } static void __exit --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -2722,7 +2722,7 @@ static int __init e100_init_module(void) printk(KERN_INFO PFX "%s, %s\n", DRV_DESCRIPTION, DRV_VERSION); printk(KERN_INFO PFX "%s\n", DRV_COPYRIGHT); } - return pci_module_init(&e100_driver); + return pci_register_driver(&e100_driver); } static void __exit e100_cleanup_module(void) --- a/drivers/net/eepro100.c +++ b/drivers/net/eepro100.c @@ -2391,7 +2391,7 @@ static int __init eepro100_init_module(v #ifdef MODULE printk(version); #endif - return pci_module_init(&eepro100_driver); + return pci_register_driver(&eepro100_driver); } static void __exit eepro100_cleanup_module(void) --- a/drivers/net/epic100.c +++ b/drivers/net/epic100.c @@ -1673,7 +1673,7 @@ static int __init epic_init (void) version, version2, version3); #endif - return pci_module_init (&epic_driver); + return pci_register_driver (&epic_driver); } --- a/drivers/net/fealnx.c +++ b/drivers/net/fealnx.c @@ -1992,7 +1992,7 @@ static int __init fealnx_init(void) printk(version); #endif - return pci_module_init(&fealnx_driver); + return pci_register_driver(&fealnx_driver); } static void __exit fealnx_exit(void) --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -2720,7 +2720,7 @@ static struct pci_driver driver = { static int __init init_nic(void) { printk(KERN_INFO "forcedeth.c: Reverse Engineered nForce ethernet driver. Version %s.\n", FORCEDETH_VERSION); - return pci_module_init(&driver); + return pci_register_driver(&driver); } static void __exit exit_nic(void) --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -3260,7 +3260,7 @@ static int __init natsemi_init_mod (void printk(version); #endif - return pci_module_init (&natsemi_driver); + return pci_register_driver (&natsemi_driver); } static void __exit natsemi_exit_mod (void) --- a/drivers/net/ne2k-pci.c +++ b/drivers/net/ne2k-pci.c @@ -703,7 +703,7 @@ static int __init ne2k_pci_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init (&ne2k_driver); + return pci_register_driver (&ne2k_driver); } --- a/drivers/net/pci-skeleton.c +++ b/drivers/net/pci-skeleton.c @@ -1963,7 +1963,7 @@ static int __init netdrv_init_module (vo #ifdef MODULE printk(version); #endif - return pci_module_init (&netdrv_pci_driver); + return pci_register_driver (&netdrv_pci_driver); } --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c @@ -2513,7 +2513,7 @@ static int __init pcnet32_init_module(vo tx_start = tx_start_pt; /* find the PCI devices */ - if (!pci_module_init(&pcnet32_driver)) + if (!pci_register_driver(&pcnet32_driver)) pcnet32_have_pci = 1; /* should we find any remaining VLbus devices ? */ --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -2713,7 +2713,7 @@ static struct pci_driver rtl8169_pci_dri static int __init rtl8169_init_module(void) { - return pci_module_init(&rtl8169_pci_driver); + return pci_register_driver(&rtl8169_pci_driver); } static void __exit --- a/drivers/net/rrunner.c +++ b/drivers/net/rrunner.c @@ -1737,7 +1737,7 @@ static struct pci_driver rr_driver = { static int __init rr_init_module(void) { - return pci_module_init(&rr_driver); + return pci_register_driver(&rr_driver); } static void __exit rr_cleanup_module(void) --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c @@ -5351,7 +5351,7 @@ static void s2io_set_link(unsigned long DBG_PRINT(ERR_DBG, " Link down"); DBG_PRINT(ERR_DBG, "after "); DBG_PRINT(ERR_DBG, "enabling "); - DBG_PRINT(ERR_DBG, "device \n"); + DBG_PRINT(ERR_DBG, "device\n"); } } if (nic->device_enabled_once == FALSE) { @@ -6297,7 +6297,7 @@ static void __devexit s2io_rem_nic(struc int __init s2io_starter(void) { - return pci_module_init(&s2io_driver); + return pci_register_driver(&s2io_driver); } /** --- a/drivers/net/saa9730.c +++ b/drivers/net/saa9730.c @@ -1131,7 +1131,7 @@ static struct pci_driver saa9730_driver static int __init saa9730_init(void) { - return pci_module_init(&saa9730_driver); + return pci_register_driver(&saa9730_driver); } static void __exit saa9730_cleanup(void) --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c @@ -1483,7 +1483,7 @@ static void sis900_read_mode(struct net_ } if(netif_msg_link(sis_priv)) - printk(KERN_INFO "%s: Media Link On %s %s-duplex \n", + printk(KERN_INFO "%s: Media Link On %s %s-duplex\n", net_dev->name, *speed == HW_SPEED_100_MBPS ? "100mbps" : "10mbps", @@ -1507,7 +1507,7 @@ static void sis900_tx_timeout(struct net int i; if(netif_msg_tx_err(sis_priv)) - printk(KERN_INFO "%s: Transmit timeout, status %8.8x %8.8x \n", + printk(KERN_INFO "%s: Transmit timeout, status %8.8x %8.8x\n", net_dev->name, inl(ioaddr + cr), inl(ioaddr + isr)); /* Disable interrupts by clearing the interrupt mask. */ @@ -2410,7 +2410,7 @@ static int __init sis900_init_module(voi printk(version); #endif - return pci_module_init(&sis900_pci_driver); + return pci_register_driver(&sis900_pci_driver); } static void __exit sis900_cleanup_module(void) --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -2137,7 +2137,7 @@ static int __init starfire_init (void) return -ENODEV; } - return pci_module_init (&starfire_driver); + return pci_register_driver (&starfire_driver); } --- a/drivers/net/sundance.c +++ b/drivers/net/sundance.c @@ -1806,7 +1806,7 @@ static int __init sundance_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&sundance_driver); + return pci_register_driver(&sundance_driver); } static void __exit sundance_exit(void) --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c @@ -3190,7 +3190,7 @@ static struct pci_driver gem_driver = { static int __init gem_init(void) { - return pci_module_init(&gem_driver); + return pci_register_driver(&gem_driver); } static void __exit gem_cleanup(void) --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c @@ -1725,7 +1725,7 @@ static struct pci_driver tc35815_driver static int __init tc35815_init_module(void) { - return pci_module_init(&tc35815_driver); + return pci_register_driver(&tc35815_driver); } static void __exit tc35815_cleanup_module(void) --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -10745,7 +10745,7 @@ static int __devinit tg3_init_one(struct printk(KERN_INFO "%s: RXcsums[%d] LinkChgREG[%d] " "MIirq[%d] ASF[%d] Split[%d] WireSpeed[%d] " - "TSOcap[%d] \n", + "TSOcap[%d]\n", dev->name, (tp->tg3_flags & TG3_FLAG_RX_CHECKSUMS) != 0, (tp->tg3_flags & TG3_FLAG_USE_LINKCHG_REG) != 0, @@ -10879,7 +10879,7 @@ static struct pci_driver tg3_driver = { static int __init tg3_init(void) { - return pci_module_init(&tg3_driver); + return pci_register_driver(&tg3_driver); } static void __exit tg3_cleanup(void) --- a/drivers/net/typhoon.c +++ b/drivers/net/typhoon.c @@ -2659,7 +2659,7 @@ static struct pci_driver typhoon_driver static int __init typhoon_init(void) { - return pci_module_init(&typhoon_driver); + return pci_register_driver(&typhoon_driver); } static void __exit --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c @@ -2049,7 +2049,7 @@ static int __init rhine_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&rhine_driver); + return pci_register_driver(&rhine_driver); } --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c @@ -2241,7 +2241,7 @@ static int __init velocity_init_module(v int ret; velocity_register_notifier(); - ret = pci_module_init(&velocity_driver); + ret = pci_register_driver(&velocity_driver); if (ret < 0) velocity_unregister_notifier(); return ret; --- a/drivers/net/yellowfin.c +++ b/drivers/net/yellowfin.c @@ -1474,7 +1474,7 @@ static int __init yellowfin_init (void) #ifdef MODULE printk(version); #endif - return pci_module_init (&yellowfin_driver); + return pci_register_driver (&yellowfin_driver); } --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -1429,7 +1429,7 @@ out: u16 val16; pci_read_config_word(bp->pdev, PCI_STATUS, &val16); - printk("DEBUG: PCI status [%04x] \n", val16); + printk("DEBUG: PCI status [%04x]\n", val16); } #endif @@ -2138,7 +2138,7 @@ static int __init b44_init(void) dma_desc_align_mask = ~(dma_desc_align_size - 1); dma_desc_sync_size = max(dma_desc_align_size, sizeof(struct dma_desc)); - return pci_module_init(&b44_driver); + return pci_register_driver(&b44_driver); } static void __exit b44_cleanup(void) --- a/drivers/net/arcnet/com20020-pci.c +++ b/drivers/net/arcnet/com20020-pci.c @@ -177,7 +177,7 @@ static struct pci_driver com20020pci_dri static int __init com20020pci_init(void) { BUGLVL(D_NORMAL) printk(VERSION); - return pci_module_init(&com20020pci_driver); + return pci_register_driver(&com20020pci_driver); } static void __exit com20020pci_cleanup(void) --- a/drivers/net/irda/donauboe.c +++ b/drivers/net/irda/donauboe.c @@ -1778,7 +1778,7 @@ static struct pci_driver donauboe_pci_dr static int __init donauboe_init (void) { - return pci_module_init(&donauboe_pci_driver); + return pci_register_driver(&donauboe_pci_driver); } static void __exit --- a/drivers/net/irda/vlsi_ir.c +++ b/drivers/net/irda/vlsi_ir.c @@ -1749,7 +1749,7 @@ static int vlsi_irda_suspend(struct pci_ vlsi_irda_dev_t *idev; if (!ndev) { - IRDA_ERROR("%s - %s: no netdevice \n", + IRDA_ERROR("%s - %s: no netdevice\n", __FUNCTION__, PCIDEV_NAME(pdev)); return 0; } @@ -1788,7 +1788,7 @@ static int vlsi_irda_resume(struct pci_d vlsi_irda_dev_t *idev; if (!ndev) { - IRDA_ERROR("%s - %s: no netdevice \n", + IRDA_ERROR("%s - %s: no netdevice\n", __FUNCTION__, PCIDEV_NAME(pdev)); return 0; } @@ -1887,7 +1887,7 @@ static int __init vlsi_mod_init(void) vlsi_proc_root->owner = THIS_MODULE; } - ret = pci_module_init(&vlsi_irda_driver); + ret = pci_register_driver(&vlsi_irda_driver); if (ret && vlsi_proc_root) remove_proc_entry(PROC_DIR, NULL); --- a/drivers/net/skfp/skfddi.c +++ b/drivers/net/skfp/skfddi.c @@ -2280,7 +2280,7 @@ static struct pci_driver skfddi_pci_driv static int __init skfd_init(void) { - return pci_module_init(&skfddi_pci_driver); + return pci_register_driver(&skfddi_pci_driver); } static void __exit skfd_exit(void) --- a/drivers/net/tokenring/3c359.c +++ b/drivers/net/tokenring/3c359.c @@ -74,7 +74,7 @@ static char version[] __devinitdata = "3c359.c v1.2.0 2/17/01 - Mike Phillips (mikep@linuxtr.net)" ; MODULE_AUTHOR("Mike Phillips ") ; -MODULE_DESCRIPTION("3Com 3C359 Velocity XL Token Ring Adapter Driver \n") ; +MODULE_DESCRIPTION("3Com 3C359 Velocity XL Token Ring Adapter Driver\n") ; /* Module paramters */ @@ -108,7 +108,7 @@ MODULE_PARM_DESC(pkt_buf_sz,"3c359: Init static int message_level[XL_MAX_ADAPTERS] = {0,} ; module_param_array(message_level, int, NULL, 0) ; -MODULE_PARM_DESC(message_level, "3c359: Level of reported messages \n") ; +MODULE_PARM_DESC(message_level, "3c359: Level of reported messages\n") ; /* * This is a real nasty way of doing this, but otherwise you * will be stuck with 1555 lines of hex #'s in the code. @@ -162,19 +162,19 @@ static void print_tx_state(struct net_de u8 __iomem *xl_mmio = xl_priv->xl_mmio ; int i ; - printk("tx_ring_head: %d, tx_ring_tail: %d, free_ent: %d \n",xl_priv->tx_ring_head, + printk("tx_ring_head: %d, tx_ring_tail: %d, free_ent: %d\n",xl_priv->tx_ring_head, xl_priv->tx_ring_tail, xl_priv->free_ring_entries) ; - printk("Ring , Address , FSH , DnNextPtr, Buffer, Buffer_Len \n"); + printk("Ring , Address , FSH , DnNextPtr, Buffer, Buffer_Len\n"); for (i = 0; i < 16; i++) { txd = &(xl_priv->xl_tx_ring[i]) ; - printk("%d, %08lx, %08x, %08x, %08x, %08x \n", i, virt_to_bus(txd), + printk("%d, %08lx, %08x, %08x, %08x, %08x\n", i, virt_to_bus(txd), txd->framestartheader, txd->dnnextptr, txd->buffer, txd->buffer_length ) ; } - printk("DNLISTPTR = %04x \n", readl(xl_mmio + MMIO_DNLISTPTR) ); + printk("DNLISTPTR = %04x\n", readl(xl_mmio + MMIO_DNLISTPTR) ); - printk("DmaCtl = %04x \n", readl(xl_mmio + MMIO_DMA_CTRL) ); - printk("Queue status = %0x \n",netif_running(dev) ) ; + printk("DmaCtl = %04x\n", readl(xl_mmio + MMIO_DMA_CTRL) ); + printk("Queue status = %0x\n",netif_running(dev) ) ; } static void print_rx_state(struct net_device *dev) @@ -185,19 +185,19 @@ static void print_rx_state(struct net_de u8 __iomem *xl_mmio = xl_priv->xl_mmio ; int i ; - printk("rx_ring_tail: %d \n", xl_priv->rx_ring_tail) ; - printk("Ring , Address , FrameState , UPNextPtr, FragAddr, Frag_Len \n"); + printk("rx_ring_tail: %d\n", xl_priv->rx_ring_tail) ; + printk("Ring , Address , FrameState , UPNextPtr, FragAddr, Frag_Len\n"); for (i = 0; i < 16; i++) { /* rxd = (struct xl_rx_desc *)xl_priv->rx_ring_dma_addr + (i * sizeof(struct xl_rx_desc)) ; */ rxd = &(xl_priv->xl_rx_ring[i]) ; - printk("%d, %08lx, %08x, %08x, %08x, %08x \n", i, virt_to_bus(rxd), + printk("%d, %08lx, %08x, %08x, %08x, %08x\n", i, virt_to_bus(rxd), rxd->framestatus, rxd->upnextptr, rxd->upfragaddr, rxd->upfraglen ) ; } - printk("UPLISTPTR = %04x \n", readl(xl_mmio + MMIO_UPLISTPTR) ); + printk("UPLISTPTR = %04x\n", readl(xl_mmio + MMIO_UPLISTPTR) ); - printk("DmaCtl = %04x \n", readl(xl_mmio + MMIO_DMA_CTRL) ); - printk("Queue status = %0x \n",netif_running(dev) ) ; + printk("DmaCtl = %04x\n", readl(xl_mmio + MMIO_DMA_CTRL) ); + printk("Queue status = %0x\n",netif_running(dev) ) ; } #endif @@ -368,7 +368,7 @@ static int __init xl_init(struct net_dev { struct xl_private *xl_priv = (struct xl_private *)dev->priv ; - printk(KERN_INFO "%s \n", version); + printk(KERN_INFO "%s\n", version); printk(KERN_INFO "%s: I/O at %hx, MMIO at %p, using irq %d\n", xl_priv->xl_card_name, (unsigned int)dev->base_addr ,xl_priv->xl_mmio, dev->irq); @@ -434,7 +434,7 @@ static int xl_hw_reset(struct net_device writel( (IO_WORD_READ | PMBAR),xl_mmio + MMIO_MAC_ACCESS_CMD); #if XL_DEBUG - printk(KERN_INFO "Read from PMBAR = %04x \n", readw(xl_mmio + MMIO_MACDATA)) ; + printk(KERN_INFO "Read from PMBAR = %04x\n", readw(xl_mmio + MMIO_MACDATA)) ; #endif if ( readw( (xl_mmio + MMIO_MACDATA)) & PMB_CPHOLD ) { @@ -557,9 +557,9 @@ static int xl_hw_reset(struct net_device #if XL_DEBUG writel(IO_WORD_READ | SWITCHSETTINGS, xl_mmio + MMIO_MAC_ACCESS_CMD) ; if ( readw(xl_mmio + MMIO_MACDATA) & 2) { - printk(KERN_INFO "Default ring speed 4 mbps \n") ; + printk(KERN_INFO "Default ring speed 4 mbps\n") ; } else { - printk(KERN_INFO "Default ring speed 16 mbps \n") ; + printk(KERN_INFO "Default ring speed 16 mbps\n") ; } printk(KERN_INFO "%s: xl_priv->srb = %04x\n",xl_priv->xl_card_name, xl_priv->srb); #endif @@ -621,7 +621,7 @@ static int xl_open(struct net_device *de if (open_err != 0) { /* Something went wrong with the open command */ if (open_err & 0x07) { /* Wrong speed, retry at different speed */ - printk(KERN_WARNING "%s: Open Error, retrying at different ringspeed \n", dev->name) ; + printk(KERN_WARNING "%s: Open Error, retrying at different ringspeed\n", dev->name) ; switchsettings = switchsettings ^ 2 ; xl_ee_write(dev,0x08,switchsettings) ; xl_hw_reset(dev) ; @@ -675,7 +675,7 @@ static int xl_open(struct net_device *de } if (i==0) { - printk(KERN_WARNING "%s: Not enough memory to allocate rx buffers. Adapter disabled \n",dev->name) ; + printk(KERN_WARNING "%s: Not enough memory to allocate rx buffers. Adapter disabled\n",dev->name) ; free_irq(dev->irq,dev) ; return -EIO ; } @@ -823,7 +823,7 @@ static int xl_open_hw(struct net_device writel( (MEM_WORD_READ | 0xD0000 | xl_priv->srb) + 12, xl_mmio + MMIO_MAC_ACCESS_CMD) ; xl_priv->arb = ntohs(readw(xl_mmio + MMIO_MACDATA)) ; - printk(", ARB: %04x \n",xl_priv->arb ) ; + printk(", ARB: %04x\n",xl_priv->arb ) ; writel( (MEM_WORD_READ | 0xD0000 | xl_priv->srb) + 14, xl_mmio + MMIO_MAC_ACCESS_CMD) ; vsoff = ntohs(readw(xl_mmio + MMIO_MACDATA)) ; @@ -837,7 +837,7 @@ static int xl_open_hw(struct net_device ver_str[i] = readb(xl_mmio + MMIO_MACDATA) ; } ver_str[i] = '\0' ; - printk(KERN_INFO "%s: Microcode version String: %s \n",dev->name,ver_str); + printk(KERN_INFO "%s: Microcode version String: %s\n",dev->name,ver_str); } /* @@ -961,7 +961,7 @@ static void xl_rx(struct net_device *dev skb = dev_alloc_skb(xl_priv->pkt_buf_sz) ; if (skb==NULL) { /* Still need to fix the rx ring */ - printk(KERN_WARNING "%s: dev_alloc_skb failed in rx, single buffer \n",dev->name) ; + printk(KERN_WARNING "%s: dev_alloc_skb failed in rx, single buffer\n",dev->name) ; adv_rx_ring(dev) ; xl_priv->xl_stats.rx_dropped++ ; writel(ACK_INTERRUPT | UPCOMPACK | LATCH_ACK , xl_mmio + MMIO_COMMAND) ; @@ -1070,7 +1070,7 @@ static irqreturn_t xl_interrupt(int irq, */ if (intstatus == 0x0001) { writel(ACK_INTERRUPT | LATCH_ACK, xl_mmio + MMIO_COMMAND) ; - printk(KERN_INFO "%s: 00001 int received \n",dev->name) ; + printk(KERN_INFO "%s: 00001 int received\n",dev->name) ; } else { if (intstatus & (HOSTERRINT | SRBRINT | ARBCINT | UPCOMPINT | DNCOMPINT | HARDERRINT | (1<<8) | TXUNDERRUN | ASBFINT)) { @@ -1081,9 +1081,9 @@ static irqreturn_t xl_interrupt(int irq, */ if (intstatus & HOSTERRINT) { - printk(KERN_WARNING "%s: Host Error, performing global reset, intstatus = %04x \n",dev->name,intstatus) ; + printk(KERN_WARNING "%s: Host Error, performing global reset, intstatus = %04x\n",dev->name,intstatus) ; writew( GLOBAL_RESET, xl_mmio + MMIO_COMMAND ) ; - printk(KERN_WARNING "%s: Resetting hardware: \n", dev->name); + printk(KERN_WARNING "%s: Resetting hardware:\n", dev->name); netif_stop_queue(dev) ; xl_freemem(dev) ; free_irq(dev->irq,dev); @@ -1106,7 +1106,7 @@ static irqreturn_t xl_interrupt(int irq, Must put a timeout check here ! */ /* Empty Loop */ } - printk(KERN_WARNING "%s: TX Underrun received \n",dev->name) ; + printk(KERN_WARNING "%s: TX Underrun received\n",dev->name) ; writel(ACK_INTERRUPT | LATCH_ACK, xl_mmio + MMIO_COMMAND) ; } /* TxUnderRun */ @@ -1135,13 +1135,13 @@ static irqreturn_t xl_interrupt(int irq, macstatus = readw(xl_mmio + MMIO_MACDATA) ; printk(KERN_WARNING "%s: MacStatusError, details: ", dev->name); if (macstatus & (1<<14)) - printk(KERN_WARNING "tchk error: Unrecoverable error \n") ; + printk(KERN_WARNING "tchk error: Unrecoverable error\n") ; if (macstatus & (1<<3)) - printk(KERN_WARNING "eint error: Internal watchdog timer expired \n") ; + printk(KERN_WARNING "eint error: Internal watchdog timer expired\n") ; if (macstatus & (1<<2)) - printk(KERN_WARNING "aint error: Host tried to perform invalid operation \n") ; + printk(KERN_WARNING "aint error: Host tried to perform invalid operation\n") ; printk(KERN_WARNING "Instatus = %02x, macstatus = %02x\n",intstatus,macstatus) ; - printk(KERN_WARNING "%s: Resetting hardware: \n", dev->name); + printk(KERN_WARNING "%s: Resetting hardware:\n", dev->name); netif_stop_queue(dev) ; xl_freemem(dev) ; free_irq(dev->irq,dev); @@ -1153,7 +1153,7 @@ static irqreturn_t xl_interrupt(int irq, return IRQ_HANDLED; } } else { - printk(KERN_WARNING "%s: Received Unknown interrupt : %04x \n", dev->name, intstatus) ; + printk(KERN_WARNING "%s: Received Unknown interrupt : %04x\n", dev->name, intstatus) ; writel(ACK_INTERRUPT | LATCH_ACK, xl_mmio + MMIO_COMMAND) ; } } @@ -1328,11 +1328,11 @@ static int xl_close(struct net_device *d writel(MEM_BYTE_READ | 0xd0000 | xl_priv->srb, xl_mmio + MMIO_MAC_ACCESS_CMD); if (readb(xl_mmio + MMIO_MACDATA) != CLOSE_NIC) { - printk(KERN_INFO "%s: CLOSE_NIC did not get a CLOSE_NIC response \n",dev->name) ; + printk(KERN_INFO "%s: CLOSE_NIC did not get a CLOSE_NIC response\n",dev->name) ; } else { writel((MEM_BYTE_READ | 0xd0000 | xl_priv->srb) +2, xl_mmio + MMIO_MAC_ACCESS_CMD) ; if (readb(xl_mmio + MMIO_MACDATA)==0) { - printk(KERN_INFO "%s: Adapter has been closed \n",dev->name) ; + printk(KERN_INFO "%s: Adapter has been closed\n",dev->name) ; writew(ACK_INTERRUPT | SRBRACK | LATCH_ACK, xl_mmio + MMIO_COMMAND) ; xl_freemem(dev) ; @@ -1426,11 +1426,11 @@ static void xl_srb_bh(struct net_device printk(KERN_INFO "%s: Command: %d - Invalid Command code\n",dev->name,srb_cmd) ; break ; case 4: - printk(KERN_INFO "%s: Command: %d - Adapter is closed, must be open for this command \n",dev->name,srb_cmd) ; + printk(KERN_INFO "%s: Command: %d - Adapter is closed, must be open for this command\n",dev->name,srb_cmd) ; break ; case 6: - printk(KERN_INFO "%s: Command: %d - Options Invalid for command \n",dev->name,srb_cmd) ; + printk(KERN_INFO "%s: Command: %d - Options Invalid for command\n",dev->name,srb_cmd) ; break ; case 0: /* Successful command execution */ @@ -1451,11 +1451,11 @@ static void xl_srb_bh(struct net_device break ; case SET_FUNC_ADDRESS: if(xl_priv->xl_message_level) - printk(KERN_INFO "%s: Functional Address Set \n",dev->name) ; + printk(KERN_INFO "%s: Functional Address Set\n",dev->name) ; break ; case CLOSE_NIC: if(xl_priv->xl_message_level) - printk(KERN_INFO "%s: Received CLOSE_NIC interrupt in interrupt handler \n",dev->name) ; + printk(KERN_INFO "%s: Received CLOSE_NIC interrupt in interrupt handler\n",dev->name) ; break ; case SET_MULTICAST_MODE: if(xl_priv->xl_message_level) @@ -1464,9 +1464,9 @@ static void xl_srb_bh(struct net_device case SET_RECEIVE_MODE: if(xl_priv->xl_message_level) { if (xl_priv->xl_copy_all_options == 0x0004) - printk(KERN_INFO "%s: Entering promiscuous mode \n", dev->name) ; + printk(KERN_INFO "%s: Entering promiscuous mode\n", dev->name) ; else - printk(KERN_INFO "%s: Entering normal receive mode \n",dev->name) ; + printk(KERN_INFO "%s: Entering normal receive mode\n",dev->name) ; } break ; @@ -1542,20 +1542,20 @@ static void xl_arb_cmd(struct net_device xl_freemem(dev) ; free_irq(dev->irq,dev); - printk(KERN_WARNING "%s: Adapter has been closed \n", dev->name) ; + printk(KERN_WARNING "%s: Adapter has been closed\n", dev->name) ; } /* If serious error */ if (xl_priv->xl_message_level) { if (lan_status_diff & LSC_SIG_LOSS) - printk(KERN_WARNING "%s: No receive signal detected \n", dev->name) ; + printk(KERN_WARNING "%s: No receive signal detected\n", dev->name) ; if (lan_status_diff & LSC_HARD_ERR) - printk(KERN_INFO "%s: Beaconing \n",dev->name); + printk(KERN_INFO "%s: Beaconing\n",dev->name); if (lan_status_diff & LSC_SOFT_ERR) - printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame \n",dev->name); + printk(KERN_WARNING "%s: Adapter transmitted Soft Error Report Mac Frame\n",dev->name); if (lan_status_diff & LSC_TRAN_BCN) printk(KERN_INFO "%s: We are tranmitting the beacon, aaah\n",dev->name); if (lan_status_diff & LSC_SS) - printk(KERN_INFO "%s: Single Station on the ring \n", dev->name); + printk(KERN_INFO "%s: Single Station on the ring\n", dev->name); if (lan_status_diff & LSC_RING_REC) printk(KERN_INFO "%s: Ring recovery ongoing\n",dev->name); if (lan_status_diff & LSC_FDX_MODE) @@ -1564,7 +1564,7 @@ static void xl_arb_cmd(struct net_device if (lan_status_diff & LSC_CO) { if (xl_priv->xl_message_level) - printk(KERN_INFO "%s: Counter Overflow \n", dev->name); + printk(KERN_INFO "%s: Counter Overflow\n", dev->name); /* Issue READ.LOG command */ xl_srb_cmd(dev, READ_LOG) ; } @@ -1580,7 +1580,7 @@ static void xl_arb_cmd(struct net_device } /* Lan.change.status */ else if ( arb_cmd == RECEIVE_DATA) { /* Received.Data */ #if XL_DEBUG - printk(KERN_INFO "Received.Data \n") ; + printk(KERN_INFO "Received.Data\n") ; #endif writel( ((MEM_WORD_READ | 0xD0000 | xl_priv->arb) + 6), xl_mmio + MMIO_MAC_ACCESS_CMD) ; xl_priv->mac_buffer = ntohs(readw(xl_mmio + MMIO_MACDATA)) ; @@ -1616,7 +1616,7 @@ static void xl_arb_cmd(struct net_device xl_asb_cmd(dev) ; } else { - printk(KERN_WARNING "%s: Received unknown arb (xl_priv) command: %02x \n",dev->name,arb_cmd) ; + printk(KERN_WARNING "%s: Received unknown arb (xl_priv) command: %02x\n",dev->name,arb_cmd) ; } /* Acknowledge the arb interrupt */ @@ -1673,13 +1673,13 @@ static void xl_asb_bh(struct net_device ret_code = readb(xl_mmio + MMIO_MACDATA) ; switch (ret_code) { case 0x01: - printk(KERN_INFO "%s: ASB Command, unrecognized command code \n",dev->name) ; + printk(KERN_INFO "%s: ASB Command, unrecognized command code\n",dev->name) ; break ; case 0x26: - printk(KERN_INFO "%s: ASB Command, unexpected receive buffer \n", dev->name) ; + printk(KERN_INFO "%s: ASB Command, unexpected receive buffer\n", dev->name) ; break ; case 0x40: - printk(KERN_INFO "%s: ASB Command, Invalid Station ID \n", dev->name) ; + printk(KERN_INFO "%s: ASB Command, Invalid Station ID\n", dev->name) ; break ; } xl_priv->asb_queued = 0 ; @@ -1816,7 +1816,7 @@ static struct pci_driver xl_3c359_driver static int __init xl_pci_init (void) { - return pci_module_init (&xl_3c359_driver); + return pci_register_driver (&xl_3c359_driver); } --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c @@ -2178,7 +2178,7 @@ static int __init de_init (void) #ifdef MODULE printk("%s", version); #endif - return pci_module_init (&de_driver); + return pci_register_driver (&de_driver); } static void __exit de_exit (void) --- a/drivers/net/tulip/de4x5.c +++ b/drivers/net/tulip/de4x5.c @@ -5119,7 +5119,7 @@ mii_get_phy(struct net_device *dev) lp->phy[k].spd.value = GENERIC_VALUE; /* TX & T4, H/F Duplex */ lp->mii_cnt++; lp->active++; - printk("%s: Using generic MII device control. If the board doesn't operate, \nplease mail the following dump to the author:\n", dev->name); + printk("%s: Using generic MII device control. If the board doesn't operate,\nplease mail the following dump to the author:\n", dev->name); j = de4x5_debug; de4x5_debug |= DEBUG_MII; de4x5_dbg_mii(dev, k); @@ -5413,7 +5413,7 @@ de4x5_dbg_open(struct net_device *dev) } } printk("...0x%8.8x\n", le32_to_cpu(lp->tx_ring[i].buf)); - printk("Ring size: \nRX: %d\nTX: %d\n", + printk("Ring size:\nRX: %d\nTX: %d\n", (short)lp->rxRingSize, (short)lp->txRingSize); } @@ -5755,7 +5755,7 @@ static int __init de4x5_module_init (voi int err = 0; #ifdef CONFIG_PCI - err = pci_module_init (&de4x5_pci_driver); + err = pci_register_driver (&de4x5_pci_driver); #endif #ifdef CONFIG_EISA err |= eisa_driver_register (&de4x5_eisa_driver); --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c @@ -2039,7 +2039,7 @@ static int __init dmfe_init_module(void) if (HPNA_NoiseFloor > 15) HPNA_NoiseFloor = 0; - rc = pci_module_init(&dmfe_driver); + rc = pci_register_driver(&dmfe_driver); if (rc < 0) return rc; --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c @@ -1854,7 +1854,7 @@ static int __init tulip_init (void) tulip_max_interrupt_work = max_interrupt_work; /* probe for and init boards */ - return pci_module_init (&tulip_driver); + return pci_register_driver (&tulip_driver); } --- a/drivers/net/tulip/winbond-840.c +++ b/drivers/net/tulip/winbond-840.c @@ -1705,7 +1705,7 @@ static struct pci_driver w840_driver = { static int __init w840_init(void) { printk(version); - return pci_module_init(&w840_driver); + return pci_register_driver(&w840_driver); } static void __exit w840_exit(void) --- a/drivers/net/tulip/xircom_tulip_cb.c +++ b/drivers/net/tulip/xircom_tulip_cb.c @@ -1727,7 +1727,7 @@ static int __init xircom_init(void) #ifdef MODULE printk(version); #endif - return pci_module_init(&xircom_driver); + return pci_register_driver(&xircom_driver); } --- a/drivers/net/wan/dscc4.c +++ b/drivers/net/wan/dscc4.c @@ -2061,7 +2061,7 @@ static struct pci_driver dscc4_driver = static int __init dscc4_init_module(void) { - return pci_module_init(&dscc4_driver); + return pci_register_driver(&dscc4_driver); } static void __exit dscc4_cleanup_module(void) --- a/drivers/net/wan/farsync.c +++ b/drivers/net/wan/farsync.c @@ -2697,7 +2697,7 @@ fst_init(void) for (i = 0; i < FST_MAX_CARDS; i++) fst_card_array[i] = NULL; spin_lock_init(&fst_work_q_lock); - return pci_module_init(&fst_driver); + return pci_register_driver(&fst_driver); } static void __exit --- a/drivers/net/wan/pc300_drv.c +++ b/drivers/net/wan/pc300_drv.c @@ -3677,7 +3677,7 @@ static struct pci_driver cpc_driver = { static int __init cpc_init(void) { - return pci_module_init(&cpc_driver); + return pci_register_driver(&cpc_driver); } static void __exit cpc_cleanup_module(void) --- a/drivers/net/wan/pci200syn.c +++ b/drivers/net/wan/pci200syn.c @@ -468,7 +468,7 @@ static int __init pci200_init_module(voi printk(KERN_ERR "pci200syn: Invalid PCI clock frequency\n"); return -EINVAL; } - return pci_module_init(&pci200_pci_driver); + return pci_register_driver(&pci200_pci_driver); } --- a/drivers/net/wan/wanxl.c +++ b/drivers/net/wan/wanxl.c @@ -822,7 +822,7 @@ static int __init wanxl_init_module(void #ifdef MODULE printk(KERN_INFO "%s\n", version); #endif - return pci_module_init(&wanxl_pci_driver); + return pci_register_driver(&wanxl_pci_driver); } static void __exit wanxl_cleanup_module(void) --- a/drivers/net/wan/lmc/lmc_main.c +++ b/drivers/net/wan/lmc/lmc_main.c @@ -1790,7 +1790,7 @@ static struct pci_driver lmc_driver = { static int __init init_lmc(void) { - return pci_module_init(&lmc_driver); + return pci_register_driver(&lmc_driver); } static void __exit exit_lmc(void) --- a/drivers/net/wireless/atmel_pci.c +++ b/drivers/net/wireless/atmel_pci.c @@ -77,7 +77,7 @@ static void __devexit atmel_pci_remove(s static int __init atmel_init_module(void) { - return pci_module_init(&atmel_driver); + return pci_register_driver(&atmel_driver); } static void __exit atmel_cleanup_module(void) --- a/drivers/net/wireless/orinoco_pci.c +++ b/drivers/net/wireless/orinoco_pci.c @@ -379,7 +379,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_pci_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_pci_driver); + return pci_register_driver(&orinoco_pci_driver); } static void __exit orinoco_pci_exit(void) --- a/drivers/net/wireless/orinoco_plx.c +++ b/drivers/net/wireless/orinoco_plx.c @@ -382,7 +382,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_plx_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_plx_driver); + return pci_register_driver(&orinoco_plx_driver); } static void __exit orinoco_plx_exit(void) --- a/drivers/net/wireless/orinoco_tmd.c +++ b/drivers/net/wireless/orinoco_tmd.c @@ -239,7 +239,7 @@ MODULE_LICENSE("Dual MPL/GPL"); static int __init orinoco_tmd_init(void) { printk(KERN_DEBUG "%s\n", version); - return pci_module_init(&orinoco_tmd_driver); + return pci_register_driver(&orinoco_tmd_driver); } static void __exit orinoco_tmd_exit(void) --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c @@ -329,7 +329,7 @@ static int __devinit parport_register (s if (priv->num_par == ARRAY_SIZE (priv->port)) { printk (KERN_WARNING - "parport_serial: %s: only %u parallel ports " + "parport_serial: %s: only %zu parallel ports " "supported (%d reported)\n", pci_name (dev), ARRAY_SIZE (priv->port), card->numports); break; @@ -464,7 +464,7 @@ static struct pci_driver parport_serial_ static int __init parport_serial_init (void) { - return pci_module_init (&parport_serial_pci_driver); + return pci_register_driver (&parport_serial_pci_driver); } static void __exit parport_serial_exit (void) --- a/sound/pci/au88x0/au88x0.c +++ b/sound/pci/au88x0/au88x0.c @@ -20,6 +20,7 @@ #include #include #include +#include #include // module parameters (see "Module Parameters") @@ -150,11 +151,10 @@ snd_vortex_create(snd_card_t * card, str // check PCI availability (DMA). if ((err = pci_enable_device(pci)) < 0) return err; - if (!pci_dma_supported(pci, VORTEX_DMA_MASK)) { + if (pci_set_dma_mask(pci, DMA_32BIT_MASK)) { printk(KERN_ERR "error to set DMA mask\n"); return -ENXIO; } - pci_set_dma_mask(pci, VORTEX_DMA_MASK); chip = kzalloc(sizeof(*chip), GFP_KERNEL); if (chip == NULL) --- a/sound/pci/au88x0/au88x0.h +++ b/sound/pci/au88x0/au88x0.h @@ -39,8 +39,6 @@ #include "au88x0_wt.h" #endif -#define VORTEX_DMA_MASK 0xffffffff - #define hwread(x,y) readl((x)+((y)>>2)) #define hwwrite(x,y,z) writel((z),(x)+((y)>>2)) --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -408,7 +408,7 @@ static inline void add_aggr_kprobe(struc /* * This is the second or subsequent kprobe at the address - handle * the intricacies - * TODO: Move kcalloc outside the spin_lock + * TODO: Move kzalloc outside the spin_lock */ static int __kprobes register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p) @@ -420,7 +420,7 @@ static int __kprobes register_aggr_kprob copy_kprobe(old_p, p); ret = add_new_kprobe(old_p, p); } else { - ap = kcalloc(1, sizeof(struct kprobe), GFP_ATOMIC); + ap = kzalloc(sizeof(struct kprobe), GFP_ATOMIC); if (!ap) return -ENOMEM; add_aggr_kprobe(ap, old_p); --- a/drivers/cdrom/sonycd535.c +++ b/drivers/cdrom/sonycd535.c @@ -129,6 +129,7 @@ #include #include #include +#include #define REALLY_SLOW_IO #include @@ -896,9 +897,8 @@ do_cdu535_request(request_queue_t * q) } if (readStatus == BAD_STATUS) { /* Sleep for a while, then retry */ - set_current_state(TASK_INTERRUPTIBLE); spin_unlock_irq(&sonycd535_lock); - schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10); + msleep(RETRY_FOR_BAD_STATUS*100); spin_lock_irq(&sonycd535_lock); } #if DEBUG > 0 --- a/drivers/block/swim3.c +++ b/drivers/block/swim3.c @@ -821,13 +821,15 @@ static void release_drive(struct floppy_ static int fd_eject(struct floppy_state *fs) { - int err, n; + int err; + unsigned long end_jiffies; err = grab_drive(fs, ejecting, 1); if (err) return err; swim3_action(fs, EJECT); - for (n = 20; n > 0; --n) { + end_jiffies = jiffies + 20; + while (time_before(jiffies, end_jiffies)) { if (signal_pending(current)) { err = -EINTR; break; @@ -880,7 +882,8 @@ static int floppy_open(struct inode *ino { struct floppy_state *fs = inode->i_bdev->bd_disk->private_data; struct swim3 __iomem *sw = fs->swim3; - int n, err = 0; + int err = 0; + unsigned long end_jiffies, check_jiffies; if (fs->ref_count == 0) { #ifdef CONFIG_PMAC_MEDIABAY @@ -896,8 +899,11 @@ static int floppy_open(struct inode *ino swim3_action(fs, MOTOR_ON); fs->write_prot = -1; fs->cur_cyl = -1; - for (n = 0; n < 2 * HZ; ++n) { - if (n >= HZ/30 && swim3_readbit(fs, SEEK_COMPLETE)) + end_jiffies = jiffies + 2 * HZ; + check_jiffies = jiffies + HZ/30; + while (time_before(jiffies, end_jiffies)) { + if (time_after(jiffies, check_jiffies) && + swim3_readbit(fs, SEEK_COMPLETE)) break; if (signal_pending(current)) { err = -EINTR; @@ -968,7 +974,8 @@ static int floppy_revalidate(struct gend { struct floppy_state *fs = disk->private_data; struct swim3 __iomem *sw; - int ret, n; + int ret; + unsigned long end_jiffies; #ifdef CONFIG_PMAC_MEDIABAY if (fs->media_bay && check_media_bay(fs->media_bay, MB_FD)) @@ -983,7 +990,8 @@ static int floppy_revalidate(struct gend fs->write_prot = -1; fs->cur_cyl = -1; mdelay(1); - for (n = HZ; n > 0; --n) { + end_jiffies = jiffies + HZ; + while (time_before(jiffies, end_jiffies)) { if (swim3_readbit(fs, SEEK_COMPLETE)) break; if (signal_pending(current)) --- a/drivers/block/ps2esdi.c +++ b/drivers/block/ps2esdi.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include @@ -460,8 +461,7 @@ static void __init ps2esdi_get_device_cf cmd_blk[1] = 0; no_int_yet = TRUE; ps2esdi_out_cmd_blk(cmd_blk); - if (no_int_yet) - sleep_on(&ps2esdi_int); + wait_event(ps2esdi_int, !no_int_yet); if (ps2esdi_drives > 1) { printk("%s: Drive 1\n", DEVICE_NAME); /*BA */ @@ -469,8 +469,7 @@ static void __init ps2esdi_get_device_cf cmd_blk[1] = 0; no_int_yet = TRUE; ps2esdi_out_cmd_blk(cmd_blk); - if (no_int_yet) - sleep_on(&ps2esdi_int); + wait_event(ps2esdi_int, !no_int_yet); } /* if second physical drive is present */ return; } --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -675,13 +675,8 @@ capi_read(struct file *file, char __user if (file->f_flags & O_NONBLOCK) return -EAGAIN; - for (;;) { - interruptible_sleep_on(&cdev->recvwait); - if ((skb = skb_dequeue(&cdev->recvqueue)) != 0) - break; - if (signal_pending(current)) - break; - } + wait_event_interruptible(cdev->recvwait, + ((skb = skb_dequeue(&cdev->recvqueue)) == 0)); if (skb == 0) return -ERESTARTNOHAND; } --- a/drivers/isdn/i4l/isdn_common.c +++ b/drivers/isdn/i4l/isdn_common.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "isdn_common.h" #include "isdn_tty.h" #include "isdn_net.h" @@ -1065,8 +1066,8 @@ isdn_write(struct file *file, const char goto out; } chidx = isdn_minor2chan(minor); - while (isdn_writebuf_stub(drvidx, chidx, buf, count) != count) - interruptible_sleep_on(&dev->drv[drvidx]->snd_waitq[chidx]); + wait_event(dev->drv[drvidx]->snd_waitq[chidx], + (isdn_writebuf_stub(drvidx, chidx, buf, count) == count)); retval = count; goto out; } --- a/arch/ppc/4xx_io/serial_sicc.c +++ b/arch/ppc/4xx_io/serial_sicc.c @@ -59,125 +59,121 @@ #include #include - #include - /* ----------------------------------------------------------------------------- * From STB03xxx SICC UART Specification * ----------------------------------------------------------------------------- * UART Register Offsets. */ -#define BL_SICC_LSR 0x0000000 /* line status register read/clear */ -#define BL_SICC_LSRS 0x0000001 /* set line status register read/set */ -#define BL_SICC_HSR 0x0000002 /* handshake status register r/clear */ -#define BL_SICC_HSRS 0x0000003 /* set handshake status register r/set */ -#define BL_SICC_BRDH 0x0000004 /* baudrate divisor high reg r/w */ -#define BL_SICC_BRDL 0x0000005 /* baudrate divisor low reg r/w */ -#define BL_SICC_LCR 0x0000006 /* control register r/w */ -#define BL_SICC_RCR 0x0000007 /* receiver command register r/w */ -#define BL_SICC_TxCR 0x0000008 /* transmitter command register r/w */ -#define BL_SICC_RBR 0x0000009 /* receive buffer r */ -#define BL_SICC_TBR 0x0000009 /* transmit buffer w */ -#define BL_SICC_CTL2 0x000000A /* added for Vesta */ -#define BL_SICC_IrCR 0x000000B /* added for Vesta IR */ +#define BL_SICC_LSR 0x0000000 /* line status register read/clear */ +#define BL_SICC_LSRS 0x0000001 /* set line status register read/set */ +#define BL_SICC_HSR 0x0000002 /* handshake status register r/clear */ +#define BL_SICC_HSRS 0x0000003 /* set handshake status register r/set */ +#define BL_SICC_BRDH 0x0000004 /* baudrate divisor high reg r/w */ +#define BL_SICC_BRDL 0x0000005 /* baudrate divisor low reg r/w */ +#define BL_SICC_LCR 0x0000006 /* control register r/w */ +#define BL_SICC_RCR 0x0000007 /* receiver command register r/w */ +#define BL_SICC_TxCR 0x0000008 /* transmitter command register r/w */ +#define BL_SICC_RBR 0x0000009 /* receive buffer r */ +#define BL_SICC_TBR 0x0000009 /* transmit buffer w */ +#define BL_SICC_CTL2 0x000000A /* added for Vesta */ +#define BL_SICC_IrCR 0x000000B /* added for Vesta IR */ /* masks and definitions for serial port control register */ -#define _LCR_LM_MASK 0xc0 /* loop back modes */ -#define _LCR_DTR_MASK 0x20 /* data terminal ready 0-inactive */ -#define _LCR_RTS_MASK 0x10 /* request to send 0-inactive */ -#define _LCR_DB_MASK 0x08 /* data bits mask */ -#define _LCR_PE_MASK 0x04 /* parity enable */ -#define _LCR_PTY_MASK 0x02 /* parity */ -#define _LCR_SB_MASK 0x01 /* stop bit mask */ - -#define _LCR_LM_NORM 0x00 /* normal operation */ -#define _LCR_LM_LOOP 0x40 /* internal loopback mode */ -#define _LCR_LM_ECHO 0x80 /* automatic echo mode */ -#define _LCR_LM_RES 0xc0 /* reserved */ - -#define _LCR_DTR_ACTIVE _LCR_DTR_MASK /* DTR is active */ -#define _LCR_RTS_ACTIVE _LCR_RTS_MASK /* RTS is active */ -#define _LCR_DB_8_BITS _LCR_DB_MASK /* 8 data bits */ -#define _LCR_DB_7_BITS 0x00 /* 7 data bits */ -#define _LCR_PE_ENABLE _LCR_PE_MASK /* parity enabled */ -#define _LCR_PE_DISABLE 0x00 /* parity disabled */ -#define _LCR_PTY_EVEN 0x00 /* even parity */ -#define _LCR_PTY_ODD _LCR_PTY_MASK /* odd parity */ -#define _LCR_SB_1_BIT 0x00 /* one stop bit */ -#define _LCR_SB_2_BIT _LCR_SB_MASK /* two stop bit */ +#define _LCR_LM_MASK 0xc0 /* loop back modes */ +#define _LCR_DTR_MASK 0x20 /* data terminal ready 0-inactive */ +#define _LCR_RTS_MASK 0x10 /* request to send 0-inactive */ +#define _LCR_DB_MASK 0x08 /* data bits mask */ +#define _LCR_PE_MASK 0x04 /* parity enable */ +#define _LCR_PTY_MASK 0x02 /* parity */ +#define _LCR_SB_MASK 0x01 /* stop bit mask */ + +#define _LCR_LM_NORM 0x00 /* normal operation */ +#define _LCR_LM_LOOP 0x40 /* internal loopback mode */ +#define _LCR_LM_ECHO 0x80 /* automatic echo mode */ +#define _LCR_LM_RES 0xc0 /* reserved */ + +#define _LCR_DTR_ACTIVE _LCR_DTR_MASK /* DTR is active */ +#define _LCR_RTS_ACTIVE _LCR_RTS_MASK /* RTS is active */ +#define _LCR_DB_8_BITS _LCR_DB_MASK /* 8 data bits */ +#define _LCR_DB_7_BITS 0x00 /* 7 data bits */ +#define _LCR_PE_ENABLE _LCR_PE_MASK /* parity enabled */ +#define _LCR_PE_DISABLE 0x00 /* parity disabled */ +#define _LCR_PTY_EVEN 0x00 /* even parity */ +#define _LCR_PTY_ODD _LCR_PTY_MASK /* odd parity */ +#define _LCR_SB_1_BIT 0x00 /* one stop bit */ +#define _LCR_SB_2_BIT _LCR_SB_MASK /* two stop bit */ /* serial port handshake register */ -#define _HSR_DIS_MASK 0x80 /* DSR input inactive error mask */ -#define _HSR_CS_MASK 0x40 /* CTS input inactive error mask */ -#define _HSR_DIS_ACT 0x00 /* dsr input is active */ -#define _HSR_DIS_INACT _HSR_DIS_MASK /* dsr input is inactive */ -#define _HSR_CS_ACT 0x00 /* cts input is active */ -#define _HSR_CS_INACT _HSR_CS_MASK /* cts input is active */ +#define _HSR_DIS_MASK 0x80 /* DSR input inactive error mask */ +#define _HSR_CS_MASK 0x40 /* CTS input inactive error mask */ +#define _HSR_DIS_ACT 0x00 /* dsr input is active */ +#define _HSR_DIS_INACT _HSR_DIS_MASK /* dsr input is inactive */ +#define _HSR_CS_ACT 0x00 /* cts input is active */ +#define _HSR_CS_INACT _HSR_CS_MASK /* cts input is active */ /* serial port line status register */ -#define _LSR_RBR_MASK 0x80 /* receive buffer ready mask */ -#define _LSR_FE_MASK 0x40 /* framing error */ -#define _LSR_OE_MASK 0x20 /* overrun error */ -#define _LSR_PE_MASK 0x10 /* parity error */ -#define _LSR_LB_MASK 0x08 /* line break */ -#define _LSR_TBR_MASK 0x04 /* transmit buffer ready */ -#define _LSR_TSR_MASK 0x02 /* transmit shift register ready */ - -#define _LSR_RBR_FULL _LSR_RBR_MASK /* receive buffer is full */ -#define _LSR_FE_ERROR _LSR_FE_MASK /* framing error detected */ -#define _LSR_OE_ERROR _LSR_OE_MASK /* overrun error detected */ -#define _LSR_PE_ERROR _LSR_PE_MASK /* parity error detected */ -#define _LSR_LB_BREAK _LSR_LB_MASK /* line break detected */ -#define _LSR_TBR_EMPTY _LSR_TBR_MASK /* transmit buffer is ready */ -#define _LSR_TSR_EMPTY _LSR_TSR_MASK /* transmit shift register is empty */ -#define _LSR_TX_ALL 0x06 /* all physical transmit is done */ +#define _LSR_RBR_MASK 0x80 /* receive buffer ready mask */ +#define _LSR_FE_MASK 0x40 /* framing error */ +#define _LSR_OE_MASK 0x20 /* overrun error */ +#define _LSR_PE_MASK 0x10 /* parity error */ +#define _LSR_LB_MASK 0x08 /* line break */ +#define _LSR_TBR_MASK 0x04 /* transmit buffer ready */ +#define _LSR_TSR_MASK 0x02 /* transmit shift register ready */ + +#define _LSR_RBR_FULL _LSR_RBR_MASK /* receive buffer is full */ +#define _LSR_FE_ERROR _LSR_FE_MASK /* framing error detected */ +#define _LSR_OE_ERROR _LSR_OE_MASK /* overrun error detected */ +#define _LSR_PE_ERROR _LSR_PE_MASK /* parity error detected */ +#define _LSR_LB_BREAK _LSR_LB_MASK /* line break detected */ +#define _LSR_TBR_EMPTY _LSR_TBR_MASK /* transmit buffer is ready */ +#define _LSR_TSR_EMPTY _LSR_TSR_MASK /* transmit shift register is empty */ +#define _LSR_TX_ALL 0x06 /* all physical transmit is done */ #define _LSR_RX_ERR (_LSR_LB_BREAK | _LSR_FE_MASK | _LSR_OE_MASK | \ _LSR_PE_MASK ) /* serial port receiver command register */ -#define _RCR_ER_MASK 0x80 /* enable receiver mask */ -#define _RCR_DME_MASK 0x60 /* dma mode */ -#define _RCR_EIE_MASK 0x10 /* error interrupt enable mask */ -#define _RCR_PME_MASK 0x08 /* pause mode mask */ - -#define _RCR_ER_ENABLE _RCR_ER_MASK /* receiver enabled */ -#define _RCR_DME_DISABLE 0x00 /* dma disabled */ -#define _RCR_DME_RXRDY 0x20 /* dma disabled, RxRDY interrupt enabled*/ -#define _RCR_DME_ENABLE2 0x40 /* dma enabled,receiver src channel 2 */ -#define _RCR_DME_ENABLE3 0x60 /* dma enabled,receiver src channel 3 */ -#define _RCR_PME_HARD _RCR_PME_MASK /* RTS controlled by hardware */ -#define _RCR_PME_SOFT 0x00 /* RTS controlled by software */ +#define _RCR_ER_MASK 0x80 /* enable receiver mask */ +#define _RCR_DME_MASK 0x60 /* dma mode */ +#define _RCR_EIE_MASK 0x10 /* error interrupt enable mask */ +#define _RCR_PME_MASK 0x08 /* pause mode mask */ + +#define _RCR_ER_ENABLE _RCR_ER_MASK /* receiver enabled */ +#define _RCR_DME_DISABLE 0x00 /* dma disabled */ +#define _RCR_DME_RXRDY 0x20 /* dma disabled, RxRDY interrupt enabled */ +#define _RCR_DME_ENABLE2 0x40 /* dma enabled,receiver src channel 2 */ +#define _RCR_DME_ENABLE3 0x60 /* dma enabled,receiver src channel 3 */ +#define _RCR_PME_HARD _RCR_PME_MASK /* RTS controlled by hardware */ +#define _RCR_PME_SOFT 0x00 /* RTS controlled by software */ /* serial port transmit command register */ -#define _TxCR_ET_MASK 0x80 /* transmiter enable mask */ -#define _TxCR_DME_MASK 0x60 /* dma mode mask */ -#define _TxCR_TIE_MASK 0x10 /* empty interrupt enable mask */ -#define _TxCR_EIE_MASK 0x08 /* error interrupt enable mask */ -#define _TxCR_SPE_MASK 0x04 /* stop/pause mask */ -#define _TxCR_TB_MASK 0x02 /* transmit break mask */ - -#define _TxCR_ET_ENABLE _TxCR_ET_MASK /* transmiter enabled */ -#define _TxCR_DME_DISABLE 0x00 /* transmiter disabled, TBR intr disabled */ -#define _TxCR_DME_TBR 0x20 /* transmiter disabled, TBR intr enabled */ -#define _TxCR_DME_CHAN_2 0x40 /* dma enabled, destination chann 2 */ -#define _TxCR_DME_CHAN_3 0x60 /* dma enabled, destination chann 3 */ +#define _TxCR_ET_MASK 0x80 /* transmiter enable mask */ +#define _TxCR_DME_MASK 0x60 /* dma mode mask */ +#define _TxCR_TIE_MASK 0x10 /* empty interrupt enable mask */ +#define _TxCR_EIE_MASK 0x08 /* error interrupt enable mask */ +#define _TxCR_SPE_MASK 0x04 /* stop/pause mask */ +#define _TxCR_TB_MASK 0x02 /* transmit break mask */ + +#define _TxCR_ET_ENABLE _TxCR_ET_MASK /* transmiter enabled */ +#define _TxCR_DME_DISABLE 0x00 /* transmiter disabled, TBR intr disabled */ +#define _TxCR_DME_TBR 0x20 /* transmiter disabled, TBR intr enabled */ +#define _TxCR_DME_CHAN_2 0x40 /* dma enabled, destination chann 2 */ +#define _TxCR_DME_CHAN_3 0x60 /* dma enabled, destination chann 3 */ /* serial ctl reg 2 - added for Vesta */ -#define _CTL2_EXTERN 0x80 /* */ -#define _CTL2_USEFIFO 0x40 /* */ -#define _CTL2_RESETRF 0x08 /* */ -#define _CTL2_RESETTF 0x04 /* */ - - +#define _CTL2_EXTERN 0x80 /* */ +#define _CTL2_USEFIFO 0x40 /* */ +#define _CTL2_RESETRF 0x08 /* */ +#define _CTL2_RESETTF 0x04 /* */ #define SERIAL_SICC_NAME "ttySICC" #define SERIAL_SICC_MAJOR 150 @@ -225,46 +221,46 @@ static DECLARE_MUTEX(tmp_buf_sem); #define EVT_WRITE_WAKEUP 0 struct SICC_icount { - __u32 cts; - __u32 dsr; - __u32 rng; - __u32 dcd; - __u32 rx; - __u32 tx; - __u32 frame; - __u32 overrun; - __u32 parity; - __u32 brk; - __u32 buf_overrun; + __u32 cts; + __u32 dsr; + __u32 rng; + __u32 dcd; + __u32 rx; + __u32 tx; + __u32 frame; + __u32 overrun; + __u32 parity; + __u32 brk; + __u32 buf_overrun; }; /* * Static information about the port */ struct SICC_port { - unsigned int uart_base; - unsigned int uart_base_phys; - unsigned int irqrx; - unsigned int irqtx; - unsigned int uartclk; - unsigned int fifosize; - unsigned int tiocm_support; - void (*set_mctrl)(struct SICC_port *, u_int mctrl); + unsigned int uart_base; + unsigned int uart_base_phys; + unsigned int irqrx; + unsigned int irqtx; + unsigned int uartclk; + unsigned int fifosize; + unsigned int tiocm_support; + void (*set_mctrl) (struct SICC_port *, u_int mctrl); }; /* * This is the state information which is persistent across opens */ struct SICC_state { - struct SICC_icount icount; - unsigned int line; - unsigned int close_delay; - unsigned int closing_wait; - unsigned int custom_divisor; - unsigned int flags; - int count; - struct SICC_info *info; - spinlock_t sicc_lock; + struct SICC_icount icount; + unsigned int line; + unsigned int close_delay; + unsigned int closing_wait; + unsigned int custom_divisor; + unsigned int flags; + int count; + struct SICC_info *info; + spinlock_t sicc_lock; }; #define SICC_XMIT_SIZE 1024 @@ -272,53 +268,52 @@ struct SICC_state { * This is the state information which is only valid when the port is open. */ struct SICC_info { - struct SICC_port *port; - struct SICC_state *state; - struct tty_struct *tty; - unsigned char x_char; - unsigned char old_status; - unsigned char read_status_mask; - unsigned char ignore_status_mask; - struct circ_buf xmit; - unsigned int flags; + struct SICC_port *port; + struct SICC_state *state; + struct tty_struct *tty; + unsigned char x_char; + unsigned char old_status; + unsigned char read_status_mask; + unsigned char ignore_status_mask; + struct circ_buf xmit; + unsigned int flags; #ifdef SUPPORT_SYSRQ - unsigned long sysrq; + unsigned long sysrq; #endif - unsigned int event; - unsigned int timeout; - unsigned int lcr_h; - unsigned int mctrl; - int blocked_open; - - struct tasklet_struct tlet; - - wait_queue_head_t open_wait; - wait_queue_head_t close_wait; - wait_queue_head_t delta_msr_wait; + unsigned int event; + unsigned int timeout; + unsigned int lcr_h; + unsigned int mctrl; + int blocked_open; + + struct tasklet_struct tlet; + + wait_queue_head_t open_wait; + wait_queue_head_t close_wait; + wait_queue_head_t delta_msr_wait; }; #ifdef CONFIG_SERIAL_SICC_CONSOLE static struct console siccuart_cons; #endif -static void siccuart_change_speed(struct SICC_info *info, struct termios *old_termios); +static void siccuart_change_speed(struct SICC_info *info, + struct termios *old_termios); static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout); - - static void powerpcMtcic_cr(unsigned long value) { - mtdcr(DCRN_CICCR, value); + mtdcr(DCRN_CICCR, value); } static unsigned long powerpcMfcic_cr(void) { - return mfdcr(DCRN_CICCR); + return mfdcr(DCRN_CICCR); } static unsigned long powerpcMfclkgpcr(void) { - return mfdcr(DCRN_SCCR); + return mfdcr(DCRN_SCCR); } static void sicc_set_mctrl_null(struct SICC_port *port, u_int mctrl) @@ -326,379 +321,370 @@ static void sicc_set_mctrl_null(struct S } static struct SICC_port sicc_ports[SERIAL_SICC_NR] = { - { - .uart_base = 0, - .uart_base_phys = SICC0_IO_BASE, - .irqrx = SICC0_INTRX, - .irqtx = SICC0_INTTX, + { + .uart_base = 0, + .uart_base_phys = SICC0_IO_BASE, + .irqrx = SICC0_INTRX, + .irqtx = SICC0_INTTX, // .uartclk = 0, - .fifosize = 1, - .set_mctrl = sicc_set_mctrl_null, - } + .fifosize = 1, + .set_mctrl = sicc_set_mctrl_null, + } }; static struct SICC_state sicc_state[SERIAL_SICC_NR]; static void siccuart_enable_rx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_RCR); - cr &= ~_RCR_DME_MASK; - cr |= _RCR_DME_RXRDY; - writeb(cr, info->port->uart_base+BL_SICC_RCR); + cr = readb(info->port->uart_base + BL_SICC_RCR); + cr &= ~_RCR_DME_MASK; + cr |= _RCR_DME_RXRDY; + writeb(cr, info->port->uart_base + BL_SICC_RCR); } static void siccuart_disable_rx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_RCR); - cr &= ~_RCR_DME_MASK; - cr |= _RCR_DME_DISABLE; - writeb(cr, info->port->uart_base+BL_SICC_RCR); + cr = readb(info->port->uart_base + BL_SICC_RCR); + cr &= ~_RCR_DME_MASK; + cr |= _RCR_DME_DISABLE; + writeb(cr, info->port->uart_base + BL_SICC_RCR); } - static void siccuart_enable_tx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_TxCR); - cr &= ~_TxCR_DME_MASK; - cr |= _TxCR_DME_TBR; - writeb(cr, info->port->uart_base+BL_SICC_TxCR); + cr = readb(info->port->uart_base + BL_SICC_TxCR); + cr &= ~_TxCR_DME_MASK; + cr |= _TxCR_DME_TBR; + writeb(cr, info->port->uart_base + BL_SICC_TxCR); } static void siccuart_disable_tx_interrupt(struct SICC_info *info) { - unsigned char cr; + unsigned char cr; - cr = readb(info->port->uart_base+BL_SICC_TxCR); - cr &= ~_TxCR_DME_MASK; - cr |= _TxCR_DME_DISABLE; - writeb(cr, info->port->uart_base+BL_SICC_TxCR); + cr = readb(info->port->uart_base + BL_SICC_TxCR); + cr &= ~_TxCR_DME_MASK; + cr |= _TxCR_DME_DISABLE; + writeb(cr, info->port->uart_base + BL_SICC_TxCR); } - static void siccuart_stop(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - /* disable interrupts while stopping serial port interrupts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - siccuart_disable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* disable interrupts while stopping serial port interrupts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + siccuart_disable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static void siccuart_start(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - /* disable interrupts while starting serial port interrupts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (info->xmit.head != info->xmit.tail - && info->xmit.buf) - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* disable interrupts while starting serial port interrupts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (info->xmit.head != info->xmit.tail && info->xmit.buf) + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } - /* * This routine is used by the interrupt handler to schedule * processing in the software interrupt portion of the driver. */ static void siccuart_event(struct SICC_info *info, int event) { - info->event |= 1 << event; - tasklet_schedule(&info->tlet); + info->event |= 1 << event; + tasklet_schedule(&info->tlet); } -static void -siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) +static void siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) { - struct tty_struct *tty = info->tty; - unsigned int status, ch, rsr, flg, ignored = 0; - struct SICC_icount *icount = &info->state->icount; - struct SICC_port *port = info->port; - - status = readb(port->uart_base+BL_SICC_LSR ); - while (status & _LSR_RBR_FULL) { - ch = readb(port->uart_base+BL_SICC_RBR); - - if (tty->flip.count >= TTY_FLIPBUF_SIZE) - goto ignore_char; - icount->rx++; - - flg = TTY_NORMAL; - - /* - * Note that the error handling code is - * out of the main execution path - */ - rsr = readb(port->uart_base+BL_SICC_LSR); - if (rsr & _LSR_RX_ERR) - goto handle_error; + struct tty_struct *tty = info->tty; + unsigned int status, ch, rsr, flg, ignored = 0; + struct SICC_icount *icount = &info->state->icount; + struct SICC_port *port = info->port; + + status = readb(port->uart_base + BL_SICC_LSR); + while (status & _LSR_RBR_FULL) { + ch = readb(port->uart_base + BL_SICC_RBR); + + if (tty->flip.count >= TTY_FLIPBUF_SIZE) + goto ignore_char; + icount->rx++; + + flg = TTY_NORMAL; + + /* + * Note that the error handling code is + * out of the main execution path + */ + rsr = readb(port->uart_base + BL_SICC_LSR); + if (rsr & _LSR_RX_ERR) + goto handle_error; #ifdef SUPPORT_SYSRQ - if (info->sysrq) { - if (ch && time_before(jiffies, info->sysrq)) { - handle_sysrq(ch, regs, NULL); - info->sysrq = 0; - goto ignore_char; - } - info->sysrq = 0; - } + if (info->sysrq) { + if (ch && time_before(jiffies, info->sysrq)) { + handle_sysrq(ch, regs, NULL); + info->sysrq = 0; + goto ignore_char; + } + info->sysrq = 0; + } #endif - error_return: - *tty->flip.flag_buf_ptr++ = flg; - *tty->flip.char_buf_ptr++ = ch; - tty->flip.count++; - ignore_char: - status = readb(port->uart_base+BL_SICC_LSR ); - } -out: - tty_flip_buffer_push(tty); - return; - -handle_error: - if (rsr & _LSR_LB_BREAK) { - rsr &= ~(_LSR_FE_MASK | _LSR_PE_MASK); - icount->brk++; + error_return: + *tty->flip.flag_buf_ptr++ = flg; + *tty->flip.char_buf_ptr++ = ch; + tty->flip.count++; + ignore_char: + status = readb(port->uart_base + BL_SICC_LSR); + } + out: + tty_flip_buffer_push(tty); + return; + + handle_error: + if (rsr & _LSR_LB_BREAK) { + rsr &= ~(_LSR_FE_MASK | _LSR_PE_MASK); + icount->brk++; #ifdef SUPPORT_SYSRQ - if (info->state->line == siccuart_cons.index) { - if (!info->sysrq) { - info->sysrq = jiffies + HZ*5; - goto ignore_char; - } - } + if (info->state->line == siccuart_cons.index) { + if (!info->sysrq) { + info->sysrq = jiffies + HZ * 5; + goto ignore_char; + } + } #endif - } else if (rsr & _LSR_PE_MASK) - icount->parity++; - else if (rsr & _LSR_FE_MASK) - icount->frame++; - if (rsr & _LSR_OE_MASK) - icount->overrun++; - - if (rsr & info->ignore_status_mask) { - if (++ignored > 100) - goto out; - goto ignore_char; - } - rsr &= info->read_status_mask; - - if (rsr & _LSR_LB_BREAK) - flg = TTY_BREAK; - else if (rsr & _LSR_PE_MASK) - flg = TTY_PARITY; - else if (rsr & _LSR_FE_MASK) - flg = TTY_FRAME; - - if (rsr & _LSR_OE_MASK) { - /* - * CHECK: does overrun affect the current character? - * ASSUMPTION: it does not. - */ - *tty->flip.flag_buf_ptr++ = flg; - *tty->flip.char_buf_ptr++ = ch; - tty->flip.count++; - if (tty->flip.count >= TTY_FLIPBUF_SIZE) - goto ignore_char; - ch = 0; - flg = TTY_OVERRUN; - } + } else if (rsr & _LSR_PE_MASK) + icount->parity++; + else if (rsr & _LSR_FE_MASK) + icount->frame++; + if (rsr & _LSR_OE_MASK) + icount->overrun++; + + if (rsr & info->ignore_status_mask) { + if (++ignored > 100) + goto out; + goto ignore_char; + } + rsr &= info->read_status_mask; + + if (rsr & _LSR_LB_BREAK) + flg = TTY_BREAK; + else if (rsr & _LSR_PE_MASK) + flg = TTY_PARITY; + else if (rsr & _LSR_FE_MASK) + flg = TTY_FRAME; + + if (rsr & _LSR_OE_MASK) { + /* + * CHECK: does overrun affect the current character? + * ASSUMPTION: it does not. + */ + *tty->flip.flag_buf_ptr++ = flg; + *tty->flip.char_buf_ptr++ = ch; + tty->flip.count++; + if (tty->flip.count >= TTY_FLIPBUF_SIZE) + goto ignore_char; + ch = 0; + flg = TTY_OVERRUN; + } #ifdef SUPPORT_SYSRQ - info->sysrq = 0; + info->sysrq = 0; #endif - goto error_return; + goto error_return; } static void siccuart_tx_chars(struct SICC_info *info) { - struct SICC_port *port = info->port; - int count; - unsigned char status; - - - if (info->x_char) { - writeb(info->x_char, port->uart_base+ BL_SICC_TBR); - info->state->icount.tx++; - info->x_char = 0; - return; - } - if (info->xmit.head == info->xmit.tail - || info->tty->stopped - || info->tty->hw_stopped) { - siccuart_disable_tx_interrupt(info); - writeb(status&(~_LSR_RBR_MASK),port->uart_base+BL_SICC_LSR); - return; - } - - count = port->fifosize; - do { - writeb(info->xmit.buf[info->xmit.tail], port->uart_base+ BL_SICC_TBR); - info->xmit.tail = (info->xmit.tail + 1) & (SICC_XMIT_SIZE - 1); - info->state->icount.tx++; - if (info->xmit.head == info->xmit.tail) - break; - } while (--count > 0); - - if (CIRC_CNT(info->xmit.head, - info->xmit.tail, - SICC_XMIT_SIZE) < WAKEUP_CHARS) - siccuart_event(info, EVT_WRITE_WAKEUP); - - if (info->xmit.head == info->xmit.tail) { - siccuart_disable_tx_interrupt(info); - } + struct SICC_port *port = info->port; + int count; + unsigned char status; + + if (info->x_char) { + writeb(info->x_char, port->uart_base + BL_SICC_TBR); + info->state->icount.tx++; + info->x_char = 0; + return; + } + if (info->xmit.head == info->xmit.tail + || info->tty->stopped || info->tty->hw_stopped) { + siccuart_disable_tx_interrupt(info); + writeb(status & (~_LSR_RBR_MASK), + port->uart_base + BL_SICC_LSR); + return; + } + + count = port->fifosize; + do { + writeb(info->xmit.buf[info->xmit.tail], + port->uart_base + BL_SICC_TBR); + info->xmit.tail = (info->xmit.tail + 1) & (SICC_XMIT_SIZE - 1); + info->state->icount.tx++; + if (info->xmit.head == info->xmit.tail) + break; + } while (--count > 0); + + if (CIRC_CNT(info->xmit.head, + info->xmit.tail, SICC_XMIT_SIZE) < WAKEUP_CHARS) + siccuart_event(info, EVT_WRITE_WAKEUP); + + if (info->xmit.head == info->xmit.tail) { + siccuart_disable_tx_interrupt(info); + } } - static irqreturn_t siccuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) { - struct SICC_info *info = dev_id; - siccuart_rx_chars(info, regs); - return IRQ_HANDLED; + struct SICC_info *info = dev_id; + siccuart_rx_chars(info, regs); + return IRQ_HANDLED; } - static irqreturn_t siccuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) { - struct SICC_info *info = dev_id; - siccuart_tx_chars(info); - return IRQ_HANDLED; + struct SICC_info *info = dev_id; + siccuart_tx_chars(info); + return IRQ_HANDLED; } static void siccuart_tasklet_action(unsigned long data) { - struct SICC_info *info = (struct SICC_info *)data; - struct tty_struct *tty; + struct SICC_info *info = (struct SICC_info *)data; + struct tty_struct *tty; - tty = info->tty; - if (!tty || !test_and_clear_bit(EVT_WRITE_WAKEUP, &info->event)) - return; - - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); - wake_up_interruptible(&tty->write_wait); + tty = info->tty; + if (!tty || !test_and_clear_bit(EVT_WRITE_WAKEUP, &info->event)) + return; + + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + (tty->ldisc.write_wakeup) (tty); + wake_up_interruptible(&tty->write_wait); } static int siccuart_startup(struct SICC_info *info) { - unsigned long flags; - unsigned long page; - int retval = 0; - - if (info->flags & ASYNC_INITIALIZED) { - return 0; - } - - page = get_zeroed_page(GFP_KERNEL); - if (!page) - return -ENOMEM; - - if (info->port->uart_base == 0) - info->port->uart_base = (int)ioremap(info->port->uart_base_phys, PAGE_SIZE); - if (info->port->uart_base == 0) { - free_page(page); - return -ENOMEM; - } - - /* lock access to info while doing setup */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - if (info->xmit.buf) - free_page(page); - else - info->xmit.buf = (unsigned char *) page; - - - info->mctrl = 0; - if (info->tty->termios->c_cflag & CBAUD) - info->mctrl = TIOCM_RTS | TIOCM_DTR; - info->port->set_mctrl(info->port, info->mctrl); - - /* - * initialise the old status of the modem signals - */ - info->old_status = 0; // UART_GET_FR(info->port) & AMBA_UARTFR_MODEM_ANY; - - - if (info->tty) - clear_bit(TTY_IO_ERROR, &info->tty->flags); - info->xmit.head = info->xmit.tail = 0; - - /* - * Set up the tty->alt_speed kludge - */ - if (info->tty) { - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) - info->tty->alt_speed = 57600; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) - info->tty->alt_speed = 115200; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) - info->tty->alt_speed = 230400; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) - info->tty->alt_speed = 460800; - } - - - writeb( 0x00, info->port->uart_base + BL_SICC_IrCR ); // disable IrDA - - - /* - * and set the speed of the serial port - */ - siccuart_change_speed(info, 0); - - // enable rx/tx ports - writeb(_RCR_ER_ENABLE /*| _RCR_PME_HARD*/, info->port->uart_base + BL_SICC_RCR); - writeb(_TxCR_ET_ENABLE , info->port->uart_base + BL_SICC_TxCR); - - readb(info->port->uart_base + BL_SICC_RBR); // clear rx port - - writeb(0xf8, info->port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ - - /* - * Finally, enable interrupts - */ - - /* - * Allocate the IRQ - */ - retval = request_irq(info->port->irqrx, siccuart_int_rx, 0, "SICC rx", info); - if (retval) { - if (capable(CAP_SYS_ADMIN)) { - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - retval = 0; - } - goto errout; - } - retval = request_irq(info->port->irqtx, siccuart_int_tx, 0, "SICC tx", info); - if (retval) { - if (capable(CAP_SYS_ADMIN)) { - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - retval = 0; - } - free_irq(info->port->irqrx, info); - goto errout; - } - - siccuart_enable_rx_interrupt(info); - - info->flags |= ASYNC_INITIALIZED; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return 0; - - -errout: - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return retval; + unsigned long flags; + unsigned long page; + int retval = 0; + + if (info->flags & ASYNC_INITIALIZED) { + return 0; + } + + page = get_zeroed_page(GFP_KERNEL); + if (!page) + return -ENOMEM; + + if (info->port->uart_base == 0) + info->port->uart_base = + (int)ioremap(info->port->uart_base_phys, PAGE_SIZE); + if (info->port->uart_base == 0) { + free_page(page); + return -ENOMEM; + } + + /* lock access to info while doing setup */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + if (info->xmit.buf) + free_page(page); + else + info->xmit.buf = (unsigned char *)page; + + info->mctrl = 0; + if (info->tty->termios->c_cflag & CBAUD) + info->mctrl = TIOCM_RTS | TIOCM_DTR; + info->port->set_mctrl(info->port, info->mctrl); + + /* + * initialise the old status of the modem signals + */ + info->old_status = 0; // UART_GET_FR(info->port) & AMBA_UARTFR_MODEM_ANY; + + if (info->tty) + clear_bit(TTY_IO_ERROR, &info->tty->flags); + info->xmit.head = info->xmit.tail = 0; + + /* + * Set up the tty->alt_speed kludge + */ + if (info->tty) { + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) + info->tty->alt_speed = 57600; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) + info->tty->alt_speed = 115200; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) + info->tty->alt_speed = 230400; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) + info->tty->alt_speed = 460800; + } + + writeb(0x00, info->port->uart_base + BL_SICC_IrCR); // disable IrDA + + /* + * and set the speed of the serial port + */ + siccuart_change_speed(info, 0); + + // enable rx/tx ports + writeb(_RCR_ER_ENABLE /*| _RCR_PME_HARD */ , + info->port->uart_base + BL_SICC_RCR); + writeb(_TxCR_ET_ENABLE, info->port->uart_base + BL_SICC_TxCR); + + readb(info->port->uart_base + BL_SICC_RBR); // clear rx port + + writeb(0xf8, info->port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ + + /* + * Finally, enable interrupts + */ + + /* + * Allocate the IRQ + */ + retval = + request_irq(info->port->irqrx, siccuart_int_rx, 0, "SICC rx", info); + if (retval) { + if (capable(CAP_SYS_ADMIN)) { + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + retval = 0; + } + goto errout; + } + retval = + request_irq(info->port->irqtx, siccuart_int_tx, 0, "SICC tx", info); + if (retval) { + if (capable(CAP_SYS_ADMIN)) { + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + retval = 0; + } + free_irq(info->port->irqrx, info); + goto errout; + } + + siccuart_enable_rx_interrupt(info); + + info->flags |= ASYNC_INITIALIZED; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return 0; + + errout: + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return retval; } /* @@ -707,302 +693,299 @@ errout: */ static void siccuart_shutdown(struct SICC_info *info) { - unsigned long flags; + unsigned long flags; - if (!(info->flags & ASYNC_INITIALIZED)) - return; + if (!(info->flags & ASYNC_INITIALIZED)) + return; - /* lock while shutting down port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); /* Disable interrupts */ + /* lock while shutting down port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); /* Disable interrupts */ - /* - * clear delta_msr_wait queue to avoid mem leaks: we may free the irq - * here so the queue might never be woken up - */ - wake_up_interruptible(&info->delta_msr_wait); - - /* - * disable all interrupts, disable the port - */ - siccuart_disable_rx_interrupt(info); - siccuart_disable_tx_interrupt(info); - - /* - * Free the IRQ - */ - free_irq(info->port->irqtx, info); - free_irq(info->port->irqrx, info); - - if (info->xmit.buf) { - unsigned long pg = (unsigned long) info->xmit.buf; - info->xmit.buf = NULL; - free_page(pg); - } - - - if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) - info->mctrl &= ~(TIOCM_DTR|TIOCM_RTS); - info->port->set_mctrl(info->port, info->mctrl); - - /* kill off our tasklet */ - tasklet_kill(&info->tlet); - if (info->tty) - set_bit(TTY_IO_ERROR, &info->tty->flags); - - info->flags &= ~ASYNC_INITIALIZED; - - spin_unlock_irqrestore(&info->state->sicc_lock,flags); -} - - -static void siccuart_change_speed(struct SICC_info *info, struct termios *old_termios) -{ - unsigned int lcr_h, baud, quot, cflag, old_rcr, old_tcr, bits; - unsigned long flags; - - if (!info->tty || !info->tty->termios) - return; - - cflag = info->tty->termios->c_cflag; - - pr_debug("siccuart_set_cflag(0x%x) called\n", cflag); - /* byte size and parity */ - switch (cflag & CSIZE) { - case CS7: lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; bits = 9; break; - default: lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; bits = 10; break; // CS8 - } - if (cflag & CSTOPB) { - lcr_h |= _LCR_SB_2_BIT; - bits ++; - } - if (cflag & PARENB) { - lcr_h |= _LCR_PE_ENABLE; - bits++; - if (!(cflag & PARODD)) - lcr_h |= _LCR_PTY_ODD; - else - lcr_h |= _LCR_PTY_EVEN; - } - - do { - /* Determine divisor based on baud rate */ - baud = tty_get_baud_rate(info->tty); - if (!baud) - baud = 9600; - - - { - // here is ppc403SetBaud(com_port, baud); - unsigned long divisor, clockSource, temp; - - /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ - powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & 0xFEFFFFFF)); - - /* Determine Internal Baud Clock Frequency */ - /* powerpcMfclkgpcr() reads DCR 0x120 - the*/ - /* SCCR (Serial Clock Control Register) on Vesta */ - temp = powerpcMfclkgpcr(); - - if(temp & 0x00000080) { - clockSource = 324000000; - } - else { - clockSource = 216000000; - } - clockSource = clockSource/(unsigned long)((temp&0x00FC0000)>>18); - divisor = clockSource/(16*baud) - 1; - /* divisor has only 12 bits of resolution */ - if(divisor>0x00000FFF){ - divisor=0x00000FFF; - } - - quot = divisor; - } - - if (baud == 38400 && - ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST)) - quot = info->state->custom_divisor; - - if (!quot && old_termios) { - info->tty->termios->c_cflag &= ~CBAUD; - info->tty->termios->c_cflag |= (old_termios->c_cflag & CBAUD); - old_termios = NULL; - } - } while (quot == 0 && old_termios); - - /* As a last resort, if the quotient is zero, default to 9600 bps */ - if (!quot) - quot = (info->port->uartclk / (16 * 9600)) - 1; - - info->timeout = info->port->fifosize * HZ * bits / baud; - info->timeout += HZ/50; /* Add .02 seconds of slop */ - - if (cflag & CRTSCTS) - info->flags |= ASYNC_CTS_FLOW; - else - info->flags &= ~ASYNC_CTS_FLOW; - if (cflag & CLOCAL) - info->flags &= ~ASYNC_CHECK_CD; - else - info->flags |= ASYNC_CHECK_CD; - - /* - * Set up parity check flag - */ + /* + * clear delta_msr_wait queue to avoid mem leaks: we may free the irq + * here so the queue might never be woken up + */ + wake_up_interruptible(&info->delta_msr_wait); + + /* + * disable all interrupts, disable the port + */ + siccuart_disable_rx_interrupt(info); + siccuart_disable_tx_interrupt(info); + + /* + * Free the IRQ + */ + free_irq(info->port->irqtx, info); + free_irq(info->port->irqrx, info); + + if (info->xmit.buf) { + unsigned long pg = (unsigned long)info->xmit.buf; + info->xmit.buf = NULL; + free_page(pg); + } + + if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) + info->mctrl &= ~(TIOCM_DTR | TIOCM_RTS); + info->port->set_mctrl(info->port, info->mctrl); + + /* kill off our tasklet */ + tasklet_kill(&info->tlet); + if (info->tty) + set_bit(TTY_IO_ERROR, &info->tty->flags); + + info->flags &= ~ASYNC_INITIALIZED; + + spin_unlock_irqrestore(&info->state->sicc_lock, flags); +} + +static void siccuart_change_speed(struct SICC_info *info, + struct termios *old_termios) +{ + unsigned int lcr_h, baud, quot, cflag, old_rcr, old_tcr, bits; + unsigned long flags; + + if (!info->tty || !info->tty->termios) + return; + + cflag = info->tty->termios->c_cflag; + + pr_debug("siccuart_set_cflag(0x%x) called\n", cflag); + /* byte size and parity */ + switch (cflag & CSIZE) { + case CS7: + lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; + bits = 9; + break; + default: + lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; + bits = 10; + break; // CS8 + } + if (cflag & CSTOPB) { + lcr_h |= _LCR_SB_2_BIT; + bits++; + } + if (cflag & PARENB) { + lcr_h |= _LCR_PE_ENABLE; + bits++; + if (!(cflag & PARODD)) + lcr_h |= _LCR_PTY_ODD; + else + lcr_h |= _LCR_PTY_EVEN; + } + + do { + /* Determine divisor based on baud rate */ + baud = tty_get_baud_rate(info->tty); + if (!baud) + baud = 9600; + + { + // here is ppc403SetBaud(com_port, baud); + unsigned long divisor, clockSource, temp; + + /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ + powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & + 0xFEFFFFFF)); + + /* Determine Internal Baud Clock Frequency */ + /* powerpcMfclkgpcr() reads DCR 0x120 - the */ + /* SCCR (Serial Clock Control Register) on Vesta */ + temp = powerpcMfclkgpcr(); + + if (temp & 0x00000080) { + clockSource = 324000000; + } else { + clockSource = 216000000; + } + clockSource = + clockSource / + (unsigned long)((temp & 0x00FC0000) >> 18); + divisor = clockSource / (16 * baud) - 1; + /* divisor has only 12 bits of resolution */ + if (divisor > 0x00000FFF) { + divisor = 0x00000FFF; + } + + quot = divisor; + } + + if (baud == 38400 && + ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST)) + quot = info->state->custom_divisor; + + if (!quot && old_termios) { + info->tty->termios->c_cflag &= ~CBAUD; + info->tty->termios->c_cflag |= + (old_termios->c_cflag & CBAUD); + old_termios = NULL; + } + } while (quot == 0 && old_termios); + + /* As a last resort, if the quotient is zero, default to 9600 bps */ + if (!quot) + quot = (info->port->uartclk / (16 * 9600)) - 1; + + info->timeout = info->port->fifosize * HZ * bits / baud; + info->timeout += HZ / 50; /* Add .02 seconds of slop */ + + if (cflag & CRTSCTS) + info->flags |= ASYNC_CTS_FLOW; + else + info->flags &= ~ASYNC_CTS_FLOW; + if (cflag & CLOCAL) + info->flags &= ~ASYNC_CHECK_CD; + else + info->flags |= ASYNC_CHECK_CD; + + /* + * Set up parity check flag + */ #define RELEVENT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) - info->read_status_mask = _LSR_OE_MASK; - if (I_INPCK(info->tty)) - info->read_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; - if (I_BRKINT(info->tty) || I_PARMRK(info->tty)) - info->read_status_mask |= _LSR_LB_MASK; - - /* - * Characters to ignore - */ - info->ignore_status_mask = 0; - if (I_IGNPAR(info->tty)) - info->ignore_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; - if (I_IGNBRK(info->tty)) { - info->ignore_status_mask |= _LSR_LB_MASK; - /* - * If we're ignoring parity and break indicators, - * ignore overruns to (for real raw support). - */ - if (I_IGNPAR(info->tty)) - info->ignore_status_mask |= _LSR_OE_MASK; - } - - /* disable interrupts while reading and clearing registers */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - old_rcr = readb(info->port->uart_base + BL_SICC_RCR); - old_tcr = readb(info->port->uart_base + BL_SICC_TxCR); - - - writeb(0, info->port->uart_base + BL_SICC_RCR); - writeb(0, info->port->uart_base + BL_SICC_TxCR); - - /*RLBtrace (&ppc403Chan0, 0x2000000c, 0, 0);*/ + info->read_status_mask = _LSR_OE_MASK; + if (I_INPCK(info->tty)) + info->read_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; + if (I_BRKINT(info->tty) || I_PARMRK(info->tty)) + info->read_status_mask |= _LSR_LB_MASK; + + /* + * Characters to ignore + */ + info->ignore_status_mask = 0; + if (I_IGNPAR(info->tty)) + info->ignore_status_mask |= _LSR_FE_MASK | _LSR_PE_MASK; + if (I_IGNBRK(info->tty)) { + info->ignore_status_mask |= _LSR_LB_MASK; + /* + * If we're ignoring parity and break indicators, + * ignore overruns to (for real raw support). + */ + if (I_IGNPAR(info->tty)) + info->ignore_status_mask |= _LSR_OE_MASK; + } + + /* disable interrupts while reading and clearing registers */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + old_rcr = readb(info->port->uart_base + BL_SICC_RCR); + old_tcr = readb(info->port->uart_base + BL_SICC_TxCR); + + writeb(0, info->port->uart_base + BL_SICC_RCR); + writeb(0, info->port->uart_base + BL_SICC_TxCR); + + /*RLBtrace (&ppc403Chan0, 0x2000000c, 0, 0); */ + + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + + /* Set baud rate */ + writeb((quot & 0x00000F00) >> 8, info->port->uart_base + BL_SICC_BRDH); + writeb(quot & 0x00000FF, info->port->uart_base + BL_SICC_BRDL); + + /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ + /* For now, do NOT use FIFOs since 403 UART did not have this */ + /* capability and this driver was inherited from 403UART. */ + writeb(_CTL2_EXTERN, info->port->uart_base + BL_SICC_CTL2); + writeb(lcr_h, info->port->uart_base + BL_SICC_LCR); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - - - /* Set baud rate */ - writeb((quot & 0x00000F00)>>8, info->port->uart_base + BL_SICC_BRDH ); - writeb( quot & 0x00000FF, info->port->uart_base + BL_SICC_BRDL ); - - /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ - /* For now, do NOT use FIFOs since 403 UART did not have this */ - /* capability and this driver was inherited from 403UART. */ - writeb(_CTL2_EXTERN, info->port->uart_base + BL_SICC_CTL2); - - writeb(lcr_h, info->port->uart_base + BL_SICC_LCR); - - writeb(old_rcr, info->port->uart_base + BL_SICC_RCR); // restore rcr - writeb(old_tcr, info->port->uart_base + BL_SICC_TxCR); // restore txcr + writeb(old_rcr, info->port->uart_base + BL_SICC_RCR); // restore rcr + writeb(old_tcr, info->port->uart_base + BL_SICC_TxCR); // restore txcr } - static void siccuart_put_char(struct tty_struct *tty, u_char ch) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (!tty || !info->xmit.buf) - return; + if (!tty || !info->xmit.buf) + return; - /* lock info->xmit while adding character to tx buffer */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE) != 0) { - info->xmit.buf[info->xmit.head] = ch; - info->xmit.head = (info->xmit.head + 1) & (SICC_XMIT_SIZE - 1); - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + /* lock info->xmit while adding character to tx buffer */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE) != 0) { + info->xmit.buf[info->xmit.head] = ch; + info->xmit.head = (info->xmit.head + 1) & (SICC_XMIT_SIZE - 1); + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static void siccuart_flush_chars(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (info->xmit.head == info->xmit.tail - || tty->stopped - || tty->hw_stopped - || !info->xmit.buf) - return; - - /* disable interrupts while transmitting characters */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); -} - -static int siccuart_write(struct tty_struct *tty, - const u_char * buf, int count) -{ - struct SICC_info *info = tty->driver_data; - unsigned long flags; - int c, ret = 0; - - if (!tty || !info->xmit.buf || !tmp_buf) - return 0; - - /* lock info->xmit while removing characters from buffer */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - while (1) { - c = CIRC_SPACE_TO_END(info->xmit.head, - info->xmit.tail, - SICC_XMIT_SIZE); - if (count < c) - c = count; - if (c <= 0) - break; - memcpy(info->xmit.buf + info->xmit.head, buf, c); - info->xmit.head = (info->xmit.head + c) & - (SICC_XMIT_SIZE - 1); - buf += c; - count -= c; - ret += c; - } - if (info->xmit.head != info->xmit.tail - && !tty->stopped - && !tty->hw_stopped) - siccuart_enable_tx_interrupt(info); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return ret; + if (info->xmit.head == info->xmit.tail + || tty->stopped || tty->hw_stopped || !info->xmit.buf) + return; + + /* disable interrupts while transmitting characters */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); +} + +static int siccuart_write(struct tty_struct *tty, const u_char * buf, int count) +{ + struct SICC_info *info = tty->driver_data; + unsigned long flags; + int c, ret = 0; + + if (!tty || !info->xmit.buf || !tmp_buf) + return 0; + + /* lock info->xmit while removing characters from buffer */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + while (1) { + c = CIRC_SPACE_TO_END(info->xmit.head, + info->xmit.tail, SICC_XMIT_SIZE); + if (count < c) + c = count; + if (c <= 0) + break; + memcpy(info->xmit.buf + info->xmit.head, buf, c); + info->xmit.head = (info->xmit.head + c) & (SICC_XMIT_SIZE - 1); + buf += c; + count -= c; + ret += c; + } + if (info->xmit.head != info->xmit.tail + && !tty->stopped && !tty->hw_stopped) + siccuart_enable_tx_interrupt(info); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return ret; } static int siccuart_write_room(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - return CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); + return CIRC_SPACE(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); } static int siccuart_chars_in_buffer(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - return CIRC_CNT(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); + return CIRC_CNT(info->xmit.head, info->xmit.tail, SICC_XMIT_SIZE); } static void siccuart_flush_buffer(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - pr_debug("siccuart_flush_buffer(%d) called\n", tty->index); - /* lock info->xmit while zeroing buffer counts */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->xmit.head = info->xmit.tail = 0; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - wake_up_interruptible(&tty->write_wait); - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); + pr_debug("siccuart_flush_buffer(%d) called\n", tty->index); + /* lock info->xmit while zeroing buffer counts */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->xmit.head = info->xmit.tail = 0; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + wake_up_interruptible(&tty->write_wait); + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && + tty->ldisc.write_wakeup) + (tty->ldisc.write_wakeup) (tty); } /* @@ -1011,717 +994,712 @@ static void siccuart_flush_buffer(struct */ static void siccuart_send_xchar(struct tty_struct *tty, char ch) { - struct SICC_info *info = tty->driver_data; + struct SICC_info *info = tty->driver_data; - info->x_char = ch; - if (ch) - siccuart_enable_tx_interrupt(info); + info->x_char = ch; + if (ch) + siccuart_enable_tx_interrupt(info); } static void siccuart_throttle(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; + struct SICC_info *info = tty->driver_data; + unsigned long flags; - if (I_IXOFF(tty)) - siccuart_send_xchar(tty, STOP_CHAR(tty)); + if (I_IXOFF(tty)) + siccuart_send_xchar(tty, STOP_CHAR(tty)); - if (tty->termios->c_cflag & CRTSCTS) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl &= ~TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } + if (tty->termios->c_cflag & CRTSCTS) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl &= ~TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } } static void siccuart_unthrottle(struct tty_struct *tty) { - struct SICC_info *info = (struct SICC_info *) tty->driver_data; - unsigned long flags; + struct SICC_info *info = (struct SICC_info *)tty->driver_data; + unsigned long flags; - if (I_IXOFF(tty)) { - if (info->x_char) - info->x_char = 0; - else - siccuart_send_xchar(tty, START_CHAR(tty)); - } - - if (tty->termios->c_cflag & CRTSCTS) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl |= TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } -} - -static int get_serial_info(struct SICC_info *info, struct serial_struct *retinfo) -{ - struct SICC_state *state = info->state; - struct SICC_port *port = info->port; - struct serial_struct tmp; - - memset(&tmp, 0, sizeof(tmp)); - tmp.type = 0; - tmp.line = state->line; - tmp.port = port->uart_base; - if (HIGH_BITS_OFFSET) - tmp.port_high = port->uart_base >> HIGH_BITS_OFFSET; - tmp.irq = port->irqrx; - tmp.flags = 0; - tmp.xmit_fifo_size = port->fifosize; - tmp.baud_base = port->uartclk / 16; - tmp.close_delay = state->close_delay; - tmp.closing_wait = state->closing_wait; - tmp.custom_divisor = state->custom_divisor; - - if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) - return -EFAULT; - return 0; + if (I_IXOFF(tty)) { + if (info->x_char) + info->x_char = 0; + else + siccuart_send_xchar(tty, START_CHAR(tty)); + } + + if (tty->termios->c_cflag & CRTSCTS) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl |= TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } +} + +static int get_serial_info(struct SICC_info *info, + struct serial_struct *retinfo) +{ + struct SICC_state *state = info->state; + struct SICC_port *port = info->port; + struct serial_struct tmp; + + memset(&tmp, 0, sizeof(tmp)); + tmp.type = 0; + tmp.line = state->line; + tmp.port = port->uart_base; + if (HIGH_BITS_OFFSET) + tmp.port_high = port->uart_base >> HIGH_BITS_OFFSET; + tmp.irq = port->irqrx; + tmp.flags = 0; + tmp.xmit_fifo_size = port->fifosize; + tmp.baud_base = port->uartclk / 16; + tmp.close_delay = state->close_delay; + tmp.closing_wait = state->closing_wait; + tmp.custom_divisor = state->custom_divisor; + + if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) + return -EFAULT; + return 0; } static int set_serial_info(struct SICC_info *info, - struct serial_struct *newinfo) + struct serial_struct *newinfo) { - struct serial_struct new_serial; - struct SICC_state *state, old_state; - struct SICC_port *port; - unsigned long new_port; - unsigned int i, change_irq, change_port; - int retval = 0; - - if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) - return -EFAULT; - - state = info->state; - old_state = *state; - port = info->port; - - new_port = new_serial.port; - if (HIGH_BITS_OFFSET) - new_port += (unsigned long) new_serial.port_high << HIGH_BITS_OFFSET; - - change_irq = new_serial.irq != port->irqrx; - change_port = new_port != port->uart_base; - - if (!capable(CAP_SYS_ADMIN)) { - if (change_irq || change_port || - (new_serial.baud_base != port->uartclk / 16) || - (new_serial.close_delay != state->close_delay) || - (new_serial.xmit_fifo_size != port->fifosize) || - ((new_serial.flags & ~ASYNC_USR_MASK) != - (state->flags & ~ASYNC_USR_MASK))) - return -EPERM; - state->flags = ((state->flags & ~ASYNC_USR_MASK) | - (new_serial.flags & ASYNC_USR_MASK)); - info->flags = ((info->flags & ~ASYNC_USR_MASK) | - (new_serial.flags & ASYNC_USR_MASK)); - state->custom_divisor = new_serial.custom_divisor; - goto check_and_exit; - } - - if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || - (new_serial.baud_base < 9600)) - return -EINVAL; - - if (new_serial.type && change_port) { - for (i = 0; i < SERIAL_SICC_NR; i++) - if ((port != sicc_ports + i) && - sicc_ports[i].uart_base != new_port) - return -EADDRINUSE; - } - - if ((change_port || change_irq) && (state->count > 1)) - return -EBUSY; - - /* - * OK, past this point, all the error checking has been done. - * At this point, we start making changes..... - */ - port->uartclk = new_serial.baud_base * 16; - state->flags = ((state->flags & ~ASYNC_FLAGS) | - (new_serial.flags & ASYNC_FLAGS)); - info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) | - (info->flags & ASYNC_INTERNAL_FLAGS)); - state->custom_divisor = new_serial.custom_divisor; - state->close_delay = msecs_to_jiffies(10 * new_serial.close_delay); - state->closing_wait = msecs_to_jiffies(10 * new_serial.closing_wait); - info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; - port->fifosize = new_serial.xmit_fifo_size; - - if (change_port || change_irq) { - /* - * We need to shutdown the serial port at the old - * port/irq combination. - */ - siccuart_shutdown(info); - port->irqrx = new_serial.irq; - port->uart_base = new_port; - } - -check_and_exit: - if (!port->uart_base) - return 0; - if (info->flags & ASYNC_INITIALIZED) { - if ((old_state.flags & ASYNC_SPD_MASK) != - (state->flags & ASYNC_SPD_MASK) || - (old_state.custom_divisor != state->custom_divisor)) { - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) - info->tty->alt_speed = 57600; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) - info->tty->alt_speed = 115200; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) - info->tty->alt_speed = 230400; - if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) - info->tty->alt_speed = 460800; - siccuart_change_speed(info, NULL); - } - } else - retval = siccuart_startup(info); - return retval; + struct serial_struct new_serial; + struct SICC_state *state, old_state; + struct SICC_port *port; + unsigned long new_port; + unsigned int i, change_irq, change_port; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + state = info->state; + old_state = *state; + port = info->port; + + new_port = new_serial.port; + if (HIGH_BITS_OFFSET) + new_port += + (unsigned long)new_serial.port_high << HIGH_BITS_OFFSET; + + change_irq = new_serial.irq != port->irqrx; + change_port = new_port != port->uart_base; + + if (!capable(CAP_SYS_ADMIN)) { + if (change_irq || change_port || + (new_serial.baud_base != port->uartclk / 16) || + (new_serial.close_delay != state->close_delay) || + (new_serial.xmit_fifo_size != port->fifosize) || + ((new_serial.flags & ~ASYNC_USR_MASK) != + (state->flags & ~ASYNC_USR_MASK))) + return -EPERM; + state->flags = ((state->flags & ~ASYNC_USR_MASK) | + (new_serial.flags & ASYNC_USR_MASK)); + info->flags = ((info->flags & ~ASYNC_USR_MASK) | + (new_serial.flags & ASYNC_USR_MASK)); + state->custom_divisor = new_serial.custom_divisor; + goto check_and_exit; + } + + if ((new_serial.irq >= NR_IRQS) || (new_serial.irq < 0) || + (new_serial.baud_base < 9600)) + return -EINVAL; + + if (new_serial.type && change_port) { + for (i = 0; i < SERIAL_SICC_NR; i++) + if ((port != sicc_ports + i) && + sicc_ports[i].uart_base != new_port) + return -EADDRINUSE; + } + + if ((change_port || change_irq) && (state->count > 1)) + return -EBUSY; + + /* + * OK, past this point, all the error checking has been done. + * At this point, we start making changes..... + */ + port->uartclk = new_serial.baud_base * 16; + state->flags = ((state->flags & ~ASYNC_FLAGS) | + (new_serial.flags & ASYNC_FLAGS)); + info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) | + (info->flags & ASYNC_INTERNAL_FLAGS)); + state->custom_divisor = new_serial.custom_divisor; + state->close_delay = msecs_to_jiffies(10 * new_serial.close_delay); + state->closing_wait = msecs_to_jiffies(10 * new_serial.closing_wait); + info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; + port->fifosize = new_serial.xmit_fifo_size; + + if (change_port || change_irq) { + /* + * We need to shutdown the serial port at the old + * port/irq combination. + */ + siccuart_shutdown(info); + port->irqrx = new_serial.irq; + port->uart_base = new_port; + } + + check_and_exit: + if (!port->uart_base) + return 0; + if (info->flags & ASYNC_INITIALIZED) { + if ((old_state.flags & ASYNC_SPD_MASK) != + (state->flags & ASYNC_SPD_MASK) || + (old_state.custom_divisor != state->custom_divisor)) { + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) + info->tty->alt_speed = 57600; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) + info->tty->alt_speed = 115200; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) + info->tty->alt_speed = 230400; + if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) + info->tty->alt_speed = 460800; + siccuart_change_speed(info, NULL); + } + } else + retval = siccuart_startup(info); + return retval; } - /* * get_lsr_info - get line status register info */ static int get_lsr_info(struct SICC_info *info, unsigned int *value) { - unsigned int result, status; - unsigned long flags; + unsigned int result, status; + unsigned long flags; - /* disable interrupts while reading status from port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - status = readb(info->port->uart_base + BL_SICC_LSR); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - result = status & _LSR_TSR_EMPTY ? TIOCSER_TEMT : 0; - - /* - * If we're about to load something into the transmit - * register, we'll pretend the transmitter isn't empty to - * avoid a race condition (depending on when the transmit - * interrupt happens). - */ - if (info->x_char || - ((CIRC_CNT(info->xmit.head, info->xmit.tail, - SICC_XMIT_SIZE) > 0) && - !info->tty->stopped && !info->tty->hw_stopped)) - result &= TIOCSER_TEMT; + /* disable interrupts while reading status from port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + status = readb(info->port->uart_base + BL_SICC_LSR); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + result = status & _LSR_TSR_EMPTY ? TIOCSER_TEMT : 0; + + /* + * If we're about to load something into the transmit + * register, we'll pretend the transmitter isn't empty to + * avoid a race condition (depending on when the transmit + * interrupt happens). + */ + if (info->x_char || + ((CIRC_CNT(info->xmit.head, info->xmit.tail, + SICC_XMIT_SIZE) > 0) && + !info->tty->stopped && !info->tty->hw_stopped)) + result &= TIOCSER_TEMT; - return put_user(result, value); + return put_user(result, value); } static int get_modem_info(struct SICC_info *info, unsigned int *value) { - unsigned int result = info->mctrl; + unsigned int result = info->mctrl; - return put_user(result, value); + return put_user(result, value); } static int set_modem_info(struct SICC_info *info, unsigned int cmd, - unsigned int *value) + unsigned int *value) { - unsigned int arg, old; - unsigned long flags; + unsigned int arg, old; + unsigned long flags; - if (get_user(arg, value)) - return -EFAULT; + if (get_user(arg, value)) + return -EFAULT; - old = info->mctrl; - switch (cmd) { - case TIOCMBIS: - info->mctrl |= arg; - break; - - case TIOCMBIC: - info->mctrl &= ~arg; - break; - - case TIOCMSET: - info->mctrl = arg; - break; - - default: - return -EINVAL; - } - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (old != info->mctrl) - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return 0; + old = info->mctrl; + switch (cmd) { + case TIOCMBIS: + info->mctrl |= arg; + break; + + case TIOCMBIC: + info->mctrl &= ~arg; + break; + + case TIOCMSET: + info->mctrl = arg; + break; + + default: + return -EINVAL; + } + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (old != info->mctrl) + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return 0; } static void siccuart_break_ctl(struct tty_struct *tty, int break_state) { - struct SICC_info *info = tty->driver_data; - unsigned long flags; - unsigned int lcr_h; - - - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - lcr_h = readb(info->port + BL_SICC_LSR); - if (break_state == -1) - lcr_h |= _LSR_LB_MASK; - else - lcr_h &= ~_LSR_LB_MASK; - writeb(lcr_h, info->port + BL_SICC_LSRS); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); + struct SICC_info *info = tty->driver_data; + unsigned long flags; + unsigned int lcr_h; + + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + lcr_h = readb(info->port + BL_SICC_LSR); + if (break_state == -1) + lcr_h |= _LSR_LB_MASK; + else + lcr_h &= ~_LSR_LB_MASK; + writeb(lcr_h, info->port + BL_SICC_LSRS); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); } static int siccuart_ioctl(struct tty_struct *tty, struct file *file, - unsigned int cmd, unsigned long arg) + unsigned int cmd, unsigned long arg) { - struct SICC_info *info = tty->driver_data; - struct SICC_icount cnow; - struct serial_icounter_struct icount; - unsigned long flags; - - if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && - (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) && - (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { - if (tty->flags & (1 << TTY_IO_ERROR)) - return -EIO; - } - - switch (cmd) { - case TIOCMGET: - return get_modem_info(info, (unsigned int *)arg); - case TIOCMBIS: - case TIOCMBIC: - case TIOCMSET: - return set_modem_info(info, cmd, (unsigned int *)arg); - case TIOCGSERIAL: - return get_serial_info(info, - (struct serial_struct *)arg); - case TIOCSSERIAL: - return set_serial_info(info, - (struct serial_struct *)arg); - case TIOCSERGETLSR: /* Get line status register */ - return get_lsr_info(info, (unsigned int *)arg); - /* - * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change - * - mask passed in arg for lines of interest - * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) - * Caller should use TIOCGICOUNT to see which one it was - */ - case TIOCMIWAIT: - return 0; - /* - * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) - * Return: write counters to the user passed counter struct - * NB: both 1->0 and 0->1 transitions are counted except for - * RI where only 0->1 is counted. - */ - case TIOCGICOUNT: - /* disable interrupts while getting interrupt count */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - cnow = info->state->icount; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - icount.cts = cnow.cts; - icount.dsr = cnow.dsr; - icount.rng = cnow.rng; - icount.dcd = cnow.dcd; - icount.rx = cnow.rx; - icount.tx = cnow.tx; - icount.frame = cnow.frame; - icount.overrun = cnow.overrun; - icount.parity = cnow.parity; - icount.brk = cnow.brk; - icount.buf_overrun = cnow.buf_overrun; - - return copy_to_user((void *)arg, &icount, sizeof(icount)) - ? -EFAULT : 0; - - default: - return -ENOIOCTLCMD; - } - return 0; -} - -static void siccuart_set_termios(struct tty_struct *tty, struct termios *old_termios) -{ - struct SICC_info *info = tty->driver_data; - unsigned long flags; - unsigned int cflag = tty->termios->c_cflag; - - if ((cflag ^ old_termios->c_cflag) == 0 && - RELEVENT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) - return; - - siccuart_change_speed(info, old_termios); - - /* Handle transition to B0 status */ - if ((old_termios->c_cflag & CBAUD) && - !(cflag & CBAUD)) { - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl &= ~(TIOCM_RTS | TIOCM_DTR); - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } - - /* Handle transition away from B0 status */ - if (!(old_termios->c_cflag & CBAUD) && - (cflag & CBAUD)) { - /* disable interrupts while setting break state */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - info->mctrl |= TIOCM_DTR; - if (!(cflag & CRTSCTS) || - !test_bit(TTY_THROTTLED, &tty->flags)) - info->mctrl |= TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - } - - /* Handle turning off CRTSCTS */ - if ((old_termios->c_cflag & CRTSCTS) && - !(cflag & CRTSCTS)) { - tty->hw_stopped = 0; - siccuart_start(tty); - } - + struct SICC_info *info = tty->driver_data; + struct SICC_icount cnow; + struct serial_icounter_struct icount; + unsigned long flags; + + if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && + (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) && + (cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) { + if (tty->flags & (1 << TTY_IO_ERROR)) + return -EIO; + } + + switch (cmd) { + case TIOCMGET: + return get_modem_info(info, (unsigned int *)arg); + case TIOCMBIS: + case TIOCMBIC: + case TIOCMSET: + return set_modem_info(info, cmd, (unsigned int *)arg); + case TIOCGSERIAL: + return get_serial_info(info, (struct serial_struct *)arg); + case TIOCSSERIAL: + return set_serial_info(info, (struct serial_struct *)arg); + case TIOCSERGETLSR: /* Get line status register */ + return get_lsr_info(info, (unsigned int *)arg); + /* + * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change + * - mask passed in arg for lines of interest + * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) + * Caller should use TIOCGICOUNT to see which one it was + */ + case TIOCMIWAIT: + return 0; + /* + * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) + * Return: write counters to the user passed counter struct + * NB: both 1->0 and 0->1 transitions are counted except for + * RI where only 0->1 is counted. + */ + case TIOCGICOUNT: + /* disable interrupts while getting interrupt count */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + cnow = info->state->icount; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + icount.cts = cnow.cts; + icount.dsr = cnow.dsr; + icount.rng = cnow.rng; + icount.dcd = cnow.dcd; + icount.rx = cnow.rx; + icount.tx = cnow.tx; + icount.frame = cnow.frame; + icount.overrun = cnow.overrun; + icount.parity = cnow.parity; + icount.brk = cnow.brk; + icount.buf_overrun = cnow.buf_overrun; + + return copy_to_user((void *)arg, &icount, sizeof(icount)) + ? -EFAULT : 0; + + default: + return -ENOIOCTLCMD; + } + return 0; +} + +static void siccuart_set_termios(struct tty_struct *tty, + struct termios *old_termios) +{ + struct SICC_info *info = tty->driver_data; + unsigned long flags; + unsigned int cflag = tty->termios->c_cflag; + + if ((cflag ^ old_termios->c_cflag) == 0 && + RELEVENT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) + return; + + siccuart_change_speed(info, old_termios); + + /* Handle transition to B0 status */ + if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) { + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl &= ~(TIOCM_RTS | TIOCM_DTR); + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } + + /* Handle transition away from B0 status */ + if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { + /* disable interrupts while setting break state */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + info->mctrl |= TIOCM_DTR; + if (!(cflag & CRTSCTS) || !test_bit(TTY_THROTTLED, &tty->flags)) + info->mctrl |= TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + } + + /* Handle turning off CRTSCTS */ + if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { + tty->hw_stopped = 0; + siccuart_start(tty); + } #if 0 - /* - * No need to wake up processes in open wait, since they - * sample the CLOCAL flag once, and don't recheck it. - * XXX It's not clear whether the current behavior is correct - * or not. Hence, this may change..... - */ - if (!(old_termios->c_cflag & CLOCAL) && - (tty->termios->c_cflag & CLOCAL)) - wake_up_interruptible(&info->open_wait); + /* + * No need to wake up processes in open wait, since they + * sample the CLOCAL flag once, and don't recheck it. + * XXX It's not clear whether the current behavior is correct + * or not. Hence, this may change..... + */ + if (!(old_termios->c_cflag & CLOCAL) && + (tty->termios->c_cflag & CLOCAL)) + wake_up_interruptible(&info->open_wait); #endif } static void siccuart_close(struct tty_struct *tty, struct file *filp) { - struct SICC_info *info = tty->driver_data; - struct SICC_state *state; - unsigned long flags; - - if (!info) - return; - - state = info->state; - - //pr_debug("siccuart_close() called\n"); - - /* lock tty->driver_data while closing port */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - - if (tty_hung_up_p(filp)) { - goto quick_close; - } - - if ((tty->count == 1) && (state->count != 1)) { - /* - * Uh, oh. tty->count is 1, which means that the tty - * structure will be freed. state->count should always - * be one in these conditions. If it's greater than - * one, we've got real problems, since it means the - * serial port won't be shutdown. - */ - printk("siccuart_close: bad serial port count; tty->count is 1, state->count is %d\n", state->count); - state->count = 1; - } - if (--state->count < 0) { - printk("rs_close: bad serial port count for %s: %d\n", tty->name, state->count); - state->count = 0; - } - if (state->count) { - goto quick_close; - } - info->flags |= ASYNC_CLOSING; - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - /* - * Now we wait for the transmit buffer to clear; and we notify - * the line discipline to only process XON/XOFF characters. - */ - tty->closing = 1; - if (info->state->closing_wait != ASYNC_CLOSING_WAIT_NONE) - tty_wait_until_sent(tty, info->state->closing_wait); - /* - * At this point, we stop accepting input. To do this, we - * disable the receive line status interrupts. - */ - if (info->flags & ASYNC_INITIALIZED) { - siccuart_disable_rx_interrupt(info); - /* - * Before we drop DTR, make sure the UART transmitter - * has completely drained; this is especially - * important if there is a transmit FIFO! - */ - siccuart_wait_until_sent(tty, info->timeout); - } - siccuart_shutdown(info); - if (tty->driver->flush_buffer) - tty->driver->flush_buffer(tty); - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); - tty->closing = 0; - info->event = 0; - info->tty = NULL; - if (info->blocked_open) { - if (info->state->close_delay) - schedule_timeout_interruptible(info->state->close_delay); - wake_up_interruptible(&info->open_wait); - } - info->flags &= ~(ASYNC_NORMAL_ACTIVE|ASYNC_CLOSING); - wake_up_interruptible(&info->close_wait); - return; - -quick_close: - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - return; + struct SICC_info *info = tty->driver_data; + struct SICC_state *state; + unsigned long flags; + + if (!info) + return; + + state = info->state; + + //pr_debug("siccuart_close() called\n"); + + /* lock tty->driver_data while closing port */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + + if (tty_hung_up_p(filp)) { + goto quick_close; + } + + if ((tty->count == 1) && (state->count != 1)) { + /* + * Uh, oh. tty->count is 1, which means that the tty + * structure will be freed. state->count should always + * be one in these conditions. If it's greater than + * one, we've got real problems, since it means the + * serial port won't be shutdown. + */ + printk + ("siccuart_close: bad serial port count; tty->count is 1, state->count is %d\n", + state->count); + state->count = 1; + } + if (--state->count < 0) { + printk("rs_close: bad serial port count for %s: %d\n", + tty->name, state->count); + state->count = 0; + } + if (state->count) { + goto quick_close; + } + info->flags |= ASYNC_CLOSING; + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + /* + * Now we wait for the transmit buffer to clear; and we notify + * the line discipline to only process XON/XOFF characters. + */ + tty->closing = 1; + if (info->state->closing_wait != ASYNC_CLOSING_WAIT_NONE) + tty_wait_until_sent(tty, info->state->closing_wait); + /* + * At this point, we stop accepting input. To do this, we + * disable the receive line status interrupts. + */ + if (info->flags & ASYNC_INITIALIZED) { + siccuart_disable_rx_interrupt(info); + /* + * Before we drop DTR, make sure the UART transmitter + * has completely drained; this is especially + * important if there is a transmit FIFO! + */ + siccuart_wait_until_sent(tty, info->timeout); + } + siccuart_shutdown(info); + if (tty->driver->flush_buffer) + tty->driver->flush_buffer(tty); + if (tty->ldisc.flush_buffer) + tty->ldisc.flush_buffer(tty); + tty->closing = 0; + info->event = 0; + info->tty = NULL; + if (info->blocked_open) { + if (info->state->close_delay) + schedule_timeout_interruptible(info->state-> + close_delay); + wake_up_interruptible(&info->open_wait); + } + info->flags &= ~(ASYNC_NORMAL_ACTIVE | ASYNC_CLOSING); + wake_up_interruptible(&info->close_wait); + return; + + quick_close: + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + return; } static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout) { - struct SICC_info *info = (struct SICC_info *) tty->driver_data; - unsigned long char_time, expire; + struct SICC_info *info = (struct SICC_info *)tty->driver_data; + unsigned long char_time, expire; - if (info->port->fifosize == 0) - return; + if (info->port->fifosize == 0) + return; - /* - * Set the check interval to be 1/5 of the estimated time to - * send a single character, and make it at least 1. The check - * interval should also be less than the timeout. - * - * Note: we have to use pretty tight timings here to satisfy - * the NIST-PCTS. - */ - char_time = (info->timeout - msecs_to_jiffies(20)) / info->port->fifosize; - char_time = char_time / 5; - if (char_time == 0) - char_time = 1; - - // Crazy!! sometimes the input arg 'timeout' can be negtive numbers :-( - if (timeout >= 0 && timeout < char_time) - char_time = timeout; - /* - * If the transmitter hasn't cleared in twice the approximate - * amount of time to send the entire FIFO, it probably won't - * ever clear. This assumes the UART isn't doing flow - * control, which is currently the case. Hence, if it ever - * takes longer than info->timeout, this is probably due to a - * UART bug of some kind. So, we clamp the timeout parameter at - * 2*info->timeout. - */ - if (!timeout || timeout > 2 * info->timeout) - timeout = 2 * info->timeout; - - expire = jiffies + timeout; - pr_debug("siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...\n", - tty->index, jiffies, - expire, char_time); - while ((readb(info->port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != _LSR_TX_ALL) { - schedule_timeout_interruptible(char_time); - if (signal_pending(current)) - break; - if (timeout && time_after(jiffies, expire)) - break; - } - set_current_state(TASK_RUNNING); + /* + * Set the check interval to be 1/5 of the estimated time to + * send a single character, and make it at least 1. The check + * interval should also be less than the timeout. + * + * Note: we have to use pretty tight timings here to satisfy + * the NIST-PCTS. + */ + char_time = + (info->timeout - msecs_to_jiffies(20)) / info->port->fifosize; + char_time = char_time / 5; + if (char_time == 0) + char_time = 1; + + // Crazy!! sometimes the input arg 'timeout' can be negtive numbers :-( + if (timeout >= 0 && timeout < char_time) + char_time = timeout; + /* + * If the transmitter hasn't cleared in twice the approximate + * amount of time to send the entire FIFO, it probably won't + * ever clear. This assumes the UART isn't doing flow + * control, which is currently the case. Hence, if it ever + * takes longer than info->timeout, this is probably due to a + * UART bug of some kind. So, we clamp the timeout parameter at + * 2*info->timeout. + */ + if (!timeout || timeout > 2 * info->timeout) + timeout = 2 * info->timeout; + + expire = jiffies + timeout; + pr_debug + ("siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...\n", + tty->index, jiffies, expire, char_time); + while ((readb(info->port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) { + schedule_timeout_interruptible(char_time); + if (signal_pending(current)) + break; + if (timeout && time_after(jiffies, expire)) + break; + } + set_current_state(TASK_RUNNING); } static void siccuart_hangup(struct tty_struct *tty) { - struct SICC_info *info = tty->driver_data; - struct SICC_state *state = info->state; + struct SICC_info *info = tty->driver_data; + struct SICC_state *state = info->state; - siccuart_flush_buffer(tty); - if (info->flags & ASYNC_CLOSING) - return; - siccuart_shutdown(info); - info->event = 0; - state->count = 0; - info->flags &= ~ASYNC_NORMAL_ACTIVE; - info->tty = NULL; - wake_up_interruptible(&info->open_wait); + siccuart_flush_buffer(tty); + if (info->flags & ASYNC_CLOSING) + return; + siccuart_shutdown(info); + info->event = 0; + state->count = 0; + info->flags &= ~ASYNC_NORMAL_ACTIVE; + info->tty = NULL; + wake_up_interruptible(&info->open_wait); } static int block_til_ready(struct tty_struct *tty, struct file *filp, - struct SICC_info *info) + struct SICC_info *info) { - DECLARE_WAITQUEUE(wait, current); - struct SICC_state *state = info->state; - unsigned long flags; - int do_clocal = 0, extra_count = 0, retval; - - /* - * If the device is in the middle of being closed, then block - * until it's done, and then try again. - */ - if (tty_hung_up_p(filp) || - (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); - return (info->flags & ASYNC_HUP_NOTIFY) ? - -EAGAIN : -ERESTARTSYS; - } - - /* - * If non-blocking mode is set, or the port is not enabled, - * then make the check up front and then exit. - */ - if ((filp->f_flags & O_NONBLOCK) || - (tty->flags & (1 << TTY_IO_ERROR))) { - info->flags |= ASYNC_NORMAL_ACTIVE; - return 0; - } - - if (tty->termios->c_cflag & CLOCAL) - do_clocal = 1; - - /* - * Block waiting for the carrier detect and the line to become - * free (i.e., not in use by the callout). While we are in - * this loop, state->count is dropped by one, so that - * rs_close() knows when to free things. We restore it upon - * exit, either normal or abnormal. - */ - retval = 0; - add_wait_queue(&info->open_wait, &wait); - /* lock while decrementing state->count */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (!tty_hung_up_p(filp)) { - extra_count = 1; - state->count--; - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - info->blocked_open++; - while (1) { - /* disable interrupts while setting modem control lines */ - spin_lock_irqsave(&info->state->sicc_lock,flags); - if (tty->termios->c_cflag & CBAUD) { - info->mctrl = TIOCM_DTR | TIOCM_RTS; - info->port->set_mctrl(info->port, info->mctrl); - } - spin_unlock_irqrestore(&info->state->sicc_lock,flags); - set_current_state(TASK_INTERRUPTIBLE); - if (tty_hung_up_p(filp) || - !(info->flags & ASYNC_INITIALIZED)) { - if (info->flags & ASYNC_HUP_NOTIFY) - retval = -EAGAIN; - else - retval = -ERESTARTSYS; - break; - } - if (!(info->flags & ASYNC_CLOSING) && - (do_clocal /*|| (UART_GET_FR(info->port) & SICC_UARTFR_DCD)*/)) - break; - if (signal_pending(current)) { - retval = -ERESTARTSYS; - break; - } - schedule(); - } - set_current_state(TASK_RUNNING); - remove_wait_queue(&info->open_wait, &wait); - if (extra_count) - state->count++; - info->blocked_open--; - if (retval) - return retval; - info->flags |= ASYNC_NORMAL_ACTIVE; - return 0; + DECLARE_WAITQUEUE(wait, current); + struct SICC_state *state = info->state; + unsigned long flags; + int do_clocal = 0, extra_count = 0, retval; + + /* + * If the device is in the middle of being closed, then block + * until it's done, and then try again. + */ + if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { + if (info->flags & ASYNC_CLOSING) + interruptible_sleep_on(&info->close_wait); + return (info->flags & ASYNC_HUP_NOTIFY) ? + -EAGAIN : -ERESTARTSYS; + } + + /* + * If non-blocking mode is set, or the port is not enabled, + * then make the check up front and then exit. + */ + if ((filp->f_flags & O_NONBLOCK) || (tty->flags & (1 << TTY_IO_ERROR))) { + info->flags |= ASYNC_NORMAL_ACTIVE; + return 0; + } + + if (tty->termios->c_cflag & CLOCAL) + do_clocal = 1; + + /* + * Block waiting for the carrier detect and the line to become + * free (i.e., not in use by the callout). While we are in + * this loop, state->count is dropped by one, so that + * rs_close() knows when to free things. We restore it upon + * exit, either normal or abnormal. + */ + retval = 0; + add_wait_queue(&info->open_wait, &wait); + /* lock while decrementing state->count */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (!tty_hung_up_p(filp)) { + extra_count = 1; + state->count--; + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + info->blocked_open++; + while (1) { + /* disable interrupts while setting modem control lines */ + spin_lock_irqsave(&info->state->sicc_lock, flags); + if (tty->termios->c_cflag & CBAUD) { + info->mctrl = TIOCM_DTR | TIOCM_RTS; + info->port->set_mctrl(info->port, info->mctrl); + } + spin_unlock_irqrestore(&info->state->sicc_lock, flags); + set_current_state(TASK_INTERRUPTIBLE); + if (tty_hung_up_p(filp) || !(info->flags & ASYNC_INITIALIZED)) { + if (info->flags & ASYNC_HUP_NOTIFY) + retval = -EAGAIN; + else + retval = -ERESTARTSYS; + break; + } + if (!(info->flags & ASYNC_CLOSING) && + (do_clocal + /*|| (UART_GET_FR(info->port) & SICC_UARTFR_DCD) */ )) + break; + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } + schedule(); + } + set_current_state(TASK_RUNNING); + remove_wait_queue(&info->open_wait, &wait); + if (extra_count) + state->count++; + info->blocked_open--; + if (retval) + return retval; + info->flags |= ASYNC_NORMAL_ACTIVE; + return 0; } static struct SICC_info *siccuart_get(int line) { - struct SICC_info *info; - struct SICC_state *state = sicc_state + line; + struct SICC_info *info; + struct SICC_state *state = sicc_state + line; - state->count++; - if (state->info) - return state->info; - info = kmalloc(sizeof(struct SICC_info), GFP_KERNEL); - if (info) { - memset(info, 0, sizeof(struct SICC_info)); - init_waitqueue_head(&info->open_wait); - init_waitqueue_head(&info->close_wait); - init_waitqueue_head(&info->delta_msr_wait); - info->flags = state->flags; - info->state = state; - info->port = sicc_ports + line; - tasklet_init(&info->tlet, siccuart_tasklet_action, - (unsigned long)info); - } - if (state->info) { - kfree(info); - return state->info; - } - state->info = info; - return info; + state->count++; + if (state->info) + return state->info; + info = kmalloc(sizeof(struct SICC_info), GFP_KERNEL); + if (info) { + memset(info, 0, sizeof(struct SICC_info)); + init_waitqueue_head(&info->open_wait); + init_waitqueue_head(&info->close_wait); + init_waitqueue_head(&info->delta_msr_wait); + info->flags = state->flags; + info->state = state; + info->port = sicc_ports + line; + tasklet_init(&info->tlet, siccuart_tasklet_action, + (unsigned long)info); + } + if (state->info) { + kfree(info); + return state->info; + } + state->info = info; + return info; } static int siccuart_open(struct tty_struct *tty, struct file *filp) { - struct SICC_info *info; - int retval, line = tty->index; - - - // is this a line that we've got? - if (line >= SERIAL_SICC_NR) { - return -ENODEV; - } - - info = siccuart_get(line); - if (!info) - return -ENOMEM; - - tty->driver_data = info; - info->tty = tty; - info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; - - /* - * Make sure we have the temporary buffer allocated - */ - if (!tmp_buf) { - unsigned long page = get_zeroed_page(GFP_KERNEL); - if (tmp_buf) - free_page(page); - else if (!page) { - return -ENOMEM; - } - tmp_buf = (u_char *)page; - } - - /* - * If the port is in the middle of closing, bail out now. - */ - if (tty_hung_up_p(filp) || - (info->flags & ASYNC_CLOSING)) { - if (info->flags & ASYNC_CLOSING) - interruptible_sleep_on(&info->close_wait); - return -EAGAIN; - } - - /* - * Start up the serial port - */ - retval = siccuart_startup(info); - if (retval) { - return retval; - } - - retval = block_til_ready(tty, filp, info); - if (retval) { - return retval; - } + struct SICC_info *info; + int retval, line = tty->index; + // is this a line that we've got? + if (line >= SERIAL_SICC_NR) { + return -ENODEV; + } + + info = siccuart_get(line); + if (!info) + return -ENOMEM; + + tty->driver_data = info; + info->tty = tty; + info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; + + /* + * Make sure we have the temporary buffer allocated + */ + if (!tmp_buf) { + unsigned long page = get_zeroed_page(GFP_KERNEL); + if (tmp_buf) + free_page(page); + else if (!page) { + return -ENOMEM; + } + tmp_buf = (u_char *) page; + } + + /* + * If the port is in the middle of closing, bail out now. + */ + if (tty_hung_up_p(filp) || (info->flags & ASYNC_CLOSING)) { + if (info->flags & ASYNC_CLOSING) + interruptible_sleep_on(&info->close_wait); + return -EAGAIN; + } + + /* + * Start up the serial port + */ + retval = siccuart_startup(info); + if (retval) { + return retval; + } + + retval = block_til_ready(tty, filp, info); + if (retval) { + return retval; + } #ifdef CONFIG_SERIAL_SICC_CONSOLE - if (siccuart_cons.cflag && siccuart_cons.index == line) { - tty->termios->c_cflag = siccuart_cons.cflag; - siccuart_cons.cflag = 0; - siccuart_change_speed(info, NULL); - } + if (siccuart_cons.cflag && siccuart_cons.index == line) { + tty->termios->c_cflag = siccuart_cons.cflag; + siccuart_cons.cflag = 0; + siccuart_change_speed(info, NULL); + } #endif - return 0; + return 0; } static struct tty_operations sicc_ops = { @@ -1732,7 +1710,7 @@ static struct tty_operations sicc_ops = .flush_chars = siccuart_flush_chars, .write_room = siccuart_write_room, .chars_in_buffer = siccuart_chars_in_buffer, - .flush_buffer = siccuart_flush_buffer, + .flush_buffer = siccuart_flush_buffer, .ioctl = siccuart_ioctl, .throttle = siccuart_throttle, .unthrottle = siccuart_unthrottle, @@ -1747,36 +1725,37 @@ static struct tty_operations sicc_ops = int __init siccuart_init(void) { - int i; - siccnormal_driver = alloc_tty_driver(SERIAL_SICC_NR); - if (!siccnormal_driver) - return -ENOMEM; - printk("IBM Vesta SICC serial port driver V 0.1 by Yudong Yang and Yi Ge / IBM CRL .\n"); - siccnormal_driver->driver_name = "serial_sicc"; - siccnormal_driver->owner = THIS_MODULE; - siccnormal_driver->name = SERIAL_SICC_NAME; - siccnormal_driver->major = SERIAL_SICC_MAJOR; - siccnormal_driver->minor_start = SERIAL_SICC_MINOR; - siccnormal_driver->type = TTY_DRIVER_TYPE_SERIAL; - siccnormal_driver->subtype = SERIAL_TYPE_NORMAL; - siccnormal_driver->init_termios = tty_std_termios; - siccnormal_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - siccnormal_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; - tty_set_operations(siccnormal_driver, &sicc_ops); - - if (tty_register_driver(siccnormal_driver)) - panic("Couldn't register SICC serial driver\n"); - - for (i = 0; i < SERIAL_SICC_NR; i++) { - struct SICC_state *state = sicc_state + i; - state->line = i; - state->close_delay = msecs_to_jiffies(500); - state->closing_wait = 30 * HZ; - spin_lock_init(&state->sicc_lock); - } - + int i; + siccnormal_driver = alloc_tty_driver(SERIAL_SICC_NR); + if (!siccnormal_driver) + return -ENOMEM; + printk + ("IBM Vesta SICC serial port driver V 0.1 by Yudong Yang and Yi Ge / IBM CRL .\n"); + siccnormal_driver->driver_name = "serial_sicc"; + siccnormal_driver->owner = THIS_MODULE; + siccnormal_driver->name = SERIAL_SICC_NAME; + siccnormal_driver->major = SERIAL_SICC_MAJOR; + siccnormal_driver->minor_start = SERIAL_SICC_MINOR; + siccnormal_driver->type = TTY_DRIVER_TYPE_SERIAL; + siccnormal_driver->subtype = SERIAL_TYPE_NORMAL; + siccnormal_driver->init_termios = tty_std_termios; + siccnormal_driver->init_termios.c_cflag = + B9600 | CS8 | CREAD | HUPCL | CLOCAL; + siccnormal_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + tty_set_operations(siccnormal_driver, &sicc_ops); + + if (tty_register_driver(siccnormal_driver)) + panic("Couldn't register SICC serial driver\n"); + + for (i = 0; i < SERIAL_SICC_NR; i++) { + struct SICC_state *state = sicc_state + i; + state->line = i; + state->close_delay = msecs_to_jiffies(500); + state->closing_wait = 30 * HZ; + spin_lock_init(&state->sicc_lock); + } - return 0; + return 0; } __initcall(siccuart_init); @@ -1793,26 +1772,26 @@ __initcall(siccuart_init); #ifdef used_and_not_const_char_pointer static int siccuart_console_read(struct console *co, const char *s, u_int count) { - struct SICC_port *port = &sicc_ports[co->index]; - unsigned int status; - char *w; - int c; - - pr_debug("siccuart_console_read() called\n"); - - c = 0; - w = s; - while (c < count) { - if(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL) { - *w++ = readb(port->uart_base + BL_SICC_RBR); - c++; - } else { - // nothing more to get, return - return c; - } - } - // return the count - return c; + struct SICC_port *port = &sicc_ports[co->index]; + unsigned int status; + char *w; + int c; + + pr_debug("siccuart_console_read() called\n"); + + c = 0; + w = s; + while (c < count) { + if (readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL) { + *w++ = readb(port->uart_base + BL_SICC_RBR); + c++; + } else { + // nothing more to get, return + return c; + } + } + // return the count + return c; } #endif @@ -1822,36 +1801,40 @@ static int siccuart_console_read(struct * * The console_lock must be held when we get here. */ -static void siccuart_console_write(struct console *co, const char *s, u_int count) +static void siccuart_console_write(struct console *co, const char *s, + u_int count) { - struct SICC_port *port = &sicc_ports[co->index]; - unsigned int old_cr; - int i; - - /* - * First save the CR then disable the interrupts - */ - old_cr = readb(port->uart_base + BL_SICC_TxCR); - writeb(old_cr & ~_TxCR_DME_MASK, port->uart_base + BL_SICC_TxCR); - - /* - * Now, do each character - */ - for (i = 0; i < count; i++) { - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb(s[i], port->uart_base + BL_SICC_TBR); - if (s[i] == '\n') { - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb('\r', port->uart_base + BL_SICC_TBR); - } - } - - /* - * Finally, wait for transmitter to become empty - * and restore the TCR - */ - while ((readb(port->uart_base + BL_SICC_LSR)&_LSR_TX_ALL) != _LSR_TX_ALL); - writeb(old_cr, port->uart_base + BL_SICC_TxCR); + struct SICC_port *port = &sicc_ports[co->index]; + unsigned int old_cr; + int i; + + /* + * First save the CR then disable the interrupts + */ + old_cr = readb(port->uart_base + BL_SICC_TxCR); + writeb(old_cr & ~_TxCR_DME_MASK, port->uart_base + BL_SICC_TxCR); + + /* + * Now, do each character + */ + for (i = 0; i < count; i++) { + while ((readb(port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) ; + writeb(s[i], port->uart_base + BL_SICC_TBR); + if (s[i] == '\n') { + while ((readb(port->uart_base + BL_SICC_LSR) & + _LSR_TX_ALL) != _LSR_TX_ALL) ; + writeb('\r', port->uart_base + BL_SICC_TBR); + } + } + + /* + * Finally, wait for transmitter to become empty + * and restore the TCR + */ + while ((readb(port->uart_base + BL_SICC_LSR) & _LSR_TX_ALL) != + _LSR_TX_ALL) ; + writeb(old_cr, port->uart_base + BL_SICC_TxCR); } /* @@ -1859,12 +1842,12 @@ static void siccuart_console_write(struc */ static int siccuart_console_wait_key(struct console *co) { - struct SICC_port *port = &sicc_ports[co->index]; - int c; + struct SICC_port *port = &sicc_ports[co->index]; + int c; - while(!(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL)); - c = readb(port->uart_base + BL_SICC_RBR); - return c; + while (!(readb(port->uart_base + BL_SICC_LSR) & _LSR_RBR_FULL)) ; + c = readb(port->uart_base + BL_SICC_RBR); + return c; } static struct tty_driver *siccuart_console_device(struct console *c, int *index) @@ -1875,135 +1858,164 @@ static struct tty_driver *siccuart_conso static int __init siccuart_console_setup(struct console *co, char *options) { - struct SICC_port *port; - int baud = 9600; - int bits = 8; - int parity = 'n'; - u_int cflag = CREAD | HUPCL | CLOCAL; - u_int lcr_h, quot; - - - if (co->index >= SERIAL_SICC_NR) - co->index = 0; - - port = &sicc_ports[co->index]; - - if (port->uart_base == 0) - port->uart_base = (int)ioremap(port->uart_base_phys, PAGE_SIZE); - - if (options) { - char *s = options; - baud = simple_strtoul(s, NULL, 10); - while (*s >= '0' && *s <= '9') - s++; - if (*s) parity = *s++; - if (*s) bits = *s - '0'; - } - - /* - * Now construct a cflag setting. - */ - switch (baud) { - case 1200: cflag |= B1200; break; - case 2400: cflag |= B2400; break; - case 4800: cflag |= B4800; break; - default: cflag |= B9600; baud = 9600; break; - case 19200: cflag |= B19200; break; - case 38400: cflag |= B38400; break; - case 57600: cflag |= B57600; break; - case 115200: cflag |= B115200; break; - } - switch (bits) { - case 7: cflag |= CS7; lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; break; - default: cflag |= CS8; lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; break; - } - switch (parity) { - case 'o': - case 'O': cflag |= PARODD; lcr_h |= _LCR_PTY_ODD; break; - case 'e': - case 'E': cflag |= PARENB; lcr_h |= _LCR_PE_ENABLE | _LCR_PTY_ODD; break; - } - - co->cflag = cflag; - - - { - // a copy of is inserted here ppc403SetBaud(com_port, (int)9600); - unsigned long divisor, clockSource, temp; - unsigned int rate = baud; - - /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ - powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & 0xFEFFFFFF)); - - /* Determine Internal Baud Clock Frequency */ - /* powerpcMfclkgpcr() reads DCR 0x120 - the*/ - /* SCCR (Serial Clock Control Register) on Vesta */ - temp = powerpcMfclkgpcr(); - - if(temp & 0x00000080) { - clockSource = 324000000; - } - else { - clockSource = 216000000; - } - clockSource = clockSource/(unsigned long)((temp&0x00FC0000)>>18); - divisor = clockSource/(16*rate) - 1; - /* divisor has only 12 bits of resolution */ - if(divisor>0x00000FFF){ - divisor=0x00000FFF; - } - - quot = divisor; - } - - writeb((quot & 0x00000F00)>>8, port->uart_base + BL_SICC_BRDH ); - writeb( quot & 0x00000FF, port->uart_base + BL_SICC_BRDL ); - - /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ - /* For now, do NOT use FIFOs since 403 UART did not have this */ - /* capability and this driver was inherited from 403UART. */ - writeb(_CTL2_EXTERN, port->uart_base + BL_SICC_CTL2); - - writeb(lcr_h, port->uart_base + BL_SICC_LCR); - writeb(_RCR_ER_ENABLE | _RCR_PME_HARD, port->uart_base + BL_SICC_RCR); - writeb( _TxCR_ET_ENABLE , port->uart_base + BL_SICC_TxCR); - - // writeb(, info->port->uart_base + BL_SICC_RCR ); - /* - * Transmitter Command Register: Transmitter enabled & DMA + TBR interrupt - * + Transmitter Empty interrupt + Transmitter error interrupt disabled & - * Stop mode when CTS active enabled & Transmit Break + Pattern Generation - * mode disabled. - */ - - writeb( 0x00, port->uart_base + BL_SICC_IrCR ); // disable IrDA - - readb(port->uart_base + BL_SICC_RBR); - - writeb(0xf8, port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ - - /* we will enable the port as we need it */ - - return 0; -} - -static struct console siccuart_cons = -{ - .name = SERIAL_SICC_NAME, - .write = siccuart_console_write, + struct SICC_port *port; + int baud = 9600; + int bits = 8; + int parity = 'n'; + u_int cflag = CREAD | HUPCL | CLOCAL; + u_int lcr_h, quot; + + if (co->index >= SERIAL_SICC_NR) + co->index = 0; + + port = &sicc_ports[co->index]; + + if (port->uart_base == 0) + port->uart_base = (int)ioremap(port->uart_base_phys, PAGE_SIZE); + + if (options) { + char *s = options; + baud = simple_strtoul(s, NULL, 10); + while (*s >= '0' && *s <= '9') + s++; + if (*s) + parity = *s++; + if (*s) + bits = *s - '0'; + } + + /* + * Now construct a cflag setting. + */ + switch (baud) { + case 1200: + cflag |= B1200; + break; + case 2400: + cflag |= B2400; + break; + case 4800: + cflag |= B4800; + break; + default: + cflag |= B9600; + baud = 9600; + break; + case 19200: + cflag |= B19200; + break; + case 38400: + cflag |= B38400; + break; + case 57600: + cflag |= B57600; + break; + case 115200: + cflag |= B115200; + break; + } + switch (bits) { + case 7: + cflag |= CS7; + lcr_h = _LCR_PE_DISABLE | _LCR_DB_7_BITS | _LCR_SB_1_BIT; + break; + default: + cflag |= CS8; + lcr_h = _LCR_PE_DISABLE | _LCR_DB_8_BITS | _LCR_SB_1_BIT; + break; + } + switch (parity) { + case 'o': + case 'O': + cflag |= PARODD; + lcr_h |= _LCR_PTY_ODD; + break; + case 'e': + case 'E': + cflag |= PARENB; + lcr_h |= _LCR_PE_ENABLE | _LCR_PTY_ODD; + break; + } + + co->cflag = cflag; + + { + // a copy of is inserted here ppc403SetBaud(com_port, (int)9600); + unsigned long divisor, clockSource, temp; + unsigned int rate = baud; + + /* Ensure CICCR[7] is 0 to select Internal Baud Clock */ + powerpcMtcic_cr((unsigned long)(powerpcMfcic_cr() & + 0xFEFFFFFF)); + + /* Determine Internal Baud Clock Frequency */ + /* powerpcMfclkgpcr() reads DCR 0x120 - the */ + /* SCCR (Serial Clock Control Register) on Vesta */ + temp = powerpcMfclkgpcr(); + + if (temp & 0x00000080) { + clockSource = 324000000; + } else { + clockSource = 216000000; + } + clockSource = + clockSource / (unsigned long)((temp & 0x00FC0000) >> 18); + divisor = clockSource / (16 * rate) - 1; + /* divisor has only 12 bits of resolution */ + if (divisor > 0x00000FFF) { + divisor = 0x00000FFF; + } + + quot = divisor; + } + + writeb((quot & 0x00000F00) >> 8, port->uart_base + BL_SICC_BRDH); + writeb(quot & 0x00000FF, port->uart_base + BL_SICC_BRDL); + + /* Set CTL2 reg to use external clock (ExtClk) and enable FIFOs. */ + /* For now, do NOT use FIFOs since 403 UART did not have this */ + /* capability and this driver was inherited from 403UART. */ + writeb(_CTL2_EXTERN, port->uart_base + BL_SICC_CTL2); + + writeb(lcr_h, port->uart_base + BL_SICC_LCR); + writeb(_RCR_ER_ENABLE | _RCR_PME_HARD, port->uart_base + BL_SICC_RCR); + writeb(_TxCR_ET_ENABLE, port->uart_base + BL_SICC_TxCR); + + // writeb(, info->port->uart_base + BL_SICC_RCR ); + /* + * Transmitter Command Register: Transmitter enabled & DMA + TBR interrupt + * + Transmitter Empty interrupt + Transmitter error interrupt disabled & + * Stop mode when CTS active enabled & Transmit Break + Pattern Generation + * mode disabled. + */ + + writeb(0x00, port->uart_base + BL_SICC_IrCR); // disable IrDA + + readb(port->uart_base + BL_SICC_RBR); + + writeb(0xf8, port->uart_base + BL_SICC_LSR); /* reset bits 0-4 of LSR */ + + /* we will enable the port as we need it */ + + return 0; +} + +static struct console siccuart_cons = { + .name = SERIAL_SICC_NAME, + .write = siccuart_console_write, #ifdef used_and_not_const_char_pointer - .read = siccuart_console_read, + .read = siccuart_console_read, #endif - .device = siccuart_console_device, - .wait_key = siccuart_console_wait_key, - .setup = siccuart_console_setup, - .flags = CON_PRINTBUFFER, - .index = -1, + .device = siccuart_console_device, + .wait_key = siccuart_console_wait_key, + .setup = siccuart_console_setup, + .flags = CON_PRINTBUFFER, + .index = -1, }; void __init sicc_console_init(void) { - register_console(&siccuart_cons); + register_console(&siccuart_cons); } -#endif /* CONFIG_SERIAL_SICC_CONSOLE */ +#endif /* CONFIG_SERIAL_SICC_CONSOLE */ --- a/drivers/acorn/block/fd1772.c +++ b/drivers/acorn/block/fd1772.c @@ -124,6 +124,8 @@ * Minor parameter, name layouts for 2.4.x differences */ +#undef DEBUG /* define to enable debugging statements */ + #include #include #include @@ -165,13 +167,6 @@ /* Ditto worries for Arc - DAG */ #define FD_MAX_UNITS 4 #define TRACKBUFFER 0 -/*#define DEBUG*/ - -#ifdef DEBUG -#define DPRINT(a) printk a -#else -#define DPRINT(a) -#endif static struct request_queue *floppy_queue; @@ -180,6 +175,9 @@ static struct request_queue *floppy_queu #define DEVICE_NAME "floppy" #define QUEUE (floppy_queue) #define CURRENT elv_next_request(floppy_queue) +#define PFX DEVICE_NAME ": " + +#define DBG(fmt, args...) pr_debug(PFX "%s: " fmt, __FUNCTION__ , ## args) /* Disk types: DD */ static struct archy_disk_type { @@ -240,9 +238,9 @@ extern volatile int fdc1772_fdc_int_done void FDC1772_WRITE(int reg, unsigned char val) { if (reg == FDC1772REG_CMD) { - DPRINT(("FDC1772_WRITE new command 0x%x @ %d\n", val,jiffies)); + DBG("new command 0x%x @ %d\n", val,jiffies); if (fdc1772_fdc_int_done) { - DPRINT(("FDC1772_WRITE: Hmm fdc1772_fdc_int_done true - resetting\n")); + DBG("Hmm fdc1772_fdc_int_done true - resetting\n"); fdc1772_fdc_int_done = 0; }; }; @@ -405,9 +403,7 @@ static void fd_select_side(int side) static void fd_select_drive(int drive) { -#ifdef DEBUG - printk("fd_select_drive:%d\n", drive); -#endif + DBG("%d\n", drive); /* Hmm - nowhere do we seem to turn the motor on - I'm going to do it here! */ oldlatch_aupdate(LATCHA_MOTOR | LATCHA_INUSE, 0); @@ -430,7 +426,7 @@ static void fd_deselect(void) { unsigned long flags; - DPRINT(("fd_deselect\n")); + DBG("start\n"); oldlatch_aupdate(LATCHA_FDSELALL | LATCHA_MOTOR | LATCHA_INUSE, 0xf | LATCHA_MOTOR | LATCHA_INUSE); @@ -470,7 +466,7 @@ static void fd_motor_off_timer(unsigned * off on the Arc, since the motor control is actually on * Latch A */ - DPRINT(("fdc1772: deselecting in fd_motor_off_timer\n")); + DBG("deselecting\n"); fd_deselect(); MotorOn = 0; restore_flags(flags); @@ -519,7 +515,7 @@ static void check_change(unsigned long d /* The idea here is that if the write protect line has changed then the disc must have changed */ if (stat != unit[drive].wpstat) { - DPRINT(("wpstat[%d] = %d\n", drive, stat)); + DBG("wpstat[%d] = %d\n", drive, stat); unit[drive].wpstat = stat; set_bit(drive, &changed_floppies); } @@ -575,12 +571,13 @@ static void floppy_irqconsequencehandler if (handler) { nop(); status = (unsigned char) fdc1772_comendstatus; - DPRINT(("FDC1772 irq, status = %02x handler = %08lx\n", (unsigned int) status, (unsigned long) handler)); + DBG("status = %02x handler = %08lx\n", (unsigned int) status, + (unsigned long) handler); handler(status); } else { - DPRINT(("FDC1772 irq, no handler status=%02x\n", fdc1772_comendstatus)); + DBG("no handler status=%02x\n", fdc1772_comendstatus); } - DPRINT(("FDC1772 irq: end of floppy_irq\n")); + DBG("end\n"); } @@ -590,16 +587,16 @@ static void floppy_irqconsequencehandler static void fd_error(void) { - printk("FDC1772: fd_error\n"); + DBG("start\n"); /*panic("fd1772: fd_error"); *//* DAG tmp */ if (!CURRENT) return; CURRENT->errors++; if (CURRENT->errors >= MAX_ERRORS) { - printk("fd%d: too many errors.\n", SelectedDrive); + printk(KERN_ERR "fd%d: too many errors, giving up\n", SelectedDrive); end_request(CURRENT, 0); } else if (CURRENT->errors == RECALIBRATE_ERRORS) { - printk("fd%d: recalibrating\n", SelectedDrive); + printk(KERN_ERR "fd%d: error, recalibrating...\n", SelectedDrive); if (SelectedDrive != -1) unit[SelectedDrive].track = -1; } @@ -623,7 +620,7 @@ static void fd_error(void) static void do_fd_action(int drive) { struct request *req; - DPRINT(("do_fd_action unit[drive].track=%d\n", unit[drive].track)); + DBG("unit[drive].track=%d\n", unit[drive].track); #ifdef TRACKBUFFER repeat: @@ -671,12 +668,12 @@ repeat: static void fd_calibrate(void) { - DPRINT(("fd_calibrate\n")); + DBG("start\n"); if (unit[SelectedDrive].track >= 0) { fd_calibrate_done(0); return; } - DPRINT(("fd_calibrate (after track compare)\n")); + DBG("(after track compare)\n"); SET_IRQ_HANDLER(fd_calibrate_done); /* we can't verify, since the speed may be incorrect */ FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_RESTORE | unit[SelectedDrive].steprate); @@ -690,12 +687,12 @@ static void fd_calibrate(void) static void fd_calibrate_done(int status) { - DPRINT(("fd_calibrate_done()\n")); + DBG("start\n"); STOP_TIMEOUT(); /* set the correct speed now */ if (status & FDC1772STAT_RECNF) { - printk("fd%d: restore failed\n", SelectedDrive); + printk(KERN_ERR "fd%d: restore failed\n", SelectedDrive); fd_error(); } else { unit[SelectedDrive].track = 0; @@ -711,8 +708,8 @@ static void fd_calibrate_done(int status static void fd_seek(void) { unsigned long flags; - DPRINT(("fd_seek() to track %d (unit[SelectedDrive].track=%d)\n", ReqTrack, - unit[SelectedDrive].track)); + DBG("to track %d (unit[SelectedDrive].track=%d)\n", ReqTrack, + unit[SelectedDrive].track); if (unit[SelectedDrive].track == ReqTrack << unit[SelectedDrive].disktype->stretch) { fd_seek_done(0); @@ -738,12 +735,12 @@ static void fd_seek(void) static void fd_seek_done(int status) { - DPRINT(("fd_seek_done()\n")); + DBG("start\n"); STOP_TIMEOUT(); /* set the correct speed */ if (status & FDC1772STAT_RECNF) { - printk("fd%d: seek error (to track %d)\n", + printk(KERN_ERR "fd%d: seek error (to track %d)\n", SelectedDrive, ReqTrack); /* we don't know exactly which track we are on now! */ unit[SelectedDrive].track = -1; @@ -772,7 +769,7 @@ static void fd_rwsec(void) unsigned int rwflag, old_motoron; unsigned int track; - DPRINT(("fd_rwsec(), Sec=%d, Access=%c\n", ReqSector, ReqCmd == WRITE ? 'w' : 'r')); + DBG("Sec=%d, Access=%c\n", ReqSector, ReqCmd == WRITE ? 'w' : 'r'); if (ReqCmd == WRITE) { /*cache_push( (unsigned long)ReqData, 512 ); */ paddr = (unsigned long) ReqData; @@ -786,11 +783,11 @@ static void fd_rwsec(void) rwflag = 0; } - DPRINT(("fd_rwsec() before sidesel rwflag=%d sec=%d trk=%d\n", rwflag, - ReqSector, FDC1772_READ(FDC1772REG_TRACK))); + DBG("before sidesel rwflag=%d sec=%d trk=%d\n", rwflag, + ReqSector, FDC1772_READ(FDC1772REG_TRACK)); fd_select_side(ReqSide); - /*DPRINT(("fd_rwsec() before start sector \n")); */ + /*DBG("before start sector\n"); */ /* Start sector of this operation */ #ifdef TRACKBUFFER FDC1772_WRITE( FDC1772REG_SECTOR, !read_track ? ReqSector : 1 ); @@ -806,7 +803,7 @@ static void fd_rwsec(void) } udelay(25); - DPRINT(("fd_rwsec() before setup DMA \n")); + DBG("before setup DMA\n"); /* Setup DMA - Heavily modified by DAG */ save_flags(flags); clf(); @@ -834,7 +831,7 @@ static void fd_rwsec(void) )); restore_flags(flags); - DPRINT(("fd_rwsec() after DMA setup flags=0x%08x\n", flags)); + DBG("after DMA setup flags=0x%08x\n", flags); /*sti(); *//* DAG - Hmm */ /* Hmm - should do something DAG */ old_motoron = MotorOn; @@ -853,15 +850,15 @@ static void fd_rwsec(void) */ /* 1 rot. + 5 rot.s if motor was off */ mod_timer(&readtrack_timer, jiffies + HZ/5 + (old_motoron ? 0 : HZ)); - DPRINT(("Setting readtrack_timer to %d @ %d\n", - readtrack_timer.expires,jiffies)); + DBG("setting readtrack_timer to %d @ %d\n", + readtrack_timer.expires,jiffies); MultReadInProgress = 1; } #endif - /*DPRINT(("fd_rwsec() before START_TIMEOUT \n")); */ + /*DBG("before START_TIMEOUT\n"); */ START_TIMEOUT(); - /*DPRINT(("fd_rwsec() after START_TIMEOUT \n")); */ + /*DBG("after START_TIMEOUT\n"); */ } @@ -872,7 +869,7 @@ static void fd_readtrack_check(unsigned unsigned long flags, addr; extern unsigned char *fdc1772_dataaddr; - DPRINT(("fd_readtrack_check @ %d\n",jiffies)); + DBG("%d jiffies\n", jiffies); save_flags(flags); clf(); @@ -892,7 +889,7 @@ static void fd_readtrack_check(unsigned /* get the current DMA address */ addr=(unsigned long)fdc1772_dataaddr; /* DAG - ? */ - DPRINT(("fd_readtrack_check: addr=%x PhysTrackBuffer=%x\n",addr,PhysTrackBuffer)); + DBG("addr=%x PhysTrackBuffer=%x\n",addr,PhysTrackBuffer); if (addr >= (unsigned int)PhysTrackBuffer + unit[SelectedDrive].disktype->spt*512) { /* already read enough data, force an FDC interrupt to stop @@ -900,7 +897,7 @@ static void fd_readtrack_check(unsigned */ SET_IRQ_HANDLER( NULL ); restore_flags(flags); - DPRINT(("fd_readtrack_check(): done\n")); + DBG("done\n"); FDC1772_WRITE( FDC1772REG_CMD, FDC1772CMD_FORCI ); udelay(25); @@ -911,7 +908,7 @@ static void fd_readtrack_check(unsigned } else { /* not yet finished, wait another tenth rotation */ restore_flags(flags); - DPRINT(("fd_readtrack_check(): not yet finished\n")); + DBG("not yet finished\n"); readtrack_timer.expires = jiffies + HZ/5/10; add_timer( &readtrack_timer ); } @@ -923,7 +920,7 @@ static void fd_rwsec_done(int status) { unsigned int track; - DPRINT(("fd_rwsec_done() status=%d @ %d\n", status,jiffies)); + DBG("status=%d @ %d\n", status,jiffies); #ifdef TRACKBUFFER if (read_track && !MultReadInProgress) @@ -945,7 +942,7 @@ static void fd_rwsec_done(int status) unit[SelectedDrive].disktype->stretch); } if (ReqCmd == WRITE && (status & FDC1772STAT_WPROT)) { - printk("fd%d: is write protected\n", SelectedDrive); + printk(KERN_ERR "fd%d: is write protected\n", SelectedDrive); goto err_end; } if ((status & FDC1772STAT_RECNF) @@ -982,17 +979,17 @@ static void fd_rwsec_done(int status) do_fd_action(SelectedDrive); return; } - printk("fd%d: sector %d not found (side %d, track %d)\n", + printk(KERN_ERR "fd%d: sector %d not found (side %d, track %d)\n", SelectedDrive, FDC1772_READ(FDC1772REG_SECTOR), ReqSide, ReqTrack); goto err_end; } if (status & FDC1772STAT_CRC) { - printk("fd%d: CRC error (side %d, track %d, sector %d)\n", + printk(KERN_ERR "fd%d: CRC error (side %d, track %d, sector %d)\n", SelectedDrive, ReqSide, ReqTrack, FDC1772_READ(FDC1772REG_SECTOR)); goto err_end; } if (status & FDC1772STAT_LOST) { - printk("fd%d: lost data (side %d, track %d, sector %d)\n", + printk(KERN_ERR "fd%d: lost data (side %d, track %d, sector %d)\n", SelectedDrive, ReqSide, ReqTrack, FDC1772_READ(FDC1772REG_SECTOR)); goto err_end; } @@ -1046,7 +1043,7 @@ static void fd_times_out(unsigned long d FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_FORCI); udelay(25); - printk("floppy timeout\n"); + printk(KERN_WARNING "floppy timeout\n"); STOP_TIMEOUT(); /* hmm - should we do this ? */ fd_error(); } @@ -1068,7 +1065,7 @@ static void finish_fdc(void) if (!NeedSeek) { finish_fdc_done(0); } else { - DPRINT(("finish_fdc: dummy seek started\n")); + DBG("dummy seek started\n"); FDC1772_WRITE(FDC1772REG_DATA, unit[SelectedDrive].track); SET_IRQ_HANDLER(finish_fdc_done); FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_SEEK); @@ -1086,7 +1083,7 @@ static void finish_fdc_done(int dummy) { unsigned long flags; - DPRINT(("finish_fdc_done entered\n")); + DBG("start\n"); STOP_TIMEOUT(); NeedSeek = 0; @@ -1109,7 +1106,7 @@ static void finish_fdc_done(int dummy) wake_up(&fdc_wait); restore_flags(flags); - DPRINT(("finish_fdc() finished\n")); + DBG("end\n"); } @@ -1189,8 +1186,8 @@ static void setup_req_params(int drive) read_track = (ReqCmd == READ && CURRENT->errors == 0); #endif - DPRINT(("Request params: Si=%d Tr=%d Se=%d Data=%08lx\n", ReqSide, - ReqTrack, ReqSector, (unsigned long) ReqData)); + DBG("Request params: Si=%d Tr=%d Se=%d Data=%08lx\n", ReqSide, + ReqTrack, ReqSector, (unsigned long) ReqData); } @@ -1199,9 +1196,9 @@ static void redo_fd_request(void) int drive, type; struct archy_floppy_struct *floppy; - DPRINT(("redo_fd_request: CURRENT=%p dev=%s CURRENT->sector=%ld\n", + DBG("CURRENT=%p dev=%s CURRENT->sector=%ld\n" CURRENT, CURRENT ? CURRENT->rq_disk->disk_name : "", - CURRENT ? CURRENT->sector : 0)); + CURRENT ? CURRENT->sector : 0); repeat: @@ -1214,7 +1211,7 @@ repeat: if (!floppy->connected) { /* drive not connected */ - printk("Unknown Device: fd%d\n", drive); + printk(KERN_ERR "Unknown Device: fd%d\n", drive); end_request(CURRENT, 0); goto repeat; } @@ -1229,7 +1226,7 @@ repeat: /* user supplied disk type */ --type; if (type >= NUM_DISK_TYPES) { - printk("fd%d: invalid disk format", drive); + printk(KERN_ERR "fd%d: invalid disk format", drive); end_request(CURRENT, 0); goto repeat; } @@ -1275,7 +1272,7 @@ static void do_fd_request(request_queue_ { unsigned long flags; - DPRINT(("do_fd_request for pid %d\n", current->pid)); + DBG("pid %d\n", current->pid); if (fdc_busy) return; save_flags(flags); cli(); @@ -1354,7 +1351,7 @@ static int fd_test_drive_present(int dri unsigned char status; int ok; - printk("fd_test_drive_present %d\n", drive); + DBG("drive %d\n", drive); if (drive > 1) return (0); return (1); /* Simple hack for the moment - the autodetect doesn't seem to work on arc */ @@ -1392,15 +1389,15 @@ static int fd_test_drive_present(int dri /* dummy seek command to make WP bit accessible */ FDC1772_WRITE(FDC1772REG_DATA, 0); FDC1772_WRITE(FDC1772REG_CMD, FDC1772CMD_SEEK); - printk("fd_test_drive_present: just before wait for int\n"); + DBG("just before wait for int\n"); /* DAG: Guess means wait for interrupt */ while (!(ioc_readb(IOC_FIQSTAT) & 2)); - printk("fd_test_drive_present: just after wait for int\n"); + DBG("just after wait for int\n"); status = FDC1772_READ(FDC1772REG_STATUS); } - printk("fd_test_drive_present: just before ENABLE_IRQ\n"); + DBG("just before ENABLE_IRQ\n"); ENABLE_IRQ(); - printk("fd_test_drive_present: about to return\n"); + DBG("about to return\n"); return (ok); } @@ -1413,14 +1410,15 @@ static void config_types(void) { int drive, cnt = 0; - printk("Probing floppy drive(s):\n"); + pr_info("Probing floppy drive(s):"); for (drive = 0; drive < FD_MAX_UNITS; drive++) { fd_probe(drive); if (unit[drive].connected) { - printk("fd%d\n", drive); + printk(" fd%d", drive); ++cnt; } } + printk ("\n"); if (FDC1772_READ(FDC1772REG_STATUS) & FDC1772STAT_BUSY) { /* If FDC1772 is still busy from probing, give it another FORCI @@ -1490,7 +1488,7 @@ static int floppy_release(struct inode * if (fd_ref[drive] < 0) fd_ref[drive] = 0; else if (!fd_ref[drive]--) { - printk("floppy_release with fd_ref == 0"); + printk(KERN_WARNING "floppy_release with fd_ref == 0\n"); fd_ref[drive] = 0; } @@ -1535,12 +1533,12 @@ int fd1772_init(void) err = -EBUSY; if (request_dma(FLOPPY_DMA, "fd1772")) { - printk("Unable to grab DMA%d for the floppy (1772) driver\n", FLOPPY_DMA); + printk(KERN_ERR "Unable to grab DMA%d for the floppy (1772) driver\n", FLOPPY_DMA); goto err_blkdev; }; if (request_dma(FIQ_FD1772, "fd1772 end")) { - printk("Unable to grab DMA%d for the floppy (1772) driver\n", FIQ_FD1772); + printk(KERN_ERR "Unable to grab DMA%d for the floppy (1772) driver\n", FIQ_FD1772); goto err_dma1; }; --- a/drivers/acorn/block/mfmhd.c +++ b/drivers/acorn/block/mfmhd.c @@ -98,6 +98,8 @@ * This would be a performance boost with dual drive systems. */ +#undef DEBUG /* define to enable debugging statements */ + #include #include #include @@ -126,6 +128,7 @@ static void (*do_mfm)(void) = NULL; static struct request_queue *mfm_queue; static DEFINE_SPINLOCK(mfm_lock); +#define PFX "mfm: " #define MAJOR_NR MFM_ACORN_MAJOR #define QUEUE (mfm_queue) #define CURRENT elv_next_request(mfm_queue) @@ -153,12 +156,7 @@ struct hd_geometry { * Linux I/O address of onboard MFM controller or 0 to disable this */ #define ONBOARD_MFM_ADDRESS ((0x002d0000 >> 2) | 0x80000000) -/* - * Uncomment this to enable debugging in the MFM driver... - */ -#ifndef DEBUG -/*#define DEBUG */ -#endif + /* * End of configuration */ @@ -300,28 +298,8 @@ int number_mfm_drives = 1; #define STAT_POL 0x0200 /* Polling */ /* ------------------------------------------------------------------------------------------ */ -#ifdef DEBUG -static void console_printf(const char *fmt,...) -{ - static char buffer[2048]; /* Arbitary! */ - extern void console_print(const char *); - unsigned long flags; - va_list ap; - - local_irq_save(flags); - - va_start(ap, fmt); - vsprintf(buffer, fmt, ap); - console_print(buffer); - va_end(fmt); - local_irq_restore(flags); -}; /* console_printf */ - -#define DBG(x...) console_printf(x) -#else -#define DBG(x...) -#endif +#define DBG(fmt, args...) pr_debug(PFX "%s: " fmt, __FUNCTION__ , ## args) static void print_status(void) { @@ -377,23 +355,23 @@ static void issue_command(int command, u int status; #ifdef DEBUG int i; - console_printf("issue_command: %02X: ", command); + DBG("%02X:", command); for (i = 0; i < len; i++) - console_printf("%02X ", cmdb[i]); - console_printf("\n"); + printk(" %02X", cmdb[i]); + printk("\n"); #endif do { status = inw(MFM_STATUS); } while (status & (STAT_BSY | STAT_POL)); - DBG("issue_command: status after pol/bsy loop: %02X:\n ", status >> 8); + DBG("status after pol/bsy loop: %02X:\n", status >> 8); if (status & (STAT_CPR | STAT_CED | STAT_SED | STAT_DER | STAT_ABN)) { outw(CMD_RCAL, MFM_COMMAND); while (inw(MFM_STATUS) & STAT_BSY); } status = inw(MFM_STATUS); - DBG("issue_command: status before parameter issue: %02X:\n ", status >> 8); + DBG("status before parameter issue: %02X:\n", status >> 8); while (len > 0) { outw(cmdb[1] | (cmdb[0] << 8), MFM_DATAOUT); @@ -401,11 +379,11 @@ static void issue_command(int command, u cmdb += 2; } status = inw(MFM_STATUS); - DBG("issue_command: status before command issue: %02X:\n ", status >> 8); + DBG("status before command issue: %02X:\n", status >> 8); outw(command, MFM_COMMAND); status = inw(MFM_STATUS); - DBG("issue_command: status immediately after command issue: %02X:\n ", status >> 8); + DBG("status immediately after command issue: %02X:\n", status >> 8); } static void wait_for_completion(void) @@ -434,7 +412,7 @@ static void mfm_rw_intr(void) { int old_status; /* Holds status on entry, we read to see if the command just finished */ #ifdef DEBUG - console_printf("mfm_rw_intr...dataleft=%d\n", hdc63463_dataleft); + DBG("dataleft=%d ", hdc63463_dataleft); print_status(); #endif @@ -443,7 +421,7 @@ static void mfm_rw_intr(void) /* Something has gone wrong - let's try that again */ outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (cont) { - DBG("mfm_rw_intr: DER/ABN err\n"); + DBG("DER/ABN err\n"); cont->error(); cont->redo(); }; @@ -457,7 +435,7 @@ static void mfm_rw_intr(void) if (CURRENT->cmd == WRITE) { extern void hdc63463_writedma(void); if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) { - printk("mfm_rw_intr: Apparent DMA write request when no more to DMA\n"); + printk(KERN_WARNING PFX "mfm_rw_intr: Apparent DMA write request when no more to DMA\n"); if (cont) { cont->error(); cont->redo(); @@ -468,7 +446,7 @@ static void mfm_rw_intr(void) } else { extern void hdc63463_readdma(void); if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) { - printk("mfm_rw_intr: Apparent DMA read request when no more to DMA\n"); + printk(KERN_WARNING PFX "mfm_rw_intr: Apparent DMA read request when no more to DMA\n"); if (cont) { cont->error(); cont->redo(); @@ -482,7 +460,7 @@ static void mfm_rw_intr(void) if (hdc63463_dataptr != ((unsigned int) Copy_buffer + 256)) { /* If we didn't actually manage to get any data on this interrupt - but why? We got the interrupt */ /* Ah - well looking at the status its just when we get command end; so no problem */ - /*console_printf("mfm: dataptr mismatch. dataptr=0x%08x Copy_buffer+256=0x%08p\n", + /*DBG("dataptr mismatch. dataptr=0x%08x Copy_buffer+256=0x%08p ", hdc63463_dataptr,Copy_buffer+256); print_status(); */ } else { @@ -492,7 +470,7 @@ static void mfm_rw_intr(void) /* We have come to the end of this request */ if (!Sectors256LeftInCurrent) { - DBG("mfm: end_request for CURRENT=0x%p CURRENT(sector=%d current_nr_sectors=%d nr_sectors=%d)\n", + DBG("end_request for CURRENT=0x%p CURRENT(sector=%d current_nr_sectors=%d nr_sectors=%d)\n", CURRENT, CURRENT->sector, CURRENT->current_nr_sectors, CURRENT->nr_sectors); CURRENT->nr_sectors -= CURRENT->current_nr_sectors; @@ -511,10 +489,10 @@ static void mfm_rw_intr(void) if (Copy_Sector != CURRENT->sector * 2) #ifdef DEBUG - /*console_printf*/printk("mfm: Copy_Sector mismatch. Copy_Sector=%d CURRENT->sector*2=%d\n", + DBG("Copy_Sector mismatch. Copy_Sector=%d CURRENT->sector*2=%d\n", Copy_Sector, CURRENT->sector * 2); #else - printk("mfm: Copy_Sector mismatch! Eek!\n"); + printk(KERN_ERR PFX "Copy_Sector mismatch! Eek!\n"); #endif }; /* CURRENT */ }; /* Sectors256LeftInCurrent */ @@ -525,7 +503,7 @@ static void mfm_rw_intr(void) if (mfm_status & (STAT_DER | STAT_ABN)) { /* Something has gone wrong - let's try that again */ if (cont) { - DBG("mfm_rw_intr: DER/ABN error\n"); + DBG("DER/ABN error\n"); cont->error(); cont->redo(); }; @@ -547,7 +525,7 @@ static void mfm_rw_intr(void) }; }; /* Result read */ - /*console_printf ("mfm_rw_intr nearexit [%02X]\n", __raw_readb(mfm_IRQPollLoc)); */ + /*DBG("nearexit [%02X]\n", __raw_readb(mfm_IRQPollLoc)); */ /* If end of command move on */ if (mfm_status & (STAT_CED)) { @@ -556,7 +534,7 @@ static void mfm_rw_intr(void) if (cont) { cont->done(1); } - DBG("mfm_rw_intr: returned from cont->done\n"); + DBG("returned from cont->done\n"); } else { /* Its going to generate another interrupt */ do_mfm = mfm_rw_intr; @@ -565,7 +543,7 @@ static void mfm_rw_intr(void) static void mfm_setup_rw(void) { - DBG("setting up for rw...\n"); + DBG("start\n"); do_mfm = mfm_rw_intr; issue_command(raw_cmd.cmdcode, raw_cmd.cmddata, raw_cmd.cmdlen); @@ -574,12 +552,12 @@ static void mfm_setup_rw(void) static void mfm_recal_intr(void) { #ifdef DEBUG - console_printf("recal intr - status = "); + DBG("status = "); print_status(); #endif outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (mfm_status & (STAT_DER | STAT_ABN)) { - printk("recal failed\n"); + printk(KERN_ERR PFX "recal failed\n"); MFM_DRV_INFO.cylinder = NEED_2_RECAL; if (cont) { cont->error(); @@ -601,18 +579,18 @@ static void mfm_recal_intr(void) issue_command(CMD_POL, NULL, 0); return; } - printk("recal: unknown status\n"); + printk(KERN_ERR PFX "recal: unknown status\n"); } static void mfm_seek_intr(void) { #ifdef DEBUG - console_printf("seek intr - status = "); + DBG("status = "); print_status(); #endif outw(CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ if (mfm_status & (STAT_DER | STAT_ABN)) { - printk("seek failed\n"); + printk(KERN_ERR PFX "seek failed\n"); MFM_DRV_INFO.cylinder = NEED_2_RECAL; if (cont) { cont->error(); @@ -631,7 +609,7 @@ static void mfm_seek_intr(void) issue_command(CMD_POL, NULL, 0); return; } - printk("seek: unknown status\n"); + printk(KERN_ERR PFX "seek: unknown status\n"); } /* IDEA2 seems to work better - its what RiscOS sets my @@ -686,7 +664,7 @@ static void mfm_seek(void) DBG("seeking...\n"); if (MFM_DRV_INFO.cylinder < 0) { do_mfm = mfm_recal_intr; - DBG("mfm_seek: about to call specify\n"); + DBG("about to call specify\n"); mfm_specify (); /* DAG added this */ cmdb[0] = raw_cmd.dev + 1; @@ -709,19 +687,20 @@ static void mfm_seek(void) static void mfm_initialise(void) { - DBG("init...\n"); + DBG("start\n"); mfm_seek(); } static void request_done(int uptodate) { - DBG("mfm:request_done\n"); + DBG("start\n"); if (uptodate) { unsigned char block[2] = {0, 0}; /* Apparently worked - let's check bytes left to DMA */ if (hdc63463_dataleft != (PartFragRead_SectorsLeft * 256)) { - printk("mfm: request_done - dataleft=%d - should be %d - Eek!\n", hdc63463_dataleft, PartFragRead_SectorsLeft * 256); + printk(KERN_ERR PFX "request_done - dataleft=%d - should be %d - Eek!\n", + hdc63463_dataleft, PartFragRead_SectorsLeft * 256); end_request(CURRENT, 0); Busy = 0; }; @@ -740,7 +719,8 @@ static void request_done(int uptodate) /* ah well - perhaps there is another fragment to go */ /* Increment pointers/counts to start of next fragment */ - if (SectorsLeftInRequest > 0) printk("mfm: SectorsLeftInRequest>0 - Eek! Shouldn't happen!\n"); + if (SectorsLeftInRequest > 0) + printk(KERN_CRIT PFX "SectorsLeftInRequest > 0 - Eek! Shouldn't happen!\n"); /* No - its the end of the line */ /* end_request's should have happened at the end of sector DMAs */ @@ -749,12 +729,12 @@ static void request_done(int uptodate) issue_command(CMD_CKV, block, 2); Busy = 0; - DBG("request_done: About to mfm_request\n"); + DBG("About to mfm_request\n"); /* Next one please */ mfm_request(); /* Moved from mfm_rw_intr */ - DBG("request_done: returned from mfm_request\n"); + DBG("returned from mfm_request\n"); } else { - printk("mfm:request_done: update=0\n"); + DBG("update=0\n"); end_request(CURRENT, 0); Busy = 0; } @@ -762,7 +742,7 @@ static void request_done(int uptodate) static void error_handler(void) { - printk("error detected... status = "); + printk(KERN_ERR PFX "error detected... status = "); print_status(); (*errors)++; if (*errors > MFM_DRV_INFO.errors.abort) @@ -773,7 +753,7 @@ static void error_handler(void) static void rw_interrupt(void) { - printk("rw_interrupt\n"); + DBG("start\n"); } static struct cont rw_cont = @@ -807,7 +787,7 @@ static void issue_request(unsigned int b /* Then add in the number of sectors left on this track */ sectors_to_next_cyl += (p->sectors - start_sector); - DBG("issue_request: mfm_info[dev].sectors=%d track=%d\n", p->sectors, track); + DBG("mfm_info[dev].sectors=%d track=%d\n", p->sectors, track); raw_cmd.dev = dev; raw_cmd.sector = start_sector; @@ -869,7 +849,7 @@ static void issue_request(unsigned int b */ static void mfm_rerequest(void) { - DBG("mfm_rerequest\n"); + DBG("start\n"); cli(); Busy = 0; mfm_request(); @@ -879,12 +859,12 @@ static struct gendisk *mfm_gendisk[2]; static void mfm_request(void) { - DBG("mfm_request CURRENT=%p Busy=%d\n", CURRENT, Busy); + DBG("CURRENT=%p Busy=%d\n", CURRENT, Busy); /* If we are still processing then return; we will get called again */ if (Busy) { /* Again seems to be common in 1.3.45 */ - /*DBG*/printk("mfm_request: Exiting due to busy\n"); + DBG("Exiting due to busy\n"); return; } Busy = 1; @@ -893,28 +873,28 @@ static void mfm_request(void) unsigned int block, nsect; struct gendisk *disk; - DBG("mfm_request: loop start\n"); + DBG("loop start\n"); sti(); - DBG("mfm_request: before !CURRENT\n"); + DBG("before !CURRENT\n"); if (!CURRENT) { - printk("mfm_request: Exiting due to empty queue (pre)\n"); + DBG("Exiting due to empty queue (pre)\n"); do_mfm = NULL; Busy = 0; return; } - DBG("mfm_request: before arg extraction\n"); + DBG("before arg extraction\n"); disk = CURRENT->rq_disk; block = CURRENT->sector; nsect = CURRENT->nr_sectors; if (block >= get_capacity(disk) || block+nsect > get_capacity(disk)) { - printk("%s: bad access: block=%d, count=%d, nr_sects=%ld\n", + printk(KERN_ERR "%s: bad access: block=%d, count=%d, nr_sects=%ld\n", disk->disk_name, block, nsect, get_capacity(disk)); - printk("mfm: continue 1\n"); + DBG("continue 1\n"); end_request(CURRENT, 0); Busy = 0; continue; @@ -930,25 +910,25 @@ static void mfm_request(void) Copy_buffer = CURRENT->buffer; Copy_Sector = CURRENT->sector << 1; - DBG("mfm_request: block after offset=%d\n", block); + DBG("block after offset=%d\n", block); if (CURRENT->cmd != READ && CURRENT->cmd != WRITE) { - printk("unknown mfm-command %d\n", CURRENT->cmd); + printk(KERN_ERR "unknown mfm-command %d\n", CURRENT->cmd); end_request(CURRENT, 0); Busy = 0; - printk("mfm: continue 4\n"); + DBG("continue 4\n"); continue; } issue_request(block, nsect, CURRENT); break; } - DBG("mfm_request: Dropping out bottom\n"); + DBG("Dropping out bottom\n"); } static void do_mfm_request(request_queue_t *q) { - DBG("do_mfm_request: about to mfm_request\n"); + DBG("about to mfm_request\n"); mfm_request(); } @@ -958,7 +938,7 @@ static void mfm_interrupt_handler(int un do_mfm = NULL; - DBG("mfm_interrupt_handler (handler=0x%p)\n", handler); + DBG("(handler=0x%p)\n", handler); mfm_status = inw(MFM_STATUS); @@ -978,7 +958,7 @@ static void mfm_interrupt_handler(int un return; } outw (CMD_RCAL, MFM_COMMAND); /* Clear interrupt condition */ - printk ("mfm: unexpected interrupt - status = "); + printk (KERN_WARNING PFX "unexpected interrupt - status = "); print_status (); while (1); } @@ -996,7 +976,7 @@ static void mfm_geometry(int drive) struct gendisk *disk = mfm_gendisk[drive]; disk->private_data = p; if (p->cylinders) - printk ("%s: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n", + pr_info ("%s: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n", disk->disk_name, p->cylinders * p->heads * p->sectors / 4096, p->cylinders, p->heads, p->sectors, @@ -1108,7 +1088,8 @@ static int mfm_initdrives(void) if (number_mfm_drives > MFM_MAXDRIVES) { number_mfm_drives = MFM_MAXDRIVES; - printk("No. of ADFS MFM drives is greater than MFM_MAXDRIVES - you can't have that many!\n"); + printk(KERN_WARNING "No. of ADFS MFM drives is greater than " + "MFM_MAXDRIVES - you can't have that many!\n"); } for (drive = 0; drive < number_mfm_drives; drive++) { @@ -1199,7 +1180,7 @@ void xd_set_geometry(struct block_device p->cylinders = discsize / (secsptrack * heads * secsize); if ((heads < 1) || (p->cylinders > 1024)) { - printk("%s: Insane disc shape! Setting to 512/4/32\n", + printk(KERN_WARNING "%s: Insane disc shape! Setting to 512/4/32\n", bdev->bd_disk->disk_name); /* These values are fairly arbitary, but are there so that if your @@ -1260,7 +1241,7 @@ static int mfm_do_init(unsigned char irq { int i, ret; - printk("mfm: found at address %08X, interrupt %d\n", mfm_addr, mfm_irq); + pr_info(PFX "controller found at address %08X, interrupt %d\n", mfm_addr, mfm_irq); ret = -EBUSY; if (!request_region (mfm_addr, 10, "mfm")) @@ -1299,11 +1280,11 @@ static int mfm_do_init(unsigned char irq mfm_gendisk[i] = disk; } - printk("mfm: detected %d hard drive%s\n", mfm_drives, + pr_info(PFX "detected %d hard drive%s\n", mfm_drives, mfm_drives == 1 ? "" : "s"); ret = request_irq(mfm_irq, mfm_interrupt_handler, SA_INTERRUPT, "MFM harddisk", NULL); if (ret) { - printk("mfm: unable to get IRQ%d\n", mfm_irq); + printk(KERN_ERR PFX "unable to get IRQ%d\n", mfm_irq); goto out4; } --- a/drivers/block/xd.c +++ b/drivers/block/xd.c @@ -538,6 +538,7 @@ static inline u_char xd_waitport (u_shor static inline u_int xd_wait_for_IRQ (void) { + DEFINE_WAIT(wait); unsigned long flags; xd_watchdog_int.expires = jiffies + 8 * HZ; add_timer(&xd_watchdog_int); @@ -546,7 +547,9 @@ static inline u_int xd_wait_for_IRQ (voi enable_dma(xd_dma); release_dma_lock(flags); - sleep_on(&xd_wait_int); + prepare_to_wait(&xd_wait_int, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + finish_wait(&xd_wait_int, &wait); del_timer(&xd_watchdog_int); xdc_busy = 0; --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -67,6 +67,7 @@ not be guaranteed. There are several way #include #include #include +#include #include #include @@ -625,12 +626,10 @@ static ssize_t slm_write( struct file *f int device = iminor(node); int n, filled, w, h; - while( SLMState == PRINTING || - (SLMState == FILLING && SLMBufOwner != device) ) { - interruptible_sleep_on( &slm_wait ); - if (signal_pending(current)) - return( -ERESTARTSYS ); - } + wait_event_interruptible(slm_wait, (SLMState != PRINTING && + (SLMState != FILLING || SLMBufOwner == device))); + if (signal_pending(current)) + return -ERESTARTSYS; if (SLMState == IDLE) { /* first data of page: get current page size */ if (slm_get_pagesize( device, &w, &h )) @@ -654,6 +653,7 @@ static ssize_t slm_write( struct file *f filled += n; if (filled == BufferSize) { + DEFINE_WAIT(wait); /* Check the paper size again! The user may have switched it in the * time between starting the data and finishing them. Would end up in * a trashy page... */ @@ -672,7 +672,9 @@ static ssize_t slm_write( struct file *f #endif start_print( device ); - sleep_on( &print_wait ); + prepare_to_wait(&print_wait, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + finish_wait(&print_wait, &wait); if (SLMError && IS_REAL_ERROR(SLMError)) { printk( KERN_ERR "slm%d: %s\n", device, slm_errstr(SLMError) ); n = -EIO; --- a/drivers/net/tokenring/ibmtr.c +++ b/drivers/net/tokenring/ibmtr.c @@ -108,6 +108,7 @@ in the event that chatty debug messages #define IBMTR_DEBUG_MESSAGES 0 #include +#include #ifdef PCMCIA /* required for ibmtr_cs.c to build */ #undef MODULE /* yes, really */ @@ -842,6 +843,7 @@ static int __devinit trdev_init(struct n static int tok_init_card(struct net_device *dev) { + DEFINE_WAIT(wait); struct tok_info *ti; short PIOaddr; unsigned long i; @@ -862,13 +864,16 @@ static int tok_init_card(struct net_devi writeb(SRPR_ENABLE_PAGING,ti->mmio+ACA_OFFSET+ACA_RW+SRPR_EVEN); #endif writeb(INT_ENABLE, ti->mmio + ACA_OFFSET + ACA_SET + ISRP_EVEN); - i = sleep_on_timeout(&ti->wait_for_reset, 4 * HZ); + prepare_to_wait(&ti->wait_for_reset, &wait, TASK_UNINTERRUPTIBLE); + i = schedule_timeout(4 * HZ); + finish_wait(&ti->wait_for_reset, &wait); return i? 0 : -EAGAIN; } /*****************************************************************************/ static int tok_open(struct net_device *dev) { + DEFINE_WAIT(wait); struct tok_info *ti = (struct tok_info *) dev->priv; int i; @@ -893,7 +898,9 @@ static int tok_open(struct net_device *d while (1){ tok_open_adapter((unsigned long) dev); - i= interruptible_sleep_on_timeout(&ti->wait_for_reset, 25 * HZ); + prepare_to_wait(&ti->wait_for_reset, &wait, TASK_INTERRUPTIBLE); + i = schedule_timeout(25 * HZ); + finish_wait(&ti->wait_for_reset, &wait); /* sig catch: estimate opening adapter takes more than .5 sec*/ if (i>(245*HZ)/10) break; /* fancier than if (i==25*HZ) */ if (i==0) break; --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -283,6 +284,7 @@ EXPORT_SYMBOL(lockd_up); void lockd_down(void) { + DEFINE_WAIT(wait); static int warned; down(&nlmsvc_sema); @@ -305,7 +307,9 @@ lockd_down(void) * the lockd semaphore, we can't wait around forever ... */ clear_thread_flag(TIF_SIGPENDING); - interruptible_sleep_on_timeout(&lockd_exit, HZ); + prepare_to_wait(&lockd_exit, &wait, TASK_INTERRUPTIBLE); + schedule_timeout(HZ); + finish_wait(&lockd_exit, &wait); if (nlmsvc_pid) { printk(KERN_WARNING "lockd_down: lockd failed to exit, clearing pid\n"); --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -259,6 +260,7 @@ out_no_clnt: int rpc_shutdown_client(struct rpc_clnt *clnt) { + DEFINE_WAIT(wait); dprintk("RPC: shutting down %s client for %s, tasks=%d\n", clnt->cl_protname, clnt->cl_server, atomic_read(&clnt->cl_users)); @@ -268,7 +270,9 @@ rpc_shutdown_client(struct rpc_clnt *cln clnt->cl_oneshot = 0; clnt->cl_dead = 0; rpc_killall_tasks(clnt); - sleep_on_timeout(&destroy_wait, 1*HZ); + prepare_to_wait(&destroy_wait, &wait, TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ); + finish_wait(&destroy_wait, &wait); } if (atomic_read(&clnt->cl_users) < 0) { --- a/drivers/cdrom/mcdx.c +++ b/drivers/cdrom/mcdx.c @@ -67,6 +67,7 @@ static const char *mcdx_c_version #include #include #include +#include #include #include #include @@ -835,11 +836,14 @@ static void mcdx_delay(struct s_drive_st * May be we could use a simple count loop w/ jumps to itself, but * I wanna make this independent of cpu speed. [1 jiffy is 1/HZ] sec */ { + DEFINE_WAIT(wait); if (jifs < 0) return; xtrace(SLEEP, "*** delay: sleepq\n"); - interruptible_sleep_on_timeout(&stuff->sleepq, jifs); + prepare_to_wait(&stuff->sleepq, &wait, TASK_INTERRUPTIBLE); + schedule_timeout(jifs); + finish_wait(&stuff->sleepq, &wait); xtrace(SLEEP, "delay awoken\n"); if (signal_pending(current)) { xtrace(SLEEP, "got signal\n"); @@ -907,11 +911,9 @@ static int mcdx_talk(struct s_drive_stuf if ((discard = (buffer == NULL))) buffer = &c; - while (stuffp->lock) { - xtrace(SLEEP, "*** talk: lockq\n"); - interruptible_sleep_on(&stuffp->lockq); - xtrace(SLEEP, "talk: awoken\n"); - } + xtrace(SLEEP, "*** talk: lockq\n"); + wait_event(stuffp->lockq, !stuffp->lock); + xtrace(SLEEP, "talk: awoken\n"); stuffp->lock = 1; @@ -956,7 +958,7 @@ static int mcdx_talk(struct s_drive_stuf /* command error? */ if (e_cmderr(st)) { - xwarn("command error cmd = %02x %s \n", + xwarn("command error cmd = %02x %s\n", cmd[0], cmdlen > 1 ? "..." : ""); st = -1; continue; @@ -998,7 +1000,7 @@ static int mcdx_talk(struct s_drive_stuf #endif stuffp->lock = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); xtrace(TALK, "talk() done with 0x%02x\n", st); return st; @@ -1260,7 +1262,7 @@ static int __init mcdx_init_drive(int dr static int __init mcdx_init(void) { int drive; - xwarn("Version 2.14(hs) \n"); + xwarn("Version 2.14(hs)\n"); xwarn("$Id: mcdx.c,v 1.21 1997/01/26 07:12:59 davem Exp $\n"); @@ -1318,6 +1320,7 @@ static int mcdx_xfer(struct s_drive_stuf Return: -1 on timeout or other error else status byte (as in stuff->st) */ { + DEFINE_WAIT(wait); int border; int done = 0; long timeout; @@ -1332,9 +1335,7 @@ static int mcdx_xfer(struct s_drive_stuf return -1; } - while (stuffp->lock) { - interruptible_sleep_on(&stuffp->lockq); - } + wait_event(stuffp->lockq, !stuffp->lock); if (stuffp->valid && (sector >= stuffp->pending) && (sector < stuffp->low_border)) { @@ -1356,10 +1357,10 @@ static int mcdx_xfer(struct s_drive_stuf do { while (stuffp->busy) { - - timeout = - interruptible_sleep_on_timeout - (&stuffp->busyq, 5 * HZ); + prepare_to_wait(&stuffp->busyq, &wait, + TASK_INTERRUPTIBLE); + timeout = schedule_timeout(5 * HZ); + finish_wait(&stuffp->busyq, &wait); if (!stuffp->introk) { xtrace(XFER, @@ -1375,7 +1376,7 @@ static int mcdx_xfer(struct s_drive_stuf stuffp->busy = 0; stuffp->valid = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); xtrace(XFER, "transfer() done (-1)\n"); return -1; } @@ -1411,7 +1412,7 @@ static int mcdx_xfer(struct s_drive_stuf } while (++(stuffp->pending) < border); stuffp->lock = 0; - wake_up_interruptible(&stuffp->lockq); + wake_up(&stuffp->lockq); } else { --- a/drivers/video/atafb.c +++ b/drivers/video/atafb.c @@ -2732,7 +2732,7 @@ int __init atafb_init(void) } fbhw = &st_switch; atafb_ops.fb_setcolreg = &stste_setcolreg; - printk("Cannot determine video hardware; defaulting to ST(e)\n"); + pr_info("Cannot determine video hardware; defaulting to ST(e)\n"); #else /* ATAFB_STE */ /* no default driver included */ /* Nobody will ever see this message :-) */ @@ -2809,13 +2809,13 @@ int __init atafb_init(void) if (register_framebuffer(&fb_info) < 0) return -EINVAL; - printk("Determined %dx%d, depth %d\n", + pr_info("Determined %dx%d, depth %d\n", disp.var.xres, disp.var.yres, disp.var.bits_per_pixel); if ((disp.var.xres != disp.var.xres_virtual) || (disp.var.yres != disp.var.yres_virtual)) printk(" virtual %dx%d\n", disp.var.xres_virtual, disp.var.yres_virtual); - printk("fb%d: %s frame buffer device, using %dK of video memory\n", + pr_info("fb%d: %s frame buffer device, using %dK of video memory\n", fb_info.node, fb_info.modename, screen_len>>10); /* TODO: This driver cannot be unloaded yet */ --- a/drivers/video/aty/mach64_ct.c +++ b/drivers/video/aty/mach64_ct.c @@ -196,7 +196,7 @@ static int aty_dsp_gt(const struct fb_in pll->dsp_on_off = (dsp_on << 16) + dsp_off; pll->dsp_config = (dsp_precision << 20) | (pll->dsp_loop_latency << 16) | dsp_xclks; #ifdef DEBUG - printk("atyfb(%s): dsp_config 0x%08x, dsp_on_off 0x%08x\n", + pr_debug("atyfb(%s): dsp_config 0x%08x, dsp_on_off 0x%08x\n", __FUNCTION__, pll->dsp_config, pll->dsp_on_off); #endif return 0; @@ -226,7 +226,7 @@ static int aty_valid_pll_ct(const struct #ifdef DEBUG pllvclk = (1000000 * 2 * pll->vclk_fb_div) / (par->ref_clk_per * pll->pll_ref_div); - printk("atyfb(%s): pllvclk=%d MHz, vclk=%d MHz\n", + pr_debug("atyfb(%s): pllvclk=%d MHz, vclk=%d MHz\n", __FUNCTION__, pllvclk, pllvclk / pll->vclk_post_div_real); #endif pll->pll_vclk_cntl = 0x03; /* VCLK = PLL_VCLK/VCLKx_POST */ @@ -257,9 +257,7 @@ static u32 aty_pll_to_var_ct(const struc ret /= pll->ct.xres; } #endif -#ifdef DEBUG - printk("atyfb(%s): calculated 0x%08X(%i)\n", __FUNCTION__, ret, ret); -#endif + pr_debug("atyfb(%s): calculated 0x%08X(%i)\n", __FUNCTION__, ret, ret); return ret; } @@ -270,17 +268,15 @@ void aty_set_pll_ct(const struct fb_info u8 tmp, tmp2; lcd_gen_cntrl = 0; -#ifdef DEBUG - printk("atyfb(%s): about to program:\n" + pr_debug("atyfb(%s): about to program:\n" "pll_ext_cntl=0x%02x pll_gen_cntl=0x%02x pll_vclk_cntl=0x%02x\n", __FUNCTION__, pll->ct.pll_ext_cntl, pll->ct.pll_gen_cntl, pll->ct.pll_vclk_cntl); - printk("atyfb(%s): setting clock %lu for FeedBackDivider %i, ReferenceDivider %i, PostDivider %i(%i)\n", + pr_debug("atyfb(%s): setting clock %lu for FeedBackDivider %i, ReferenceDivider %i, PostDivider %i(%i)\n", __FUNCTION__, par->clk_wr_offset, pll->ct.vclk_fb_div, pll->ct.pll_ref_div, pll->ct.vclk_post_div, pll->ct.vclk_post_div_real); -#endif #ifdef CONFIG_FB_ATY_GENERIC_LCD if (par->lcd_table != 0) { /* turn off LCD */ @@ -415,10 +411,8 @@ static int __init aty_init_pll_ct(const pll->ct.xclk_post_div -= 1; } -#ifdef DEBUG - printk("atyfb(%s): mclk_fb_mult=%d, xclk_post_div=%d\n", + pr_debug("atyfb(%s): mclk_fb_mult=%d, xclk_post_div=%d\n", __FUNCTION__, pll->ct.mclk_fb_mult, pll->ct.xclk_post_div); -#endif memcntl = aty_ld_le32(MEM_CNTL, par); trp = (memcntl & 0x300) >> 8; @@ -528,7 +522,7 @@ static int __init aty_init_pll_ct(const #ifdef DEBUG pllmclk = (1000000 * pll->ct.mclk_fb_mult * pll->ct.mclk_fb_div) / (par->ref_clk_per * pll->ct.pll_ref_div); - printk("atyfb(%s): pllmclk=%d MHz, xclk=%d MHz\n", + pr_debug("atyfb(%s): pllmclk=%d MHz, xclk=%d MHz\n", __FUNCTION__, pllmclk, pllmclk / pll->ct.xclk_post_div_real); #endif @@ -569,7 +563,7 @@ static int __init aty_init_pll_ct(const #ifdef DEBUG pllsclk = (1000000 * 2 * sclk_fb_div) / (par->ref_clk_per * pll->ct.pll_ref_div); - printk("atyfb(%s): use sclk, pllsclk=%d MHz, sclk=mclk=%d MHz\n", + pr_debug("atyfb(%s): use sclk, pllsclk=%d MHz, sclk=mclk=%d MHz\n", __FUNCTION__, pllsclk, pllsclk / sclk_post_div_real); #endif /* --- a/drivers/video/aty/radeon_monitor.c +++ b/drivers/video/aty/radeon_monitor.c @@ -178,10 +178,10 @@ static int __devinit radeon_get_panel_in for(i=0; i<24; i++) stmp[i] = BIOS_IN8(tmp+i+1); stmp[24] = 0; - printk("radeonfb: panel ID string: %s\n", stmp); + pr_info("radeonfb: panel ID string: %s\n", stmp); rinfo->panel_info.xres = BIOS_IN16(tmp + 25); rinfo->panel_info.yres = BIOS_IN16(tmp + 27); - printk("radeonfb: detected LVDS panel size from BIOS: %dx%d\n", + pr_info("radeonfb: detected LVDS panel size from BIOS: %dx%d\n", rinfo->panel_info.xres, rinfo->panel_info.yres); rinfo->panel_info.pwr_delay = BIOS_IN16(tmp + 44); @@ -561,7 +561,7 @@ void __devinit radeon_probe_screens(stru ((rinfo->bios_seg && (INREG(BIOS_4_SCRATCH) & 4)) || (INREG(LVDS_GEN_CNTL) & LVDS_ON))) { rinfo->mon1_type = MT_LCD; - printk("Non-DDC laptop panel detected\n"); + pr_info("Non-DDC laptop panel detected\n"); } if (rinfo->mon1_type == MT_NONE) rinfo->mon1_type = radeon_crt_is_connected(rinfo, rinfo->reversed_DAC); --- a/drivers/video/aty/radeon_pm.c +++ b/drivers/video/aty/radeon_pm.c @@ -2722,10 +2722,10 @@ void radeonfb_pm_init(struct radeonfb_in rinfo->dynclk = dynclk; if (dynclk == 1) { radeon_pm_enable_dynamic_mode(rinfo); - printk("radeonfb: Dynamic Clock Power Management enabled\n"); + pr_info("radeonfb: Dynamic Clock Power Management enabled\n"); } else if (dynclk == 0) { radeon_pm_disable_dynamic_mode(rinfo); - printk("radeonfb: Dynamic Clock Power Management disabled\n"); + pr_info("radeonfb: Dynamic Clock Power Management disabled\n"); } /* Check if we can power manage on suspend/resume. We can do --- a/drivers/video/bw2.c +++ b/drivers/video/bw2.c @@ -376,7 +376,7 @@ static void bw2_init_one(struct sbus_dev list_add(&all->list, &bw2_list); - printk("bw2: bwtwo at %lx:%lx\n", + pr_info("bw2: bwtwo at %lx:%lx\n", (long) (sdev ? sdev->reg_addrs[0].which_io : 0), (long) all->par.physbase); } --- a/drivers/video/cg3.c +++ b/drivers/video/cg3.c @@ -437,7 +437,7 @@ static void cg3_init_one(struct sbus_dev list_add(&all->list, &cg3_list); - printk("cg3: %s at %lx:%lx\n", + pr_info("cg3: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/cg6.c +++ b/drivers/video/cg6.c @@ -743,7 +743,7 @@ static void cg6_init_one(struct sbus_dev list_add(&all->list, &cg6_list); - printk("cg6: CGsix [%s] at %lx:%lx\n", + pr_info("cg6: CGsix [%s] at %lx:%lx\n", all->info.fix.id, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/cirrusfb.c +++ b/drivers/video/cirrusfb.c @@ -93,7 +93,7 @@ #ifndef CIRRUSFB_NDEBUG #define assert(expr) \ if(!(expr)) { \ - printk( "Assertion failed! %s,%s,%s,line=%d\n",\ + printk(KERN_DEBUG "Assertion failed! %s,%s,%s,line=%d\n",\ #expr,__FILE__,__FUNCTION__,__LINE__); \ } #else @@ -702,14 +702,14 @@ static int cirrusfb_check_var(struct fb_ den = 1; break; /* 4 bytes per pixel */ default: - printk ("cirrusfb: mode %dx%dx%d rejected...color depth not supported.\n", + printk (KERN_WARNING "cirrusfb: mode %dx%dx%d rejected...color depth not supported.\n", var->xres, var->yres, var->bits_per_pixel); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; } if (var->xres * nom / den * var->yres > cinfo->size) { - printk ("cirrusfb: mode %dx%dx%d rejected...resolution too high to fit into video memory!\n", + printk (KERN_WARNING "cirrusfb: mode %dx%dx%d rejected...resolution too high to fit into video memory!\n", var->xres, var->yres, var->bits_per_pixel); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; @@ -718,20 +718,20 @@ static int cirrusfb_check_var(struct fb_ /* use highest possible virtual resolution */ if (var->xres_virtual == -1 && var->yres_virtual == -1) { - printk ("cirrusfb: using maximum available virtual resolution\n"); + pr_info ("cirrusfb: using maximum available virtual resolution\n"); for (i = 0; modes[i].xres != -1; i++) { if (modes[i].xres * nom / den * modes[i].yres < cinfo->size / 2) break; } if (modes[i].xres == -1) { - printk ("cirrusfb: could not find a virtual resolution that fits into video memory!!\n"); + printk (KERN_WARNING "cirrusfb: could not find a virtual resolution that fits into video memory!!\n"); DPRINTK ("EXIT - EINVAL error\n"); return -EINVAL; } var->xres_virtual = modes[i].xres; var->yres_virtual = modes[i].yres; - printk ("cirrusfb: virtual resolution set to maximum of %dx%d\n", + pr_info ("cirrusfb: virtual resolution set to maximum of %dx%d\n", var->xres_virtual, var->yres_virtual); } @@ -2171,7 +2171,7 @@ static unsigned int cirrusfb_get_memsize /* 64-bit DRAM data bus width; assume 2MB. Also indicates 2MB memory * on the 5430. */ case 0x18: mem = 2048 * 1024; break; - default: printk ("CLgenfb: Unknown memory size!\n"); + default: printk (KERN_WARNING "CLgenfb: Unknown memory size!\n"); mem = 1024 * 1024; } if (SRF & 0x80) { @@ -2356,7 +2356,7 @@ static void __devexit cirrusfb_cleanup ( unregister_framebuffer (info); fb_dealloc_cmap (&info->cmap); - printk ("Framebuffer unregistered\n"); + pr_info ("Framebuffer unregistered\n"); cinfo->unmap(cinfo); DPRINTK ("EXIT\n"); @@ -2441,6 +2441,9 @@ static int cirrusfb_pci_register (struct cinfo->size = board_size; cinfo->unmap = cirrusfb_pci_unmap; + printk(KERN_INFO "cirrusfb: %s board detected; ", + cirrusfb_board_info[btype].name); + printk (" RAM (%lu kB) at 0xx%lx, ", cinfo->size / KB_, board_addr); printk ("Cirrus Logic chipset on PCI bus\n"); pci_set_drvdata(pdev, info); @@ -2533,7 +2536,7 @@ static int cirrusfb_zorro_register(struc goto err_release_fb; } - printk (" RAM (%lu MB) at $%lx, ", board_size / MB_, board_addr); + pr_info (" RAM (%lu MB) at $%lx, ", board_size / MB_, board_addr); ret = -EIO; --- a/drivers/video/clps711xfb.c +++ b/drivers/video/clps711xfb.c @@ -384,7 +384,7 @@ int __init clps711xfb_init(void) clps7111fb_backlight_proc_entry = create_proc_entry("backlight", 0444, &proc_root); if (clps7111fb_backlight_proc_entry == NULL) { - printk("Couldn't create the /proc entry for the backlight.\n"); + printk(KERN_ERR "Couldn't create the /proc entry for the backlight.\n"); return -EINVAL; } --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -1015,7 +1015,7 @@ static const char *fbcon_startup(void) udelay(20); if (ct == 1000) - printk + pr_info ("fbcon_startup: No VBL detected, using timer based cursor.\n"); free_irq(IRQ_MAC_VBL, fb_vbl_detect); --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c @@ -326,7 +326,7 @@ static const char __init *mdacon_startup mda_type_name = "MDA"; if (! mda_detect()) { - printk("mdacon: MDA card not detected.\n"); + pr_info("mdacon: MDA card not detected.\n"); return NULL; } @@ -337,7 +337,7 @@ static const char __init *mdacon_startup /* cursor looks ugly during boot-up, so turn it off */ mda_set_cursor(mda_vram_len - 1); - printk("mdacon: %s with %ldK of memory detected.\n", + pr_info("mdacon: %s with %ldK of memory detected.\n", mda_type_name, mda_vram_len/1024); return "MDA-2"; --- a/drivers/video/console/newport_con.c +++ b/drivers/video/console/newport_con.c @@ -230,7 +230,7 @@ void newport_get_screensize(void) newport_ysize += linetable[i + 1]; } } - printk("NG1: Screensize %dx%d\n", newport_xsize, newport_ysize); + pr_info("NG1: Screensize %dx%d\n", newport_xsize, newport_ysize); } static void newport_get_revisions(void) @@ -273,7 +273,7 @@ static void newport_get_revisions(void) bt445_rev = (npregs->set.dcbdata0.bybytes.b3 >> 4) - 0x0a; #define L(a) (char)('A'+(a)) - printk + pr_info ("NG1: Revision %d, %d bitplanes, REX3 revision %c, VC2 revision %c, xmap9 revision %c, cmap revision %c, bt445 revision %c\n", board_rev, bitplanes, L(rex3_rev), L(vc2_rev), L(xmap9_rev), L(cmap_rev ? (cmap_rev + 1) : 0), L(bt445_rev)); --- a/drivers/video/cyber2000fb.c +++ b/drivers/video/cyber2000fb.c @@ -1372,7 +1372,7 @@ static int __devinit cyberpro_common_pro err = -EINVAL; if (!fb_find_mode(&cfb->fb.var, &cfb->fb, NULL, NULL, 0, &cyber2000fb_default_mode, 8)) { - printk("%s: no valid mode found\n", cfb->fb.fix.id); + printk(KERN_ERR "%s: no valid mode found\n", cfb->fb.fix.id); goto failed; } --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c @@ -266,7 +266,7 @@ static int __devinit dnfb_probe(struct p out_8(AP_CONTROL_2, S_DATA_PLN); out_be16(AP_ROP_1, SWAP(0x3)); - printk("apollo frame buffer alive and kicking !\n"); + pr_info("apollo frame buffer initialized\n"); return err; } --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1400,7 +1400,7 @@ fbmem_init(void) devfs_mk_dir("fb"); if (register_chrdev(FB_MAJOR,"fb",&fb_fops)) - printk("unable to get major %d for fb devs\n", FB_MAJOR); + printk(KERN_WARNING "unable to get major %d for fb devs\n", FB_MAJOR); fb_class = class_create(THIS_MODULE, "graphics"); if (IS_ERR(fb_class)) { --- a/drivers/video/fbmon.c +++ b/drivers/video/fbmon.c @@ -44,7 +44,7 @@ #undef DEBUG /* define this for verbose EDID parsing output */ #ifdef DEBUG -#define DPRINTK(fmt, args...) printk(fmt,## args) +#define DPRINTK(fmt, args...) pr_debug("%s(): ", fmt, __FUNCTION__, ## args) #else #define DPRINTK(fmt, args...) #endif @@ -105,7 +105,7 @@ static int check_edid(unsigned char *edi for (i = 0; i < ARRAY_SIZE(brokendb); i++) { if (!strncmp(manufacturer, brokendb[i].manufacturer, 4) && brokendb[i].model == model) { - printk("fbmon: The EDID Block of " + pr_info("fbmon: The EDID Block of " "Manufacturer: %s Model: 0x%x is known to " "be broken,\n", manufacturer, model); fix = brokendb[i].fix; @@ -138,11 +138,11 @@ static void fix_edid(unsigned char *edid switch (fix) { case FBMON_FIX_HEADER: - printk("fbmon: trying a header reconstruct\n"); + pr_info("fbmon: trying a header reconstruct\n"); memcpy(edid, edid_v1_header, 8); break; case FBMON_FIX_INPUT: - printk("fbmon: trying to fix input type\n"); + pr_info("fbmon: trying to fix input type\n"); b = edid + EDID_STRUCT_DISPLAY; b[0] &= ~0x80; edid[127] += 0x80; @@ -769,7 +769,7 @@ static void get_monspecs(unsigned char * specs->misc |= FB_MISC_1ST_DETAIL; } if (c & 0x01) { - printk(" Display is GTF capable\n"); + DPRINTK(" Display is GTF capable\n"); specs->gtf = 1; } } --- a/drivers/video/ffb.c +++ b/drivers/video/ffb.c @@ -934,12 +934,12 @@ static void ffb_init_one(int node, int p struct all_info *all; if (prom_getproperty(node, "reg", (void *) regs, sizeof(regs)) <= 0) { - printk("ffb: Cannot get reg device node property.\n"); + printk(KERN_ERR "ffb: Cannot get reg device node property.\n"); return; } if (ffb_apply_upa_parent_ranges(parent, ®s[0])) { - printk("ffb: Cannot apply parent ranges to regs.\n"); + printk(KERN_ERR "ffb: Cannot apply parent ranges to regs.\n"); return; } @@ -1026,7 +1026,7 @@ static void ffb_init_one(int node, int p list_add(&all->list, &ffb_list); - printk("ffb: %s at %016lx type %d DAC %d\n", + pr_info("ffb: %s at %016lx type %d DAC %d\n", ((all->par.flags & FFB_FLAG_AFB) ? "AFB" : "FFB"), regs[0].phys_addr, all->par.board_type, all->par.dac_rev); } --- a/drivers/video/fm2fb.c +++ b/drivers/video/fm2fb.c @@ -287,7 +287,7 @@ static int __devinit fm2fb_probe(struct zorro_release_device(z); return -EINVAL; } - printk("fb%d: %s frame buffer device\n", info->node, fb_fix.id); + pr_info("fb%d: %s frame buffer device\n", info->node, fb_fix.id); return 0; } --- a/drivers/video/igafb.c +++ b/drivers/video/igafb.c @@ -364,7 +364,7 @@ static int __init iga_init(struct fb_inf if (register_framebuffer(info) < 0) return 0; - printk("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n", + pr_info("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n", info->node, info->fix.id, par->frame_buffer_phys, info->fix.smem_len >> 20); @@ -406,7 +406,7 @@ int __init igafb_init(void) info = kmalloc(size, GFP_ATOMIC); if (!info) { - printk("igafb_init: can't alloc fb_info\n"); + printk(KERN_ERR "igafb_init: can't alloc fb_info\n"); return -ENOMEM; } memset(info, 0, size); @@ -415,13 +415,13 @@ int __init igafb_init(void) if ((addr = pdev->resource[0].start) == 0) { - printk("igafb_init: no memory start\n"); + printk(KERN_ERR "igafb_init: no memory start\n"); kfree(info); return -ENXIO; } if ((info->screen_base = ioremap(addr, 1024*1024*2)) == 0) { - printk("igafb_init: can't remap %lx[2M]\n", addr); + printk(KERN_ERR "igafb_init: can't remap %lx[2M]\n", addr); kfree(info); return -ENXIO; } @@ -454,7 +454,7 @@ int __init igafb_init(void) igafb_fix.mmio_start = 0x30000000; /* XXX */ } if ((par->io_base = (int) ioremap(igafb_fix.mmio_start, igafb_fix.smem_len)) == 0) { - printk("igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start); + printk(KERN_ERR "igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start); iounmap((void *)info->screen_base); kfree(info); return -ENXIO; @@ -470,7 +470,7 @@ int __init igafb_init(void) par->mmap_map = kmalloc(4 * sizeof(*par->mmap_map), GFP_ATOMIC); if (!par->mmap_map) { - printk("igafb_init: can't alloc mmap_map\n"); + printk(KERN_ERR "igafb_init: can't alloc mmap_map\n"); iounmap((void *)par->io_base); iounmap(info->screen_base); kfree(info); --- a/drivers/video/imsttfb.c +++ b/drivers/video/imsttfb.c @@ -1412,7 +1412,8 @@ init_imstt(struct fb_info *info) if ((info->var.xres * info->var.yres) * (info->var.bits_per_pixel >> 3) > info->fix.smem_len || !(compute_imstt_regvals(par, info->var.xres, info->var.yres))) { - printk("imsttfb: %ux%ux%u not supported\n", info->var.xres, info->var.yres, info->var.bits_per_pixel); + printk(KERN_ERR "imsttfb: %ux%ux%u not supported\n", + info->var.xres, info->var.yres, info->var.bits_per_pixel); kfree(info); return; } @@ -1454,7 +1455,7 @@ init_imstt(struct fb_info *info) } tmp = (read_reg_le32(par->dc_regs, SSTATUS) & 0x0f00) >> 8; - printk("fb%u: %s frame buffer; %uMB vram; chip version %u\n", + pr_info("fb%u: %s frame buffer; %uMB vram; chip version %u\n", info->node, info->fix.id, info->fix.smem_len >> 20, tmp); } --- a/drivers/video/intelfb/intelfbhw.c +++ b/drivers/video/intelfb/intelfbhw.c @@ -540,10 +540,10 @@ intelfbhw_print_hw_state(struct intelfb_ if (!hw || !dinfo) return; /* Read in as much of the HW state as possible. */ - printk("hw state dump start\n"); - printk(" VGA0_DIVISOR: 0x%08x\n", hw->vga0_divisor); - printk(" VGA1_DIVISOR: 0x%08x\n", hw->vga1_divisor); - printk(" VGAPD: 0x%08x\n", hw->vga_pd); + pr_info("hw state dump start\n"); + pr_info(" VGA0_DIVISOR: 0x%08x\n", hw->vga0_divisor); + pr_info(" VGA1_DIVISOR: 0x%08x\n", hw->vga1_divisor); + pr_info(" VGAPD: 0x%08x\n", hw->vga_pd); n = (hw->vga0_divisor >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->vga0_divisor >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m2 = (hw->vga0_divisor >> FP_M2_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -552,9 +552,9 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->vga_pd >> VGAPD_0_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->vga_pd >> VGAPD_0_P2_SHIFT) & DPLL_P2_MASK; - printk(" VGA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" VGA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" VGA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" VGA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); n = (hw->vga1_divisor >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->vga1_divisor >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -564,16 +564,16 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->vga_pd >> VGAPD_1_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->vga_pd >> VGAPD_1_P2_SHIFT) & DPLL_P2_MASK; - printk(" VGA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" VGA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" VGA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" VGA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); - printk(" DPLL_A: 0x%08x\n", hw->dpll_a); - printk(" DPLL_B: 0x%08x\n", hw->dpll_b); - printk(" FPA0: 0x%08x\n", hw->fpa0); - printk(" FPA1: 0x%08x\n", hw->fpa1); - printk(" FPB0: 0x%08x\n", hw->fpb0); - printk(" FPB1: 0x%08x\n", hw->fpb1); + pr_info(" DPLL_A: 0x%08x\n", hw->dpll_a); + pr_info(" DPLL_B: 0x%08x\n", hw->dpll_b); + pr_info(" FPA0: 0x%08x\n", hw->fpa0); + pr_info(" FPA1: 0x%08x\n", hw->fpa1); + pr_info(" FPB0: 0x%08x\n", hw->fpb0); + pr_info(" FPB1: 0x%08x\n", hw->fpb1); n = (hw->fpa0 >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->fpa0 >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -583,9 +583,9 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->dpll_a >> DPLL_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->dpll_a >> DPLL_P2_SHIFT) & DPLL_P2_MASK; - printk(" PLLA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" PLLA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" PLLA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" PLLA0: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); n = (hw->fpa1 >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK; m1 = (hw->fpa1 >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK; @@ -595,62 +595,62 @@ intelfbhw_print_hw_state(struct intelfb_ else p1 = (hw->dpll_a >> DPLL_P1_SHIFT) & DPLL_P1_MASK; p2 = (hw->dpll_a >> DPLL_P2_SHIFT) & DPLL_P2_MASK; - printk(" PLLA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", + pr_info(" PLLA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n", m1, m2, n, p1, p2); - printk(" PLLA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); + pr_info(" PLLA1: clock is %d\n", CALC_VCLOCK(m1, m2, n, p1, p2)); #if 0 - printk(" PALETTE_A:\n"); + pr_info(" PALETTE_A:\n"); for (i = 0; i < PALETTE_8_ENTRIES) - printk(" %3d: 0x%08x\n", i, hw->palette_a[i]; - printk(" PALETTE_B:\n"); + pr_info(" %3d: 0x%08x\n", i, hw->palette_a[i]; + pr_info(" PALETTE_B:\n"); for (i = 0; i < PALETTE_8_ENTRIES) - printk(" %3d: 0x%08x\n", i, hw->palette_b[i]; + pr_info(" %3d: 0x%08x\n", i, hw->palette_b[i]; #endif - printk(" HTOTAL_A: 0x%08x\n", hw->htotal_a); - printk(" HBLANK_A: 0x%08x\n", hw->hblank_a); - printk(" HSYNC_A: 0x%08x\n", hw->hsync_a); - printk(" VTOTAL_A: 0x%08x\n", hw->vtotal_a); - printk(" VBLANK_A: 0x%08x\n", hw->vblank_a); - printk(" VSYNC_A: 0x%08x\n", hw->vsync_a); - printk(" SRC_SIZE_A: 0x%08x\n", hw->src_size_a); - printk(" BCLRPAT_A: 0x%08x\n", hw->bclrpat_a); - printk(" HTOTAL_B: 0x%08x\n", hw->htotal_b); - printk(" HBLANK_B: 0x%08x\n", hw->hblank_b); - printk(" HSYNC_B: 0x%08x\n", hw->hsync_b); - printk(" VTOTAL_B: 0x%08x\n", hw->vtotal_b); - printk(" VBLANK_B: 0x%08x\n", hw->vblank_b); - printk(" VSYNC_B: 0x%08x\n", hw->vsync_b); - printk(" SRC_SIZE_B: 0x%08x\n", hw->src_size_b); - printk(" BCLRPAT_B: 0x%08x\n", hw->bclrpat_b); - - printk(" ADPA: 0x%08x\n", hw->adpa); - printk(" DVOA: 0x%08x\n", hw->dvoa); - printk(" DVOB: 0x%08x\n", hw->dvob); - printk(" DVOC: 0x%08x\n", hw->dvoc); - printk(" DVOA_SRCDIM: 0x%08x\n", hw->dvoa_srcdim); - printk(" DVOB_SRCDIM: 0x%08x\n", hw->dvob_srcdim); - printk(" DVOC_SRCDIM: 0x%08x\n", hw->dvoc_srcdim); - printk(" LVDS: 0x%08x\n", hw->lvds); - - printk(" PIPEACONF: 0x%08x\n", hw->pipe_a_conf); - printk(" PIPEBCONF: 0x%08x\n", hw->pipe_b_conf); - printk(" DISPARB: 0x%08x\n", hw->disp_arb); - - printk(" CURSOR_A_CONTROL: 0x%08x\n", hw->cursor_a_control); - printk(" CURSOR_B_CONTROL: 0x%08x\n", hw->cursor_b_control); - printk(" CURSOR_A_BASEADDR: 0x%08x\n", hw->cursor_a_base); - printk(" CURSOR_B_BASEADDR: 0x%08x\n", hw->cursor_b_base); + pr_info(" HTOTAL_A: 0x%08x\n", hw->htotal_a); + pr_info(" HBLANK_A: 0x%08x\n", hw->hblank_a); + pr_info(" HSYNC_A: 0x%08x\n", hw->hsync_a); + pr_info(" VTOTAL_A: 0x%08x\n", hw->vtotal_a); + pr_info(" VBLANK_A: 0x%08x\n", hw->vblank_a); + pr_info(" VSYNC_A: 0x%08x\n", hw->vsync_a); + pr_info(" SRC_SIZE_A: 0x%08x\n", hw->src_size_a); + pr_info(" BCLRPAT_A: 0x%08x\n", hw->bclrpat_a); + pr_info(" HTOTAL_B: 0x%08x\n", hw->htotal_b); + pr_info(" HBLANK_B: 0x%08x\n", hw->hblank_b); + pr_info(" HSYNC_B: 0x%08x\n", hw->hsync_b); + pr_info(" VTOTAL_B: 0x%08x\n", hw->vtotal_b); + pr_info(" VBLANK_B: 0x%08x\n", hw->vblank_b); + pr_info(" VSYNC_B: 0x%08x\n", hw->vsync_b); + pr_info(" SRC_SIZE_B: 0x%08x\n", hw->src_size_b); + pr_info(" BCLRPAT_B: 0x%08x\n", hw->bclrpat_b); + + pr_info(" ADPA: 0x%08x\n", hw->adpa); + pr_info(" DVOA: 0x%08x\n", hw->dvoa); + pr_info(" DVOB: 0x%08x\n", hw->dvob); + pr_info(" DVOC: 0x%08x\n", hw->dvoc); + pr_info(" DVOA_SRCDIM: 0x%08x\n", hw->dvoa_srcdim); + pr_info(" DVOB_SRCDIM: 0x%08x\n", hw->dvob_srcdim); + pr_info(" DVOC_SRCDIM: 0x%08x\n", hw->dvoc_srcdim); + pr_info(" LVDS: 0x%08x\n", hw->lvds); + + pr_info(" PIPEACONF: 0x%08x\n", hw->pipe_a_conf); + pr_info(" PIPEBCONF: 0x%08x\n", hw->pipe_b_conf); + pr_info(" DISPARB: 0x%08x\n", hw->disp_arb); + + pr_info(" CURSOR_A_CONTROL: 0x%08x\n", hw->cursor_a_control); + pr_info(" CURSOR_B_CONTROL: 0x%08x\n", hw->cursor_b_control); + pr_info(" CURSOR_A_BASEADDR: 0x%08x\n", hw->cursor_a_base); + pr_info(" CURSOR_B_BASEADDR: 0x%08x\n", hw->cursor_b_base); - printk(" CURSOR_A_PALETTE: "); + pr_info(" CURSOR_A_PALETTE: "); for (i = 0; i < 4; i++) { printk("0x%08x", hw->cursor_a_palette[i]); if (i < 3) printk(", "); } printk("\n"); - printk(" CURSOR_B_PALETTE: "); + pr_info(" CURSOR_B_PALETTE: "); for (i = 0; i < 4; i++) { printk("0x%08x", hw->cursor_b_palette[i]); if (i < 3) @@ -658,40 +658,40 @@ intelfbhw_print_hw_state(struct intelfb_ } printk("\n"); - printk(" CURSOR_SIZE: 0x%08x\n", hw->cursor_size); + pr_info(" CURSOR_SIZE: 0x%08x\n", hw->cursor_size); - printk(" DSPACNTR: 0x%08x\n", hw->disp_a_ctrl); - printk(" DSPBCNTR: 0x%08x\n", hw->disp_b_ctrl); - printk(" DSPABASE: 0x%08x\n", hw->disp_a_base); - printk(" DSPBBASE: 0x%08x\n", hw->disp_b_base); - printk(" DSPASTRIDE: 0x%08x\n", hw->disp_a_stride); - printk(" DSPBSTRIDE: 0x%08x\n", hw->disp_b_stride); + pr_info(" DSPACNTR: 0x%08x\n", hw->disp_a_ctrl); + pr_info(" DSPBCNTR: 0x%08x\n", hw->disp_b_ctrl); + pr_info(" DSPABASE: 0x%08x\n", hw->disp_a_base); + pr_info(" DSPBBASE: 0x%08x\n", hw->disp_b_base); + pr_info(" DSPASTRIDE: 0x%08x\n", hw->disp_a_stride); + pr_info(" DSPBSTRIDE: 0x%08x\n", hw->disp_b_stride); - printk(" VGACNTRL: 0x%08x\n", hw->vgacntrl); - printk(" ADD_ID: 0x%08x\n", hw->add_id); + pr_info(" VGACNTRL: 0x%08x\n", hw->vgacntrl); + pr_info(" ADD_ID: 0x%08x\n", hw->add_id); for (i = 0; i < 7; i++) { - printk(" SWF0%d 0x%08x\n", i, + pr_info(" SWF0%d 0x%08x\n", i, hw->swf0x[i]); } for (i = 0; i < 7; i++) { - printk(" SWF1%d 0x%08x\n", i, + pr_info(" SWF1%d 0x%08x\n", i, hw->swf1x[i]); } for (i = 0; i < 3; i++) { - printk(" SWF3%d 0x%08x\n", i, + pr_info(" SWF3%d 0x%08x\n", i, hw->swf3x[i]); } for (i = 0; i < 8; i++) - printk(" FENCE%d 0x%08x\n", i, + pr_info(" FENCE%d 0x%08x\n", i, hw->fence[i]); - printk(" INSTPM 0x%08x\n", hw->instpm); - printk(" MEM_MODE 0x%08x\n", hw->mem_mode); - printk(" FW_BLC_0 0x%08x\n", hw->fw_blc_0); - printk(" FW_BLC_1 0x%08x\n", hw->fw_blc_1); + pr_info(" INSTPM 0x%08x\n", hw->instpm); + pr_info(" MEM_MODE 0x%08x\n", hw->mem_mode); + pr_info(" FW_BLC_0 0x%08x\n", hw->fw_blc_0); + pr_info(" FW_BLC_1 0x%08x\n", hw->fw_blc_1); - printk("hw state dump end\n"); + pr_info("hw state dump end\n"); #endif } --- a/drivers/video/kyro/fbdev.c +++ b/drivers/video/kyro/fbdev.c @@ -745,7 +745,7 @@ static int __devinit kyrofb_probe(struct if (register_framebuffer(info) < 0) goto out_unmap; - printk("fb%d: %s frame buffer device, at %dx%d@%d using %ldk/%ldk of VRAM\n", + pr_info("fb%d: %s frame buffer device, at %dx%d@%d using %ldk/%ldk of VRAM\n", info->node, info->fix.id, info->var.xres, info->var.yres, info->var.bits_per_pixel, size >> 10, (unsigned long)info->fix.smem_len >> 10); --- a/drivers/video/leo.c +++ b/drivers/video/leo.c @@ -616,7 +616,7 @@ static void leo_init_one(struct sbus_dev list_add(&all->list, &leo_list); - printk("leo: %s at %lx:%lx\n", + pr_info("leo: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c @@ -638,9 +638,9 @@ void __init macfb_init(void) Mac */ fb_info.screen_base = ioremap(mac_bi_data.videoaddr, macfb_fix.smem_len); - printk("macfb: framebuffer at 0x%08lx, mapped to 0x%p, size %dk\n", + pr_info("macfb: framebuffer at 0x%08lx, mapped to 0x%p, size %dk\n", macfb_fix.smem_start, fb_info.screen_base, macfb_fix.smem_len/1024); - printk("macfb: mode is %dx%dx%d, linelength=%d\n", + pr_info("macfb: mode is %dx%dx%d, linelength=%d\n", macfb_defined.xres, macfb_defined.yres, macfb_defined.bits_per_pixel, macfb_fix.line_length); /* @@ -652,7 +652,7 @@ void __init macfb_init(void) macfb_defined.height = PIXEL_TO_MM(macfb_defined.yres); macfb_defined.width = PIXEL_TO_MM(macfb_defined.xres); - printk("macfb: scrolling: redraw\n"); + pr_info("macfb: scrolling: redraw\n"); macfb_defined.yres_virtual = macfb_defined.yres; /* some dummy values for timing to make fbset happy */ @@ -688,7 +688,7 @@ void __init macfb_init(void) macfb_defined.green.length = 5; macfb_defined.blue.offset = 0; macfb_defined.blue.length = 5; - printk("macfb: directcolor: " + pr_info("macfb: directcolor: " "size=1:5:5:5, shift=15:10:5:0\n"); video_cmap_len = 16; /* Should actually be FB_VISUAL_DIRECTCOLOR, but this @@ -705,14 +705,14 @@ void __init macfb_init(void) macfb_defined.green.length = 8; macfb_defined.blue.offset = 0; macfb_defined.blue.length = 8; - printk("macfb: truecolor: " + pr_info("macfb: truecolor: " "size=0:8:8:8, shift=0:16:8:0\n"); video_cmap_len = 16; macfb_fix.visual = FB_VISUAL_TRUECOLOR; default: video_cmap_len = 0; macfb_fix.visual = FB_VISUAL_MONO01; - printk("macfb: unknown or unsupported bit depth: %d\n", macfb_defined.bits_per_pixel); + printk(KERN_WARNING "macfb: unknown or unsupported bit depth: %d\n", macfb_defined.bits_per_pixel); break; } @@ -961,7 +961,7 @@ void __init macfb_init(void) if (register_framebuffer(&fb_info) < 0) return; - printk("fb%d: %s frame buffer device\n", + pr_info("fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); } --- a/drivers/video/matrox/matroxfb_base.c +++ b/drivers/video/matrox/matroxfb_base.c @@ -1886,7 +1886,7 @@ static int initMatrox2(WPMINFO struct bo if (register_framebuffer(&ACCESS_FBINFO(fbcon)) < 0) { goto failVideoIO; } - printk("fb%d: %s frame buffer device\n", + pr_info("fb%d: %s frame buffer device\n", ACCESS_FBINFO(fbcon.node), ACCESS_FBINFO(fbcon.fix.id)); /* there is no console on this fb... but we have to initialize hardware --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -24,7 +24,7 @@ ((v).xres == (x) && (v).yres == (y)) #ifdef DEBUG -#define DPRINTK(fmt, args...) printk("modedb %s: " fmt, __FUNCTION__ , ## args) +#define DPRINTK(fmt, args...) pr_debug("modedb %s: " fmt, __FUNCTION__ , ## args) #else #define DPRINTK(fmt, args...) #endif --- a/drivers/video/neofb.c +++ b/drivers/video/neofb.c @@ -252,7 +252,7 @@ static void neoCalcVCLK(const struct fb_ par->VCLK3Denominator = d_best; #ifdef NEOFB_DEBUG - printk("neoVCLK: f:%d NumLow=%d NumHi=%d Den=%d Df=%d\n", + printk(KERN_DEBUG "neoVCLK: f:%d NumLow=%d NumHi=%d Den=%d Df=%d\n", f_target >> 12, par->VCLK3NumeratorLow, par->VCLK3NumeratorHigh, @@ -1715,13 +1715,13 @@ static int __devinit neo_map_mmio(struct if (!request_mem_region (info->fix.mmio_start, MMIO_SIZE, "memory mapped I/O")) { - printk("neofb: memory mapped IO in use\n"); + printk(KERN_ERR "neofb: memory mapped IO in use\n"); return -EBUSY; } par->mmio_vbase = ioremap(info->fix.mmio_start, MMIO_SIZE); if (!par->mmio_vbase) { - printk("neofb: unable to map memory mapped IO\n"); + printk(KERN_ERR "neofb: unable to map memory mapped IO\n"); release_mem_region(info->fix.mmio_start, info->fix.mmio_len); return -ENOMEM; @@ -1756,14 +1756,14 @@ static int __devinit neo_map_video(struc if (!request_mem_region(info->fix.smem_start, info->fix.smem_len, "frame buffer")) { - printk("neofb: frame buffer in use\n"); + printk(KERN_WARNING "neofb: frame buffer in use\n"); return -EBUSY; } info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len); if (!info->screen_base) { - printk("neofb: unable to map screen memory\n"); + printk(KERN_ERR "neofb: unable to map screen memory\n"); release_mem_region(info->fix.smem_start, info->fix.smem_len); return -ENOMEM; --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c @@ -332,7 +332,7 @@ static void p9100_init_one(struct sbus_d list_add(&all->list, &p9100_list); - printk("p9100: %s at %lx:%lx\n", + pr_info("p9100: %s at %lx:%lx\n", sdev->prom_name, (long) sdev->reg_addrs[0].which_io, (long) sdev->reg_addrs[0].phys_addr); --- a/drivers/video/platinumfb.c +++ b/drivers/video/platinumfb.c @@ -145,7 +145,7 @@ static int platinumfb_set_par (struct fb info->fix.visual = (pinfo->cmode == CMODE_8) ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; info->fix.line_length = vmode_attrs[pinfo->vmode-1].hres * (1<cmode) + offset; - printk("line_length: %x\n", info->fix.line_length); + printk(KERN_DEBUG "line_length: %x\n", info->fix.line_length); return 0; } @@ -361,12 +361,12 @@ static int __devinit platinum_init_fb(st platinum_vram_reqd(default_vmode, default_cmode) > pinfo->total_vram) default_cmode--; - printk("platinumfb: Using video mode %d and color mode %d.\n", default_vmode, default_cmode); + pr_info("platinumfb: Using video mode %d and color mode %d.\n", default_vmode, default_cmode); /* Setup default var */ if (mac_vmode_to_var(default_vmode, default_cmode, &var) < 0) { /* This shouldn't happen! */ - printk("mac_vmode_to_var(%d, %d,) failed\n", default_vmode, default_cmode); + printk(KERN_ERR "mac_vmode_to_var(%d, %d,) failed\n", default_vmode, default_cmode); try_again: default_vmode = VMODE_640_480_60; default_cmode = CMODE_8; --- a/drivers/video/pm3fb.c +++ b/drivers/video/pm3fb.c @@ -1577,7 +1577,7 @@ static void pm3fb_common_init(struct pm3 pm3fb_write_mode(l_fb_info); - printk("fb%d: %s, using %uK of video memory (%s)\n", + pr_info("fb%d: %s, using %uK of video memory (%s)\n", l_fb_info->gen.info.node, permedia3_name, (u32) (l_fb_info->fb_size >> 10), cardbase[l_fb_info->board_type].cardname); --- a/drivers/video/pvr2fb.c +++ b/drivers/video/pvr2fb.c @@ -817,10 +817,10 @@ static int __init pvr2fb_common_init(voi rev = fb_readl(par->mmio_base + 0x04); - printk("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n", + pr_info("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n", fb_info->node, fb_info->fix.id, (rev >> 4) & 0x0f, rev & 0x0f, modememused >> 10, (unsigned long)(fb_info->fix.smem_len >> 10)); - printk("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", + pr_info("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", fb_info->node, fb_info->var.xres, fb_info->var.yres, fb_info->var.bits_per_pixel, get_line_length(fb_info->var.xres, fb_info->var.bits_per_pixel), --- a/drivers/video/radeonfb.c +++ b/drivers/video/radeonfb.c @@ -28,6 +28,7 @@ * */ +//#define DEBUG #define RADEON_VERSION "0.1.6" @@ -80,13 +81,7 @@ #include