aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/char/raw3270.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/char/raw3270.c')
0 files changed, 0 insertions, 0 deletions
> 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
/*
 * Copyright (c) 2000	Linus Torvalds & authors
 */

/*
 * Authors:	Petr Soucek <petr@ryston.cz>
 * 		Samuel Thibault <samuel.thibault@fnac.net>
 */

/* truncates a in [b,c] */
#define IDE_IN(a,b,c)   ( ((a)<(b)) ? (b) : ( (a)>(c) ? (c) : (a)) )

#define IDE_IMPLY(a,b)	((!(a)) || (b))

#define QD_TIM1_PORT		(base)
#define QD_CONFIG_PORT		(base+0x01)
#define QD_TIM2_PORT		(base+0x02)
#define QD_CONTROL_PORT		(base+0x03)

#define QD_CONFIG_IDE_BASEPORT	0x01
#define QD_CONFIG_BASEPORT	0x02
#define QD_CONFIG_ID3		0x04
#define QD_CONFIG_DISABLED	0x08
#define QD_CONFIG_QD6500	0xc0
#define QD_CONFIG_QD6580_A	0xa0
#define QD_CONFIG_QD6580_B	0x50

#define QD_CONTR_SEC_DISABLED	0x01

#define QD_ID3			((config & QD_CONFIG_ID3)!=0)

#define QD_CONFIG(hwif)		((hwif)->config_data & 0x00ff)

#define QD_TIMING(drive)	(byte)(((drive)->drive_data) & 0x00ff)
#define QD_TIMREG(drive)	(byte)((((drive)->drive_data) & 0xff00) >> 8)

#define QD6500_DEF_DATA		((QD_TIM1_PORT<<8) | (QD_ID3 ? 0x0c : 0x08))
#define QD6580_DEF_DATA		((QD_TIM1_PORT<<8) | (QD_ID3 ? 0x0a : 0x00))
#define QD6580_DEF_DATA2	((QD_TIM2_PORT<<8) | (QD_ID3 ? 0x0a : 0x00))
#define QD_DEF_CONTR		(0x40 | ((control & 0x02) ? 0x9f : 0x1f))

#define QD_TESTVAL		0x19	/* safe value */

/* Drive specific timing taken from DOS driver v3.7 */

static struct qd65xx_timing_s {
	s8	offset;   /* ofset from the beginning of Model Number" */
	char	model[4];    /* 4 chars from Model number, no conversion */
	s16	active;   /* active time */
	s16	recovery; /* recovery time */
} qd65xx_timing [] = {
	{ 30, "2040", 110, 225 },  /* Conner CP30204			*/
	{ 30, "2045", 135, 225 },  /* Conner CP30254			*/
	{ 30, "1040", 155, 325 },  /* Conner CP30104			*/
	{ 30, "1047", 135, 265 },  /* Conner CP30174			*/
	{ 30, "5344", 135, 225 },  /* Conner CP3544			*/
	{ 30, "01 4", 175, 405 },  /* Conner CP-3104			*/
	{ 27, "C030", 175, 375 },  /* Conner CP3000			*/
	{  8, "PL42", 110, 295 },  /* Quantum LP240			*/
	{  8, "PL21", 110, 315 },  /* Quantum LP120			*/
	{  8, "PL25", 175, 385 },  /* Quantum LP52			*/
	{  4, "PA24", 110, 285 },  /* WD Piranha SP4200			*/
	{  6, "2200", 110, 260 },  /* WD Caviar AC2200			*/
	{  6, "3204", 110, 235 },  /* WD Caviar AC2340			*/
	{  6, "1202", 110, 265 },  /* WD Caviar AC2120			*/
	{  0, "DS3-", 135, 315 },  /* Teac SD340			*/
	{  8, "KM32", 175, 355 },  /* Toshiba MK234			*/
	{  2, "53A1", 175, 355 },  /* Seagate ST351A			*/
	{  2, "4108", 175, 295 },  /* Seagate ST1480A			*/
	{  2, "1344", 175, 335 },  /* Seagate ST3144A			*/
	{  6, "7 12", 110, 225 },  /* Maxtor 7213A			*/
	{ 30, "02F4", 145, 295 },  /* Conner 3204F			*/
	{  2, "1302", 175, 335 },  /* Seagate ST3120A			*/
	{  2, "2334", 145, 265 },  /* Seagate ST3243A			*/
	{  2, "2338", 145, 275 },  /* Seagate ST3283A			*/
	{  2, "3309", 145, 275 },  /* Seagate ST3390A			*/
	{  2, "5305", 145, 275 },  /* Seagate ST3550A			*/
	{  2, "4100", 175, 295 },  /* Seagate ST1400A			*/
	{  2, "4110", 175, 295 },  /* Seagate ST1401A			*/
	{  2, "6300", 135, 265 },  /* Seagate ST3600A			*/
	{  2, "5300", 135, 265 },  /* Seagate ST3500A			*/