~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-ia64/ide.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.