Commit 5151c061 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://bk.arm.linux.org.uk/linux-2.5-rmk

into home.transmeta.com:/home/torvalds/v2.5/linux
parents d84366b4 ab220b02
...@@ -546,7 +546,7 @@ config CPU_FREQ_SA1110 ...@@ -546,7 +546,7 @@ config CPU_FREQ_SA1110
if (CPU_FREQ_SA1100 || CPU_FREQ_SA1110) if (CPU_FREQ_SA1100 || CPU_FREQ_SA1110)
config CPU_FREQ_GOV_USERSPACE config CPU_FREQ_GOV_USERSPACE
bool tristate
depends on CPU_FREQ depends on CPU_FREQ
default y default y
...@@ -1027,9 +1027,6 @@ source "drivers/scsi/Kconfig" ...@@ -1027,9 +1027,6 @@ source "drivers/scsi/Kconfig"
endmenu endmenu
#if [ "$CONFIG_ARCH_CLPS711X" = "y" ]; then
# source drivers/ssi/Config.in
#fi
source "drivers/ieee1394/Kconfig" source "drivers/ieee1394/Kconfig"
source "drivers/message/i2o/Kconfig" source "drivers/message/i2o/Kconfig"
......
...@@ -19,10 +19,6 @@ OBJS += ll_char_wr.o font.o ...@@ -19,10 +19,6 @@ OBJS += ll_char_wr.o font.o
CFLAGS_misc.o := -DPARAMS_PHYS=$(PARAMS_PHYS) CFLAGS_misc.o := -DPARAMS_PHYS=$(PARAMS_PHYS)
endif endif
ifeq ($(CONFIG_ARCH_NETWINDER),y)
OBJS += head-netwinder.o
endif
ifeq ($(CONFIG_ARCH_SHARK),y) ifeq ($(CONFIG_ARCH_SHARK),y)
OBJS += head-shark.o ofw-shark.o OBJS += head-shark.o ofw-shark.o
endif endif
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* Bits taken from various places. * Bits taken from various places.
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -61,7 +62,7 @@ void pcibios_report_status(u_int status_mask, int warn) ...@@ -61,7 +62,7 @@ void pcibios_report_status(u_int status_mask, int warn)
* Bug 3 is responsible for the sound DMA grinding to a halt. We now * Bug 3 is responsible for the sound DMA grinding to a halt. We now
* live with bug 2. * live with bug 2.
*/ */
static void __init pci_fixup_83c553(struct pci_dev *dev) static void __devinit pci_fixup_83c553(struct pci_dev *dev)
{ {
/* /*
* Set memory region to start at address 0, and enable IO * Set memory region to start at address 0, and enable IO
...@@ -112,7 +113,7 @@ static void __init pci_fixup_83c553(struct pci_dev *dev) ...@@ -112,7 +113,7 @@ static void __init pci_fixup_83c553(struct pci_dev *dev)
outb(0x08, 0x4d1); outb(0x08, 0x4d1);
} }
static void __init pci_fixup_unassign(struct pci_dev *dev) static void __devinit pci_fixup_unassign(struct pci_dev *dev)
{ {
dev->resource[0].end -= dev->resource[0].start; dev->resource[0].end -= dev->resource[0].start;
dev->resource[0].start = 0; dev->resource[0].start = 0;
...@@ -123,7 +124,7 @@ static void __init pci_fixup_unassign(struct pci_dev *dev) ...@@ -123,7 +124,7 @@ static void __init pci_fixup_unassign(struct pci_dev *dev)
* if it is the host bridge by marking it as such. These resources are of * if it is the host bridge by marking it as such. These resources are of
* no consequence to the PCI layer (they are handled elsewhere). * no consequence to the PCI layer (they are handled elsewhere).
*/ */
static void __init pci_fixup_dec21285(struct pci_dev *dev) static void __devinit pci_fixup_dec21285(struct pci_dev *dev)
{ {
int i; int i;
...@@ -141,7 +142,7 @@ static void __init pci_fixup_dec21285(struct pci_dev *dev) ...@@ -141,7 +142,7 @@ static void __init pci_fixup_dec21285(struct pci_dev *dev)
/* /*
* PCI IDE controllers use non-standard I/O port decoding, respect it. * PCI IDE controllers use non-standard I/O port decoding, respect it.
*/ */
static void __init pci_fixup_ide_bases(struct pci_dev *dev) static void __devinit pci_fixup_ide_bases(struct pci_dev *dev)
{ {
struct resource *r; struct resource *r;
int i; int i;
...@@ -161,7 +162,7 @@ static void __init pci_fixup_ide_bases(struct pci_dev *dev) ...@@ -161,7 +162,7 @@ static void __init pci_fixup_ide_bases(struct pci_dev *dev)
/* /*
* Put the DEC21142 to sleep * Put the DEC21142 to sleep
*/ */
static void __init pci_fixup_dec21142(struct pci_dev *dev) static void __devinit pci_fixup_dec21142(struct pci_dev *dev)
{ {
pci_write_config_dword(dev, 0x40, 0x80000000); pci_write_config_dword(dev, 0x40, 0x80000000);
} }
...@@ -182,7 +183,7 @@ static void __init pci_fixup_dec21142(struct pci_dev *dev) ...@@ -182,7 +183,7 @@ static void __init pci_fixup_dec21142(struct pci_dev *dev)
* functional. However, The CY82C693U _does not work_ in bus * functional. However, The CY82C693U _does not work_ in bus
* master mode without locking the PCI bus solid. * master mode without locking the PCI bus solid.
*/ */
static void __init pci_fixup_cy82c693(struct pci_dev *dev) static void __devinit pci_fixup_cy82c693(struct pci_dev *dev)
{ {
if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) { if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
u32 base0, base1; u32 base0, base1;
...@@ -511,6 +512,8 @@ static void __init pcibios_init_hw(struct hw_pci *hw) ...@@ -511,6 +512,8 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
panic("PCI: unable to scan bus!"); panic("PCI: unable to scan bus!");
busnr = sys->bus->subordinate + 1; busnr = sys->bus->subordinate + 1;
list_add(&sys->node, &hw->buses);
} else { } else {
kfree(sys); kfree(sys);
if (ret < 0) if (ret < 0)
...@@ -521,17 +524,36 @@ static void __init pcibios_init_hw(struct hw_pci *hw) ...@@ -521,17 +524,36 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
void __init pci_common_init(struct hw_pci *hw) void __init pci_common_init(struct hw_pci *hw)
{ {
struct pci_sys_data *sys;
INIT_LIST_HEAD(&hw->buses);
if (hw->preinit) if (hw->preinit)
hw->preinit(); hw->preinit();
pcibios_init_hw(hw); pcibios_init_hw(hw);
if (hw->postinit) if (hw->postinit)
hw->postinit(); hw->postinit();
pci_fixup_irqs(pcibios_swizzle, pcibios_map_irq);
list_for_each_entry(sys, &hw->buses, node) {
struct pci_bus *bus = sys->bus;
/* /*
* Assign any unassigned resources. * Size the bridge windows.
*/ */
pci_assign_unassigned_resources(); pci_bus_size_bridges(bus);
pci_fixup_irqs(pcibios_swizzle, pcibios_map_irq);
/*
* Assign resources.
*/
pci_bus_assign_resources(bus);
/*
* Tell drivers about devices found.
*/
pci_bus_add_devices(bus);
}
} }
char * __init pcibios_setup(char *str) char * __init pcibios_setup(char *str)
......
...@@ -562,7 +562,8 @@ ecard_dump_irq_state(ecard_t *ec) ...@@ -562,7 +562,8 @@ ecard_dump_irq_state(ecard_t *ec)
static void ecard_check_lockup(struct irqdesc *desc) static void ecard_check_lockup(struct irqdesc *desc)
{ {
static int last, lockup; static unsigned long last;
static int lockup;
ecard_t *ec; ecard_t *ec;
/* /*
......
...@@ -89,7 +89,7 @@ static inline void do_profile(struct pt_regs *regs) ...@@ -89,7 +89,7 @@ static inline void do_profile(struct pt_regs *regs)
} }
} }
static long next_rtc_update; static unsigned long next_rtc_update;
/* /*
* If we have an externally synchronized linux clock, then update * If we have an externally synchronized linux clock, then update
......
...@@ -326,7 +326,7 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, int proc_mode) ...@@ -326,7 +326,7 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, int proc_mode)
dump_mem(KERN_CRIT "Vectors: ", vectors, vectors + 0x40); dump_mem(KERN_CRIT "Vectors: ", vectors, vectors + 0x40);
dump_mem(KERN_CRIT "Stubs: ", vectors + 0x200, vectors + 0x4b8); dump_mem(KERN_CRIT "Stubs: ", vectors + 0x200, vectors + 0x4b8);
die("Oops", regs, 0); die("Oops - bad mode", regs, 0);
local_irq_disable(); local_irq_disable();
panic("bad mode"); panic("bad mode");
} }
...@@ -354,7 +354,7 @@ static int bad_syscall(int n, struct pt_regs *regs) ...@@ -354,7 +354,7 @@ static int bad_syscall(int n, struct pt_regs *regs)
(thumb_mode(regs) ? 2 : 4); (thumb_mode(regs) ? 2 : 4);
force_sig_info(SIGILL, &info, current); force_sig_info(SIGILL, &info, current);
die_if_kernel("Oops", regs, n); die_if_kernel("Oops - bad syscall", regs, n);
return regs->ARM_r0; return regs->ARM_r0;
} }
...@@ -472,7 +472,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) ...@@ -472,7 +472,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
(thumb_mode(regs) ? 2 : 4); (thumb_mode(regs) ? 2 : 4);
force_sig_info(SIGILL, &info, current); force_sig_info(SIGILL, &info, current);
die_if_kernel("Oops", regs, no); die_if_kernel("Oops - bad syscall(2)", regs, no);
return 0; return 0;
} }
......
...@@ -8,19 +8,22 @@ ...@@ -8,19 +8,22 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/init.h> #include <linux/init.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/hardware/iomd.h> #include <asm/hardware/iomd.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/page.h> #include <asm/irq.h>
#include <asm/proc/domain.h>
#include <asm/setup.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
static void cl7500_mask_irq_ack_a(unsigned int irq) static void cl7500_ack_irq_a(unsigned int irq)
{ {
unsigned int val, mask; unsigned int val, mask;
...@@ -48,6 +51,12 @@ static void cl7500_unmask_irq_a(unsigned int irq) ...@@ -48,6 +51,12 @@ static void cl7500_unmask_irq_a(unsigned int irq)
iomd_writeb(val | mask, IOMD_IRQMASKA); iomd_writeb(val | mask, IOMD_IRQMASKA);
} }
static struct irqchip clps7500_a_chip = {
.ack = cl7500_ack_irq_a,
.mask = cl7500_mask_irq_a,
.unmask = cl7500_unmask_irq_a,
};
static void cl7500_mask_irq_b(unsigned int irq) static void cl7500_mask_irq_b(unsigned int irq)
{ {
unsigned int val, mask; unsigned int val, mask;
...@@ -66,6 +75,12 @@ static void cl7500_unmask_irq_b(unsigned int irq) ...@@ -66,6 +75,12 @@ static void cl7500_unmask_irq_b(unsigned int irq)
iomd_writeb(val | mask, IOMD_IRQMASKB); iomd_writeb(val | mask, IOMD_IRQMASKB);
} }
static struct irqchip clps7500_b_chip = {
.ack = cl7500_mask_irq_b,
.mask = cl7500_mask_irq_b,
.unmask = cl7500_unmask_irq_b,
};
static void cl7500_mask_irq_c(unsigned int irq) static void cl7500_mask_irq_c(unsigned int irq)
{ {
unsigned int val, mask; unsigned int val, mask;
...@@ -84,6 +99,11 @@ static void cl7500_unmask_irq_c(unsigned int irq) ...@@ -84,6 +99,11 @@ static void cl7500_unmask_irq_c(unsigned int irq)
iomd_writeb(val | mask, IOMD_IRQMASKC); iomd_writeb(val | mask, IOMD_IRQMASKC);
} }
static struct irqchip clps7500_c_chip = {
.ack = cl7500_mask_irq_c,
.mask = cl7500_mask_irq_c,
.unmask = cl7500_unmask_irq_c,
};
static void cl7500_mask_irq_d(unsigned int irq) static void cl7500_mask_irq_d(unsigned int irq)
{ {
...@@ -103,6 +123,12 @@ static void cl7500_unmask_irq_d(unsigned int irq) ...@@ -103,6 +123,12 @@ static void cl7500_unmask_irq_d(unsigned int irq)
iomd_writeb(val | mask, IOMD_IRQMASKD); iomd_writeb(val | mask, IOMD_IRQMASKD);
} }
static struct irqchip clps7500_d_chip = {
.ack = cl7500_mask_irq_d,
.mask = cl7500_mask_irq_d,
.unmask = cl7500_unmask_irq_d,
};
static void cl7500_mask_irq_dma(unsigned int irq) static void cl7500_mask_irq_dma(unsigned int irq)
{ {
unsigned int val, mask; unsigned int val, mask;
...@@ -121,6 +147,12 @@ static void cl7500_unmask_irq_dma(unsigned int irq) ...@@ -121,6 +147,12 @@ static void cl7500_unmask_irq_dma(unsigned int irq)
iomd_writeb(val | mask, IOMD_DMAMASK); iomd_writeb(val | mask, IOMD_DMAMASK);
} }
static struct irqchip clps7500_dma_chip = {
.ack = cl7500_mask_irq_dma,
.mask = cl7500_mask_irq_dma,
.unmask = cl7500_unmask_irq_dma,
};
static void cl7500_mask_irq_fiq(unsigned int irq) static void cl7500_mask_irq_fiq(unsigned int irq)
{ {
unsigned int val, mask; unsigned int val, mask;
...@@ -139,6 +171,22 @@ static void cl7500_unmask_irq_fiq(unsigned int irq) ...@@ -139,6 +171,22 @@ static void cl7500_unmask_irq_fiq(unsigned int irq)
iomd_writeb(val | mask, IOMD_FIQMASK); iomd_writeb(val | mask, IOMD_FIQMASK);
} }
static struct irqchip clps7500_fiq_chip = {
.ack = cl7500_mask_irq_fiq,
.mask = cl7500_mask_irq_fiq,
.unmask = cl7500_unmask_irq_fiq,
};
static void cl7500_no_action(unsigned int irq)
{
}
static struct irqchip clps7500_no_chip = {
.ack = cl7500_no_action,
.mask = cl7500_no_action,
.unmask = cl7500_no_action,
};
static void no_action(int cpl, void *dev_id, struct pt_regs *regs) static void no_action(int cpl, void *dev_id, struct pt_regs *regs)
{ {
} }
...@@ -147,7 +195,7 @@ static struct irqaction irq_isa = { no_action, 0, 0, "isa", NULL, NULL }; ...@@ -147,7 +195,7 @@ static struct irqaction irq_isa = { no_action, 0, 0, "isa", NULL, NULL };
static void __init clps7500_init_irq(void) static void __init clps7500_init_irq(void)
{ {
int irq; unsigned int irq, flags;
iomd_writeb(0, IOMD_IRQMASKA); iomd_writeb(0, IOMD_IRQMASKA);
iomd_writeb(0, IOMD_IRQMASKB); iomd_writeb(0, IOMD_IRQMASKB);
...@@ -155,64 +203,58 @@ static void __init clps7500_init_irq(void) ...@@ -155,64 +203,58 @@ static void __init clps7500_init_irq(void)
iomd_writeb(0, IOMD_DMAMASK); iomd_writeb(0, IOMD_DMAMASK);
for (irq = 0; irq < NR_IRQS; irq++) { for (irq = 0; irq < NR_IRQS; irq++) {
flags = IRQF_VALID;
if (irq <= 6 || (irq >= 9 && irq <= 15) ||
(irq >= 48 && irq <= 55))
flags |= IRQF_PROBE;
switch (irq) { switch (irq) {
case 0 ... 6: case 0 ... 7:
irq_desc[irq].probe_ok = 1; set_irq_chip(irq, &clps7500_a_chip);
case 7: set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].valid = 1; set_irq_flags(irq, flags);
irq_desc[irq].mask_ack = cl7500_mask_irq_ack_a;
irq_desc[irq].mask = cl7500_mask_irq_a;
irq_desc[irq].unmask = cl7500_unmask_irq_a;
break; break;
case 9 ... 15: case 8 ... 15:
irq_desc[irq].probe_ok = 1; set_irq_chip(irq, &clps7500_b_chip);
case 8: set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].valid = 1; set_irq_flags(irq, flags);
irq_desc[irq].mask_ack = cl7500_mask_irq_b;
irq_desc[irq].mask = cl7500_mask_irq_b;
irq_desc[irq].unmask = cl7500_unmask_irq_b;
break; break;
case 16 ... 22: case 16 ... 22:
irq_desc[irq].valid = 1; set_irq_chip(irq, &clps7500_dma_chip);
irq_desc[irq].mask_ack = cl7500_mask_irq_dma; set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].mask = cl7500_mask_irq_dma; set_irq_flags(irq, flags);
irq_desc[irq].unmask = cl7500_unmask_irq_dma;
break; break;
case 24 ... 31: case 24 ... 31:
irq_desc[irq].valid = 1; set_irq_chip(irq, &clps7500_c_chip);
irq_desc[irq].mask_ack = cl7500_mask_irq_c; set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].mask = cl7500_mask_irq_c; set_irq_flags(irq, flags);
irq_desc[irq].unmask = cl7500_unmask_irq_c;
break; break;
case 40 ... 47: case 40 ... 47:
irq_desc[irq].valid = 1; set_irq_chip(irq, &clps7500_d_chip);
irq_desc[irq].mask_ack = cl7500_mask_irq_d; set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].mask = cl7500_mask_irq_d; set_irq_flags(irq, flags);
irq_desc[irq].unmask = cl7500_unmask_irq_d;
break; break;
case 48 ... 55: case 48 ... 55:
irq_desc[irq].valid = 1; set_irq_chip(irq, &clps7500_no_chip);
irq_desc[irq].probe_ok = 1; set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].mask_ack = no_action; set_irq_flags(irq, flags);
irq_desc[irq].mask = no_action;
irq_desc[irq].unmask = no_action;
break; break;
case 64 ... 72: case 64 ... 72:
irq_desc[irq].valid = 1; set_irq_chip(irq, &clps7500_fiq_chip);
irq_desc[irq].mask_ack = cl7500_mask_irq_fiq; set_irq_handler(irq, do_level_IRQ);
irq_desc[irq].mask = cl7500_mask_irq_fiq; set_irq_flags(irq, flags);
irq_desc[irq].unmask = cl7500_unmask_irq_fiq;
break; break;
} }
} }
setup_arm_irq(IRQ_ISA, &irq_isa); setup_irq(IRQ_ISA, &irq_isa);
} }
static struct map_desc cl7500_io_desc[] __initdata = { static struct map_desc cl7500_io_desc[] __initdata = {
......
...@@ -39,7 +39,8 @@ static void ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -39,7 +39,8 @@ static void ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
* @data: 16-bit, MSB justified data to write. * @data: 16-bit, MSB justified data to write.
* *
* Wait for a free entry in the SSP transmit FIFO, and write a data * Wait for a free entry in the SSP transmit FIFO, and write a data
* word to the SSP port. * word to the SSP port. Wait for the SSP port to start sending
* the data.
* *
* The caller is expected to perform the necessary locking. * The caller is expected to perform the necessary locking.
* *
...@@ -54,6 +55,9 @@ int ssp_write_word(u16 data) ...@@ -54,6 +55,9 @@ int ssp_write_word(u16 data)
Ser4SSDR = data; Ser4SSDR = data;
while (!(Ser4SSSR & SSSR_BSY))
cpu_relax();
return 0; return 0;
} }
......
...@@ -2521,19 +2521,19 @@ void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs) ...@@ -2521,19 +2521,19 @@ void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
*/ */
int acornscsi_queuecmd(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) int acornscsi_queuecmd(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
{ {
AS_Host *host = (AS_Host *)SCpnt->host->hostdata; AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata;
if (!done) { if (!done) {
/* there should be some way of rejecting errors like this without panicing... */ /* there should be some way of rejecting errors like this without panicing... */
panic("scsi%d: queuecommand called with NULL done function [cmd=%p]", panic("scsi%d: queuecommand called with NULL done function [cmd=%p]",
SCpnt->host->host_no, SCpnt); host->host->host_no, SCpnt);
return -EINVAL; return -EINVAL;
} }
#if (DEBUG & DEBUG_NO_WRITE) #if (DEBUG & DEBUG_NO_WRITE)
if (acornscsi_cmdtype(SCpnt->cmnd[0]) == CMD_WRITE && (NO_WRITE & (1 << SCpnt->device->id))) { if (acornscsi_cmdtype(SCpnt->cmnd[0]) == CMD_WRITE && (NO_WRITE & (1 << SCpnt->device->id))) {
printk(KERN_CRIT "scsi%d.%c: WRITE attempted with NO_WRITE flag set\n", printk(KERN_CRIT "scsi%d.%c: WRITE attempted with NO_WRITE flag set\n",
SCpnt->host->host_no, '0' + SCpnt->device->id); host->host->host_no, '0' + SCpnt->device->id);
SCpnt->result = DID_NO_CONNECT << 16; SCpnt->result = DID_NO_CONNECT << 16;
done(SCpnt); done(SCpnt);
return 0; return 0;
...@@ -2695,7 +2695,7 @@ acornscsi_do_abort(AS_Host *host, Scsi_Cmnd *SCpnt) ...@@ -2695,7 +2695,7 @@ acornscsi_do_abort(AS_Host *host, Scsi_Cmnd *SCpnt)
*/ */
int acornscsi_abort(Scsi_Cmnd *SCpnt) int acornscsi_abort(Scsi_Cmnd *SCpnt)
{ {
AS_Host *host = (AS_Host *) SCpnt->host->hostdata; AS_Host *host = (AS_Host *) SCpnt->device->host->hostdata;
int result; int result;
host->stats.aborts += 1; host->stats.aborts += 1;
...@@ -2782,7 +2782,7 @@ int acornscsi_abort(Scsi_Cmnd *SCpnt) ...@@ -2782,7 +2782,7 @@ int acornscsi_abort(Scsi_Cmnd *SCpnt)
*/ */
int acornscsi_reset(Scsi_Cmnd *SCpnt, unsigned int reset_flags) int acornscsi_reset(Scsi_Cmnd *SCpnt, unsigned int reset_flags)
{ {
AS_Host *host = (AS_Host *)SCpnt->host->hostdata; AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata;
Scsi_Cmnd *SCptr; Scsi_Cmnd *SCptr;
host->stats.resets += 1; host->stats.resets += 1;
......
...@@ -68,8 +68,7 @@ static inline void put_next_SCp_byte(Scsi_Pointer *SCp, unsigned char c) ...@@ -68,8 +68,7 @@ static inline void put_next_SCp_byte(Scsi_Pointer *SCp, unsigned char c)
static inline void init_SCp(Scsi_Cmnd *SCpnt) static inline void init_SCp(Scsi_Cmnd *SCpnt)
{ {
SCpnt->SCp.Message = 0; memset(&SCpnt->SCp, 0, sizeof(struct scsi_pointer));
SCpnt->SCp.Status = 0;
if (SCpnt->use_sg) { if (SCpnt->use_sg) {
unsigned long len = 0; unsigned long len = 0;
...@@ -97,8 +96,6 @@ static inline void init_SCp(Scsi_Cmnd *SCpnt) ...@@ -97,8 +96,6 @@ static inline void init_SCp(Scsi_Cmnd *SCpnt)
SCpnt->request_bufflen = len; SCpnt->request_bufflen = len;
#endif #endif
} else { } else {
SCpnt->SCp.buffer = NULL;
SCpnt->SCp.buffers_residual = 0;
SCpnt->SCp.ptr = (unsigned char *)SCpnt->request_buffer; SCpnt->SCp.ptr = (unsigned char *)SCpnt->request_buffer;
SCpnt->SCp.this_residual = SCpnt->request_bufflen; SCpnt->SCp.this_residual = SCpnt->request_bufflen;
} }
......
...@@ -354,6 +354,7 @@ static int erase_block(int nBlock) ...@@ -354,6 +354,7 @@ static int erase_block(int nBlock)
{ {
volatile unsigned int c1; volatile unsigned int c1;
volatile unsigned char *pWritePtr; volatile unsigned char *pWritePtr;
unsigned long timeout;
int temp, temp1; int temp, temp1;
/* /*
...@@ -406,9 +407,9 @@ static int erase_block(int nBlock) ...@@ -406,9 +407,9 @@ static int erase_block(int nBlock)
/* /*
* wait while erasing in process (up to 10 sec) * wait while erasing in process (up to 10 sec)
*/ */
temp = jiffies + 10 * HZ; timeout = jiffies + 10 * HZ;
c1 = 0; c1 = 0;
while (!(c1 & 0x80) && time_before(jiffies, temp)) { while (!(c1 & 0x80) && time_before(jiffies, timeout)) {
flash_wait(HZ / 100); flash_wait(HZ / 100);
/* /*
* read any address * read any address
...@@ -466,8 +467,8 @@ static int write_block(unsigned long p, const char *buf, int count) ...@@ -466,8 +467,8 @@ static int write_block(unsigned long p, const char *buf, int count)
unsigned char *pWritePtr; unsigned char *pWritePtr;
unsigned int uAddress; unsigned int uAddress;
unsigned int offset; unsigned int offset;
unsigned int timeout; unsigned long timeout;
unsigned int timeout1; unsigned long timeout1;
/* /*
* red LED == write * red LED == write
......
...@@ -239,4 +239,15 @@ DECLARE_IO(int,l,"") ...@@ -239,4 +239,15 @@ DECLARE_IO(int,l,"")
/* the following macro is deprecated */ /* the following macro is deprecated */
#define ioaddr(port) __ioaddr((port)) #define ioaddr(port) __ioaddr((port))
#define insb(p,d,l) __raw_readsb(__ioaddr(p),d,l)
#define insw(p,d,l) __raw_readsw(__ioaddr(p),d,l)
#define outsb(p,d,l) __raw_writesb(__ioaddr(p),d,l)
#define outsw(p,d,l) __raw_writesw(__ioaddr(p),d,l)
/*
* 1:1 mapping for ioremapped regions.
*/
#define __mem_pci(x) (x)
#endif #endif
...@@ -49,7 +49,6 @@ static unsigned long pxa_gettimeoffset (void) ...@@ -49,7 +49,6 @@ static unsigned long pxa_gettimeoffset (void)
static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{ {
long flags;
int next_match; int next_match;
do_profile(regs); do_profile(regs);
...@@ -63,11 +62,9 @@ static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -63,11 +62,9 @@ static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
do { do {
do_leds(); do_leds();
do_set_rtc(); do_set_rtc();
local_irq_save( flags );
do_timer(regs); do_timer(regs);
OSSR = OSSR_M0; /* Clear match on timer 0 */ OSSR = OSSR_M0; /* Clear match on timer 0 */
next_match = (OSMR0 += LATCH); next_match = (OSMR0 += LATCH);
local_irq_restore( flags );
} while( (signed long)(next_match - OSCR) <= 0 ); } while( (signed long)(next_match - OSCR) <= 0 );
} }
......
...@@ -4,18 +4,12 @@ ...@@ -4,18 +4,12 @@
#ifndef __ASMARM_CACHE_H #ifndef __ASMARM_CACHE_H
#define __ASMARM_CACHE_H #define __ASMARM_CACHE_H
#define L1_CACHE_BYTES 32 #define L1_CACHE_SHIFT 5
#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)) #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
#define SMP_CACHE_BYTES L1_CACHE_BYTES
#ifdef MODULE /*
#define __cacheline_aligned __attribute__((__aligned__(L1_CACHE_BYTES))) * largest L1 which this arch supports
#else */
#define __cacheline_aligned \ #define L1_CACHE_SHIFT_MAX 5
__attribute__((__aligned__(L1_CACHE_BYTES), \
__section__(".data.cacheline_aligned")))
#endif
#define L1_CACHE_SHIFT_MAX 5 /* largest L1 which this arch supports */
#endif #endif
/* /*
* linux/arch/arm/boot/compressed/head-netwinder.S * ssp.h
* *
* Copyright (C) 2000-2002 Russell King * Copyright (C) 2003 Russell King, All Rights Reserved.
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
.section ".start", "ax" #ifndef SSP_H
#define SSP_H
mov r7, #5 struct ssp_state {
mov r8, #0 unsigned int cr0;
unsigned int cr1;
};
int ssp_write_word(u16 data);
int ssp_read_word(void);
void ssp_flush(void);
void ssp_enable(void);
void ssp_disable(void);
void ssp_save_state(struct ssp_state *ssp);
void ssp_restore_state(struct ssp_state *ssp);
int ssp_init(void);
void ssp_exit(void);
#endif
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
struct tag; struct tag;
struct meminfo;
struct machine_desc { struct machine_desc {
/* /*
......
...@@ -40,7 +40,6 @@ struct dma_struct { ...@@ -40,7 +40,6 @@ struct dma_struct {
unsigned int dma_base; /* Controller base address */ unsigned int dma_base; /* Controller base address */
int dma_irq; /* Controller IRQ */ int dma_irq; /* Controller IRQ */
int state; /* Controller state */
struct scatterlist cur_sg; /* Current controller buffer */ struct scatterlist cur_sg; /* Current controller buffer */
struct dma_ops *d_ops; struct dma_ops *d_ops;
......
...@@ -12,6 +12,7 @@ struct pci_sys_data; ...@@ -12,6 +12,7 @@ struct pci_sys_data;
struct pci_bus; struct pci_bus;
struct hw_pci { struct hw_pci {
struct list_head buses;
int nr_controllers; int nr_controllers;
int (*setup)(int nr, struct pci_sys_data *); int (*setup)(int nr, struct pci_sys_data *);
struct pci_bus *(*scan)(int nr, struct pci_sys_data *); struct pci_bus *(*scan)(int nr, struct pci_sys_data *);
...@@ -25,6 +26,7 @@ struct hw_pci { ...@@ -25,6 +26,7 @@ struct hw_pci {
* Per-controller structure * Per-controller structure
*/ */
struct pci_sys_data { struct pci_sys_data {
struct list_head node;
int busnr; /* primary bus number */ int busnr; /* primary bus number */
unsigned long mem_offset; /* bus->cpu memory mapping offset */ unsigned long mem_offset; /* bus->cpu memory mapping offset */
unsigned long io_offset; /* bus->cpu IO mapping offset */ unsigned long io_offset; /* bus->cpu IO mapping offset */
......
...@@ -63,6 +63,7 @@ extern unsigned long cr_alignment; /* defined in entry-armv.S */ ...@@ -63,6 +63,7 @@ extern unsigned long cr_alignment; /* defined in entry-armv.S */
#define local_irq_save(x) \ #define local_irq_save(x) \
({ \ ({ \
unsigned long temp; \ unsigned long temp; \
(void) (&temp == &x); \
__asm__ __volatile__( \ __asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_save\n" \ "mrs %0, cpsr @ local_irq_save\n" \
" orr %1, %0, #128\n" \ " orr %1, %0, #128\n" \
......
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