Lines Matching refs:Interface
122 static void SysaceDumpRegisters(struct _Sac *Interface)
238 printf("Sysace@%p:\n", Interface);
239 printf("\tTag %x\n", Interface->Tag);
240 SysacePrintRegister(&Control_Names, Interface->Control);
241 printf("\tBUSMODEREG %x\n", Interface->BUSMODEREG);
242 SysacePrintRegister(&STATUS_Names, Interface->STATUS);
243 SysacePrintRegister(&ERRORREG_Names, Interface->ERRORREG);
244 printf("\tCFGLBAREG %x\n", Interface->CFGLBAREG);
245 printf("\tMPULBAREG %x\n", Interface->MPULBAREG);
246 printf("\tVERSIONREG %x\n", Interface->VERSIONREG);
247 printf("\tSECCNTCMDREG %x = %s cnt=%d\n", Interface->SECCNTCMDREG,
248 CommandNames[(Interface->SECCNTCMDREG >> 8)&7],
249 Interface->SECCNTCMDREG & SAC_SECCCNT);
250 SysacePrintRegister(&CONTROLREG_Names, Interface->CONTROLREG);
251 SysacePrintRegister(&FATSTATREG_Names, Interface->FATSTATREG);
258 /* Reset the device and the interface
260 static int SysaceInitialize(struct _Sac *Interface)
265 /* reset our interface */
266 Interface->Control = SAC_RST;
270 Interface->BUSMODEREG = SAC_MODE16 | (SAC_MODE16 << 8);
273 /* check what our interface does and what the SysACE expects */
274 Control = Interface->Control;
275 BusMode = Interface->BUSMODEREG;
280 Interface->Control = Control | SAC_BUS16;
281 Interface->Control = Interface->Control & ~SAC_BUS8;
285 Interface->Control = Control | SAC_BUS8;
286 Interface->Control = Interface->Control & ~SAC_BUS16;
290 BusMode = Interface->BUSMODEREG;
291 Control = Interface->Control;
297 Interface->Control &= ~SAC_INTMASK;
299 Control = Interface->CONTROLREG;
301 Interface->CONTROLREG = Control;
302 Interface->CONTROLREG = Control & ~SAC_RESETIRQ;
305 Interface->MPULBAREG = 0;
312 static int SysaceLock(struct _Sac *Interface)
319 Status = Interface->STATUS;
325 Interface->CONTROLREG |= SAC_LOCKREQ;
330 Status = Interface->STATUS;
340 SysaceDumpRegisters(Interface);
346 static int SysaceUnlock(struct _Sac *Interface)
353 Interface->CONTROLREG &= ~SAC_CFGRESET;
357 Status = Interface->STATUS;
363 Interface->CONTROLREG &= ~SAC_LOCKREQ;
368 Status = Interface->STATUS;
378 SysaceDumpRegisters(Interface);
406 static int SysaceStartCommand(struct _Sac *Interface,
415 if (!SysaceLock(Interface)) {
422 if (! (Interface->STATUS & SAC_CFDETECT)) {
424 DBGME(2,printf("Sysace:: no media (st=%x)\n",Interface->STATUS));
430 if (!SysaceReadyForCommand(Interface)) {
431 DBGME(3,printf("Sysace:: not ready (st=%x)\n",Interface->STATUS));
432 SysaceDumpRegisters(Interface);
438 Interface->MPULBAREG = Lba;
439 Interface->SECCNTCMDREG = (uint16_t)(Command | (nSectors & SAC_SECCCNT));
446 Interface->CONTROLREG |= SAC_CFGRESET;
453 static void SysAce_isr ( struct _Sac *Interface )
459 SysaceIntoff(Interface);
461 Control = Interface->CONTROLREG & (~(SAC_RESETIRQ|SAC_INTERRUPTS));
462 Interface->CONTROLREG = Control | SAC_RESETIRQ;
463 Interface->CONTROLREG = Control;
466 static int SysAce_wait(struct _Sac *Interface)
470 if (Interface->STATUS & SAC_DATABUFRDY) {
471 SysAce_isr(Interface);
485 static int SysAce_read(struct _Sac * Interface, char *Buffer, uint32_t StartSector, uint32_t nBlocks)
510 SysaceInton(Interface);
511 sc = SysaceStartCommand(Interface,
518 sc = SysAce_wait(Interface);
532 Status = Interface->STATUS;
543 Data32 = Interface->DATABUFREG[0];
554 SysaceDumpRegisters(Interface);
571 SysaceUnlock(Interface);
582 /* Exported interface