2019-08-02 08:33:28 +00:00
|
|
|
From a2479dc254ebe31c84fbcfda73f35e2321576494 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
|
|
|
|
Date: Tue, 19 Mar 2019 13:57:38 +0800
|
|
|
|
Subject: [PATCH 1/6] mtd: mtk ecc: move mtk ecc header file to include/mtd
|
|
|
|
|
|
|
|
Change-Id: I8dc1d30e21b40d68ef5efd9587012f82970156a5
|
|
|
|
Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
|
|
|
|
---
|
|
|
|
drivers/mtd/nand/raw/mtk_ecc.c | 3 +--
|
|
|
|
drivers/mtd/nand/raw/mtk_nand.c | 2 +-
|
|
|
|
{drivers/mtd/nand/raw => include/linux/mtd}/mtk_ecc.h | 0
|
|
|
|
3 files changed, 2 insertions(+), 3 deletions(-)
|
|
|
|
rename {drivers/mtd/nand/raw => include/linux/mtd}/mtk_ecc.h (100%)
|
|
|
|
|
|
|
|
--- a/drivers/mtd/nand/raw/mtk_ecc.c
|
|
|
|
+++ b/drivers/mtd/nand/raw/mtk_ecc.c
|
|
|
|
@@ -23,8 +23,7 @@
|
|
|
|
#include <linux/of.h>
|
|
|
|
#include <linux/of_platform.h>
|
|
|
|
#include <linux/mutex.h>
|
|
|
|
-
|
|
|
|
-#include "mtk_ecc.h"
|
|
|
|
+#include <linux/mtd/mtk_ecc.h>
|
|
|
|
|
|
|
|
#define ECC_IDLE_MASK BIT(0)
|
|
|
|
#define ECC_IRQ_EN BIT(0)
|
|
|
|
--- a/drivers/mtd/nand/raw/mtk_nand.c
|
|
|
|
+++ b/drivers/mtd/nand/raw/mtk_nand.c
|
|
|
|
@@ -25,7 +25,7 @@
|
|
|
|
#include <linux/iopoll.h>
|
|
|
|
#include <linux/of.h>
|
|
|
|
#include <linux/of_device.h>
|
|
|
|
-#include "mtk_ecc.h"
|
|
|
|
+#include <linux/mtd/mtk_ecc.h>
|
|
|
|
|
|
|
|
/* NAND controller register definition */
|
|
|
|
#define NFI_CNFG (0x00)
|
2019-08-05 10:55:32 +00:00
|
|
|
--- a/drivers/mtd/nand/raw/mtk_ecc.h
|
|
|
|
+++ /dev/null
|
|
|
|
@@ -1,49 +0,0 @@
|
|
|
|
-/*
|
|
|
|
- * MTK SDG1 ECC controller
|
|
|
|
- *
|
|
|
|
- * Copyright (c) 2016 Mediatek
|
|
|
|
- * Authors: Xiaolei Li <xiaolei.li@mediatek.com>
|
|
|
|
- * Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
|
|
|
|
- * This program is free software; you can redistribute it and/or modify it
|
|
|
|
- * under the terms of the GNU General Public License version 2 as published
|
|
|
|
- * by the Free Software Foundation.
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-#ifndef __DRIVERS_MTD_NAND_MTK_ECC_H__
|
|
|
|
-#define __DRIVERS_MTD_NAND_MTK_ECC_H__
|
|
|
|
-
|
|
|
|
-#include <linux/types.h>
|
|
|
|
-
|
|
|
|
-enum mtk_ecc_mode {ECC_DMA_MODE = 0, ECC_NFI_MODE = 1};
|
|
|
|
-enum mtk_ecc_operation {ECC_ENCODE, ECC_DECODE};
|
|
|
|
-
|
|
|
|
-struct device_node;
|
|
|
|
-struct mtk_ecc;
|
|
|
|
-
|
|
|
|
-struct mtk_ecc_stats {
|
|
|
|
- u32 corrected;
|
|
|
|
- u32 bitflips;
|
|
|
|
- u32 failed;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-struct mtk_ecc_config {
|
|
|
|
- enum mtk_ecc_operation op;
|
|
|
|
- enum mtk_ecc_mode mode;
|
|
|
|
- dma_addr_t addr;
|
|
|
|
- u32 strength;
|
|
|
|
- u32 sectors;
|
|
|
|
- u32 len;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-int mtk_ecc_encode(struct mtk_ecc *, struct mtk_ecc_config *, u8 *, u32);
|
|
|
|
-void mtk_ecc_get_stats(struct mtk_ecc *, struct mtk_ecc_stats *, int);
|
|
|
|
-int mtk_ecc_wait_done(struct mtk_ecc *, enum mtk_ecc_operation);
|
|
|
|
-int mtk_ecc_enable(struct mtk_ecc *, struct mtk_ecc_config *);
|
|
|
|
-void mtk_ecc_disable(struct mtk_ecc *);
|
|
|
|
-void mtk_ecc_adjust_strength(struct mtk_ecc *ecc, u32 *p);
|
|
|
|
-unsigned int mtk_ecc_get_parity_bits(struct mtk_ecc *ecc);
|
|
|
|
-
|
|
|
|
-struct mtk_ecc *of_mtk_ecc_get(struct device_node *);
|
|
|
|
-void mtk_ecc_release(struct mtk_ecc *);
|
|
|
|
-
|
|
|
|
-#endif
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/include/linux/mtd/mtk_ecc.h
|
|
|
|
@@ -0,0 +1,49 @@
|
|
|
|
+/*
|
|
|
|
+ * MTK SDG1 ECC controller
|
|
|
|
+ *
|
|
|
|
+ * Copyright (c) 2016 Mediatek
|
|
|
|
+ * Authors: Xiaolei Li <xiaolei.li@mediatek.com>
|
|
|
|
+ * Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
|
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
|
+ * under the terms of the GNU General Public License version 2 as published
|
|
|
|
+ * by the Free Software Foundation.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+#ifndef __DRIVERS_MTD_NAND_MTK_ECC_H__
|
|
|
|
+#define __DRIVERS_MTD_NAND_MTK_ECC_H__
|
|
|
|
+
|
|
|
|
+#include <linux/types.h>
|
|
|
|
+
|
|
|
|
+enum mtk_ecc_mode {ECC_DMA_MODE = 0, ECC_NFI_MODE = 1};
|
|
|
|
+enum mtk_ecc_operation {ECC_ENCODE, ECC_DECODE};
|
|
|
|
+
|
|
|
|
+struct device_node;
|
|
|
|
+struct mtk_ecc;
|
|
|
|
+
|
|
|
|
+struct mtk_ecc_stats {
|
|
|
|
+ u32 corrected;
|
|
|
|
+ u32 bitflips;
|
|
|
|
+ u32 failed;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct mtk_ecc_config {
|
|
|
|
+ enum mtk_ecc_operation op;
|
|
|
|
+ enum mtk_ecc_mode mode;
|
|
|
|
+ dma_addr_t addr;
|
|
|
|
+ u32 strength;
|
|
|
|
+ u32 sectors;
|
|
|
|
+ u32 len;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+int mtk_ecc_encode(struct mtk_ecc *, struct mtk_ecc_config *, u8 *, u32);
|
|
|
|
+void mtk_ecc_get_stats(struct mtk_ecc *, struct mtk_ecc_stats *, int);
|
|
|
|
+int mtk_ecc_wait_done(struct mtk_ecc *, enum mtk_ecc_operation);
|
|
|
|
+int mtk_ecc_enable(struct mtk_ecc *, struct mtk_ecc_config *);
|
|
|
|
+void mtk_ecc_disable(struct mtk_ecc *);
|
|
|
|
+void mtk_ecc_adjust_strength(struct mtk_ecc *ecc, u32 *p);
|
|
|
|
+unsigned int mtk_ecc_get_parity_bits(struct mtk_ecc *ecc);
|
|
|
|
+
|
|
|
|
+struct mtk_ecc *of_mtk_ecc_get(struct device_node *);
|
|
|
|
+void mtk_ecc_release(struct mtk_ecc *);
|
|
|
|
+
|
|
|
|
+#endif
|