Lines Matching full:bank

90  * between bank 5 and bank 6 on iMX6QP, iMX6DQ, iMX6SDL, iMX6SX,
92 * Bank 5 ends at 0x6F0 and Bank 6 starts at 0x800. When reading the fuses,
95 * Similar hole exists between bank 14 and bank 15 of size
100 * This function is to covert user input to physical bank index.
103 * When write, no need to consider hole, always use the bank/word
131 u32 fuse_word_physical(u32 bank, u32 word_index) in fuse_word_physical() argument
134 if (bank == 8) in fuse_word_physical()
146 u32 fuse_word_physical(u32 bank, u32 word_index) in fuse_word_physical() argument
164 static int prepare_access(struct ocotp_regs **regs, u32 bank, u32 word, in prepare_access() argument
169 if (bank >= FUSE_BANKS || in prepare_access()
170 word >= ARRAY_SIZE((*regs)->bank[0].fuse_regs) >> 2 || in prepare_access()
177 if ((bank == 7 || bank == 8) && in prepare_access()
178 word >= ARRAY_SIZE((*regs)->bank[0].fuse_regs) >> 3) { in prepare_access()
211 static int prepare_read(struct ocotp_regs **regs, u32 bank, u32 word, u32 *val, in prepare_read() argument
214 return prepare_access(regs, bank, word, val != NULL, caller); in prepare_read()
217 int fuse_read(u32 bank, u32 word, u32 *val) in fuse_read() argument
224 ret = prepare_read(&regs, bank, word, val, __func__); in fuse_read()
228 phy_bank = fuse_bank_physical(bank); in fuse_read()
229 phy_word = fuse_word_physical(bank, word); in fuse_read()
231 *val = readl(&regs->bank[phy_bank].fuse_regs[phy_word << 2]); in fuse_read()
291 static void setup_direct_access(struct ocotp_regs *regs, u32 bank, u32 word, in setup_direct_access() argument
296 u32 addr = bank; in setup_direct_access()
299 /* Bank 7 and Bank 8 only supports 4 words each for i.MX6ULL */ in setup_direct_access()
300 if ((is_mx6ull() || is_mx6sll()) && (bank > 7)) { in setup_direct_access()
301 bank = bank - 1; in setup_direct_access()
304 addr = bank << 3 | word; in setup_direct_access()
313 int fuse_sense(u32 bank, u32 word, u32 *val) in fuse_sense() argument
318 ret = prepare_read(&regs, bank, word, val, __func__); in fuse_sense()
322 setup_direct_access(regs, bank, word, false); in fuse_sense()
342 static int prepare_write(struct ocotp_regs **regs, u32 bank, u32 word, in prepare_write() argument
345 return prepare_access(regs, bank, word, true, caller); in prepare_write()
348 int fuse_prog(u32 bank, u32 word, u32 val) in fuse_prog() argument
353 ret = prepare_write(&regs, bank, word, __func__); in fuse_prog()
357 setup_direct_access(regs, bank, word, true); in fuse_prog()
403 int fuse_override(u32 bank, u32 word, u32 val) in fuse_override() argument
410 ret = prepare_write(&regs, bank, word, __func__); in fuse_override()
414 phy_bank = fuse_bank_physical(bank); in fuse_override()
415 phy_word = fuse_word_physical(bank, word); in fuse_override()
417 writel(val, &regs->bank[phy_bank].fuse_regs[phy_word << 2]); in fuse_override()