diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/isa/mcd.c | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/sys/dev/isa/mcd.c b/sys/dev/isa/mcd.c index 615d6b0af4c..6b1d267a460 100644 --- a/sys/dev/isa/mcd.c +++ b/sys/dev/isa/mcd.c @@ -1352,17 +1352,20 @@ mcd_toc_entries(sc, te) data.entries[n].track = bcd2bin(sc->toc[trk].toc.idx_no); switch (te->address_format) { case CD_MSF_FORMAT: - data.entries[n].addr[0] = 0; - data.entries[n].addr[1] = bcd2bin(sc->toc[trk].toc.absolute_pos[0]); - data.entries[n].addr[2] = bcd2bin(sc->toc[trk].toc.absolute_pos[1]); - data.entries[n].addr[3] = bcd2bin(sc->toc[trk].toc.absolute_pos[2]); + data.entries[n].addr.addr[0] = 0; + data.entries[n].addr.addr[1] = + bcd2bin(sc->toc[trk].toc.absolute_pos[0]); + data.entries[n].addr.addr[2] = + bcd2bin(sc->toc[trk].toc.absolute_pos[1]); + data.entries[n].addr.addr[3] = + bcd2bin(sc->toc[trk].toc.absolute_pos[2]); break; case CD_LBA_FORMAT: lba = msf2hsg(sc->toc[trk].toc.absolute_pos, 0); - data.entries[n].addr[0] = lba >> 24; - data.entries[n].addr[1] = lba >> 16; - data.entries[n].addr[2] = lba >> 8; - data.entries[n].addr[3] = lba; + data.entries[n].addr.addr[0] = lba >> 24; + data.entries[n].addr.addr[1] = lba >> 16; + data.entries[n].addr.addr[2] = lba >> 8; + data.entries[n].addr.addr[3] = lba; break; } n++; @@ -1472,14 +1475,20 @@ mcd_read_subchannel(sc, ch) data.what.position.index_number = bcd2bin(q.current.idx_no); switch (ch->address_format) { case CD_MSF_FORMAT: - data.what.position.reladdr[0] = 0; - data.what.position.reladdr[1] = bcd2bin(q.current.relative_pos[0]); - data.what.position.reladdr[2] = bcd2bin(q.current.relative_pos[1]); - data.what.position.reladdr[3] = bcd2bin(q.current.relative_pos[2]); - data.what.position.absaddr[0] = 0; - data.what.position.absaddr[1] = bcd2bin(q.current.absolute_pos[0]); - data.what.position.absaddr[2] = bcd2bin(q.current.absolute_pos[1]); - data.what.position.absaddr[3] = bcd2bin(q.current.absolute_pos[2]); + data.what.position.reladdr.addr[0] = 0; + data.what.position.reladdr.addr[1] = + bcd2bin(q.current.relative_pos[0]); + data.what.position.reladdr.addr[2] = + bcd2bin(q.current.relative_pos[1]); + data.what.position.reladdr.addr[3] = + bcd2bin(q.current.relative_pos[2]); + data.what.position.absaddr.addr[0] = 0; + data.what.position.absaddr.addr[1] = + bcd2bin(q.current.absolute_pos[0]); + data.what.position.absaddr.addr[2] = + bcd2bin(q.current.absolute_pos[1]); + data.what.position.absaddr.addr[3] = + bcd2bin(q.current.absolute_pos[2]); break; case CD_LBA_FORMAT: lba = msf2hsg(q.current.relative_pos, 1); @@ -1490,15 +1499,15 @@ mcd_read_subchannel(sc, ch) */ if (data.what.position.index_number == 0x00) lba = -lba; - data.what.position.reladdr[0] = lba >> 24; - data.what.position.reladdr[1] = lba >> 16; - data.what.position.reladdr[2] = lba >> 8; - data.what.position.reladdr[3] = lba; + data.what.position.reladdr.addr[0] = lba >> 24; + data.what.position.reladdr.addr[1] = lba >> 16; + data.what.position.reladdr.addr[2] = lba >> 8; + data.what.position.reladdr.addr[3] = lba; lba = msf2hsg(q.current.absolute_pos, 0); - data.what.position.absaddr[0] = lba >> 24; - data.what.position.absaddr[1] = lba >> 16; - data.what.position.absaddr[2] = lba >> 8; - data.what.position.absaddr[3] = lba; + data.what.position.absaddr.addr[0] = lba >> 24; + data.what.position.absaddr.addr[1] = lba >> 16; + data.what.position.absaddr.addr[2] = lba >> 8; + data.what.position.absaddr.addr[3] = lba; break; } break; |