Lines Matching refs:cs553x

104 static int cs553x_write_ctrl_byte(struct cs553x_nand_controller *cs553x,
110 writeb(ctl, cs553x->mmio + MM_NAND_CTL);
111 writeb(data, cs553x->mmio + MM_NAND_IO);
112 ret = readb_poll_timeout_atomic(cs553x->mmio + MM_NAND_STS, status,
121 static void cs553x_data_in(struct cs553x_nand_controller *cs553x, void *buf,
124 writeb(0, cs553x->mmio + MM_NAND_CTL);
126 memcpy_fromio(buf, cs553x->mmio, 0x800);
130 memcpy_fromio(buf, cs553x->mmio, len);
133 static void cs553x_data_out(struct cs553x_nand_controller *cs553x,
136 writeb(0, cs553x->mmio + MM_NAND_CTL);
138 memcpy_toio(cs553x->mmio, buf, 0x800);
142 memcpy_toio(cs553x->mmio, buf, len);
145 static int cs553x_wait_ready(struct cs553x_nand_controller *cs553x,
151 return readb_poll_timeout(cs553x->mmio + MM_NAND_STS, status,
156 static int cs553x_exec_instr(struct cs553x_nand_controller *cs553x,
164 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_CLE,
170 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_ALE,
178 cs553x_data_in(cs553x, instr->ctx.data.buf.in,
183 cs553x_data_out(cs553x, instr->ctx.data.buf.out,
188 ret = cs553x_wait_ready(cs553x, instr->ctx.waitrdy.timeout_ms);
202 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
210 writeb(0, cs553x->mmio + MM_NAND_CTL);
212 ret = cs553x_exec_instr(cs553x, &op->instrs[i]);
218 writeb(CS_NAND_CTL_CE, cs553x->mmio + MM_NAND_CTL);
225 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
227 writeb(0x07, cs553x->mmio + MM_NAND_ECC_CTL);
233 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
236 ecc = readl(cs553x->mmio + MM_NAND_STS);
300 pr_warn("ioremap cs553x NAND @0x%08lx failed\n", adr);