OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [software/] [leon3/] [atactrl.c] - Rev 2

Compare with Previous | Blame | View Log

typedef struct {
  volatile unsigned int ctrl;	// 0x00
  volatile unsigned int stat;
  volatile unsigned int pctr;
  volatile unsigned int pftr0;	
  volatile unsigned int pftr1;	// 0x10
  volatile unsigned int drt0;
  volatile unsigned int drt1;
  volatile unsigned int bmcmd;	
  volatile unsigned int bmvd0;	// 0x20
  volatile unsigned int bmsta;	
  volatile unsigned int bmvd1;	
  volatile unsigned int prdtb;	
  volatile unsigned int dummy[4];    // 0x30 - 0x3c	
  volatile unsigned int data;	
  volatile unsigned int features;	
  volatile unsigned int secnum;	
  volatile unsigned int seccnt;	
  volatile unsigned int cyllow;		// 0x50
  volatile unsigned int cylhigh;	
  volatile unsigned int devhead;	
  volatile unsigned int status;	
  volatile unsigned int dummy2[6];    // 0x60 - 0x74	
  volatile unsigned int altstat;	
} ataregs;
 
ata_test(int addr) {
    ataregs *ata = (ataregs *) addr;
    unsigned int tmp, i;
    volatile int vtmp;
    unsigned short buf[256]; 
 
    // init
    ata->ctrl = 0x800000e0;
    vtmp = ata->status;
    ata->ctrl = 0x800000ee;
 
    ata->devhead = 0;
    ata->status = 0xEC;
 
    tmp = ata->status;
    while (tmp & 0x80) tmp = ata->status;
 
    if((tmp & 0x1) == 1 || (tmp & 0x40) != 0x40){
//	fail(1);
    }
    for (i=0; i<256; i++) {
	tmp = ata->data;
	buf[i] = tmp;
    }
 
 
}
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.