Exemplo n.º 1
0
///////////////////////////////////////////////////////////////////////[02]
int SifDeinitCmd(){
	int x;
	DisableIntr(INT_DMA10, &x);
	ReleaseIntrHandler(INT_DMA10);
	SifDeinit();
	return 0;
}
Exemplo n.º 2
0
void RegisterInterrupts()
{
	s32 ret;

	DisableIntr(0x24, (int *)&ret);
	DisableIntr(0x28, (int *)&ret);
	DisableIntr(0x9, (int *)&ret);

	ReleaseIntrHandler(0x24);
	ReleaseIntrHandler(0x28);

	RegisterIntrHandler(0x24, 1, TransInterrupt, &TransIntrData[0]);
	RegisterIntrHandler(0x28, 1, TransInterrupt, &TransIntrData[1]);

	VoiceTransComplete[0] = 0;
	VoiceTransComplete[1] = 0;

	ReleaseIntrHandler(0x9);
	RegisterIntrHandler(0x9, 1, Spu2Interrupt, &Spu2IntrData);
}
Exemplo n.º 3
0
int _stop ( void ) {

 int lState;

 CpuSuspendIntr ( &lState );
 DisableIntr ( IOP_IRQ_SIO2, 0 );
 ReleaseIntrHandler ( IOP_IRQ_SIO2 );
 CpuResumeIntr ( lState );
 dmac_disable ( IOP_DMAC_SIO2in  );
 dmac_disable ( IOP_DMAC_SIO2out );

 return GetThreadId ();

}  /* end _stop */
Exemplo n.º 4
0
void shutdown(void)
{
	int state;
#ifndef XSIO2MAN
	log_flush(1);
#endif
	CpuSuspendIntr(&state);
	DisableIntr(IOP_IRQ_SIO2, 0);
	ReleaseIntrHandler(IOP_IRQ_SIO2);
	CpuResumeIntr(state);

	dmac_disable(IOP_DMAC_SIO2in);
	dmac_disable(IOP_DMAC_SIO2out);
}
Exemplo n.º 5
0
int _start(int argc, char *argv[])
{
	iop_event_t event;
	int semid, evflg, res;

	if ((semid = CreateMutex(IOP_MUTEX_UNLOCKED)) < 0) {
		E_PRINTF("Unable to create %s (error %d).\n", "semaphore", semid);
		return 1;
	}

	eng_args.semid = semid;

	event.attr = event.bits = 0;
	if ((evflg = CreateEventFlag(&event)) < 0) {
		E_PRINTF("Unable to create %s (error %d).\n", "event flag", evflg);
		return 1;
	}

	eng_args.evflg = evflg;

	CpuEnableIntr();
	DisableIntr(IOP_IRQ_DMA_DEV9, NULL);
	if ((res = RegisterIntrHandler(IOP_IRQ_DMA_DEV9, 1, dev9_dma_handler, &eng_args.evflg))) {
		E_PRINTF("Unable to register 0x%02x intr handler (error %d).\n", IOP_IRQ_DMA_DEV9, res);
		return 1;
	}

	_sw(_lw(0xbf801570) | 0x80, 0xbf801570);

	if ((res = ata_engine_init(&eng_args)) < 0) {
		E_PRINTF("Unable to initialize the %s DMA engine.\n", "ATA");
		return 1;
	}

	if ((res = smap_engine_init(&eng_args)) < 0) {
		E_PRINTF("Unable to initialize the %s DMA engine.\n", "SMAP");
		return 1;
	}

	M_PRINTF("ATA/SMAP DMA relay module initialized.\n");
	return 0;
}
Exemplo n.º 6
0
static void write_thread(void *arg)
{
	USE_SPD_REGS;
	volatile iop_dmac_chan_t *dev9_chan = (volatile iop_dmac_chan_t *)DEV9_DMAC_BASE;
	struct eng_args *args = (struct eng_args *)arg;
	ata_dma_transfer_t *t = &dma_transfer;
	u32 res;

	while (1) {
		while (SleepThread() || WaitSema(args->semid))
			;

		ClearEventFlag(args->evflg, 0);

		dma_setup(1);
		EnableIntr(IOP_IRQ_DMA_DEV9);

		/* Initiate the DMA transfer.  */
		dev9_chan->madr = (u32)dma_buffer;
		dev9_chan->bcr  = ((t->size / 128) << 16) | 32;
		dev9_chan->chcr = 0x01000201;

		SPD_REG8(0x4e) = t->command;	/* ATA command register.  */
		SPD_REG8(SPD_R_PIO_DIR) = 1;
		SPD_REG8(SPD_R_PIO_DATA) = 0;
		SPD_REG8(SPD_R_XFR_CTRL) |= 0x80;

		WaitEventFlag(args->evflg, (EF_DMA_DONE|EF_ATA_DONE), 0x11, &res);

		SPD_REG8(SPD_R_XFR_CTRL) &= 0x7f;

		DisableIntr(IOP_IRQ_DMA_DEV9, NULL);

		/* If we got the ATA end signal, force stop the transfer.  */
		if (res & EF_ATA_DONE)
			dma_stop(1);

		SignalSema(args->semid);
	}
}
Exemplo n.º 7
0
void sbus_intr_exit()
{
	DisableIntr(IOP_IRQ_SBUS, NULL);
	ReleaseIntrHandler(IOP_IRQ_SBUS);
	initialized = 0;
}
Exemplo n.º 8
0
///////////////////////////////////////////////////////////////////////[05]
void SifExitCmd(){
	int x;
	DisableIntr(INT_DMA10, &x);
	ReleaseIntrHandler(INT_DMA10);
}