Merge branch 'master' into HDD_Model_Batch
This commit is contained in:
26
src/dma.c
26
src/dma.c
@@ -665,6 +665,19 @@ dma_ps2_read(uint16_t addr, UNUSED(void *priv))
|
||||
temp = dma_c->arb_level;
|
||||
break;
|
||||
|
||||
case 9: /*Set DMA mask*/
|
||||
dma_m |= (1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xa: /*Reset DMA mask*/
|
||||
dma_m &= ~(1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xb:
|
||||
if (!(dma_m & (1 << dma_ps2.xfr_channel)))
|
||||
dma_ps2_run(dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad XFR Read command %i channel %i\n", dma_ps2.xfr_command, dma_ps2.xfr_channel);
|
||||
}
|
||||
@@ -767,6 +780,19 @@ dma_ps2_write(uint16_t addr, uint8_t val, UNUSED(void *priv))
|
||||
dma_c->arb_level = val;
|
||||
break;
|
||||
|
||||
case 9: /*Set DMA mask*/
|
||||
dma_m |= (1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xa: /*Reset DMA mask*/
|
||||
dma_m &= ~(1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xb:
|
||||
if (!(dma_m & (1 << dma_ps2.xfr_channel)))
|
||||
dma_ps2_run(dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad XFR command %i channel %i val %02x\n", dma_ps2.xfr_command, dma_ps2.xfr_channel, val);
|
||||
}
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
#define GPCMD_CADDY_EJECT_TOSHIBA 0xc4 /* Toshiba Vendor Unique command */
|
||||
#define GPCMD_PAUSE_SONY 0xc5 /* Sony Vendor Unique command */
|
||||
#define GPCMD_PLAY_AUDIO_MATSUSHITA 0xc5 /* Matsushita Vendor Unique command */
|
||||
#define GPCMD_UNKNOWN_SCSI2_NEC 0xc5 /* NEC Vendor Unique Command */
|
||||
#define GPCMD_STOP_CHINON 0xc6 /* Chinon Vendor Unique command */
|
||||
#define GPCMD_PLAY_TRACK_SONY 0xc6 /* Sony Vendor Unique command */
|
||||
#define GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA 0xc6 /* Toshiba Vendor Unique command */
|
||||
|
||||
@@ -2114,7 +2114,7 @@ scsi_cdrom_command_matsushita(void *sc, uint8_t *cdb, int32_t *BufLen)
|
||||
dev->current_cdb[0] = cdb[0];
|
||||
/* Keep cmd_stat at 0x00, therefore, it's going to process it as GPCMD_PLAY_AUDIO_MSF. */
|
||||
break;
|
||||
|
||||
|
||||
case GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA:
|
||||
cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX;
|
||||
dev->current_cdb[0] = cdb[0];
|
||||
@@ -2166,6 +2166,12 @@ scsi_cdrom_command_nec(void *sc, uint8_t *cdb, int32_t *BufLen)
|
||||
cmd_stat = 0x01;
|
||||
break;
|
||||
|
||||
case GPCMD_UNKNOWN_SCSI2_NEC:
|
||||
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
scsi_cdrom_command_complete(dev);
|
||||
cmd_stat = 0x01;
|
||||
break;
|
||||
|
||||
case GPCMD_AUDIO_TRACK_SEARCH_NEC:
|
||||
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
if ((dev->drv->image_path[0] == 0x00) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY))
|
||||
@@ -2305,7 +2311,7 @@ scsi_cdrom_command_pioneer(void *sc, uint8_t *cdb, int32_t *BufLen)
|
||||
else {
|
||||
ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3);
|
||||
len = 4;
|
||||
|
||||
|
||||
if (ret) {
|
||||
scsi_cdrom_set_buf_len(dev, BufLen, &len);
|
||||
scsi_cdrom_data_command_finish(dev, len, len, len, 0);
|
||||
@@ -2844,7 +2850,7 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb)
|
||||
}
|
||||
} else
|
||||
ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, 0);
|
||||
|
||||
|
||||
if (ret > 0) {
|
||||
dev->requested_blocks = max_len;
|
||||
dev->packet_len = alloc_length;
|
||||
|
||||
Reference in New Issue
Block a user