[BACK]Return to fd.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / acorn32 / mainbus

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/acorn32/mainbus/fd.c between version 1.28.2.5 and 1.29

version 1.28.2.5, 2007/12/03 18:34:27 version 1.29, 2007/07/09 20:51:59
Line 519  fdattach(parent, self, aux)
Line 519  fdattach(parent, self, aux)
         /*          /*
          * Initialize and attach the disk structure.           * Initialize and attach the disk structure.
          */           */
         disk_init(&fd->sc_dk, fd->sc_dev.dv_xname, &fddkdriver);          fd->sc_dk.dk_name = fd->sc_dev.dv_xname;
           fd->sc_dk.dk_driver = &fddkdriver;
         disk_attach(&fd->sc_dk);          disk_attach(&fd->sc_dk);
   
         /* Needed to power off if the motor is on when we halt. */          /* Needed to power off if the motor is on when we halt. */
Line 579  fdstrategy(bp)
Line 580  fdstrategy(bp)
             ((bp->b_bcount % FDC_BSIZE) != 0 &&              ((bp->b_bcount % FDC_BSIZE) != 0 &&
              (bp->b_flags & B_FORMAT) == 0)) {               (bp->b_flags & B_FORMAT) == 0)) {
                 bp->b_error = EINVAL;                  bp->b_error = EINVAL;
                 goto done;                  goto bad;
         }          }
   
         /* If it's a null transfer, return immediately. */          /* If it's a null transfer, return immediately. */
Line 597  fdstrategy(bp)
Line 598  fdstrategy(bp)
                 if (sz < 0) {                  if (sz < 0) {
                         /* If past end of disk, return EINVAL. */                          /* If past end of disk, return EINVAL. */
                         bp->b_error = EINVAL;                          bp->b_error = EINVAL;
                         goto done;                          goto bad;
                 }                  }
                 /* Otherwise, truncate request. */                  /* Otherwise, truncate request. */
                 bp->b_bcount = sz << DEV_BSHIFT;                  bp->b_bcount = sz << DEV_BSHIFT;
Line 629  fdstrategy(bp)
Line 630  fdstrategy(bp)
         splx(s);          splx(s);
         return;          return;
   
   bad:
           bp->b_flags |= B_ERROR;
 done:  done:
         /* Toss transfer; we're done early. */          /* Toss transfer; we're done early. */
         bp->b_resid = bp->b_bcount;          bp->b_resid = bp->b_bcount;
Line 1073  loop:
Line 1076  loop:
                 fdc->sc_fh.fh_regs = &fdc->sc_fr;                  fdc->sc_fh.fh_regs = &fdc->sc_fr;
                 fdc->sc_fr.fr_r9 = IOMD_BASE + (IOMD_FIQRQ << 2);                  fdc->sc_fr.fr_r9 = IOMD_BASE + (IOMD_FIQRQ << 2);
                 fdc->sc_fr.fr_r10 = fd->sc_nbytes;                  fdc->sc_fr.fr_r10 = fd->sc_nbytes;
                 fdc->sc_fr.fr_r11 =                  fdc->sc_fr.fr_r11 = (u_int)(bp->b_data + fd->sc_skip);
                     (u_int)((uintptr_t)bp->b_data + fd->sc_skip);  
                 fdc->sc_fr.fr_r12 = fdc->sc_drq;                  fdc->sc_fr.fr_r12 = fdc->sc_drq;
 #ifdef FD_DEBUG  #ifdef FD_DEBUG
                 printf("fdc-doio:r9=%x r10=%x r11=%x r12=%x data=%x skip=%x\n",                  printf("fdc-doio:r9=%x r10=%x r11=%x r12=%x data=%x skip=%x\n",
Line 1313  fdcretry(fdc)
Line 1315  fdcretry(fdc)
                                fdc->sc_status[5]);                                 fdc->sc_status[5]);
                 }                  }
   
                   bp->b_flags |= B_ERROR;
                 bp->b_error = EIO;                  bp->b_error = EIO;
                 fdfinish(fd, bp);                  fdfinish(fd, bp);
         }          }
Line 1552  fdformat(dev, finfo, l)
Line 1555  fdformat(dev, finfo, l)
                 /* timed out */                  /* timed out */
                 rv = EIO;                  rv = EIO;
                 biodone(bp);                  biodone(bp);
         } else if (bp->b_error != 0)          }
           if(bp->b_flags & B_ERROR) {
                 rv = bp->b_error;                  rv = bp->b_error;
           }
         free(bp, M_TEMP);          free(bp, M_TEMP);
         return rv;          return rv;
 }  }
Line 1606  load_memory_disc_from_floppy(md, dev)
Line 1611  load_memory_disc_from_floppy(md, dev)
         s = spl0();          s = spl0();
   
         if (fdopen(bp->b_dev, 0, 0, curlwp) != 0) {          if (fdopen(bp->b_dev, 0, 0, curlwp) != 0) {
                 brelse(bp, 0);                  brelse(bp);
                 printf("Cannot open floppy device\n");                  printf("Cannot open floppy device\n");
                         return(EINVAL);                          return(EINVAL);
         }          }
Line 1626  load_memory_disc_from_floppy(md, dev)
Line 1631  load_memory_disc_from_floppy(md, dev)
                 if (biowait(bp))                  if (biowait(bp))
                         panic("Cannot load floppy image");                          panic("Cannot load floppy image");
   
                 memcpy((char *)md->md_addr + loop * fd_types[type].sectrac                  memcpy((void *)md->md_addr + loop * fd_types[type].sectrac
                     * DEV_BSIZE, (void *)bp->b_data,                      * DEV_BSIZE, (void *)bp->b_data,
                     fd_types[type].sectrac * DEV_BSIZE);                      fd_types[type].sectrac * DEV_BSIZE);
         }          }
Line 1635  load_memory_disc_from_floppy(md, dev)
Line 1640  load_memory_disc_from_floppy(md, dev)
   
         fdclose(bp->b_dev, 0, 0, curlwp);          fdclose(bp->b_dev, 0, 0, curlwp);
   
         brelse(bp, 0);          brelse(bp);
   
         splx(s);          splx(s);
         return(0);          return(0);

Legend:
Removed from v.1.28.2.5  
changed lines
  Added in v.1.29

CVSweb <webmaster@jp.NetBSD.org>