/* save lbc registers */ static int fsl_lbc_suspend(struct platform_device *pdev, pm_message_t state) { struct fsl_lbc_ctrl *ctrl = dev_get_drvdata(&pdev->dev); struct fsl_lbc_regs __iomem *lbc = ctrl->regs; ctrl->saved_regs = kmalloc(sizeof(struct fsl_lbc_regs), GFP_KERNEL); if (!ctrl->saved_regs) return -ENOMEM; _memcpy_fromio(ctrl->saved_regs, lbc, sizeof(struct fsl_lbc_regs)); return 0; }
/* save lbc registers */ static int fsl_lbc_syscore_suspend(void) { struct fsl_lbc_ctrl *ctrl; struct fsl_lbc_regs __iomem *lbc; ctrl = fsl_lbc_ctrl_dev; if (!ctrl) goto out; lbc = ctrl->regs; if (!lbc) goto out; ctrl->saved_regs = kmalloc(sizeof(struct fsl_lbc_regs), GFP_KERNEL); if (!ctrl->saved_regs) return -ENOMEM; _memcpy_fromio(ctrl->saved_regs, lbc, sizeof(struct fsl_lbc_regs)); out: return 0; }