From a1e329b41b473ab0b95ccad26147d404b1ac25b0 Mon Sep 17 00:00:00 2001
From: wdenk <wdenk>
Date: Sat, 26 Jan 2002 00:07:42 +0000
Subject: [PATCH] Initial revision

---
 board/pcippc2/pcippc2_fpga.h |  48 ++++++++++++++++
 include/linux/mtd/nftl.h     | 105 +++++++++++++++++++++++++++++++++++
 2 files changed, 153 insertions(+)
 create mode 100644 board/pcippc2/pcippc2_fpga.h
 create mode 100644 include/linux/mtd/nftl.h

diff --git a/board/pcippc2/pcippc2_fpga.h b/board/pcippc2/pcippc2_fpga.h
new file mode 100644
index 0000000000..b6206a451e
--- /dev/null
+++ b/board/pcippc2/pcippc2_fpga.h
@@ -0,0 +1,48 @@
+/*
+ * (C) Copyright 2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _PCIPPC2_FPGA_H_
+#define _PCIPPC2_FPGA_H_
+
+#define FPGA_VENDOR_ID			0x1310
+#define FPGA_DEVICE_ID			0x000d
+
+#define HW_FPGA0_INT			0x0000
+#define HW_FPGA0_UART1			0x0080
+#define HW_FPGA0_UART2			0x0100
+#define HW_FPGA0_RTC			0x2000
+#define HW_FPGA0_DOC			0x4000
+#define HW_FPGA1_RTC			0x0000
+#define HW_FPGA1_DOC			0x4000
+
+#define HW_FPGA0_INT_INTR_MASK		0x30
+#define HW_FPGA0_INT_INTR_STATUS	0x34
+#define HW_FPGA0_INT_INTR_EOI		0x40
+#define HW_FPGA0_INT_SERIAL_CONFIG	0x5c
+
+#define HW_FPGA0_WDT_CTRL		0x44
+#define HW_FPGA0_WDT_PROG		0x48
+#define HW_FPGA0_WDT_VAL		0x4c
+#define HW_FPGA0_WDT_REFRESH		0x50
+
+#endif
diff --git a/include/linux/mtd/nftl.h b/include/linux/mtd/nftl.h
new file mode 100644
index 0000000000..5023a9fb1f
--- /dev/null
+++ b/include/linux/mtd/nftl.h
@@ -0,0 +1,105 @@
+
+/* Defines for NAND Flash Translation Layer  */
+/* (c) 1999 Machine Vision Holdings, Inc.    */
+/* Author: David Woodhouse <dwmw2@mvhi.com>  */
+/* $Id: nftl.h,v 1.10 2000/12/29 00:25:38 dwmw2 Exp $ */
+
+#ifndef __MTD_NFTL_H__
+#define __MTD_NFTL_H__
+
+/* Block Control Information */
+
+struct nftl_bci {
+	unsigned char ECCSig[6];
+	__u8 Status;
+	__u8 Status1;
+}__attribute__((packed));
+
+/* Unit Control Information */
+
+struct nftl_uci0 {
+	__u16 VirtUnitNum;
+	__u16 ReplUnitNum;
+	__u16 SpareVirtUnitNum;
+	__u16 SpareReplUnitNum;
+} __attribute__((packed));
+
+struct nftl_uci1 {
+	__u32 WearInfo;
+	__u16 EraseMark;
+	__u16 EraseMark1;
+} __attribute__((packed));
+
+struct nftl_uci2 {
+        __u16 FoldMark;
+        __u16 FoldMark1;
+	__u32 unused;
+} __attribute__((packed));
+
+union nftl_uci {
+	struct nftl_uci0 a;
+	struct nftl_uci1 b;
+	struct nftl_uci2 c;
+};
+
+struct nftl_oob {
+	struct nftl_bci b;
+	union nftl_uci u;
+};
+
+/* NFTL Media Header */
+
+struct NFTLMediaHeader {
+	char DataOrgID[6];
+	__u16 NumEraseUnits;
+	__u16 FirstPhysicalEUN;
+	__u32 FormattedSize;
+	unsigned char UnitSizeFactor;
+} __attribute__((packed));
+
+#define MAX_ERASE_ZONES (8192 - 512)
+
+#define ERASE_MARK 0x3c69
+#define SECTOR_FREE 0xff
+#define SECTOR_USED 0x55
+#define SECTOR_IGNORE 0x11
+#define SECTOR_DELETED 0x00
+
+#define FOLD_MARK_IN_PROGRESS 0x5555
+
+#define ZONE_GOOD 0xff
+#define ZONE_BAD_ORIGINAL 0
+#define ZONE_BAD_MARKED 7
+
+/* these info are used in ReplUnitTable */
+#define BLOCK_NIL          0xffff /* last block of a chain */
+#define BLOCK_FREE         0xfffe /* free block */
+#define BLOCK_NOTEXPLORED  0xfffd /* non explored block, only used during mounting */
+#define BLOCK_RESERVED     0xfffc /* bios block or bad block */
+
+struct NFTLrecord {
+	struct DiskOnChip *mtd;
+	__u16 MediaUnit, SpareMediaUnit;
+	__u32 EraseSize;
+	struct NFTLMediaHeader MediaHdr;
+	int usecount;
+	unsigned char heads;
+	unsigned char sectors;
+	unsigned short cylinders;
+	__u16 numvunits;
+	__u16 lastEUN;                  /* should be suppressed */
+	__u16 numfreeEUNs;
+	__u16 LastFreeEUN; 		/* To speed up finding a free EUN */
+	__u32 long nr_sects;
+	int head,sect,cyl;
+	__u16 *EUNtable; 		/* [numvunits]: First EUN for each virtual unit  */
+	__u16 *ReplUnitTable; 		/* [numEUNs]: ReplUnitNumber for each */
+        unsigned int nb_blocks;		/* number of physical blocks */
+        unsigned int nb_boot_blocks;	/* number of blocks used by the bios */
+};
+
+#define MAX_NFTLS 16
+#define MAX_SECTORS_PER_UNIT 32
+#define NFTL_PARTN_BITS 4
+
+#endif /* __MTD_NFTL_H__ */
-- 
2.39.5