Lines Matching defs:user

347 	struct atmel_pmecc_user *user;
355 size = sizeof(*user);
366 user = devm_kzalloc(pmecc->dev, size, GFP_KERNEL);
367 if (!user)
370 user->pmecc = pmecc;
372 user->partial_syn = (s16 *)PTR_ALIGN(user + 1, sizeof(u16));
373 user->si = user->partial_syn + ((2 * req->ecc.strength) + 1);
374 user->lmu = user->si + ((2 * req->ecc.strength) + 1);
375 user->smu = user->lmu + (req->ecc.strength + 1);
376 user->mu = (s32 *)PTR_ALIGN(user->smu +
380 user->dmu = user->mu + req->ecc.strength + 1;
381 user->delta = user->dmu + req->ecc.strength + 1;
387 user->gf_tables = gf_tables;
389 user->eccbytes = req->ecc.bytes / req->ecc.nsectors;
396 user->cache.cfg = PMECC_CFG_BCH_STRENGTH(strength) |
400 user->cache.cfg |= PMECC_CFG_SECTOR1024;
402 user->cache.sarea = req->oobsize - 1;
403 user->cache.saddr = req->ecc.ooboffset;
404 user->cache.eaddr = req->ecc.ooboffset + req->ecc.bytes - 1;
406 return user;
410 static int get_strength(struct atmel_pmecc_user *user)
412 const int *strengths = user->pmecc->caps->strengths;
414 return strengths[user->cache.cfg & PMECC_CFG_BCH_STRENGTH_MASK];
417 static int get_sectorsize(struct atmel_pmecc_user *user)
419 return user->cache.cfg & PMECC_CFG_SECTOR1024 ? 1024 : 512;
422 static void atmel_pmecc_gen_syndrome(struct atmel_pmecc_user *user, int sector)
424 int strength = get_strength(user);
430 value = readl_relaxed(user->pmecc->regs.base +
435 user->partial_syn[(2 * i) + 1] = value;
439 static void atmel_pmecc_substitute(struct atmel_pmecc_user *user)
441 int degree = get_sectorsize(user) == 512 ? 13 : 14;
443 int strength = get_strength(user);
444 s16 *alpha_to = user->gf_tables->alpha_to;
445 s16 *index_of = user->gf_tables->index_of;
446 s16 *partial_syn = user->partial_syn;
454 si = user->si;
480 static void atmel_pmecc_get_sigma(struct atmel_pmecc_user *user)
482 s16 *lmu = user->lmu;
483 s16 *si = user->si;
484 s32 *mu = user->mu;
485 s32 *dmu = user->dmu;
486 s32 *delta = user->delta;
487 int degree = get_sectorsize(user) == 512 ? 13 : 14;
489 int strength = get_strength(user);
491 s16 *index_of = user->gf_tables->index_of;
492 s16 *alpha_to = user->gf_tables->alpha_to;
495 s16 *smu = user->smu;
634 static int atmel_pmecc_err_location(struct atmel_pmecc_user *user)
636 int sector_size = get_sectorsize(user);
638 struct atmel_pmecc *pmecc = user->pmecc;
639 int strength = get_strength(user);
642 s16 *smu = user->smu;
647 for (i = 0; i <= user->lmu[strength + 1] >> 1; i++) {
673 if (roots_nbr == user->lmu[strength + 1] >> 1)
683 int atmel_pmecc_correct_sector(struct atmel_pmecc_user *user, int sector,
686 struct atmel_pmecc *pmecc = user->pmecc;
687 int sectorsize = get_sectorsize(user);
688 int eccbytes = user->eccbytes;
691 if (!(user->isr & BIT(sector)))
694 atmel_pmecc_gen_syndrome(user, sector);
695 atmel_pmecc_substitute(user);
696 atmel_pmecc_get_sigma(user);
698 nerrors = atmel_pmecc_err_location(user);
739 bool atmel_pmecc_correct_erased_chunks(struct atmel_pmecc_user *user)
741 return user->pmecc->caps->correct_erased_chunks;
745 void atmel_pmecc_get_generated_eccbytes(struct atmel_pmecc_user *user,
748 struct atmel_pmecc *pmecc = user->pmecc;
752 for (i = 0; i < user->eccbytes; i++)
765 int atmel_pmecc_enable(struct atmel_pmecc_user *user, int op)
767 struct atmel_pmecc *pmecc = user->pmecc;
775 mutex_lock(&user->pmecc->lock);
777 cfg = user->cache.cfg;
784 writel(user->cache.sarea, pmecc->regs.base + ATMEL_PMECC_SAREA);
785 writel(user->cache.saddr, pmecc->regs.base + ATMEL_PMECC_SADDR);
786 writel(user->cache.eaddr, pmecc->regs.base + ATMEL_PMECC_EADDR);
795 void atmel_pmecc_disable(struct atmel_pmecc_user *user)
797 atmel_pmecc_reset(user->pmecc);
798 mutex_unlock(&user->pmecc->lock);
802 int atmel_pmecc_wait_rdy(struct atmel_pmecc_user *user)
804 struct atmel_pmecc *pmecc = user->pmecc;
818 user->isr = readl_relaxed(pmecc->regs.base + ATMEL_PMECC_ISR);
945 * resources are directly defined in the user pdev at position