taglinefilesource code
drive120drivers/block/ali14xx.cstatic void ali14xx_tune_drive (ide_drive_t *drive, byte pio)
drive125drivers/block/ali14xx.cstruct hd_driveid *id = drive->id;
drive129drivers/block/ali14xx.cpio = ide_get_best_pio_mode(drive);
drive148drivers/block/ali14xx.cdrive->name, pio, time1, time2, param1, param2, param3, param4);
drive151drivers/block/ali14xx.cdriveNum = (HWIF(drive)->index << 1) + drive->select.b.unit;
drive119drivers/block/amiflop.c#define SELMASK(drive)  (1 << (3 + (drive & 3)))
drive220drivers/block/amiflop.cstatic void fd_motor_off(unsigned long drive)
drive225drivers/block/amiflop.cdrive&=3;
drive229drivers/block/amiflop.cif (unit[drive].track % 2 != 0)
drive233drivers/block/amiflop.cprb &= ~SELMASK(drive);
drive239drivers/block/amiflop.cunit[drive].motor = 0;
drive306drivers/block/amiflop.cstatic void fd_select (int drive)
drive310drivers/block/amiflop.cdrive&=3;
drive311drivers/block/amiflop.cif (drive == selected)
drive313drivers/block/amiflop.cselected = drive;
drive315drivers/block/amiflop.cif (unit[drive].track % 2 != 0)
drive317drivers/block/amiflop.cif (unit[drive].motor == 1)
drive321drivers/block/amiflop.cprb &= ~SELMASK(drive);
drive325drivers/block/amiflop.cstatic void fd_deselect (int drive)
drive330drivers/block/amiflop.cdrive&=3;
drive331drivers/block/amiflop.cif (drive != selected)
drive352drivers/block/amiflop.cstatic int fd_calibrate(int drive)
drive357drivers/block/amiflop.cdrive &= 3;
drive358drivers/block/amiflop.cif (!motor_on (drive))
drive360drivers/block/amiflop.cfd_select (drive);
drive365drivers/block/amiflop.cfor (n = unit[drive].type->tracks/4; n != 0; --n) {
drive373drivers/block/amiflop.cms_delay(unit[drive].type->step_delay);
drive375drivers/block/amiflop.cms_delay (unit[drive].type->settle_time);
drive377drivers/block/amiflop.cn = unit[drive].type->tracks/2 + 20;
drive384drivers/block/amiflop.cms_delay(unit[drive].type->step_delay + 1);
drive389drivers/block/amiflop.cfd_motor_off (drive);
drive390drivers/block/amiflop.cunit[drive].track = -1;
drive394drivers/block/amiflop.cunit[drive].track = 0;
drive395drivers/block/amiflop.cms_delay(unit[drive].type->settle_time);
drive405drivers/block/amiflop.cstatic int fd_seek(int drive, int track)
drive410drivers/block/amiflop.cdrive &= 3;
drive411drivers/block/amiflop.cif (unit[drive].track == track)
drive413drivers/block/amiflop.cif (!motor_on(drive))
drive415drivers/block/amiflop.cfd_select (drive);
drive416drivers/block/amiflop.cif (unit[drive].track < 0 && !fd_calibrate(drive))
drive419drivers/block/amiflop.ccnt = unit[drive].track/2 - track/2;
drive429drivers/block/amiflop.cif (track % 2 != unit[drive].track % 2)
drive430drivers/block/amiflop.cms_delay (unit[drive].type->side_time);
drive431drivers/block/amiflop.cunit[drive].track = track;
drive440drivers/block/amiflop.cms_delay (unit[drive].type->step_delay);
drive442drivers/block/amiflop.cms_delay (unit[drive].type->settle_time);
drive608drivers/block/amiflop.cstatic int amiga_read(int drive, unsigned char *track_data,
drive616drivers/block/amiflop.cdrive&=3;
drive617drivers/block/amiflop.cend = raw + unit[drive].type->read_size;
drive619drivers/block/amiflop.cfor (scnt = 0;scnt < unit[drive].sects; scnt++) {
drive841drivers/block/amiflop.cstatic int dos_read(int drive, unsigned char *track_data,
drive849drivers/block/amiflop.cdrive&=3;
drive850drivers/block/amiflop.cend = raw + unit[drive].type->read_size;
drive852drivers/block/amiflop.cfor (scnt=0;scnt<unit[drive].sects;scnt++) {
drive856drivers/block/amiflop.ctrack,drive,scnt);
drive876drivers/block/amiflop.cif (hdr.track != track/unit[drive].type->heads) {
drive878drivers/block/amiflop.ctrack/unit[drive].type->heads);
drive882drivers/block/amiflop.cif (hdr.side != track%unit[drive].type->heads) {
drive884drivers/block/amiflop.ctrack%unit[drive].type->heads);
drive897drivers/block/amiflop.ctrack, drive, scnt, hdr.sec);
drive954drivers/block/amiflop.cstatic unsigned long *ms_putsec(int drive, unsigned long *raw, int track, int cnt,
drive962drivers/block/amiflop.cdrive&=3;
drive972drivers/block/amiflop.chdr.track=track/unit[drive].type->heads;
drive973drivers/block/amiflop.chdr.side=track%unit[drive].type->heads;
drive1083drivers/block/amiflop.cint drive = dev & 3;
drive1091drivers/block/amiflop.cfd_select (drive);
drive1093drivers/block/amiflop.cfd_deselect (drive);
drive1097drivers/block/amiflop.cunit[drive].track = -1;
drive1119drivers/block/amiflop.cstatic void raw_read(int drive, int track, char *ptrack, int len)
drive1121drivers/block/amiflop.cdrive&=3;
drive1130drivers/block/amiflop.cms_delay (unit[drive].type->side_time);
drive1144drivers/block/amiflop.cstatic int raw_write(int drive, int track, char *ptrack, int len)
drive1148drivers/block/amiflop.cdrive&=3;
drive1156drivers/block/amiflop.cif ((ulong)track >= unit[drive].type->precomp2)
drive1158drivers/block/amiflop.celse if ((ulong)track >= unit[drive].type->precomp1)
drive1164drivers/block/amiflop.cms_delay (unit[drive].type->side_time);
drive1181drivers/block/amiflop.cstatic int get_track(int drive, int track)
drive1185drivers/block/amiflop.cdrive&=3;
drive1186drivers/block/amiflop.cif ((lastdrive == drive) && (savedtrack == track))
drive1189drivers/block/amiflop.clastdrive = drive;
drive1190drivers/block/amiflop.craw_read(drive, track, raw_buf, unit[drive].type->read_size);
drive1192drivers/block/amiflop.cerror = (*unit[drive].dtype->read_fkt)(drive, trackdata, (unsigned long)raw_buf, track);
drive1198drivers/block/amiflop.cunit[drive].track = -1;
drive1247drivers/block/amiflop.cint device, drive, cnt;
drive1276drivers/block/amiflop.cdrive = device & 3;
drive1277drivers/block/amiflop.cfloppy = unit + drive;
drive1282drivers/block/amiflop.cdrive = device & 3;
drive1283drivers/block/amiflop.cfloppy = unit + drive;
drive1288drivers/block/amiflop.cif (drive != selected && writepending) {
drive1327drivers/block/amiflop.cif (!motor_on (drive)) {
drive1331drivers/block/amiflop.cfd_select (drive);
drive1332drivers/block/amiflop.cif (!fd_seek(drive, track)) {
drive1336drivers/block/amiflop.cif (get_track(drive, track) == -1) {
drive1344drivers/block/amiflop.cif (!motor_on (drive)) {
drive1348drivers/block/amiflop.cfd_select (drive);
drive1349drivers/block/amiflop.cif (!fd_seek(drive, track)) {
drive1353drivers/block/amiflop.cif (get_track(drive, track) == -1) {
drive1370drivers/block/amiflop.cflush_track_timer.data = drive;
drive1404drivers/block/amiflop.cint drive = inode->i_rdev & 3;
drive1411drivers/block/amiflop.cif (fd_ref[drive] > 1)
drive1414drivers/block/amiflop.cif (motor_on(drive) == 0)
drive1416drivers/block/amiflop.cif (fd_calibrate(drive) == 0)
drive1418drivers/block/amiflop.cfloppy_off(drive);
drive1421drivers/block/amiflop.cif (param < unit[drive].type->tracks)
drive1423drivers/block/amiflop.cfd_select(drive);
drive1424drivers/block/amiflop.cif (fd_seek(drive,param)!=0)
drive1427drivers/block/amiflop.cmemset(trackdata,FD_FILL_BYTE,unit[drive].sects*512);
drive1428drivers/block/amiflop.cnon_int_flush_track(drive);
drive1430drivers/block/amiflop.cfloppy_off(drive);
drive1436drivers/block/amiflop.cfloppy_off(drive);
drive1446drivers/block/amiflop.cgetprm.track=unit[drive].type->tracks/unit[drive].type->heads;
drive1447drivers/block/amiflop.cgetprm.head=unit[drive].type->heads;
drive1448drivers/block/amiflop.cgetprm.sect=unit[drive].sects;
drive1449drivers/block/amiflop.cgetprm.size=unit[drive].blocks;
drive1457drivers/block/amiflop.cput_fs_long(unit[drive].blocks,(long *)param);
drive1463drivers/block/amiflop.cif ((drive == selected) && (writepending)) {
drive1471drivers/block/amiflop.cunit[drive].type->read_size);
drive1474drivers/block/amiflop.cmemcpy_tofs((void *)param, raw_buf, unit[drive].type->read_size);
drive1475drivers/block/amiflop.creturn unit[drive].type->read_size;
drive1478drivers/block/amiflop.cprintk("fd_ioctl: unknown cmd %d for drive %d.",cmd,drive);
drive1487drivers/block/amiflop.cstatic unsigned long get_drive_id(int drive)
drive1492drivers/block/amiflop.cdrive&=3;
drive1496drivers/block/amiflop.cSELECT(SELMASK(drive));
drive1498drivers/block/amiflop.cDESELECT(SELMASK(drive));
drive1502drivers/block/amiflop.cSELECT(SELMASK(drive));
drive1504drivers/block/amiflop.cDESELECT(SELMASK(drive));
drive1509drivers/block/amiflop.cSELECT(SELMASK(drive));
drive1516drivers/block/amiflop.cDESELECT(SELMASK(drive));
drive1527drivers/block/amiflop.cif(drive == 0 && id == FD_NODRIVE)
drive1540drivers/block/amiflop.cint drive;
drive1543drivers/block/amiflop.cdrive = dev & 3;
drive1544drivers/block/amiflop.ccode = get_drive_id(drive);
drive1547drivers/block/amiflop.cunit[drive].type = NULL;
drive1558drivers/block/amiflop.cunit[drive].type = &drive_types[type];
drive1559drivers/block/amiflop.cunit[drive].track = -1;
drive1561drivers/block/amiflop.cunit[drive].disk = -1;
drive1562drivers/block/amiflop.cunit[drive].motor = 0;
drive1563drivers/block/amiflop.cunit[drive].busy = 0;
drive1564drivers/block/amiflop.cunit[drive].status = -1;
drive1568drivers/block/amiflop.cunit[drive].dtype=&data_types[system];
drive1569drivers/block/amiflop.cunit[drive].sects=data_types[system].sects*unit[drive].type->sect_mult;
drive1570drivers/block/amiflop.cunit[drive].blocks=unit[drive].type->heads*unit[drive].type->tracks*
drive1571drivers/block/amiflop.cunit[drive].sects;
drive1573drivers/block/amiflop.cfloppy_sizes[MINOR(dev)] = unit[drive].blocks >> 1;
drive1579drivers/block/amiflop.cint drive,found;
drive1583drivers/block/amiflop.cfor(drive=0;drive<FD_MAX_UNITS;drive++) {
drive1584drivers/block/amiflop.cfd_probe(drive);
drive1585drivers/block/amiflop.cif (unit[drive].type->code != FD_NODRIVE) {
drive1586drivers/block/amiflop.cprintk("fd%d ",drive);
drive1600drivers/block/amiflop.cint drive;
drive1604drivers/block/amiflop.cdrive = inode->i_rdev & 3;
drive1605drivers/block/amiflop.cold_dev = fd_device[drive];
drive1607drivers/block/amiflop.cif (fd_ref[drive])
drive1611drivers/block/amiflop.cif (unit[drive].type->code == FD_NODRIVE)
drive1614drivers/block/amiflop.cfd_ref[drive]++;
drive1615drivers/block/amiflop.cfd_device[drive] = inode->i_rdev;
drive1626drivers/block/amiflop.cfd_select (drive);
drive1628drivers/block/amiflop.cfd_deselect (drive);
drive1635drivers/block/amiflop.cunit[drive].dtype=&data_types[system];
drive1636drivers/block/amiflop.cunit[drive].sects=data_types[system].sects*unit[drive].type->sect_mult;
drive1637drivers/block/amiflop.cunit[drive].blocks=unit[drive].type->heads*unit[drive].type->tracks*
drive1638drivers/block/amiflop.cunit[drive].sects;
drive1640drivers/block/amiflop.cprintk("fd%d: accessing %s-disk with %s-layout\n",drive,unit[drive].type->name,
drive214drivers/block/ataflop.c#define  UD  unit[drive]
drive215drivers/block/ataflop.c#define  UDT  unit[drive].disktype
drive272drivers/block/ataflop.c#define  IS_BUFFERED(drive,side,track) \
drive273drivers/block/ataflop.c(BufferDrive == (drive) && BufferSide == (side) && BufferTrack == (track))
drive356drivers/block/ataflop.cstatic void fd_select_drive( int drive );
drive364drivers/block/ataflop.cstatic int do_format(kdev_t drive, struct atari_format_descr *desc);
drive365drivers/block/ataflop.cstatic void do_fd_action( int drive );
drive380drivers/block/ataflop.cstatic void setup_req_params( int drive );
drive385drivers/block/ataflop.cstatic void fd_probe( int drive );
drive386drivers/block/ataflop.cstatic int fd_test_drive_present( int drive );
drive424drivers/block/ataflop.cstatic void fd_select_drive( int drive )
drive429drivers/block/ataflop.cif (drive == SelectedDrive)
drive436drivers/block/ataflop.csound_ym.wd_data = (tmp | DSKDRVNONE) & ~(drive == 0 ? DSKDRV0 : DSKDRV1);
drive448drivers/block/ataflop.cSelectedDrive = drive;
drive520drivers/block/ataflop.cstatic int    drive = 0;
drive526drivers/block/ataflop.cif (++drive > 1 || !UD.connected)
drive527drivers/block/ataflop.cdrive = 0;
drive536drivers/block/ataflop.c~(drive == 0 ? DSKDRV0 : DSKDRV1);
drive541drivers/block/ataflop.cDPRINT(( "wpstat[%d] = %d\n", drive, stat ));
drive543drivers/block/ataflop.cset_bit (drive, &changed_floppies);
drive640drivers/block/ataflop.cint type, drive = MINOR(device) & 3;
drive643drivers/block/ataflop.cdrive, desc->track, desc->head, desc->sect_offset ));
drive701drivers/block/ataflop.cdo_fd_action( drive );
drive719drivers/block/ataflop.cstatic void do_fd_action( int drive )
drive725drivers/block/ataflop.cif (IS_BUFFERED( drive, ReqSide, ReqTrack )) {
drive730drivers/block/ataflop.csetup_req_params( drive );
drive750drivers/block/ataflop.cif (SelectedDrive != drive)
drive751drivers/block/ataflop.cfd_select_drive( drive );
drive1345drivers/block/ataflop.cunsigned int drive = MINOR(dev) & 0x03;
drive1352drivers/block/ataflop.cif (test_bit (drive, &fake_change)) {
drive1356drivers/block/ataflop.cif (test_bit (drive, &changed_floppies)) {
drive1372drivers/block/ataflop.cint drive = MINOR(dev) & 3;
drive1374drivers/block/ataflop.cif (test_bit (drive, &changed_floppies) || test_bit (drive, &fake_change)
drive1375drivers/block/ataflop.c|| unit[drive].disktype == 0)
drive1378drivers/block/ataflop.cclear_bit (drive, &fake_change);
drive1379drivers/block/ataflop.cclear_bit (drive, &changed_floppies);
drive1397drivers/block/ataflop.cstatic void setup_req_params( int drive )
drive1419drivers/block/ataflop.cint device, drive, type;
drive1443drivers/block/ataflop.cdrive = device & 3;
drive1448drivers/block/ataflop.cprintk( "Unknown Device: fd%d\n", drive );
drive1457drivers/block/ataflop.cfloppy_sizes[drive] = UDT->blocks >> 1;
drive1464drivers/block/ataflop.cprintk( "fd%d: invalid disk format", drive );
drive1469drivers/block/ataflop.cprintk( "fd%d: unsupported disk format", drive );
drive1475drivers/block/ataflop.cfloppy_sizes[drive] = UDT->blocks >> 1;
drive1491drivers/block/ataflop.csetup_req_params( drive );
drive1492drivers/block/ataflop.cdo_fd_action( drive );
drive1537drivers/block/ataflop.cint drive, type, error;
drive1547drivers/block/ataflop.cdrive = MINOR (device);
drive1548drivers/block/ataflop.ctype  = drive >> 2;
drive1549drivers/block/ataflop.cdrive &= 3;
drive1596drivers/block/ataflop.cif (fd_ref[drive] != 1 && fd_ref[drive] != -1)
drive1605drivers/block/ataflop.cfloppy_sizes[drive] = MAX_DISK_SIZE;
drive1609drivers/block/ataflop.creturn invalidate_drive (drive);
drive1617drivers/block/ataflop.cstatic void fd_probe( int drive )
drive1622drivers/block/ataflop.cif (!fd_test_drive_present( drive ))
drive1627drivers/block/ataflop.cswitch( UserSteprate[drive] ) {
drive1660drivers/block/ataflop.cstatic int fd_test_drive_present( int drive )
drive1666drivers/block/ataflop.cif (drive > 1) return( 0 );
drive1667drivers/block/ataflop.cfd_select_drive( drive );
drive1709drivers/block/ataflop.cint drive, cnt = 0;
drive1716drivers/block/ataflop.cfor( drive = 0; drive < FD_MAX_UNITS; drive++ ) {
drive1717drivers/block/ataflop.cfd_probe( drive );
drive1719drivers/block/ataflop.cprintk("fd%d\n", drive);
drive1752drivers/block/ataflop.cint drive, type;
drive1761drivers/block/ataflop.cdrive = MINOR (inode->i_rdev) & 3;
drive1767drivers/block/ataflop.cold_dev = fd_device[drive];
drive1769drivers/block/ataflop.cif (fd_ref[drive])
drive1773drivers/block/ataflop.cif (fd_ref[drive] == -1 || (fd_ref[drive] && filp->f_flags & O_EXCL))
drive1777drivers/block/ataflop.cfd_ref[drive] = -1;
drive1779drivers/block/ataflop.cfd_ref[drive]++;
drive1781drivers/block/ataflop.cfd_device[drive] = inode->i_rdev;
drive1811drivers/block/ataflop.cint drive;
drive1813drivers/block/ataflop.cdrive = inode->i_rdev & 3;
drive1820drivers/block/ataflop.cif (fd_ref[drive] < 0)
drive1821drivers/block/ataflop.cfd_ref[drive] = 0;
drive1822drivers/block/ataflop.celse if (!fd_ref[drive]--)
drive1825drivers/block/ataflop.cfd_ref[drive] = 0;
drive672drivers/block/cmd640.cstatic void cmd640_set_mode(ide_drive_t* drive, int pio_mode) {
drive678drivers/block/cmd640.cinterface_number = HWIF(drive)->index;
drive679drivers/block/cmd640.cdrive_number = drive->select.b.unit;
drive697drivers/block/cmd640.cstatic void cmd640_tune_drive(ide_drive_t *drive, byte pio_mode) {
drive707drivers/block/cmd640.ccmd640_set_mode(drive, pio_mode);
drive711drivers/block/cmd640.cinterface_number = HWIF(drive)->index;
drive712drivers/block/cmd640.cdrive_number = drive->select.b.unit;
drive714drivers/block/cmd640.cid = drive->id;
drive70drivers/block/dtc2278.cstatic void tune_dtc2278 (ide_drive_t *drive, byte pio)
drive75drivers/block/dtc2278.cpio = ide_get_best_pio_mode(drive);
drive93drivers/block/dtc2278.cdrive->io_32bit = 1;
drive94drivers/block/dtc2278.cHWIF(drive)->drives[!drive->select.b.unit].io_32bit = 1;
drive243drivers/block/floppy.c#define UDP (&drive_params[drive])
drive244drivers/block/floppy.c#define UDRS (&drive_state[drive])
drive245drivers/block/floppy.c#define UDRWE (&write_errors[drive])
drive246drivers/block/floppy.c#define UFDCS (&fdc_state[FDC(drive)])
drive536drivers/block/floppy.cstatic int fd_eject(int drive)
drive610drivers/block/floppy.cstatic void reschedule_timeout(int drive, const char *message, int marg)
drive612drivers/block/floppy.cif (drive == CURRENTD)
drive613drivers/block/floppy.cdrive = current_drive;
drive615drivers/block/floppy.cif (drive < 0 || drive > N_DRIVE) {
drive617drivers/block/floppy.cdrive=0;
drive681drivers/block/floppy.cstatic int disk_change(int drive)
drive683drivers/block/floppy.cint fdc=FDC(drive);
drive687drivers/block/floppy.cif (!(FDCS->dor & (0x10 << UNIT(drive))) ||
drive688drivers/block/floppy.c(FDCS->dor & 3) != UNIT(drive) ||
drive689drivers/block/floppy.cfdc != FDC(drive)){
drive691drivers/block/floppy.cDPRINT3("drive=%d fdc=%d dor=%x\n",drive, FDC(drive),
drive698drivers/block/floppy.cDPRINT1("checking disk change line for drive %d\n",drive);
drive715drivers/block/floppy.ccurrent_type[drive] != NULL)
drive718drivers/block/floppy.ccurrent_type[drive] = NULL;
drive738drivers/block/floppy.cregister unsigned char drive, unit, newdor,olddor;
drive748drivers/block/floppy.cdrive = REVDRIVE(fdc,unit);
drive754drivers/block/floppy.cdisk_change(drive);
drive761drivers/block/floppy.cdrive = REVDRIVE(fdc,unit);
drive785drivers/block/floppy.cint drive;
drive791drivers/block/floppy.cfor (drive = 0; drive < N_DRIVE; drive++)
drive792drivers/block/floppy.cif (FDC(drive) == fdc &&
drive798drivers/block/floppy.cstatic void set_fdc(int drive)
drive800drivers/block/floppy.cif (drive >= 0 && drive < N_DRIVE){
drive801drivers/block/floppy.cfdc = FDC(drive);
drive802drivers/block/floppy.ccurrent_drive = drive;
drive819drivers/block/floppy.cstatic int lock_fdc(int drive, int interruptible)
drive836drivers/block/floppy.creschedule_timeout(drive, "lock fdc", 0);
drive837drivers/block/floppy.cset_fdc(drive);
drive841drivers/block/floppy.c#define LOCK_FDC(drive,interruptible) \
drive842drivers/block/floppy.cif (lock_fdc(drive,interruptible)) return -EINTR;
drive883drivers/block/floppy.cstatic void floppy_off(unsigned int drive)
drive886drivers/block/floppy.cregister int fdc=FDC(drive);
drive888drivers/block/floppy.cif (!(FDCS->dor & (0x10 << UNIT(drive))))
drive891drivers/block/floppy.cdel_timer(motor_off_timer+drive);
drive899drivers/block/floppy.cmotor_off_timer[drive].expires = jiffies + UDP->spindown - delta;
drive901drivers/block/floppy.cadd_timer(motor_off_timer+drive);
drive911drivers/block/floppy.cint i, drive, saved_drive;
drive918drivers/block/floppy.cdrive = (saved_drive + i + 1) % N_DRIVE;
drive921drivers/block/floppy.cset_fdc(drive);
drive922drivers/block/floppy.cif (!(set_dor(fdc, ~3, UNIT(drive) | (0x10 << UNIT(drive))) &
drive923drivers/block/floppy.c(0x10 << UNIT(drive))))
drive926drivers/block/floppy.cset_dor(fdc, ~(0x10 << UNIT(drive)), 0);
drive2148drivers/block/floppy.cint drive=DRIVE(device);
drive2150drivers/block/floppy.cLOCK_FDC(drive,1);
drive2836drivers/block/floppy.cstatic int user_reset_fdc(int drive, int arg, int interruptible)
drive2841drivers/block/floppy.cLOCK_FDC(drive,interruptible);
drive2880drivers/block/floppy.cstatic inline const char *drive_name(int type, int drive)
drive3075drivers/block/floppy.cint drive, ret, ret2;
drive3080drivers/block/floppy.cfor (drive= 0; drive < N_DRIVE; drive++){
drive3081drivers/block/floppy.cif (FDC(drive) != fdc)
drive3083drivers/block/floppy.cif (drive == current_drive){
drive3134drivers/block/floppy.cstatic inline void clear_write_error(int drive)
drive3140drivers/block/floppy.cint drive, int type, kdev_t device)
drive3155drivers/block/floppy.cLOCK_FDC(drive,1);
drive3159drivers/block/floppy.cset_bit(drive, &fake_change);
drive3175drivers/block/floppy.cLOCK_FDC(drive,1);
drive3180drivers/block/floppy.cuser_params[drive] = *g;
drive3181drivers/block/floppy.cif (buffer_drive == drive)
drive3182drivers/block/floppy.cSUPBOUND(buffer_max, user_params[drive].sect);
drive3183drivers/block/floppy.ccurrent_type[drive] = &user_params[drive];
drive3184drivers/block/floppy.cfloppy_sizes[drive] = user_params[drive].size >> 1;
drive3194drivers/block/floppy.cif (DRS->maxblock > user_params[drive].sect || DRS->maxtrack)
drive3288drivers/block/floppy.cint i,drive,type;
drive3305drivers/block/floppy.cdrive = DRIVE(device);
drive3344drivers/block/floppy.cLOCK_FDC(drive,1);
drive3348drivers/block/floppy.cret=fd_eject(UNIT(drive));
drive3355drivers/block/floppy.cLOCK_FDC(drive,1);
drive3356drivers/block/floppy.ccurrent_type[drive] = NULL;
drive3357drivers/block/floppy.cfloppy_sizes[drive] = MAX_DISK_SIZE;
drive3363drivers/block/floppy.cdrive, type, device);
drive3368drivers/block/floppy.coutparam = (char *) current_type[drive];
drive3381drivers/block/floppy.cLOCK_FDC(drive,1);
drive3396drivers/block/floppy.cLOCK_FDC(drive,1);
drive3407drivers/block/floppy.coutparam = drive_name(type,drive);
drive3415drivers/block/floppy.cLOCK_FDC(drive,1);
drive3422drivers/block/floppy.creturn user_reset_fdc(drive, (int)param, 1);
drive3435drivers/block/floppy.cLOCK_FDC(drive,1);
drive3442drivers/block/floppy.cLOCK_FDC(drive,1);
drive3463drivers/block/floppy.cint drive;
drive3466drivers/block/floppy.cdrive=0;
drive3469drivers/block/floppy.cdrive=1;
drive3476drivers/block/floppy.cfor (drive=0; drive < N_DRIVE; drive++){
drive3490drivers/block/floppy.callowed_drive_mask |= 1 << drive;
drive3491drivers/block/floppy.cprintk("fd%d is %s", drive,
drive3494drivers/block/floppy.cprintk("fd%d is unknown type %d",drive,
drive3505drivers/block/floppy.cint drive = DRIVE(inode->i_rdev);
drive3518drivers/block/floppy.cint drive = DRIVE(inode->i_rdev);
drive3535drivers/block/floppy.cint drive;
drive3537drivers/block/floppy.cdrive = DRIVE(inode->i_rdev);
drive3562drivers/block/floppy.cint drive;
drive3572drivers/block/floppy.cdrive = DRIVE(inode->i_rdev);
drive3573drivers/block/floppy.cif (drive >= N_DRIVE ||
drive3574drivers/block/floppy.c!(allowed_drive_mask & (1 << drive)) ||
drive3575drivers/block/floppy.cfdc_state[FDC(drive)].version == FDC_NONE)
drive3630drivers/block/floppy.cif (buffer_drive == drive)
drive3663drivers/block/floppy.cint drive = DRIVE(dev);
drive3674drivers/block/floppy.clock_fdc(drive,0);
drive3681drivers/block/floppy.ctest_bit(drive, &fake_change) ||
drive3682drivers/block/floppy.c(!TYPE(dev) && !current_type[drive]))
drive3693drivers/block/floppy.c#define NO_GEOM (!current_type[drive] && !TYPE(dev))
drive3695drivers/block/floppy.cint drive=DRIVE(dev);
drive3700drivers/block/floppy.ctest_bit(drive, &fake_change) ||
drive3702drivers/block/floppy.clock_fdc(drive,0);
drive3704drivers/block/floppy.cif (!(cf || test_bit(drive, &fake_change) || NO_GEOM)){
drive3710drivers/block/floppy.cif (buffer_drive == drive)
drive3712drivers/block/floppy.cclear_bit(drive, &fake_change);
drive3972drivers/block/floppy.cint i,unit,drive;
drive4021drivers/block/floppy.cfor (drive = 0; drive < N_DRIVE; drive++) {
drive4115drivers/block/floppy.cint drive;
drive4148drivers/block/floppy.cfor (drive=0; drive < N_FDC * 4; drive++)
drive4149drivers/block/floppy.cif (motor_off_timer[drive].next)
drive4150drivers/block/floppy.cprintk("motor off timer %d still active\n", drive);
drive601drivers/block/genhd.cvoid resetup_one_dev(struct gendisk *dev, int drive)
drive604drivers/block/genhd.cint first_minor  = drive << dev->minor_shift;
drive624drivers/block/genhd.cint i, drive;
drive633drivers/block/genhd.cfor (drive = 0 ; drive < dev->nr_real ; drive++) {
drive634drivers/block/genhd.cint first_minor  = drive << dev->minor_shift;
drive206drivers/block/hd.cstatic int controller_ready(unsigned int drive, unsigned int head)
drive213drivers/block/hd.coutb_p(0xA0 | (drive<<4) | head, HD_CURRENT);
drive220drivers/block/hd.cstatic void hd_out(unsigned int drive,unsigned int nsect,unsigned int sect,
drive232drivers/block/hd.cif (!controller_ready(drive, head)) {
drive237drivers/block/hd.coutb_p(hd_info[drive].ctl,HD_CMD);
drive239drivers/block/hd.coutb_p(hd_info[drive].wpcom>>2,++port);
drive244drivers/block/hd.coutb_p(0xA0|(drive<<4)|head,++port);
drive962drivers/block/hd.cint cmos_disks, drive;
drive964drivers/block/hd.cfor (drive=0 ; drive<2 ; drive++) {
drive965drivers/block/hd.cbios_info[drive].cyl   = hd_info[drive].cyl = *(unsigned short *) BIOS;
drive966drivers/block/hd.cbios_info[drive].head  = hd_info[drive].head = *(2+BIOS);
drive967drivers/block/hd.cbios_info[drive].wpcom = hd_info[drive].wpcom = *(unsigned short *) (5+BIOS);
drive968drivers/block/hd.cbios_info[drive].ctl   = hd_info[drive].ctl = *(8+BIOS);
drive969drivers/block/hd.cbios_info[drive].lzone = hd_info[drive].lzone = *(unsigned short *) (12+BIOS);
drive970drivers/block/hd.cbios_info[drive].sect  = hd_info[drive].sect = *(14+BIOS);
drive972drivers/block/hd.cif (hd_info[drive].cyl && NR_HD == drive)
drive124drivers/block/ht6560b.cstatic void ht6560b_selectproc (ide_drive_t *drive)
drive130drivers/block/ht6560b.cbyte select = ht6560b_selects[HWIF(drive)->index][drive->select.b.unit];
drive131drivers/block/ht6560b.cbyte timing = ht6560b_timings[HWIF(drive)->index][drive->select.b.unit];
drive155drivers/block/ht6560b.cprintk("ht6560b: %s: select=%#x timing=%#x\n", drive->name, t, timing);
drive158drivers/block/ht6560b.cOUT_BYTE(drive->select.all,IDE_SELECT_REG);
drive196drivers/block/ht6560b.cstatic void tune_ht6560b (ide_drive_t *drive, byte pio)
drive201drivers/block/ht6560b.cif (drive->media != ide_disk)
drive204drivers/block/ht6560b.cpio = ide_get_best_pio_mode (drive);
drive208drivers/block/ht6560b.cunit = drive->select.b.unit;
drive209drivers/block/ht6560b.chwif = HWIF(drive)->index;
drive219drivers/block/ide-cd.c#define CDROM_CONFIG_FLAGS(drive) ((struct ide_cd_config_flags *)&((drive)->bios_sect))
drive231drivers/block/ide-cd.c#define CDROM_STATE_FLAGS(drive)  ((struct ide_cd_state_flags *)&((drive)->bios_head))
drive249drivers/block/ide-cd.cvoid cdrom_in_bytes (ide_drive_t *drive, void *buffer, uint bytecount)
drive252drivers/block/ide-cd.cide_input_data (drive, buffer, bytecount / 4);
drive260drivers/block/ide-cd.cvoid cdrom_out_bytes (ide_drive_t *drive, void *buffer, uint bytecount)
drive263drivers/block/ide-cd.cide_output_data (drive, buffer, bytecount / 4);
drive421drivers/block/ide-cd.cvoid cdrom_analyze_sense_data (ide_drive_t *drive, 
drive441drivers/block/ide-cd.cprintk ("ATAPI device %s:\n", drive->name);
drive526drivers/block/ide-cd.cdrive->name,
drive547drivers/block/ide-cd.cstatic void cdrom_queue_request_sense (ide_drive_t *drive, 
drive559drivers/block/ide-cd.creqbuf = &drive->cdrom_info.sense_data;
drive563drivers/block/ide-cd.cpc = &HWIF(drive)->request_sense_pc;
drive581drivers/block/ide-cd.crq = &HWIF(drive)->request_sense_request;
drive586drivers/block/ide-cd.c(void) ide_do_drive_cmd (drive, rq, ide_preempt);
drive590drivers/block/ide-cd.cstatic void cdrom_end_request (int uptodate, ide_drive_t *drive)
drive592drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive605drivers/block/ide-cd.ccdrom_analyze_sense_data (drive,
drive612drivers/block/ide-cd.cide_end_request (uptodate, HWGROUP(drive));
drive618drivers/block/ide-cd.cstatic void cdrom_saw_media_change (ide_drive_t *drive)
drive620drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->media_changed = 1;
drive621drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->toc_valid = 0;
drive622drivers/block/ide-cd.cdrive->cdrom_info.nsectors_buffered = 0;
drive628drivers/block/ide-cd.cstatic int cdrom_decode_status (ide_drive_t *drive, int good_stat,
drive631drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive647drivers/block/ide-cd.cdrive->name);
drive659drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive660drivers/block/ide-cd.cide_error (drive, "request sense failure", stat);
drive672drivers/block/ide-cd.ccdrom_saw_media_change (drive);
drive682drivers/block/ide-cd.cdrive->name);
drive685drivers/block/ide-cd.ccdrom_saw_media_change (drive);
drive686drivers/block/ide-cd.cprintk ("%s: media changed\n", drive->name);
drive689drivers/block/ide-cd.cide_dump_status (drive, "packet command error",
drive708drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive711drivers/block/ide-cd.ccdrom_queue_request_sense (drive, sem,
drive718drivers/block/ide-cd.ccdrom_saw_media_change (drive);
drive721drivers/block/ide-cd.cprintk ("%s : tray open\n", drive->name);
drive722drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive725drivers/block/ide-cd.ccdrom_saw_media_change (drive);
drive731drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive736drivers/block/ide-cd.cide_dump_status (drive, "command error", stat);
drive737drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive741drivers/block/ide-cd.cide_error (drive, "cdrom_decode_status", stat);
drive745drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive751drivers/block/ide-cd.ccdrom_queue_request_sense (drive,
drive768drivers/block/ide-cd.cstatic int cdrom_start_packet_command (ide_drive_t *drive, int xferlen,
drive772drivers/block/ide-cd.cif (ide_wait_stat (drive, 0, BUSY_STAT, WAIT_READY)) return 1;
drive781drivers/block/ide-cd.cOUT_BYTE (drive->ctl, IDE_CONTROL_REG);
drive783drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->drq_interrupt) {
drive784drivers/block/ide-cd.cide_set_handler (drive, handler, WAIT_CMD);
drive788drivers/block/ide-cd.c(*handler) (drive);
drive800drivers/block/ide-cd.cstatic int cdrom_transfer_packet_command (ide_drive_t *drive,
drive804drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->drq_interrupt) {
drive810drivers/block/ide-cd.cif (cdrom_decode_status (drive, DRQ_STAT, &stat_dum)) return 1;
drive813drivers/block/ide-cd.cif (ide_wait_stat (drive, DRQ_STAT, BUSY_STAT, WAIT_READY))
drive818drivers/block/ide-cd.cide_set_handler (drive, handler, WAIT_CMD);
drive821drivers/block/ide-cd.ccdrom_out_bytes (drive, cmd_buf, cmd_len);
drive839drivers/block/ide-cd.cstatic void cdrom_buffer_sectors (ide_drive_t *drive, unsigned long sector,
drive842drivers/block/ide-cd.cstruct cdrom_info *info = &drive->cdrom_info;
drive871drivers/block/ide-cd.ccdrom_in_bytes (drive, dest, SECTOR_SIZE);
drive881drivers/block/ide-cd.ccdrom_in_bytes (drive, dum, sizeof (dum));
drive893drivers/block/ide-cd.cint cdrom_read_check_ireason (ide_drive_t *drive, int len, int ireason)
drive902drivers/block/ide-cd.cdrive->name);
drive908drivers/block/ide-cd.ccdrom_out_bytes (drive, &dum, sizeof (dum));
drive914drivers/block/ide-cd.cdrive->name, ireason);
drive917drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive925drivers/block/ide-cd.cstatic void cdrom_read_intr (ide_drive_t *drive)
drive930drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive933drivers/block/ide-cd.cif (cdrom_decode_status (drive, 0, &stat)) return;
drive945drivers/block/ide-cd.cdrive->name, rq->current_nr_sectors);
drive946drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive948drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive954drivers/block/ide-cd.cif (cdrom_read_check_ireason (drive, len, ireason)) return;
drive961drivers/block/ide-cd.cdrive->name, len);
drive963drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive979drivers/block/ide-cd.ccdrom_in_bytes (drive, dum, sizeof (dum));
drive994drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive999drivers/block/ide-cd.ccdrom_buffer_sectors (drive,
drive1012drivers/block/ide-cd.ccdrom_in_bytes (drive
drive1026drivers/block/ide-cd.cide_set_handler (drive, &cdrom_read_intr, WAIT_CMD);
drive1034drivers/block/ide-cd.cstatic int cdrom_read_from_buffer (ide_drive_t *drive)
drive1036drivers/block/ide-cd.cstruct cdrom_info *info = &drive->cdrom_info;
drive1037drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1048drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1063drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1069drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1078drivers/block/ide-cd.cdrive->name, rq->sector);
drive1079drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive1094drivers/block/ide-cd.cstatic void cdrom_start_read_continuation (ide_drive_t *drive)
drive1097drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1120drivers/block/ide-cd.cdrive->name, rq->current_nr_sectors);
drive1121drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive1150drivers/block/ide-cd.c(void) cdrom_transfer_packet_command (drive, pc.c, sizeof (pc.c),
drive1158drivers/block/ide-cd.cstatic void cdrom_start_read (ide_drive_t *drive, unsigned int block)
drive1160drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1176drivers/block/ide-cd.cif (cdrom_read_from_buffer (drive))
drive1180drivers/block/ide-cd.cdrive->cdrom_info.nsectors_buffered = 0;
drive1183drivers/block/ide-cd.ccdrom_start_packet_command (drive, 32768,
drive1196drivers/block/ide-cd.ccdrom_lockdoor (ide_drive_t *drive, int lockflag,
drive1202drivers/block/ide-cd.cstatic void cdrom_pc_intr (ide_drive_t *drive)
drive1205drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1209drivers/block/ide-cd.cif (cdrom_decode_status (drive, 0, &stat)) return;
drive1230drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1233drivers/block/ide-cd.cdrive->name, pc->buflen);
drive1235drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1251drivers/block/ide-cd.cdrive->name);
drive1257drivers/block/ide-cd.ccdrom_out_bytes (drive, pc->buffer, thislen);
drive1263drivers/block/ide-cd.ccdrom_out_bytes (drive, &dum, sizeof (dum));
drive1278drivers/block/ide-cd.cdrive->name);
drive1284drivers/block/ide-cd.ccdrom_in_bytes (drive, pc->buffer, thislen);
drive1290drivers/block/ide-cd.ccdrom_in_bytes (drive, &dum, sizeof (dum));
drive1300drivers/block/ide-cd.cdrive->name, ireason);
drive1305drivers/block/ide-cd.cide_set_handler (drive, &cdrom_pc_intr, WAIT_CMD);
drive1309drivers/block/ide-cd.cstatic void cdrom_do_pc_continuation (ide_drive_t *drive)
drive1311drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1315drivers/block/ide-cd.ccdrom_transfer_packet_command (drive, pc->c,
drive1320drivers/block/ide-cd.cstatic void cdrom_do_packet_command (ide_drive_t *drive)
drive1323drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1332drivers/block/ide-cd.ccdrom_start_packet_command (drive, len, cdrom_do_pc_continuation);
drive1347drivers/block/ide-cd.cint cdrom_queue_packet_command (ide_drive_t *drive, struct packet_command *pc)
drive1364drivers/block/ide-cd.c(void) ide_do_drive_cmd (drive, &req, ide_wait);
drive1400drivers/block/ide-cd.cif (CDROM_STATE_FLAGS (drive)->door_locked == 0 &&
drive1404drivers/block/ide-cd.c(void) cdrom_lockdoor (drive, 1, NULL);
drive1415drivers/block/ide-cd.cvoid ide_do_rw_cdrom (ide_drive_t *drive, unsigned long block)
drive1417drivers/block/ide-cd.cstruct request *rq = HWGROUP(drive)->rq;
drive1420drivers/block/ide-cd.ccdrom_do_packet_command (drive);
drive1422drivers/block/ide-cd.ccdrom_end_request (1, drive);
drive1423drivers/block/ide-cd.cide_do_reset (drive);
drive1427drivers/block/ide-cd.ccdrom_end_request (0, drive);
drive1429drivers/block/ide-cd.ccdrom_start_read (drive, block);
drive1489drivers/block/ide-cd.ccdrom_check_status (ide_drive_t  *drive,
drive1499drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1505drivers/block/ide-cd.ccdrom_lockdoor (ide_drive_t *drive, int lockflag,
drive1516drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->no_doorlock)
drive1524drivers/block/ide-cd.cstat = cdrom_queue_packet_command (drive, &pc);
drive1528drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->door_locked = lockflag;
drive1535drivers/block/ide-cd.cdrive->name);
drive1536drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->no_doorlock = 1;
drive1538drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->door_locked = lockflag;
drive1548drivers/block/ide-cd.ccdrom_eject (ide_drive_t *drive, int ejectflag,
drive1558drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1563drivers/block/ide-cd.ccdrom_pause (ide_drive_t *drive, int pauseflag,
drive1573drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1578drivers/block/ide-cd.ccdrom_startstop (ide_drive_t *drive, int startflag,
drive1589drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1594drivers/block/ide-cd.ccdrom_read_capacity (ide_drive_t *drive, unsigned *capacity,
drive1612drivers/block/ide-cd.cstat = cdrom_queue_packet_command (drive, &pc);
drive1621drivers/block/ide-cd.ccdrom_read_tocentry (ide_drive_t *drive, int trackno, int msf_flag,
drive1638drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1644drivers/block/ide-cd.ccdrom_read_toc (ide_drive_t *drive,
drive1648drivers/block/ide-cd.cstruct atapi_toc *toc = drive->cdrom_info.toc;
drive1658drivers/block/ide-cd.cdrive->cdrom_info.toc = toc;
drive1662drivers/block/ide-cd.cprintk ("%s: No cdrom TOC buffer!\n", drive->name);
drive1668drivers/block/ide-cd.cif (CDROM_STATE_FLAGS (drive)->toc_valid)
drive1669drivers/block/ide-cd.c(void) cdrom_check_status (drive, NULL);
drive1671drivers/block/ide-cd.cif (CDROM_STATE_FLAGS (drive)->toc_valid) return 0;
drive1674drivers/block/ide-cd.cstat = cdrom_read_tocentry (drive, 0, 1, 0, (char *)&toc->hdr,
drive1681drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->toctracks_as_bcd) {
drive1692drivers/block/ide-cd.cstat = cdrom_read_tocentry (drive, 0, 1, 0, (char *)&toc->hdr,
drive1701drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->toctracks_as_bcd) {
drive1709drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd) {
drive1710drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->toctracks_as_bcd)
drive1721drivers/block/ide-cd.cstat = cdrom_read_tocentry (drive, 0, 1, 1,
drive1727drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd)
drive1738drivers/block/ide-cd.cstat = cdrom_read_capacity (drive, &toc->capacity, reqbuf);
drive1741drivers/block/ide-cd.cHWIF(drive)->gd->sizes[drive->select.b.unit << PARTN_BITS]
drive1743drivers/block/ide-cd.cdrive->part[0].nr_sects = toc->capacity * SECTORS_PER_FRAME;
drive1746drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->toc_valid = 1;
drive1753drivers/block/ide-cd.ccdrom_read_subchannel (ide_drive_t *drive, int format,
drive1770drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1776drivers/block/ide-cd.ccdrom_mode_sense (ide_drive_t *drive, int pageno, int modeflag,
drive1791drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1796drivers/block/ide-cd.ccdrom_mode_select (ide_drive_t *drive, int pageno, char *buf, int buflen,
drive1811drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1816drivers/block/ide-cd.ccdrom_play_lba_range_1 (ide_drive_t *drive, int lba_start, int lba_end,
drive1829drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->playmsf_as_bcd) {
drive1839drivers/block/ide-cd.creturn cdrom_queue_packet_command (drive, &pc);
drive1846drivers/block/ide-cd.ccdrom_play_lba_range (ide_drive_t *drive, int lba_start, int lba_end,
drive1861drivers/block/ide-cd.cstat = cdrom_play_lba_range_1 (drive, lba_start, lba_end,
drive1878drivers/block/ide-cd.cint cdrom_get_toc_entry (ide_drive_t *drive, int track,
drive1886drivers/block/ide-cd.cstat = cdrom_read_toc (drive, reqbuf);
drive1889drivers/block/ide-cd.ctoc = drive->cdrom_info.toc;
drive1906drivers/block/ide-cd.ccdrom_read_block (ide_drive_t *drive, int format, int lba,
drive1924drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->old_readcd)
drive1939drivers/block/ide-cd.cstat = cdrom_queue_packet_command (drive, &pc);
drive1946drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->old_readcd == 0) {
drive1949drivers/block/ide-cd.cdrive->name);
drive1950drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->old_readcd = 1;
drive1951drivers/block/ide-cd.creturn cdrom_read_block (drive, format, lba, buf, buflen,
drive1960drivers/block/ide-cd.cint ide_cdrom_ioctl (ide_drive_t *drive, struct inode *inode,
drive1967drivers/block/ide-cd.cif (drive->usage > 1)
drive1970drivers/block/ide-cd.cstat = cdrom_lockdoor (drive, 0, NULL);
drive1973drivers/block/ide-cd.creturn cdrom_eject (drive, 0, NULL);
drive1978drivers/block/ide-cd.cif (drive->usage > 1)
drive1981drivers/block/ide-cd.cstat = cdrom_eject (drive, 1, NULL);
drive1984drivers/block/ide-cd.creturn cdrom_lockdoor (drive, 1, NULL);
drive1988drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->eject_on_close = arg;
drive1993drivers/block/ide-cd.creturn cdrom_pause (drive, 1, NULL);
drive1996drivers/block/ide-cd.creturn cdrom_pause (drive, 0, NULL);
drive1999drivers/block/ide-cd.creturn cdrom_startstop (drive, 1, NULL);
drive2004drivers/block/ide-cd.cstat = cdrom_startstop (drive, 0, NULL);
drive2007drivers/block/ide-cd.creturn cdrom_eject (drive, 1, NULL);
drive2026drivers/block/ide-cd.creturn cdrom_play_lba_range (drive, lba_start, lba_end, NULL);
drive2041drivers/block/ide-cd.cstat = cdrom_get_toc_entry (drive, ti.cdti_trk0, &first_toc,
drive2044drivers/block/ide-cd.cstat = cdrom_get_toc_entry (drive, ti.cdti_trk1, &last_toc,
drive2054drivers/block/ide-cd.creturn cdrom_play_lba_range (drive, lba_start, lba_end, NULL);
drive2067drivers/block/ide-cd.cstat = cdrom_read_toc (drive, NULL);
drive2070drivers/block/ide-cd.ctoc = drive->cdrom_info.toc;
drive2090drivers/block/ide-cd.cstat = cdrom_get_toc_entry (drive, tocentry.cdte_track, &toce,
drive2122drivers/block/ide-cd.cstat = cdrom_read_subchannel (drive, 1, /* current position */
drive2128drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->subchan_as_bcd) {
drive2132drivers/block/ide-cd.cif (CDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd)
drive2181drivers/block/ide-cd.cstat = cdrom_mode_sense (drive, 0x0e, 0, buffer,
drive2184drivers/block/ide-cd.cstat = cdrom_mode_sense (drive, 0x0e, 1, mask,
drive2195drivers/block/ide-cd.creturn cdrom_mode_select (drive, 0x0e, buffer,
drive2208drivers/block/ide-cd.cstat = cdrom_mode_sense (drive, 0x0e, 0, buffer,
drive2234drivers/block/ide-cd.cstat = cdrom_read_toc (drive, NULL);
drive2237drivers/block/ide-cd.ctoc = drive->cdrom_info.toc;
drive2264drivers/block/ide-cd.cstat = cdrom_read_toc (drive, NULL);
drive2267drivers/block/ide-cd.ctoc = drive->cdrom_info.toc;
drive2296drivers/block/ide-cd.cstat = cdrom_read_block (drive, 1, lba, buf,
drive2333drivers/block/ide-cd.cstat = cdrom_read_toc (drive, NULL);
drive2336drivers/block/ide-cd.ctoc = drive->cdrom_info.toc;
drive2341drivers/block/ide-cd.cstat = cdrom_read_block (drive, format, lba, buf, blocksize,
drive2358drivers/block/ide-cd.cstat = cdrom_read_subchannel (drive, 2, /* get MCN */
drive2378drivers/block/ide-cd.creturn ide_do_drive_cmd (drive, &req, ide_wait);
drive2416drivers/block/ide-cd.cstat = cdrom_queue_packet_command (drive, &pc);
drive2438drivers/block/ide-cd.cint ide_cdrom_check_media_change (ide_drive_t *drive)
drive2442drivers/block/ide-cd.c(void) cdrom_check_status (drive, NULL);
drive2444drivers/block/ide-cd.cretval = CDROM_STATE_FLAGS (drive)->media_changed;
drive2445drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->media_changed = 0;
drive2451drivers/block/ide-cd.cint ide_cdrom_open (struct inode *ip, struct file *fp, ide_drive_t *drive)
drive2455drivers/block/ide-cd.c--drive->usage;
drive2460drivers/block/ide-cd.cif (drive->usage == 1) {
drive2466drivers/block/ide-cd.cstat = cdrom_check_status (drive, &my_reqbuf);
drive2470drivers/block/ide-cd.ccdrom_eject (drive, 1, &my_reqbuf);
drive2471drivers/block/ide-cd.cstat = cdrom_check_status (drive, &my_reqbuf);
drive2476drivers/block/ide-cd.c--drive->usage;
drive2481drivers/block/ide-cd.c(void) cdrom_lockdoor (drive, 1, &my_reqbuf);
drive2484drivers/block/ide-cd.c(void) cdrom_read_toc (drive, &my_reqbuf);
drive2496drivers/block/ide-cd.cide_drive_t *drive)
drive2498drivers/block/ide-cd.cif (drive->usage == 0) {
drive2502drivers/block/ide-cd.c(void) cdrom_lockdoor (drive, 0, NULL);
drive2505drivers/block/ide-cd.cif (CDROM_STATE_FLAGS (drive)->eject_on_close)
drive2506drivers/block/ide-cd.c(void) cdrom_eject (drive, 0, NULL);
drive2516drivers/block/ide-cd.cvoid ide_cdrom_setup (ide_drive_t *drive)
drive2518drivers/block/ide-cd.cblksize_size[HWIF(drive)->major][drive->select.b.unit << PARTN_BITS] =
drive2521drivers/block/ide-cd.cdrive->special.all = 0;
drive2522drivers/block/ide-cd.cdrive->ready_stat = 0;
drive2524drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->media_changed = 0;
drive2525drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->toc_valid     = 0;
drive2526drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->door_locked   = 0;
drive2529drivers/block/ide-cd.cCDROM_STATE_FLAGS (drive)->eject_on_close= 0;
drive2532drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->no_doorlock = 1;
drive2534drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->no_doorlock = 0;
drive2537drivers/block/ide-cd.cif (drive->id != NULL)
drive2538drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->drq_interrupt =
drive2539drivers/block/ide-cd.c((drive->id->config & 0x0060) == 0x20);
drive2541drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->drq_interrupt = 0;
drive2544drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->old_readcd = 0;
drive2545drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->toctracks_as_bcd = 0;
drive2546drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd = 0;
drive2547drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->playmsf_as_bcd = 0;
drive2548drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->subchan_as_bcd = 0;
drive2550drivers/block/ide-cd.cif (drive->id != NULL) {
drive2551drivers/block/ide-cd.cif (strcmp (drive->id->model, "V003S0DS") == 0 &&
drive2552drivers/block/ide-cd.cdrive->id->fw_rev[4] == '1' &&
drive2553drivers/block/ide-cd.cdrive->id->fw_rev[6] <= '2') {
drive2556drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->toctracks_as_bcd = 1;
drive2557drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd = 1;
drive2558drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->playmsf_as_bcd = 1;
drive2559drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->subchan_as_bcd = 1;
drive2562drivers/block/ide-cd.celse if (strcmp (drive->id->model,
drive2564drivers/block/ide-cd.cstrcmp (drive->id->fw_rev, "1.01") == 0) {
drive2566drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->tocaddr_as_bcd = 1;
drive2567drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->playmsf_as_bcd = 1;
drive2568drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->subchan_as_bcd = 1;
drive2571drivers/block/ide-cd.celse if (strcmp (drive->id->model, "WEARNES CDD-120") == 0 &&
drive2572drivers/block/ide-cd.cstrcmp (drive->id->fw_rev, "A1.1") == 0) {
drive2574drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->playmsf_as_bcd = 1;
drive2575drivers/block/ide-cd.cCDROM_CONFIG_FLAGS (drive)->subchan_as_bcd = 1;
drive2580drivers/block/ide-cd.cdrive->cdrom_info.toc               = NULL;
drive2581drivers/block/ide-cd.cdrive->cdrom_info.sector_buffer     = NULL;
drive2582drivers/block/ide-cd.cdrive->cdrom_info.sector_buffered   = 0;
drive2583drivers/block/ide-cd.cdrive->cdrom_info.nsectors_buffered = 0;
drive460drivers/block/ide-tape.c#define  IDETAPE_DATA_REG    (HWIF(drive)->io_base+IDETAPE_DATA_OFFSET)
drive461drivers/block/ide-tape.c#define IDETAPE_ERROR_REG    (HWIF(drive)->io_base+IDETAPE_ERROR_OFFSET)
drive462drivers/block/ide-tape.c#define  IDETAPE_IREASON_REG    (HWIF(drive)->io_base+IDETAPE_IREASON_OFFSET)
drive463drivers/block/ide-tape.c#define IDETAPE_RESERVED3_REG    (HWIF(drive)->io_base+IDETAPE_RESERVED3_OFFSET)
drive464drivers/block/ide-tape.c#define IDETAPE_BCOUNTL_REG    (HWIF(drive)->io_base+IDETAPE_BCOUNTL_OFFSET)
drive465drivers/block/ide-tape.c#define  IDETAPE_BCOUNTH_REG    (HWIF(drive)->io_base+IDETAPE_BCOUNTH_OFFSET)
drive466drivers/block/ide-tape.c#define IDETAPE_DRIVESEL_REG    (HWIF(drive)->io_base+IDETAPE_DRIVESEL_OFFSET)
drive467drivers/block/ide-tape.c#define  IDETAPE_STATUS_REG    (HWIF(drive)->io_base+IDETAPE_STATUS_OFFSET)
drive474drivers/block/ide-tape.c#define IDETAPE_FEATURES_REG    (HWIF(drive)->io_base+IDETAPE_FEATURES_OFFSET)
drive475drivers/block/ide-tape.c#define IDETAPE_ATACOMMAND_REG    (HWIF(drive)->io_base+IDETAPE_ATACOMMAND_OFFSET)
drive476drivers/block/ide-tape.c#define IDETAPE_CONTROL_REG    (HWIF(drive)->ctl_port)
drive597drivers/block/ide-tape.cide_drive_t *drive;
drive814drivers/block/ide-tape.cvoid idetape_input_data (ide_drive_t *drive,void *buffer, unsigned long bcount);
drive815drivers/block/ide-tape.cvoid idetape_output_data (ide_drive_t *drive,void *buffer, unsigned long bcount);
drive816drivers/block/ide-tape.cvoid idetape_discard_data (ide_drive_t *drive, unsigned long bcount);
drive822drivers/block/ide-tape.cvoid idetape_issue_packet_command  (ide_drive_t *drive,idetape_packet_command_t *pc,ide_handler_t *handler);
drive823drivers/block/ide-tape.cvoid idetape_pc_intr (ide_drive_t *drive);
drive829drivers/block/ide-tape.cvoid idetape_postpone_request (ide_drive_t *drive);
drive832drivers/block/ide-tape.cvoid idetape_put_back_postponed_request (ide_drive_t *drive);
drive833drivers/block/ide-tape.cvoid idetape_media_access_finished (ide_drive_t *drive);
drive839drivers/block/ide-tape.cvoid idetape_pc_callback (ide_drive_t *drive);
drive840drivers/block/ide-tape.cvoid idetape_retry_pc (ide_drive_t *drive);
drive842drivers/block/ide-tape.cvoid idetape_queue_pc_head (ide_drive_t *drive,idetape_packet_command_t *pc,struct request *rq);
drive843drivers/block/ide-tape.cvoid idetape_analyze_error (ide_drive_t *drive,idetape_request_sense_result_t *result);
drive845drivers/block/ide-tape.cidetape_packet_command_t *idetape_next_pc_storage (ide_drive_t *drive);
drive846drivers/block/ide-tape.cstruct request *idetape_next_rq_storage (ide_drive_t *drive);
drive853drivers/block/ide-tape.cvoid idetape_inquiry_callback (ide_drive_t *drive);
drive862drivers/block/ide-tape.cvoid idetape_read_position_callback (ide_drive_t *drive);
drive864drivers/block/ide-tape.cvoid idetape_read_callback (ide_drive_t *drive);
drive866drivers/block/ide-tape.cvoid idetape_write_callback (ide_drive_t *drive);
drive869drivers/block/ide-tape.cvoid idetape_request_sense_callback (ide_drive_t *drive);
drive894drivers/block/ide-tape.cint idetape_mtioctop (ide_drive_t *drive,short mt_op,int mt_count);
drive901drivers/block/ide-tape.cint idetape_space_over_filemarks (ide_drive_t *drive,short mt_op,int mt_count);
drive909drivers/block/ide-tape.cint idetape_add_chrdev_read_request (ide_drive_t *drive,int blocks,char *buffer);
drive916drivers/block/ide-tape.cint idetape_add_chrdev_write_request (ide_drive_t *drive,int blocks,char *buffer);
drive924drivers/block/ide-tape.cint idetape_queue_rw_tail (ide_drive_t *drive,int cmd,int blocks,char *buffer);
drive931drivers/block/ide-tape.cint idetape_queue_pc_tail (ide_drive_t *drive,idetape_packet_command_t *pc);
drive933drivers/block/ide-tape.cint idetape_position_tape (ide_drive_t *drive,unsigned long block);
drive934drivers/block/ide-tape.cint idetape_rewind_tape (ide_drive_t *drive);
drive935drivers/block/ide-tape.cint idetape_flush_tape_buffers (ide_drive_t *drive);
drive941drivers/block/ide-tape.cvoid idetape_get_mode_sense_results (ide_drive_t *drive);
drive956drivers/block/ide-tape.cidetape_pipeline_stage_t *idetape_kmalloc_stage (ide_drive_t *drive);
drive960drivers/block/ide-tape.cvoid idetape_increase_max_pipeline_stages (ide_drive_t *drive);
drive961drivers/block/ide-tape.cvoid idetape_add_stage_tail (ide_drive_t *drive,idetape_pipeline_stage_t *stage);
drive962drivers/block/ide-tape.cvoid idetape_remove_stage_head (ide_drive_t *drive);
drive963drivers/block/ide-tape.cvoid idetape_active_next_stage (ide_drive_t *drive);
drive964drivers/block/ide-tape.cvoid idetape_wait_for_pipeline (ide_drive_t *drive);
drive965drivers/block/ide-tape.cvoid idetape_discard_read_pipeline (ide_drive_t *drive);
drive966drivers/block/ide-tape.cvoid idetape_empty_write_pipeline (ide_drive_t *drive);
drive967drivers/block/ide-tape.cvoid idetape_insert_pipeline_into_queue (ide_drive_t *drive);
drive1022drivers/block/ide-tape.cint idetape_identify_device (ide_drive_t *drive,struct hd_driveid *id)
drive1165drivers/block/ide-tape.cidetape_chrdev.drive=drive;
drive1189drivers/block/ide-tape.cide_drive_t *drive;
drive1194drivers/block/ide-tape.cdrive=idetape_chrdev.drive;
drive1204drivers/block/ide-tape.cdrive->name,idetape_chrdev.name,major);
drive1222drivers/block/ide-tape.cvoid idetape_setup (ide_drive_t *drive)
drive1225drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1233drivers/block/ide-tape.cdrive->ready_stat = 0;      /* With an ATAPI device, we can issue packet commands */
drive1235drivers/block/ide-tape.cHWIF(drive)->tape_drive=drive;
drive1260drivers/block/ide-tape.cidetape_get_mode_sense_results (drive);
drive1347drivers/block/ide-tape.cvoid idetape_get_mode_sense_results (ide_drive_t *drive)
drive1351drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1360drivers/block/ide-tape.cretval=idetape_queue_pc_tail (drive,&pc);
drive1457drivers/block/ide-tape.cvoid idetape_issue_packet_command  (ide_drive_t *drive,idetape_packet_command_t *pc,ide_handler_t *handler)
drive1465drivers/block/ide-tape.ctape=&(drive->tape);
drive1487drivers/block/ide-tape.cprintk ("ide-tape: %s: I/O error, ",drive->name);
drive1498drivers/block/ide-tape.c(*pc->callback)(drive);
drive1520drivers/block/ide-tape.cdrive->using_dma=0;
drive1523drivers/block/ide-tape.cif (pc->request_transfer && pc->dma_recommended && drive->using_dma) {
drive1524drivers/block/ide-tape.cdma_ok=!(HWIF(drive)->dmaproc(pc->writing ? ide_dma_write : ide_dma_read, drive));
drive1528drivers/block/ide-tape.cOUT_BYTE (drive->ctl,IDETAPE_CONTROL_REG);
drive1532drivers/block/ide-tape.cOUT_BYTE (drive->select.all,IDETAPE_DRIVESEL_REG);
drive1534drivers/block/ide-tape.cide_set_handler (drive,handler,WAIT_CMD);      /* Set the interrupt routine */
drive1536drivers/block/ide-tape.cif (ide_wait_stat (drive,DRQ_STAT,BUSY_STAT,WAIT_READY)) {   /* Wait for DRQ to be ready - Assuming Accelerated DRQ */  
drive1553drivers/block/ide-tape.cide_do_reset (drive);
drive1557drivers/block/ide-tape.cide_output_data (drive,pc->c,12/4);      /* Send the actual packet */
drive1561drivers/block/ide-tape.c(void) (HWIF(drive)->dmaproc(ide_dma_begin, drive));
drive1576drivers/block/ide-tape.cvoid idetape_pc_intr (ide_drive_t *drive)
drive1579drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1588drivers/block/ide-tape.cif ((pc->dma_error=HWIF(drive)->dmaproc(ide_dma_status_bad, drive)))
drive1593drivers/block/ide-tape.cpc->actually_transferred=HWIF(drive)->dmaproc(ide_dma_transferred, drive);
drive1596drivers/block/ide-tape.c(void) (HWIF(drive)->dmaproc(ide_dma_abort, drive));  /* End DMA */
drive1624drivers/block/ide-tape.cprintk ("ide-tape: %s: I/O error, ",drive->name);
drive1628drivers/block/ide-tape.cide_do_reset (drive);
drive1632drivers/block/ide-tape.cidetape_retry_pc (drive);      /* Retry operation */
drive1638drivers/block/ide-tape.cidetape_postpone_request (drive);    /* Allow ide.c to handle other requests */
drive1648drivers/block/ide-tape.c(*pc->callback)(drive);      /* Command finished - Call the callback function */
drive1656drivers/block/ide-tape.cdrive->using_dma=0;
drive1657drivers/block/ide-tape.cide_do_reset (drive);
drive1667drivers/block/ide-tape.cide_do_reset (drive);
drive1673drivers/block/ide-tape.cide_do_reset (drive);
drive1683drivers/block/ide-tape.cidetape_discard_data (drive,bcount.all);
drive1684drivers/block/ide-tape.cide_set_handler (drive,&idetape_pc_intr,WAIT_CMD);
drive1697drivers/block/ide-tape.cidetape_discard_data (drive,bcount.all);
drive1698drivers/block/ide-tape.cide_set_handler (drive,&idetape_pc_intr,WAIT_CMD);
drive1706drivers/block/ide-tape.cidetape_output_data (drive,pc->current_position,bcount.all);  /* Write the current buffer */
drive1708drivers/block/ide-tape.cidetape_input_data (drive,pc->current_position,bcount.all);  /* Read the current buffer */
drive1715drivers/block/ide-tape.cide_set_handler (drive,&idetape_pc_intr,WAIT_CMD);    /* And set the interrupt handler again */
drive1724drivers/block/ide-tape.cvoid idetape_postpone_request (ide_drive_t *drive)
drive1727drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1741drivers/block/ide-tape.ctape->dsc_timer.data=(unsigned long) drive;
drive1749drivers/block/ide-tape.ctape->postponed_rq = rq = HWGROUP(drive)->rq;
drive1752drivers/block/ide-tape.cHWGROUP(drive)->rq = NULL;
drive1775drivers/block/ide-tape.cide_drive_t *drive=(ide_drive_t *) data;
drive1776drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1780drivers/block/ide-tape.cprintk ("%s: idetape_poll_for_dsc_direct called\n",drive->name);
drive1783drivers/block/ide-tape.cOUT_BYTE(drive->select.all,IDE_SELECT_REG);
drive1789drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);  /* request in the request queue */
drive1797drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);
drive1830drivers/block/ide-tape.cide_drive_t *drive=(ide_drive_t *) data;
drive1831drivers/block/ide-tape.cunsigned int major = HWIF(drive)->major;
drive1832drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive1839drivers/block/ide-tape.cprintk ("%s: idetape_poll_for_dsc called\n",drive->name);
drive1849drivers/block/ide-tape.cif (HWGROUP (drive)->rq == NULL) {
drive1864drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);
drive1928drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);
drive1940drivers/block/ide-tape.cif (next_rq == HWGROUP (drive)->rq)
drive1983drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);
drive2002drivers/block/ide-tape.cidetape_put_back_postponed_request (drive);
drive2023drivers/block/ide-tape.cvoid idetape_put_back_postponed_request (ide_drive_t *drive)
drive2026drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive2037drivers/block/ide-tape.c(void) ide_do_drive_cmd (drive, tape->postponed_rq, ide_next);
drive2051drivers/block/ide-tape.cvoid idetape_media_access_finished (ide_drive_t *drive)
drive2054drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2067drivers/block/ide-tape.cprintk ("ide-tape: %s: I/O error, ",drive->name);
drive2068drivers/block/ide-tape.cidetape_retry_pc (drive);      /* Retry operation */
drive2079drivers/block/ide-tape.c(*pc->callback)(drive);
drive2084drivers/block/ide-tape.cprintk ("ide-tape: %s: DSC timeout.\n",drive->name);
drive2093drivers/block/ide-tape.c(*pc->callback)(drive);
drive2105drivers/block/ide-tape.cvoid idetape_retry_pc (ide_drive_t *drive)
drive2113drivers/block/ide-tape.cpc=idetape_next_pc_storage (drive);
drive2114drivers/block/ide-tape.cnew_rq=idetape_next_rq_storage (drive);
drive2119drivers/block/ide-tape.cidetape_queue_pc_head (drive,pc,new_rq);
drive2126drivers/block/ide-tape.cvoid idetape_pc_callback (ide_drive_t *drive)
drive2132drivers/block/ide-tape.ctape=&(drive->tape);
drive2133drivers/block/ide-tape.crq=HWGROUP(drive)->rq;
drive2142drivers/block/ide-tape.cidetape_end_request (1,HWGROUP (drive));
drive2145drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2151drivers/block/ide-tape.cvoid idetape_read_callback (ide_drive_t *drive)
drive2154drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2155drivers/block/ide-tape.cstruct request *rq=HWGROUP(drive)->rq;
drive2166drivers/block/ide-tape.cidetape_end_request (1,HWGROUP (drive));
drive2174drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2179drivers/block/ide-tape.cvoid idetape_write_callback (ide_drive_t *drive)
drive2182drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2183drivers/block/ide-tape.cstruct request *rq=HWGROUP(drive)->rq;
drive2194drivers/block/ide-tape.cidetape_end_request (1,HWGROUP (drive));
drive2197drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2202drivers/block/ide-tape.cvoid idetape_inquiry_callback (ide_drive_t *drive)
drive2207drivers/block/ide-tape.ctape=&(drive->tape);
drive2210drivers/block/ide-tape.cidetape_pc_callback (drive);
drive2221drivers/block/ide-tape.cvoid idetape_input_data (ide_drive_t *drive,void *buffer, unsigned long bcount)
drive2230drivers/block/ide-tape.cide_input_data (drive,buffer,wcount);
drive2242drivers/block/ide-tape.cvoid idetape_output_data (ide_drive_t *drive,void *buffer, unsigned long bcount)
drive2251drivers/block/ide-tape.cide_output_data (drive,buffer,wcount);
drive2264drivers/block/ide-tape.cvoid idetape_discard_data (ide_drive_t *drive, unsigned long bcount)
drive2392drivers/block/ide-tape.cvoid idetape_request_sense_callback (ide_drive_t *drive)
drive2395drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2404drivers/block/ide-tape.cidetape_analyze_error (drive,(idetape_request_sense_result_t *) tape->pc->buffer);
drive2405drivers/block/ide-tape.cidetape_end_request (1,HWGROUP (drive));
drive2409drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2420drivers/block/ide-tape.cvoid idetape_analyze_error (ide_drive_t *drive,idetape_request_sense_result_t *result)
drive2423drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2752drivers/block/ide-tape.cvoid idetape_read_position_callback (ide_drive_t *drive)
drive2759drivers/block/ide-tape.ctape=&(drive->tape);
drive2765drivers/block/ide-tape.crq=HWGROUP(drive)->rq;
drive2779drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2787drivers/block/ide-tape.cidetape_end_request (1,HWGROUP (drive));
drive2792drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2805drivers/block/ide-tape.cint idetape_blkdev_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file,
drive2834drivers/block/ide-tape.cide_drive_t *drive = hwgroup->drive;
drive2836drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive2837drivers/block/ide-tape.cunsigned int major = HWIF(drive)->major;
drive2868drivers/block/ide-tape.cidetape_remove_stage_head (drive);
drive2873drivers/block/ide-tape.cidetape_increase_max_pipeline_stages (drive);
drive2874drivers/block/ide-tape.cide_end_drive_cmd (drive, 0, 0);
drive2878drivers/block/ide-tape.cidetape_active_next_stage (drive);
drive2888drivers/block/ide-tape.c(void) ide_do_drive_cmd (drive,tape->active_data_request,ide_end);
drive2890drivers/block/ide-tape.c(void) ide_do_drive_cmd (drive,tape->active_data_request,ide_next);
drive2893drivers/block/ide-tape.cide_end_drive_cmd (drive, 0, 0);
drive2900drivers/block/ide-tape.cvoid idetape_do_request (ide_drive_t *drive, struct request *rq, unsigned long block)
drive2903drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive2905drivers/block/ide-tape.cunsigned int major = HWIF(drive)->major;
drive2928drivers/block/ide-tape.cide_end_request (0,HWGROUP (drive));      /* Let the common code handle it */
drive2958drivers/block/ide-tape.cidetape_issue_packet_command (drive,tape->failed_pc,&idetape_pc_intr);
drive2968drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive2977drivers/block/ide-tape.cidetape_media_access_finished (drive);
drive3010drivers/block/ide-tape.cidetape_postpone_request (drive);  /* Allow ide.c to process requests from */
drive3014drivers/block/ide-tape.cpc=idetape_next_pc_storage (drive);
drive3023drivers/block/ide-tape.cidetape_issue_packet_command (drive,pc,&idetape_pc_intr);
drive3032drivers/block/ide-tape.cidetape_postpone_request (drive);  /* Allow ide.c to process requests from */
drive3036drivers/block/ide-tape.cpc=idetape_next_pc_storage (drive);
drive3045drivers/block/ide-tape.cidetape_issue_packet_command (drive,pc,&idetape_pc_intr);
drive3062drivers/block/ide-tape.cidetape_postpone_request (drive);  /* Allow ide.c to process requests from */
drive3067drivers/block/ide-tape.cidetape_issue_packet_command (drive,pc,&idetape_pc_intr);
drive3072drivers/block/ide-tape.cidetape_end_request (0,HWGROUP (drive));
drive3098drivers/block/ide-tape.cint idetape_queue_pc_tail (ide_drive_t *drive,idetape_packet_command_t *pc)
drive3105drivers/block/ide-tape.creturn ide_do_drive_cmd (drive, &rq, ide_wait);
drive3128drivers/block/ide-tape.cvoid idetape_queue_pc_head (ide_drive_t *drive,idetape_packet_command_t *pc,struct request *rq)
drive3131drivers/block/ide-tape.cunsigned int major = HWIF(drive)->major;
drive3134drivers/block/ide-tape.cbdev->current_request=HWGROUP (drive)->rq;    /* Since we may have taken it out */
drive3139drivers/block/ide-tape.c(void) ide_do_drive_cmd (drive, rq, ide_preempt);
drive3171drivers/block/ide-tape.cint idetape_queue_rw_tail (ide_drive_t *drive,int cmd,int blocks,char *buffer)
drive3174drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3192drivers/block/ide-tape.c(void) ide_do_drive_cmd (drive, &rq, ide_wait);
drive3202drivers/block/ide-tape.cint idetape_add_chrdev_read_request (ide_drive_t *drive,int blocks,char *buffer)
drive3205drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3221drivers/block/ide-tape.cnew_stage=idetape_kmalloc_stage (drive);
drive3225drivers/block/ide-tape.cidetape_add_stage_tail (drive,new_stage);
drive3227drivers/block/ide-tape.cnew_stage=idetape_kmalloc_stage (drive);
drive3230drivers/block/ide-tape.cidetape_insert_pipeline_into_queue (drive);
drive3240drivers/block/ide-tape.creturn (idetape_queue_rw_tail (drive,IDETAPE_READ_REQUEST,blocks,buffer));
drive3253drivers/block/ide-tape.cidetape_remove_stage_head (drive);
drive3275drivers/block/ide-tape.cint idetape_add_chrdev_write_request (ide_drive_t *drive,int blocks,char *buffer)
drive3278drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3288drivers/block/ide-tape.cnew_stage=idetape_kmalloc_stage (drive);
drive3302drivers/block/ide-tape.cnew_stage=idetape_kmalloc_stage (drive);
drive3311drivers/block/ide-tape.creturn (idetape_queue_rw_tail (drive,IDETAPE_WRITE_REQUEST,blocks,buffer));
drive3326drivers/block/ide-tape.cidetape_add_stage_tail (drive,new_stage);
drive3339drivers/block/ide-tape.cidetape_insert_pipeline_into_queue (drive);    
drive3349drivers/block/ide-tape.cvoid idetape_discard_read_pipeline (ide_drive_t *drive)
drive3352drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3375drivers/block/ide-tape.cidetape_remove_stage_head (drive);
drive3389drivers/block/ide-tape.cvoid idetape_wait_for_pipeline (ide_drive_t *drive)
drive3392drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3396drivers/block/ide-tape.cidetape_insert_pipeline_into_queue (drive);    
drive3412drivers/block/ide-tape.cvoid idetape_empty_write_pipeline (ide_drive_t *drive)
drive3415drivers/block/ide-tape.cidetape_tape_t *tape = &(drive->tape);
drive3435drivers/block/ide-tape.c(void) idetape_add_chrdev_write_request (drive,blocks,tape->merge_buffer);
drive3439drivers/block/ide-tape.cidetape_wait_for_pipeline (drive);
drive3536drivers/block/ide-tape.cidetape_packet_command_t *idetape_next_pc_storage (ide_drive_t *drive)
drive3541drivers/block/ide-tape.ctape=&(drive->tape);
drive3563drivers/block/ide-tape.cstruct request *idetape_next_rq_storage (ide_drive_t *drive)
drive3568drivers/block/ide-tape.ctape=&(drive->tape);
drive3586drivers/block/ide-tape.cint idetape_blkdev_open (struct inode *inode, struct file *filp, ide_drive_t *drive)
drive3589drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3609drivers/block/ide-tape.cvoid idetape_blkdev_release (struct inode *inode, struct file *filp, ide_drive_t *drive)
drive3612drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3653drivers/block/ide-tape.cide_drive_t *drive=idetape_chrdev.drive;
drive3654drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3664drivers/block/ide-tape.cidetape_empty_write_pipeline (drive);
drive3665drivers/block/ide-tape.cidetape_flush_tape_buffers (drive);
drive3674drivers/block/ide-tape.cbytes_read=idetape_queue_rw_tail (drive,IDETAPE_READ_REQUEST,0,tape->merge_buffer);
drive3698drivers/block/ide-tape.cbytes_read=idetape_add_chrdev_read_request (drive,tape->capabilities.ctl,tape->merge_buffer);
drive3706drivers/block/ide-tape.cbytes_read=idetape_add_chrdev_read_request (drive,tape->capabilities.ctl,tape->merge_buffer);
drive3721drivers/block/ide-tape.cide_drive_t *drive=idetape_chrdev.drive;
drive3722drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3732drivers/block/ide-tape.cidetape_discard_read_pipeline (drive);
drive3740drivers/block/ide-tape.cretval=idetape_queue_rw_tail (drive,IDETAPE_WRITE_REQUEST,0,tape->merge_buffer);
drive3764drivers/block/ide-tape.cretval=idetape_add_chrdev_write_request (drive,tape->capabilities.ctl,tape->merge_buffer);
drive3773drivers/block/ide-tape.cretval=idetape_add_chrdev_write_request (drive,tape->capabilities.ctl,tape->merge_buffer);
drive3821drivers/block/ide-tape.cide_drive_t *drive=idetape_chrdev.drive;
drive3822drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3834drivers/block/ide-tape.cidetape_empty_write_pipeline (drive);
drive3835drivers/block/ide-tape.cidetape_flush_tape_buffers (drive);
drive3839drivers/block/ide-tape.cidetape_discard_read_pipeline (drive);
drive3850drivers/block/ide-tape.creturn (idetape_mtioctop (drive,mtop.mt_op,mtop.mt_count));
drive3859drivers/block/ide-tape.cretval=idetape_queue_pc_tail (drive,&pc);
drive3867drivers/block/ide-tape.creturn (idetape_blkdev_ioctl (drive,inode,file,cmd,arg));
drive3924drivers/block/ide-tape.cint idetape_mtioctop (ide_drive_t *drive,short mt_op,int mt_count)
drive3927drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive3950drivers/block/ide-tape.creturn (idetape_space_over_filemarks (drive,mt_op,mt_count));
drive3960drivers/block/ide-tape.cidetape_discard_read_pipeline (drive);
drive3966drivers/block/ide-tape.cretval=idetape_queue_pc_tail (drive,&pc);
drive3971drivers/block/ide-tape.creturn (idetape_rewind_tape (drive));
drive3974drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive3976drivers/block/ide-tape.creturn (idetape_flush_tape_buffers (drive));
drive3979drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive3982drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive3984drivers/block/ide-tape.cretval=idetape_rewind_tape (drive);
drive3987drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive3989drivers/block/ide-tape.creturn (idetape_position_tape (drive,mt_count));
drive4006drivers/block/ide-tape.cint idetape_space_over_filemarks (ide_drive_t *drive,short mt_op,int mt_count)
drive4009drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4041drivers/block/ide-tape.cidetape_remove_stage_head (drive);
drive4046drivers/block/ide-tape.cidetape_remove_stage_head (drive);
drive4048drivers/block/ide-tape.cidetape_discard_read_pipeline (drive);
drive4063drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive4067drivers/block/ide-tape.cretval=idetape_mtioctop (drive,MTFSF,mt_count-count);
drive4069drivers/block/ide-tape.creturn (idetape_mtioctop (drive,MTBSF,1));
drive4074drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive4078drivers/block/ide-tape.cretval=idetape_mtioctop (drive,MTBSF,mt_count+count);
drive4080drivers/block/ide-tape.creturn (idetape_mtioctop (drive,MTFSF,1));
drive4094drivers/block/ide-tape.cide_drive_t *drive=idetape_chrdev.drive;
drive4095drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4139drivers/block/ide-tape.cif (idetape_rewind_tape (drive)) {
drive4156drivers/block/ide-tape.cide_drive_t *drive=idetape_chrdev.drive;
drive4157drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4167drivers/block/ide-tape.cidetape_empty_write_pipeline (drive);
drive4169drivers/block/ide-tape.cif (idetape_queue_pc_tail (drive,&pc))
drive4175drivers/block/ide-tape.cidetape_discard_read_pipeline (drive);
drive4177drivers/block/ide-tape.cidetape_wait_for_pipeline (drive);
drive4181drivers/block/ide-tape.cif (idetape_rewind_tape (drive))
drive4210drivers/block/ide-tape.cint idetape_position_tape (ide_drive_t *drive,unsigned long block)
drive4217drivers/block/ide-tape.cretval=idetape_queue_pc_tail (drive,&pc);
drive4224drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive4233drivers/block/ide-tape.cint idetape_rewind_tape (ide_drive_t *drive)
drive4243drivers/block/ide-tape.cretval=idetape_queue_pc_tail (drive,&pc);
drive4250drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive4253drivers/block/ide-tape.cint idetape_flush_tape_buffers (ide_drive_t *drive)
drive4259drivers/block/ide-tape.creturn (idetape_queue_pc_tail (drive,&pc));
drive4280drivers/block/ide-tape.cidetape_pipeline_stage_t *idetape_kmalloc_stage (ide_drive_t *drive)
drive4283drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4452drivers/block/ide-tape.cvoid idetape_increase_max_pipeline_stages (ide_drive_t *drive)
drive4455drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4480drivers/block/ide-tape.cvoid idetape_add_stage_tail (ide_drive_t *drive,idetape_pipeline_stage_t *stage)
drive4483drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4507drivers/block/ide-tape.cvoid idetape_remove_stage_head (ide_drive_t *drive)
drive4510drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4546drivers/block/ide-tape.cvoid idetape_insert_pipeline_into_queue (ide_drive_t *drive)
drive4549drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive4555drivers/block/ide-tape.cidetape_active_next_stage (drive);
drive4556drivers/block/ide-tape.c(void) (ide_do_drive_cmd (drive,tape->active_data_request,ide_end));
drive4565drivers/block/ide-tape.cvoid idetape_active_next_stage (ide_drive_t *drive)
drive4568drivers/block/ide-tape.cidetape_tape_t *tape=&(drive->tape);
drive274drivers/block/ide.c#define IS_PROMISE_DRIVE (HWIF(drive)->chipset == ide_promise)
drive308drivers/block/ide.c#define SET_RECOVERY_TIMER(drive) set_recovery_timer (drive)
drive312drivers/block/ide.c#define SET_RECOVERY_TIMER(drive)
drive350drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive352drivers/block/ide.cdrive->select.all    = (unit<<4)|0xa0;
drive353drivers/block/ide.cdrive->hwif      = hwif;
drive354drivers/block/ide.cdrive->ctl      = 0x08;
drive355drivers/block/ide.cdrive->ready_stat    = READY_STAT;
drive356drivers/block/ide.cdrive->bad_wstat    = BAD_W_STAT;
drive357drivers/block/ide.cdrive->special.b.recalibrate  = 1;
drive358drivers/block/ide.cdrive->special.b.set_geometry  = 1;
drive359drivers/block/ide.cdrive->name[0]      = 'h';
drive360drivers/block/ide.cdrive->name[1]      = 'd';
drive361drivers/block/ide.cdrive->name[2]      = 'a' + (index * MAX_DRIVES) + unit;
drive411drivers/block/ide.cvoid ide_input_data (ide_drive_t *drive, void *buffer, unsigned int wcount)
drive413drivers/block/ide.cunsigned short io_base  = HWIF(drive)->io_base;
drive415drivers/block/ide.cbyte io_32bit = drive->io_32bit;
drive423drivers/block/ide.cif (drive->unmask)
drive435drivers/block/ide.cvoid ide_output_data (ide_drive_t *drive, void *buffer, unsigned int wcount)
drive437drivers/block/ide.cunsigned short io_base  = HWIF(drive)->io_base;
drive439drivers/block/ide.cbyte io_32bit = drive->io_32bit;
drive447drivers/block/ide.cif (drive->unmask)
drive463drivers/block/ide.cvoid ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout)
drive465drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive469drivers/block/ide.cdrive->name, hwgroup->handler, handler);
drive507drivers/block/ide.cstatic unsigned long current_capacity (ide_drive_t  *drive)
drive509drivers/block/ide.cstruct hd_driveid *id = drive->id;
drive510drivers/block/ide.cunsigned long capacity = drive->cyl * drive->head * drive->sect;
drive512drivers/block/ide.cif (!drive->present)
drive514drivers/block/ide.cif (drive->media != ide_disk)
drive516drivers/block/ide.cdrive->select.b.lba = 0;
drive521drivers/block/ide.cdrive->select.b.lba = 1;
drive524drivers/block/ide.creturn (capacity - drive->sect0);
drive537drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive539drivers/block/ide.cif (drive->present && drive->media == ide_cdrom)
drive540drivers/block/ide.cide_cdrom_setup(drive);
drive543drivers/block/ide.cif (drive->present && drive->media == ide_tape)
drive544drivers/block/ide.cidetape_setup(drive);
drive546drivers/block/ide.cdrive->part[0].nr_sects = current_capacity(drive);
drive547drivers/block/ide.cif (!drive->present || drive->media != ide_disk) {
drive548drivers/block/ide.cdrive->part[0].start_sect = -1; /* skip partition check */
drive607drivers/block/ide.cstatic void atapi_reset_pollfunc (ide_drive_t *drive)
drive609drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive612drivers/block/ide.cOUT_BYTE (drive->select.all, IDE_SELECT_REG);
drive616drivers/block/ide.cprintk("%s: ATAPI reset complete\n", drive->name);
drive619drivers/block/ide.cide_set_handler (drive, &atapi_reset_pollfunc, HZ/20);
drive623drivers/block/ide.cprintk("%s: ATAPI reset timed-out, status=0x%02x\n", drive->name, stat);
drive624drivers/block/ide.cdo_reset1 (drive, 1);  /* do it the old fashioned way */
drive636drivers/block/ide.cstatic void reset_pollfunc (ide_drive_t *drive)
drive638drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive639drivers/block/ide.cide_hwif_t *hwif = HWIF(drive);
drive644drivers/block/ide.cide_set_handler (drive, &reset_pollfunc, HZ/20);
drive694drivers/block/ide.cstatic void do_reset1 (ide_drive_t *drive, int  do_not_try_atapi)
drive698drivers/block/ide.cide_hwif_t *hwif = HWIF(drive);
drive699drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive706drivers/block/ide.cif (drive->media != ide_disk) {
drive708drivers/block/ide.cif (!drive->keep_settings)
drive709drivers/block/ide.cdrive->unmask = 0;
drive710drivers/block/ide.cOUT_BYTE (drive->select.all, IDE_SELECT_REG);
drive714drivers/block/ide.cide_set_handler (drive, &atapi_reset_pollfunc, HZ/20);
drive753drivers/block/ide.cOUT_BYTE(drive->ctl|6,IDE_CONTROL_REG);  /* set SRST and nIEN */
drive755drivers/block/ide.cOUT_BYTE(drive->ctl|2,IDE_CONTROL_REG);  /* clear SRST, leave nIEN */
drive758drivers/block/ide.cide_set_handler (drive, &reset_pollfunc, HZ/20);
drive767drivers/block/ide.cvoid ide_do_reset (ide_drive_t *drive)
drive769drivers/block/ide.cdo_reset1 (drive, 0);
drive771drivers/block/ide.cif (drive->media == ide_tape)
drive772drivers/block/ide.cdrive->tape.reset_issued=1;
drive779drivers/block/ide.cvoid ide_end_drive_cmd (ide_drive_t *drive, byte stat, byte err)
drive782drivers/block/ide.cstruct request *rq = HWGROUP(drive)->rq;
drive796drivers/block/ide.cHWGROUP(drive)->rq = NULL;
drive806drivers/block/ide.cbyte ide_dump_status (ide_drive_t *drive, const char *msg, byte stat)
drive813drivers/block/ide.cprintk("%s: %s: status=0x%02x", drive->name, msg, stat);
drive815drivers/block/ide.cif (drive->media == ide_disk) {
drive834drivers/block/ide.cprintk("%s: %s: error=0x%02x", drive->name, msg, err);
drive836drivers/block/ide.cif (drive->media == ide_disk) {
drive860drivers/block/ide.cif (HWGROUP(drive)->rq)
drive861drivers/block/ide.cprintk(", sector=%ld", HWGROUP(drive)->rq->sector);
drive878drivers/block/ide.cstatic void try_to_flush_leftover_data (ide_drive_t *drive)
drive880drivers/block/ide.cint i = (drive->mult_count ? drive->mult_count : 1) * SECTOR_WORDS;
drive886drivers/block/ide.cide_input_data (drive, buffer, wcount);
drive893drivers/block/ide.cvoid ide_error (ide_drive_t *drive, const char *msg, byte stat)
drive898drivers/block/ide.cerr = ide_dump_status(drive, msg, stat);
drive899drivers/block/ide.cif ((rq = HWGROUP(drive)->rq) == NULL || drive == NULL)
drive904drivers/block/ide.cide_end_drive_cmd(drive, stat, err);
drive910drivers/block/ide.cif (drive->media == ide_disk && (stat & ERR_STAT)) {
drive918drivers/block/ide.ctry_to_flush_leftover_data(drive);
drive925drivers/block/ide.cif (drive->media == ide_tape) {
drive927drivers/block/ide.cidetape_end_request(0, HWGROUP(drive));
drive931drivers/block/ide.cide_end_request(0, HWGROUP(drive));
drive936drivers/block/ide.cide_do_reset(drive);
drive939drivers/block/ide.cdrive->special.b.recalibrate = 1;
drive947drivers/block/ide.cstatic void read_intr (ide_drive_t *drive)
drive955drivers/block/ide.cide_error(drive, "read_intr", stat);
drive958drivers/block/ide.cmsect = drive->mult_count;
drive960drivers/block/ide.crq = HWGROUP(drive)->rq;
drive967drivers/block/ide.cide_input_data(drive, rq->buffer, nsect * SECTOR_WORDS);
drive970drivers/block/ide.cdrive->name, rq->sector, rq->sector+nsect-1,
drive978drivers/block/ide.cide_end_request(1, HWGROUP(drive));
drive982drivers/block/ide.cide_set_handler (drive, &read_intr, WAIT_CMD);
drive989drivers/block/ide.cstatic void write_intr (ide_drive_t *drive)
drive993drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive996drivers/block/ide.cif (OK_STAT(stat=GET_STAT(),DRIVE_READY,drive->bad_wstat)) {
drive999drivers/block/ide.cdrive->name, rq->sector, (unsigned long) rq->buffer,
drive1011drivers/block/ide.cide_output_data (drive, rq->buffer, SECTOR_WORDS);
drive1012drivers/block/ide.cide_set_handler (drive, &write_intr, WAIT_CMD);
drive1017drivers/block/ide.cide_error(drive, "write_intr", stat);
drive1024drivers/block/ide.cvoid ide_multwrite (ide_drive_t *drive, unsigned int mcount)
drive1026drivers/block/ide.cstruct request *rq = &HWGROUP(drive)->wrq;
drive1034drivers/block/ide.cide_output_data(drive, rq->buffer, nsect<<7);
drive1037drivers/block/ide.cdrive->name, rq->sector, (unsigned long) rq->buffer,
drive1047drivers/block/ide.cpanic("%s: buffer list corrupted\n", drive->name);
drive1059drivers/block/ide.cstatic void multwrite_intr (ide_drive_t *drive)
drive1063drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive1066drivers/block/ide.cif (OK_STAT(stat=GET_STAT(),DRIVE_READY,drive->bad_wstat)) {
drive1069drivers/block/ide.cide_multwrite(drive, drive->mult_count);
drive1070drivers/block/ide.cide_set_handler (drive, &multwrite_intr, WAIT_CMD);
drive1084drivers/block/ide.cide_error(drive, "multwrite_intr", stat);
drive1091drivers/block/ide.cstatic void ide_cmd(ide_drive_t *drive, byte cmd, byte nsect, ide_handler_t *handler)
drive1093drivers/block/ide.cide_set_handler (drive, handler, WAIT_CMD);
drive1094drivers/block/ide.cOUT_BYTE(drive->ctl,IDE_CONTROL_REG);
drive1102drivers/block/ide.cstatic void set_multmode_intr (ide_drive_t *drive)
drive1108drivers/block/ide.cdrive->mult_count = drive->mult_req;
drive1110drivers/block/ide.cdrive->mult_req = drive->mult_count = 0;
drive1111drivers/block/ide.cdrive->special.b.recalibrate = 1;
drive1112drivers/block/ide.c(void) ide_dump_status(drive, "set_multmode", stat);
drive1119drivers/block/ide.cstatic void set_geometry_intr (ide_drive_t *drive)
drive1125drivers/block/ide.cide_error(drive, "set_geometry_intr", stat);
drive1131drivers/block/ide.cstatic void recal_intr (ide_drive_t *drive)
drive1137drivers/block/ide.cide_error(drive, "recal_intr", stat);
drive1143drivers/block/ide.cstatic void drive_cmd_intr (ide_drive_t *drive)
drive1145drivers/block/ide.cstruct request *rq = HWGROUP(drive)->rq;
drive1151drivers/block/ide.cide_input_data(drive, &args[4], args[3] * SECTOR_WORDS);
drive1155drivers/block/ide.cide_end_drive_cmd (drive, stat, GET_ERR());
drive1157drivers/block/ide.cide_error(drive, "drive_cmd", stat); /* calls ide_end_drive_cmd */
drive1164drivers/block/ide.cstatic inline void do_special (ide_drive_t *drive)
drive1166drivers/block/ide.cspecial_t *s = &drive->special;
drive1169drivers/block/ide.cprintk("%s: do_special: 0x%02x\n", drive->name, s->all);
drive1173drivers/block/ide.cif (drive->media == ide_disk) {
drive1174drivers/block/ide.cOUT_BYTE(drive->sect,IDE_SECTOR_REG);
drive1175drivers/block/ide.cOUT_BYTE(drive->cyl,IDE_LCYL_REG);
drive1176drivers/block/ide.cOUT_BYTE(drive->cyl>>8,IDE_HCYL_REG);
drive1177drivers/block/ide.cOUT_BYTE(((drive->head-1)|drive->select.all)&0xBF,IDE_SELECT_REG);
drive1179drivers/block/ide.cide_cmd(drive, WIN_SPECIFY, drive->sect, &set_geometry_intr);
drive1183drivers/block/ide.cif (drive->media == ide_disk && !IS_PROMISE_DRIVE)
drive1184drivers/block/ide.cide_cmd(drive, WIN_RESTORE, drive->sect, &recal_intr);
drive1186drivers/block/ide.cide_tuneproc_t *tuneproc = HWIF(drive)->tuneproc;
drive1189drivers/block/ide.ctuneproc(drive, drive->pio_req);
drive1193drivers/block/ide.cif (drive->media == ide_disk) {
drive1194drivers/block/ide.cif (drive->id && drive->mult_req > drive->id->max_multsect)
drive1195drivers/block/ide.cdrive->mult_req = drive->id->max_multsect;
drive1197drivers/block/ide.cide_cmd(drive, WIN_SETMULT, drive->mult_req, &set_multmode_intr);
drive1199drivers/block/ide.cdrive->mult_req = 0;
drive1203drivers/block/ide.cprintk("%s: bad special flag: 0x%02x\n", drive->name, special);
drive1218drivers/block/ide.cint ide_wait_stat (ide_drive_t *drive, byte good, byte bad, unsigned long timeout)
drive1228drivers/block/ide.cide_error(drive, "status error", stat);
drive1243drivers/block/ide.cide_error(drive, "status timeout", GET_STAT());
drive1252drivers/block/ide.cstatic inline void do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block)
drive1254drivers/block/ide.cide_hwif_t *hwif = HWIF(drive);
drive1260drivers/block/ide.cOUT_BYTE(drive->ctl,IDE_CONTROL_REG);
drive1268drivers/block/ide.cif (drive->select.b.lba || use_promise_io) {
drive1270drivers/block/ide.cif (drive->select.b.lba) {
drive1274drivers/block/ide.cdrive->name, (rq->cmd==READ)?"read":"writ",
drive1280drivers/block/ide.cOUT_BYTE(((block>>8)&0x0f)|drive->select.all,io_base+IDE_SELECT_OFFSET);
drive1283drivers/block/ide.ctrack = block / drive->sect;
drive1284drivers/block/ide.csect  = block % drive->sect + 1;
drive1286drivers/block/ide.chead  = track % drive->head;
drive1287drivers/block/ide.ccyl   = track / drive->head;
drive1290drivers/block/ide.cOUT_BYTE(head|drive->select.all,io_base+IDE_SELECT_OFFSET);
drive1293drivers/block/ide.cdrive->name, (rq->cmd==READ)?"read":"writ", cyl,
drive1299drivers/block/ide.cdo_promise_io (drive, rq);
drive1305drivers/block/ide.cif (drive->using_dma && !(HWIF(drive)->dmaproc(ide_dma_read, drive)))
drive1308drivers/block/ide.cide_set_handler(drive, &read_intr, WAIT_CMD);
drive1309drivers/block/ide.cOUT_BYTE(drive->mult_count ? WIN_MULTREAD : WIN_READ, io_base+IDE_COMMAND_OFFSET);
drive1314drivers/block/ide.cif (drive->using_dma && !(HWIF(drive)->dmaproc(ide_dma_write, drive)))
drive1317drivers/block/ide.cOUT_BYTE(drive->mult_count ? WIN_MULTWRITE : WIN_WRITE, io_base+IDE_COMMAND_OFFSET);
drive1318drivers/block/ide.cif (ide_wait_stat(drive, DATA_READY, drive->bad_wstat, WAIT_DRQ)) {
drive1319drivers/block/ide.cprintk("%s: no DRQ after issuing %s\n", drive->name,
drive1320drivers/block/ide.cdrive->mult_count ? "MULTWRITE" : "WRITE");
drive1323drivers/block/ide.cif (!drive->unmask)
drive1325drivers/block/ide.cif (drive->mult_count) {
drive1326drivers/block/ide.cHWGROUP(drive)->wrq = *rq; /* scratchpad */
drive1327drivers/block/ide.cide_set_handler (drive, &multwrite_intr, WAIT_CMD);
drive1328drivers/block/ide.cide_multwrite(drive, drive->mult_count);
drive1330drivers/block/ide.cide_set_handler (drive, &write_intr, WAIT_CMD);
drive1331drivers/block/ide.cide_output_data(drive, rq->buffer, SECTOR_WORDS);
drive1335drivers/block/ide.cprintk("%s: bad command: %d\n", drive->name, rq->cmd);
drive1336drivers/block/ide.cide_end_request(0, HWGROUP(drive));
drive1343drivers/block/ide.cstatic void execute_drive_cmd (ide_drive_t *drive, struct request *rq)
drive1349drivers/block/ide.cdrive->name, args[0], args[1], args[2], args[3]);
drive1352drivers/block/ide.cide_cmd(drive, args[0], args[1], &drive_cmd_intr);
drive1360drivers/block/ide.cprintk("%s: DRIVE_CMD (null)\n", drive->name);
drive1362drivers/block/ide.cide_end_drive_cmd(drive, GET_STAT(), GET_ERR());
drive1374drivers/block/ide.cide_drive_t *drive;
drive1387drivers/block/ide.cdrive = &hwif->drives[unit];
drive1390drivers/block/ide.cprintk("%s: block not locked\n", drive->name);
drive1396drivers/block/ide.cif ((blockend < block) || (blockend > drive->part[minor&PARTN_MASK].nr_sects)) {
drive1397drivers/block/ide.cprintk("%s%c: bad access: block=%ld, count=%ld\n", drive->name,
drive1401drivers/block/ide.cblock += drive->part[minor&PARTN_MASK].start_sect + drive->sect0;
drive1403drivers/block/ide.cif (block == 0 && drive->remap_0_to_1)
drive1406drivers/block/ide.c((ide_hwgroup_t *)hwif->hwgroup)->drive = drive;
drive1415drivers/block/ide.cSELECT_DRIVE(hwif,drive);
drive1416drivers/block/ide.cif (ide_wait_stat(drive, drive->ready_stat, BUSY_STAT|DRQ_STAT, WAIT_READY)) {
drive1417drivers/block/ide.cprintk("%s: drive not ready for command\n", drive->name);
drive1421drivers/block/ide.cif (!drive->special.all) {
drive1423drivers/block/ide.cexecute_drive_cmd(drive, rq);
drive1427drivers/block/ide.cswitch (drive->media) {
drive1429drivers/block/ide.cdo_rw_disk (drive, rq, block);
drive1433drivers/block/ide.cide_do_rw_cdrom (drive, block);
drive1438drivers/block/ide.cidetape_do_request (drive, rq, block);
drive1444drivers/block/ide.cdrive->name, drive->media);
drive1448drivers/block/ide.cdo_rw_disk (drive, rq, block); /* simpler and faster */
drive1452drivers/block/ide.cdo_special(drive);
drive1484drivers/block/ide.cif (hwif->sharing_irq && hwgroup->drive) /* set nIEN */
drive1485drivers/block/ide.cOUT_BYTE(hwgroup->drive->ctl|2,hwif->ctl_port);
drive1560drivers/block/ide.cide_drive_t   *drive   = hwgroup->drive;
drive1569drivers/block/ide.chandler(drive);
drive1572drivers/block/ide.cprintk("%s: marginal timeout\n", drive->name);
drive1576drivers/block/ide.c(void) hwgroup->hwif->dmaproc (ide_dma_abort, drive);
drive1577drivers/block/ide.cide_error(drive, "irq timeout", GET_STAT());
drive1619drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive1620drivers/block/ide.cif (!drive->present)
drive1622drivers/block/ide.cSELECT_DRIVE(hwif,drive);
drive1623drivers/block/ide.cif (!OK_STAT(stat=GET_STAT(), drive->ready_stat, BAD_STAT))
drive1624drivers/block/ide.c(void) ide_dump_status(drive, "unexpected_intr", stat);
drive1626drivers/block/ide.ctry_to_flush_leftover_data(drive);
drive1630drivers/block/ide.cSELECT_DRIVE(hwif,hwgroup->drive); /* Ugh.. probably interrupts current I/O */
drive1642drivers/block/ide.cide_drive_t *drive = hwgroup->drive;
drive1645drivers/block/ide.cif (drive->unmask)
drive1647drivers/block/ide.chandler(drive);
drive1650drivers/block/ide.cSET_RECOVERY_TIMER(HWIF(drive));
drive1673drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive1674drivers/block/ide.cif (drive->present)
drive1675drivers/block/ide.creturn drive;
drive1734drivers/block/ide.cint ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t action)
drive1737drivers/block/ide.cunsigned int major = HWIF(drive)->major;
drive1746drivers/block/ide.crq->rq_dev = MKDEV(major,(drive->select.b.unit)<<PARTN_BITS);
drive1754drivers/block/ide.cHWGROUP(drive)->next_hwif = HWIF(drive);
drive1761drivers/block/ide.cHWGROUP(drive)->rq = NULL;
drive1763drivers/block/ide.cif (HWGROUP(drive)->rq == NULL) {  /* is this necessary (?) */
drive1783drivers/block/ide.cide_drive_t *drive;
drive1786drivers/block/ide.cif ((drive = get_info_ptr(inode->i_rdev)) == NULL)
drive1790drivers/block/ide.cwhile (drive->busy)
drive1791drivers/block/ide.csleep_on(&drive->wqueue);
drive1792drivers/block/ide.cdrive->usage++;
drive1795drivers/block/ide.cif (drive->media == ide_cdrom)
drive1796drivers/block/ide.creturn ide_cdrom_open (inode, filp, drive);
drive1799drivers/block/ide.cif (drive->media == ide_tape)
drive1800drivers/block/ide.creturn idetape_blkdev_open (inode, filp, drive);
drive1802drivers/block/ide.cif (drive->removable) {
drive1813drivers/block/ide.c(void) ide_do_drive_cmd(drive, &rq, ide_wait);
drive1824drivers/block/ide.cide_drive_t *drive;
drive1826drivers/block/ide.cif ((drive = get_info_ptr(inode->i_rdev)) != NULL) {
drive1828drivers/block/ide.cdrive->usage--;
drive1830drivers/block/ide.cif (drive->media == ide_cdrom) {
drive1831drivers/block/ide.cide_cdrom_release (inode, file, drive);
drive1836drivers/block/ide.cif (drive->media == ide_tape) {
drive1837drivers/block/ide.cidetape_blkdev_release (inode, file, drive);
drive1841drivers/block/ide.cif (drive->removable && !drive->usage) {
drive1847drivers/block/ide.c(void) ide_do_drive_cmd(drive, &rq, ide_wait);
drive1862drivers/block/ide.cide_drive_t *drive;
drive1866drivers/block/ide.cif ((drive = get_info_ptr(i_rdev)) == NULL)
drive1870drivers/block/ide.cminor = drive->select.b.unit << PARTN_BITS;
drive1873drivers/block/ide.cif (drive->busy || (drive->usage > 1)) {
drive1877drivers/block/ide.cdrive->busy = 1;
drive1881drivers/block/ide.cif (drive->part[p].nr_sects > 0) {
drive1887drivers/block/ide.cdrive->part[p].start_sect = 0;
drive1888drivers/block/ide.cdrive->part[p].nr_sects   = 0;
drive1891drivers/block/ide.cdrive->part[0].nr_sects = current_capacity(drive);
drive1892drivers/block/ide.cif (drive->media == ide_disk)
drive1893drivers/block/ide.cresetup_one_dev(HWIF(drive)->gd, drive->select.b.unit);
drive1895drivers/block/ide.cdrive->busy = 0;
drive1896drivers/block/ide.cwake_up(&drive->wqueue);
drive1916drivers/block/ide.cide_drive_t *drive;
drive1922drivers/block/ide.cif ((drive = get_info_ptr(inode->i_rdev)) == NULL)
drive1929drivers/block/ide.cif (!loc || drive->media != ide_disk) return -EINVAL;
drive1932drivers/block/ide.cput_user(drive->bios_head, (byte *) &loc->heads);
drive1933drivers/block/ide.cput_user(drive->bios_sect, (byte *) &loc->sectors);
drive1934drivers/block/ide.cput_user(drive->bios_cyl, (unsigned short *) &loc->cylinders);
drive1935drivers/block/ide.cput_user((unsigned)drive->part[MINOR(inode->i_rdev)&PARTN_MASK].start_sect,
drive1955drivers/block/ide.creturn write_fs_long(arg, drive->part[MINOR(inode->i_rdev)&PARTN_MASK].nr_sects);
drive1961drivers/block/ide.creturn write_fs_long(arg, drive->keep_settings);
drive1964drivers/block/ide.creturn write_fs_long(arg, drive->unmask);
drive1967drivers/block/ide.creturn write_fs_long(arg, drive->using_dma);
drive1970drivers/block/ide.creturn write_fs_long(arg, drive->io_32bit);
drive1973drivers/block/ide.creturn write_fs_long(arg, drive->mult_count);
drive1978drivers/block/ide.cif (drive->id == NULL)
drive1980drivers/block/ide.cerr = verify_area(VERIFY_WRITE, (char *)arg, sizeof(*drive->id));
drive1982drivers/block/ide.cmemcpy_tofs((char *)arg, (char *)drive->id, sizeof(*drive->id));
drive1986drivers/block/ide.creturn write_fs_long(arg, drive->bad_wstat == BAD_R_STAT);
drive1991drivers/block/ide.cif (drive->media == ide_cdrom)
drive1994drivers/block/ide.cif (!drive->id || !(drive->id->capability & 1) || !HWIF(drive)->dmaproc)
drive2009drivers/block/ide.cif (!(HWIF(drive)->dmaproc)) {
drive2013drivers/block/ide.cdrive->using_dma = arg;
drive2016drivers/block/ide.cdrive->keep_settings = arg;
drive2019drivers/block/ide.cif (arg && HWIF(drive)->no_unmask) {
drive2023drivers/block/ide.cdrive->unmask = arg;
drive2026drivers/block/ide.cdrive->bad_wstat = arg ? BAD_R_STAT : BAD_W_STAT;
drive2031drivers/block/ide.cdrive->io_32bit = arg;
drive2033drivers/block/ide.cif (HWIF(drive)->chipset == ide_dtc2278)
drive2034drivers/block/ide.cHWIF(drive)->drives[!drive->select.b.unit].io_32bit = arg;
drive2045drivers/block/ide.cif (drive->id && arg > drive->id->max_multsect)
drive2049drivers/block/ide.cif (drive->special.b.set_multmode) {
drive2053drivers/block/ide.cdrive->mult_req = arg;
drive2054drivers/block/ide.cdrive->special.b.set_multmode = 1;
drive2056drivers/block/ide.c(void) ide_do_drive_cmd (drive, &rq, ide_wait);
drive2057drivers/block/ide.creturn (drive->mult_count == arg) ? 0 : -EIO;
drive2065drivers/block/ide.cerr = ide_do_drive_cmd(drive, &rq, ide_wait);
drive2080drivers/block/ide.cerr = ide_do_drive_cmd(drive, &rq, ide_wait);
drive2092drivers/block/ide.cif (!HWIF(drive)->tuneproc)
drive2096drivers/block/ide.cdrive->pio_req = (int) arg;
drive2097drivers/block/ide.cdrive->special.b.set_pio = 1;
drive2105drivers/block/ide.cif (drive->media == ide_cdrom)
drive2106drivers/block/ide.creturn ide_cdrom_ioctl(drive, inode, file, cmd, arg);
drive2109drivers/block/ide.cif (drive->media == ide_tape)
drive2110drivers/block/ide.creturn idetape_blkdev_ioctl(drive, inode, file, cmd, arg);
drive2118drivers/block/ide.cide_drive_t *drive;
drive2120drivers/block/ide.cif ((drive = get_info_ptr(i_rdev)) == NULL)
drive2123drivers/block/ide.cif (drive->media == ide_cdrom)
drive2124drivers/block/ide.creturn ide_cdrom_check_media_change (drive);
drive2126drivers/block/ide.cif (drive->removable) /* for disks */
drive2158drivers/block/ide.cstatic inline void do_identify (ide_drive_t *drive, byte cmd)
drive2164drivers/block/ide.cid = drive->id = kmalloc (SECTOR_WORDS*4, GFP_KERNEL);
drive2165drivers/block/ide.cide_input_data(drive, id, SECTOR_WORDS);  /* read 512 bytes of id info */
drive2173drivers/block/ide.cprintk("%s: EATA SCSI HBA %.10s\n", drive->name, id->model);
drive2174drivers/block/ide.cdrive->present = 0;
drive2199drivers/block/ide.cprintk("%s: %s, ATAPI ", drive->name, id->model);
drive2201drivers/block/ide.cif (HWIF(drive)->is_promise2) {
drive2203drivers/block/ide.cdrive->present = 0;
drive2212drivers/block/ide.cdrive->media = ide_cdrom;
drive2213drivers/block/ide.cdrive->present = 1;
drive2214drivers/block/ide.cdrive->removable = 1;
drive2223drivers/block/ide.cif (idetape_identify_device (drive,id)) {
drive2224drivers/block/ide.cdrive->media = ide_tape;
drive2225drivers/block/ide.cdrive->present = 1;
drive2226drivers/block/ide.cdrive->removable = 1;
drive2227drivers/block/ide.cif (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL) {
drive2228drivers/block/ide.cif (!HWIF(drive)->dmaproc(ide_dma_check, drive))
drive2234drivers/block/ide.cdrive->present = 0;
drive2243drivers/block/ide.cdrive->present = 0;
drive2247drivers/block/ide.cdrive->present = 0;
drive2256drivers/block/ide.cdrive->removable = 1;
drive2261drivers/block/ide.cdrive->removable = 0;
drive2262drivers/block/ide.cif (drive->select.all & (1<<4)) {
drive2263drivers/block/ide.cdrive->present = 0;
drive2268drivers/block/ide.cdrive->media = ide_disk;
drive2270drivers/block/ide.cif (!drive->present) {
drive2271drivers/block/ide.cdrive->present = 1;
drive2272drivers/block/ide.cdrive->cyl     = drive->bios_cyl  = id->cyls;
drive2273drivers/block/ide.cdrive->head    = drive->bios_head = id->heads;
drive2274drivers/block/ide.cdrive->sect    = drive->bios_sect = id->sectors;
drive2290drivers/block/ide.cdrive->cyl  = id->cur_cyls;
drive2291drivers/block/ide.cdrive->head = id->cur_heads;
drive2292drivers/block/ide.cdrive->sect = id->cur_sectors;
drive2295drivers/block/ide.ccapacity = drive->cyl * drive->head * drive->sect;
drive2304drivers/block/ide.cif ((!drive->head || drive->head > 16) && id->heads && id->heads <= 16) {
drive2305drivers/block/ide.cdrive->cyl  = id->cyls;
drive2306drivers/block/ide.cdrive->head = id->heads;
drive2307drivers/block/ide.cdrive->sect = id->sectors;
drive2310drivers/block/ide.cif (drive->sect == drive->bios_sect && drive->head == drive->bios_head) {
drive2311drivers/block/ide.cif (drive->cyl > drive->bios_cyl)
drive2312drivers/block/ide.cdrive->bios_cyl = drive->cyl;
drive2315drivers/block/ide.c(void) current_capacity (drive); /* initialize LBA selection */
drive2318drivers/block/ide.cdrive->name, id->model, current_capacity(drive)/2048L, id->buf_size/2,
drive2319drivers/block/ide.cdrive->select.b.lba ? "LBA, " : "",
drive2320drivers/block/ide.cdrive->bios_cyl, drive->bios_head, drive->bios_sect);
drive2322drivers/block/ide.cdrive->mult_count = 0;
drive2324drivers/block/ide.cdrive->mult_req = INITIAL_MULT_COUNT;
drive2325drivers/block/ide.cif (drive->mult_req > id->max_multsect)
drive2326drivers/block/ide.cdrive->mult_req = id->max_multsect;
drive2327drivers/block/ide.cif (drive->mult_req || ((id->multsect_valid & 1) && id->multsect))
drive2328drivers/block/ide.cdrive->special.b.set_multmode = 1;
drive2330drivers/block/ide.cif (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL) {
drive2331drivers/block/ide.cif (!(HWIF(drive)->dmaproc(ide_dma_check, drive)))
drive2358drivers/block/ide.cstatic int try_to_identify (ide_drive_t *drive, byte cmd)
drive2364drivers/block/ide.cif (!HWIF(drive)->irq) {    /* already got an IRQ? */
drive2367drivers/block/ide.cOUT_BYTE(drive->ctl,IDE_CONTROL_REG);  /* enable device irq */
drive2372drivers/block/ide.cprintk("%s: probing with STATUS instead of ALTSTATUS\n", drive->name);
drive2379drivers/block/ide.cif(promise_cmd(drive,PROMISE_IDENTIFY))
drive2388drivers/block/ide.cif (!HWIF(drive)->irq)
drive2400drivers/block/ide.cdo_identify(drive, cmd); /* drive returned ID */
drive2401drivers/block/ide.cif (drive->present && drive->media != ide_tape) {
drive2402drivers/block/ide.cide_tuneproc_t *tuneproc = HWIF(drive)->tuneproc;
drive2403drivers/block/ide.cif (tuneproc != NULL && drive->autotune == 1)
drive2404drivers/block/ide.ctuneproc(drive, 255);  /* auto-tune PIO mode */
drive2411drivers/block/ide.cif (!HWIF(drive)->irq) {
drive2414drivers/block/ide.cHWIF(drive)->irq = irqs;
drive2416drivers/block/ide.cprintk("%s: IRQ probe failed (%d)\n", drive->name, irqs);
drive2418drivers/block/ide.cif (HWIF(drive)->chipset == ide_cmd640) {
drive2420drivers/block/ide.cprintk("%s: Hmmm.. probably a driver problem.\n", drive->name);
drive2421drivers/block/ide.cprintk("%s: cmd640 reg 09h == 0x%02x\n", drive->name, get_cmd640_reg(9));
drive2422drivers/block/ide.cprintk("%s: cmd640 reg 51h == 0x%02x\n", drive->name, get_cmd640_reg(0x51));
drive2446drivers/block/ide.cstatic int do_probe (ide_drive_t *drive, byte cmd)
drive2451drivers/block/ide.cif (drive->present) {  /* avoid waiting for inappropriate probes */
drive2452drivers/block/ide.cif ((drive->media != ide_disk) && (cmd == WIN_IDENTIFY))
drive2458drivers/block/ide.cdrive->name, drive->present, drive->media,
drive2461drivers/block/ide.chwif = HWIF(drive);
drive2462drivers/block/ide.cSELECT_DRIVE(hwif,drive);
drive2463drivers/block/ide.cOUT_BYTE(drive->select.all,IDE_SELECT_REG);  /* select target drive */
drive2465drivers/block/ide.cif (IN_BYTE(IDE_SELECT_REG) != drive->select.all && !drive->present) {
drive2471drivers/block/ide.c|| drive->present || cmd == WIN_PIDENTIFY)
drive2473drivers/block/ide.cif ((rc = try_to_identify(drive,cmd)))   /* send cmd and wait */
drive2474drivers/block/ide.crc = try_to_identify(drive,cmd); /* failed: try again */
drive2476drivers/block/ide.cprintk("%s: no response (status = 0x%02x)\n", drive->name, GET_STAT());
drive2481drivers/block/ide.cif (drive->select.b.unit != 0) {
drive2495drivers/block/ide.cstatic inline byte probe_for_drive (ide_drive_t *drive)
drive2497drivers/block/ide.cif (drive->noprobe)      /* skip probing? */
drive2498drivers/block/ide.creturn drive->present;
drive2499drivers/block/ide.cif (do_probe(drive, WIN_IDENTIFY) >= 2) { /* if !(success||timed-out) */
drive2501drivers/block/ide.c(void) do_probe(drive, WIN_PIDENTIFY); /* look for ATAPI device */
drive2504drivers/block/ide.cif (!drive->present)
drive2506drivers/block/ide.cif (drive->id == NULL) {    /* identification failed? */
drive2507drivers/block/ide.cif (drive->media == ide_disk) {
drive2509drivers/block/ide.cdrive->name, drive->cyl, drive->head, drive->sect);
drive2512drivers/block/ide.celse if (drive->media == ide_cdrom) {
drive2513drivers/block/ide.cprintk("%s: ATAPI cdrom (?)\n", drive->name);
drive2517drivers/block/ide.cdrive->present = 0;  /* nuke it */
drive2560drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive2561drivers/block/ide.cif ((cmos_disks & (0xf0 >> (unit*4))) && !drive->present && !drive->nobios) {
drive2562drivers/block/ide.cdrive->cyl   = drive->bios_cyl  = *(unsigned short *)BIOS;
drive2563drivers/block/ide.cdrive->head  = drive->bios_head = *(BIOS+2);
drive2564drivers/block/ide.cdrive->sect  = drive->bios_sect = *(BIOS+14);
drive2565drivers/block/ide.cdrive->ctl   = *(BIOS+8);
drive2566drivers/block/ide.cdrive->present = 1;
drive2593drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive2594drivers/block/ide.cif (drive->present) {
drive2595drivers/block/ide.cdrive->present = 0;
drive2596drivers/block/ide.cprintk("%s: ERROR, PORTS ALREADY IN USE\n", drive->name);
drive2612drivers/block/ide.cide_drive_t *drive = &hwif->drives[unit];
drive2613drivers/block/ide.c(void) probe_for_drive (drive);
drive2614drivers/block/ide.cif (drive->present && drive->media == ide_disk) {
drive2615drivers/block/ide.cif ((!drive->head || drive->head > 16) && !drive->select.b.lba) {
drive2617drivers/block/ide.cdrive->name, drive->head);
drive2618drivers/block/ide.cdrive->present = 0;
drive2621drivers/block/ide.cif (drive->present && !hwif->present) {
drive2745drivers/block/ide.cide_drive_t *drive;
drive2763drivers/block/ide.cdrive = &hwif->drives[unit];
drive2766drivers/block/ide.cdrive->nobios = 1;  /* drop into "noprobe" */
drive2768drivers/block/ide.cdrive->noprobe = 1;
drive2771drivers/block/ide.cdrive->bad_wstat = BAD_R_STAT;
drive2775drivers/block/ide.cdrive->present = 1;
drive2776drivers/block/ide.cdrive->media = ide_cdrom;
drive2783drivers/block/ide.cdrive->autotune = 1;
drive2786drivers/block/ide.cdrive->autotune = 2;
drive2789drivers/block/ide.cdrive->media  = ide_disk;
drive2790drivers/block/ide.cdrive->cyl  = drive->bios_cyl  = vals[0];
drive2791drivers/block/ide.cdrive->head  = drive->bios_head = vals[1];
drive2792drivers/block/ide.cdrive->sect  = drive->bios_sect = vals[2];
drive2793drivers/block/ide.cdrive->present  = 1;
drive2794drivers/block/ide.cdrive->forced_geom = 1;
drive2948drivers/block/ide.cide_drive_t *drive;
drive2953drivers/block/ide.cif ((drive = get_info_ptr(i_rdev)) == NULL || drive->forced_geom)
drive2956drivers/block/ide.cif (xparm > 1 && xparm <= drive->bios_head && drive->bios_sect == 63)
drive2961drivers/block/ide.cif (drive->id) {
drive2962drivers/block/ide.cdrive->cyl  = drive->id->cyls;
drive2963drivers/block/ide.cdrive->head = drive->id->heads;
drive2964drivers/block/ide.cdrive->sect = drive->id->sectors;
drive2966drivers/block/ide.cdrive->bios_cyl  = drive->cyl;
drive2967drivers/block/ide.cdrive->bios_head = drive->head;
drive2968drivers/block/ide.cdrive->bios_sect = drive->sect;
drive2969drivers/block/ide.cdrive->special.b.set_geometry = 1;
drive2971drivers/block/ide.ctracks = drive->bios_cyl * drive->bios_head * drive->bios_sect / 63;
drive2972drivers/block/ide.cdrive->bios_sect = 63;
drive2974drivers/block/ide.cdrive->bios_head = xparm;
drive2975drivers/block/ide.cdrive->bios_cyl = tracks / drive->bios_head;
drive2977drivers/block/ide.cwhile (drive->bios_cyl >= 1024) {
drive2978drivers/block/ide.cdrive->bios_head = *heads;
drive2979drivers/block/ide.cdrive->bios_cyl = tracks / drive->bios_head;
drive2985drivers/block/ide.cdrive->remap_0_to_1 = 1;
drive2990drivers/block/ide.cdrive->sect0 = 63;
drive2991drivers/block/ide.cdrive->bios_cyl = (tracks - 1) / drive->bios_head;
drive2996drivers/block/ide.cdrive->part[0].nr_sects = current_capacity(drive);
drive2997drivers/block/ide.cprintk("[%d/%d/%d]", drive->bios_cyl, drive->bios_head, drive->bios_sect);
drive3053drivers/block/ide.chwgroup->drive   = &hwif->drives[0];
drive3055drivers/block/ide.chwgroup->drive   = &hwif->drives[1];
drive77drivers/block/ide.h#define HWIF(drive)    ((ide_hwif_t *)((drive)->hwif))
drive78drivers/block/ide.h#define HWGROUP(drive)    ((ide_hwgroup_t *)(HWIF(drive)->hwgroup))
drive91drivers/block/ide.h#define IDE_DATA_REG    (HWIF(drive)->io_base+IDE_DATA_OFFSET)
drive92drivers/block/ide.h#define IDE_ERROR_REG    (HWIF(drive)->io_base+IDE_ERROR_OFFSET)
drive93drivers/block/ide.h#define IDE_NSECTOR_REG    (HWIF(drive)->io_base+IDE_NSECTOR_OFFSET)
drive94drivers/block/ide.h#define IDE_SECTOR_REG    (HWIF(drive)->io_base+IDE_SECTOR_OFFSET)
drive95drivers/block/ide.h#define IDE_LCYL_REG    (HWIF(drive)->io_base+IDE_LCYL_OFFSET)
drive96drivers/block/ide.h#define IDE_HCYL_REG    (HWIF(drive)->io_base+IDE_HCYL_OFFSET)
drive97drivers/block/ide.h#define IDE_SELECT_REG    (HWIF(drive)->io_base+IDE_SELECT_OFFSET)
drive98drivers/block/ide.h#define IDE_STATUS_REG    (HWIF(drive)->io_base+IDE_STATUS_OFFSET)
drive99drivers/block/ide.h#define IDE_CONTROL_REG    (HWIF(drive)->ctl_port)
drive144drivers/block/ide.h#define SELECT_DRIVE(hwif,drive)        \
drive147drivers/block/ide.hhwif->selectproc(drive);      \
drive149drivers/block/ide.hOUT_BYTE((drive)->select.all, hwif->io_base+IDE_SELECT_OFFSET); \
drive152drivers/block/ide.h#define SELECT_DRIVE(hwif,drive)  OUT_BYTE((drive)->select.all, hwif->io_base+IDE_SELECT_OFFSET);
drive446drivers/block/ide.hide_drive_t    *drive;  /* current drive */
drive476drivers/block/ide.h#define SET_RECOVERY_TIMER(drive) ide_set_recovery_timer (drive)
drive478drivers/block/ide.h#define SET_RECOVERY_TIMER(drive)
drive484drivers/block/ide.hvoid ide_input_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
drive489drivers/block/ide.hvoid ide_output_data (ide_drive_t *drive, void *buffer, unsigned int wcount);
drive495drivers/block/ide.hvoid ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout);
drive500drivers/block/ide.hbyte ide_dump_status (ide_drive_t *drive, const char *msg, byte stat);
drive506drivers/block/ide.hvoid ide_error (ide_drive_t *drive, const char *msg, byte stat);
drive523drivers/block/ide.hint ide_wait_stat (ide_drive_t *drive, byte good, byte bad, unsigned long timeout);
drive590drivers/block/ide.hint ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t action);
drive596drivers/block/ide.hvoid ide_end_drive_cmd (ide_drive_t *drive, byte stat, byte err);
drive602drivers/block/ide.hvoid ide_multwrite (ide_drive_t *drive, unsigned int mcount);
drive632drivers/block/ide.hint idetape_identify_device (ide_drive_t *drive,struct hd_driveid *id);
drive640drivers/block/ide.hvoid idetape_setup (ide_drive_t *drive);
drive647drivers/block/ide.hvoid idetape_do_request (ide_drive_t *drive, struct request *rq, unsigned long block);
drive660drivers/block/ide.hint idetape_blkdev_ioctl (ide_drive_t *drive, struct inode *inode, struct file *file,
drive662drivers/block/ide.hint idetape_blkdev_open (struct inode *inode, struct file *filp, ide_drive_t *drive);
drive663drivers/block/ide.hvoid idetape_blkdev_release (struct inode *inode, struct file *filp, ide_drive_t *drive);
drive21drivers/block/ide_modes.hunsigned int ide_get_best_pio_mode (ide_drive_t *drive);
drive118drivers/block/ide_modes.hunsigned int ide_get_best_pio_mode (ide_drive_t *drive)
drive121drivers/block/ide_modes.hstruct hd_driveid *id = drive->id;
drive124drivers/block/ide_modes.hif (HWIF(drive)->chipset != ide_cmd640 && !strcmp("QUANTUM FIREBALL1080A", id->model))
drive70drivers/block/promise.cstatic void promise_selectproc (ide_drive_t *drive)
drive74drivers/block/promise.cOUT_BYTE(drive->select.all,IDE_SELECT_REG);
drive76drivers/block/promise.cnumber = ((HWIF(drive)->is_promise2)<<1) + drive->select.b.unit;
drive84drivers/block/promise.cint promise_cmd(ide_drive_t *drive, byte cmd)
drive89drivers/block/promise.cpromise_selectproc(drive);  /* redundant? */
drive127drivers/block/promise.cide_drive_t *drive;
drive134drivers/block/promise.cdrive = &hwif->drives[0];
drive144drivers/block/promise.cif(promise_cmd(drive,PROMISE_GET_CONFIG)) {
drive147drivers/block/promise.cif(ide_wait_stat(drive,DATA_READY,BAD_W_STAT,WAIT_DRQ)) {
drive151drivers/block/promise.cide_input_data(drive,&ident,SECTOR_WORDS);
drive195drivers/block/promise.cstatic void promise_read_intr (ide_drive_t *drive)
drive203drivers/block/promise.cide_error(drive, "promise_read_intr", stat);
drive212drivers/block/promise.crq = HWGROUP(drive)->rq;
drive216drivers/block/promise.crq = HWGROUP(drive)->rq;
drive220drivers/block/promise.cide_input_data(drive, rq->buffer, nsect * SECTOR_WORDS);
drive223drivers/block/promise.c"remaining=%ld\n", drive->name, rq->sector, rq->sector+nsect-1, 
drive231drivers/block/promise.cide_end_request(1, HWGROUP(drive));
drive239drivers/block/promise.cide_set_handler (drive, &promise_read_intr, WAIT_CMD);
drive243drivers/block/promise.cide_error(drive, "promise read intr", stat);
drive250drivers/block/promise.cstatic void promise_write_pollfunc (ide_drive_t *drive)
drive253drivers/block/promise.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive258drivers/block/promise.cide_set_handler (drive, &promise_write_pollfunc, 1);
drive261drivers/block/promise.cprintk("%s: write timed-out!\n",drive->name);
drive262drivers/block/promise.cide_error (drive, "write timeout", GET_STAT());
drive266drivers/block/promise.cide_multwrite(drive, 4);
drive283drivers/block/promise.cstatic void promise_write (ide_drive_t *drive)
drive285drivers/block/promise.cide_hwgroup_t *hwgroup = HWGROUP(drive);
drive290drivers/block/promise.cide_multwrite(drive, rq->nr_sectors - 4);
drive292drivers/block/promise.cide_set_handler (drive, &promise_write_pollfunc, 1);
drive295drivers/block/promise.cide_multwrite(drive, rq->nr_sectors);
drive309drivers/block/promise.cvoid do_promise_io (ide_drive_t *drive, struct request *rq)
drive312drivers/block/promise.cunsigned short io_base = HWIF(drive)->io_base;
drive316drivers/block/promise.cide_set_handler(drive, &promise_read_intr, WAIT_CMD);
drive333drivers/block/promise.cide_intr(HWIF(drive)->irq,HWGROUP(drive),NULL);
drive344drivers/block/promise.cdrive->name);
drive349drivers/block/promise.cif (ide_wait_stat(drive, DATA_READY, drive->bad_wstat, WAIT_DRQ)) {
drive350drivers/block/promise.cprintk("%s: no DRQ after issuing PROMISE_WRITE\n", drive->name);
drive353drivers/block/promise.cif (!drive->unmask)
drive355drivers/block/promise.cHWGROUP(drive)->wrq = *rq; /* scratchpad */
drive356drivers/block/promise.cpromise_write(drive);
drive359drivers/block/promise.cprintk("%s: bad command: %d\n", drive->name, rq->cmd);
drive360drivers/block/promise.cide_end_request(0, HWGROUP(drive));
drive46drivers/block/qd6580.cstatic void tune_qd6580 (ide_drive_t *drive, byte pio)
drive51drivers/block/qd6580.cpio = ide_get_best_pio_mode (drive);
drive150drivers/block/triton.cstatic void dma_intr (ide_drive_t *drive)
drive154drivers/block/triton.cstruct request *rq = HWGROUP(drive)->rq;
drive155drivers/block/triton.cunsigned short dma_base = HWIF(drive)->dma_base;
drive160drivers/block/triton.cif (OK_STAT(stat,DRIVE_READY,drive->bad_wstat|DRQ_STAT)) {
drive162drivers/block/triton.crq = HWGROUP(drive)->rq;
drive165drivers/block/triton.cide_end_request(1, HWGROUP(drive));
drive169drivers/block/triton.cprintk("%s: bad DMA status: 0x%02x\n", drive->name, dma_stat);
drive172drivers/block/triton.cide_error(drive, "dma_intr", stat);
drive179drivers/block/triton.cstatic int build_dmatable (ide_drive_t *drive)
drive181drivers/block/triton.cstruct request *rq = HWGROUP(drive)->rq;
drive183drivers/block/triton.cunsigned long size, addr, *table = HWIF(drive)->dmatable;
drive197drivers/block/triton.cif (drive->media == ide_tape)
drive198drivers/block/triton.csize = drive->tape.pc->request_transfer;
drive219drivers/block/triton.cprintk("%s: DMA table too small\n", drive->name);
drive236drivers/block/triton.cprintk("%s: empty DMA table?\n", drive->name);
drive240drivers/block/triton.cstatic int config_drive_for_dma (ide_drive_t *drive)
drive244drivers/block/triton.cstruct hd_driveid *id = drive->id;
drive248drivers/block/triton.cdrive->using_dma = 1;
drive255drivers/block/triton.cdrive->using_dma = 1;
drive278drivers/block/triton.cstatic int triton_dmaproc (ide_dma_action_t func, ide_drive_t *drive)
drive280drivers/block/triton.cunsigned long dma_base = HWIF(drive)->dma_base;
drive288drivers/block/triton.creturn config_drive_for_dma (drive);
drive308drivers/block/triton.cif (build_dmatable (drive))
drive310drivers/block/triton.coutl(virt_to_bus (HWIF(drive)->dmatable), dma_base + 4); /* PRD table */
drive314drivers/block/triton.cif (drive->media != ide_disk)
drive317drivers/block/triton.cide_set_handler(drive, &dma_intr, WAIT_CMD);  /* issue cmd to drive */
drive110drivers/block/umc8672.cstatic void tune_umc (ide_drive_t *drive, byte pio)
drive113drivers/block/umc8672.cpio = ide_get_best_pio_mode(drive);
drive117drivers/block/umc8672.ccurrent_speeds[drive->name[2] - 'a'] = pio_to_umc[pio];
drive342drivers/block/xd.cstatic int xd_readwrite (u_char operation,u_char drive,char *buffer,u_int block,u_int count)
drive349drivers/block/xd.cprintk("xd_readwrite: operation = %s, drive = %d, buffer = 0x%X, block = %d, count = %d\n",operation == READ ? "read" : "write",drive,buffer,block,count);
drive352drivers/block/xd.ccontrol = xd_info[drive].control;
drive356drivers/block/xd.ctrack = block / xd_info[drive].sectors;
drive357drivers/block/xd.chead = track % xd_info[drive].heads;
drive358drivers/block/xd.ccylinder = track / xd_info[drive].heads;
drive359drivers/block/xd.csector = block % xd_info[drive].sectors;
drive362drivers/block/xd.cprintk("xd_readwrite: drive = %d, head = %d, cylinder = %d, sector = %d, count = %d\n",drive,head,cylinder,sector,temp);
drive366drivers/block/xd.cxd_build(cmdblk,operation == READ ? CMD_READ : CMD_WRITE,drive,head,cylinder,sector,temp & 0xFF,control);
drive371drivers/block/xd.cxd_recalibrate(drive);
drive392drivers/block/xd.cstatic void xd_recalibrate (u_char drive)
drive396drivers/block/xd.cxd_build(cmdblk,CMD_RECALIBRATE,drive,0,0,0,0,0);
drive440drivers/block/xd.cstatic u_char *xd_build (u_char *cmdblk,u_char command,u_char drive,u_char head,u_short cylinder,u_char sector,u_char count,u_char control)
drive443drivers/block/xd.ccmdblk[1] = ((drive & 0x07) << 5) | (head & 0x1F);
drive527drivers/block/xd.cstatic u_char xd_initdrives (void (*init_drive)(u_char drive))
drive556drivers/block/xd.cstatic void xd_dtc_init_drive (u_char drive)
drive560drivers/block/xd.cxd_build(cmdblk,CMD_DTCGETGEOM,drive,0,0,0,0,0);
drive562drivers/block/xd.cxd_info[drive].heads = buf[0x0A];      /* heads */
drive563drivers/block/xd.cxd_info[drive].cylinders = ((u_short *) (buf))[0x04];  /* cylinders */
drive564drivers/block/xd.cxd_info[drive].sectors = 17;        /* sectors */
drive566drivers/block/xd.cxd_info[drive].rwrite = ((u_short *) (buf + 1))[0x05];  /* reduced write */
drive567drivers/block/xd.cxd_info[drive].precomp = ((u_short *) (buf + 1))[0x06];  /* write precomp */
drive568drivers/block/xd.cxd_info[drive].ecc = buf[0x0F];        /* ecc length */
drive570drivers/block/xd.cxd_info[drive].control = 0;        /* control byte */
drive572drivers/block/xd.cxd_setparam(CMD_DTCSETPARAM,drive,xd_info[drive].heads,xd_info[drive].cylinders,((u_short *) (buf + 1))[0x05],((u_short *) (buf + 1))[0x06],buf[0x0F]);
drive573drivers/block/xd.cxd_build(cmdblk,CMD_DTCSETSTEP,drive,0,0,0,0,7);
drive575drivers/block/xd.cprintk("xd_dtc_init_drive: error setting step rate for drive %d\n",drive);
drive578drivers/block/xd.cprintk("xd_dtc_init_drive: error reading geometry for drive %d\n",drive);
drive600drivers/block/xd.cstatic void xd_wd_init_drive (u_char drive)
drive604drivers/block/xd.cxd_build(cmdblk,CMD_READ,drive,0,0,0,1,0);
drive606drivers/block/xd.cxd_info[drive].heads = buf[0x1AF];        /* heads */
drive607drivers/block/xd.cxd_info[drive].cylinders = ((u_short *) (buf + 1))[0xD6];  /* cylinders */
drive608drivers/block/xd.cxd_info[drive].sectors = 17;          /* sectors */
drive610drivers/block/xd.cxd_info[drive].rwrite = ((u_short *) (buf))[0xD8];    /* reduced write */
drive611drivers/block/xd.cxd_info[drive].wprecomp = ((u_short *) (buf))[0xDA];    /* write precomp */
drive612drivers/block/xd.cxd_info[drive].ecc = buf[0x1B4];        /* ecc length */
drive614drivers/block/xd.cxd_info[drive].control = buf[0x1B5];        /* control byte */
drive616drivers/block/xd.cxd_setparam(CMD_WDSETPARAM,drive,xd_info[drive].heads,xd_info[drive].cylinders,((u_short *) (buf))[0xD8],((u_short *) (buf))[0xDA],buf[0x1B4]);
drive619drivers/block/xd.cprintk("xd_wd_init_drive: error reading geometry for drive %d\n",drive);  
drive639drivers/block/xd.cstatic void xd_seagate_init_drive (u_char drive)
drive643drivers/block/xd.cxd_build(cmdblk,CMD_ST11GETGEOM,drive,0,0,0,1,0);
drive645drivers/block/xd.cxd_info[drive].heads = buf[0x04];        /* heads */
drive646drivers/block/xd.cxd_info[drive].cylinders = (buf[0x02] << 8) | buf[0x03];  /* cylinders */
drive647drivers/block/xd.cxd_info[drive].sectors = buf[0x05];        /* sectors */
drive648drivers/block/xd.cxd_info[drive].control = 0;          /* control byte */
drive651drivers/block/xd.cprintk("xd_seagate_init_drive: error reading geometry from drive %d\n",drive);
drive673drivers/block/xd.cstatic void xd_omti_init_drive (u_char drive)
drive676drivers/block/xd.cxd_override_init_drive(drive);
drive679drivers/block/xd.cxd_info[drive].control = 2;
drive684drivers/block/xd.cstatic void xd_override_init_drive (u_char drive)
drive692drivers/block/xd.cxd_build(cmdblk,CMD_SEEK,drive,(u_char) test[0],(u_short) test[1],(u_char) test[2],0,0);
drive700drivers/block/xd.cxd_info[drive].heads = (u_char) min[0] + 1;
drive701drivers/block/xd.cxd_info[drive].cylinders = (u_short) min[1] + 1;
drive702drivers/block/xd.cxd_info[drive].sectors = (u_char) min[2] + 1;
drive703drivers/block/xd.cxd_info[drive].control = 0;
drive720drivers/block/xd.cstatic void xd_setparam (u_char command,u_char drive,u_char heads,u_short cylinders,u_short rwrite,u_short wprecomp,u_char ecc)
drive724drivers/block/xd.cxd_build(cmdblk,command,drive,0,0,0,0,0);
drive735drivers/block/xd.cprintk("xd_setparam: error setting characteristics for drive %d\n",drive);
drive1102drivers/cdrom/mcdx.cint drive;
drive1113drivers/cdrom/mcdx.cfor (drive = 0; drive < MCDX_NDRIVES; drive++)
drive1114drivers/cdrom/mcdx.cmcdx_stuffp[drive] = NULL;
drive1117drivers/cdrom/mcdx.cfor (drive = 0; drive < MCDX_NDRIVES; drive++) { 
drive1122drivers/cdrom/mcdx.cmcdx_blocksizes[drive] = 0;
drive1126drivers/cdrom/mcdx.cTRACE((INIT, "init() try drive %d\n", drive));
drive1145drivers/cdrom/mcdx.cstuffp->irq = irq(mcdx_drive_map[drive]);
drive1146drivers/cdrom/mcdx.cstuffp->wreg_data = stuffp->rreg_data = port(mcdx_drive_map[drive]);
drive1251drivers/cdrom/mcdx.cstuffp->minor = drive;
drive1257drivers/cdrom/mcdx.cmcdx_stuffp[drive] = stuffp;
drive1258drivers/cdrom/mcdx.cTRACE((INIT, "init() mcdx_stuffp[%d] = %p\n", drive, stuffp));
drive1920drivers/scsi/fdomain.cint              drive;
drive1976drivers/scsi/fdomain.cdrive = MINOR(dev) / 16;
drive1983drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f33 + drive * 25 );
drive1986drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f36 + drive * 15 );
drive1989drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f34 + drive * 15 );
drive1992drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f31 + drive * 25 );
drive2001drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
drive65include/asm-m68k/ide.h#define SELECT_DRIVE(hwif,drive)  OUT_BYTE((drive)->select.all, hwif->io_base+IDE_SELECT_OFFSET);
drive356include/asm-sparc/floppy.h#define fd_eject(drive) sparc_eject()
drive51include/linux/blkdev.hextern void resetup_one_dev(struct gendisk *dev, int drive);
drive103include/linux/xd.hvoid (*init_drive)(u_char drive);
drive109include/linux/xd.hstatic u_char xd_initdrives (void (*init_drive)(u_char drive));
drive117include/linux/xd.hstatic int xd_readwrite (u_char operation,u_char drive,char *buffer,u_int block,u_int count);
drive118include/linux/xd.hstatic void xd_recalibrate (u_char drive);
drive122include/linux/xd.hstatic u_char *xd_build (u_char *cmdblk,u_char command,u_char drive,u_char head,u_short cylinder,u_char sector,u_char count,u_char control);
drive128include/linux/xd.hstatic void xd_dtc_init_drive (u_char drive);
drive130include/linux/xd.hstatic void xd_wd_init_drive (u_char drive);
drive132include/linux/xd.hstatic void xd_seagate_init_drive (u_char drive);
drive134include/linux/xd.hstatic void xd_omti_init_drive (u_char drive);
drive135include/linux/xd.hstatic void xd_setparam (u_char command,u_char drive,u_char heads,u_short cylinders,u_short rwrite,u_short wprecomp,u_char ecc);
drive136include/linux/xd.hstatic void xd_override_init_drive (u_char drive);