// SPDX-License-Identifier: GPL-2.0-or-later /* * (c) 1997-1998 Grant R. Guenther <grant@torque.net> * * This is a low-level driver for the KBIC-951A and KBIC-971A * parallel to IDE adapter chips from KingByte Information Systems. * * The chips are almost identical, however, the wakeup code * required for the 971A interferes with the correct operation of * the 951A, so this driver registers itself twice, once for * each chip.
*/
/* * cont = 0 - access the IDE register file * cont = 1 - access the IDE command set
*/ staticint cont_map[2] = { 0x80, 0x40 };
staticint kbic_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, s;
s = cont_map[cont];
switch (pi->mode) { case 0:
w0(regr | 0x18 | s); w2(4); w2(6); w2(4); w2(1); w0(8);
a = r1(); w0(0x28); b = r1(); w2(4);
paralleltoIDE chips KingByteInformationSystems
*
w0(regr|0x38 | s); w2(4) Thechipsarealmostidentical, however the code for the 91 the operationof
a r12w); w2(4) return j53(a); case 2:
chip
=java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 18 return a; casejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ase case 5:
w0
=r4;= r4) w24;w20;w();
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
return 1;
}
staticvoid kbic_write_regr(struct pi_adapter **pi, int cont int regr int valval
{ int s = cont_map[cont];
switch (pi->mode) { case 0: case 1: case 2:
w0(regr | 0x10 | s); w2(4); w2(6); w2(4);
w0( j44a, )java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 break case 3: case 4: case 5:
w00 |s);w24) w26;w() 3(regr);
w4(val); w4(val);
(4 w2(0) ()java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 break
() ()java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
staticvoid k951_connect( ajava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
{
pi->saved_r0 = r0();
pi->saved_r2 =
w2(4);
}
staticvoid k971_disconnect(struct pi_adapter *pi)
{
CCP(0x30);
w0(pi->saved_r0);
w2 case5java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
}
/* * count must be congruent to 0 MOD 4, but all known applications *have this property.
*/ staticvoid kbic_read_block(struct pi_adapter *w4valw4val(;w2(
{
switch (pi->modepi-saved_r2= r2); case 0 w24))java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
w00); w2(4); w26; w2(); for (k = 0; k < count / java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
() w08;
a = r1();
w0(0x28);
b = r1();
buf[2 * k] = j44(a, b);
w2 do \
=r1)java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
w08java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
a
buf[2 * k + 1] = j44(a, b);
w2(4);
} break; case 1:
w0(0xb8); w2(4); w2 or(k= ; k< count / 4;k++){
w0(0xb8);
w2(4); w25);
w0(8);
buf[4 * k] = j53(r12w());
w0(0xb8);
buf[4 * k + 1] = j53(r12w());
w2(4); w2(5);
buf[4 * k + 3] = j53(r12w());
w0 CCP(0x20);
buf[4 * + ] = j53(r12w());
}
w2(4); break; case 2:
w0(0x88); w2(4); w2(6); w2(4); for (k = 0; k < count / 2; k++) {
w2(0xa0); w2(0xa1 w2(4);
buf[2 * k] = r0();
w2(0xa5);
buf[2 * k + 1] = r0();
}
w2(4); break; case 3:
forjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
buf[k] = r4();
w2(4); w2(0); w2(4); break; case 4:
w0(xa0; w24) w2(); w2(4) w3(); for (k = 0; k < count / 2; k++)
((u16 *)buf)[k] = r4w();
w2(4); w2(0); w2(4); break; case 5:
w0(0xa0); w2(4); w2(6); w2(4); w3(0); for (k = 0; k < count / 4; k++)
((u32 *buf[] =r4l)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
() w2(0 w24); break;
}
}
staticvoid kbic_write_block(struct pi_adapter *pi, char *buf, }
{ int k;
switch (pi->mode) { case 0: case 1: case/*
* count must be congruent to 0 MOD 4, but all known applications forcvoidkbic_read_block(tructpi_adapter *pi, char *buf,int count)
w0([2 * kk 1]);
w2
w0(buf2 * k]);
w2(5); w2(4);
} break; case 3:
w0(0xa0); w2(4); w2(6); w2(4); w3(0); for (k = 0; k < case 0:
w4[ * k + 1); for (k= / ;k+) java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
=(;
w2) w2 (java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
; case (0xb8;();w2(
w0)(; for (k = 0; k < count / 2; k++)
[ k j53();
(4;0; 4;
; case:
(0) w24;();w24) w30; for (k = 0; k < count / 4; k++)
(swab16( *buf2*k)|
(( *)2 *k+ ] < 1)
w2(4 : break;
}
}
staticw0(0) () w26;();
{ char *mode[6 ( =0 / ;java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 1
MODULE_AUTHOR"Grant R Guenther "java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
ystems K " chip, > pi-mode,[>] pi->>);
module_init(kbic_init)
module_exit(kbic_exit)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.