I'm working on a development kit based on an Intel PXA270 processor (intel Xscale/ARM) and I'm experiencing great difficulties in making a Compact Flash Ethernet card work.
The card is a "CF 10Base Ethernet" card based on Tamarack 3299CE chip and it should be an NE2000 compatible card.
Linux kernel version: 2.6.9-intc1
cs version: 3.2.8 (the newest version I can use, only for cardmgr and cardctl, since I must use kernel built in services)
The card seems to be supported by PCMCIA card services and in fact I found in the (very short) instructions in the card manual I had to insert an entry in /etc/pcmcia/config file in order to bind the socket with pcnet_cs driver. I did it but the problem is that I can't read the CIS of the card.
this is the result of cardctl status command:
[root@Linux /]#cardctl status
prima di switch
3.3V 16-bit PC Card
and this is ok, but these are infos about the socket...
when I try "cardctl ident" the function reaches the 200 tuples limit and says there are no card info available.
I run cardctl on a laptop where I inserted the card and I obtain the following:
vers_1 4.1, "CF", "10Base-Ethernet", "1.0", ""
config base 0x03f8 mask 0x0003 last_index 0x23
cftable_entry 0x20 [default]
Vcc Vnom 3300mV Vmin 3V Vmax 3600mV Istatic 100mA
Iavg 170mA Ipeak 200mA
timing wait 15us
io 0x0000-0x001f [lines=5] [8bit] [16bit]
irq mask 0xffff [level]
io 0x0300-0x031f [lines=10] [16bit] [range]
io 0x0320-0x033f [lines=10] [16bit] [range]
io 0x0340-0x035f [lines=10] [16bit] [range]
io 0x0360-0x037f [lines=10] [16bit] [range]
I analyzed the signals on the physical socket with and oscilloscope and I saw they are coherent with timings suggested in PC-CARD and CF-card standards.
I studied both the PCMCIA how-to and PCMCIA programmer's guide but I think all solutions suggested in chapter 6 of the HOW-TO (for example hard wiring the MAC) start from the fact that I parsed the CIS, but in my case I can't read the CIS. In particular with some printk I see that the two elements of "link" vector are always 0 and I think this makes the get_tuple function fail.
After some googling I found some forums and pieces of code in which infos about the card are inserted in pcnet_cs, but this happens in newer kernels:
PCMCIA_DEVICE_PROD_ID12("CF", "10Base-Ethernet", 0x44ebf863, 0x93ae4d79)
I saw that with newer kernel (2.6.17) the structure dev_link_t has been changed with pcmcia_device one and this makes it difficult for me to insert card information into the driver, in particular I can't understand where I should insert these hex strings.