Lines Matching refs:cs553x
103 static int cs553x_write_ctrl_byte(struct cs553x_nand_controller *cs553x,
108 writeb(ctl, cs553x->mmio + MM_NAND_CTL);
109 writeb(data, cs553x->mmio + MM_NAND_IO);
110 return readb_poll_timeout_atomic(cs553x->mmio + MM_NAND_STS, status,
115 static void cs553x_data_in(struct cs553x_nand_controller *cs553x, void *buf,
118 writeb(0, cs553x->mmio + MM_NAND_CTL);
120 memcpy_fromio(buf, cs553x->mmio, 0x800);
124 memcpy_fromio(buf, cs553x->mmio, len);
127 static void cs553x_data_out(struct cs553x_nand_controller *cs553x,
130 writeb(0, cs553x->mmio + MM_NAND_CTL);
132 memcpy_toio(cs553x->mmio, buf, 0x800);
136 memcpy_toio(cs553x->mmio, buf, len);
139 static int cs553x_wait_ready(struct cs553x_nand_controller *cs553x,
145 return readb_poll_timeout(cs553x->mmio + MM_NAND_STS, status,
150 static int cs553x_exec_instr(struct cs553x_nand_controller *cs553x,
158 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_CLE,
164 ret = cs553x_write_ctrl_byte(cs553x, CS_NAND_CTL_ALE,
172 cs553x_data_in(cs553x, instr->ctx.data.buf.in,
177 cs553x_data_out(cs553x, instr->ctx.data.buf.out,
182 ret = cs553x_wait_ready(cs553x, instr->ctx.waitrdy.timeout_ms);
196 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
204 writeb(0, cs553x->mmio + MM_NAND_CTL);
206 ret = cs553x_exec_instr(cs553x, &op->instrs[i]);
212 writeb(CS_NAND_CTL_CE, cs553x->mmio + MM_NAND_CTL);
219 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
221 writeb(0x07, cs553x->mmio + MM_NAND_ECC_CTL);
227 struct cs553x_nand_controller *cs553x = to_cs553x(this->controller);
230 ecc = readl(cs553x->mmio + MM_NAND_STS);
294 pr_warn("ioremap cs553x NAND @0x%08lx failed\n", adr);