Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 May 2013 21:03:46 +0400
From:      Alexander Fedorov <alexander.fedorov@rtlservice.com>
To:        current@freebsd.org
Subject:   [PATCH] NAND Framework ONFI chip detection
Message-ID:  <CAOcOT_z9wCPj7yf-TjGjdyQf7mEQZug0ppAGGZMwpe2H5Sgxbg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hi all!

I'm writing NAND Flash controller driver for my Hackberry board.
And I found that NAND Framework does not properly detecting ONFI
compiliant chips.

First, ONFI specification says (p. 40
http://www.onfi.org/~/media/ONFI/specs/ONFI_1_0_Gold.pdf):

>The ONFI signature is the ASCII encoding of 'ONFI' where 'O' = 4Fh, 'N' = 4Eh, 'F' = 46h, 'I' = 49h.

But, current code check it for 'o', 'n', 'f', 'I'.

Second, function "onfi_read_parameter" (nand_generic.c) read
parameters page using this construction:
>NANDBUS_READ_BUFFER(nandbus, params, sizeof(struct onfi_params));

So, structure onfi_params must be declared as packed.

Proposed patch solves the problem for me.
Is this patch ok?

[-- Attachment #2 --]
Index: nand.h
===================================================================
--- nand.h	(revision 250857)
+++ nand.h	(working copy)
@@ -219,7 +219,7 @@
 	uint16_t	vendor_rev;
 	uint8_t		vendor_spec[8];
 	uint16_t	crc;
-};
+}__attribute__((packed));
 
 struct nand_ecc_data {
 	int	eccsize;		/* Number of data bytes per ECC step */
Index: nandbus.c
===================================================================
--- nandbus.c	(revision 250857)
+++ nandbus.c	(working copy)
@@ -331,7 +331,7 @@
 nand_probe_onfi(device_t bus, uint8_t *onfi_compliant)
 {
 	device_t nfc;
-	char onfi_id[] = {'o', 'n', 'f', 'i', '\0'};
+	char onfi_id[] = {'O', 'N', 'F', 'I', '\0'};
 	int i;
 
 	nand_debug(NDBG_BUS,"probing ONFI");

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOcOT_z9wCPj7yf-TjGjdyQf7mEQZug0ppAGGZMwpe2H5Sgxbg>