Lines Matching refs:cs553x
104 static int cs553x_write_ctrl_byte(struct cs553x_nand_controller *cs553x, in cs553x_write_ctrl_byte() argument
110 writeb(ctl, cs553x->mmio + MM_NAND_CTL); in cs553x_write_ctrl_byte()
111 writeb(data, cs553x->mmio + MM_NAND_IO); in cs553x_write_ctrl_byte()
112 ret = readb_poll_timeout_atomic(cs553x->mmio + MM_NAND_STS, status, in cs553x_write_ctrl_byte()
121 static void cs553x_data_in(struct cs553x_nand_controller *cs553x, void *buf, in cs553x_data_in() argument
124 writeb(0, cs553x->mmio + MM_NAND_CTL); in cs553x_data_in()
126 memcpy_fromio(buf, cs553x->mmio, 0x800); in cs553x_data_in()
130 memcpy_fromio(buf, cs553x->mmio, len); in cs553x_data_in()
133 static void cs553x_data_out(struct cs553x_nand_controller *cs553x, in cs553x_data_out() argument
136 writeb(0, cs553x->mmio + MM_NAND_CTL); in cs553x_data_out()
138 memcpy_toio(cs553x->mmio, buf, 0x800); in cs553x_data_out()
142 memcpy_toio(cs553x->mmio, buf, len); in cs553x_data_out()
145 static int cs553x_wait_ready(struct cs553x_nand_controller *cs553x, in cs553x_wait_ready() argument
151 return readb_poll_timeout(cs553x->mmio + MM_NAND_STS, status, in cs553x_wait_ready()
156 static int cs553x_exec_instr(struct cs553x_nand_controller *cs553x, in cs553x_exec_instr() argument
164 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_CLE, in cs553x_exec_instr()
170 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_ALE, in cs553x_exec_instr()
178 cs553x_data_in(cs553x, instr->ctx.data.buf.in, in cs553x_exec_instr()
183 cs553x_data_out(cs553x, instr->ctx.data.buf.out, in cs553x_exec_instr()
188 ret = cs553x_wait_ready(cs553x, instr->ctx.waitrdy.timeout_ms); in cs553x_exec_instr()
202 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller); in cs553x_exec_op() local
210 writeb(0, cs553x->mmio + MM_NAND_CTL); in cs553x_exec_op()
212 ret = cs553x_exec_instr(cs553x, &op->instrs[i]); in cs553x_exec_op()
218 writeb(CS_NAND_CTL_CE, cs553x->mmio + MM_NAND_CTL); in cs553x_exec_op()
225 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller); in cs_enable_hwecc() local
227 writeb(0x07, cs553x->mmio + MM_NAND_ECC_CTL); in cs_enable_hwecc()
233 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller); in cs_calculate_ecc() local
236 ecc = readl(cs553x->mmio + MM_NAND_STS); in cs_calculate_ecc()