*** /usr/src/sys/i386/isa/wd_cd.c.orig Sun Jan 30 01:00:33 2000 --- /usr/src/sys/i386/isa/wd_cd.c Mon Jul 22 10:20:33 2002 *************** *** 27,32 **** --- 27,36 ---- * * $FreeBSD: src/sys/i386/isa/wd_cd.c,v 1.29 2000/01/29 16:00:33 peter Exp $ */ + /* modified by shige (shige@iee.niit.ac.jp) for NEC CD60D; 2002/07/22 + */ + /* #undef NEC260 */ + #define NEC260 #include #include *************** *** 794,815 **** --- 798,845 ---- { struct ioc_play_msf *args = (struct ioc_play_msf *)addr; + #ifndef NEC260 return acd_request_wait(cdp, ATAPI_PLAY_MSF, 0, 0, args->start_m, args->start_s, args->start_f, args->end_m, args->end_s, args->end_f, 0, 0, 0); + #else + return acd_request_wait(cdp, ATAPI_PLAY_MSF, 0, 0, + bin2bcd(args->start_m), + bin2bcd(args->start_s), + bin2bcd(args->start_f), + bin2bcd(args->end_m), + bin2bcd(args->end_s), + bin2bcd(args->end_m), + 0, 0, 0); + #endif /* NEC260 */ } case CDIOCPLAYBLOCKS: { struct ioc_play_blocks *args = (struct ioc_play_blocks *)addr; + #ifndef NEC260 return acd_request_wait(cdp, ATAPI_PLAY_BIG, 0, args->blk>>24 & 0xff, args->blk>>16 & 0xff, args->blk>>8 & 0xff, args->blk & 0xff, args->len>>24 & 0xff, args->len>>16 & 0xff, args->len>>8 & 0xff, args->len & 0xff, 0, 0); + #else + { + u_long start,end; + u_char s_m,s_s,s_f,e_m,e_s,e_f; + + start=args->blk; end=args->blk+args->len; + lba2msf(start,&s_m,&s_s,&s_f); + lba2msf(end,&e_m,&e_s,&e_f); + return acd_request_wait(cdp, ATAPI_PLAY_MSF, 0, 0, + bin2bcd(s_m),bin2bcd(s_s),bin2bcd(s_f), + bin2bcd(e_m),bin2bcd(e_s),bin2bcd(e_f), + 0, 0, 0); + } + #endif /* NEC260 */ } case CDIOCPLAYTRACKS: *************** *** 832,842 **** --- 862,887 ---- start = ntohl(cdp->toc.tab[t1].addr.lba); len = ntohl(cdp->toc.tab[t2].addr.lba) - start; + #ifndef NEC260 return acd_request_wait(cdp, ATAPI_PLAY_BIG, 0, start>>24 & 0xff, start>>16 & 0xff, start>>8 & 0xff, start & 0xff, len>>24 & 0xff, len>>16 & 0xff, len>>8 & 0xff, len & 0xff, 0, 0); + #else + { + u_long end; + u_char s_m,s_s,s_f,e_m,e_s,e_f; + + end=start+len; + lba2msf(start,&s_m,&s_s,&s_f); + lba2msf(end,&e_m,&e_s,&e_f); + return acd_request_wait(cdp, ATAPI_PLAY_MSF, 0, 0, + bin2bcd(s_m),bin2bcd(s_s),bin2bcd(s_f), + bin2bcd(e_m),bin2bcd(e_s),bin2bcd(e_f), + 0, 0, 0); + } + #endif /* NEC260 */ } case CDIOCREADAUDIO: