taglinefilesource code
drive104include/linux/xd.hvoid (*init_drive)(u_char drive);
drive110include/linux/xd.hstatic u_char xd_initdrives (void (*init_drive)(u_char drive));
drive118include/linux/xd.hstatic int xd_readwrite (u_char operation,u_char drive,char *buffer,u_int block,u_int count);
drive119include/linux/xd.hstatic void xd_recalibrate (u_char drive);
drive123include/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);
drive130include/linux/xd.hstatic void xd_dtc5150x_init_drive (u_char drive);
drive132include/linux/xd.hstatic void xd_wd1004a27x_init_drive (u_char drive);
drive134include/linux/xd.hstatic void xd_seagate11_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);
drive139include/linux/xd.hstatic void xd_override_init_drive (u_char drive);
drive76kernel/blk_drv/blk.hextern void resetup_one_dev(struct gendisk *dev, int drive);
drive680kernel/blk_drv/floppy.cint drive = MINOR(CURRENT->dev);
drive682kernel/blk_drv/floppy.cif (ftd_msg[drive])
drive684kernel/blk_drv/floppy.cfloppy->name,drive);
drive685kernel/blk_drv/floppy.ccurrent_type[drive] = floppy;
drive686kernel/blk_drv/floppy.cfloppy_sizes[drive] = floppy->size >> 1;
drive1109kernel/blk_drv/floppy.cint i,drive,cnt,okay;
drive1115kernel/blk_drv/floppy.cdrive = MINOR(inode->i_rdev);
drive1125kernel/blk_drv/floppy.cfake_change |= 1 << (drive & 3);
drive1127kernel/blk_drv/floppy.cdrive &= 3;
drive1131kernel/blk_drv/floppy.cif (drive > 3) this_floppy = &floppy_type[drive >> 2];
drive1132kernel/blk_drv/floppy.celse if ((this_floppy = current_type[drive & 3]) == NULL)
drive1144kernel/blk_drv/floppy.cif (fd_ref[drive & 3] != 1)
drive1152kernel/blk_drv/floppy.cformat_req.device = drive;
drive1175kernel/blk_drv/floppy.cfake_change |= 1 << (drive & 3);
drive1182kernel/blk_drv/floppy.cif (drive < 0 || drive > 3)
drive1186kernel/blk_drv/floppy.ccurrent_type[drive] = NULL;
drive1187kernel/blk_drv/floppy.cfloppy_sizes[drive] = MAX_DISK_SIZE;
drive1188kernel/blk_drv/floppy.ckeep_data[drive] = 0;
drive1192kernel/blk_drv/floppy.cmemcpy_fromfs(user_params+drive,
drive1195kernel/blk_drv/floppy.ccurrent_type[drive] = &user_params[drive];
drive1196kernel/blk_drv/floppy.cfloppy_sizes[drive] = user_params[drive].size >> 1;
drive1198kernel/blk_drv/floppy.ckeep_data[drive] = -1;
drive1204kernel/blk_drv/floppy.coutb_p((current_DOR & 0xfc) | drive |
drive1205kernel/blk_drv/floppy.c(0x10 << drive),FD_DOR);
drive1208kernel/blk_drv/floppy.ckeep_data[drive] = 1;
drive1210kernel/blk_drv/floppy.ckeep_data[drive] = 0;
drive1217kernel/blk_drv/floppy.cftd_msg[drive] = 1;
drive1220kernel/blk_drv/floppy.cftd_msg[drive] = 0;
drive1223kernel/blk_drv/floppy.cmin_report_error_cnt[drive] = (unsigned short) (param & 0x0f);
drive1236kernel/blk_drv/floppy.cstatic struct floppy_struct *find_base(int drive,int code)
drive1242kernel/blk_drv/floppy.cprintk("fd%d is %s",drive,base->name);
drive1245kernel/blk_drv/floppy.cprintk("fd%d is unknown type %d",drive,code);
drive1270kernel/blk_drv/floppy.cint drive;
drive1273kernel/blk_drv/floppy.cdrive = inode->i_rdev & 3;
drive1274kernel/blk_drv/floppy.cold_dev = fd_device[drive];
drive1275kernel/blk_drv/floppy.cif (fd_ref[drive])
drive1278kernel/blk_drv/floppy.cfd_ref[drive]++;
drive1279kernel/blk_drv/floppy.cfd_device[drive] = inode->i_rdev;
drive160kernel/blk_drv/genhd.cvoid resetup_one_dev(struct gendisk *dev, int drive)
drive163kernel/blk_drv/genhd.cint start = drive<<dev->minor_shift;
drive167kernel/blk_drv/genhd.ccurrent_minor = 1+(drive<<dev->minor_shift);
drive168kernel/blk_drv/genhd.ccheck_partition(dev, major+(drive<<dev->minor_shift));
drive179kernel/blk_drv/genhd.cint drive;
drive187kernel/blk_drv/genhd.cfor (drive=0 ; drive<dev->nr_real ; drive++) {
drive188kernel/blk_drv/genhd.ccurrent_minor = 1+(drive<<dev->minor_shift);
drive189kernel/blk_drv/genhd.ccheck_partition(dev, major+(drive<<dev->minor_shift));
drive147kernel/blk_drv/hd.cstatic int controller_ready(unsigned int drive, unsigned int head)
drive154kernel/blk_drv/hd.coutb_p(0xA0 | (drive<<4) | head, HD_CURRENT);
drive187kernel/blk_drv/hd.cstatic void hd_out(unsigned int drive,unsigned int nsect,unsigned int sect,
drive193kernel/blk_drv/hd.cif (drive>1 || head>15)
drive201kernel/blk_drv/hd.cif (!controller_ready(drive, head)) {
drive206kernel/blk_drv/hd.coutb_p(hd_info[drive].ctl,HD_CMD);
drive208kernel/blk_drv/hd.coutb_p(hd_info[drive].wpcom>>2,++port);
drive213kernel/blk_drv/hd.coutb_p(0xA0|(drive<<4)|head,++port);
drive645kernel/blk_drv/hd.cint drive, i;
drive651kernel/blk_drv/hd.cfor (drive=0 ; drive<2 ; drive++) {
drive652kernel/blk_drv/hd.chd_info[drive].cyl = *(unsigned short *) BIOS;
drive653kernel/blk_drv/hd.chd_info[drive].head = *(unsigned char *) (2+BIOS);
drive654kernel/blk_drv/hd.chd_info[drive].wpcom = *(unsigned short *) (5+BIOS);
drive655kernel/blk_drv/hd.chd_info[drive].ctl = *(unsigned char *) (8+BIOS);
drive656kernel/blk_drv/hd.chd_info[drive].lzone = *(unsigned short *) (12+BIOS);
drive657kernel/blk_drv/hd.chd_info[drive].sect = *(unsigned char *) (14+BIOS);
drive1470kernel/blk_drv/scsi/fdomain.cint    drive;
drive1509kernel/blk_drv/scsi/fdomain.cdrive = MINOR(dev) / 16;
drive1512kernel/blk_drv/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f31 + drive * 25 );
drive1517kernel/blk_drv/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
drive1525kernel/blk_drv/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
drive273kernel/blk_drv/xd.cstatic int xd_readwrite (u_char operation,u_char drive,char *buffer,u_int block,u_int count)
drive280kernel/blk_drv/xd.cprintk("xd_readwrite: operation = %s, drive = %d, buffer = 0x%X, block = %d, count = %d\n",operation == READ ? "read" : "write",drive,buffer,block,count);
drive283kernel/blk_drv/xd.ccontrol = xd_info[drive].control;
drive287kernel/blk_drv/xd.ctrack = block / xd_info[drive].sectors;
drive288kernel/blk_drv/xd.chead = track % xd_info[drive].heads;
drive289kernel/blk_drv/xd.ccylinder = track / xd_info[drive].heads;
drive290kernel/blk_drv/xd.csector = block % xd_info[drive].sectors;
drive293kernel/blk_drv/xd.cprintk("xd_readwrite: drive = %d, head = %d, cylinder = %d, sector = %d, count = %d\n",drive,head,cylinder,sector,temp);
drive297kernel/blk_drv/xd.cxd_build(cmdblk,operation == READ ? CMD_READ : CMD_WRITE,drive,head,cylinder,sector,temp & 0xFF,control);
drive300kernel/blk_drv/xd.ccase 1: printk("xd_readwrite: timeout, recalibrating drive\n"); xd_recalibrate(drive); return (0);
drive319kernel/blk_drv/xd.cstatic void xd_recalibrate (u_char drive)
drive323kernel/blk_drv/xd.cxd_build(cmdblk,CMD_RECALIBRATE,drive,0,0,0,0,0);
drive367kernel/blk_drv/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)
drive370kernel/blk_drv/xd.ccmdblk[1] = ((drive & 0x07) << 5) | (head & 0x1F);
drive451kernel/blk_drv/xd.cstatic u_char xd_initdrives (void (*init_drive)(u_char drive))
drive479kernel/blk_drv/xd.cstatic void xd_dtc5150x_init_drive (u_char drive)
drive483kernel/blk_drv/xd.cxd_build(cmdblk,CMD_DTCGETGEOM,drive,0,0,0,0,0);
drive485kernel/blk_drv/xd.cxd_info[drive].heads = buf[0x0A];      /* heads */
drive486kernel/blk_drv/xd.cxd_info[drive].cylinders = ((u_short *) (buf))[0x04];  /* cylinders */
drive487kernel/blk_drv/xd.cxd_info[drive].sectors = 17;        /* sectors */
drive489kernel/blk_drv/xd.cxd_info[drive].rwrite = ((u_short *) (buf + 1))[0x05];  /* reduced write */
drive490kernel/blk_drv/xd.cxd_info[drive].precomp = ((u_short *) (buf + 1))[0x06];  /* write precomp */
drive491kernel/blk_drv/xd.cxd_info[drive].ecc = buf[0x0F];        /* ecc length */
drive493kernel/blk_drv/xd.cxd_info[drive].control = 0;        /* control byte */
drive495kernel/blk_drv/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]);
drive496kernel/blk_drv/xd.cxd_build(cmdblk,CMD_DTCSETSTEP,drive,0,0,0,0,7);
drive498kernel/blk_drv/xd.cprintk("xd_dtc5150x_init_drive: error setting step rate for drive %d\n",drive);
drive501kernel/blk_drv/xd.cprintk("xd_dtc5150x_init_drive: error reading geometry for drive %d\n",drive);
drive519kernel/blk_drv/xd.cstatic void xd_wd1004a27x_init_drive (u_char drive)
drive523kernel/blk_drv/xd.cxd_build(cmdblk,CMD_READ,drive,0,0,0,1,0);
drive525kernel/blk_drv/xd.cxd_info[drive].heads = buf[0x1AF];        /* heads */
drive526kernel/blk_drv/xd.cxd_info[drive].cylinders = ((u_short *) (buf + 1))[0xD6];  /* cylinders */
drive527kernel/blk_drv/xd.cxd_info[drive].sectors = 17;          /* sectors */
drive529kernel/blk_drv/xd.cxd_info[drive].rwrite = ((u_short *) (buf))[0xD8];    /* reduced write */
drive530kernel/blk_drv/xd.cxd_info[drive].wprecomp = ((u_short *) (buf))[0xDA];    /* write precomp */
drive531kernel/blk_drv/xd.cxd_info[drive].ecc = buf[0x1B4];        /* ecc length */
drive533kernel/blk_drv/xd.cxd_info[drive].control = buf[0x1B5];        /* control byte */
drive535kernel/blk_drv/xd.cxd_setparam(CMD_WDSETPARAM,drive,xd_info[drive].heads,xd_info[drive].cylinders,((u_short *) (buf))[0xD8],((u_short *) (buf))[0xDA],buf[0x1B4]);
drive538kernel/blk_drv/xd.cprintk("xd_wd1004a27x_init_drive: error reading geometry for drive %d\n",drive);  
drive556kernel/blk_drv/xd.cstatic void xd_seagate11_init_drive (u_char drive)
drive560kernel/blk_drv/xd.cxd_build(cmdblk,CMD_ST11GETGEOM,drive,0,0,0,1,0);
drive562kernel/blk_drv/xd.cxd_info[drive].heads = buf[0x04];        /* heads */
drive563kernel/blk_drv/xd.cxd_info[drive].cylinders = (buf[0x02] << 8) | buf[0x03];  /* cylinders */
drive564kernel/blk_drv/xd.cxd_info[drive].sectors = buf[0x05];        /* sectors */
drive565kernel/blk_drv/xd.cxd_info[drive].control = 0;          /* control byte */
drive568kernel/blk_drv/xd.cprintk("xd_seagate11_init_drive: error reading geometry from drive %d\n",drive);
drive585kernel/blk_drv/xd.cstatic void xd_override_init_drive (u_char drive)
drive593kernel/blk_drv/xd.cxd_build(cmdblk,CMD_SEEK,drive,(u_char) test[0],(u_short) test[1],(u_char) test[2],0,0);
drive601kernel/blk_drv/xd.cxd_info[drive].heads = (u_char) min[0] + 1;
drive602kernel/blk_drv/xd.cxd_info[drive].cylinders = (u_short) min[1] + 1;
drive603kernel/blk_drv/xd.cxd_info[drive].sectors = (u_char) min[2] + 1;
drive604kernel/blk_drv/xd.cxd_info[drive].control = 0;
drive609kernel/blk_drv/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)
drive613kernel/blk_drv/xd.cxd_build(cmdblk,command,drive,0,0,0,0,0);
drive624kernel/blk_drv/xd.cprintk("xd_setparam: error setting characteristics for drive %d\n",drive);