Commit a485bc0c authored by Patrick Mochel's avatar Patrick Mochel

Merge osdl.org:/home/mochel/src/kernel/linux-2.5-virgin

into osdl.org:/home/mochel/src/kernel/linux-2.5-core
parents e05d9d7b 1f4e775c
......@@ -2,7 +2,7 @@
----------------------------------------
Written by Geert Uytterhoeven <geert@linux-m68k.org>
Last revised: February 27, 2000
Last revised: September 5, 2003
1. Introduction
......@@ -75,7 +75,7 @@ they are CPU physical addresses as well.
The treatment of these regions depends on the type of Zorro space:
- Zorro II address space is always mapped and does not have to be mapped
explicitly using ioremap().
explicitly using z_ioremap().
Conversion from bus/physical Zorro II addresses to kernel virtual addresses
and vice versa is done using:
......@@ -83,22 +83,20 @@ The treatment of these regions depends on the type of Zorro space:
virt_addr = ZTWO_VADDR(bus_addr);
bus_addr = ZTWO_PADDR(virt_addr);
- Zorro III address space must be mapped explicitly using ioremap() first
- Zorro III address space must be mapped explicitly using z_ioremap() first
before it can be accessed:
virt_addr = ioremap(bus_addr, size);
virt_addr = z_ioremap(bus_addr, size);
...
iounmap(virt_addr);
z_iounmap(virt_addr);
5. References
-------------
linux/include/linux/zorro.h
linux/include/linux/ioport.h
linux/include/asm-m68k/io.h
linux/include/asm-m68k/amigahw.h
linux/include/asm-ppc/io.h
linux/include/asm-{m68k,ppc}/zorro.h
linux/include/linux/zorro_ids.h
linux/drivers/zorro
/proc/bus/zorro
......@@ -624,7 +624,7 @@ DIGIBOARD PC/XE AND PC/XI DRIVER
P: Christoph Lameter
M: christoph@lameter.com
W: http://www.digi.com
L: digilnux@dgii.com
L: digilnux@digi.com
S: Orphaned
DIRECTORY NOTIFICATION
......
......@@ -16,7 +16,7 @@ H8S is planning.
3.H8MAX
Under development
see http://www.strawbelly-linux.com (Japanese Only)
see http://www.strawberry-linux.com (Japanese Only)
* Toolchain Version
gcc-3.1 or higher and patch
......
......@@ -1303,3 +1303,8 @@ config X86_TRAMPOLINE
bool
depends on SMP || X86_VISWS
default y
config PC
bool
depends on X86 && !EMBEDDED
default y
......@@ -238,12 +238,9 @@ static void __init init_intel(struct cpuinfo_x86 *c)
}
/* SEP CPUID bug: Pentium Pro reports SEP but doesn't have it until model 3 mask 3 */
if ( c->x86 == 6) {
unsigned model_mask = (c->x86_model << 8) + c->x86_mask;
if (model_mask < 0x0303)
clear_bit(X86_FEATURE_SEP, c->x86_capability);
}
if ((c->x86<<8 | c->x86_model<<4 | c->x86_mask) < 0x633)
clear_bit(X86_FEATURE_SEP, c->x86_capability);
/* Names for the Pentium II/Celeron processors
detectable only by also checking the cache size.
Dixon is NOT a Celeron. */
......
......@@ -31,7 +31,7 @@ static void k7_machine_check(struct pt_regs * regs, long error_code)
printk (KERN_EMERG "CPU %d: Machine Check Exception: %08x%08x\n",
smp_processor_id(), mcgsth, mcgstl);
for (i=0; i<nr_mce_banks; i++) {
for (i=1; i<nr_mce_banks; i++) {
rdmsr (MSR_IA32_MC0_STATUS+i*4,low, high);
if (high&(1<<31)) {
if (high & (1<<29))
......@@ -81,6 +81,9 @@ void __init amd_mcheck_init(struct cpuinfo_x86 *c)
wrmsr (MSR_IA32_MCG_CTL, 0xffffffff, 0xffffffff);
nr_mce_banks = l & 0xff;
/* Clear status for MC index 0 separately, we don't touch CTL,
* as some Athlons cause spurious MCEs when its enabled. */
wrmsr (MSR_IA32_MC0_STATUS, 0x0, 0x0);
for (i=1; i<nr_mce_banks; i++) {
wrmsr (MSR_IA32_MC0_CTL+4*i, 0xffffffff, 0xffffffff);
wrmsr (MSR_IA32_MC0_STATUS+4*i, 0x0, 0x0);
......
......@@ -937,6 +937,7 @@ int cpu_sibling_map[NR_CPUS] __cacheline_aligned;
static void __init smp_boot_cpus(unsigned int max_cpus)
{
int apicid, cpu, bit, kicked;
unsigned long bogosum = 0;
/*
* Setup boot CPU information
......@@ -1048,26 +1049,25 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
/*
* Allow the user to impress friends.
*/
Dprintk("Before bogomips.\n");
if (!cpucount) {
printk(KERN_ERR "Error: only one processor found.\n");
} else {
unsigned long bogosum = 0;
for (cpu = 0; cpu < NR_CPUS; cpu++)
if (cpu_isset(cpu, cpu_callout_map))
bogosum += cpu_data[cpu].loops_per_jiffy;
printk(KERN_INFO "Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
cpucount+1,
bogosum/(500000/HZ),
(bogosum/(5000/HZ))%100);
Dprintk("Before bogocount - setting activated=1.\n");
}
for (cpu = 0; cpu < NR_CPUS; cpu++)
if (cpu_isset(cpu, cpu_callout_map))
bogosum += cpu_data[cpu].loops_per_jiffy;
printk(KERN_INFO
"Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
cpucount+1,
bogosum/(500000/HZ),
(bogosum/(5000/HZ))%100);
Dprintk("Before bogocount - setting activated=1.\n");
if (smp_b_stepping)
printk(KERN_WARNING "WARNING: SMP operation may be unreliable with B stepping processors.\n");
/* Don't taint if we are running SMP kernel on a single non-MP approved Athlon */
/*
* Don't taint if we are running SMP kernel on a single non-MP
* approved Athlon
*/
if (tainted & TAINT_UNSAFE_SMP) {
if (cpucount)
printk (KERN_INFO "WARNING: This combination of AMD processors is not suitable for SMP.\n");
......
......@@ -87,7 +87,7 @@ config ATARI
config HADES
bool "Hades support"
depends on ATARI
depends on ATARI && BROKEN
help
This option enables support for the Hades Atari clone. If you plan
to use this kernel on a Hades, say Y here; otherwise say N.
......@@ -361,7 +361,7 @@ config AMIGA_PCMCIA
config STRAM_SWAP
bool "Support for ST-RAM as swap space"
depends on ATARI
depends on ATARI && BROKEN
---help---
Some Atari 68k macines (including the 520STF and 1020STE) divide
their addressible memory into ST and TT sections. The TT section
......@@ -961,7 +961,7 @@ config MVME147_SCC
config SERIAL167
bool "CD2401 support for MVME166/7 serial ports"
depends on MVME16x
depends on MVME16x && BROKEN
help
This is the driver for the serial ports on the Motorola MVME166,
167, and 172 boards. Everyone using one of these boards should say
......
......@@ -76,6 +76,8 @@ core-$(CONFIG_M68040) += arch/m68k/fpsp040/
core-$(CONFIG_M68060) += arch/m68k/ifpsp060/
core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/
all: zImage
lilo: vmlinux
if [ -f $(INSTALL_PATH)/vmlinux ]; then mv -f $(INSTALL_PATH)/vmlinux $(INSTALL_PATH)/vmlinux.old; fi
if [ -f $(INSTALL_PATH)/System.map ]; then mv -f $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
......
......@@ -22,6 +22,7 @@
#include <linux/shm.h>
#include <linux/bootmem.h>
#include <linux/mount.h>
#include <linux/blkdev.h>
#include <asm/setup.h>
#include <asm/machdep.h>
......
......@@ -171,3 +171,12 @@ int do_settimeofday(struct timespec *tv)
write_sequnlock_irq(&xtime_lock);
return 0;
}
/*
* Scheduler clock - returns current time in ns units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies*(1000000000/HZ);
}
......@@ -200,7 +200,9 @@ void q40_free_irq(unsigned int irq, void *dev_id)
irqreturn_t q40_process_int (int level, struct pt_regs *fp)
{
printk("unexpected interrupt %x\n",level);
printk("unexpected interrupt vec=%x, pc=%lx, d0=%lx, d0_orig=%lx, d1=%lx, d2=%lx\n",
level, fp->pc, fp->d0, fp->orig_d0, fp->d1, fp->d2);
printk("\tIIRQ_REG = %x, EIRQ_REG = %x\n",master_inb(IIRQ_REG),master_inb(EIRQ_REG));
return IRQ_HANDLED;
}
......@@ -378,7 +380,7 @@ irqreturn_t q40_irq2_handler (int vec, void *devname, struct pt_regs *fp)
/*printk("reenabling irq %d\n",irq); */
#endif
}
// used to do 'goto repeat;' her, this delayed bh processing too long
// used to do 'goto repeat;' here, this delayed bh processing too long
return IRQ_HANDLED;
}
}
......@@ -387,6 +389,7 @@ irqreturn_t q40_irq2_handler (int vec, void *devname, struct pt_regs *fp)
}
iirq:
mir=master_inb(IIRQ_REG);
/* should test whether keyboard irq is really enabled, doing it in defhand */
if (mir&Q40_IRQ_KEYB_MASK) {
irq_tab[Q40_IRQ_KEYBOARD].count++;
irq_tab[Q40_IRQ_KEYBOARD].handler(Q40_IRQ_KEYBOARD,irq_tab[Q40_IRQ_KEYBOARD].dev_id,fp);
......@@ -413,7 +416,9 @@ int show_q40_interrupts (struct seq_file *p, void *v)
static irqreturn_t q40_defhand (int irq, void *dev_id, struct pt_regs *fp)
{
printk ("Unknown q40 interrupt 0x%02x\n", irq);
if (irq!=Q40_IRQ_KEYBOARD)
printk ("Unknown q40 interrupt %d\n", irq);
else master_outb(-1,KEYBOARD_UNLOCK_REG);
return IRQ_NONE;
}
static irqreturn_t sys_default_handler(int lev, void *dev_id, struct pt_regs *regs)
......
......@@ -129,7 +129,7 @@ void __init sun3_bootmem_alloc(unsigned long memory_start, unsigned long memory_
high_memory = (void *)memory_end;
availmem = memory_start;
availmem += init_bootmem(start_page, num_pages);
availmem += init_bootmem_node(NODE_DATA(0), start_page, 0, num_pages);
availmem = (availmem + (PAGE_SIZE-1)) & PAGE_MASK;
free_bootmem(__pa(availmem), memory_end - (availmem));
......
......@@ -35,7 +35,7 @@ config BLK_DEV_FD98
config BLK_DEV_SWIM_IOP
bool "Macintosh IIfx/Quadra 900/Quadra 950 floppy support (EXPERIMENTAL)"
depends on MAC && EXPERIMENTAL
depends on MAC && EXPERIMENTAL && BROKEN
help
Say Y here to support the SWIM (Super Woz Integrated Machine) IOP
floppy controller on the Macintosh IIfx and Quadra 900/950.
......@@ -63,7 +63,7 @@ config AMIGA_Z2RAM
config ATARI_ACSI
tristate "Atari ACSI support"
depends on ATARI
depends on ATARI && BROKEN
---help---
This enables support for the Atari ACSI interface. The driver
supports hard disks and CD-ROMs, which have 512-byte sectors, or can
......
......@@ -63,6 +63,7 @@ typedef void Scsi_Device; /* hack to avoid including scsi.h */
#include <linux/hdreg.h> /* for HDIO_GETGEO */
#include <linux/blkpg.h>
#include <linux/buffer_head.h>
#include <linux/blkdev.h>
#include <asm/setup.h>
#include <asm/pgtable.h>
......@@ -346,7 +347,7 @@ struct acsi_error {
static int acsicmd_dma( const char *cmd, char *buffer, int blocks, int
rwflag, int enable);
static int acsi_reqsense( char *buffer, int targ, int lun);
static void acsi_print_error(const unsigned char *errblk, int struct acsi_info_struct *aip);
static void acsi_print_error(const unsigned char *errblk, struct acsi_info_struct *aip);
static irqreturn_t acsi_interrupt (int irq, void *data, struct pt_regs *fp);
static void unexpected_acsi_interrupt( void );
static void bad_rw_intr( void );
......
......@@ -25,6 +25,7 @@
#include <linux/cdrom.h>
#include <linux/slab.h>
#include <linux/bio.h>
#include <linux/times.h>
#include <asm/uaccess.h>
#include <scsi/scsi.h>
......@@ -140,40 +141,36 @@ static int sg_emulated_host(request_queue_t *q, int *p)
}
static int sg_io(request_queue_t *q, struct block_device *bdev,
struct sg_io_hdr *uptr)
struct sg_io_hdr *hdr)
{
unsigned long start_time;
int reading, writing;
struct sg_io_hdr hdr;
struct request *rq;
struct bio *bio;
char sense[SCSI_SENSE_BUFFERSIZE];
void *buffer;
if (copy_from_user(&hdr, uptr, sizeof(*uptr)))
return -EFAULT;
if (hdr.interface_id != 'S')
if (hdr->interface_id != 'S')
return -EINVAL;
if (hdr.cmd_len > sizeof(rq->cmd))
if (hdr->cmd_len > sizeof(rq->cmd))
return -EINVAL;
/*
* we'll do that later
*/
if (hdr.iovec_count)
if (hdr->iovec_count)
return -EOPNOTSUPP;
if (hdr.dxfer_len > (q->max_sectors << 9))
if (hdr->dxfer_len > (q->max_sectors << 9))
return -EIO;
reading = writing = 0;
buffer = NULL;
bio = NULL;
if (hdr.dxfer_len) {
unsigned int bytes = (hdr.dxfer_len + 511) & ~511;
if (hdr->dxfer_len) {
unsigned int bytes = (hdr->dxfer_len + 511) & ~511;
switch (hdr.dxfer_direction) {
switch (hdr->dxfer_direction) {
default:
return -EINVAL;
case SG_DXFER_TO_FROM_DEV:
......@@ -191,8 +188,8 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
* first try to map it into a bio. reading from device will
* be a write to vm.
*/
bio = bio_map_user(bdev, (unsigned long) hdr.dxferp,
hdr.dxfer_len, reading);
bio = bio_map_user(bdev, (unsigned long) hdr->dxferp,
hdr->dxfer_len, reading);
/*
* if bio setup failed, fall back to slow approach
......@@ -203,11 +200,11 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
return -ENOMEM;
if (writing) {
if (copy_from_user(buffer, hdr.dxferp,
hdr.dxfer_len))
if (copy_from_user(buffer, hdr->dxferp,
hdr->dxfer_len))
goto out_buffer;
} else
memset(buffer, 0, hdr.dxfer_len);
memset(buffer, 0, hdr->dxfer_len);
}
}
......@@ -216,11 +213,10 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
/*
* fill in request structure
*/
rq->cmd_len = hdr.cmd_len;
if (copy_from_user(rq->cmd, hdr.cmdp, hdr.cmd_len))
goto out_request;
if (sizeof(rq->cmd) != hdr.cmd_len)
memset(rq->cmd + hdr.cmd_len, 0, sizeof(rq->cmd) - hdr.cmd_len);
rq->cmd_len = hdr->cmd_len;
memcpy(rq->cmd, hdr->cmdp, hdr->cmd_len);
if (sizeof(rq->cmd) != hdr->cmd_len)
memset(rq->cmd + hdr->cmd_len, 0, sizeof(rq->cmd) - hdr->cmd_len);
memset(sense, 0, sizeof(sense));
rq->sense = sense;
......@@ -234,9 +230,9 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
blk_rq_bio_prep(q, rq, bio);
rq->data = buffer;
rq->data_len = hdr.dxfer_len;
rq->data_len = hdr->dxfer_len;
rq->timeout = (hdr.timeout * HZ) / 1000;
rq->timeout = (hdr->timeout * HZ) / 1000;
if (!rq->timeout)
rq->timeout = q->sg_timeout;
if (!rq->timeout)
......@@ -254,33 +250,30 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
bio_unmap_user(bio, reading);
/* write to all output members */
hdr.status = rq->errors;
hdr.masked_status = (hdr.status >> 1) & 0x1f;
hdr.msg_status = 0;
hdr.host_status = 0;
hdr.driver_status = 0;
hdr.info = 0;
if (hdr.masked_status || hdr.host_status || hdr.driver_status)
hdr.info |= SG_INFO_CHECK;
hdr.resid = rq->data_len;
hdr.duration = ((jiffies - start_time) * 1000) / HZ;
hdr.sb_len_wr = 0;
if (rq->sense_len && hdr.sbp) {
int len = min((unsigned int) hdr.mx_sb_len, rq->sense_len);
if (!copy_to_user(hdr.sbp, rq->sense, len))
hdr.sb_len_wr = len;
hdr->status = rq->errors;
hdr->masked_status = (hdr->status >> 1) & 0x1f;
hdr->msg_status = 0;
hdr->host_status = 0;
hdr->driver_status = 0;
hdr->info = 0;
if (hdr->masked_status || hdr->host_status || hdr->driver_status)
hdr->info |= SG_INFO_CHECK;
hdr->resid = rq->data_len;
hdr->duration = ((jiffies - start_time) * 1000) / HZ;
hdr->sb_len_wr = 0;
if (rq->sense_len && hdr->sbp) {
int len = min((unsigned int) hdr->mx_sb_len, rq->sense_len);
if (!copy_to_user(hdr->sbp, rq->sense, len))
hdr->sb_len_wr = len;
}
blk_put_request(rq);
if (copy_to_user(uptr, &hdr, sizeof(*uptr)))
goto out_buffer;
if (buffer) {
if (reading)
if (copy_to_user(hdr.dxferp, buffer, hdr.dxfer_len))
if (copy_to_user(hdr->dxferp, buffer, hdr->dxfer_len))
goto out_buffer;
kfree(buffer);
......@@ -289,8 +282,6 @@ static int sg_io(request_queue_t *q, struct block_device *bdev,
/* may not have succeeded, but output values written to control
* structure (struct sg_io_hdr). */
return 0;
out_request:
blk_put_request(rq);
out_buffer:
kfree(buffer);
return -EFAULT;
......@@ -437,9 +428,71 @@ int scsi_cmd_ioctl(struct block_device *bdev, unsigned int cmd, unsigned long ar
case SG_EMULATED_HOST:
err = sg_emulated_host(q, (int *) arg);
break;
case SG_IO:
err = sg_io(q, bdev, (struct sg_io_hdr *) arg);
case SG_IO: {
struct sg_io_hdr hdr;
if (copy_from_user(&hdr, (struct sg_io_hdr *) arg, sizeof(hdr))) {
err = -EFAULT;
break;
}
err = sg_io(q, bdev, &hdr);
if (copy_to_user((struct sg_io_hdr *) arg, &hdr, sizeof(hdr)))
err = -EFAULT;
break;
}
case CDROM_SEND_PACKET: {
struct cdrom_generic_command cgc;
struct sg_io_hdr hdr;
if (copy_from_user(&cgc, (struct cdrom_generic_command *) arg, sizeof(cgc))) {
err = -EFAULT;
break;
}
cgc.timeout = clock_t_to_jiffies(cgc.timeout);
memset(&hdr, 0, sizeof(hdr));
hdr.interface_id = 'S';
hdr.cmd_len = sizeof(cgc.cmd);
hdr.dxfer_len = cgc.buflen;
err = 0;
switch (cgc.data_direction) {
case CGC_DATA_UNKNOWN:
hdr.dxfer_direction = SG_DXFER_UNKNOWN;
break;
case CGC_DATA_WRITE:
hdr.dxfer_direction = SG_DXFER_TO_DEV;
break;
case CGC_DATA_READ:
hdr.dxfer_direction = SG_DXFER_FROM_DEV;
break;
case CGC_DATA_NONE:
hdr.dxfer_direction = SG_DXFER_NONE;
break;
default:
err = -EINVAL;
}
if (err)
break;
hdr.dxferp = cgc.buffer;
hdr.sbp = (char *) cgc.sense;
if (hdr.sbp)
hdr.mx_sb_len = sizeof(struct request_sense);
hdr.timeout = cgc.timeout;
hdr.cmdp = cgc.cmd;
hdr.cmd_len = sizeof(cgc.cmd);
err = sg_io(q, bdev, &hdr);
if (hdr.status)
err = -EIO;
cgc.stat = err;
cgc.buflen = hdr.resid;
if (copy_to_user((struct cdrom_generic_command *) arg, &cgc, sizeof(cgc)))
err = -EFAULT;
break;
}
/*
* old junk scsi send command ioctl
*/
......
......@@ -31,6 +31,7 @@
#include <linux/delay.h>
#include <linux/fd.h>
#include <linux/ioctl.h>
#include <linux/blkdev.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/mac_iop.h>
......
......@@ -1856,57 +1856,6 @@ static int cdrom_switch_blocksize(struct cdrom_device_info *cdi, int size)
return cdo->generic_packet(cdi, &cgc);
}
static int cdrom_do_cmd(struct cdrom_device_info *cdi,
struct cdrom_generic_command *cgc)
{
struct request_sense *usense, sense;
unsigned char *ubuf;
int ret;
if (cgc->data_direction == CGC_DATA_UNKNOWN)
return -EINVAL;
if (cgc->buflen < 0 || cgc->buflen >= 131072)
return -EINVAL;
usense = cgc->sense;
cgc->sense = &sense;
if (usense && !access_ok(VERIFY_WRITE, usense, sizeof(*usense))) {
return -EFAULT;
}
ubuf = cgc->buffer;
if (cgc->data_direction == CGC_DATA_READ ||
cgc->data_direction == CGC_DATA_WRITE) {
cgc->buffer = kmalloc(cgc->buflen, GFP_KERNEL);
if (cgc->buffer == NULL)
return -ENOMEM;
}
if (cgc->data_direction == CGC_DATA_READ) {
if (!access_ok(VERIFY_READ, ubuf, cgc->buflen)) {
kfree(cgc->buffer);
return -EFAULT;
}
} else if (cgc->data_direction == CGC_DATA_WRITE) {
if (copy_from_user(cgc->buffer, ubuf, cgc->buflen)) {
kfree(cgc->buffer);
return -EFAULT;
}
}
ret = cdi->ops->generic_packet(cdi, cgc);
__copy_to_user(usense, cgc->sense, sizeof(*usense));
if (!ret && cgc->data_direction == CGC_DATA_READ)
__copy_to_user(ubuf, cgc->buffer, cgc->buflen);
if (cgc->data_direction == CGC_DATA_READ ||
cgc->data_direction == CGC_DATA_WRITE) {
kfree(cgc->buffer);
}
return ret;
}
static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
unsigned long arg)
{
......@@ -2176,14 +2125,6 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
return 0;
}
case CDROM_SEND_PACKET: {
if (!CDROM_CAN(CDC_GENERIC_PACKET))
return -ENOSYS;
cdinfo(CD_DO_IOCTL, "entering CDROM_SEND_PACKET\n");
IOCTL_IN(arg, struct cdrom_generic_command, cgc);
cgc.timeout = clock_t_to_jiffies(cgc.timeout);
return cdrom_do_cmd(cdi, &cgc);
}
case CDROM_NEXT_WRITABLE: {
long next = 0;
cdinfo(CD_DO_IOCTL, "entering CDROM_NEXT_WRITABLE\n");
......
......@@ -348,7 +348,7 @@ int gs_real_chars_in_buffer(struct tty_struct *tty)
static int gs_wait_tx_flushed (void * ptr, int timeout)
{
struct gs_port *port = ptr;
long end_jiffies;
unsigned long end_jiffies;
int jiffies_to_transmit, charsleft = 0, rv = 0;
int rcib;
......
......@@ -703,7 +703,7 @@ static int a2232_init_drivers(void)
a2232_driver->name = "ttyY";
a2232_driver->major = A2232_NORMAL_MAJOR;
a2232_driver->type = TTY_DRIVER_TYPE_SERIAL;
a2232_driver->subtype = SERIAL_TTY_NORMAL;
a2232_driver->subtype = SERIAL_TYPE_NORMAL;
a2232_driver->init_termios = tty_std_termios;
a2232_driver->init_termios.c_cflag =
B9600 | CS8 | CREAD | HUPCL | CLOCAL;
......
......@@ -285,7 +285,7 @@ config I2C_VELLEMAN
will be called i2c-velleman.
config I2C_VIA
tristate "VIA 82C58B"
tristate "VIA 82C586B"
depends on I2C_ALGOBIT && PCI && EXPERIMENTAL
help
......
......@@ -133,7 +133,7 @@ int i2c_detect(struct i2c_adapter *adapter,
i += 2) {
if (((adapter_id == address_data->probe[i]) ||
((address_data->
probe[i] == ANY_I2C_BUS) & !is_isa))
probe[i] == ANY_I2C_BUS) && !is_isa))
&& (addr == address_data->probe[i + 1])) {
dev_dbg(&adapter->dev, "found probe parameter for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
......@@ -141,7 +141,7 @@ int i2c_detect(struct i2c_adapter *adapter,
}
for (i = 0; !found && (address_data->probe_range[i] != I2C_CLIENT_END); i += 3) {
if ( ((adapter_id == address_data->probe_range[i]) ||
((address_data->probe_range[i] == ANY_I2C_BUS) & !is_isa)) &&
((address_data->probe_range[i] == ANY_I2C_BUS) && !is_isa)) &&
(addr >= address_data->probe_range[i + 1]) &&
(addr <= address_data->probe_range[i + 2])) {
found = 1;
......
......@@ -12,10 +12,11 @@ config INPUT_KEYBOARD
If unsure, say Y.
config KEYBOARD_ATKBD
tristate "AT keyboard support" if EMBEDDED || !X86
tristate "AT keyboard support" if !PC
default y
depends on INPUT && INPUT_KEYBOARD
select SERIO_I8042
select SERIO
select SERIO_I8042 if PC
help
Say Y here if you want to use a standard AT or PS/2 keyboard. Usually
you'll need this, unless you have a different type keyboard (USB, ADB
......
......@@ -15,7 +15,8 @@ config MOUSE_PS2
tristate "PS/2 mouse"
default y
depends on INPUT && INPUT_MOUSE
select SERIO_I8042
select SERIO
select SERIO_I8042 if PC
---help---
Say Y here if you have a PS/2 mouse connected to your system. This
includes the standard 2 or 3-button PS/2 mouse, as well as PS/2
......
......@@ -332,7 +332,7 @@ config MAC8390
config MAC89x0
tristate "Macintosh CS89x0 based ethernet cards"
depends on NETDEVICES && MAC
depends on NETDEVICES && MAC && BROKEN
---help---
Support for CS89x0 chipset based Ethernet cards. If you have a
Nubus or LC-PDS network (Ethernet) card of this type, say Y and
......@@ -405,7 +405,7 @@ config ATARILANCE
config ATARI_BIONET
tristate "BioNet-100 support"
depends on NETDEVICES && ATARI && ATARI_ACSI!=n
depends on NETDEVICES && ATARI && ATARI_ACSI!=n && BROKEN
help
Say Y to include support for BioData's BioNet-100 Ethernet adapter
for the ACSI port. The driver works (has to work...) with a polled
......@@ -413,7 +413,7 @@ config ATARI_BIONET
config ATARI_PAMSNET
tristate "PAMsNet support"
depends on NETDEVICES && ATARI && ATARI_ACSI!=n
depends on NETDEVICES && ATARI && ATARI_ACSI!=n && BROKEN
help
Say Y to include support for the PAMsNet Ethernet adapter for the
ACSI port ("ACSI node"). The driver works (has to work...) with a
......@@ -808,7 +808,7 @@ config ULTRA32
config SMC9194
tristate "SMC 9194 support"
depends on NET_VENDOR_SMC && (ISA || MAC)
depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN)
select CRC32
---help---
This is support for the SMC9xxx based Ethernet cards. Choose this
......
......@@ -442,14 +442,14 @@ int __init mac8390_initdev(struct net_device * dev, struct nubus_dev * ndev,
ei_status.tx_start_page = CABLETRON_TX_START_PG;
ei_status.rx_start_page = CABLETRON_RX_START_PG;
ei_status.stop_page = CABLETRON_RX_STOP_PG;
dev->rmem_start = dev->mem_start;
dev->rmem_end = dev->mem_start + CABLETRON_RX_STOP_PG*256;
ei_status.rmem_start = dev->mem_start;
ei_status.rmem_end = dev->mem_start + CABLETRON_RX_STOP_PG*256;
} else {
ei_status.tx_start_page = WD_START_PG;
ei_status.rx_start_page = WD_START_PG + TX_PAGES;
ei_status.stop_page = (dev->mem_end - dev->mem_start)/256;
dev->rmem_start = dev->mem_start + TX_PAGES*256;
dev->rmem_end = dev->mem_end;
ei_status.rmem_start = dev->mem_start + TX_PAGES*256;
ei_status.rmem_end = dev->mem_end;
}
/* Fill in model-specific information and functions */
......@@ -621,12 +621,12 @@ static void sane_block_input(struct net_device *dev, int count,
unsigned long xfer_base = ring_offset - (WD_START_PG<<8);
unsigned long xfer_start = xfer_base + dev->mem_start;
if (xfer_start + count > dev->rmem_end) {
if (xfer_start + count > ei_status.rmem_end) {
/* We must wrap the input move. */
int semi_count = dev->rmem_end - xfer_start;
int semi_count = ei_status.rmem_end - xfer_start;
memcpy_fromio(skb->data, (char *)dev->mem_start + xfer_base, semi_count);
count -= semi_count;
memcpy_toio(skb->data + semi_count, (char *)dev->rmem_start, count);
memcpy_toio(skb->data + semi_count, (char *)ei_status.rmem_start, count);
} else {
memcpy_fromio(skb->data, (char *)dev->mem_start + xfer_base, count);
}
......@@ -657,15 +657,16 @@ static void dayna_block_input(struct net_device *dev, int count, struct sk_buff
/* Note the offset math is done in card memory space which is word
per long onto our space. */
if (xfer_start + count > dev->rmem_end)
if (xfer_start + count > ei_status.rmem_end)
{
/* We must wrap the input move. */
int semi_count = dev->rmem_end - xfer_start;
int semi_count = ei_status.rmem_end - xfer_start;
dayna_memcpy_fromcard(dev, skb->data, xfer_base, semi_count);
count -= semi_count;
dayna_memcpy_fromcard(dev, skb->data + semi_count,
dev->rmem_start - dev->mem_start, count);
dayna_memcpy_fromcard(dev, skb->data + semi_count,
ei_status.rmem_start - dev->mem_start,
count);
}
else
{
......@@ -697,15 +698,15 @@ static void slow_sane_block_input(struct net_device *dev, int count, struct sk_b
unsigned long xfer_base = ring_offset - (WD_START_PG<<8);
unsigned long xfer_start = xfer_base+dev->mem_start;
if (xfer_start + count > dev->rmem_end)
if (xfer_start + count > ei_status.rmem_end)
{
/* We must wrap the input move. */
int semi_count = dev->rmem_end - xfer_start;
int semi_count = ei_status.rmem_end - xfer_start;
word_memcpy_fromcard(skb->data, (char *)dev->mem_start +
xfer_base, semi_count);
count -= semi_count;
word_memcpy_fromcard(skb->data + semi_count,
(char *)dev->rmem_start, count);
(char *)ei_status.rmem_start, count);
}
else
{
......
......@@ -1435,7 +1435,7 @@ config A3000_SCSI
config A4000T_SCSI
bool "A4000T SCSI support (EXPERIMENTAL)"
depends on AMIGA && SCSI && EXPERIMENTAL
depends on AMIGA && SCSI && EXPERIMENTAL && BROKEN
help
Support for the NCR53C710 SCSI controller on the Amiga 4000T.
......@@ -1503,7 +1503,7 @@ config FASTLANE_SCSI
config A4091_SCSI
bool "A4091 SCSI support (EXPERIMENTAL)"
depends on ZORRO && SCSI && EXPERIMENTAL
depends on ZORRO && SCSI && EXPERIMENTAL && BROKEN
help
Support for the NCR53C710 chip on the Amiga 4091 Z3 SCSI2 controller
(1993). Very obscure -- the 4091 was part of an Amiga 4000 upgrade
......@@ -1511,7 +1511,7 @@ config A4091_SCSI
config WARPENGINE_SCSI
bool "WarpEngine SCSI support (EXPERIMENTAL)"
depends on ZORRO && SCSI && EXPERIMENTAL
depends on ZORRO && SCSI && EXPERIMENTAL && BROKEN
help
Support for MacroSystem Development's WarpEngine Amiga SCSI-2
controller. Info at
......@@ -1519,7 +1519,7 @@ config WARPENGINE_SCSI
config BLZ603EPLUS_SCSI
bool "Blizzard PowerUP 603e+ SCSI (EXPERIMENTAL)"
depends on ZORRO && SCSI && EXPERIMENTAL
depends on ZORRO && SCSI && EXPERIMENTAL && BROKEN
help
If you have an Amiga 1200 with a Phase5 Blizzard PowerUP 603e+
accelerator, say Y. Otherwise, say N.
......@@ -1535,7 +1535,7 @@ config OKTAGON_SCSI
config ATARI_SCSI
tristate "Atari native SCSI support"
depends on ATARI && SCSI
depends on ATARI && SCSI && BROKEN
---help---
If you have an Atari with built-in NCR5380 SCSI controller (TT,
Falcon, ...) say Y to get it supported. Of course also, if you have
......@@ -1604,7 +1604,7 @@ config MVME147_SCSI
config MVME16x_SCSI
bool "NCR53C710 SCSI driver for MVME16x"
depends on MVME16x && SCSI
depends on MVME16x && SCSI && BROKEN
help
The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
SCSI controller chip. Almost everyone using one of these boards
......@@ -1612,7 +1612,7 @@ config MVME16x_SCSI
config BVME6000_SCSI
bool "NCR53C710 SCSI driver for BVME6000"
depends on BVME6000 && SCSI
depends on BVME6000 && SCSI && BROKEN
help
The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
SCSI controller chip. Almost everyone using one of these boards
......
......@@ -25,31 +25,20 @@
#define DMA(ptr) ((a2091_scsiregs *)((ptr)->base))
#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata))
static struct Scsi_Host *first_instance = NULL;
static Scsi_Host_Template *a2091_template;
static irqreturn_t a2091_intr (int irq, void *dummy, struct pt_regs *fp)
static irqreturn_t a2091_intr (int irq, void *_instance, struct pt_regs *fp)
{
unsigned long flags;
unsigned int status;
struct Scsi_Host *instance;
int handled = 0;
struct Scsi_Host *instance = (struct Scsi_Host *)_instance;
for (instance = first_instance; instance &&
instance->hostt == a2091_template; instance = instance->next)
{
status = DMA(instance)->ISTR;
if (!(status & (ISTR_INT_F|ISTR_INT_P)))
continue;
if (status & ISTR_INTS) {
spin_lock_irqsave(instance->host_lock, flags);
wd33c93_intr (instance);
spin_unlock_irqrestore(instance->host_lock, flags);
handled = 1;
}
}
return IRQ_RETVAL(handled);
status = DMA(instance)->ISTR;
if (!(status & (ISTR_INT_F|ISTR_INT_P)) || !(status & ISTR_INTS))
return IRQ_NONE;
spin_lock_irqsave(instance->host_lock, flags);
wd33c93_intr(instance);
spin_unlock_irqrestore(instance->host_lock, flags);
return IRQ_HANDLED;
}
static int dma_setup (Scsi_Cmnd *cmd, int dir_in)
......@@ -184,8 +173,6 @@ static void dma_stop (struct Scsi_Host *instance, Scsi_Cmnd *SCpnt,
}
}
static int num_a2091 = 0;
int __init a2091_detect(Scsi_Host_Template *tpnt)
{
static unsigned char called = 0;
......@@ -193,6 +180,7 @@ int __init a2091_detect(Scsi_Host_Template *tpnt)
unsigned long address;
struct zorro_dev *z = NULL;
wd33c93_regs regs;
int num_a2091 = 0;
if (!MACH_IS_AMIGA || called)
return 0;
......@@ -221,13 +209,10 @@ int __init a2091_detect(Scsi_Host_Template *tpnt)
regs.SASR = &(DMA(instance)->SASR);
regs.SCMD = &(DMA(instance)->SCMD);
wd33c93_init(instance, regs, dma_setup, dma_stop, WD33C93_FS_8_10);
if (num_a2091++ == 0) {
first_instance = instance;
a2091_template = instance->hostt;
request_irq(IRQ_AMIGA_PORTS, a2091_intr, SA_SHIRQ, "A2091 SCSI",
a2091_intr);
}
request_irq(IRQ_AMIGA_PORTS, a2091_intr, SA_SHIRQ, "A2091 SCSI",
instance);
DMA(instance)->CNTR = CNTR_PDMD | CNTR_INTEN;
num_a2091++;
}
return num_a2091;
......@@ -266,8 +251,7 @@ int a2091_release(struct Scsi_Host *instance)
#ifdef MODULE
DMA(instance)->CNTR = 0;
release_mem_region(ZTWO_PADDR(instance->base), 256);
if (--num_a2091 == 0)
free_irq(IRQ_AMIGA_PORTS, a2091_intr);
free_irq(IRQ_AMIGA_PORTS, instance);
wd33c93_release();
#endif
return 1;
......
......@@ -25,29 +25,20 @@
#define DMA(ptr) ((gvp11_scsiregs *)((ptr)->base))
#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata))
static struct Scsi_Host *first_instance = NULL;
static Scsi_Host_Template *gvp11_template;
static irqreturn_t gvp11_intr (int irq, void *dummy, struct pt_regs *fp)
static irqreturn_t gvp11_intr (int irq, void *_instance, struct pt_regs *fp)
{
unsigned long flags;
unsigned int status;
struct Scsi_Host *instance;
int handled = 0;
struct Scsi_Host *instance = (struct Scsi_Host *)_instance;
for (instance = first_instance; instance &&
instance->hostt == gvp11_template; instance = instance->next)
{
status = DMA(instance)->CNTR;
if (!(status & GVP11_DMAC_INT_PENDING))
continue;
status = DMA(instance)->CNTR;
if (!(status & GVP11_DMAC_INT_PENDING))
return IRQ_NONE;
spin_lock_irqsave(instance->host_lock, flags);
wd33c93_intr (instance);
spin_unlock_irqrestore(instance->host_lock, flags);
handled = 1;
}
return IRQ_RETVAL(handled);
spin_lock_irqsave(instance->host_lock, flags);
wd33c93_intr(instance);
spin_unlock_irqrestore(instance->host_lock, flags);
return IRQ_HANDLED;
}
static int gvp11_xfer_mask = 0;
......@@ -177,8 +168,6 @@ static void dma_stop (struct Scsi_Host *instance, Scsi_Cmnd *SCpnt,
}
}
static int num_gvp11 = 0;
#define CHECK_WD33C93
int __init gvp11_detect(Scsi_Host_Template *tpnt)
......@@ -190,6 +179,7 @@ int __init gvp11_detect(Scsi_Host_Template *tpnt)
struct zorro_dev *z = NULL;
unsigned int default_dma_xfer_mask;
wd33c93_regs regs;
int num_gvp11 = 0;
#ifdef CHECK_WD33C93
volatile unsigned char *sasr_3393, *scmd_3393;
unsigned char save_sasr;
......@@ -339,13 +329,10 @@ int __init gvp11_detect(Scsi_Host_Template *tpnt)
(epc & GVP_SCSICLKMASK) ? WD33C93_FS_8_10
: WD33C93_FS_12_15);
if (num_gvp11++ == 0) {
first_instance = instance;
gvp11_template = instance->hostt;
request_irq(IRQ_AMIGA_PORTS, gvp11_intr, SA_SHIRQ,
"GVP11 SCSI", gvp11_intr);
}
request_irq(IRQ_AMIGA_PORTS, gvp11_intr, SA_SHIRQ, "GVP11 SCSI",
instance);
DMA(instance)->CNTR = GVP11_DMAC_INT_ENABLE;
num_gvp11++;
continue;
release:
......@@ -391,8 +378,7 @@ int gvp11_release(struct Scsi_Host *instance)
#ifdef MODULE
DMA(instance)->CNTR = 0;
release_mem_region(ZTWO_PADDR(instance->base), 256);
if (--num_gvp11 == 0)
free_irq(IRQ_AMIGA_PORTS, gvp11_intr);
free_irq(IRQ_AMIGA_PORTS, instance);
wd33c93_release();
#endif
return 1;
......
......@@ -586,7 +586,7 @@ mega_find_card(Scsi_Host_Template *host_template, u16 pci_vendor,
/* 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, 0xffffffffffffffff);
pci_set_dma_mask(pdev, 0xffffffffffffffffULL);
adapter->has_64bit_addr = 1;
}
else {
......
......@@ -718,8 +718,8 @@ int isp2x00_detect(Scsi_Host_Template * tmpt)
continue;
/* Try to configure DMA attributes. */
if (pci_set_dma_mask(pdev, (u64) 0xffffffffffffffff) &&
pci_set_dma_mask(pdev, (u64) 0xffffffff))
if (pci_set_dma_mask(pdev, 0xffffffffffffffffULL) &&
pci_set_dma_mask(pdev, 0xffffffffULL))
continue;
host = scsi_register(tmpt, sizeof(struct isp2x00_hostdata));
......
......@@ -308,7 +308,6 @@ int sun3scsi_detect(Scsi_Host_Template * tpnt)
return 1;
}
#ifdef MODULE
int sun3scsi_release (struct Scsi_Host *shpnt)
{
if (shpnt->irq != SCSI_IRQ_NONE)
......@@ -318,7 +317,6 @@ int sun3scsi_release (struct Scsi_Host *shpnt)
return 0;
}
#endif
#ifdef RESET_BOOT
/*
......
......@@ -52,11 +52,7 @@ static int sun3scsi_detect (Scsi_Host_Template *);
static const char *sun3scsi_info (struct Scsi_Host *);
static int sun3scsi_bus_reset(Scsi_Cmnd *);
static int sun3scsi_queue_command (Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
#ifdef MODULE
static int sun3scsi_release (struct Scsi_Host *);
#else
#define sun3scsi_release NULL
#endif
#ifndef CMD_PER_LUN
#define CMD_PER_LUN 2
......
......@@ -140,7 +140,7 @@ static struct Scsi_Host *default_instance;
static int sun3scsi_detect(Scsi_Host_Template * tpnt)
{
unsigned long ioaddr, irq;
unsigned long ioaddr, irq = 0;
static int called = 0;
struct Scsi_Host *instance;
int i;
......@@ -277,17 +277,15 @@ static int sun3scsi_detect(Scsi_Host_Template * tpnt)
return 1;
}
#ifdef MODULE
int sun3scsi_release (struct Scsi_Host *shpnt)
{
if (shpnt->irq != SCSI_IRQ_NONE)
free_irq (shpnt->irq, NULL);
iounmap(sun3_scsi_regp);
iounmap((void *)sun3_scsi_regp);
return 0;
}
#endif
#ifdef RESET_BOOT
/*
......
......@@ -188,19 +188,19 @@ config FB_AMIGA_AGA
otherwise say N.
config FB_CYBER
tristate "Amiga CyberVision support"
depends on FB && ZORRO
tristate "Amiga CyberVision 64 support"
depends on FB && ZORRO && BROKEN
help
This enables support for the Cybervision 64 graphics card from
Phase5. Please note that its use is not all that intuitive (i.e. if
you have any questions, be sure to ask!). Say N unless you have a
Cybervision 64 or plan to get one before you next recompile the
kernel. Please note that this driver DOES NOT support the
Cybervision 64 3D card, as they use incompatible video chips.
Cybervision 64/3D card, as they use incompatible video chips.
config FB_VIRGE
bool "Amiga CyberVision3D support "
depends on FB && ZORRO
bool "Amiga CyberVision 64/3D support "
depends on FB && ZORRO && BROKEN
help
This enables support for the Cybervision 64/3D graphics card from
Phase5. Please note that its use is not all that intuitive (i.e. if
......@@ -210,8 +210,8 @@ config FB_VIRGE
Cybervision 64 card, as they use incompatible video chips.
config FB_RETINAZ3
tristate "Amiga RetinaZ3 support"
depends on FB && ZORRO
tristate "Amiga Retina Z3 support"
depends on FB && ZORRO && BROKEN
help
This enables support for the Retina Z3 graphics card. Say N unless
you have a Retina Z3 or plan to get one before you next recompile
......@@ -226,7 +226,7 @@ config FB_FM2
config FB_ATARI
bool "Atari native chipset support"
depends on FB && ATARI
depends on FB && ATARI && BROKEN
help
This is the frame buffer device driver for the builtin graphics
chipset found in Ataris.
......@@ -367,7 +367,7 @@ config BUS_I2C
config FB_SUN3
bool "Sun3 framebuffer support"
depends on FB && (SUN3 || SUN3X)
depends on FB && (SUN3 || SUN3X) && BROKEN
config FB_BW2
bool "BWtwo support"
......
......@@ -1254,6 +1254,8 @@ menu "Network File Systems"
config NFS_FS
tristate "NFS file system support"
depends on INET
select LOCKD
select SUNRPC
help
If you are connected to some other (usually local) Unix computer
(using SLIP, PLIP, PPP or Ethernet) and want to mount files residing
......@@ -1309,6 +1311,8 @@ config NFS_V4
config NFSD
tristate "NFS server support"
depends on INET
select LOCKD
select SUNRPC
help
If you want your Linux box to act as an NFS *server*, so that other
computers on your local network which support NFS can access certain
......@@ -1371,8 +1375,6 @@ config ROOT_NFS
config LOCKD
tristate
default m if NFS_FS!=y && NFSD!=y && (NFS_FS=m || NFSD=m)
default y if NFS_FS=y || NFSD=y
config LOCKD_V4
bool
......@@ -1385,8 +1387,6 @@ config EXPORTFS
config SUNRPC
tristate
default m if NFS_FS!=y && NFSD!=y && (NFS_FS=m || NFSD=m)
default y if NFS_FS=y || NFSD=y
config SUNRPC_GSS
tristate "Provide RPCSEC_GSS authentication (EXPERIMENTAL)"
......@@ -1565,6 +1565,7 @@ config AFS_FS
# for fs/nls/Config.in
tristate "Andrew File System support (AFS) (Experimental)"
depends on INET && EXPERIMENTAL
select RXRPC
help
If you say Y here, you will get an experimental Andrew File System
driver. It currently only supports unsecured read-only AFS access.
......@@ -1575,8 +1576,6 @@ config AFS_FS
config RXRPC
tristate
default m if AFS_FS=m
default y if AFS_FS=y
endmenu
......
......@@ -39,7 +39,7 @@ static int affs_grow_extcache(struct inode *inode, u32 lc_idx);
static struct buffer_head *affs_alloc_extblock(struct inode *inode, struct buffer_head *bh, u32 ext);
static inline struct buffer_head *affs_get_extblock(struct inode *inode, u32 ext);
static struct buffer_head *affs_get_extblock_slow(struct inode *inode, u32 ext);
static ssize_t affs_file_write(struct file *filp, const char *buf, size_t count, loff_t *ppos);
static ssize_t affs_file_write(struct file *filp, const char __user *buf, size_t count, loff_t *ppos);
static int affs_file_open(struct inode *inode, struct file *filp);
static int affs_file_release(struct inode *inode, struct file *filp);
......@@ -491,7 +491,8 @@ affs_getemptyblk_ino(struct inode *inode, int block)
}
static ssize_t
affs_file_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
affs_file_write(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
ssize_t retval;
......
......@@ -39,7 +39,7 @@ static struct inode *befs_alloc_inode(struct super_block *sb);
static void befs_destroy_inode(struct inode *inode);
static int befs_init_inodecache(void);
static void befs_destroy_inodecache(void);
static int befs_readlink(struct dentry *, char *, int);
static int befs_readlink(struct dentry *, char __user *, int);
static int befs_follow_link(struct dentry *, struct nameidata *nd);
static int befs_utf2nls(struct super_block *sb, const char *in, int in_len,
char **out, int *out_len);
......@@ -494,7 +494,7 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
}
static int
befs_readlink(struct dentry *dentry, char *buffer, int buflen)
befs_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{
struct super_block *sb = dentry->d_sb;
befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
......
......@@ -47,7 +47,7 @@ static int ext3_release_file (struct inode * inode, struct file * filp)
* the caller didn't specify O_LARGEFILE. On 64bit systems we force
* on this flag in sys_open.
*/
static int ext3_open_file (struct inode * inode, struct file * filp)
static int ext3_open_file (struct inode *inode, struct file *filp)
{
if (!(filp->f_flags & O_LARGEFILE) &&
inode->i_size > 0x7FFFFFFFLL)
......@@ -56,7 +56,7 @@ static int ext3_open_file (struct inode * inode, struct file * filp)
}
static ssize_t
ext3_file_write(struct kiocb *iocb, const char *buf, size_t count, loff_t pos)
ext3_file_write(struct kiocb *iocb, const char __user *buf, size_t count, loff_t pos)
{
struct file *file = iocb->ki_filp;
struct inode *inode = file->f_dentry->d_inode;
......@@ -117,8 +117,8 @@ struct file_operations ext3_file_operations = {
.llseek = generic_file_llseek,
.read = do_sync_read,
.write = do_sync_write,
.aio_read = generic_file_aio_read,
.aio_write = ext3_file_write,
.aio_read = generic_file_aio_read,
.aio_write = ext3_file_write,
.readv = generic_file_readv,
.writev = generic_file_writev,
.ioctl = ext3_ioctl,
......
......@@ -22,7 +22,8 @@
#include <linux/ext3_fs.h>
#include "xattr.h"
static int ext3_readlink(struct dentry *dentry, char *buffer, int buflen)
static int
ext3_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{
struct ext3_inode_info *ei = EXT3_I(dentry->d_inode);
return vfs_readlink(dentry, buffer, buflen, (char*)ei->i_data);
......
......@@ -663,7 +663,7 @@ int fat_dir_ioctl(struct inode * inode, struct file * filp,
return -EINVAL;
}
d1 = (struct dirent *)arg;
d1 = (struct dirent __user *)arg;
if (!access_ok(VERIFY_WRITE, d1, sizeof(struct dirent[2])))
return -EFAULT;
/*
......
......@@ -39,7 +39,7 @@
#include "vxfs_inode.h"
static int vxfs_immed_readlink(struct dentry *, char *, int);
static int vxfs_immed_readlink(struct dentry *, char __user *, int);
static int vxfs_immed_follow_link(struct dentry *, struct nameidata *);
static int vxfs_immed_readpage(struct file *, struct page *);
......@@ -77,7 +77,7 @@ struct address_space_operations vxfs_immed_aops = {
* Number of bytes successfully copied to userspace.
*/
static int
vxfs_immed_readlink(struct dentry *dp, char *bp, int buflen)
vxfs_immed_readlink(struct dentry *dp, char __user *bp, int buflen)
{
struct vxfs_inode_info *vip = VXFS_INO(dp->d_inode);
......
......@@ -25,10 +25,10 @@
/*================ Forward declarations ================*/
static hfs_rwret_t hfs_file_read(struct file *, char *, hfs_rwarg_t,
static hfs_rwret_t hfs_file_read(struct file *, char __user *, hfs_rwarg_t,
loff_t *);
static hfs_rwret_t hfs_file_write(struct file *, const char *, hfs_rwarg_t,
loff_t *);
static hfs_rwret_t hfs_file_write(struct file *, const char __user *,
hfs_rwarg_t, loff_t *);
static void hfs_file_truncate(struct inode *);
/*================ Global variables ================*/
......@@ -139,7 +139,7 @@ int hfs_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_r
* user-space at the address 'buf'. Returns the number of bytes
* successfully transferred. This function checks the arguments, does
* some setup and then calls hfs_do_read() to do the actual transfer. */
static hfs_rwret_t hfs_file_read(struct file * filp, char * buf,
static hfs_rwret_t hfs_file_read(struct file *filp, char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......@@ -181,7 +181,7 @@ static hfs_rwret_t hfs_file_read(struct file * filp, char * buf,
* 'file->f_pos' from user-space at the address 'buf'. The return
* value is the number of bytes actually transferred.
*/
static hfs_rwret_t hfs_file_write(struct file * filp, const char * buf,
static hfs_rwret_t hfs_file_write(struct file *filp, const char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......@@ -242,7 +242,7 @@ static void hfs_file_truncate(struct inode * inode)
*
* Like copy_to_user() while translating CR->NL.
*/
static inline void xlate_to_user(char *buf, const char *data, int count)
static inline void xlate_to_user(char __user *buf, const char *data, int count)
{
char ch;
......@@ -257,7 +257,8 @@ static inline void xlate_to_user(char *buf, const char *data, int count)
*
* Like copy_from_user() while translating NL->CR;
*/
static inline int xlate_from_user(char *data, const char *buf, int count)
static inline
int xlate_from_user(char *data, const char __user *buf, int count)
{
int i;
......@@ -290,8 +291,8 @@ static inline int xlate_from_user(char *data, const char *buf, int count)
* This is based on Linus's minix_file_read().
* It has been changed to take into account that HFS files have no holes.
*/
hfs_s32 hfs_do_read(struct inode *inode, struct hfs_fork * fork, hfs_u32 pos,
char * buf, hfs_u32 count)
hfs_s32 hfs_do_read(struct inode *inode, struct hfs_fork *fork, hfs_u32 pos,
char __user *buf, hfs_u32 count)
{
hfs_s32 size, chars, offset, block, blocks, read = 0;
int bhrequest, uptodate;
......@@ -436,8 +437,8 @@ hfs_s32 hfs_do_read(struct inode *inode, struct hfs_fork * fork, hfs_u32 pos,
*
* This is just a minor edit of Linus's minix_file_write().
*/
hfs_s32 hfs_do_write(struct inode *inode, struct hfs_fork * fork, hfs_u32 pos,
const char * buf, hfs_u32 count)
hfs_s32 hfs_do_write(struct inode *inode, struct hfs_fork *fork, hfs_u32 pos,
const char __user *buf, hfs_u32 count)
{
hfs_s32 written, c;
struct buffer_head * bh;
......
......@@ -29,9 +29,9 @@
/*================ Forward declarations ================*/
static loff_t cap_info_llseek(struct file *, loff_t,
int);
static hfs_rwret_t cap_info_read(struct file *, char *,
static hfs_rwret_t cap_info_read(struct file *, char __user *,
hfs_rwarg_t, loff_t *);
static hfs_rwret_t cap_info_write(struct file *, const char *,
static hfs_rwret_t cap_info_write(struct file *, const char __user *,
hfs_rwarg_t, loff_t *);
/*================ Function-like macros ================*/
......@@ -121,7 +121,7 @@ static loff_t cap_info_llseek(struct file *file, loff_t offset, int origin)
* 'file->f_pos' to user-space at the address 'buf'. The return value
* is the number of bytes actually transferred.
*/
static hfs_rwret_t cap_info_read(struct file *filp, char *buf,
static hfs_rwret_t cap_info_read(struct file *filp, char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......@@ -189,7 +189,7 @@ static hfs_rwret_t cap_info_read(struct file *filp, char *buf,
* '*ppos' from user-space at the address 'buf'.
* The return value is the number of bytes actually transferred.
*/
static hfs_rwret_t cap_info_write(struct file *filp, const char *buf,
static hfs_rwret_t cap_info_write(struct file *filp, const char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......
......@@ -41,8 +41,9 @@
/*================ Forward declarations ================*/
static loff_t hdr_llseek(struct file *, loff_t, int);
static hfs_rwret_t hdr_read(struct file *, char *, hfs_rwarg_t, loff_t *);
static hfs_rwret_t hdr_write(struct file *, const char *,
static hfs_rwret_t hdr_read(struct file *, char __user *,
hfs_rwarg_t, loff_t *);
static hfs_rwret_t hdr_write(struct file *, const char __user *,
hfs_rwarg_t, loff_t *);
/*================ Global variables ================*/
......@@ -382,7 +383,7 @@ loff_t hdr_llseek(struct file *file, loff_t offset, int origin)
* successfully transferred.
*/
/* XXX: what about the entry count changing on us? */
static hfs_rwret_t hdr_read(struct file * filp, char * buf,
static hfs_rwret_t hdr_read(struct file *filp, char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......@@ -633,7 +634,7 @@ static hfs_rwret_t hdr_read(struct file * filp, char * buf,
* '*ppos' from user-space at the address 'buf'.
* The return value is the number of bytes actually transferred.
*/
static hfs_rwret_t hdr_write(struct file *filp, const char *buf,
static hfs_rwret_t hdr_write(struct file *filp, const char __user *buf,
hfs_rwarg_t count, loff_t *ppos)
{
struct inode *inode = filp->f_dentry->d_inode;
......
......@@ -124,7 +124,8 @@ struct address_space_operations hpfs_aops = {
.bmap = _hpfs_bmap
};
ssize_t hpfs_file_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
ssize_t hpfs_file_write(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
ssize_t retval;
......
......@@ -249,7 +249,7 @@ int hpfs_file_fsync(struct file *, struct dentry *, int);
secno hpfs_bmap(struct inode *, unsigned);
void hpfs_truncate(struct inode *);
int hpfs_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create);
ssize_t hpfs_file_write(struct file *file, const char *buf, size_t count, loff_t *ppos);
ssize_t hpfs_file_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos);
/* inode.c */
......
......@@ -1800,7 +1800,7 @@ int read_jbd_debug(char *page, char **start, off_t off,
return ret;
}
int write_jbd_debug(struct file *file, const char *buffer,
int write_jbd_debug(struct file *file, const char __user *buffer,
unsigned long count, void *data)
{
char buf[32];
......
......@@ -81,7 +81,7 @@ static int loglevel_read(char *page, char **start, off_t off,
return len;
}
static int loglevel_write(struct file *file, const char *buffer,
static int loglevel_write(struct file *file, const char __user *buffer,
unsigned long count, void *data)
{
char c;
......
......@@ -26,7 +26,7 @@ static int jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
return vfs_follow_link(nd, s);
}
static int jfs_readlink(struct dentry *dentry, char *buffer, int buflen)
static int jfs_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{
char *s = JFS_IP(dentry->d_inode)->i_inline;
return vfs_readlink(dentry, buffer, buflen, s);
......
......@@ -164,9 +164,10 @@ extern __inline__ int test_bit(int nr, const volatile unsigned long * vaddr)
return ((1UL << (nr & 31)) & (((const volatile unsigned long *) vaddr)[nr >> 5])) != 0;
}
extern __inline__ int find_first_zero_bit(unsigned long * vaddr, unsigned size)
extern __inline__ int find_first_zero_bit(const unsigned long *vaddr,
unsigned size)
{
unsigned long *p = vaddr, *addr = vaddr;
const unsigned long *p = vaddr, *addr = vaddr;
unsigned long allones = ~0UL;
int res;
unsigned long num;
......@@ -187,11 +188,11 @@ extern __inline__ int find_first_zero_bit(unsigned long * vaddr, unsigned size)
return ((p - addr) << 5) + (res ^ 31);
}
extern __inline__ int find_next_zero_bit (unsigned long *vaddr, int size,
extern __inline__ int find_next_zero_bit (const unsigned long *vaddr, int size,
int offset)
{
unsigned long *addr = vaddr;
unsigned long *p = addr + (offset >> 5);
const unsigned long *addr = vaddr;
const unsigned long *p = addr + (offset >> 5);
int set = 0, bit = offset & 31UL, res;
if (offset >= size)
......@@ -263,7 +264,7 @@ static inline int fls(int x)
* unlikely to be set. It's guaranteed that at least one of the 140
* bits is cleared.
*/
static inline int sched_find_first_bit(unsigned long *b)
static inline int sched_find_first_bit(const unsigned long *b)
{
if (unlikely(b[0]))
return __ffs(b[0]);
......
......@@ -7,6 +7,8 @@
* Written by Wout Klaren.
*/
#include <asm/scatterlist.h>
struct pci_ops;
/*
......
......@@ -42,4 +42,4 @@ extern inline void *z_remap_fullcache(unsigned long physaddr,
#define z_iounmap iounmap
#define z_ioremap z_remap_nocache_ser
#endif /* _ASM_ZORRO_H */
#endif /* _ASM_M68K_ZORRO_H */
......@@ -27,4 +27,4 @@ extern void *__ioremap(unsigned long address, unsigned long size,
#define z_ioremap ioremap
#define z_iounmap iounmap
#endif /* _ASM_ZORRO_H */
#endif /* _ASM_PPC_ZORRO_H */
......@@ -267,9 +267,9 @@ extern void hfs_nat_drop_dentry(struct dentry *, const ino_t);
/* file.c */
extern hfs_s32 hfs_do_read(struct inode *, struct hfs_fork *, hfs_u32,
char *, hfs_u32);
char __user *, hfs_u32);
extern hfs_s32 hfs_do_write(struct inode *, struct hfs_fork *, hfs_u32,
const char *, hfs_u32);
const char __user *, hfs_u32);
extern void hfs_file_fix_mode(struct hfs_cat_entry *entry);
extern struct inode_operations hfs_file_inode_operations;
extern struct file_operations hfs_file_operations;
......
......@@ -146,7 +146,7 @@ static void __init free_bootmem_core(bootmem_data_t *bdata, unsigned long addr,
* We 'merge' subsequent allocations to save space. We might 'lose'
* some fraction of a page if allocations cannot be satisfied due to
* size constraints on boxes where there is physical RAM space
* fragmentation - in these cases * (mostly large memory boxes) this
* fragmentation - in these cases (mostly large memory boxes) this
* is not a problem.
*
* On low memory boxes we get it right in 100% of the cases.
......
......@@ -177,8 +177,11 @@ static int alloc_buffer(struct btaudio *bta)
bta->risc_size = PAGE_SIZE;
bta->risc_cpu = pci_alloc_consistent
(bta->pci, bta->risc_size, &bta->risc_dma);
if (NULL == bta->risc_cpu)
if (NULL == bta->risc_cpu) {
pci_free_consistent(bta->pci, bta->buf_size, bta->buf_cpu, bta->dma);
bta->buf_cpu = NULL;
return -ENOMEM;
}
}
return 0;
}
......
# drivers/sound/dmasound/Config.in
config DMASOUND_ATARI
tristate "Atari DMA sound support"
depends on ATARI && SOUND
select DMASOUND
help
If you want to use the internal audio of your Atari in Linux, answer
Y to this question. This will provide a Sun-like /dev/audio,
......@@ -15,6 +15,7 @@ config DMASOUND_ATARI
config DMASOUND_PMAC
tristate "PowerMac DMA sound support"
depends on PPC_PMAC && SOUND && I2C
select DMASOUND
help
If you want to use the internal audio of your PowerMac in Linux,
answer Y to this question. This will provide a Sun-like /dev/audio,
......@@ -28,6 +29,7 @@ config DMASOUND_PMAC
config DMASOUND_PAULA
tristate "Amiga DMA sound support"
depends on (AMIGA || APUS) && SOUND
select DMASOUND
help
If you want to use the internal audio of your Amiga in Linux, answer
Y to this question. This will provide a Sun-like /dev/audio,
......@@ -41,6 +43,7 @@ config DMASOUND_PAULA
config DMASOUND_Q40
tristate "Q40 sound support"
depends on Q40 && SOUND
select DMASOUND
help
If you want to use the internal audio of your Q40 in Linux, answer
Y to this question. This will provide a Sun-like /dev/audio,
......@@ -53,13 +56,3 @@ config DMASOUND_Q40
config DMASOUND
tristate
depends on SOUND!=n
default m if DMASOUND_ATARI!=y && DMASOUND_AWACS!=y && DMASOUND_PAULA!=y && DMASOUND_Q40!=y && (DMASOUND_ATARI=m || DMASOUND_AWACS=m || DMASOUND_PAULA=m || DMASOUND_Q40=m)
default y if DMASOUND_ATARI=y || DMASOUND_AWACS=y || DMASOUND_PAULA=y || DMASOUND_Q40=y
help
Support built-in audio chips accessible by DMA on various machines
that have them. Note that this symbol does not affect the kernel
directly; rather, it controls whether configuration questions
enabling DMA sound drivers for various specific machine
architectures will be used.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment