144144#define NFC_ECC_EXCEPTION BIT(4)
145145#define NFC_ECC_BLOCK_SIZE_MSK BIT(5)
146146#define NFC_ECC_BLOCK_512 BIT(5)
147- #define NFC_RANDOM_EN BIT(9 )
148- #define NFC_RANDOM_DIRECTION BIT(10 )
147+ #define NFC_RANDOM_EN ( nfc ) (nfc->caps->random_en_mask )
148+ #define NFC_RANDOM_DIRECTION ( nfc ) (nfc->caps->random_dir_mask )
149149#define NFC_ECC_MODE_MSK (nfc ) (nfc->caps->ecc_mode_mask)
150150#define NFC_ECC_MODE (nfc , x ) field_prep(NFC_ECC_MODE_MSK(nfc), (x))
151151#define NFC_RANDOM_SEED_MSK GENMASK(30, 16)
@@ -239,6 +239,8 @@ static inline struct sunxi_nand_chip *to_sunxi_nand(struct nand_chip *nand)
239239 * @reg_ecc_err_cnt: ECC error counter register
240240 * @reg_user_data: User data register
241241 * @reg_pat_found: Data Pattern Status Register
242+ * @random_en_mask: RANDOM_EN mask in NFC_ECC_CTL register
243+ * @random_dir_mask: RANDOM_DIRECTION mask in NFC_ECC_CTL register
242244 * @ecc_mode_mask: ECC_MODE mask in NFC_ECC_CTL register
243245 * @pat_found_mask: ECC_PAT_FOUND mask in NFC_REG_PAT_FOUND register
244246 * @dma_maxburst: DMA maxburst
@@ -252,6 +254,8 @@ struct sunxi_nfc_caps {
252254 unsigned int reg_ecc_err_cnt ;
253255 unsigned int reg_user_data ;
254256 unsigned int reg_pat_found ;
257+ unsigned int random_en_mask ;
258+ unsigned int random_dir_mask ;
255259 unsigned int ecc_mode_mask ;
256260 unsigned int pat_found_mask ;
257261 unsigned int dma_maxburst ;
@@ -680,7 +684,7 @@ static void sunxi_nfc_randomizer_enable(struct nand_chip *nand)
680684 if (!(nand -> options & NAND_NEED_SCRAMBLING ))
681685 return ;
682686
683- writel (readl (nfc -> regs + NFC_REG_ECC_CTL ) | NFC_RANDOM_EN ,
687+ writel (readl (nfc -> regs + NFC_REG_ECC_CTL ) | NFC_RANDOM_EN ( nfc ) ,
684688 nfc -> regs + NFC_REG_ECC_CTL );
685689}
686690
@@ -691,7 +695,7 @@ static void sunxi_nfc_randomizer_disable(struct nand_chip *nand)
691695 if (!(nand -> options & NAND_NEED_SCRAMBLING ))
692696 return ;
693697
694- writel (readl (nfc -> regs + NFC_REG_ECC_CTL ) & ~NFC_RANDOM_EN ,
698+ writel (readl (nfc -> regs + NFC_REG_ECC_CTL ) & ~NFC_RANDOM_EN ( nfc ) ,
695699 nfc -> regs + NFC_REG_ECC_CTL );
696700}
697701
@@ -2230,6 +2234,8 @@ static const struct sunxi_nfc_caps sunxi_nfc_a10_caps = {
22302234 .reg_ecc_err_cnt = NFC_REG_A10_ECC_ERR_CNT ,
22312235 .reg_user_data = NFC_REG_A10_USER_DATA ,
22322236 .reg_pat_found = NFC_REG_ECC_ST ,
2237+ .random_en_mask = BIT (9 ),
2238+ .random_dir_mask = BIT (10 ),
22332239 .ecc_mode_mask = GENMASK (15 , 12 ),
22342240 .pat_found_mask = GENMASK (31 , 16 ),
22352241 .dma_maxburst = 4 ,
@@ -2244,6 +2250,8 @@ static const struct sunxi_nfc_caps sunxi_nfc_a23_caps = {
22442250 .reg_ecc_err_cnt = NFC_REG_A10_ECC_ERR_CNT ,
22452251 .reg_user_data = NFC_REG_A10_USER_DATA ,
22462252 .reg_pat_found = NFC_REG_ECC_ST ,
2253+ .random_en_mask = BIT (9 ),
2254+ .random_dir_mask = BIT (10 ),
22472255 .ecc_mode_mask = GENMASK (15 , 12 ),
22482256 .pat_found_mask = GENMASK (31 , 16 ),
22492257 .dma_maxburst = 8 ,
0 commit comments