mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (76 commits)
ide: use proper printk() KERN_* levels in ide-probe.c
ide: fix for EATA SCSI HBA in ATA emulating mode
ide: remove stale comments from drivers/ide/Makefile
ide: enable local IRQs in all handlers for TASKFILE_NO_DATA data phase
ide-scsi: remove kmalloced struct request
ht6560b: remove old history
ht6560b: update email address
ide-cd: fix oops when using growisofs
gayle: release resources on ide_host_add() failure
palm_bk3710: add UltraDMA/100 support
ide: trivial sparse annotations
ide: ide-tape.c sparse annotations and unaligned access removal
ide: drop 'name' parameter from ->init_chipset method
ide: prefix messages from IDE PCI host drivers by driver name
it821x: remove DECLARE_ITE_DEV() macro
it8213: remove DECLARE_ITE_DEV() macro
ide: include PCI device name in messages from IDE PCI host drivers
ide: remove <asm/ide.h> for some archs
ide-generic: remove ide_default_{io_base,irq}() inlines (take 3)
ide-generic: is no longer needed on ppc32
...
This commit is contained in:
commit
b5684b83b1
71 changed files with 1397 additions and 1474 deletions
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* linux/include/asm-alpha/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the alpha architecture specific IDE code.
|
||||
*/
|
||||
|
||||
#ifndef __ASMalpha_IDE_H
|
||||
#define __ASMalpha_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
static inline int ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
case 0x1e8: return 11;
|
||||
case 0x168: return 10;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASMalpha_IDE_H */
|
||||
|
|
@ -13,10 +13,6 @@
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#define MAX_HWIFS 4
|
||||
#endif
|
||||
|
||||
#define __ide_mm_insw(port,addr,len) readsw(port,addr,len)
|
||||
#define __ide_mm_insl(port,addr,len) readsl(port,addr,len)
|
||||
#define __ide_mm_outsw(port,addr,len) writesw(port,addr,len)
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* linux/include/asm-blackfin/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
* Copyright (C) 2001 Lineo Inc., davidm@snapgear.com
|
||||
* Copyright (C) 2002 Greg Ungerer (gerg@snapgear.com)
|
||||
* Copyright (C) 2002 Yoshinori Sato (ysato@users.sourceforge.jp)
|
||||
* Copyright (C) 2005 Hennerich Michael (hennerich@blackfin.uclinux.org)
|
||||
*/
|
||||
|
||||
/****************************************************************************/
|
||||
#ifndef _BLACKFIN_IDE_H
|
||||
#define _BLACKFIN_IDE_H
|
||||
/****************************************************************************/
|
||||
#ifdef __KERNEL__
|
||||
/****************************************************************************/
|
||||
|
||||
#define MAX_HWIFS 1
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
/****************************************************************************/
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _BLACKFIN_IDE_H */
|
||||
/****************************************************************************/
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
/*
|
||||
* linux/include/asm-cris/ide.h
|
||||
*
|
||||
* Copyright (C) 2000, 2001, 2002 Axis Communications AB
|
||||
*
|
||||
* Authors: Bjorn Wesen
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the ETRAX 100LX specific IDE code.
|
||||
*/
|
||||
|
||||
#ifndef __ASMCRIS_IDE_H
|
||||
#define __ASMCRIS_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/arch/svinto.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
|
||||
/* ETRAX 100 can support 4 IDE busses on the same pins (serialized) */
|
||||
|
||||
#define MAX_HWIFS 4
|
||||
|
||||
static inline int ide_default_irq(unsigned long base)
|
||||
{
|
||||
/* all IDE busses share the same IRQ, number 4.
|
||||
* this has the side-effect that ide-probe.c will cluster our 4 interfaces
|
||||
* together in a hwgroup, and will serialize accesses. this is good, because
|
||||
* we can't access more than one interface at the same time on ETRAX100.
|
||||
*/
|
||||
return 4;
|
||||
}
|
||||
|
||||
static inline unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
/* we have no real I/O base address per interface, since all go through the
|
||||
* same register. but in a bitfield in that register, we have the i/f number.
|
||||
* so we can use the io_base to remember that bitfield.
|
||||
*/
|
||||
static const unsigned long io_bases[MAX_HWIFS] = {
|
||||
IO_FIELD(R_ATA_CTRL_DATA, sel, 0),
|
||||
IO_FIELD(R_ATA_CTRL_DATA, sel, 1),
|
||||
IO_FIELD(R_ATA_CTRL_DATA, sel, 2),
|
||||
IO_FIELD(R_ATA_CTRL_DATA, sel, 3)
|
||||
};
|
||||
return io_bases[index];
|
||||
}
|
||||
|
||||
/* this is called once for each interface, to setup the port addresses. data_port is the result
|
||||
* of the ide_default_io_base call above. ctrl_port will be 0, but that is don't care for us.
|
||||
*/
|
||||
|
||||
static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port, unsigned long ctrl_port, int *irq)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* fill in ports for ATA addresses 0 to 7 */
|
||||
for (i = 0; i <= 7; i++) {
|
||||
hw->io_ports_array[i] = data_port |
|
||||
IO_FIELD(R_ATA_CTRL_DATA, addr, i) |
|
||||
IO_STATE(R_ATA_CTRL_DATA, cs0, active);
|
||||
}
|
||||
|
||||
/* the IDE control register is at ATA address 6, with CS1 active instead of CS0 */
|
||||
hw->io_ports.ctl_addr = data_port |
|
||||
IO_FIELD(R_ATA_CTRL_DATA, addr, 6) |
|
||||
IO_STATE(R_ATA_CTRL_DATA, cs1, active);
|
||||
|
||||
/* whats this for ? */
|
||||
hw->io_ports.irq_addr = 0;
|
||||
}
|
||||
|
||||
static inline void ide_init_default_hwifs(void)
|
||||
{
|
||||
hw_regs_t hw;
|
||||
int index;
|
||||
|
||||
for(index = 0; index < MAX_HWIFS; index++) {
|
||||
ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, NULL);
|
||||
hw.irq = ide_default_irq(ide_default_io_base(index));
|
||||
ide_register_hw(&hw, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASMCRIS_IDE_H */
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
/*
|
||||
* linux/include/asm-cris/ide.h
|
||||
*
|
||||
* Copyright (C) 2000-2004 Axis Communications AB
|
||||
*
|
||||
* Authors: Bjorn Wesen, Mikael Starvik
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the ETRAX FS specific IDE code.
|
||||
*/
|
||||
|
||||
#ifndef __ASMCRIS_IDE_H
|
||||
#define __ASMCRIS_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/arch/hwregs/intr_vect.h>
|
||||
#include <asm/arch/hwregs/ata_defs.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
|
||||
/* ETRAX FS can support 4 IDE busses on the same pins (serialized) */
|
||||
|
||||
#define MAX_HWIFS 4
|
||||
|
||||
static inline int ide_default_irq(unsigned long base)
|
||||
{
|
||||
/* all IDE busses share the same IRQ,
|
||||
* this has the side-effect that ide-probe.c will cluster our 4 interfaces
|
||||
* together in a hwgroup, and will serialize accesses. this is good, because
|
||||
* we can't access more than one interface at the same time on ETRAX100.
|
||||
*/
|
||||
return ATA_INTR_VECT;
|
||||
}
|
||||
|
||||
static inline unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
reg_ata_rw_ctrl2 ctrl2 = {.sel = index};
|
||||
/* we have no real I/O base address per interface, since all go through the
|
||||
* same register. but in a bitfield in that register, we have the i/f number.
|
||||
* so we can use the io_base to remember that bitfield.
|
||||
*/
|
||||
ctrl2.sel = index;
|
||||
|
||||
return REG_TYPE_CONV(unsigned long, reg_ata_rw_ctrl2, ctrl2);
|
||||
}
|
||||
|
||||
#define IDE_ARCH_ACK_INTR
|
||||
#define ide_ack_intr(hwif) ((hwif)->ack_intr(hwif))
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASMCRIS_IDE_H */
|
||||
|
|
@ -1 +0,0 @@
|
|||
#include <asm/arch/ide.h>
|
||||
|
|
@ -18,10 +18,6 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#define MAX_HWIFS 8
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
/*
|
||||
* some bits needed for parts of the IDE subsystem to compile
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* linux/include/asm-h8300/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
* Copyright (C) 2001 Lineo Inc., davidm@snapgear.com
|
||||
* Copyright (C) 2002 Greg Ungerer (gerg@snapgear.com)
|
||||
* Copyright (C) 2002 Yoshinori Sato (ysato@users.sourceforge.jp)
|
||||
*/
|
||||
|
||||
/****************************************************************************/
|
||||
#ifndef _H8300_IDE_H
|
||||
#define _H8300_IDE_H
|
||||
/****************************************************************************/
|
||||
#ifdef __KERNEL__
|
||||
/****************************************************************************/
|
||||
|
||||
#define MAX_HWIFS 1
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
/****************************************************************************/
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _H8300_IDE_H */
|
||||
/****************************************************************************/
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* linux/include/asm-ia64/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the ia64 architecture specific IDE code.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_IA64_IDE_H
|
||||
#define __ASM_IA64_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
||||
#include <linux/irq.h>
|
||||
|
||||
static inline int ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
case 0x1f0: return isa_irq_to_vector(14);
|
||||
case 0x170: return isa_irq_to_vector(15);
|
||||
case 0x1e8: return isa_irq_to_vector(11);
|
||||
case 0x168: return isa_irq_to_vector(10);
|
||||
case 0x1e0: return isa_irq_to_vector(8);
|
||||
case 0x160: return isa_irq_to_vector(12);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
case 4: return 0x1e0;
|
||||
case 5: return 0x160;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASM_IA64_IDE_H */
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
#ifndef _ASM_M32R_IDE_H
|
||||
#define _ASM_M32R_IDE_H
|
||||
|
||||
/*
|
||||
* linux/include/asm-m32r/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the i386 architecture specific IDE code.
|
||||
*/
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/m32r.h>
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
# ifdef CONFIG_BLK_DEV_IDEPCI
|
||||
#define MAX_HWIFS 10
|
||||
# else
|
||||
#define MAX_HWIFS 2
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static __inline__ int ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
#if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_MAPPI2) \
|
||||
|| defined(CONFIG_PLAT_OPSPUT)
|
||||
case 0x1f0: return PLD_IRQ_CFIREQ;
|
||||
default:
|
||||
return 0;
|
||||
#elif defined(CONFIG_PLAT_MAPPI3)
|
||||
case 0x1f0: return PLD_IRQ_CFIREQ;
|
||||
case 0x170: return PLD_IRQ_IDEIREQ;
|
||||
default:
|
||||
return 0;
|
||||
#else
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
case 0x1e8: return 11;
|
||||
case 0x168: return 10;
|
||||
case 0x1e0: return 8;
|
||||
case 0x160: return 12;
|
||||
default:
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static __inline__ unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
case 4: return 0x1e0;
|
||||
case 5: return 0x160;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM_M32R_IDE_H */
|
||||
|
|
@ -45,10 +45,6 @@
|
|||
#include <asm/macints.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#define MAX_HWIFS 4 /* same as the other archs */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Get rid of defs from io.h - ide has its private and conflicting versions
|
||||
* Since so far no single m68k platform uses ISA/PCI I/O space for IDE, we
|
||||
|
|
|
|||
|
|
@ -19,14 +19,6 @@
|
|||
#include <linux/stddef.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
# ifdef CONFIG_BLK_DEV_IDEPCI
|
||||
#define MAX_HWIFS 10
|
||||
# else
|
||||
#define MAX_HWIFS 6
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static __inline__ int ide_probe_legacy(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
|
|
@ -56,46 +48,6 @@ found:
|
|||
#endif
|
||||
}
|
||||
|
||||
static __inline__ int ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
case 0x1e8: return 11;
|
||||
case 0x168: return 10;
|
||||
case 0x1e0: return 8;
|
||||
case 0x160: return 12;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static __inline__ unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
if (!ide_probe_legacy())
|
||||
return 0;
|
||||
/*
|
||||
* If PCI is present then it is not safe to poke around
|
||||
* the other legacy IDE ports. Only 0x1f0 and 0x170 are
|
||||
* defined compatibility mode ports for PCI. A user can
|
||||
* override this using ide= but we must default safe.
|
||||
*/
|
||||
if (no_pci_devices()) {
|
||||
switch (index) {
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
case 4: return 0x1e0;
|
||||
case 5: return 0x160;
|
||||
}
|
||||
}
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* MIPS port and memory-mapped I/O string operations. */
|
||||
static inline void __ide_flush_prologue(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,10 +23,6 @@
|
|||
#undef SUPPORT_VLB_SYNC
|
||||
#define SUPPORT_VLB_SYNC 0
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#define MAX_HWIFS 8
|
||||
#endif
|
||||
|
||||
/*
|
||||
* some bits needed for parts of the IDE subsystem to compile
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,10 +13,6 @@
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#define MAX_HWIFS 2
|
||||
#endif
|
||||
|
||||
#define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id))
|
||||
#define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id))
|
||||
#define ide_request_region(from,extent,name) request_region((from), (extent), (name))
|
||||
|
|
|
|||
|
|
@ -14,14 +14,6 @@
|
|||
#endif
|
||||
#include <asm/io.h>
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#ifdef __powerpc64__
|
||||
#define MAX_HWIFS 10
|
||||
#else
|
||||
#define MAX_HWIFS 8
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __ide_mm_insw(p, a, c) readsw((void __iomem *)(p), (a), (c))
|
||||
#define __ide_mm_insl(p, a, c) readsl((void __iomem *)(p), (a), (c))
|
||||
#define __ide_mm_outsw(p, a, c) writesw((void __iomem *)(p), (a), (c))
|
||||
|
|
@ -39,16 +31,6 @@ static __inline__ int ide_default_irq(unsigned long base)
|
|||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_PREP
|
||||
switch (base) {
|
||||
case 0x1f0: return 13;
|
||||
case 0x170: return 13;
|
||||
case 0x1e8: return 11;
|
||||
case 0x168: return 10;
|
||||
case 0xfff0: return 14; /* MCP(N)750 ide0 */
|
||||
case 0xffe0: return 15; /* MCP(N)750 ide1 */
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -61,14 +43,6 @@ static __inline__ unsigned long ide_default_io_base(int index)
|
|||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_PREP
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
/*
|
||||
* linux/include/asm-sh/ide.h
|
||||
*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the i386 architecture specific IDE code.
|
||||
* In future, SuperH code.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_SH_IDE_H
|
||||
#define __ASM_SH_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASM_SH_IDE_H */
|
||||
|
|
@ -21,9 +21,6 @@
|
|||
#include <asm/psr.h>
|
||||
#endif
|
||||
|
||||
#undef MAX_HWIFS
|
||||
#define MAX_HWIFS 2
|
||||
|
||||
#define __ide_insl(data_reg, buffer, wcount) \
|
||||
__ide_insw(data_reg, buffer, (wcount)<<1)
|
||||
#define __ide_outsl(data_reg, buffer, wcount) \
|
||||
|
|
|
|||
|
|
@ -1,65 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 1994-1996 Linus Torvalds & authors
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the i386 architecture specific IDE code.
|
||||
*/
|
||||
|
||||
#ifndef __ASMi386_IDE_H
|
||||
#define __ASMi386_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
# ifdef CONFIG_BLK_DEV_IDEPCI
|
||||
#define MAX_HWIFS 10
|
||||
# else
|
||||
#define MAX_HWIFS 6
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static __inline__ int ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
case 0x1e8: return 11;
|
||||
case 0x168: return 10;
|
||||
case 0x1e0: return 8;
|
||||
case 0x160: return 12;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static __inline__ unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
/*
|
||||
* If PCI is present then it is not safe to poke around
|
||||
* the other legacy IDE ports. Only 0x1f0 and 0x170 are
|
||||
* defined compatibility mode ports for PCI. A user can
|
||||
* override this using ide= but we must default safe.
|
||||
*/
|
||||
if (no_pci_devices()) {
|
||||
switch(index) {
|
||||
case 2: return 0x1e8;
|
||||
case 3: return 0x168;
|
||||
case 4: return 0x1e0;
|
||||
case 5: return 0x160;
|
||||
}
|
||||
}
|
||||
switch (index) {
|
||||
case 0: return 0x1f0;
|
||||
case 1: return 0x170;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASMi386_IDE_H */
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
/*
|
||||
* include/asm-xtensa/ide.h
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 1994 - 1996 Linus Torvalds & authors
|
||||
* Copyright (C) 2001 - 2005 Tensilica Inc.
|
||||
*/
|
||||
|
||||
#ifndef _XTENSA_IDE_H
|
||||
#define _XTENSA_IDE_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
# define MAX_HWIFS 1
|
||||
#endif
|
||||
|
||||
static __inline__ int ide_default_irq(unsigned long base)
|
||||
{
|
||||
/* Unsupported! */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline__ unsigned long ide_default_io_base(int index)
|
||||
{
|
||||
/* Unsupported! */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _XTENSA_IDE_H */
|
||||
|
|
@ -211,7 +211,21 @@ static inline int __ide_default_irq(unsigned long base)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_FRV) || defined(CONFIG_M68K) || \
|
||||
defined(CONFIG_MIPS) || defined(CONFIG_MN10300) || defined(CONFIG_PARISC) \
|
||||
|| defined(CONFIG_PPC) || defined(CONFIG_SPARC) || defined(CONFIG_SPARC64)
|
||||
#include <asm/ide.h>
|
||||
#else
|
||||
#include <asm-generic/ide_iops.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#if defined(CONFIG_BLACKFIN) || defined(CONFIG_H8300) || defined(CONFIG_XTENSA)
|
||||
# define MAX_HWIFS 1
|
||||
#else
|
||||
# define MAX_HWIFS 10
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(MAX_HWIFS) || defined(CONFIG_EMBEDDED)
|
||||
#undef MAX_HWIFS
|
||||
|
|
@ -532,12 +546,16 @@ struct ide_dma_ops {
|
|||
void (*dma_timeout)(struct ide_drive_s *);
|
||||
};
|
||||
|
||||
struct ide_host;
|
||||
|
||||
typedef struct hwif_s {
|
||||
struct hwif_s *next; /* for linked-list in ide_hwgroup_t */
|
||||
struct hwif_s *mate; /* other hwif from same PCI chip */
|
||||
struct hwgroup_s *hwgroup; /* actually (ide_hwgroup_t *) */
|
||||
struct proc_dir_entry *proc; /* /proc/ide/ directory entry */
|
||||
|
||||
struct ide_host *host;
|
||||
|
||||
char name[6]; /* name of interface, eg. "ide0" */
|
||||
|
||||
struct ide_io_ports io_ports;
|
||||
|
|
@ -626,6 +644,9 @@ typedef struct hwif_s {
|
|||
struct ide_host {
|
||||
ide_hwif_t *ports[MAX_HWIFS];
|
||||
unsigned int n_ports;
|
||||
struct device *dev[2];
|
||||
unsigned long host_flags;
|
||||
void *host_priv;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -874,6 +895,9 @@ struct ide_driver_s {
|
|||
|
||||
#define to_ide_driver(drv) container_of(drv, ide_driver_t, gen_driver)
|
||||
|
||||
int ide_device_get(ide_drive_t *);
|
||||
void ide_device_put(ide_drive_t *);
|
||||
|
||||
int generic_ide_ioctl(ide_drive_t *, struct file *, struct block_device *, unsigned, unsigned long);
|
||||
|
||||
extern int ide_vlb_clk;
|
||||
|
|
@ -1182,7 +1206,7 @@ enum {
|
|||
|
||||
struct ide_port_info {
|
||||
char *name;
|
||||
unsigned int (*init_chipset)(struct pci_dev *, const char *);
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
void (*init_iops)(ide_hwif_t *);
|
||||
void (*init_hwif)(ide_hwif_t *);
|
||||
int (*init_dma)(ide_hwif_t *,
|
||||
|
|
@ -1201,8 +1225,10 @@ struct ide_port_info {
|
|||
u8 udma_mask;
|
||||
};
|
||||
|
||||
int ide_setup_pci_device(struct pci_dev *, const struct ide_port_info *);
|
||||
int ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, const struct ide_port_info *);
|
||||
int ide_pci_init_one(struct pci_dev *, const struct ide_port_info *, void *);
|
||||
int ide_pci_init_two(struct pci_dev *, struct pci_dev *,
|
||||
const struct ide_port_info *, void *);
|
||||
void ide_pci_remove(struct pci_dev *);
|
||||
|
||||
void ide_map_sg(ide_drive_t *, struct request *);
|
||||
void ide_init_sg_cmd(ide_drive_t *, struct request *);
|
||||
|
|
|
|||
Loading…
Reference in a new issue