mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	This is a backport of the patches accepted to the Linux mainline related to mvebu SoC (Armada XP and Armada 370) between Linux v3.11, and Linux v3.12. This work mainly covers: * Ground work for sharing the pxa nand driver(drivers/mtd/nand/pxa3xx_nand.c) between the PXA family,and the Armada family. * Further updates to the mvebu MBus. * Work and ground work for enabling MSI on the Armada family. * some phy / mdio bus initialization related work. * Device tree binding documentation update. Signed-off-by: Seif Mazareeb <seif.mazareeb@gmail.com> CC: Luka Perkov <luka@openwrt.org> SVN-Revision: 39565
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 50a7db84f71e7c4779596fb5f8efb579a5d29f97 Mon Sep 17 00:00:00 2001
 | 
						|
From: Huang Shijie <b32955@freescale.com>
 | 
						|
Date: Fri, 17 May 2013 11:17:27 +0800
 | 
						|
Subject: [PATCH 091/203] mtd: add data structures for Extended Parameter Page
 | 
						|
 | 
						|
Since the ONFI 2.1, the onfi spec adds the Extended Parameter Page
 | 
						|
to store the ECC info.
 | 
						|
 | 
						|
The onfi spec tells us that if the nand chip's recommended ECC codeword
 | 
						|
size is not 512 bytes, then the @ecc_bits is 0xff. The host _SHOULD_ then
 | 
						|
read the Extended ECC information that is part of the extended parameter
 | 
						|
page to retrieve the ECC requirements for this device.
 | 
						|
 | 
						|
This patch adds
 | 
						|
    [1] the neccessary fields for nand_onfi_params{},
 | 
						|
    [2] and adds the onfi_ext_ecc_info{} for Extended ECC information,
 | 
						|
    [3] adds onfi_ext_section{} for extended sections,
 | 
						|
    [4] and adds onfi_ext_param_page{} for the Extended Parameter Page.
 | 
						|
 | 
						|
Acked-by: Pekon Gupta <pekon@ti.com>
 | 
						|
Signed-off-by: Huang Shijie <b32955@freescale.com>
 | 
						|
Reviewed-and-tested-by: Brian Norris <computersforpeace@gmail.com>
 | 
						|
[Brian: amended for checkpatch.pl]
 | 
						|
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
 | 
						|
 | 
						|
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
 | 
						|
---
 | 
						|
 include/linux/mtd/nand.h | 39 ++++++++++++++++++++++++++++++++++++++-
 | 
						|
 1 file changed, 38 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
--- a/include/linux/mtd/nand.h
 | 
						|
+++ b/include/linux/mtd/nand.h
 | 
						|
@@ -224,7 +224,10 @@ struct nand_onfi_params {
 | 
						|
 	__le16 revision;
 | 
						|
 	__le16 features;
 | 
						|
 	__le16 opt_cmd;
 | 
						|
-	u8 reserved[22];
 | 
						|
+	u8 reserved0[2];
 | 
						|
+	__le16 ext_param_page_length; /* since ONFI 2.1 */
 | 
						|
+	u8 num_of_param_pages;        /* since ONFI 2.1 */
 | 
						|
+	u8 reserved1[17];
 | 
						|
 
 | 
						|
 	/* manufacturer information block */
 | 
						|
 	char manufacturer[12];
 | 
						|
@@ -281,6 +284,40 @@ struct nand_onfi_params {
 | 
						|
 
 | 
						|
 #define ONFI_CRC_BASE	0x4F4E
 | 
						|
 
 | 
						|
+/* Extended ECC information Block Definition (since ONFI 2.1) */
 | 
						|
+struct onfi_ext_ecc_info {
 | 
						|
+	u8 ecc_bits;
 | 
						|
+	u8 codeword_size;
 | 
						|
+	__le16 bb_per_lun;
 | 
						|
+	__le16 block_endurance;
 | 
						|
+	u8 reserved[2];
 | 
						|
+} __packed;
 | 
						|
+
 | 
						|
+#define ONFI_SECTION_TYPE_0	0	/* Unused section. */
 | 
						|
+#define ONFI_SECTION_TYPE_1	1	/* for additional sections. */
 | 
						|
+#define ONFI_SECTION_TYPE_2	2	/* for ECC information. */
 | 
						|
+struct onfi_ext_section {
 | 
						|
+	u8 type;
 | 
						|
+	u8 length;
 | 
						|
+} __packed;
 | 
						|
+
 | 
						|
+#define ONFI_EXT_SECTION_MAX 8
 | 
						|
+
 | 
						|
+/* Extended Parameter Page Definition (since ONFI 2.1) */
 | 
						|
+struct onfi_ext_param_page {
 | 
						|
+	__le16 crc;
 | 
						|
+	u8 sig[4];             /* 'E' 'P' 'P' 'S' */
 | 
						|
+	u8 reserved0[10];
 | 
						|
+	struct onfi_ext_section sections[ONFI_EXT_SECTION_MAX];
 | 
						|
+
 | 
						|
+	/*
 | 
						|
+	 * The actual size of the Extended Parameter Page is in
 | 
						|
+	 * @ext_param_page_length of nand_onfi_params{}.
 | 
						|
+	 * The following are the variable length sections.
 | 
						|
+	 * So we do not add any fields below. Please see the ONFI spec.
 | 
						|
+	 */
 | 
						|
+} __packed;
 | 
						|
+
 | 
						|
 /**
 | 
						|
  * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices
 | 
						|
  * @lock:               protection lock
 |