Home | History | Annotate | Download | only in boot

Lines Matching defs:wd_c

252 wdc_read_block(struct wdc_channel *chp, struct wdc_command *wd_c)
255 uint16_t *ptr = (uint16_t *)wd_c->data;
260 if (wd_c->r_command == WDCC_IDENTIFY)
261 for (i = wd_c->bcount; i > 0; i -= sizeof(uint16_t))
264 for (i = wd_c->bcount; i > 0; i -= sizeof(uint16_t))
274 wdccommand(struct wdc_channel *chp, struct wdc_command *wd_c)
279 wd_c->drive, wd_c->r_command, wd_c->r_cyl,
280 wd_c->r_head, wd_c->r_sector, wd_c->bcount));
283 WDC_WRITE_REG(chp, wd_features, wd_c->r_features);
284 WDC_WRITE_REG(chp, wd_seccnt, wd_c->r_count);
285 WDC_WRITE_REG(chp, wd_sector, wd_c->r_sector);
286 WDC_WRITE_REG(chp, wd_cyl_lo, wd_c->r_cyl);
287 WDC_WRITE_REG(chp, wd_cyl_hi, wd_c->r_cyl >> 8);
289 WDSD_IBM | (wd_c->drive << 4) | wd_c->r_head);
290 WDC_WRITE_REG(chp, wd_command, wd_c->r_command);
297 (wd_c->drive == 0) ? "master" : "slave",
309 wdccommandext(struct wdc_channel *chp, struct wdc_command *wd_c)
314 wd_c->drive, wd_c->r_command,
315 wd_c->r_blkno, wd_c->r_count));
319 WDC_WRITE_REG(chp, wd_sdh, (wd_c->drive << 4) | WDSD_LBA);
323 WDC_WRITE_REG(chp, wd_seccnt, wd_c->r_count >> 8);
324 WDC_WRITE_REG(chp, wd_lba_hi, wd_c->r_blkno >> 40);
325 WDC_WRITE_REG(chp, wd_lba_mi, wd_c->r_blkno >> 32);
326 WDC_WRITE_REG(chp, wd_lba_lo, wd_c->r_blkno >> 24);
330 WDC_WRITE_REG(chp, wd_seccnt, wd_c->r_count);
331 WDC_WRITE_REG(chp, wd_lba_hi, wd_c->r_blkno >> 16);
332 WDC_WRITE_REG(chp, wd_lba_mi, wd_c->r_blkno >> 8);
333 WDC_WRITE_REG(chp, wd_lba_lo, wd_c->r_blkno);
336 WDC_WRITE_REG(chp, wd_command, wd_c->r_command);
343 (wd_c->drive == 0) ? "master" : "slave",
354 struct wdc_command wd_c;
357 memset(&wd_c, 0, sizeof(wd_c));
359 wd_c.drive = drive;
360 wd_c.r_command = WDCC_IDENTIFY;
361 wd_c.bcount = DEV_BSIZE;
362 wd_c.data = data;
364 if ((error = wdccommand(chp, &wd_c)) != 0)
367 return wdc_read_block(chp, &wd_c);
421 struct wdc_command wd_c;
432 memset(&wd_c, 0, sizeof(wd_c));
436 wd_c.data = data;
437 wd_c.r_count = 1;
438 wd_c.r_features = 0;
439 wd_c.drive = wd->sc_unit;
440 wd_c.bcount = wd->sc_label.d_secsize;
449 wd_c.r_command = atacmd_to48(cmd);
450 wd_c.r_blkno = blkno;
453 wd_c.r_command = cmd;
454 wd_c.r_sector = (blkno >> 0) & 0xff;
455 wd_c.r_cyl = (blkno >> 8) & 0xffff;
456 wd_c.r_head = (blkno >> 24) & 0x0f;
457 wd_c.r_head |= WDSD_LBA;
460 wd_c.r_command = cmd;
461 wd_c.r_sector = blkno % wd->sc_label.d_nsectors;
462 wd_c.r_sector++; /* Sectors begin with 1, not 0. */
464 wd_c.r_head = blkno % wd->sc_label.d_ntracks;
466 wd_c.r_cyl = blkno;
467 wd_c.r_head |= WDSD_CHS;
471 error = wdccommandext(chp, &wd_c);
473 error = wdccommand(chp, &wd_c);
478 return wdc_read_block(chp, &wd_c);