root/drivers/block/qd6580.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. tune_qd6580
  2. init_qd6580

   1 /*
   2  *  linux/drivers/block/qd6580.c       Version 0.01  Feb 06, 1996
   3  *
   4  *  Copyright (C) 1996  Linus Torvalds & author (see below)
   5  */
   6 
   7 /*
   8  * QDI QD6580 EIDE controller fast support by Colten Edwards.
   9  * No net access, but (maybe) can be reached at pje120@cs.usask.ca
  10  */
  11 
  12 #undef REALLY_SLOW_IO           /* most systems can safely undef this */
  13 
  14 #include <linux/types.h>
  15 #include <linux/kernel.h>
  16 #include <linux/delay.h>
  17 #include <linux/timer.h>
  18 #include <linux/mm.h>
  19 #include <linux/ioport.h>
  20 #include <linux/blkdev.h>
  21 #include <linux/hdreg.h>
  22 #include <asm/io.h>
  23 #include "ide.h"
  24 
  25 /*
  26  * Register 0xb3 looks like:
  27  *      0x4f is fast            mode3 ?
  28  *      0x3f is medium          mode2 ?
  29  *      0x2f is slower          mode1 ?
  30  *      0x1f is slower yet      mode0 ?
  31  *      0x0f ???                ???
  32  *
  33  * Don't know whether this sets BOTH drives, or just the first drive.
  34  * Don't know if there is a separate setting for the second drive.
  35  *
  36  * Feel free to patch this if you have one of these beasts
  37  * and can work out the answers!
  38  *
  39  * I/O ports are 0xb0 0xb2 and 0xb3
  40  */
  41 
  42 static void tune_qd6580 (ide_drive_t *drive, byte pio)
     /* [previous][next][first][last][top][bottom][index][help] */
  43 {
  44         unsigned long flags;
  45 
  46         if (pio == 255)  {      /* auto-tune */
  47                 struct hd_driveid *id = drive->id;
  48                 pio = id->tPIO;
  49                 if ((id->field_valid & 0x02) && (id->eide_pio_modes & 0x03))
  50                         pio = 3;
  51         }
  52         pio++;  /* is this correct? */
  53 
  54         save_flags(flags);
  55         cli();
  56         outb_p(0x8d,0xb0);
  57         outb_p(0x0 ,0xb2);
  58         outb_p((pio<<4)|0x0f,0xb3);
  59         inb(0x3f6);
  60         restore_flags(flags);
  61 }
  62 
  63 void init_qd6580 (void)
     /* [previous][next][first][last][top][bottom][index][help] */
  64 {
  65         ide_hwifs[0].chipset = ide_qd6580;
  66         ide_hwifs[0].tuneproc = &tune_qd6580;
  67 }

/* [previous][next][first][last][top][bottom][index][help] */