Commit 2c65e744 authored by Yegor Yefremov's avatar Yegor Yefremov Committed by Tony Lindgren

GPMC: add ECC control definitions

Signed-off-by: default avatarYegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent e953e305
...@@ -50,6 +50,19 @@ ...@@ -50,6 +50,19 @@
#define GPMC_ECC_SIZE_CONFIG 0x1fc #define GPMC_ECC_SIZE_CONFIG 0x1fc
#define GPMC_ECC1_RESULT 0x200 #define GPMC_ECC1_RESULT 0x200
/* GPMC ECC control settings */
#define GPMC_ECC_CTRL_ECCCLEAR 0x100
#define GPMC_ECC_CTRL_ECCDISABLE 0x000
#define GPMC_ECC_CTRL_ECCREG1 0x001
#define GPMC_ECC_CTRL_ECCREG2 0x002
#define GPMC_ECC_CTRL_ECCREG3 0x003
#define GPMC_ECC_CTRL_ECCREG4 0x004
#define GPMC_ECC_CTRL_ECCREG5 0x005
#define GPMC_ECC_CTRL_ECCREG6 0x006
#define GPMC_ECC_CTRL_ECCREG7 0x007
#define GPMC_ECC_CTRL_ECCREG8 0x008
#define GPMC_ECC_CTRL_ECCREG9 0x009
#define GPMC_CS0_OFFSET 0x60 #define GPMC_CS0_OFFSET 0x60
#define GPMC_CS_SIZE 0x30 #define GPMC_CS_SIZE 0x30
...@@ -861,8 +874,9 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size) ...@@ -861,8 +874,9 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size)
gpmc_ecc_used = cs; gpmc_ecc_used = cs;
/* clear ecc and enable bits */ /* clear ecc and enable bits */
val = ((0x00000001<<8) | 0x00000001); gpmc_write_reg(GPMC_ECC_CONTROL,
gpmc_write_reg(GPMC_ECC_CONTROL, val); GPMC_ECC_CTRL_ECCCLEAR |
GPMC_ECC_CTRL_ECCREG1);
/* program ecc and result sizes */ /* program ecc and result sizes */
val = ((((ecc_size >> 1) - 1) << 22) | (0x0000000F)); val = ((((ecc_size >> 1) - 1) << 22) | (0x0000000F));
...@@ -870,13 +884,15 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size) ...@@ -870,13 +884,15 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size)
switch (mode) { switch (mode) {
case GPMC_ECC_READ: case GPMC_ECC_READ:
gpmc_write_reg(GPMC_ECC_CONTROL, 0x101); case GPMC_ECC_WRITE:
gpmc_write_reg(GPMC_ECC_CONTROL,
GPMC_ECC_CTRL_ECCCLEAR |
GPMC_ECC_CTRL_ECCREG1);
break; break;
case GPMC_ECC_READSYN: case GPMC_ECC_READSYN:
gpmc_write_reg(GPMC_ECC_CONTROL, 0x100); gpmc_write_reg(GPMC_ECC_CONTROL,
break; GPMC_ECC_CTRL_ECCCLEAR |
case GPMC_ECC_WRITE: GPMC_ECC_CTRL_ECCDISABLE);
gpmc_write_reg(GPMC_ECC_CONTROL, 0x101);
break; break;
default: default:
printk(KERN_INFO "Error: Unrecognized Mode[%d]!\n", mode); printk(KERN_INFO "Error: Unrecognized Mode[%d]!\n", mode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment