public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: ebiederman@lnxi.com (Eric W. Biederman)
To: Ben Dooks <ben-mtd@fluff.org>
Cc: ben@fluff.org, linux-mtd@lists.infradead.org
Subject: Re: Fix to jedec_probe unlock addresses
Date: 22 Sep 2004 19:48:40 -0600	[thread overview]
Message-ID: <m3brfxycuf.fsf@maxwell.lnxi.com> (raw)
In-Reply-To: <20040920234450.GA17169@home.fluff.org>

Ben Dooks <ben-mtd@fluff.org> writes:

> Fix unlock address calculation for non-x8 chips for the
> cfi cmdset code, which assumes always X8
> 
> Patch against 2.6.9-rc2 with 19th September CVS
> 
> Signed-off-by: Ben Dooks <ben-mtd@fluff.org>
> 
> --- linux-2.6.9-rc2-bk6-mtd20040919/drivers/mtd/chips/jedec_probe.c 2004-09-20
> 13:02:46.000000000 +0100
> 
> +++ linux-2.6.9-rc2-bk6-mtd20040919-work/drivers/mtd/chips/jedec_probe.c
> 2004-09-20 23:21:40.000000000 +0100
> 
> @@ -2046,7 +2046,15 @@
>  	printk(KERN_INFO "%s: Found %d x%d devices at 0x%x in %d-bit bank\n",
>  	       map->name, cfi_interleave(cfi), cfi->device_type*8, base, 
>  	       map->bankwidth*8);
> -	
> +
> +	/* fixup unlock addresses for the cmdset */
> +
> +	cfi->addr_unlock1 *= cfi_interleave(cfi) * cfi->device_type;
> +	cfi->addr_unlock2 *= cfi_interleave(cfi) * cfi->device_type;
> +
> +	printk(KERN_DEBUG "unlocks at %08x,%08x\n", 
> +	       cfi->addr_unlock1, cfi->addr_unlock2);
> +
>  	return 1;
>  }

Hmm.  I think that points out a real issue but I think the bug actually
lies in cfi_cmdset_0002.  

That fix makes below comment from cfi_cmdset_0002 clearly wrong.
	/*
	 * The CFI_DEVICETYPE_X8 argument is needed even when
	 * cfi->device_type != CFI_DEVICETYPE_X8.  The addresses for
	 * command sequences don't scale even when the device is
	 * wider.  This is the case for many of the cfi_send_gen_cmd()
	 * below.  I'm not sure, however, why some use
	 * cfi->device_type.
	 */

So I think it is more likely we need to change this hunk of code below.

		/*
		 * These might already be setup (more correctly) by
		 * jedec_probe.c - still need it for cfi_probe.c path.
		 */
		if ( ! (cfi->addr_unlock1 && cfi->addr_unlock2) ) {
			switch (cfi->device_type) {
			case CFI_DEVICETYPE_X8:
				cfi->addr_unlock1 = 0x555; 
				cfi->addr_unlock2 = 0x2aa; 
				break;
			case CFI_DEVICETYPE_X16:
				cfi->addr_unlock1 = 0xaaa;
				if (map_bankwidth(map) == cfi_interleave(cfi)) {
					/* X16 chip(s) in X8 mode */
					cfi->addr_unlock2 = 0x555;
				} else {
					cfi->addr_unlock2 = 0x554;
				}
				break;
			case CFI_DEVICETYPE_X32:
				cfi->addr_unlock1 = 0x1554;
				if (map_bankwidth(map) == cfi_interleave(cfi)*2) {
					/* X32 chip(s) in X16 mode */
					cfi->addr_unlock1 = 0xaaa;
				} else {
					cfi->addr_unlock2 = 0xaa8; 
				}
				break;
			default:
				printk(KERN_WARNING
				       "MTD %s(): Unsupported device type %d\n",
				       __func__, cfi->device_type);
				kfree(mtd);
				kfree(extp);
				return NULL;
			}
		}

Does anyone have cfi cmdset 0002 devices in an interleaved configuration
who would care to comment?


Eric

  reply	other threads:[~2004-09-23  1:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-20 23:44 Fix to jedec_probe unlock addresses Ben Dooks
2004-09-23  1:48 ` Eric W. Biederman [this message]
2004-09-23 21:01   ` Ben Dooks
2004-09-23 21:36     ` Eric W. Biederman
2004-09-24  4:29       ` [CFT] FIX CFI cmdset 0002 for x16 and x32 devices Eric W. Biederman
2004-09-28 12:15         ` Ben Dooks

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3brfxycuf.fsf@maxwell.lnxi.com \
    --to=ebiederman@lnxi.com \
    --cc=ben-mtd@fluff.org \
    --cc=ben@fluff.org \
    --cc=linux-mtd@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox