Use newer CF cards in the Jornada 720

You can not use any CF card to boot Linux on the Jornada. The kernel needs to verify the card with its ID.

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!