diff options
Diffstat (limited to 'include/asm-cris/arch-v10/ide.h')
| -rw-r--r-- | include/asm-cris/arch-v10/ide.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/include/asm-cris/arch-v10/ide.h b/include/asm-cris/arch-v10/ide.h deleted file mode 100644 index 5366e6239328..000000000000 --- a/include/asm-cris/arch-v10/ide.h +++ /dev/null | |||
| @@ -1,91 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-cris/ide.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2000, 2001, 2002 Axis Communications AB | ||
| 5 | * | ||
| 6 | * Authors: Bjorn Wesen | ||
| 7 | * | ||
| 8 | */ | ||
| 9 | |||
| 10 | /* | ||
| 11 | * This file contains the ETRAX 100LX specific IDE code. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASMCRIS_IDE_H | ||
| 15 | #define __ASMCRIS_IDE_H | ||
| 16 | |||
| 17 | #ifdef __KERNEL__ | ||
| 18 | |||
| 19 | #include <asm/arch/svinto.h> | ||
| 20 | #include <asm/io.h> | ||
| 21 | #include <asm-generic/ide_iops.h> | ||
| 22 | |||
| 23 | |||
| 24 | /* ETRAX 100 can support 4 IDE busses on the same pins (serialized) */ | ||
| 25 | |||
| 26 | #define MAX_HWIFS 4 | ||
| 27 | |||
| 28 | static inline int ide_default_irq(unsigned long base) | ||
| 29 | { | ||
| 30 | /* all IDE busses share the same IRQ, number 4. | ||
| 31 | * this has the side-effect that ide-probe.c will cluster our 4 interfaces | ||
| 32 | * together in a hwgroup, and will serialize accesses. this is good, because | ||
| 33 | * we can't access more than one interface at the same time on ETRAX100. | ||
| 34 | */ | ||
| 35 | return 4; | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline unsigned long ide_default_io_base(int index) | ||
| 39 | { | ||
| 40 | /* we have no real I/O base address per interface, since all go through the | ||
| 41 | * same register. but in a bitfield in that register, we have the i/f number. | ||
| 42 | * so we can use the io_base to remember that bitfield. | ||
| 43 | */ | ||
| 44 | static const unsigned long io_bases[MAX_HWIFS] = { | ||
| 45 | IO_FIELD(R_ATA_CTRL_DATA, sel, 0), | ||
| 46 | IO_FIELD(R_ATA_CTRL_DATA, sel, 1), | ||
| 47 | IO_FIELD(R_ATA_CTRL_DATA, sel, 2), | ||
| 48 | IO_FIELD(R_ATA_CTRL_DATA, sel, 3) | ||
| 49 | }; | ||
| 50 | return io_bases[index]; | ||
| 51 | } | ||
| 52 | |||
| 53 | /* this is called once for each interface, to setup the port addresses. data_port is the result | ||
| 54 | * of the ide_default_io_base call above. ctrl_port will be 0, but that is don't care for us. | ||
| 55 | */ | ||
| 56 | |||
| 57 | static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port, unsigned long ctrl_port, int *irq) | ||
| 58 | { | ||
| 59 | int i; | ||
| 60 | |||
| 61 | /* fill in ports for ATA addresses 0 to 7 */ | ||
| 62 | for (i = 0; i <= 7; i++) { | ||
| 63 | hw->io_ports_array[i] = data_port | | ||
| 64 | IO_FIELD(R_ATA_CTRL_DATA, addr, i) | | ||
| 65 | IO_STATE(R_ATA_CTRL_DATA, cs0, active); | ||
| 66 | } | ||
| 67 | |||
| 68 | /* the IDE control register is at ATA address 6, with CS1 active instead of CS0 */ | ||
| 69 | hw->io_ports.ctl_addr = data_port | | ||
| 70 | IO_FIELD(R_ATA_CTRL_DATA, addr, 6) | | ||
| 71 | IO_STATE(R_ATA_CTRL_DATA, cs1, active); | ||
| 72 | |||
| 73 | /* whats this for ? */ | ||
| 74 | hw->io_ports.irq_addr = 0; | ||
| 75 | } | ||
| 76 | |||
| 77 | static inline void ide_init_default_hwifs(void) | ||
| 78 | { | ||
| 79 | hw_regs_t hw; | ||
| 80 | int index; | ||
| 81 | |||
| 82 | for(index = 0; index < MAX_HWIFS; index++) { | ||
| 83 | ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, NULL); | ||
| 84 | hw.irq = ide_default_irq(ide_default_io_base(index)); | ||
| 85 | ide_register_hw(&hw, NULL); | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | #endif /* __KERNEL__ */ | ||
| 90 | |||
| 91 | #endif /* __ASMCRIS_IDE_H */ | ||
