A little more information I found while digging.  It should have dawned on me 
when the card info is displayed in MCE.

The cards are AMD Type D P/N FAD004
http://www.psism.com/flashfad.htm

More info here too:
https://www.synchrotech.com/products/linear-flash-pcmcia-card_01.html

The prices for these are crazy.  Though the 4MB is EOL, the 16MB is listed at 
$445.00!  Even if I could get a new 16mb at a much reduced price, it wouldn't 
work.

There is an old discussion (among several) here:

https://www.copytechnet.com/forums/ricoh-savin-gestetner-lanier/23407-ricoh-field-service-card.html

Don Resor

-----Original Message-----
From: cctalk <cctalk-boun...@classiccmp.org> On Behalf Of Glen Slick via cctalk
Sent: Thursday, July 07, 2022 3:18 PM
To: General Discussion: On-Topic and Off-Topic Posts <cctalk@classiccmp.org>
Subject: Re: Memory Card Explorer for the Elan P423

On Wed, Jul 6, 2022 at 7:51 PM Glen Slick <glen.sl...@gmail.com> wrote:
>
> I'll have to boot up again the Linux system I had set up for this and 
> refresh my memory on some of the details. If I remember correctly, one 
> of the things I had to do was to rebuild the pcmcia driver with the 
> CONFIG_MTD_PCMCIA_ANONYMOUS option enabled. Some of the linear flash 
> cards I have might not have a separate attribute memory plane and no 
> valid CIS, so the card wouldn't get recognized without that option 
> enabled. Pretty sure there was something else I had to change to get 
> things to work with some of the cards I have. Just don't remember now.
>

Maybe no one else is interested in this detail, but just for future reference 
reference, it looks like one of the changes I had to make to get the MTD driver 
to work with some of my linear flash cards was to this read_pri_intelext() 
routine in this source file:

drivers / mtd / chips / cfi_cmdset_0001.c

from:

    if (extp->MinorVersion >= '0') {
        extra_size = 0;

        /* Protection Register info */
        extra_size += (extp->NumProtectionFields - 1) *
                  sizeof(struct cfi_intelext_otpinfo);
    }

    if (extp->MinorVersion >= '1') {
        /* Burst Read info */
        extra_size += 2;
        if (extp_size < sizeof(*extp) + extra_size)
            goto need_more;
        extra_size += extp->extra[extra_size - 1];
    }

to:

    extra_size = 0;

    if ((extp->MinorVersion >= '0') && (extp->FeatureSupport & 64)) {
        /* Protection Register info */
        extra_size += (extp->NumProtectionFields - 1) *
                  sizeof(struct cfi_intelext_otpinfo);
    }

    if ((extp->MinorVersion >= '1') && (extp->FeatureSupport & 128)) {
        /* Burst Read info */
        extra_size += 2;
        if (extp_size < sizeof(*extp) + extra_size)
            goto need_more;
        extra_size += extp->extra[extra_size - 1];
    }

The problem with the original code is that without checking the Optional 
Feature and Command Support bits, it assumes that if the Intel CFI Primary 
Vendor-Specific Extended Query Table exists then the flash device has OTP 
support, and if the Minor Version is >=1 then the flash device has Page Mode 
Read support. According to the 290606-015 datasheet for Intel 28F320J5 and 
28F640J5 StrataFlash devices the Minor Version number in the Intel CFI Primary 
Vendor-Specific Extended Query Table is 1, but those device do not have OTP 
support nor do they have Page Mode Read support, which causes the 
read_pri_intelext() fail or hang while trying to parse the Intel CFI Primary 
Vendor-Specific Extended Query Table.

I must have some linear flash cards that are based on Intel 28F320J5 or 
28F640J5 StrataFlash devices that encountered this issue. Without going through 
my stack of cards I don't remember which cards those might be.

Reply via email to