sandisk wifi connect plus

Guylhem Aznar pcmcia at
Wed Mar 17 14:22:35 GMT 2004

Bonjour, Hello,

On Fri, 5 Mar 2004 12:02:34 -0500 (EST)
Pavel Roskin <proski at> wrote:
> The Windows driver for the card includes RAM-loadable firmware for Prism
> 2.5 chipset, so it's probably supported by HostAP and linux-wlan-ng.

Some news- it should need a special initialisation sequence (see below) for
prism 3 download and for dual function activation.

Got the info below from I'll try to purchase such a card (anyone in
the US here? it's $60 vs >130 Eur) and test that.

1. The combo card is Prism 3.0 based, they need to have the Prism 3.0
based driver.
2. Its linux PCMCIA driver has to support mulit-function PCMCIA
3. There's a special initialization sequence that needs to integrate
into the driver to enable the combo functionality. I have attached the sample
initialization code in this message.

//      1. There are three registers in the attribute memory sapce of Prism3
which need to be programmed:
//           COR register at  attribute_memory_space_base+0x3E0
//           IO Base0 	  at  attribute_memory_space_base+0x3F0
//  	     IO Base1 	  at  attribute_memory_space_base+0x3F2                 
//         Procedure A listed below is an example of how the registers are
programmed and how the card is initialized.
//      The above registers have to be programmed in  the driver initialization
routine before the host 
// 	can communication with the wireless function of the combo card. 
// 	procedure A.
// 	In other words, each time the combo card plug-in, procedure A has be
//    2.The other part of the wireless driver is the same as the regular PRISM 
3 driver. 
//    But if you are using  PRISM 3's firware download function. You need the
following modified 
//    IoSetHCR function to implement this feature on the combo card.   
// 	Function Definitions:
//		WriteByteToAttributeMemory( X1,(unsigned char) X2) ==>
//			Write an unsinged char X2 to Attribute memory space at offset X1
//		WriteByteToIOSpace( X1,(unsigned char) X2) ==>
//			Write an unsinged char X2 to I/O space at offset X1
//		Delay(X1)
//			Delay X1 microseconds to wait hardware completing operation 			

Procedure A:

	WriteByteToAttributeMemory( 0x3e0, 0x80);
	WriteByteToAttributeMemory( 0x3e0, 0x4b);
	// Then, we need the I/O_base_address. For example, 0x0280
	// Write low-byte of I/O_base_address to I/O space  
	WriteByteToAttributeMemory( 0x3f0, 0x80);
	// Write high-byte of I/O base address to I/O space. 
	WriteByteToAttributeMemory( 0x3f2, 0x02);
	// P.S. If you don't have high-byte, use 0x00.
	// Activate the Wireless function
		WriteByteToIOSpace( 0x40,0xc5);
		WriteByteToIOSpace( 0x40,0x4b);


// IoSetHCR
// Arguments:
//      dev_p   - Pointer to the device block.
// Return Value:
//      NONE.
    IN  PIO_DEV     dev_p,
    IN  UCHAR       value

    int i=0;

	WriteByteToIOSpace( 0x40,0x80);
	// write ten times for ensuring that the value has been wrote to card via I/O  
        	WriteByteToIOSpace( 0x42,value);

	WriteByteToIOSpace( 0x40,0x45);

} // end IoSetHCR

Bien a vous - Best regards,

* ![guylhem at>>>]
GPG: 92EB37C1 DD11C9C9 20519D01 E8FA1B11 42975AF7

More information about the linux-pcmcia mailing list