taglinefilesource code
drive76drivers/block/blk.hextern void resetup_one_dev(struct gendisk *dev, int drive);
drive143drivers/block/floppy.c#define UDP (&drive_params[drive])
drive144drivers/block/floppy.c#define UDRS (&drive_state[drive])
drive145drivers/block/floppy.c#define UFDCS (&fdc_state[FDC(drive)])
drive441drivers/block/floppy.cregister unsigned char drive, unit, newdor,olddor;
drive448drivers/block/floppy.cdrive = REVDRIVE(fdc,unit);
drive474drivers/block/floppy.cint drive;
drive480drivers/block/floppy.cfor ( drive = 0; drive < N_DRIVE; drive++)
drive481drivers/block/floppy.cif (FDC(drive) == fdc &&
drive487drivers/block/floppy.cstatic void set_fdc(int drive)
drive489drivers/block/floppy.cif ( drive >= 0 ){
drive490drivers/block/floppy.cfdc = FDC(drive);
drive491drivers/block/floppy.ccurrent_drive = drive;
drive504drivers/block/floppy.cstatic void lock_fdc(int drive)
drive511drivers/block/floppy.cset_fdc(drive);
drive512drivers/block/floppy.cif ( drive >= 0 ){
drive586drivers/block/floppy.cint i, drive, saved_drive;
drive590drivers/block/floppy.cdrive = (saved_drive + i + 1 ) % N_DRIVE;
drive593drivers/block/floppy.cset_fdc(drive);
drive595drivers/block/floppy.cif(! (set_dor( fdc, ~3, UNIT(drive) | ( 0x10 << UNIT(drive))) &
drive596drivers/block/floppy.c(0x10 << UNIT(drive))))
drive599drivers/block/floppy.cset_dor( fdc, ~( 0x10 << UNIT(drive) ), 0 );
drive1374drivers/block/floppy.cstatic void floppy_on(unsigned int drive)
drive2248drivers/block/floppy.cstatic int user_reset_fdc(int drive, int arg)
drive2253drivers/block/floppy.clock_fdc(drive);
drive2291drivers/block/floppy.cstatic void poll_drive(int drive)
drive2293drivers/block/floppy.clock_fdc(drive);
drive2298drivers/block/floppy.cstatic char *drive_name(int type, int drive )
drive2323drivers/block/floppy.cstatic int raw_cmd_ioctl(int drive, void *param)
drive2332drivers/block/floppy.cif ( i == drive ){
drive2402drivers/block/floppy.cint i,device,drive,type,cnt;
drive2411drivers/block/floppy.cdrive = DRIVE(MINOR(device));
drive2417drivers/block/floppy.cname = drive_name(type,drive);
drive2430drivers/block/floppy.celse if ((this_floppy = current_type[drive]) ==
drive2435drivers/block/floppy.cpoll_drive(drive);
drive2450drivers/block/floppy.clock_fdc(drive);
drive2452drivers/block/floppy.ci = raw_cmd_ioctl(drive, (void *) param);
drive2467drivers/block/floppy.clock_fdc(drive);
drive2468drivers/block/floppy.ccurrent_type[drive] = NULL;
drive2469drivers/block/floppy.cfloppy_sizes[drive] = 2;
drive2474drivers/block/floppy.clock_fdc(drive);
drive2516drivers/block/floppy.clock_fdc(drive);
drive2521drivers/block/floppy.cuser_params[drive] = newparams;
drive2522drivers/block/floppy.cif (buffer_drive == drive &&
drive2523drivers/block/floppy.cbuffer_max > user_params[drive].sect)
drive2524drivers/block/floppy.cbuffer_max=user_params[drive].sect;
drive2525drivers/block/floppy.ccurrent_type[drive] = &user_params[drive];
drive2526drivers/block/floppy.cfloppy_sizes[drive] = user_params[drive].size >> 1;
drive2537drivers/block/floppy.cuser_params[drive].sect ||
drive2543drivers/block/floppy.creturn user_reset_fdc( drive, (int)param);
drive2555drivers/block/floppy.clock_fdc(drive);
drive2576drivers/block/floppy.cstatic void set_base_type(int drive,int code)
drive2582drivers/block/floppy.cprintk("fd%d is %s", drive, default_drive_params[code].name);
drive2585drivers/block/floppy.cprintk("fd%d is not installed", drive);
drive2587drivers/block/floppy.cprintk("fd%d is unknown type %d",drive,code);
drive2592drivers/block/floppy.cint drive;
drive2594drivers/block/floppy.cfor (drive=0; drive<N_DRIVE ; drive++){
drive2611drivers/block/floppy.cregister int drive;
drive2613drivers/block/floppy.cdrive = DRIVE(device);
drive2616drivers/block/floppy.c(( changed_floppies | fake_change ) & ( 1 << drive)))
drive2643drivers/block/floppy.cint drive= DRIVE(inode->i_rdev);
drive2667drivers/block/floppy.cint drive;
drive2677drivers/block/floppy.cdrive = DRIVE(inode->i_rdev);
drive2678drivers/block/floppy.cif ( drive >= N_DRIVE )
drive2681drivers/block/floppy.cif (command_status == FD_COMMAND_DETECT && drive >= current_drive){
drive2723drivers/block/floppy.cif ( buffer_drive == drive )
drive2738drivers/block/floppy.cif(user_reset_fdc(drive, FD_RESET_IF_NEEDED))
drive2743drivers/block/floppy.cif ( changed_floppies & ( 1 << drive )){
drive2765drivers/block/floppy.cstatic int ack_change(int drive)
drive2767drivers/block/floppy.cunsigned int mask = 1 << drive;
drive2770drivers/block/floppy.cif ( buffer_drive == drive )
drive2782drivers/block/floppy.cint drive = DRIVE( dev );
drive2783drivers/block/floppy.cunsigned int mask = 1 << drive;
drive2791drivers/block/floppy.creturn ack_change(drive);
drive2796drivers/block/floppy.cuser_reset_fdc(drive, FD_RESET_IF_NEEDED);
drive2797drivers/block/floppy.cpoll_drive(drive);
drive2800drivers/block/floppy.creturn ack_change(drive);
drive161drivers/block/genhd.cvoid resetup_one_dev(struct gendisk *dev, int drive)
drive164drivers/block/genhd.cint start = drive<<dev->minor_shift;
drive168drivers/block/genhd.ccurrent_minor = 1+(drive<<dev->minor_shift);
drive169drivers/block/genhd.ccheck_partition(dev, major+(drive<<dev->minor_shift));
drive180drivers/block/genhd.cint drive;
drive188drivers/block/genhd.cfor (drive=0 ; drive<dev->nr_real ; drive++) {
drive189drivers/block/genhd.ccurrent_minor = 1+(drive<<dev->minor_shift);
drive190drivers/block/genhd.ccheck_partition(dev, major+(drive<<dev->minor_shift));
drive154drivers/block/hd.cstatic int controller_ready(unsigned int drive, unsigned int head)
drive161drivers/block/hd.coutb_p(0xA0 | (drive<<4) | head, HD_CURRENT);
drive194drivers/block/hd.cstatic void hd_out(unsigned int drive,unsigned int nsect,unsigned int sect,
drive201drivers/block/hd.cif (drive>1 || head>15) {
drive203drivers/block/hd.cdrive, cyl, head, sect);
drive213drivers/block/hd.cif (!controller_ready(drive, head)) {
drive214drivers/block/hd.cspecial_op[drive] += reset = 1;
drive218drivers/block/hd.coutb_p(hd_info[drive].ctl,HD_CMD);
drive220drivers/block/hd.coutb_p(hd_info[drive].wpcom>>2,++port);
drive225drivers/block/hd.coutb_p(0xA0|(drive<<4)|head,++port);
drive944drivers/block/hd.cint drive, i;
drive950drivers/block/hd.cfor (drive=0 ; drive<2 ; drive++) {
drive951drivers/block/hd.cbios_info[drive].cyl   = hd_info[drive].cyl = *(unsigned short *) BIOS;
drive952drivers/block/hd.cbios_info[drive].head  = hd_info[drive].head = *(2+BIOS);
drive953drivers/block/hd.cbios_info[drive].wpcom = hd_info[drive].wpcom = *(unsigned short *) (5+BIOS);
drive954drivers/block/hd.cbios_info[drive].ctl   = hd_info[drive].ctl = *(8+BIOS);
drive955drivers/block/hd.cbios_info[drive].lzone = hd_info[drive].lzone = *(unsigned short *) (12+BIOS);
drive956drivers/block/hd.cbios_info[drive].sect  = hd_info[drive].sect = *(14+BIOS);
drive958drivers/block/hd.cif (hd_info[drive].cyl && NR_HD == drive)
drive322drivers/block/xd.cstatic int xd_readwrite (u_char operation,u_char drive,char *buffer,u_int block,u_int count)
drive329drivers/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);
drive332drivers/block/xd.ccontrol = xd_info[drive].control;
drive336drivers/block/xd.ctrack = block / xd_info[drive].sectors;
drive337drivers/block/xd.chead = track % xd_info[drive].heads;
drive338drivers/block/xd.ccylinder = track / xd_info[drive].heads;
drive339drivers/block/xd.csector = block % xd_info[drive].sectors;
drive342drivers/block/xd.cprintk("xd_readwrite: drive = %d, head = %d, cylinder = %d, sector = %d, count = %d\n",drive,head,cylinder,sector,temp);
drive346drivers/block/xd.cxd_build(cmdblk,operation == READ ? CMD_READ : CMD_WRITE,drive,head,cylinder,sector,temp & 0xFF,control);
drive351drivers/block/xd.cxd_recalibrate(drive);
drive372drivers/block/xd.cstatic void xd_recalibrate (u_char drive)
drive376drivers/block/xd.cxd_build(cmdblk,CMD_RECALIBRATE,drive,0,0,0,0,0);
drive420drivers/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)
drive423drivers/block/xd.ccmdblk[1] = ((drive & 0x07) << 5) | (head & 0x1F);
drive507drivers/block/xd.cstatic u_char xd_initdrives (void (*init_drive)(u_char drive))
drive536drivers/block/xd.cstatic void xd_dtc_init_drive (u_char drive)
drive540drivers/block/xd.cxd_build(cmdblk,CMD_DTCGETGEOM,drive,0,0,0,0,0);
drive542drivers/block/xd.cxd_info[drive].heads = buf[0x0A];      /* heads */
drive543drivers/block/xd.cxd_info[drive].cylinders = ((u_short *) (buf))[0x04];  /* cylinders */
drive544drivers/block/xd.cxd_info[drive].sectors = 17;        /* sectors */
drive546drivers/block/xd.cxd_info[drive].rwrite = ((u_short *) (buf + 1))[0x05];  /* reduced write */
drive547drivers/block/xd.cxd_info[drive].precomp = ((u_short *) (buf + 1))[0x06];  /* write precomp */
drive548drivers/block/xd.cxd_info[drive].ecc = buf[0x0F];        /* ecc length */
drive550drivers/block/xd.cxd_info[drive].control = 0;        /* control byte */
drive552drivers/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]);
drive553drivers/block/xd.cxd_build(cmdblk,CMD_DTCSETSTEP,drive,0,0,0,0,7);
drive555drivers/block/xd.cprintk("xd_dtc_init_drive: error setting step rate for drive %d\n",drive);
drive558drivers/block/xd.cprintk("xd_dtc_init_drive: error reading geometry for drive %d\n",drive);
drive580drivers/block/xd.cstatic void xd_wd_init_drive (u_char drive)
drive584drivers/block/xd.cxd_build(cmdblk,CMD_READ,drive,0,0,0,1,0);
drive586drivers/block/xd.cxd_info[drive].heads = buf[0x1AF];        /* heads */
drive587drivers/block/xd.cxd_info[drive].cylinders = ((u_short *) (buf + 1))[0xD6];  /* cylinders */
drive588drivers/block/xd.cxd_info[drive].sectors = 17;          /* sectors */
drive590drivers/block/xd.cxd_info[drive].rwrite = ((u_short *) (buf))[0xD8];    /* reduced write */
drive591drivers/block/xd.cxd_info[drive].wprecomp = ((u_short *) (buf))[0xDA];    /* write precomp */
drive592drivers/block/xd.cxd_info[drive].ecc = buf[0x1B4];        /* ecc length */
drive594drivers/block/xd.cxd_info[drive].control = buf[0x1B5];        /* control byte */
drive596drivers/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]);
drive599drivers/block/xd.cprintk("xd_wd_init_drive: error reading geometry for drive %d\n",drive);  
drive619drivers/block/xd.cstatic void xd_seagate_init_drive (u_char drive)
drive623drivers/block/xd.cxd_build(cmdblk,CMD_ST11GETGEOM,drive,0,0,0,1,0);
drive625drivers/block/xd.cxd_info[drive].heads = buf[0x04];        /* heads */
drive626drivers/block/xd.cxd_info[drive].cylinders = (buf[0x02] << 8) | buf[0x03];  /* cylinders */
drive627drivers/block/xd.cxd_info[drive].sectors = buf[0x05];        /* sectors */
drive628drivers/block/xd.cxd_info[drive].control = 0;          /* control byte */
drive631drivers/block/xd.cprintk("xd_seagate_init_drive: error reading geometry from drive %d\n",drive);
drive653drivers/block/xd.cstatic void xd_omti_init_drive (u_char drive)
drive656drivers/block/xd.cxd_override_init_drive(drive);
drive659drivers/block/xd.cxd_info[drive].control = 2;
drive664drivers/block/xd.cstatic void xd_override_init_drive (u_char drive)
drive672drivers/block/xd.cxd_build(cmdblk,CMD_SEEK,drive,(u_char) test[0],(u_short) test[1],(u_char) test[2],0,0);
drive680drivers/block/xd.cxd_info[drive].heads = (u_char) min[0] + 1;
drive681drivers/block/xd.cxd_info[drive].cylinders = (u_short) min[1] + 1;
drive682drivers/block/xd.cxd_info[drive].sectors = (u_char) min[2] + 1;
drive683drivers/block/xd.cxd_info[drive].control = 0;
drive700drivers/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)
drive704drivers/block/xd.cxd_build(cmdblk,command,drive,0,0,0,0,0);
drive715drivers/block/xd.cprintk("xd_setparam: error setting characteristics for drive %d\n",drive);
drive1489drivers/scsi/fdomain.cint              drive;
drive1534drivers/scsi/fdomain.cdrive = MINOR(dev) / 16;
drive1537drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f31 + drive * 25 );
drive1542drivers/scsi/fdomain.ci = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
drive103include/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);
drive129include/linux/xd.hstatic void xd_dtc_init_drive (u_char drive);
drive131include/linux/xd.hstatic void xd_wd_init_drive (u_char drive);
drive133include/linux/xd.hstatic void xd_seagate_init_drive (u_char drive);
drive135include/linux/xd.hstatic void xd_omti_init_drive (u_char drive);
drive136include/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);
drive137include/linux/xd.hstatic void xd_override_init_drive (u_char drive);