int ngene_start_feed(struct dvb_demux_feed *dvbdmxfeed) { struct dvb_demux *dvbdmx = dvbdmxfeed->demux; struct ngene_channel *chan = dvbdmx->priv; if (chan->users == 0) { if (!chan->dev->cmd_timeout_workaround || !chan->running) set_transfer(chan, 1); } return ++chan->users; }
int ngene_stop_feed(struct dvb_demux_feed *dvbdmxfeed) { struct dvb_demux *dvbdmx = dvbdmxfeed->demux; struct ngene_channel *chan = dvbdmx->priv; if (--chan->users) return chan->users; if (!chan->dev->cmd_timeout_workaround) set_transfer(chan, 0); return 0; }
void EMU_CALL spu_dma(void *state, uint32 core, void *mem, uint32 mem_ofs, uint32 mem_mask, uint32 bytes, int iswrite) { uint32 words = (bytes + 3) / 4; mem_ofs &= (~3); if(iswrite) { while(words--) { uint32 d; mem_ofs &= mem_mask; d = *((uint32*)(((uint8*)mem)+mem_ofs)); set_transfer(state, core, d ); set_transfer(state, core, d >> 16); mem_ofs += 4; } } else { while(words--) {