mtd: rawnand: atmel: Enable the NFC controller at probe time
No need to enable it everytime select_chip() is called. If we really care about PM, we should implement runtime PM hooks and disable the controller and all its clocks when the controller has been unused for some time. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200720131356.1579073-2-tudor.ambarus@microchip.com
This commit is contained in:
Родитель
b5156335ac
Коммит
b0155dadeb
|
@ -525,11 +525,8 @@ static void atmel_hsmc_nand_select_chip(struct nand_chip *chip, int cs)
|
|||
|
||||
atmel_nand_select_chip(chip, cs);
|
||||
|
||||
if (!nand->activecs) {
|
||||
regmap_write(nc->base.smc, ATMEL_HSMC_NFC_CTRL,
|
||||
ATMEL_HSMC_NFC_CTRL_DIS);
|
||||
if (!nand->activecs)
|
||||
return;
|
||||
}
|
||||
|
||||
if (nand->activecs->rb.type == ATMEL_NAND_NATIVE_RB)
|
||||
chip->legacy.dev_ready = atmel_hsmc_nand_dev_ready;
|
||||
|
@ -542,8 +539,6 @@ static void atmel_hsmc_nand_select_chip(struct nand_chip *chip, int cs)
|
|||
ATMEL_HSMC_NFC_CFG_PAGESIZE(mtd->writesize) |
|
||||
ATMEL_HSMC_NFC_CFG_SPARESIZE(mtd->oobsize) |
|
||||
ATMEL_HSMC_NFC_CFG_RSPARE);
|
||||
regmap_write(nc->base.smc, ATMEL_HSMC_NFC_CTRL,
|
||||
ATMEL_HSMC_NFC_CTRL_EN);
|
||||
}
|
||||
|
||||
static int atmel_nfc_exec_op(struct atmel_hsmc_nand_controller *nc, bool poll)
|
||||
|
@ -2251,6 +2246,9 @@ atmel_hsmc_nand_controller_remove(struct atmel_nand_controller *nc)
|
|||
return ret;
|
||||
|
||||
hsmc_nc = container_of(nc, struct atmel_hsmc_nand_controller, base);
|
||||
regmap_write(hsmc_nc->base.smc, ATMEL_HSMC_NFC_CTRL,
|
||||
ATMEL_HSMC_NFC_CTRL_DIS);
|
||||
|
||||
if (hsmc_nc->sram.pool)
|
||||
gen_pool_free(hsmc_nc->sram.pool,
|
||||
(unsigned long)hsmc_nc->sram.virt,
|
||||
|
@ -2303,6 +2301,8 @@ static int atmel_hsmc_nand_controller_probe(struct platform_device *pdev,
|
|||
/* Initial NFC configuration. */
|
||||
regmap_write(nc->base.smc, ATMEL_HSMC_NFC_CFG,
|
||||
ATMEL_HSMC_NFC_CFG_DTO_MAX);
|
||||
regmap_write(nc->base.smc, ATMEL_HSMC_NFC_CTRL,
|
||||
ATMEL_HSMC_NFC_CTRL_EN);
|
||||
|
||||
ret = atmel_nand_controller_add_nands(&nc->base);
|
||||
if (ret)
|
||||
|
|
Загрузка…
Ссылка в новой задаче