mcd.c (13866) | mcd.c (13874) |
---|---|
1/* 2 * Copyright 1993 by Holger Veit (data part) 3 * Copyright 1993 by Brian Moore (audio part) 4 * Changes Copyright 1993 by Gary Clark II 5 * Changes Copyright (C) 1994-1995 by Andrey A. Chernov, Moscow, Russia 6 * 7 * Rewrote probe routine to work on newer Mitsumi drives. 8 * Additional changes (C) 1994 by Jordan K. Hubbard --- 26 unchanged lines hidden (view full) --- 35 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 36 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 37 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 38 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 39 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 40 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 * | 1/* 2 * Copyright 1993 by Holger Veit (data part) 3 * Copyright 1993 by Brian Moore (audio part) 4 * Changes Copyright 1993 by Gary Clark II 5 * Changes Copyright (C) 1994-1995 by Andrey A. Chernov, Moscow, Russia 6 * 7 * Rewrote probe routine to work on newer Mitsumi drives. 8 * Additional changes (C) 1994 by Jordan K. Hubbard --- 26 unchanged lines hidden (view full) --- 35 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 36 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 37 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 38 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 39 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 40 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 * |
43 * $Id: mcd.c,v 1.67 1996/02/02 21:18:02 ache Exp $ | 43 * $Id: mcd.c,v 1.68 1996/02/02 22:08:28 ache Exp $ |
44 */ 45static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore"; 46 47#include "mcd.h" 48#if NMCD > 0 49#include <sys/types.h> 50#include <sys/param.h> 51#include <sys/systm.h> --- 66 unchanged lines hidden (view full) --- 118 119/* toc */ 120#define MCD_MAXTOCS 104 /* from the Linux driver */ 121#define MCD_LASTPLUS1 170 /* special toc entry */ 122 123#define MCD_TYPE_UNKNOWN 0 124#define MCD_TYPE_LU002S 1 125#define MCD_TYPE_LU005S 2 | 44 */ 45static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore"; 46 47#include "mcd.h" 48#if NMCD > 0 49#include <sys/types.h> 50#include <sys/param.h> 51#include <sys/systm.h> --- 66 unchanged lines hidden (view full) --- 118 119/* toc */ 120#define MCD_MAXTOCS 104 /* from the Linux driver */ 121#define MCD_LASTPLUS1 170 /* special toc entry */ 122 123#define MCD_TYPE_UNKNOWN 0 124#define MCD_TYPE_LU002S 1 125#define MCD_TYPE_LU005S 2 |
126#define MCD_TYPE_FX001 3 127#define MCD_TYPE_FX001D 4 | 126#define MCD_TYPE_LU006S 3 127#define MCD_TYPE_FX001 4 128#define MCD_TYPE_FX001D 5 |
128 129struct mcd_mbx { 130 short unit; 131 short port; 132 short retry; 133 short nblk; 134 int sz; 135 u_long skip; --- 663 unchanged lines hidden (view full) --- 799 return 0; 800 if (stbytes[2] >= 4 || stbytes[1] != 'M') { 801 outb(port+MCD_CTRL, M_PICKLE); 802 mcd_data[unit].flags |= MCDNEWMODEL; 803 } 804 mcd_data[unit].read_command = MCD_CMDSINGLESPEEDREAD; 805 switch (stbytes[1]) { 806 case 'M': | 129 130struct mcd_mbx { 131 short unit; 132 short port; 133 short retry; 134 short nblk; 135 int sz; 136 u_long skip; --- 663 unchanged lines hidden (view full) --- 800 return 0; 801 if (stbytes[2] >= 4 || stbytes[1] != 'M') { 802 outb(port+MCD_CTRL, M_PICKLE); 803 mcd_data[unit].flags |= MCDNEWMODEL; 804 } 805 mcd_data[unit].read_command = MCD_CMDSINGLESPEEDREAD; 806 switch (stbytes[1]) { 807 case 'M': |
807 if (mcd_data[unit].flags & MCDNEWMODEL) { | 808 if (stbytes[2] <= 2) { 809 mcd_data[unit].type = MCD_TYPE_LU002S; 810 mcd_data[unit].name = "Mitsumi LU002S"; 811 } else if (stbytes[2] <= 5) { |
808 mcd_data[unit].type = MCD_TYPE_LU005S; 809 mcd_data[unit].name = "Mitsumi LU005S"; 810 } else { | 812 mcd_data[unit].type = MCD_TYPE_LU005S; 813 mcd_data[unit].name = "Mitsumi LU005S"; 814 } else { |
811 mcd_data[unit].type = MCD_TYPE_LU002S; 812 mcd_data[unit].name = "Mitsumi LU002S"; | 815 mcd_data[unit].type = MCD_TYPE_LU006S; 816 mcd_data[unit].name = "Mitsumi LU006S"; |
813 } 814 break; 815 case 'F': 816 mcd_data[unit].type = MCD_TYPE_FX001; 817 mcd_data[unit].name = "Mitsumi FX001"; 818 break; 819 case 'D': 820 mcd_data[unit].type = MCD_TYPE_FX001D; --- 537 unchanged lines hidden (view full) --- 1358 struct mcd_data *cd = mcd_data + unit; 1359 int r; 1360 1361 if ((r = mcd_volinfo(unit)) != 0) 1362 return r; 1363 1364 th->starting_track = bcd2bin(cd->volinfo.trk_low); 1365 th->ending_track = bcd2bin(cd->volinfo.trk_high); | 817 } 818 break; 819 case 'F': 820 mcd_data[unit].type = MCD_TYPE_FX001; 821 mcd_data[unit].name = "Mitsumi FX001"; 822 break; 823 case 'D': 824 mcd_data[unit].type = MCD_TYPE_FX001D; --- 537 unchanged lines hidden (view full) --- 1362 struct mcd_data *cd = mcd_data + unit; 1363 int r; 1364 1365 if ((r = mcd_volinfo(unit)) != 0) 1366 return r; 1367 1368 th->starting_track = bcd2bin(cd->volinfo.trk_low); 1369 th->ending_track = bcd2bin(cd->volinfo.trk_high); |
1366 th->len = sizeof(struct ioc_toc_header) + 1367 (th->ending_track - th->starting_track + 1) * 1368 sizeof(struct cd_toc_entry) + 6 /* ??? */; | 1370 th->len = 2 * sizeof(u_char) /* start & end tracks */ + 1371 (th->ending_track + 1 - th->starting_track + 1) * 1372 sizeof(struct cd_toc_entry); |
1369 1370 return 0; 1371} 1372 1373static int 1374mcd_read_toc(int unit) 1375{ 1376 struct mcd_data *cd = mcd_data + unit; --- 436 unchanged lines hidden --- | 1373 1374 return 0; 1375} 1376 1377static int 1378mcd_read_toc(int unit) 1379{ 1380 struct mcd_data *cd = mcd_data + unit; --- 436 unchanged lines hidden --- |