** This is the quasi-official and semi-temporary T13 email list server. **


translation long...
        IDE_FEATURE_REG         0x1f1
        IDE_NSECTOR_REG         0x1f2
        IDE_SECTOR_REG          0x1f3
        IDE_LCYL_REG            0x1f4
        IDE_HCYL_REG            0x1f5
        IDE_SELECT_REG          0x1f6
        IDE_COMMAND_REG         0x1f7
        IDE_CONTROL_REG         0x3f6

if (IDE_CONTROL_REG)
        OUT_BYTE(drive->ctl, IDE_CONTROL_REG);  /* clear nIEN */
OUT_BYTE(taskfile->feature, IDE_FEATURE_REG);
OUT_BYTE(taskfile->sector_count, IDE_NSECTOR_REG);
/* refers to number of sectors to transfer */
OUT_BYTE(taskfile->sector_number, IDE_SECTOR_REG);
/* refers to sector offset or start sector */
OUT_BYTE(taskfile->low_cylinder, IDE_LCYL_REG);
OUT_BYTE(taskfile->high_cylinder, IDE_HCYL_REG);
OUT_BYTE((taskfile->device_head & 0xE0) | drive->select.all, IDE_SELECT_REG);

OUT_BYTE(hobfile->control, IDE_CONTROL_REG); /* switch registers */

Do I need to wait for status of or something here?
Something is not switching the registers and with outer lba it fills the
non-hob registers with zeros and this is not cool!

OUT_BYTE(hobfile->sector_count, IDE_NSECTOR_REG);
OUT_BYTE(hobfile->sector_number, IDE_SECTOR_REG);
OUT_BYTE(hobfile->low_cylinder, IDE_LCYL_REG);
OUT_BYTE(hobfile->high_cylinder, IDE_HCYL_REG);
OUT_BYTE(hobfile->device_head, IDE_SELECT_REG);

ide_set_handler (drive, handler, WAIT_CMD, NULL);
OUT_BYTE(taskfile->command, IDE_COMMAND_REG);

Either the method is wrong or the order of operations is wrong,
regardless.  I am looking for a clue.

Cheers,
 

Andre Hedrick
Linux ATA Development

--
  If you have any questions or wish to unsubscribe send a 
  message to Hale Landis, [EMAIL PROTECTED] To post to
  this list server send your message to [EMAIL PROTECTED]
  
  For questions concerning Thistle Grove Industries or TGI's
  list services please send email to [EMAIL PROTECTED]



Reply via email to