diff --git a/jtag/ChangeLog b/jtag/ChangeLog index ed62bac2..d0681b5c 100644 --- a/jtag/ChangeLog +++ b/jtag/ChangeLog @@ -1,3 +1,17 @@ +2003-01-30 Marcel Telka + + * src/tap/cable/byteblaster.c (byteblaster_init): Added support for + parallel ports with I/O addresses above 0x3FF. + (byteblaster_done): Ditto. + * src/tap/cable/dlc5.c (dlc5_init): Ditto. + (dlc5_done): Ditto. + * src/tap/cable/ea253.c (ea253_init): Ditto. + (ea253_done): Ditto. + * src/tap/cable/ei012.c (ei012_init): Ditto. + (ei012_done): Ditto. + * src/tap/cable/wiggler.c (wiggler_init): Ditto. + (wiggler_done): Ditto. + 2003-01-19 Marcel Telka * configure.ac: Added AC_GNU_SOURCE. diff --git a/jtag/NEWS b/jtag/NEWS index 5f3ab4f1..9a964adb 100644 --- a/jtag/NEWS +++ b/jtag/NEWS @@ -2,6 +2,7 @@ $Id$ * Added new manufacturer: Cypress. (patch 669157, Chris Ellec) * Added new 'frequency' command to limit maximum TCK frequency + * Added support for parallel ports with I/O addresses above 0x3FF jtag-0.2.1 (2003-01-13): diff --git a/jtag/src/tap/cable/byteblaster.c b/jtag/src/tap/cable/byteblaster.c index a59f9294..2fabd73e 100644 --- a/jtag/src/tap/cable/byteblaster.c +++ b/jtag/src/tap/cable/byteblaster.c @@ -59,13 +59,16 @@ byteblaster_init( unsigned int aport ) { tap_state_init(); port = aport; - return !ioperm( port, 2, 1 ); + return !(((port + 2 <= 0x400) && ioperm( port, 2, 1 )) || ((port + 2 > 0x400) && iopl( 3 ))); } static void byteblaster_done( void ) { - ioperm( port, 2, 0 ); + if (port + 2 <= 0x400) + ioperm( port, 2, 0 ); + else + iopl( 0 ); tap_state_done(); } diff --git a/jtag/src/tap/cable/dlc5.c b/jtag/src/tap/cable/dlc5.c index 5a5fb946..81aa72a2 100644 --- a/jtag/src/tap/cable/dlc5.c +++ b/jtag/src/tap/cable/dlc5.c @@ -59,13 +59,16 @@ dlc5_init( unsigned int aport ) { tap_state_init(); port = aport; - return !ioperm( port, 2, 1 ); + return !(((port + 2 <= 0x400) && ioperm( port, 2, 1 )) || ((port + 2 > 0x400) && iopl( 3 ))); } static void dlc5_done( void ) { - ioperm( port, 2, 0 ); + if (port + 2 <= 0x400) + ioperm( port, 2, 0 ); + else + iopl( 0 ); tap_state_done(); } diff --git a/jtag/src/tap/cable/ea253.c b/jtag/src/tap/cable/ea253.c index 28c3ac01..6e7d644b 100644 --- a/jtag/src/tap/cable/ea253.c +++ b/jtag/src/tap/cable/ea253.c @@ -52,7 +52,7 @@ ea253_init( unsigned int aport ) { tap_state_init(); port = aport; - if (ioperm( port, 2, 1 )) + if (((port + 2 <= 0x400) && ioperm( port, 2, 1 )) || ((port + 2 > 0x400) && iopl( 3 ))) return 0; tap_state_set_trst( (inb( port ) >> TRST) & 1 ); @@ -62,7 +62,10 @@ ea253_init( unsigned int aport ) static void ea253_done( void ) { - ioperm( port, 2, 0 ); + if (port + 2 <= 0x400) + ioperm( port, 2, 0 ); + else + iopl( 0 ); tap_state_done(); } diff --git a/jtag/src/tap/cable/ei012.c b/jtag/src/tap/cable/ei012.c index 74474cad..d1317698 100644 --- a/jtag/src/tap/cable/ei012.c +++ b/jtag/src/tap/cable/ei012.c @@ -53,7 +53,7 @@ ei012_init( unsigned int aport ) { tap_state_init(); port = aport; - if (ioperm( port, 2, 1 )) + if (((port + 2 <= 0x400) && ioperm( port, 2, 1 )) || ((port + 2 > 0x400) && iopl( 3 ))) return 0; tap_state_set_trst( (inb( port ) >> TRST) & 1 ); @@ -63,7 +63,10 @@ ei012_init( unsigned int aport ) static void ei012_done( void ) { - ioperm( port, 2, 0 ); + if (port + 2 <= 0x400) + ioperm( port, 2, 0 ); + else + iopl( 0 ); tap_state_done(); } diff --git a/jtag/src/tap/cable/wiggler.c b/jtag/src/tap/cable/wiggler.c index 1b9b6aa6..b9a7c86e 100644 --- a/jtag/src/tap/cable/wiggler.c +++ b/jtag/src/tap/cable/wiggler.c @@ -56,7 +56,7 @@ wiggler_init( unsigned int aport ) { tap_state_init(); port = aport; - if (ioperm( port, 2, 1 )) + if (((port + 2 <= 0x400) && ioperm( port, 2, 1 )) || ((port + 2 > 0x400) && iopl( 3 ))) return 0; tap_state_set_trst( (inb( port ) >> TRST) & 1 ); @@ -66,7 +66,10 @@ wiggler_init( unsigned int aport ) static void wiggler_done( void ) { - ioperm( port, 2, 0 ); + if (port + 2 <= 0x400) + ioperm( port, 2, 0 ); + else + iopl( 0 ); tap_state_done(); }