mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
changed Makefile and profiles, added patches for kernel 2.6.24
(stable-branch of Openmoko) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13613 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
From cb3cc53a76c7f1f7c827d048db7a849e77071515 Mon Sep 17 00:00:00 2001
|
||||
From: Holger Freyther <zecke@openmoko.org>
|
||||
Date: Wed, 13 Aug 2008 11:28:00 +0100
|
||||
Subject: [PATCH] From 5ee1ee9e1c8a652b0f9cde72ad5e547db87d4d67 Mon Sep 17 00:00:00 2001
|
||||
Subject: [PATCH] [gta02] Disable hardware ECC unless we get instructed to enable it
|
||||
This is restoring the old behavior in regard to ECC. Even if
|
||||
hardware ECC was compiled in we didn't use it. Make this a runtime
|
||||
option. If the bootloader passes hardware_ecc we will enable the
|
||||
hardware ECC for real.
|
||||
|
||||
---
|
||||
arch/arm/mach-s3c2440/mach-gta02.c | 19 +++++++++++++++++++
|
||||
drivers/mtd/nand/s3c2410.c | 2 +-
|
||||
include/asm-arm/plat-s3c/nand.h | 3 +++
|
||||
3 files changed, 23 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
|
||||
index ff3c3c0..7d4cc67 100644
|
||||
--- a/arch/arm/mach-s3c2440/mach-gta02.c
|
||||
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
|
||||
@@ -882,6 +882,7 @@ static struct s3c2410_platform_nand gta02_nand_info = {
|
||||
.twrph1 = 20,
|
||||
.nr_sets = ARRAY_SIZE(gta02_nand_sets),
|
||||
.sets = gta02_nand_sets,
|
||||
+ .software_ecc = 1,
|
||||
};
|
||||
|
||||
static struct s3c24xx_mci_pdata gta02_mmc_cfg = {
|
||||
@@ -1546,6 +1547,20 @@ static irqreturn_t ar6000_wow_irq(int irq, void *param)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * hardware_ecc=1|0
|
||||
+ */
|
||||
+static char hardware_ecc_str[4] __initdata = "";
|
||||
+
|
||||
+static int __init hardware_ecc_setup(char *str)
|
||||
+{
|
||||
+ if (str)
|
||||
+ strlcpy(hardware_ecc_str, str, sizeof(hardware_ecc_str));
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+__setup("hardware_ecc=", hardware_ecc_setup);
|
||||
+
|
||||
static void __init gta02_machine_init(void)
|
||||
{
|
||||
int rc;
|
||||
@@ -1565,6 +1580,10 @@ static void __init gta02_machine_init(void)
|
||||
|
||||
spin_lock_init(&motion_irq_lock);
|
||||
|
||||
+ /* do not force soft ecc if we are asked to use hardware_ecc */
|
||||
+ if (hardware_ecc_str[0] == '1')
|
||||
+ gta02_nand_info.software_ecc = 0;
|
||||
+
|
||||
s3c_device_usb.dev.platform_data = >a02_usb_info;
|
||||
s3c_device_nand.dev.platform_data = >a02_nand_info;
|
||||
s3c_device_sdi.dev.platform_data = >a02_mmc_cfg;
|
||||
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
|
||||
index 495381c..4413d76 100644
|
||||
--- a/drivers/mtd/nand/s3c2410.c
|
||||
+++ b/drivers/mtd/nand/s3c2410.c
|
||||
@@ -656,7 +656,7 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
|
||||
nmtd->mtd.owner = THIS_MODULE;
|
||||
nmtd->set = set;
|
||||
|
||||
- if (hardware_ecc) {
|
||||
+ if (!info->platform->software_ecc && hardware_ecc) {
|
||||
chip->ecc.calculate = s3c2410_nand_calculate_ecc;
|
||||
chip->ecc.correct = s3c2410_nand_correct_data;
|
||||
chip->ecc.mode = NAND_ECC_HW;
|
||||
diff --git a/include/asm-arm/plat-s3c/nand.h b/include/asm-arm/plat-s3c/nand.h
|
||||
index cb87f9e..676a061 100644
|
||||
--- a/include/asm-arm/plat-s3c/nand.h
|
||||
+++ b/include/asm-arm/plat-s3c/nand.h
|
||||
@@ -42,6 +42,9 @@ struct s3c2410_platform_nand {
|
||||
int nr_sets;
|
||||
struct s3c2410_nand_set *sets;
|
||||
|
||||
+ /* force software_ecc at runtime */
|
||||
+ int software_ecc;
|
||||
+
|
||||
void (*select_chip)(struct s3c2410_nand_set *,
|
||||
int chip);
|
||||
};
|
||||
--
|
||||
1.5.6.5
|
||||
|
||||
Reference in New Issue
Block a user