Lines Matching +full:0 +full:x1ff
19 #define JZ_REG_NAND_ECC_CTRL 0x00
20 #define JZ_REG_NAND_DATA 0x04
21 #define JZ_REG_NAND_PAR0 0x08
22 #define JZ_REG_NAND_PAR1 0x0C
23 #define JZ_REG_NAND_PAR2 0x10
24 #define JZ_REG_NAND_IRQ_STAT 0x14
25 #define JZ_REG_NAND_IRQ_CTRL 0x18
26 #define JZ_REG_NAND_ERR(x) (0x1C + ((x) << 2))
32 #define JZ_NAND_ECC_CTRL_ENABLE BIT(0)
39 #define JZ_NAND_STATUS_ERROR BIT(0)
42 0xcd, 0x9d, 0x90, 0x58, 0xf4, 0x8b, 0xff, 0xb7, 0x6f
50 writel(0, ecc->base + JZ_REG_NAND_IRQ_STAT); in jz4740_ecc_reset()
79 if (timeout == 0) in jz4740_ecc_calculate()
86 for (i = 0; i < params->bytes; ++i) in jz4740_ecc_calculate()
90 * If the written data is completely 0xff, we also want to write 0xff as in jz4740_ecc_calculate()
93 if (memcmp(ecc_code, empty_block_ecc, sizeof(empty_block_ecc)) == 0) in jz4740_ecc_calculate()
94 memset(ecc_code, 0xff, sizeof(empty_block_ecc)); in jz4740_ecc_calculate()
96 return 0; in jz4740_ecc_calculate()
101 int offset = index & 0x7; in jz_nand_correct_data()
109 mask ^= (data >> offset) & 0x1ff; in jz_nand_correct_data()
110 data &= ~(0x1ff << offset); in jz_nand_correct_data()
113 buf[index] = data & 0xff; in jz_nand_correct_data()
114 buf[index + 1] = (data >> 8) & 0xff; in jz_nand_correct_data()
127 for (i = 0; i < params->bytes; ++i) in jz4740_ecc_correct()
138 if (timeout == 0) in jz4740_ecc_correct()
151 for (i = 0; i < error_count; ++i) { in jz4740_ecc_correct()
153 index = ((error >> 16) & 0x1ff) - 1; in jz4740_ecc_correct()
154 if (index >= 0 && index < params->size) in jz4740_ecc_correct()
155 jz_nand_correct_data(buf, index, error & 0x1ff); in jz4740_ecc_correct()
161 return 0; in jz4740_ecc_correct()
168 writel(0, ecc->base + JZ_REG_NAND_IRQ_STAT); in jz4740_ecc_disable()