Use newer CF cards in the Jornada 720

I was not able to find this information on the Internet, so I write it down here and hope it will be usefull for someone else!

To use newer CF Cards with Linux, we have to add a few lines to the IDE and PATA PCMCIA driver source code. I managed to get a 64GB Transcend CF working. You need a Linux notebook with a PCMCIA Slot (you can use the Jornada booted into Linux with a working CF card and a PMCIC-CF adapter). And a build machine for your Kernel.

My example with the 64GB Transcend card:

On the machine with PCMCIA run these commands and note the output (in my case on the Jornada itself, with the CF card in the PCMCIA slot):

$ cat /sys/bus/pcmcia/devices/0.0/prod_id1
$ cat /sys/bus/pcmcia/devices/0.0/prod_id2

Output here was TRANSCEND and TS64GCF800 for my card.

On your build machine for the Linux Kernel change into the Kernel source directory. There is a source file in ./Documentation/pcmcia/ called “crc32hash.c”. Compile it:

$ gcc crc32hash.c -o crc32hash
Now we have the hash generator that we need for our driver modification.

Run it with the information from the CF card:

$ ./crc32hash "TRANSCEND"
$ ./crc32hash "TS64GCF800"

The output for my card is 0x709b1bf1 and 0x84382de1.

We have to insert this information into two driver source files: ./drivers/ide/ide-cs.c and ./drivers/ata/pata_pcmcia.c Scroll inside these files to the section with known cards and add yours in this format:

PCMCIA_DEVICE_PROD_ID12(“TRANSCEND”, “TS64GCF800”, 0x709b1bf1, 0x84382de1),

After that you can compile your kernel and have a working CF card!