提交 881bcabb 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k

Pull m68k updates from Geert Uytterhoeven.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k: Setup CROSS_COMPILE at the top
  m68k: Correct the Atari ALLOWINT definition
  m68k/video: Create <asm/vga.h>
  m68k: Make sure {read,write}s[bwl]() are always defined
  m68k/mm: Port OOM changes to do_page_fault()
  scsi/atari: Make more functions static
  scsi/atari: Revive "atascsi=" setup option
  net/ariadne: Improve debug prints
  m68k/atari: Change VME irq numbers from unsigned long to unsigned int
  m68k/amiga: Use arch_initcall() for registering platform devices
  m68k/amiga: Add error checks when registering platform devices
  m68k/amiga: Mark z_dev_present() __init
  m68k: Remove unused MAX_NOINT_IPL definition
...@@ -16,6 +16,13 @@ ...@@ -16,6 +16,13 @@
KBUILD_DEFCONFIG := multi_defconfig KBUILD_DEFCONFIG := multi_defconfig
ifneq ($(SUBARCH),$(ARCH))
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(call cc-cross-prefix, \
m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
endif
endif
# #
# Enable processor type. Ordering of these is important - we want to # Enable processor type. Ordering of these is important - we want to
# use the minimum processor type of the range we support. The logic # use the minimum processor type of the range we support. The logic
...@@ -62,12 +69,6 @@ endif ...@@ -62,12 +69,6 @@ endif
LDFLAGS := -m m68kelf LDFLAGS := -m m68kelf
KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
ifneq ($(SUBARCH),$(ARCH))
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(call cc-cross-prefix, \
m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
endif
endif
ifdef CONFIG_SUN3 ifdef CONFIG_SUN3
LDFLAGS_vmlinux = -N LDFLAGS_vmlinux = -N
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* for more details. * for more details.
*/ */
#include <linux/err.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/zorro.h> #include <linux/zorro.h>
...@@ -46,18 +47,25 @@ static const struct resource zorro_resources[] __initconst = { ...@@ -46,18 +47,25 @@ static const struct resource zorro_resources[] __initconst = {
static int __init amiga_init_bus(void) static int __init amiga_init_bus(void)
{ {
struct platform_device *pdev;
unsigned int n;
if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO)) if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
return -ENODEV; return -ENODEV;
platform_device_register_simple("amiga-zorro", -1, zorro_resources, n = AMIGAHW_PRESENT(ZORRO3) ? 4 : 2;
AMIGAHW_PRESENT(ZORRO3) ? 4 : 2); pdev = platform_device_register_simple("amiga-zorro", -1,
zorro_resources, n);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
return 0; return 0;
} }
subsys_initcall(amiga_init_bus); subsys_initcall(amiga_init_bus);
static int z_dev_present(zorro_id id) static int __init z_dev_present(zorro_id id)
{ {
unsigned int i; unsigned int i;
...@@ -126,72 +134,122 @@ static const struct resource amiga_rtc_resource __initconst = { ...@@ -126,72 +134,122 @@ static const struct resource amiga_rtc_resource __initconst = {
static int __init amiga_init_devices(void) static int __init amiga_init_devices(void)
{ {
struct platform_device *pdev; struct platform_device *pdev;
int error;
if (!MACH_IS_AMIGA) if (!MACH_IS_AMIGA)
return -ENODEV; return -ENODEV;
/* video hardware */ /* video hardware */
if (AMIGAHW_PRESENT(AMI_VIDEO)) if (AMIGAHW_PRESENT(AMI_VIDEO)) {
platform_device_register_simple("amiga-video", -1, NULL, 0); pdev = platform_device_register_simple("amiga-video", -1, NULL,
0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
/* sound hardware */ /* sound hardware */
if (AMIGAHW_PRESENT(AMI_AUDIO)) if (AMIGAHW_PRESENT(AMI_AUDIO)) {
platform_device_register_simple("amiga-audio", -1, NULL, 0); pdev = platform_device_register_simple("amiga-audio", -1, NULL,
0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
/* storage interfaces */ /* storage interfaces */
if (AMIGAHW_PRESENT(AMI_FLOPPY)) if (AMIGAHW_PRESENT(AMI_FLOPPY)) {
platform_device_register_simple("amiga-floppy", -1, NULL, 0); pdev = platform_device_register_simple("amiga-floppy", -1,
NULL, 0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(A3000_SCSI)) if (AMIGAHW_PRESENT(A3000_SCSI)) {
platform_device_register_simple("amiga-a3000-scsi", -1, pdev = platform_device_register_simple("amiga-a3000-scsi", -1,
&a3000_scsi_resource, 1); &a3000_scsi_resource, 1);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(A4000_SCSI)) if (AMIGAHW_PRESENT(A4000_SCSI)) {
platform_device_register_simple("amiga-a4000t-scsi", -1, pdev = platform_device_register_simple("amiga-a4000t-scsi", -1,
&a4000t_scsi_resource, 1); &a4000t_scsi_resource,
1);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(A1200_IDE) || if (AMIGAHW_PRESENT(A1200_IDE) ||
z_dev_present(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE)) { z_dev_present(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE)) {
pdev = platform_device_register_simple("amiga-gayle-ide", -1, pdev = platform_device_register_simple("amiga-gayle-ide", -1,
&a1200_ide_resource, 1); &a1200_ide_resource, 1);
platform_device_add_data(pdev, &a1200_ide_pdata, if (IS_ERR(pdev))
sizeof(a1200_ide_pdata)); return PTR_ERR(pdev);
error = platform_device_add_data(pdev, &a1200_ide_pdata,
sizeof(a1200_ide_pdata));
if (error)
return error;
} }
if (AMIGAHW_PRESENT(A4000_IDE)) { if (AMIGAHW_PRESENT(A4000_IDE)) {
pdev = platform_device_register_simple("amiga-gayle-ide", -1, pdev = platform_device_register_simple("amiga-gayle-ide", -1,
&a4000_ide_resource, 1); &a4000_ide_resource, 1);
platform_device_add_data(pdev, &a4000_ide_pdata, if (IS_ERR(pdev))
sizeof(a4000_ide_pdata)); return PTR_ERR(pdev);
error = platform_device_add_data(pdev, &a4000_ide_pdata,
sizeof(a4000_ide_pdata));
if (error)
return error;
} }
/* other I/O hardware */ /* other I/O hardware */
if (AMIGAHW_PRESENT(AMI_KEYBOARD)) if (AMIGAHW_PRESENT(AMI_KEYBOARD)) {
platform_device_register_simple("amiga-keyboard", -1, NULL, 0); pdev = platform_device_register_simple("amiga-keyboard", -1,
NULL, 0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(AMI_MOUSE)) if (AMIGAHW_PRESENT(AMI_MOUSE)) {
platform_device_register_simple("amiga-mouse", -1, NULL, 0); pdev = platform_device_register_simple("amiga-mouse", -1, NULL,
0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(AMI_SERIAL)) if (AMIGAHW_PRESENT(AMI_SERIAL)) {
platform_device_register_simple("amiga-serial", -1, NULL, 0); pdev = platform_device_register_simple("amiga-serial", -1,
NULL, 0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(AMI_PARALLEL)) if (AMIGAHW_PRESENT(AMI_PARALLEL)) {
platform_device_register_simple("amiga-parallel", -1, NULL, 0); pdev = platform_device_register_simple("amiga-parallel", -1,
NULL, 0);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
/* real time clocks */ /* real time clocks */
if (AMIGAHW_PRESENT(A2000_CLK)) if (AMIGAHW_PRESENT(A2000_CLK)) {
platform_device_register_simple("rtc-msm6242", -1, pdev = platform_device_register_simple("rtc-msm6242", -1,
&amiga_rtc_resource, 1); &amiga_rtc_resource, 1);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
if (AMIGAHW_PRESENT(A3000_CLK)) if (AMIGAHW_PRESENT(A3000_CLK)) {
platform_device_register_simple("rtc-rp5c01", -1, pdev = platform_device_register_simple("rtc-rp5c01", -1,
&amiga_rtc_resource, 1); &amiga_rtc_resource, 1);
if (IS_ERR(pdev))
return PTR_ERR(pdev);
}
return 0; return 0;
} }
device_initcall(amiga_init_devices); arch_initcall(amiga_init_devices);
...@@ -206,7 +206,7 @@ void __init atari_init_IRQ(void) ...@@ -206,7 +206,7 @@ void __init atari_init_IRQ(void)
* hardware with a programmable int vector (probably a VME board). * hardware with a programmable int vector (probably a VME board).
*/ */
unsigned long atari_register_vme_int(void) unsigned int atari_register_vme_int(void)
{ {
int i; int i;
...@@ -223,7 +223,7 @@ unsigned long atari_register_vme_int(void) ...@@ -223,7 +223,7 @@ unsigned long atari_register_vme_int(void)
EXPORT_SYMBOL(atari_register_vme_int); EXPORT_SYMBOL(atari_register_vme_int);
void atari_unregister_vme_int(unsigned long irq) void atari_unregister_vme_int(unsigned int irq)
{ {
if (irq >= VME_SOURCE_BASE && irq < VME_SOURCE_BASE + VME_MAX_SOURCES) { if (irq >= VME_SOURCE_BASE && irq < VME_SOURCE_BASE + VME_MAX_SOURCES) {
irq -= VME_SOURCE_BASE; irq -= VME_SOURCE_BASE;
......
...@@ -198,7 +198,7 @@ static inline int atari_irq_pending( unsigned irq ) ...@@ -198,7 +198,7 @@ static inline int atari_irq_pending( unsigned irq )
return( get_mfp_bit( irq, MFP_PENDING ) ); return( get_mfp_bit( irq, MFP_PENDING ) );
} }
unsigned long atari_register_vme_int( void ); unsigned int atari_register_vme_int(void);
void atari_unregister_vme_int( unsigned long ); void atari_unregister_vme_int(unsigned int);
#endif /* linux/atariints.h */ #endif /* linux/atariints.h */
...@@ -33,13 +33,11 @@ ...@@ -33,13 +33,11 @@
/* the following macro is used when enabling interrupts */ /* the following macro is used when enabling interrupts */
#if defined(MACH_ATARI_ONLY) #if defined(MACH_ATARI_ONLY)
/* block out HSYNC on the atari */ /* block out HSYNC = ipl 2 on the atari */
#define ALLOWINT (~0x400) #define ALLOWINT (~0x500)
#define MAX_NOINT_IPL 3
#else #else
/* portable version */ /* portable version */
#define ALLOWINT (~0x700) #define ALLOWINT (~0x700)
#define MAX_NOINT_IPL 0
#endif /* machine compilation types */ #endif /* machine compilation types */
#ifdef __ASSEMBLY__ #ifdef __ASSEMBLY__
......
...@@ -278,6 +278,13 @@ static inline void isa_delay(void) ...@@ -278,6 +278,13 @@ static inline void isa_delay(void)
#define readl(addr) in_le32(addr) #define readl(addr) in_le32(addr)
#define writel(val,addr) out_le32((addr),(val)) #define writel(val,addr) out_le32((addr),(val))
#define readsb(port, buf, nr) raw_insb((port), (u8 *)(buf), (nr))
#define readsw(port, buf, nr) raw_insw((port), (u16 *)(buf), (nr))
#define readsl(port, buf, nr) raw_insl((port), (u32 *)(buf), (nr))
#define writesb(port, buf, nr) raw_outsb((port), (u8 *)(buf), (nr))
#define writesw(port, buf, nr) raw_outsw((port), (u16 *)(buf), (nr))
#define writesl(port, buf, nr) raw_outsl((port), (u32 *)(buf), (nr))
#define mmiowb() #define mmiowb()
static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size) static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
......
#ifndef _ASM_M68K_VGA_H
#define _ASM_M68K_VGA_H
#include <asm/raw_io.h>
/*
* FIXME
* Ugh, we don't have PCI space, so map readb() and friends to use raw I/O
* accessors, which are identical to the z_*() Zorro bus accessors.
* This should make cirrusfb work again on Amiga
*/
#undef inb_p
#undef inw_p
#undef outb_p
#undef outw
#undef readb
#undef writeb
#undef writew
#define inb_p(port) 0
#define inw_p(port) 0
#define outb_p(port, val) do { } while (0)
#define outw(port, val) do { } while (0)
#define readb raw_inb
#define writeb raw_outb
#define writew raw_outw
#endif /* _ASM_M68K_VGA_H */
...@@ -72,7 +72,8 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -72,7 +72,8 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
{ {
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct * vma; struct vm_area_struct * vma;
int write, fault; int fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
#ifdef DEBUG #ifdef DEBUG
printk ("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n", printk ("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
...@@ -87,6 +88,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -87,6 +88,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
if (in_atomic() || !mm) if (in_atomic() || !mm)
goto no_context; goto no_context;
retry:
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
vma = find_vma(mm, address); vma = find_vma(mm, address);
...@@ -117,14 +119,13 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -117,14 +119,13 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
#ifdef DEBUG #ifdef DEBUG
printk("do_page_fault: good_area\n"); printk("do_page_fault: good_area\n");
#endif #endif
write = 0;
switch (error_code & 3) { switch (error_code & 3) {
default: /* 3: write, present */ default: /* 3: write, present */
/* fall through */ /* fall through */
case 2: /* write, not present */ case 2: /* write, not present */
if (!(vma->vm_flags & VM_WRITE)) if (!(vma->vm_flags & VM_WRITE))
goto acc_err; goto acc_err;
write++; flags |= FAULT_FLAG_WRITE;
break; break;
case 1: /* read, present */ case 1: /* read, present */
goto acc_err; goto acc_err;
...@@ -139,10 +140,14 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -139,10 +140,14 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* the fault. * the fault.
*/ */
fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0); fault = handle_mm_fault(mm, vma, address, flags);
#ifdef DEBUG #ifdef DEBUG
printk("handle_mm_fault returns %d\n",fault); printk("handle_mm_fault returns %d\n",fault);
#endif #endif
if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
return 0;
if (unlikely(fault & VM_FAULT_ERROR)) { if (unlikely(fault & VM_FAULT_ERROR)) {
if (fault & VM_FAULT_OOM) if (fault & VM_FAULT_OOM)
goto out_of_memory; goto out_of_memory;
...@@ -150,10 +155,31 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -150,10 +155,31 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
goto bus_err; goto bus_err;
BUG(); BUG();
} }
if (fault & VM_FAULT_MAJOR)
current->maj_flt++; /*
else * Major/minor page fault accounting is only done on the
current->min_flt++; * initial attempt. If we go through a retry, it is extremely
* likely that the page will be found in page cache at that point.
*/
if (flags & FAULT_FLAG_ALLOW_RETRY) {
if (fault & VM_FAULT_MAJOR)
current->maj_flt++;
else
current->min_flt++;
if (fault & VM_FAULT_RETRY) {
/* Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk
* of starvation. */
flags &= ~FAULT_FLAG_ALLOW_RETRY;
/*
* No need to up_read(&mm->mmap_sem) as we would
* have already released it in __lock_page_or_retry
* in mm/filemap.c.
*/
goto retry;
}
}
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
return 0; return 0;
......
...@@ -213,10 +213,10 @@ static int ariadne_rx(struct net_device *dev) ...@@ -213,10 +213,10 @@ static int ariadne_rx(struct net_device *dev)
(const void *)priv->rx_buff[entry], (const void *)priv->rx_buff[entry],
pkt_len); pkt_len);
skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, dev);
netdev_dbg(dev, "RX pkt type 0x%04x from %pM to %pM data 0x%08x len %d\n", netdev_dbg(dev, "RX pkt type 0x%04x from %pM to %pM data %p len %u\n",
((u_short *)skb->data)[6], ((u_short *)skb->data)[6],
skb->data + 6, skb->data, skb->data + 6, skb->data,
(int)skb->data, (int)skb->len); skb->data, skb->len);
netif_rx(skb); netif_rx(skb);
dev->stats.rx_packets++; dev->stats.rx_packets++;
...@@ -566,10 +566,10 @@ static netdev_tx_t ariadne_start_xmit(struct sk_buff *skb, ...@@ -566,10 +566,10 @@ static netdev_tx_t ariadne_start_xmit(struct sk_buff *skb,
/* Fill in a Tx ring entry */ /* Fill in a Tx ring entry */
netdev_dbg(dev, "TX pkt type 0x%04x from %pM to %pM data 0x%08x len %d\n", netdev_dbg(dev, "TX pkt type 0x%04x from %pM to %pM data %p len %u\n",
((u_short *)skb->data)[6], ((u_short *)skb->data)[6],
skb->data + 6, skb->data, skb->data + 6, skb->data,
(int)skb->data, (int)skb->len); skb->data, skb->len);
local_irq_save(flags); local_irq_save(flags);
......
...@@ -558,21 +558,18 @@ static unsigned long __init lance_probe1( struct net_device *dev, ...@@ -558,21 +558,18 @@ static unsigned long __init lance_probe1( struct net_device *dev,
printk( "Lance: request for irq %d failed\n", IRQ_AUTO_5 ); printk( "Lance: request for irq %d failed\n", IRQ_AUTO_5 );
return 0; return 0;
} }
dev->irq = (unsigned short)IRQ_AUTO_5; dev->irq = IRQ_AUTO_5;
} }
else { else {
/* For VME-RieblCards, request a free VME int; /* For VME-RieblCards, request a free VME int */
* (This must be unsigned long, since dev->irq is short and the unsigned int irq = atari_register_vme_int();
* IRQ_MACHSPEC bit would be cut off...)
*/
unsigned long irq = atari_register_vme_int();
if (!irq) { if (!irq) {
printk( "Lance: request for VME interrupt failed\n" ); printk( "Lance: request for VME interrupt failed\n" );
return 0; return 0;
} }
if (request_irq(irq, lance_interrupt, IRQ_TYPE_PRIO, if (request_irq(irq, lance_interrupt, IRQ_TYPE_PRIO,
"Riebl-VME Ethernet", dev)) { "Riebl-VME Ethernet", dev)) {
printk( "Lance: request for irq %ld failed\n", irq ); printk( "Lance: request for irq %u failed\n", irq );
return 0; return 0;
} }
dev->irq = irq; dev->irq = irq;
......
...@@ -572,7 +572,7 @@ static void falcon_get_lock(void) ...@@ -572,7 +572,7 @@ static void falcon_get_lock(void)
} }
int __init atari_scsi_detect(struct scsi_host_template *host) static int __init atari_scsi_detect(struct scsi_host_template *host)
{ {
static int called = 0; static int called = 0;
struct Scsi_Host *instance; struct Scsi_Host *instance;
...@@ -724,7 +724,7 @@ int __init atari_scsi_detect(struct scsi_host_template *host) ...@@ -724,7 +724,7 @@ int __init atari_scsi_detect(struct scsi_host_template *host)
return 1; return 1;
} }
int atari_scsi_release(struct Scsi_Host *sh) static int atari_scsi_release(struct Scsi_Host *sh)
{ {
if (IS_A_TT()) if (IS_A_TT())
free_irq(IRQ_TT_MFP_SCSI, sh); free_irq(IRQ_TT_MFP_SCSI, sh);
...@@ -734,17 +734,21 @@ int atari_scsi_release(struct Scsi_Host *sh) ...@@ -734,17 +734,21 @@ int atari_scsi_release(struct Scsi_Host *sh)
return 1; return 1;
} }
void __init atari_scsi_setup(char *str, int *ints) #ifndef MODULE
static int __init atari_scsi_setup(char *str)
{ {
/* Format of atascsi parameter is: /* Format of atascsi parameter is:
* atascsi=<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> * atascsi=<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
* Defaults depend on TT or Falcon, hostid determined at run time. * Defaults depend on TT or Falcon, hostid determined at run time.
* Negative values mean don't change. * Negative values mean don't change.
*/ */
int ints[6];
get_options(str, ARRAY_SIZE(ints), ints);
if (ints[0] < 1) { if (ints[0] < 1) {
printk("atari_scsi_setup: no arguments!\n"); printk("atari_scsi_setup: no arguments!\n");
return; return 0;
} }
if (ints[0] >= 1) { if (ints[0] >= 1) {
...@@ -777,9 +781,14 @@ void __init atari_scsi_setup(char *str, int *ints) ...@@ -777,9 +781,14 @@ void __init atari_scsi_setup(char *str, int *ints)
setup_use_tagged_queuing = !!ints[5]; setup_use_tagged_queuing = !!ints[5];
} }
#endif #endif
return 1;
} }
int atari_scsi_bus_reset(Scsi_Cmnd *cmd) __setup("atascsi=", atari_scsi_setup);
#endif /* !MODULE */
static int atari_scsi_bus_reset(Scsi_Cmnd *cmd)
{ {
int rv; int rv;
struct NCR5380_hostdata *hostdata = struct NCR5380_hostdata *hostdata =
...@@ -852,7 +861,7 @@ static void __init atari_scsi_reset_boot(void) ...@@ -852,7 +861,7 @@ static void __init atari_scsi_reset_boot(void)
#endif #endif
const char *atari_scsi_info(struct Scsi_Host *host) static const char *atari_scsi_info(struct Scsi_Host *host)
{ {
/* atari_scsi_detect() is verbose enough... */ /* atari_scsi_detect() is verbose enough... */
static const char string[] = "Atari native SCSI"; static const char string[] = "Atari native SCSI";
...@@ -862,8 +871,9 @@ const char *atari_scsi_info(struct Scsi_Host *host) ...@@ -862,8 +871,9 @@ const char *atari_scsi_info(struct Scsi_Host *host)
#if defined(REAL_DMA) #if defined(REAL_DMA)
unsigned long atari_scsi_dma_setup(struct Scsi_Host *instance, void *data, static unsigned long atari_scsi_dma_setup(struct Scsi_Host *instance,
unsigned long count, int dir) void *data, unsigned long count,
int dir)
{ {
unsigned long addr = virt_to_phys(data); unsigned long addr = virt_to_phys(data);
......
...@@ -18,11 +18,6 @@ ...@@ -18,11 +18,6 @@
/* (I_HAVE_OVERRUNS stuff removed) */ /* (I_HAVE_OVERRUNS stuff removed) */
#ifndef ASM #ifndef ASM
int atari_scsi_detect (struct scsi_host_template *);
const char *atari_scsi_info (struct Scsi_Host *);
int atari_scsi_reset (Scsi_Cmnd *, unsigned int);
int atari_scsi_release (struct Scsi_Host *);
/* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary. Higher /* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary. Higher
* values should work, too; try it! (but cmd_per_lun costs memory!) */ * values should work, too; try it! (but cmd_per_lun costs memory!) */
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
#if !defined(CONFIG_ARM) && !defined(CONFIG_SUPERH) \ #if !defined(CONFIG_ARM) && !defined(CONFIG_SUPERH) \
&& !defined(CONFIG_AVR32) && !defined(CONFIG_PPC32) \ && !defined(CONFIG_AVR32) && !defined(CONFIG_PPC32) \
&& !defined(CONFIG_PPC64) && !defined(CONFIG_BLACKFIN) \ && !defined(CONFIG_PPC64) && !defined(CONFIG_BLACKFIN) \
&& !defined(CONFIG_MIPS) && !defined(CONFIG_MIPS) && !defined(CONFIG_M68K)
static inline void readsl(const void __iomem *addr, void *buf, int len) static inline void readsl(const void __iomem *addr, void *buf, int len)
{ insl((unsigned long)addr, buf, len); } { insl((unsigned long)addr, buf, len); }
static inline void readsw(const void __iomem *addr, void *buf, int len) static inline void readsw(const void __iomem *addr, void *buf, int len)
......
...@@ -19,29 +19,7 @@ ...@@ -19,29 +19,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/io.h> #include <asm/io.h>
#ifndef CONFIG_AMIGA
#include <asm/vga.h> #include <asm/vga.h>
#else
/*
* FIXME
* Ugh, we don't have PCI space, so map readb() and friends to use Zorro space
* for MMIO accesses. This should make cirrusfb work again on Amiga
*/
#undef inb_p
#undef inw_p
#undef outb_p
#undef outw
#undef readb
#undef writeb
#undef writew
#define inb_p(port) 0
#define inw_p(port) 0
#define outb_p(port, val) do { } while (0)
#define outw(port, val) do { } while (0)
#define readb z_readb
#define writeb z_writeb
#define writew z_writew
#endif
#include <asm/byteorder.h> #include <asm/byteorder.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册