Lines Matching refs:pmecc

169 	struct atmel_pmecc *pmecc;  member
277 static int atmel_pmecc_prepare_user_req(struct atmel_pmecc *pmecc, in atmel_pmecc_prepare_user_req() argument
309 for (i = 0; i < pmecc->caps->nstrengths; i++) { in atmel_pmecc_prepare_user_req()
310 int nbytes, strength = pmecc->caps->strengths[i]; in atmel_pmecc_prepare_user_req()
343 atmel_pmecc_create_user(struct atmel_pmecc *pmecc, in atmel_pmecc_create_user() argument
350 ret = atmel_pmecc_prepare_user_req(pmecc, req); in atmel_pmecc_create_user()
369 user->pmecc = pmecc; in atmel_pmecc_create_user()
392 for (strength = 0; strength < pmecc->caps->nstrengths; strength++) { in atmel_pmecc_create_user()
393 if (pmecc->caps->strengths[strength] == req->ecc.strength) in atmel_pmecc_create_user()
419 const int *strengths = user->pmecc->caps->strengths; in get_strength()
437 value = readl_relaxed(user->pmecc->regs.base + in atmel_pmecc_gen_syndrome()
645 struct atmel_pmecc *pmecc = user->pmecc; in atmel_pmecc_err_location() local
652 writel(PMERRLOC_DISABLE, pmecc->regs.errloc + ATMEL_PMERRLOC_ELDIS); in atmel_pmecc_err_location()
656 pmecc->regs.errloc + ATMEL_PMERRLOC_SIGMA(i)); in atmel_pmecc_err_location()
664 writel(val, pmecc->regs.errloc + ATMEL_PMERRLOC_ELCFG); in atmel_pmecc_err_location()
666 pmecc->regs.errloc + ATMEL_PMERRLOC_ELEN); in atmel_pmecc_err_location()
668 ret = readl_relaxed_poll_timeout(pmecc->regs.errloc + in atmel_pmecc_err_location()
673 dev_err(pmecc->dev, in atmel_pmecc_err_location()
693 struct atmel_pmecc *pmecc = user->pmecc; in atmel_pmecc_correct_sector() local
715 errpos = readl_relaxed(pmecc->regs.errloc + in atmel_pmecc_correct_sector()
716 ATMEL_PMERRLOC_EL(pmecc->caps->el_offset, i)); in atmel_pmecc_correct_sector()
729 dev_dbg(pmecc->dev, in atmel_pmecc_correct_sector()
735 dev_dbg(pmecc->dev, in atmel_pmecc_correct_sector()
748 return user->pmecc->caps->correct_erased_chunks; in atmel_pmecc_correct_erased_chunks()
755 struct atmel_pmecc *pmecc = user->pmecc; in atmel_pmecc_get_generated_eccbytes() local
760 ptr[i] = readb_relaxed(pmecc->regs.base + in atmel_pmecc_get_generated_eccbytes()
765 void atmel_pmecc_reset(struct atmel_pmecc *pmecc) in atmel_pmecc_reset() argument
767 writel(PMECC_CTRL_RST, pmecc->regs.base + ATMEL_PMECC_CTRL); in atmel_pmecc_reset()
768 writel(PMECC_CTRL_DISABLE, pmecc->regs.base + ATMEL_PMECC_CTRL); in atmel_pmecc_reset()
774 struct atmel_pmecc *pmecc = user->pmecc; in atmel_pmecc_enable() local
778 dev_err(pmecc->dev, "Bad ECC operation!"); in atmel_pmecc_enable()
782 mutex_lock(&user->pmecc->lock); in atmel_pmecc_enable()
790 writel(cfg, pmecc->regs.base + ATMEL_PMECC_CFG); in atmel_pmecc_enable()
791 writel(user->cache.sarea, pmecc->regs.base + ATMEL_PMECC_SAREA); in atmel_pmecc_enable()
792 writel(user->cache.saddr, pmecc->regs.base + ATMEL_PMECC_SADDR); in atmel_pmecc_enable()
793 writel(user->cache.eaddr, pmecc->regs.base + ATMEL_PMECC_EADDR); in atmel_pmecc_enable()
795 writel(PMECC_CTRL_ENABLE, pmecc->regs.base + ATMEL_PMECC_CTRL); in atmel_pmecc_enable()
796 writel(PMECC_CTRL_DATA, pmecc->regs.base + ATMEL_PMECC_CTRL); in atmel_pmecc_enable()
804 atmel_pmecc_reset(user->pmecc); in atmel_pmecc_disable()
805 mutex_unlock(&user->pmecc->lock); in atmel_pmecc_disable()
811 struct atmel_pmecc *pmecc = user->pmecc; in atmel_pmecc_wait_rdy() local
815 ret = readl_relaxed_poll_timeout(pmecc->regs.base + in atmel_pmecc_wait_rdy()
820 dev_err(pmecc->dev, in atmel_pmecc_wait_rdy()
825 user->isr = readl_relaxed(pmecc->regs.base + ATMEL_PMECC_ISR); in atmel_pmecc_wait_rdy()
836 struct atmel_pmecc *pmecc; in atmel_pmecc_create() local
839 pmecc = devm_kzalloc(dev, sizeof(*pmecc), GFP_KERNEL); in atmel_pmecc_create()
840 if (!pmecc) in atmel_pmecc_create()
843 pmecc->caps = caps; in atmel_pmecc_create()
844 pmecc->dev = dev; in atmel_pmecc_create()
845 mutex_init(&pmecc->lock); in atmel_pmecc_create()
848 pmecc->regs.base = devm_ioremap_resource(dev, res); in atmel_pmecc_create()
849 if (IS_ERR(pmecc->regs.base)) in atmel_pmecc_create()
850 return ERR_CAST(pmecc->regs.base); in atmel_pmecc_create()
853 pmecc->regs.errloc = devm_ioremap_resource(dev, res); in atmel_pmecc_create()
854 if (IS_ERR(pmecc->regs.errloc)) in atmel_pmecc_create()
855 return ERR_CAST(pmecc->regs.errloc); in atmel_pmecc_create()
858 writel(0xffffffff, pmecc->regs.base + ATMEL_PMECC_IDR); in atmel_pmecc_create()
859 atmel_pmecc_reset(pmecc); in atmel_pmecc_create()
861 return pmecc; in atmel_pmecc_create()
866 struct atmel_pmecc **pmecc = res; in devm_atmel_pmecc_put() local
868 put_device((*pmecc)->dev); in devm_atmel_pmecc_put()
875 struct atmel_pmecc *pmecc, **ptr; in atmel_pmecc_get_by_node() local
881 pmecc = platform_get_drvdata(pdev); in atmel_pmecc_get_by_node()
882 if (!pmecc) { in atmel_pmecc_get_by_node()
893 *ptr = pmecc; in atmel_pmecc_get_by_node()
897 return pmecc; in atmel_pmecc_get_by_node()
934 struct atmel_pmecc *pmecc; in devm_atmel_pmecc_get() local
945 pmecc = atmel_pmecc_get_by_node(userdev, np); in devm_atmel_pmecc_get()
970 pmecc = atmel_pmecc_create(pdev, caps, 1, 2); in devm_atmel_pmecc_get()
973 return pmecc; in devm_atmel_pmecc_get()
989 struct atmel_pmecc *pmecc; in atmel_pmecc_probe() local
997 pmecc = atmel_pmecc_create(pdev, caps, 0, 1); in atmel_pmecc_probe()
998 if (IS_ERR(pmecc)) in atmel_pmecc_probe()
999 return PTR_ERR(pmecc); in atmel_pmecc_probe()
1001 platform_set_drvdata(pdev, pmecc); in atmel_pmecc_probe()