Make HZ_TO_STD macro name lowercase.
[linux-2.6/linux-mips.git] / include / asm-i386 / ide.h
blob6ac787665c0a74adc284fbf9efbe75d94391782a
1 /*
2 * linux/include/asm-i386/ide.h
4 * Copyright (C) 1994-1996 Linus Torvalds & authors
5 */
7 /*
8 * This file contains the i386 architecture specific IDE code.
9 */
11 #ifndef __ASMi386_IDE_H
12 #define __ASMi386_IDE_H
14 #ifdef __KERNEL__
16 #include <linux/config.h>
18 #ifndef MAX_HWIFS
19 # ifdef CONFIG_BLK_DEV_IDEPCI
20 #define MAX_HWIFS 10
21 # else
22 #define MAX_HWIFS 6
23 # endif
24 #endif
26 #define ide__sti() __sti()
28 static __inline__ int ide_default_irq(ide_ioreg_t base)
30 switch (base) {
31 case 0x1f0: return 14;
32 case 0x170: return 15;
33 case 0x1e8: return 11;
34 case 0x168: return 10;
35 case 0x1e0: return 8;
36 case 0x160: return 12;
37 default:
38 return 0;
42 static __inline__ ide_ioreg_t ide_default_io_base(int index)
44 switch (index) {
45 case 0: return 0x1f0;
46 case 1: return 0x170;
47 case 2: return 0x1e8;
48 case 3: return 0x168;
49 case 4: return 0x1e0;
50 case 5: return 0x160;
51 default:
52 return 0;
56 static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq)
58 ide_ioreg_t reg = data_port;
59 int i;
61 for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
62 hw->io_ports[i] = reg;
63 reg += 1;
65 if (ctrl_port) {
66 hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
67 } else {
68 hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
70 if (irq != NULL)
71 *irq = 0;
72 hw->io_ports[IDE_IRQ_OFFSET] = 0;
75 static __inline__ void ide_init_default_hwifs(void)
77 #ifndef CONFIG_BLK_DEV_IDEPCI
78 hw_regs_t hw;
79 int index;
81 for(index = 0; index < MAX_HWIFS; index++) {
82 ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, NULL);
83 hw.irq = ide_default_irq(ide_default_io_base(index));
84 ide_register_hw(&hw, NULL);
86 #endif /* CONFIG_BLK_DEV_IDEPCI */
89 typedef union {
90 unsigned all : 8; /* all of the bits together */
91 struct {
92 unsigned head : 4; /* always zeros here */
93 unsigned unit : 1; /* drive select number, 0 or 1 */
94 unsigned bit5 : 1; /* always 1 */
95 unsigned lba : 1; /* using LBA instead of CHS */
96 unsigned bit7 : 1; /* always 1 */
97 } b;
98 } select_t;
100 #define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id))
101 #define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id))
102 #define ide_check_region(from,extent) check_region((from), (extent))
103 #define ide_request_region(from,extent,name) request_region((from), (extent), (name))
104 #define ide_release_region(from,extent) release_region((from), (extent))
107 * The following are not needed for the non-m68k ports
109 #define ide_ack_intr(hwif) (1)
110 #define ide_fix_driveid(id) do {} while (0)
111 #define ide_release_lock(lock) do {} while (0)
112 #define ide_get_lock(lock, hdlr, data) do {} while (0)
114 #endif /* __KERNEL__ */
116 #endif /* __ASMi386_IDE_H */