Mounting Compact Flash card under Linux on ppc823
Richard Jones
rjones at nexus-tech.net
Sat Sep 14 07:40:28 EST 2002
> In message <PEEPKCHHHBJOFJKGMMLHOEEDCAAA.rjones at nexus-tech.net> you wrote:
> >
> > I am using the Linux kernel from www.denx.de that has the version 2.4.4
> > (2002-08-09) with all the support for the 8xx pcmcia/direct etc... code.
> > When Linux boots (using NFS remote filesystem) it comes up and
> prints the
> > following:
> >
> > <misc deleted>
> > ...
> > Kernel command line: root=/dev/nfs rw nfsroot=192.168.0.120:/ppcroot
> > nfsaddrs=19
> > 2.168.0.20:192.168.0.120 init=/bin/bash idebus=25
> > ide_setup: idebus=25PCMCIA slot B: phys mem e0000000...ec000000 (size
> > 0c000000)
> > Card ID: SST 48CF032 55LD017-A2 FW17-4C
> > Fixed Disk Card
> > IDE interface
> > [silicon] [unique] [single] [sleep] [standby] [idle] [low power]
> > ...
> > <more stuff deleted>
> > ...
>
> This "more stuff deleted" would have been the interesting part; the
> kernel will tell you something about the partition table it
> recognizes, or at least the device. So if you are sure your device
> contains a valid partition table with at least one valid partition,
> you should have seen something like:
>
> ...
> hda: probing with STATUS(0x50) instead of ALTSTATUS(0x41)
> hda: CF 128MB, ATA DISK drive
> ide0 at 0xc7000320-0xc7000327,0xc3000106 on irq 13
> hda: 250368 sectors (128 MB) w/16KiB Cache, CHS=978/8/32
> Partition check:
> hda: hda1
>
> > and finally gives me a shell prompt. In the above, the Kernel seems to
> > recognize the card as being an SST-based flash card. All seems
> okay but the
> > IDE device does not appear in the /proc/devices listing. Also, I can't
> > mount a filesystem (probably because the IDE doesn't seem to
> have installed
> > completely). The card I am using has a DOS filesystem on it with a few
> > files that I added. My /etc/fstab has the following entry:
> >
> > /dev/hda1 /mnt/flash msdos noauto,owner 0 0
> >
> > Using make menuconfig, I set the following:
> > under IDE, ATA and ATAPI Block Devices:
> > <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
> > [*] MPC8xx IDE support
> > (8xx_PCCARD) Type of MPC8xx IDE interface
> > under File systems:
> > <*> DOS FAT fs support
> > <*> MSDOS fs support
> > <*> UMSDOS: Unix-like file system on top of standard MSDOS fs
> > <*> VFAT (Windows-95) fs support
> >
> > Questions:
> > - should the device really be hda1 ?
>
> Yes, most probably.
>
> > - is there something more that I forgot in my board config
> header file for
> > setting up pcmcia?
>
> No, I don't think so.
>
> My guess is that you forgot to enable any partition table support in
> your Linux kernel. Make sure your config file contains:
>
>
> CONFIG_IDE=y
> CONFIG_BLK_DEV_IDE=y
> CONFIG_BLK_DEV_IDEDISK=y
> CONFIG_IDEDISK_MULTI_MODE=y
> CONFIG_BLK_DEV_MPC8xx_IDE=y
> CONFIG_BLK_DEV_IDE_MODES=y
> and
> CONFIG_PARTITION_ADVANCED=y
> CONFIG_MAC_PARTITION=y
> CONFIG_MSDOS_PARTITION=y
> CONFIG_NLS=y
> CONFIG_NLS_DEFAULT="y"
> CONFIG_NLS_ISO8859_1=y
> CONFIG_NLS_ISO8859_15=y
>
> See also our documentation at http://www.denx.de/re/DPLG.html
> especially section "7. Advanced Topics" (7.3.2. PC Card Support in
> Linux).
>
> Wolfgang Denk
>
I checked these and made a couple of changes but to no avail. Then I added
the following lines to my board configuration file that I copied from the
tqm8xx.h file:
/*
* Definitions for IDE0 Interface
*/
#define IDE0_BASE_OFFSET 0
#define IDE0_DATA_REG_OFFSET (PCMCIA_MEM_SIZE + 0x320)
#define IDE0_ERROR_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 1)
#define IDE0_NSECTOR_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 2)
#define IDE0_SECTOR_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 3)
#define IDE0_LCYL_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 4)
#define IDE0_HCYL_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 5)
#define IDE0_SELECT_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 6)
#define IDE0_STATUS_REG_OFFSET (2 * PCMCIA_MEM_SIZE + 0x320 + 7)
#define IDE0_CONTROL_REG_OFFSET 0x0106
#define IDE0_IRQ_REG_OFFSET 0x000A /* not used */
#define IDE0_INTERRUPT 13 /* = SIU_LEVEL6 */
This was the clincher, the defined values I had did not have the 0x320
offsets factored in. I also had the IDE0_INTERRUPT set to the wrong value.
Now with these changes all is well. I was able to successfully mount the
partition and see my files.
Thanks for all the help,
Richard Jones
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list