Commit 2be208bc authored by Linus Torvalds's avatar Linus Torvalds

v2.4.8.1 -> v2.4.8.2

  - me: fix forgotten nfsd usage of filldir off_t -> loff_t change
  - Alan Cox: more driver merges
parent a67f1b5d
......@@ -948,6 +948,15 @@ S: 1150 Ringwood Court
S: San Jose, California 95131
S: USA
N: Fernando Fuganti
E: fuganti@conectiva.com.br
E: fuganti@netbank.com.br
D: random kernel hacker, ZF MachZ Watchdog driver
S: Conectiva S.A.
S: R. Tocantins, 89 - Cristo Rei
S: 80050-430 - Curitiba - Paran
S: Brazil
N: Nigel Gamble
E: nigel@nrg.org
E: nigel@sgi.com
......
This diff is collapsed.
The current state of Linux/PA-RISC mm is BROKEN.
Someone needs to sit down and thoroughly rewrite all the cache flushing
macro definitions. Here are some of the problems, followed by what I
think needs to be done about them.
(1) We're using fdce / fice everywhere. This has to stop (except in
the routines which flush the entire cache). The right instructions to
be using are fdc/fic.
(2) fdc/fic will throw exceptions if the address they reference isn't
mapped. Therefore we need to check the page is mapped before flushing
(we're guaranteed not to have the page dirty if we don't have a software
mapping for it any longer, right?)
(3) the flush macros are right now tunnelled down to one routine to flush
the data cache and one routine to flush the insn cache. this is wrong.
we should take hints from how we're called and optimise our routines
accordingly.
(4) fdc/fic actually take space register arguments. fic takes an 3-bit sr
argument and fdc takes a 2-bit sr argument. right now, there's a lot of
pissing about with %sr1 and all the macros use %sr1. This is crazy. We
normally _know_ what's being referred to, and it's the current task. So
if we want to flush that, just use %sr3. If it happens to be kernel,
use %sr0 for fdc and %sr4 for fic.
(5) we need to write flush_kernel_dcache_range and use it on kernel
addresses. all the macros are defined to work on the _current task's_
virtual address space.
This file contains some additional information for the Philips webcams.
E-mail: webcam@smcc.demon.nl Last updated: 2001-04-25
E-mail: webcam@smcc.demon.nl Last updated: 2001-07-27
The main webpage for the Philips driver is http://www.smcc.demon.nl/webcam/.
It contains a lot of extra information, a FAQ, and the binary plugin
......@@ -29,10 +29,9 @@ fps
palette
Specifies the desired colour order that should be delivered by read() and
mmap(). The string can be one of bgr24, rgb24, rgb32, bgr32, yuyv,
yuv420, yuv420p. If the tool you use produces odd colours (more
specificly, red and blue are swapped), try palette=bgr24 or
palette=rgb24.
mmap(). The string can be one of yuv420 or yuv420p; however, yuv420 will
be phased out, leaving only yuv420p, so this option will disappear
entirely.
Only the native yuv420/yuv420p format is supported by the in kernel driver.
If you want to use other formats with in-kernel conversion download the
......@@ -73,7 +72,7 @@ power_save
compression (only useful with the plugin)
With this option you can control the compression factor that the camera
use to squeeze the image through the USB bus. You can set the
uses to squeeze the image through the USB bus. You can set the
parameter between 0 and 3:
0 = prefer uncompressed images; if the requested mode is not available
in an uncompressed format, the driver will silently switch to low
......@@ -83,7 +82,7 @@ compression (only useful with the plugin)
3 = high compression.
High compression takes less bandwidth of course, but it could also
introduce some unwanted artefacts. The default is 2, medium compression.
introduce some unwanted artefacts. The default is 2, medium compression.
See the FAQ on the website for an overview of which modes require
compression.
......@@ -91,7 +90,6 @@ compression (only useful with the plugin)
The 645 and 646 have fixed compression parameters.
trace
In order to better detect problems, it is now possible to turn on a
'trace' of some of the calls the module makes; it logs all items in your
kernel log at debug level.
......
......@@ -227,6 +227,12 @@ M: axboe@suse.de
L: linux-kernel@vger.kernel.org
S: Maintained
BLUETOOTH SUBSYSTEM (BlueZ)
P: Maxim Krasnyansky
M: maxk@qualcomm.com
W: http://bluez.sf.net
S: Maintained
BTTV VIDEO4LINUX DRIVER
P: Gerd Knorr
M: kraxel@goldbach.in-berlin.de
......@@ -500,6 +506,13 @@ M: Remy.Card@linux.org
L: linux-kernel@vger.kernel.org
S: Maintained
FARSYNC SYNCHRONOUS DRIVER
P: Bob Dunlop
M: rjd@xyzzy.clara.co.uk
M: bob.dunlop@farsite.co.uk
W: http://www.farsite.co.uk/
S: Supported
FILE LOCKING (flock() and fcntl()/lockf())
P: Matthew Wilcox
M: matthew@wil.cx
......@@ -637,7 +650,7 @@ S: Supported
IDE DRIVER [GENERAL]
P: Andre Hedrick
M: andre@linux-ide.org
M: ahedrick@atipa.com
M: andre@aslab.com
M: andre@suse.com
L: linux-kernel@vger.kernel.org
W: http://www.kernel.org/pub/linux/kernel/people/hedrick/
......@@ -693,6 +706,12 @@ M: andreas.bombe@munich.netsurf.de
L: linux1394-devel@lists.sourceforge.net
S: Maintained
IMS TWINTURBO FRAMEBUFFER DRIVER
P: Paul Mundt
M: lethal@chaoticdreams.org
L: linux-fbdev-devel@lists.sourceforge.net
S: Maintained
INTEL APIC/IOAPIC, LOWLEVEL X86 SMP SUPPORT
P: Ingo Molnar
M: mingo@redhat.com
......@@ -1601,6 +1620,13 @@ W: http://www.qsl.net/dl1bke/
L: linux-hams@vger.kernel.org
S: Maintained
ZF MACHZ WATCHDOG
P: Fernando Fuganti
M: fuganti@conectiva.com.br
M: fuganti@netbank.com.br
W: http://cvs.conectiva.com.br/drivers/ZFL-watchdog/
S: Maintained
ZR36120 VIDEO FOR LINUX DRIVER
P: Pauline Middelink
M: middelin@polyware.nl
......@@ -1608,12 +1634,6 @@ W: http://www.polyware.nl/~middelin/En/hobbies.html
W: http://www.polyware.nl/~middelin/hobbies.html
S: Maintained
Bluetooth Subsystem (BlueZ)
P: Maxim Krasnyansky
M: maxk@qualcomm.com
W: http://bluez.sf.net
S: Maintained
THE REST
P: Linus Torvalds
S: Buried alive in reporters
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 9
EXTRAVERSION =-pre1
EXTRAVERSION =-pre2
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
......@@ -483,8 +483,8 @@ if [ "$CONFIG_VT" = "y" ]; then
"$CONFIG_ARCH_INTEGRATOR" = "y" -o \
"$CONFIG_ARCH_TBOX" = "y" -o \
"$CONFIG_ARCH_CLPS7500" = "y" -o \
"$CONFIG_ARCH_P720T" = "y" -o \
"$CONFIG_ARCH_ANAKIN" = "y" ]; then
"$CONFIG_ARCH_P720T" = "y" -o \
"$CONFIG_ARCH_ANAKIN" = "y" ]; then
define_bool CONFIG_PC_KEYMAP y
fi
if [ "$CONFIG_ARCH_ACORN" != "y" -a "$CONFIG_ARCH_EBSA110" != "y" ]; then
......
This diff is collapsed.
......@@ -248,12 +248,12 @@ __create_page_tables:
/*
* Ensure that the first section of RAM is present.
* we assume that:
* 1. the RAM is aligned to a 128MB boundary
* 2. the kernel is executing in the same 128MB chunk
* 1. the RAM is aligned to a 32MB boundary
* 2. the kernel is executing in the same 32MB chunk
* as the start of RAM.
*/
bic r0, r0, #0x07f00000 >> 18 @ round down
and r2, r5, #0xf8000000 @ round down
bic r0, r0, #0x01f00000 >> 18 @ round down
and r2, r5, #0xfe000000 @ round down
add r3, r8, r2 @ flags + rambase
str r3, [r0]
......
......@@ -124,7 +124,7 @@ void machine_power_off(void)
pm_power_off();
}
void machine_restart(char * __unused)
void machine_restart(void * __unused)
{
/*
* Clean and disable cache, and turn off interrupts
......
......@@ -28,7 +28,7 @@ extern void genarch_init_irq(void);
static void __init
fixup_anakin(struct machine_desc *desc, struct param_struct *unused,
char **cmdline, struct meminfo *mi)
char **cmdline, struct meminfo *mi)
{
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
setup_ramdisk(1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);
......
......@@ -39,7 +39,7 @@ EXPORT_SYMBOL(SCR_value);
static int __init assabet_init(void)
{
if (machine_has_neponset()) {
if (machine_is_assabet() && machine_has_neponset()) {
/*
* Angel sets this, but other bootloaders may not.
*
......@@ -167,6 +167,8 @@ static struct map_desc assabet_io_desc[] __initdata = {
{ 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
{ 0xf1000000, 0x12000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Board Control Register */
{ 0xf2800000, 0x4b800000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* MQ200 */
/* f3000000 - neponset system registers */
/* f4000000 - neponset SA1111 registers */
LAST_DESC
};
......
......@@ -51,9 +51,9 @@ static void bitsy_uart_set_mctrl(struct uart_port *port, u_int mctrl)
{
if (port->mapbase == _Ser3UTCR0) {
if (mctrl & TIOCM_RTS)
GPSR = GPIO_BITSY_COM_RTS;
else
GPCR = GPIO_BITSY_COM_RTS;
else
GPSR = GPIO_BITSY_COM_RTS;
}
}
......@@ -63,9 +63,9 @@ static int bitsy_uart_get_mctrl(struct uart_port *port)
if (port->mapbase == _Ser3UTCR0) {
int gplr = GPLR;
if (!(gplr & GPIO_BITSY_COM_DCD))
if (gplr & GPIO_BITSY_COM_DCD)
ret &= ~TIOCM_CD;
if (!(gplr & GPIO_BITSY_COM_CTS))
if (gplr & GPIO_BITSY_COM_CTS)
ret &= ~TIOCM_CTS;
}
......@@ -150,7 +150,7 @@ static struct sa1100_port_fns bitsy_port_fns __initdata = {
static struct map_desc bitsy_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
{ 0xf0000000, 0x49000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* EGPIO 0 */
{ 0xf0000000, 0x49000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* EGPIO 0 */
{ 0xf1000000, 0x10000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 2 */
{ 0xf3000000, 0x40000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 4 */
LAST_DESC
......
......@@ -3,7 +3,7 @@
*
* Copyright (C) 2001 Russell King
*
* $Id: cpu-sa1110.c,v 1.2 2001/07/24 20:25:25 rmk Exp $
* $Id: cpu-sa1110.c,v 1.3 2001/08/12 15:41:53 rmk Exp $
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
......@@ -48,7 +48,7 @@ struct sdram_params {
u_short refresh; /* refresh time for array (us) */
};
static struct sdram_params tc59sm716_cl2_params = {
static struct sdram_params tc59sm716_cl2_params __initdata = {
rows: 12,
tck: 10,
trcd: 20,
......@@ -58,7 +58,7 @@ static struct sdram_params tc59sm716_cl2_params = {
cas_latency: 2,
};
static struct sdram_params tc59sm716_cl3_params = {
static struct sdram_params tc59sm716_cl3_params __initdata = {
rows: 12,
tck: 8,
trcd: 20,
......@@ -68,6 +68,8 @@ static struct sdram_params tc59sm716_cl3_params = {
cas_latency: 3,
};
static struct sdram_params sdram_params;
/*
* Given a period in ns and frequency in khz, calculate the number of
* cycles of frequency in period. Note that we round up to the next
......@@ -205,7 +207,14 @@ static int
sdram_notifier(struct notifier_block *nb, unsigned long val, void *data)
{
struct cpufreq_info *ci = data;
struct sdram_params *sdram = &tc59sm716_cl3_params;
struct sdram_params *sdram = &sdram_params;
/* were we initialised? */
if (sdram->cas_latency == 0) {
struct cpufreq_minmax *m = data;
m->min_freq = m->max_freq = m->cur_freq;
return 0;
}
switch (val) {
case CPUFREQ_MINMAX:
......@@ -247,11 +256,24 @@ static struct notifier_block sa1110_clkchg_block = {
static int __init sa1110_sdram_init(void)
{
struct sdram_params *sdram = &tc59sm716_cl3_params;
struct sdram_params *sdram = NULL;
unsigned int cur_freq = cpufreq_get(smp_processor_id());
int ret = -ENODEV;
if (machine_is_assabet())
sdram = &tc59sm716_cl3_params;
sdram_update_timing(cur_freq, sdram);
sdram_update_refresh(cur_freq, sdram);
if (sdram) {
printk(KERN_DEBUG "SDRAM: tck: %d trcd: %d trp: %d"
" twr: %d refresh: %d cas_latency: %d",
sdram->tck, sdram->trcd, sdram->trp,
sdram->twr, sdram->refresh, sdram->cas_latency);
memcpy(&sdram_params, sdram, sizeof(sdram_params));
sdram_update_timing(cur_freq, &sdram_params);
sdram_update_refresh(cur_freq, &sdram_params);
}
return cpufreq_register_notifier(&sa1110_clkchg_block);
}
......
......@@ -115,7 +115,7 @@ static void process_dma(sa1100_dma_t * dma)
for (;;) {
buf = dma->tail;
if (!buf) {
if (!buf || dma->stopped) {
/* no more data available */
DPRINTK("process: no more buf (dma %s)\n",
dma->curr ? "active" : "inactive");
......@@ -388,11 +388,16 @@ int sa1100_dma_get_current(dmach_t channel, void **buf_id, dma_addr_t *addr)
*addr = buf->dma_ptr;
DPRINTK("curr_pos: b=%#x a=%#x\n", (int)dma->curr->id, *addr);
ret = 0;
} else if (dma->tail && dma->stopped) {
dma_buf_t *buf = dma->tail;
if (buf_id)
*buf_id = buf->id;
*addr = buf->dma_ptr;
ret = 0;
} else {
if (buf_id)
*buf_id = NULL;
*addr = 0;
DPRINTK("curr_pos: spinning\n");
ret = -ENXIO;
}
local_irq_restore(flags);
......@@ -403,11 +408,36 @@ int sa1100_dma_get_current(dmach_t channel, void **buf_id, dma_addr_t *addr)
int sa1100_dma_stop(dmach_t channel)
{
sa1100_dma_t *dma = &dma_chan[channel];
int flags;
if (channel_is_sa1111_sac(channel))
return sa1111_dma_stop(channel);
if (dma->stopped)
return 0;
local_irq_save(flags);
dma->stopped = 1;
/*
* Stop DMA and tweak state variables so everything could restart
* from there when resume/wakeup occurs.
*/
dma->regs->ClrDCSR = DCSR_RUN | DCSR_IE;
if (dma->curr) {
dma_buf_t *buf = dma->curr;
if (dma->spin_ref <= 0) {
dma_addr_t curpos;
sa1100_dma_get_current(channel, NULL, &curpos);
buf->size += buf->dma_ptr - curpos;
buf->dma_ptr = curpos;
}
buf->ref = 0;
dma->tail = buf;
dma->curr = NULL;
}
dma->spin_ref = 0;
dma->regs->ClrDCSR = DCSR_STRTA|DCSR_STRTB;
process_dma(dma);
local_irq_restore(flags);
return 0;
}
......@@ -422,7 +452,15 @@ int sa1100_dma_resume(dmach_t channel)
if (channel_is_sa1111_sac(channel))
return sa1111_dma_resume(channel);
dma->regs->SetDCSR = DCSR_RUN | DCSR_IE;
if (dma->stopped) {
int flags;
save_flags_cli(flags);
dma->regs->ClrDCSR = DCSR_STRTA|DCSR_STRTB|DCSR_RUN|DCSR_IE;
dma->stopped = 0;
dma->spin_ref = 0;
process_dma(dma);
restore_flags(flags);
}
return 0;
}
......@@ -445,9 +483,9 @@ int sa1100_dma_flush_all(dmach_t channel)
if (!buf)
buf = dma->tail;
dma->head = dma->tail = dma->curr = NULL;
dma->stopped = 0;
dma->spin_ref = 0;
if (dma->spin_size)
process_dma(dma);
process_dma(dma);
local_irq_restore(flags);
while (buf) {
next_buf = buf->next;
......@@ -502,7 +540,8 @@ EXPORT_SYMBOL(sa1100_free_dma);
int sa1100_dma_sleep(dmach_t channel)
{
sa1100_dma_t *dma = &dma_chan[channel];
sa1100_dma_t *dma = &dma_chan[channel];
int orig_state;
if ((unsigned)channel >= MAX_SA1100_DMA_CHANNELS || !dma->in_use)
return -EINVAL;
......@@ -515,28 +554,17 @@ int sa1100_dma_sleep(dmach_t channel)
return 0;
}
/*
* Stop DMA and tweak state variables so everything could restart
* from there when wakeup occurs.
*/
dma->regs->ClrDCSR = DCSR_RUN | DCSR_IE;
if (dma->curr) {
dma_buf_t *buf = dma->curr;
dma_addr_t curpos;
sa1100_dma_get_current(channel, NULL, &curpos);
buf->size += buf->dma_ptr - curpos;
buf->dma_ptr = curpos;
buf->ref = 0;
dma->tail = buf;
dma->curr = NULL;
}
orig_state = dma->stopped;
sa1100_dma_stop(channel);
dma->regs->ClrDCSR = DCSR_RUN | DCSR_IE | DCSR_STRTA | DCSR_STRTB;
dma->stopped = orig_state;
dma->spin_ref = 0;
return 0;
}
int sa1100_dma_wakeup(dmach_t channel)
{
sa1100_dma_t *dma = &dma_chan[channel];
sa1100_dma_t *dma = &dma_chan[channel];
dma_regs_t *regs;
int flags;
......
......@@ -236,7 +236,6 @@ int sa1111_sac_request_dma(dmach_t *channel, const char *device_id,
dma->device_id = device_id;
dma->callback = NULL;
dma->spin_size = 0;
dma->ready = 1;
return 0;
}
......
......@@ -34,7 +34,7 @@ typedef struct {
dma_buf_t *head; /* where to insert buffers */
dma_buf_t *tail; /* where to remove buffers */
dma_buf_t *curr; /* buffer currently DMA'ed */
int ready; /* 1 if DMA can occur */
int stopped; /* 1 if DMA is stalled */
dma_regs_t *regs; /* points to appropriate DMA registers */
int irq; /* IRQ used by the channel */
dma_callback_t callback; /* ... to call when buffers are done */
......
......@@ -160,10 +160,10 @@ static struct map_desc standard_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xf6000000, 0x20000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 IO */
{ 0xf7000000, 0x30000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 IO */
{ 0xf8000000, 0x80000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCM */
{ 0xfa000000, 0x90000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCM */
{ 0xfc000000, 0xa0000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* MER */
{ 0xfe000000, 0xb0000000, 0x01f00000, DOMAIN_IO, 0, 1, 0, 0 }, /* LCD + DMA */
{ 0xf8000000, 0x80000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCM */
{ 0xfa000000, 0x90000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCM */
{ 0xfc000000, 0xa0000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* MER */
{ 0xfe000000, 0xb0000000, 0x00200000, DOMAIN_IO, 0, 1, 0, 0 }, /* LCD + DMA */
LAST_DESC
};
......
......@@ -16,31 +16,6 @@
#include "generic.h"
static void __init
fixup_lart(struct machine_desc *desc, struct param_struct *params,
char **cmdline, struct meminfo *mi)
{
/*
* Note that LART is a special case - it doesn't use physical
* address line A23 on the DRAM, so we effectively have 4 * 8MB
* in two SA1100 banks.
*/
SET_BANK( 0, 0xc0000000, 8*1024*1024 );
SET_BANK( 1, 0xc1000000, 8*1024*1024 );
SET_BANK( 2, 0xc8000000, 8*1024*1024 );
SET_BANK( 3, 0xc9000000, 8*1024*1024 );
SET_BANK( 4, 0xd0000000, 64*1024*1024 );
SET_BANK( 5, 0xd8000000, 64*1024*1024 );
/* make this 5 if you have the 64MB expansion card, or
* 6 if you have two 64MB expansion cards */
mi->nr_banks = 4;
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
setup_ramdisk(1, 0, 0, 8192);
setup_initrd(0xc0400000, 4*1024*1024);
}
static struct map_desc lart_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe8000000, 0x00000000, 0x00400000, DOMAIN_IO, 1, 1, 0, 0 }, /* main flash memory */
......@@ -55,6 +30,7 @@ static void __init lart_map_io(void)
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
sa1100_register_uart(2, 2);
GAFR |= (GPIO_UART_TXD | GPIO_UART_RXD);
GPDR |= GPIO_UART_TXD;
GPDR &= ~GPIO_UART_RXD;
......@@ -63,7 +39,7 @@ static void __init lart_map_io(void)
MACHINE_START(LART, "LART")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
FIXUP(fixup_lart)
BOOT_PARAMS(0xc0000100)
MAPIO(lart_map_io)
INITIRQ(sa1100_init_irq)
MACHINE_END
......@@ -27,85 +27,85 @@ static unsigned int hw_led_state;
void cerf_leds_event(led_event_t evt)
{
unsigned long flags;
unsigned long flags;
local_irq_save(flags);
switch (evt) {
case led_start:
hw_led_state = LED_MASK;
led_state = LED_STATE_ENABLED;
break;
case led_stop:
led_state &= ~LED_STATE_ENABLED;
break;
case led_claim:
led_state |= LED_STATE_CLAIMED;
hw_led_state = LED_MASK;
break;
case led_release:
led_state &= ~LED_STATE_CLAIMED;
hw_led_state = LED_MASK;
break;
switch (evt) {
case led_start:
hw_led_state = LED_MASK;
led_state = LED_STATE_ENABLED;
break;
case led_stop:
led_state &= ~LED_STATE_ENABLED;
break;
case led_claim:
led_state |= LED_STATE_CLAIMED;
hw_led_state = LED_MASK;
break;
case led_release:
led_state &= ~LED_STATE_CLAIMED;
hw_led_state = LED_MASK;
break;
#ifdef CONFIG_LEDS_TIMER
case led_timer:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state ^= LED_D0;
break;
case led_timer:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state ^= LED_D0;
break;
#endif
#ifdef CONFIG_LEDS_CPU
case led_idle_start:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D1;
break;
case led_idle_end:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D1;
break;
case led_idle_start:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D1;
break;
case led_idle_end:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D1;
break;
#endif
case led_green_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D2;
break;
case led_green_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D2;
break;
case led_amber_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D3;
break;
case led_amber_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D3;
break;
case led_red_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D1;
break;
case led_red_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D1;
break;
default:
break;
}
if (led_state & LED_STATE_ENABLED) {
GPSR = hw_led_state;
GPCR = hw_led_state ^ LED_MASK;
}
case led_green_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D2;
break;
case led_green_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D2;
break;
case led_amber_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D3;
break;
case led_amber_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D3;
break;
case led_red_on:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_D1;
break;
case led_red_off:
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state |= LED_D1;
break;
default:
break;
}
if (led_state & LED_STATE_ENABLED) {
GPSR = hw_led_state;
GPCR = hw_led_state ^ LED_MASK;
}
local_irq_restore(flags);
}
......@@ -66,7 +66,7 @@ void lart_leds_event(led_event_t evt)
#ifdef CONFIG_LEDS_CPU
case led_idle_start:
/* The LART people like the LED to be off when the
system is idle... */
system is idle... */
if (!(led_state & LED_STATE_CLAIMED))
hw_led_state &= ~LED_23;
break;
......
......@@ -31,7 +31,7 @@ void simpad_leds_event(led_event_t evt)
switch (evt)
{
case led_start:
hw_led_state = LED_GREEN;
hw_led_state = LED_GREEN;
led_state = LED_STATE_ENABLED;
break;
......
......@@ -74,6 +74,10 @@ static void __init neponset_init_irq(void)
static int __init neponset_init(void)
{
/* only on assabet */
if (!machine_is_assabet())
return 0;
if (machine_has_neponset()) {
LEDS = WHOAMI;
......@@ -108,7 +112,7 @@ __initcall(neponset_init);
static struct map_desc neponset_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xf0000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* System Registers */
{ 0xf3000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* System Registers */
{ 0xf4000000, 0x40000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* SA-1111 */
LAST_DESC
};
......
......@@ -15,6 +15,23 @@
#include "generic.h"
static void __init
fixup_pleb(struct machine_desc *desc, struct param_struct *params,
char **cmdline, struct meminfo *mi)
{
SET_BANK(0, 0xc0000000, 16*1024*1024);
SET_BANK(1, 0xc8000000, 16*1024*1024);
SET_BANK(2, 0xd0000000, 16*1024*1024);
SET_BANK(3, 0xd8000000, 16*1024*1024);
/* make this 4 a second memory card is used to make 64MB */
/* make it 1 if a 16MB memory card is used */
mi->nr_banks = 2; /* Default 32MB */
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
setup_ramdisk(1, 0, 0, 8192);
setup_initrd(0xc0400000, 4*1024*1024);
}
static struct map_desc pleb_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
......@@ -29,10 +46,16 @@ static void __init pleb_map_io(void)
iotable_init(pleb_io_desc);
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
GAFR |= (GPIO_UART_TXD | GPIO_UART_RXD);
GPDR |= GPIO_UART_TXD;
GPDR &= ~GPIO_UART_RXD;
PPAR |= PPAR_UPR;
}
MACHINE_START(PLEB, "PLEB")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
FIXUP(fixup_pleb)
MAPIO(pleb_map_io)
INITIRQ(sa1100_init_irq)
MACHINE_END
......@@ -20,6 +20,8 @@
#include <linux/slab.h>
#include <linux/pci.h>
#include "pcipool.h"
/*
* simple buffer allocator for copying of unsafe to safe buffers
* uses __alloc/__free for actual buffers
......
......@@ -300,8 +300,8 @@ static int __init sa1111_ohci_hcd_init(void)
/* take out of reset */
/* set power sense and control lines (this from the diags code) */
*Reset = ( PwrSensePolLow << 6 )
| ( PwrCtrlPolLow << 7 );
*Reset = ( PwrSensePolLow << 6 )
| ( PwrCtrlPolLow << 7 );
*Status = 0;
......
......@@ -45,8 +45,8 @@ static void __init sherman_map_io(void)
}
MACHINE_START(SHERMAN, "Blazie Engineering Sherman")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
FIXUP(fixup_sherman)
MAPIO(sherman_map_io)
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
FIXUP(fixup_sherman)
MAPIO(sherman_map_io)
INITIRQ(sa1100_init_irq)
MACHINE_END
......@@ -66,7 +66,7 @@ static void __init simpad_map_io(void)
iotable_init(simpad_io_desc);
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
sa1100_register_uart(1, 1);
}
......
......@@ -631,15 +631,119 @@ do_PrefetchAbort(unsigned long addr, struct pt_regs *regs)
}
/*
* if PG_dcache_dirty is set for the page, we need to ensure that any
* cache entries for the kernels virtual memory range are written
* back to the page.
* We take the easy way out of this problem - we make the
* PTE uncacheable. However, we leave the write buffer on.
*/
void check_pgcache_dirty(struct page *page)
static void adjust_pte(struct vm_area_struct *vma, unsigned long address)
{
if (VALID_PAGE(page) && page->mapping &&
test_and_clear_bit(PG_dcache_dirty, &page->flags)) {
pgd_t *pgd;
pmd_t *pmd;
pte_t *pte, entry;
pgd = pgd_offset(vma->vm_mm, address);
if (pgd_none(*pgd))
return;
if (pgd_bad(*pgd))
goto bad_pgd;
pmd = pmd_offset(pgd, address);
if (pmd_none(*pmd))
return;
if (pmd_bad(*pmd))
goto bad_pmd;
pte = pte_offset(pmd, address);
entry = *pte;
/*
* If this page isn't present, or is already setup to
* fault (ie, is old), we can safely ignore any issues.
*/
if (pte_present(entry) && pte_val(entry) & L_PTE_CACHEABLE) {
flush_cache_page(vma, address);
pte_val(entry) &= ~L_PTE_CACHEABLE;
set_pte(pte, entry);
flush_tlb_page(vma, address);
}
return;
bad_pgd:
pgd_ERROR(*pgd);
pgd_clear(pgd);
return;
bad_pmd:
pmd_ERROR(*pmd);
pmd_clear(pmd);
return;
}
/*
* Take care of architecture specific things when placing a new PTE into
* a page table, or changing an existing PTE. Basically, there are two
* things that we need to take care of:
*
* 1. If PG_dcache_dirty is set for the page, we need to ensure
* that any cache entries for the kernels virtual memory
* range are written back to the page.
* 2. If we have multiple shared mappings of the same space in
* an object, we need to deal with the cache aliasing issues.
*
* Note that the page_table_lock will be held.
*/
void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
{
struct page *page = pte_page(pte);
struct vm_area_struct *mpnt;
struct mm_struct *mm;
unsigned long pgoff;
int aliases;
if (!VALID_PAGE(page) || !page->mapping)
return;
if (test_and_clear_bit(PG_dcache_dirty, &page->flags)) {
unsigned long kvirt = (unsigned long)page_address(page);
cpu_cache_clean_invalidate_range(kvirt, kvirt + PAGE_SIZE, 0);
}
mm = vma->vm_mm;
pgoff = (addr - vma->vm_start) >> PAGE_SHIFT;
aliases = 0;
/*
* If we have any shared mappings that are in the same mm
* space, then we need to handle them specially to maintain
* cache coherency.
*/
for (mpnt = page->mapping->i_mmap_shared; mpnt;
mpnt = mpnt->vm_next_share) {
unsigned long off;
/*
* If this VMA is not in our MM, we can ignore it.
* Note that we intentionally don't mask out the VMA
* that we are fixing up.
*/
if (mpnt->vm_mm != mm && mpnt != vma)
continue;
/*
* If the page isn't in this VMA, we can also ignore it.
*/
if (pgoff < mpnt->vm_pgoff)
continue;
off = pgoff - mpnt->vm_pgoff;
if (off >= (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT)
continue;
/*
* Ok, it is within mpnt. Fix it up.
*/
adjust_pte(mpnt, mpnt->vm_start + (off << PAGE_SHIFT));
aliases ++;
}
if (aliases)
adjust_pte(vma, addr);
}
......@@ -6,7 +6,7 @@
# To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk
#
# Last update: Wed Jul 25 10:07:10 2001
# Last update: Thu Aug 9 22:46:02 2001
#
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
#
......@@ -114,3 +114,4 @@ sa1100_elf SA1100_SA1100_ELF SA1100_ELF 102
gator SA1100_GATOR GATOR 103
granite ARCH_GRANITE GRANITE 104
consus SA1100_CONSUS CONSUS 105
aaec2000_aaed20 ARCH_AAEC2000_AAED2000 AAEC2000_AAED2000 106
......@@ -105,7 +105,6 @@
#ifdef CONFIG_VT
extern void con_init_devfs (void);
#endif
extern int rio_init(void);
#define CONSOLE_DEV MKDEV(TTY_MAJOR,0)
#define TTY_DEV MKDEV(TTYAUX_MAJOR,0)
......@@ -154,7 +153,7 @@ extern void hwc_tty_init(void);
extern void con3215_init(void);
extern void tty3215_init(void);
extern void tub3270_con_init(void);
extern void tub3270_initfunc(void);
extern void tub3270_init(void);
extern void rs285_console_init(void);
extern void sa1100_rs_console_init(void);
extern void sgi_serial_console_init(void);
......@@ -400,13 +399,8 @@ static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
}
static loff_t tty_lseek(struct file * file, loff_t offset, int orig)
{
return -ESPIPE;
}
static struct file_operations tty_fops = {
llseek: tty_lseek,
llseek: no_llseek,
read: tty_read,
write: tty_write,
poll: tty_poll,
......@@ -417,7 +411,7 @@ static struct file_operations tty_fops = {
};
static struct file_operations hung_up_tty_fops = {
llseek: tty_lseek,
llseek: no_llseek,
read: hung_up_tty_read,
write: hung_up_tty_write,
poll: hung_up_tty_poll,
......@@ -2194,7 +2188,9 @@ void __init console_init(void)
#if (defined(CONFIG_8xx) || defined(CONFIG_8260))
console_8xx_init();
#elif defined(CONFIG_MAC_SERIAL)
mac_scc_console_init();
mac_scc_console_init();
#elif defined(CONFIG_PARISC)
pdc_console_init();
#elif defined(CONFIG_SERIAL)
serial_console_init();
#endif /* CONFIG_8xx */
......@@ -2211,15 +2207,18 @@ void __init console_init(void)
sci_console_init();
#endif
#endif
#ifdef CONFIG_3215
con3215_init();
#endif
#ifdef CONFIG_3270_CONSOLE
#ifdef CONFIG_TN3270_CONSOLE
tub3270_con_init();
#endif
#ifdef CONFIG_TN3215
con3215_init();
#endif
#ifdef CONFIG_HWC
hwc_console_init();
#endif
#ifdef CONFIG_STDIO_CONSOLE
stdio_console_init();
#endif
#ifdef CONFIG_SERIAL_21285_CONSOLE
rs285_console_init();
#endif
......@@ -2309,6 +2308,7 @@ void __init tty_init(void)
kbd_init();
#endif
#ifdef CONFIG_ESPSERIAL /* init ESP before rs, so rs doesn't see the port */
espserial_init();
#endif
......@@ -2342,9 +2342,6 @@ void __init tty_init(void)
#ifdef CONFIG_SPECIALIX
specialix_init();
#endif
#ifdef CONFIG_RIO
rio_init();
#endif
#if (defined(CONFIG_8xx) || defined(CONFIG_8260))
rs_8xx_init();
#endif /* CONFIG_8xx */
......@@ -2358,10 +2355,10 @@ void __init tty_init(void)
#ifdef CONFIG_VT
vcs_init();
#endif
#ifdef CONFIG_3270
tub3270_initfunc();
#ifdef CONFIG_TN3270
tub3270_init();
#endif
#ifdef CONFIG_3215
#ifdef CONFIG_TN3215
tty3215_init();
#endif
#ifdef CONFIG_HWC
......
......@@ -47,7 +47,7 @@ void tty_wait_until_sent(struct tty_struct * tty, long timeout)
#ifdef TTY_DEBUG_WAIT_UNTIL_SENT
char buf[64];
printk("%s wait until sent...\n", tty_name(tty, buf));
printk(KERN_DEBUG "%s wait until sent...\n", tty_name(tty, buf));
#endif
if (!tty->driver.chars_in_buffer)
return;
......@@ -56,7 +56,7 @@ void tty_wait_until_sent(struct tty_struct * tty, long timeout)
timeout = MAX_SCHEDULE_TIMEOUT;
do {
#ifdef TTY_DEBUG_WAIT_UNTIL_SENT
printk("waiting %s...(%d)\n", tty_name(tty, buf),
printk(KERN_DEBUG "waiting %s...(%d)\n", tty_name(tty, buf),
tty->driver.chars_in_buffer(tty));
#endif
set_current_state(TASK_INTERRUPTIBLE);
......@@ -82,7 +82,7 @@ static void unset_locked_termios(struct termios *termios,
#define NOSET_MASK(x,y,z) (x = ((x) & ~(z)) | ((y) & (z)))
if (!locked) {
printk("Warning?!? termios_locked is NULL.\n");
printk(KERN_WARNING "Warning?!? termios_locked is NULL.\n");
return;
}
......
......@@ -7,6 +7,7 @@
* Dynamic keymap and string allocation - aeb@cwi.nl - May 1994
* Restrict VT switching via ioctl() - grif@cs.ucr.edu - Dec 1995
* Some code moved for less code duplication - Andi Kleen - Mar 1997
* Check put/get_user, cleanups - acme@conectiva.com.br - Jun 2001
*/
#include <linux/config.h>
......@@ -287,8 +288,10 @@ do_kdgkb_ioctl(int cmd, struct kbsentry *user_kdgkb, int perm)
p = func_table[i];
if(p)
for ( ; *p && sz; p++, sz--)
put_user(*p, q++);
put_user('\0', q);
if (put_user(*p, q++))
return -EFAULT;
if (put_user('\0', q))
return -EFAULT;
return ((p && *p) ? -EOVERFLOW : 0);
case KDSKBSENT:
if (!perm)
......@@ -739,10 +742,8 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
struct vt_stat *vtstat = (struct vt_stat *)arg;
unsigned short state, mask;
i = verify_area(VERIFY_WRITE,(void *)vtstat, sizeof(struct vt_stat));
if (i)
return i;
put_user(fg_console + 1, &vtstat->v_active);
if (put_user(fg_console + 1, &vtstat->v_active))
return -EFAULT;
state = 1; /* /dev/tty0 is always open */
for (i = 0, mask = 2; i < MAX_NR_CONSOLES && mask; ++i, mask <<= 1)
if (VT_IS_IN_USE(i))
......@@ -878,11 +879,9 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
ushort ll,cc;
if (!perm)
return -EPERM;
i = verify_area(VERIFY_READ, (void *)vtsizes, sizeof(struct vt_sizes));
if (i)
return i;
get_user(ll, &vtsizes->v_rows);
get_user(cc, &vtsizes->v_cols);
if (get_user(ll, &vtsizes->v_rows) ||
get_user(cc, &vtsizes->v_cols))
return -EFAULT;
return vc_resize_all(ll, cc);
}
......@@ -892,15 +891,15 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
ushort ll,cc,vlin,clin,vcol,ccol;
if (!perm)
return -EPERM;
i = verify_area(VERIFY_READ, (void *)vtconsize, sizeof(struct vt_consize));
if (i)
return i;
get_user(ll, &vtconsize->v_rows);
get_user(cc, &vtconsize->v_cols);
get_user(vlin, &vtconsize->v_vlin);
get_user(clin, &vtconsize->v_clin);
get_user(vcol, &vtconsize->v_vcol);
get_user(ccol, &vtconsize->v_ccol);
if (verify_area(VERIFY_READ, (void *)vtconsize,
sizeof(struct vt_consize)))
return -EFAULT;
__get_user(ll, &vtconsize->v_rows);
__get_user(cc, &vtconsize->v_cols);
__get_user(vlin, &vtconsize->v_vlin);
__get_user(clin, &vtconsize->v_clin);
__get_user(vcol, &vtconsize->v_vcol);
__get_user(ccol, &vtconsize->v_ccol);
vlin = vlin ? vlin : video_scan_lines;
if ( clin )
{
......@@ -1067,10 +1066,6 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
if (!perm)
return -EPERM;
i = verify_area(VERIFY_READ, (void *) arg,
sizeof(struct vc_mode));
if (i)
return i;
if (copy_from_user(&mode, (void *) arg, sizeof(mode)))
return -EFAULT;
return console_setmode(&mode, cmd == VC_SETMODE);
......@@ -1088,10 +1083,6 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
was changed from 0x766a to 0x766c */
return console_powermode((int) arg);
}
i = verify_area(VERIFY_READ, (void *) arg,
sizeof(int));
if (i)
return i;
if (get_user(cmap_size, (int *) arg))
return -EFAULT;
if (cmap_size % 3)
......
......@@ -37,9 +37,6 @@
#define DIVAS_IRQ_RESET 0xC18
#define DIVAS_IRQ_RESET_VAL 0xFE
#define PCI_LATENCY PCI_LATENCY_TIMER
#define PCI_INTERRUPT PCI_INTERRUPT_LINE
#define TEST_INT_DIVAS 0x11
#define TEST_INT_DIVAS_BRI 0x12
#define TEST_INT_DIVAS_Q 0x13
......@@ -478,7 +475,6 @@ void card_isr (void *dev_id)
int DivasCardNew(dia_card_t *card_info)
{
card_t *card;
byte b;
static boolean_t first_call = TRUE;
boolean_t NeedISRandReset = FALSE;
......@@ -567,10 +563,6 @@ int DivasCardNew(dia_card_t *card_info)
return -1;
}
b = card->cfg.irq;
UxPciConfigWrite(card->hw, sizeof(b), PCI_INTERRUPT_LINE, &b);
if (card_info->card_type != DIA_CARD_TYPE_DIVA_SERVER_Q)
{
if ((*card->card_reset)(card))
......@@ -670,7 +662,7 @@ static int idi_register(card_t *card, byte channels)
return -1;
}
bzero(card->e_tbl, sizeof(E_INFO) * num_entities);
memset(card->e_tbl, 0, sizeof(E_INFO) * num_entities);
card->e_max = num_entities;
DIVA_DIDD_Read(d, sizeof(d));
......
......@@ -37,7 +37,6 @@
extern int DivasCardNext;
void UxPause(long ms);
void bcopy(void *pSource, void *pDest, dword dwLength);
int DivasGetMem(mem_block_t *);
#define DIA_IOCTL_UNLOCK 12
......@@ -157,11 +156,8 @@ unsigned int do_poll(struct file *pFile, struct poll_table_struct *pPollTable)
{
word wMask = 0;
if (!DivasLogFifoEmpty())
{
if (!DivasLogFifoEmpty())
wMask |= POLLIN | POLLRDNORM;
}
return wMask;
}
......@@ -174,14 +170,14 @@ ssize_t do_read(struct file *pFile, char *pUserBuffer, size_t BufferSize, loff_t
{
printk(KERN_WARNING "Divas: Divalog buffer specifed a size that is too small (%d - %d required)\n",
BufferSize, sizeof(klog_t));
return 0;
return -EIO;
}
pHeadItem = (klog_t *) DivasLogFifoRead();
if (pHeadItem)
{
bcopy(pHeadItem, pClientLogBuffer, sizeof(klog_t));
memcpy(pClientLogBuffer, pHeadItem, sizeof(klog_t));
kfree(pHeadItem);
return sizeof(klog_t);
}
......
......@@ -38,18 +38,6 @@ struct pt_regs;
#include "uxio.h"
#ifdef MODULE
void bcopy(void *pSource, void *pDest, dword dwLength)
{
memcpy(pDest, pSource, dwLength);
}
#endif
void bzero(void *pDataArea, dword dwLength)
{
memset(pDataArea, 0, dwLength);
}
int Divas4BRIInitPCI(card_t *card, dia_card_t *cfg)
{
/* Use UxPciConfigWrite routines to initialise PCI config space */
......
......@@ -58,10 +58,6 @@ struct ux_diva_card_s
isr_fn_t *user_isr;
};
void bcopy(void *pSource, void *pDest, dword dwLength);
void bzero(void *pDataArea, dword dwLength);
/*
* Get a card handle to enable card to be accessed
*/
......
This diff is collapsed.
......@@ -290,6 +290,15 @@ pci_set_power_state(struct pci_dev *dev, int state)
/* enter specified state */
pci_write_config_word(dev, pm + PCI_PM_CTRL, pmcsr);
/* Mandatory power management transition delays */
/* see PCI PM 1.1 5.6.1 table 18 */
if(state == 3 || dev->current_state == 3)
{
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(HZ/100);
}
else if(state == 2 || dev->current_state == 2)
udelay(200);
dev->current_state = state;
return 0;
......
......@@ -4270,6 +4270,9 @@
1607 Lava Semiconductor Manufacturing Inc
1608 Automated Wagering International
1609 Scimetric Instruments Inc
1619 FarSite Communications Ltd
0400 FarSync T2P (2 port X.21/V.35/V.24)
0440 FarSync T4P (4 port X.21/V.35/V.24)
1668 Action Tec Electronics Inc
1813 Ambient Technologies Inc
1a08 Sierra semiconductor
......
......@@ -211,7 +211,7 @@ static void handle_erase_timeout(u_long arg)
retry_erase((erase_busy_t *)arg, MTD_REQ_TIMEOUT);
}
static void setup_erase_request(client_handle_t handle, eraseq_entry_t *erase)
static int setup_erase_request(client_handle_t handle, eraseq_entry_t *erase)
{
erase_busy_t *busy;
region_info_t *info;
......@@ -229,6 +229,8 @@ static void setup_erase_request(client_handle_t handle, eraseq_entry_t *erase)
else {
erase->State = 1;
busy = kmalloc(sizeof(erase_busy_t), GFP_KERNEL);
if (!busy)
return CS_GENERAL_FAILURE;
busy->erase = erase;
busy->client = handle;
init_timer(&busy->timeout);
......@@ -238,6 +240,7 @@ static void setup_erase_request(client_handle_t handle, eraseq_entry_t *erase)
retry_erase(busy, 0);
}
}
return CS_SUCCESS;
} /* setup_erase_request */
/*======================================================================
......@@ -322,7 +325,7 @@ int MTDHelperEntry(int func, void *a1, void *a2)
======================================================================*/
static void setup_regions(client_handle_t handle, int attr,
static int setup_regions(client_handle_t handle, int attr,
memory_handle_t *list)
{
int i, code, has_jedec, has_geo;
......@@ -337,7 +340,7 @@ static void setup_regions(client_handle_t handle, int attr,
code = (attr) ? CISTPL_DEVICE_A : CISTPL_DEVICE;
if (read_tuple(handle, code, &device) != CS_SUCCESS)
return;
return CS_GENERAL_FAILURE;
code = (attr) ? CISTPL_JEDEC_A : CISTPL_JEDEC_C;
has_jedec = (read_tuple(handle, code, &jedec) == CS_SUCCESS);
if (has_jedec && (device.ndev != jedec.nid)) {
......@@ -360,6 +363,8 @@ static void setup_regions(client_handle_t handle, int attr,
if ((device.dev[i].type != CISTPL_DTYPE_NULL) &&
(device.dev[i].size != 0)) {
r = kmalloc(sizeof(*r), GFP_KERNEL);
if (!r)
return CS_GENERAL_FAILURE;
r->region_magic = REGION_MAGIC;
r->state = 0;
r->dev_info[0] = '\0';
......@@ -384,6 +389,7 @@ static void setup_regions(client_handle_t handle, int attr,
}
offset += device.dev[i].size;
}
return CS_SUCCESS;
} /* setup_regions */
/*======================================================================
......@@ -417,8 +423,10 @@ int pcmcia_get_first_region(client_handle_t handle, region_info_t *rgn)
if ((handle->Attributes & INFO_MASTER_CLIENT) &&
(!(s->state & SOCKET_REGION_INFO))) {
setup_regions(handle, 0, &s->c_region);
setup_regions(handle, 1, &s->a_region);
if (setup_regions(handle, 0, &s->c_region) != CS_SUCCESS)
return CS_GENERAL_FAILURE;
if (setup_regions(handle, 1, &s->a_region) != CS_SUCCESS)
return CS_GENERAL_FAILURE;
s->state |= SOCKET_REGION_INFO;
}
......
......@@ -789,7 +789,7 @@
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/malloc.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
......
......@@ -15,7 +15,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -52,7 +52,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -16,7 +16,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -12,7 +12,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -14,7 +14,7 @@
* derived from this software without specific prior written permission.
*
* Alternatively, this software may be distributed under the terms of the
* GNU Public License ("GPL").
* GNU General Public License ("GPL").
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
......
......@@ -1218,7 +1218,6 @@ static int emu10k1_audio_open(struct inode *inode, struct file *file)
tasklet_init(&woinst->timer.tasklet, emu10k1_waveout_bh, (unsigned long) wave_dev);
wave_dev->woinst = woinst;
emu10k1_waveout_setformat(wave_dev, &woinst->format);
}
file->private_data = (void *) wave_dev;
......@@ -1261,7 +1260,7 @@ static int emu10k1_audio_release(struct inode *inode, struct file *file)
spin_unlock_irqrestore(&woinst->lock, flags);
/* wait for the tasklet (bottom-half) to finish */
tasklet_unlock_wait(&woinst->timer.tasklet);
tasklet_kill(&woinst->timer.tasklet);
kfree(wave_dev->woinst);
}
......@@ -1275,7 +1274,7 @@ static int emu10k1_audio_release(struct inode *inode, struct file *file)
}
spin_unlock_irqrestore(&wiinst->lock, flags);
tasklet_unlock_wait(&wiinst->timer.tasklet);
tasklet_kill(&wiinst->timer.tasklet);
kfree(wave_dev->wiinst);
}
......@@ -1491,6 +1490,9 @@ void emu10k1_wavein_bh(unsigned long refdata)
u32 bytestocopy;
unsigned long flags;
if (!wiinst)
return;
spin_lock_irqsave(&wiinst->lock, flags);
if (!(wiinst->state & WAVE_STATE_STARTED)) {
......@@ -1518,6 +1520,9 @@ void emu10k1_waveout_bh(unsigned long refdata)
u32 bytestocopy;
unsigned long flags;
if (!woinst)
return;
spin_lock_irqsave(&woinst->lock, flags);
if (!(woinst->state & WAVE_STATE_STARTED)) {
......
......@@ -370,10 +370,10 @@ static int __devinit emu10k1_midi_init(struct emu10k1_card *card)
static void __devinit emu10k1_midi_cleanup(struct emu10k1_card *card)
{
tasklet_unlock_wait(&card->mpuout->tasklet);
tasklet_kill(&card->mpuout->tasklet);
kfree(card->mpuout);
tasklet_unlock_wait(&card->mpuin->tasklet);
tasklet_kill(&card->mpuin->tasklet);
kfree(card->mpuin);
#ifdef EMU10K1_SEQUENCER
......
......@@ -1451,7 +1451,7 @@ static int i810_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
if (get_user(val, (int *)arg))
return -EFAULT;
if(val==0) {
ret = -EINVAL;
return -EINVAL;
} else {
ret = 1;
}
......
This diff is collapsed.
// Portions of this file taken from
// Petko Manolov - Petkan (petkan@dce.bg)
// from his driver pegasus.h
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define CS_INTERFACE 0x24
#define CDC_ETHER_MAX_MTU 1536
#define CDC_ETHER_PRESENT 0x00000001
#define CDC_ETHER_RUNNING 0x00000002
#define CDC_ETHER_TX_BUSY 0x00000004
#define CDC_ETHER_RX_BUSY 0x00000008
#define CDC_ETHER_UNPLUG 0x00000040
#define CDC_ETHER_TX_TIMEOUT (HZ*10)
#define TX_UNDERRUN 0x80
#define EXCESSIVE_COL 0x40
#define LATE_COL 0x20
#define NO_CARRIER 0x10
#define LOSS_CARRIER 0x08
#define JABBER_TIMEOUT 0x04
#define CDC_ETHER_REQT_READ 0xc0
#define CDC_ETHER_REQT_WRITE 0x40
#define CDC_ETHER_REQ_GET_REGS 0xf0
#define CDC_ETHER_REQ_SET_REGS 0xf1
#define CDC_ETHER_REQ_SET_REG PIPERIDER_REQ_SET_REGS
#define ALIGN(x) x __attribute__((aligned(L1_CACHE_BYTES)))
typedef struct _ether_dev_t {
struct usb_device *usb;
struct net_device *net;
struct net_device_stats stats;
unsigned flags;
int configuration_num;
int bConfigurationValue;
int comm_interface;
int comm_bInterfaceNumber;
int comm_interface_altset_num;
int comm_bAlternateSetting;
int comm_ep_in;
int data_interface;
int data_bInterfaceNumber;
int data_interface_altset_num_with_traffic;
int data_bAlternateSetting_with_traffic;
int data_interface_altset_num_without_traffic;
int data_bAlternateSetting_without_traffic;
int data_ep_in;
int data_ep_out;
int data_ep_out_size;
__u16 bcdCDC;
__u8 iMACAddress;
__u32 bmEthernetStatistics;
__u16 wMaxSegmentSize;
__u16 wNumberMCFilters;
__u8 bNumberPowerFilters;
int intr_interval;
struct urb rx_urb, tx_urb, intr_urb;
unsigned char ALIGN(rx_buff[CDC_ETHER_MAX_MTU]);
unsigned char ALIGN(tx_buff[CDC_ETHER_MAX_MTU]);
unsigned char ALIGN(intr_buff[8]);
} ether_dev_t;
#define REQ_HDR_FUNC_DESCR 0x0001
#define REQ_UNION_FUNC_DESCR 0x0002
#define REQ_ETH_FUNC_DESCR 0x0004
#define REQUIREMENTS_TOTAL 0x0007
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -115,6 +115,7 @@ struct modex_params {
#define VID_CTL_25MHz (1)
#define VID_CTL_36MHz (2)
#define VIDC_CTRL_CSYNC (1 << 7)
#define VIDC_CTRL_INTERLACE (1 << 6)
#define VIDC_CTRL_FIFO_0_4 (0 << 4)
#define VIDC_CTRL_FIFO_1_5 (1 << 4)
......
......@@ -53,15 +53,6 @@
*/
/*#define CFB16_IS_CFB15*/
/*
* This is the offset of the PCI space in physical memory
*/
#ifdef CONFIG_FOOTBRIDGE
#define PCI_PHYS_OFFSET 0x80000000
#else
#define PCI_PHYS_OFFSET 0x00000000
#endif
static char *CyberRegs;
#include "cyber2000fb.h"
......@@ -1074,18 +1065,18 @@ static void cyber2000fb_blank(int blank, struct fb_info *info)
case 2: /* vsync off */
cyber2000_grphw(0x16, 0x04);
break;
case 1: /* just software blanking of screen */
case 1: /* soft blank */
cyber2000_grphw(0x16, 0x00);
for (i = 0; i < 256; i++) {
for (i = 0; i < NR_PALETTE; i++) {
cyber2000_outb(i, 0x3c8);
cyber2000_outb(0, 0x3c9);
cyber2000_outb(0, 0x3c9);
cyber2000_outb(0, 0x3c9);
}
break;
default: /* case 0, or anything else: unblank */
default: /* unblank */
cyber2000_grphw(0x16, 0x00);
for (i = 0; i < 256; i++) {
for (i = 0; i < NR_PALETTE; i++) {
cyber2000_outb(i, 0x3c8);
cyber2000_outb(cfb->palette[i].red, 0x3c9);
cyber2000_outb(cfb->palette[i].green, 0x3c9);
......@@ -1323,7 +1314,7 @@ static inline void cyberpro_init_hw(struct cfb_info *cfb, int at_boot)
cyber2000_outb(0x01, 0x3cf);
/*
* MCLK on the NetWinder is fixed at 75MHz
* MCLK on the NetWinder and the Shark is fixed at 75MHz
*/
cfb->mclk_mult = 0xdb;
cfb->mclk_div = 0x54;
......@@ -1361,7 +1352,7 @@ static inline void cyberpro_init_hw(struct cfb_info *cfb, int at_boot)
}
static struct cfb_info * __devinit
cyberpro_alloc_fb_info(struct pci_dev *dev, const struct pci_device_id *id)
cyberpro_alloc_fb_info(struct pci_dev *dev, const struct pci_device_id *id, char *name)
{
struct cfb_info *cfb;
......@@ -1385,7 +1376,7 @@ cyberpro_alloc_fb_info(struct pci_dev *dev, const struct pci_device_id *id)
else
cfb->divisors[3] = 8;
sprintf(cfb->fb.fix.id, "CyberPro%4X", id->device);
strcpy(cfb->fb.fix.id, name);
cfb->fb.fix.type = FB_TYPE_PACKED_PIXELS;
cfb->fb.fix.type_aux = 0;
......@@ -1440,14 +1431,9 @@ cyberpro_map_mmio(struct cfb_info *cfb, struct pci_dev *dev)
mmio_base = pci_resource_start(dev, 0) + MMIO_OFFSET;
cfb->fb.fix.mmio_start = mmio_base + PCI_PHYS_OFFSET;
cfb->fb.fix.mmio_start = mmio_base;
cfb->fb.fix.mmio_len = MMIO_SIZE;
if (!request_mem_region(mmio_base, MMIO_SIZE, "memory mapped I/O")) {
printk("%s: memory mapped IO in use\n", cfb->fb.fix.id);
return -EBUSY;
}
CyberRegs = ioremap(mmio_base, MMIO_SIZE);
if (!CyberRegs) {
printk("%s: unable to map memory mapped IO\n",
......@@ -1465,9 +1451,6 @@ static void __devinit cyberpro_unmap_mmio(struct cfb_info *cfb)
if (cfb && CyberRegs) {
iounmap(CyberRegs);
CyberRegs = NULL;
release_mem_region(cfb->fb.fix.mmio_start - PCI_PHYS_OFFSET,
cfb->fb.fix.mmio_len);
}
}
......@@ -1481,15 +1464,9 @@ cyberpro_map_smem(struct cfb_info *cfb, struct pci_dev *dev, u_long smem_len)
smem_base = pci_resource_start(dev, 0);
cfb->fb.fix.smem_start = smem_base + PCI_PHYS_OFFSET;
cfb->fb.fix.smem_start = smem_base;
cfb->fb.fix.smem_len = smem_len;
if (!request_mem_region(smem_base, smem_len, "frame buffer")) {
printk("%s: frame buffer in use\n",
cfb->fb.fix.id);
return -EBUSY;
}
cfb->fb.screen_base = ioremap(smem_base, smem_len);
if (!cfb->fb.screen_base) {
printk("%s: unable to map screen memory\n",
......@@ -1505,9 +1482,6 @@ static void __devinit cyberpro_unmap_smem(struct cfb_info *cfb)
if (cfb && cfb->fb.screen_base) {
iounmap(cfb->fb.screen_base);
cfb->fb.screen_base = NULL;
release_mem_region(cfb->fb.fix.smem_start - PCI_PHYS_OFFSET,
cfb->fb.fix.smem_len);
}
}
......@@ -1517,14 +1491,21 @@ cyberpro_probe(struct pci_dev *dev, const struct pci_device_id *id)
struct cfb_info *cfb;
u_int h_sync, v_sync;
u_long smem_size;
char name[16];
int err;
sprintf(name, "CyberPro%4X", id->device);
err = pci_enable_device(dev);
if (err)
return err;
err = pci_request_regions(dev, name);
if (err)
return err;
err = -ENOMEM;
cfb = cyberpro_alloc_fb_info(dev, id);
cfb = cyberpro_alloc_fb_info(dev, id, name);
if (!cfb)
goto failed;
......@@ -1593,6 +1574,9 @@ cyberpro_probe(struct pci_dev *dev, const struct pci_device_id *id)
cyberpro_unmap_mmio(cfb);
cyberpro_free_fb_info(cfb);
release:
pci_release_regions(dev);
return err;
}
......@@ -1621,6 +1605,8 @@ static void __devexit cyberpro_remove(struct pci_dev *dev)
pci_set_drvdata(dev, NULL);
if (cfb == int_cfb_info)
int_cfb_info = NULL;
pci_release_regions(dev);
}
}
......
This diff is collapsed.
/*
* linux/drivers/video/sa1100fb.h
* -- StrongARM 1100 LCD Controller Frame Buffer Device
*
* Copyright (C) 1999 Eric A. Thomas
* Based on acornfb.c Copyright (C) Russell King.
*
* 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.
*/
/*
* These are the bitfields for each
* display depth that we support.
*/
struct sa1100fb_rgb {
struct fb_bitfield red;
struct fb_bitfield green;
struct fb_bitfield blue;
struct fb_bitfield transp;
};
/*
* This structure describes the machine which we are running on.
*/
struct sa1100fb_mach_info {
u_long pixclock;
u_short xres;
u_short yres;
u_char bpp;
u_char hsync_len;
u_char left_margin;
u_char right_margin;
u_char vsync_len;
u_char upper_margin;
u_char lower_margin;
u_char sync;
u_int cmap_greyscale:1,
cmap_inverse:1,
cmap_static:1,
unused:29;
u_int lccr0;
u_int lccr3;
};
/* Shadows for LCD controller registers */
struct sa1100fb_lcd_reg {
Word lccr0;
Word lccr1;
Word lccr2;
Word lccr3;
};
#define RGB_8 (0)
#define RGB_16 (1)
#define NR_RGB 2
struct sa1100fb_info {
struct fb_info fb;
signed int currcon;
struct sa1100fb_rgb *rgb[NR_RGB];
u_int max_bpp;
u_int max_xres;
u_int max_yres;
/*
* These are the addresses we mapped
* the framebuffer memory region to.
*/
dma_addr_t map_dma;
u_char * map_cpu;
u_int map_size;
u_char * screen_cpu;
dma_addr_t screen_dma;
u16 * palette_cpu;
dma_addr_t palette_dma;
u_int palette_size;
dma_addr_t dbar1;
dma_addr_t dbar2;
u_int lccr0;
u_int lccr3;
u_int cmap_inverse:1,
cmap_static:1,
unused:30;
u_int reg_lccr0;
u_int reg_lccr1;
u_int reg_lccr2;
u_int reg_lccr3;
volatile u_char state;
volatile u_char task_state;
struct semaphore ctrlr_sem;
wait_queue_head_t ctrlr_wait;
struct tq_struct task;
#ifdef CONFIG_PM
struct pm_dev *pm;
#endif
#ifdef CONFIG_CPU_FREQ
struct notifier_block clockchg;
#endif
};
#define __type_entry(ptr,type,member) ((type *)((char *)(ptr)-offsetof(type,member)))
#define TO_INF(ptr,member) __type_entry(ptr,struct sa1100fb_info,member)
#define SA1100_PALETTE_MODE_VAL(bpp) (((bpp) & 0x018) << 9)
/*
* These are the actions for set_ctrlr_state
*/
#define C_DISABLE (0)
#define C_ENABLE (1)
#define C_DISABLE_CLKCHANGE (2)
#define C_ENABLE_CLKCHANGE (3)
#define C_REENABLE (4)
#define SA1100_NAME "SA1100"
/*
* Debug macros
*/
#if DEBUG
# define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
#else
# define DPRINTK(fmt, args...)
#endif
/*
* Minimum X and Y resolutions
*/
#define MIN_XRES 64
#define MIN_YRES 64
......@@ -11,6 +11,8 @@
#include <linux/smp_lock.h>
#include "hpfs_fn.h"
#define BLOCKS(size) (((size) + 511) >> 9)
/* HUH? */
int hpfs_open(struct inode *i, struct file *f)
{
......@@ -46,7 +48,7 @@ secno hpfs_bmap(struct inode *inode, unsigned file_secno)
unsigned n, disk_secno;
struct fnode *fnode;
struct buffer_head *bh;
if (((inode->i_size + 511) >> 9) <= file_secno) return 0;
if (BLOCKS(inode->u.hpfs_i.mmu_private) <= file_secno) return 0;
n = file_secno - inode->i_hpfs_file_sec;
if (n < inode->i_hpfs_n_secs) return inode->i_hpfs_disk_sec + n;
if (!(fnode = hpfs_map_fnode(inode->i_sb, inode->i_ino, &bh))) return 0;
......
......@@ -12,6 +12,7 @@
static struct file_operations hpfs_file_ops =
{
llseek: generic_file_llseek,
read: generic_file_read,
write: hpfs_file_write,
mmap: generic_file_mmap,
......
......@@ -42,6 +42,7 @@ static int nfs_fsync(struct file *, struct dentry *dentry, int datasync);
static int nfs_file_release(struct inode *, struct file *);
struct file_operations nfs_file_operations = {
llseek: generic_file_llseek,
read: nfs_file_read,
write: nfs_file_write,
mmap: nfs_file_mmap,
......
......@@ -41,7 +41,7 @@ struct nfsd_getdents_callback {
* the name matching the specified inode number.
*/
static int filldir_one(void * __buf, const char * name, int len,
off_t pos, ino_t ino, unsigned int d_type)
loff_t pos, ino_t ino, unsigned int d_type)
{
struct nfsd_getdents_callback *buf = __buf;
struct qstr *qs = buf->name;
......
......@@ -21,6 +21,7 @@
* the coh filesystem.
*/
struct file_operations sysv_file_operations = {
llseek: generic_file_llseek,
read: generic_file_read,
write: generic_file_write,
mmap: generic_file_mmap,
......
......@@ -71,11 +71,13 @@ static long long ufs_file_lseek(
* We have mostly NULL's here: the current defaults are ok for
* the ufs filesystem.
*/
struct file_operations ufs_file_operations = {
llseek: ufs_file_lseek,
read: generic_file_read,
write: generic_file_write,
mmap: generic_file_mmap,
open: generic_file_open,
};
struct inode_operations ufs_file_inode_operations = {
......
......@@ -2761,10 +2761,10 @@ typedef PCMCIAPrtType PCMCIAType [PCMCIASp/PCMCIAPrtSp] ;
#define LCCR1_DisWdth(Pixel) /* Display Width [16..1024 pix.] */ \
(((Pixel) - 16)/16 << FShft (LCCR1_PPL))
#define LCCR1_HSW Fld (6, 10) /* Horizontal Synchronization */
/* pulse Width - 1 [Tpix] (L_LCLK) */
/* pulse Width - 1 [Tpix] (L_LCLK) */
#define LCCR1_HorSnchWdth(Tpix) /* Horizontal Synchronization */ \
/* pulse Width [1..64 Tpix] */ \
(((Tpix) - 1) << FShft (LCCR1_HSW))
/* pulse Width [1..64 Tpix] */ \
(((Tpix) - 1) << FShft (LCCR1_HSW))
#define LCCR1_ELW Fld (8, 16) /* End-of-Line pixel clock Wait */
/* count - 1 [Tpix] */
#define LCCR1_EndLnDel(Tpix) /* End-of-Line Delay */ \
......
......@@ -124,8 +124,8 @@ extern unsigned long BCR_value;
#define NEPONSET_USAR_IRQ MISC_IRQ1
#define NEPONSET_CPLD_BASE (0x10000000)
#define Nep_p2v( x ) ((x) - NEPONSET_CPLD_BASE + 0xf0000000)
#define Nep_v2p( x ) ((x) - 0xf0000000 + NEPONSET_CPLD_BASE)
#define Nep_p2v( x ) ((x) - NEPONSET_CPLD_BASE + 0xf3000000)
#define Nep_v2p( x ) ((x) - 0xf3000000 + NEPONSET_CPLD_BASE)
#define _IRR 0x10000024 /* Interrupt Reason Register */
#define _AUD_CTL 0x100000c0 /* Audio controls (RW) */
......
......@@ -112,15 +112,15 @@ ide_init_default_hwifs(void)
hw_regs_t hw;
/* Enable GPIO as interrupt line */
GPDR &= ~GPIO_GPIO1;
set_GPIO_IRQ_edge(GPIO_GPIO1, GPIO_RISING_EDGE);
GPDR &= ~LART_GPIO_IDE;
set_GPIO_IRQ_edge(LART_GPIO_IDE, GPIO_RISING_EDGE);
/* set PCMCIA interface timing */
MECR = 0x00060006;
/* init the interface */
ide_init_hwif_ports(&hw, PCMCIA_IO_0_BASE + 0x0000, PCMCIA_IO_0_BASE + 0x1000, NULL);
hw.irq = IRQ_GPIO1;
hw.irq = LART_IRQ_IDE;
ide_register_hw(&hw, NULL);
#endif
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -231,7 +231,4 @@ static inline void flush_dcache_page(struct page *page)
* cache entries for the kernels virtual memory range are written
* back to the page.
*/
extern void check_pgcache_dirty(struct page *page);
#define update_mmu_cache(vma,address,pte) check_pgcache_dirty(pte_page(pte))
extern void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte);
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment