23 #include <linux/module.h>
24 #include <linux/kernel.h>
25 #include <linux/compiler.h>
27 #include <linux/types.h>
28 #include <linux/slab.h>
62 if (!fsl_ifc_ctrl_dev || !fsl_ifc_ctrl_dev->
regs)
65 for (i = 0; i <
ARRAY_SIZE(fsl_ifc_ctrl_dev->
regs->cspr_cs); i++) {
138 spin_unlock_irqrestore(&nand_irq_lock, flags);
147 if (check_nand_stat(ctrl))
157 static irqreturn_t fsl_ifc_ctrl_irq(
int irqno,
void *data)
167 dev_err(ctrl->
dev,
"transaction sent to IFC is not mapped to"
168 "any memory bank 0x%08X\n", cs_err);
178 "CM_ERATTR0 0x%08X\n", status);
181 "CM_ERATTR0 0x%08X\n", status);
186 "transaction 0x%08X\n", err_axiid);
191 "transaction 0x%08X\n", err_srcid);
193 dev_err(ctrl->
dev,
"Transaction Address corresponding to error"
194 "ERADDR 0x%08X\n", err_addr);
199 if (check_nand_stat(ctrl))
219 dev_info(&dev->
dev,
"Freescale Integrated Flash Controller\n");
221 fsl_ifc_ctrl_dev = kzalloc(
sizeof(*fsl_ifc_ctrl_dev),
GFP_KERNEL);
222 if (!fsl_ifc_ctrl_dev)
229 if (!fsl_ifc_ctrl_dev->
regs) {
230 dev_err(&dev->
dev,
"failed to get memory region\n");
238 dev_err(&dev->
dev,
"failed to get irq resource "
248 fsl_ifc_ctrl_dev->
dev = &dev->
dev;
250 ret = fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev);
257 "fsl-ifc", fsl_ifc_ctrl_dev);
259 dev_err(&dev->
dev,
"failed to install irq (%d)\n",
260 fsl_ifc_ctrl_dev->
irq);
266 0,
"fsl-ifc-nand", fsl_ifc_ctrl_dev);
268 dev_err(&dev->
dev,
"failed to install irq (%d)\n",
288 .compatible =
"fsl,ifc",
296 .of_match_table = fsl_ifc_match,
298 .probe = fsl_ifc_ctrl_probe,
299 .remove = fsl_ifc_ctrl_remove,