[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A20 delay



>>>>> "Joel" == Joel Sherrill <joel.sherrill@oarcorp.com> writes:

Joel> The delay is used in two ways:
Joel>   + A20 real to protected mode transition
Joel>   + delay once kernel is up

Joel> The delay once kernel is up should be able to use a calibrated delay of
Joel> any sort.  

I agree... I also agree for the GateA20 new method...

Joel> The one during boot time is really not a delay for time, it is a delay
Joel> for the real to protected mode transition to stabilize.  

OK. Note that in linux there is (was at least) the concept of SLOW_DOWN_IO
(in include files...) so that IO operation can  be slowed down...

/usr/src/linux/include/asm-i386/io.h
----------------------------------------------------------------------------
#ifdef SLOW_IO_BY_JUMPING
#define __SLOW_DOWN_IO "\njmp 1f\n1:\tjmp 1f\n1:"
#else
#define __SLOW_DOWN_IO "\noutb %%al,$0x80"	<=============== Code I was mentionning
#endif

#ifdef REALLY_SLOW_IO
#define __FULL_SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO __SLOW_DOWN_IO
#else
#define __FULL_SLOW_DOWN_IO __SLOW_DOWN_IO
#endif
----------------------------------------------------------------------------

And that this code  is used in some drivers :

./drivers/net/tulip.c:1055:#define eeprom_delay(nanosec)        do { int _i = 3; while (--_i > 0) { __SLOW_DOWN_IO; }} while (0)
./drivers/net/tulip.c:1223:     SLOW_DOWN_IO;
./drivers/net/eepro.c:169:#define SLOW_DOWN SLOW_DOWN_IO
./drivers/net/ne2.c:565:        SLOW_DOWN_IO;
./drivers/net/ne2.c:566:        SLOW_DOWN_IO;
./drivers/net/ne2.c:567:        SLOW_DOWN_IO;

As well as for inb/outb familly :
--------------------------------------------------------------------------------------
__OUT1(s##_p,x) __OUT2(s,s1,"w") __FULL_SLOW_DOWN_IO : : "a" (value), "Nd" (port));} \
---------------------------------------------------------------------------------------

-- 
   __                 
  /  `                   	Eric Valette
 /--   __  o _.          	Canon CRF - Communication Dept
(___, / (_(_(__         	Rue de la touche lambert
				35517 Cesson-Sevigne  Cedex
				FRANCE
Tel: +33 (0)2 99 87 68 91	Fax: +33 (0)2 99 84 11 30
E-mail: valette@crf.canon.fr	http://www.crf.canon.fr