mtd: nand: import nand_hw_control_init()
Subsystems (5)
PATCH 1/1 mtd: nand: import nand_hw_control_init()
The code to initialize a struct nand_hw_control is duplicated across several drivers. Factorize it using an inline function.
Signed-off-by Marc Gonzalez <[email protected]>
---
I hacked drivers/mtd/nand/Makefile to forcefully compile the modified drivers, but some have dependencies. I'd be grateful if anyone could compile-test this change.
--- drivers/mtd/nand/bf5xx_nand.c | 3 +-- drivers/mtd/nand/brcmnand/brcmnand.c | 3 +-- drivers/mtd/nand/docg4.c | 3 +-- drivers/mtd/nand/fsl_elbc_nand.c | 3 +-- drivers/mtd/nand/fsl_ifc_nand.c | 3 +-- drivers/mtd/nand/jz4780_nand.c | 3 +-- drivers/mtd/nand/nand_base.c | 3 +-- drivers/mtd/nand/ndfc.c | 3 +-- drivers/mtd/nand/pxa3xx_nand.c | 3 +-- drivers/mtd/nand/qcom_nandc.c | 3 +-- drivers/mtd/nand/s3c2410.c | 3 +-- drivers/mtd/nand/sunxi_nand.c | 3 +-- drivers/mtd/nand/txx9ndfmc.c | 3 +-- include/linux/mtd/nand.h | 7 +++++++ 14 files changed, 20 insertions(+), 26 deletions(-)
drivers/mtd/nand/bf5xx_nand.c +1 -2
@@ -761,8 +761,7 @@ static int bf5xx_nand_probe(struct platform_device *pdev)platform_set_drvdata (pdev, info); -spin_lock_init (&info->controller.lock); -init_waitqueue_head (&info->controller.wq); +nand_hw_control_init (&info->controller); info->device = &pdev->dev; info->platform = plat;
drivers/mtd/nand/brcmnand/brcmnand.c +1 -2
@@ -2227,8 +2227,7 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)init_completion (&ctrl->done);init_completion (&ctrl->dma_done); -spin_lock_init (&ctrl->controller.lock); -init_waitqueue_head (&ctrl->controller.wq); +nand_hw_control_init (&ctrl->controller);INIT_LIST_HEAD (&ctrl->host_list);/* NAND register range */
drivers/mtd/nand/docg4.c +1 -2
@@ -1249,8 +1249,7 @@ static void __init init_mtd_structs(struct mtd_info *mtd) nand->options =NAND_BUSWIDTH_16 |NAND_NO_SUBPAGE_WRITE ; nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr +DOC_IOSPACE_DATA ; nand->controller = &nand->hwcontrol; -spin_lock_init (&nand->controller->lock); -init_waitqueue_head (&nand->controller->wq); +nand_hw_control_init (nand->controller);/* methods */ nand->cmdfunc = docg4_command;
drivers/mtd/nand/fsl_elbc_nand.c +1 -2
@@ -879,8 +879,7 @@ static int fsl_elbc_nand_probe(struct platform_device *pdev) } elbc_fcm_ctrl->counter++; -spin_lock_init (&elbc_fcm_ctrl->controller.lock); -init_waitqueue_head (&elbc_fcm_ctrl->controller.wq); +nand_hw_control_init (&elbc_fcm_ctrl->controller); fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; }else { elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;
drivers/mtd/nand/fsl_ifc_nand.c +1 -2
@@ -987,8 +987,7 @@ static int fsl_ifc_nand_probe(struct platform_device *dev) ifc_nand_ctrl->addr =NULL ; fsl_ifc_ctrl_dev->nand = ifc_nand_ctrl; -spin_lock_init (&ifc_nand_ctrl->controller.lock); -init_waitqueue_head (&ifc_nand_ctrl->controller.wq); +nand_hw_control_init (&ifc_nand_ctrl->controller); }else { ifc_nand_ctrl = fsl_ifc_ctrl_dev->nand; }
drivers/mtd/nand/jz4780_nand.c +1 -2
@@ -368,9 +368,8 @@ static int jz4780_nand_probe(struct platform_device *pdev) nfc->dev = dev; nfc->num_banks = num_banks; -spin_lock_init (&nfc->controller.lock); +nand_hw_control_init (&nfc->controller);INIT_LIST_HEAD (&nfc->chips); -init_waitqueue_head (&nfc->controller.wq); ret =jz4780_nand_init_chips (nfc, pdev);if (ret) {
drivers/mtd/nand/nand_base.c +1 -2
@@ -3191,8 +3191,7 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)if (!chip->controller) { chip->controller = &chip->hwcontrol; -spin_lock_init (&chip->controller->lock); -init_waitqueue_head (&chip->controller->wq); +nand_hw_control_init (chip->controller); } }
drivers/mtd/nand/ndfc.c +1 -2
@@ -218,8 +218,7 @@ static int ndfc_probe(struct platform_device *ofdev) ndfc = &ndfc_ctrl[cs]; ndfc->chip_select = cs; -spin_lock_init (&ndfc->ndfc_control.lock); -init_waitqueue_head (&ndfc->ndfc_control.wq); +nand_hw_control_init (&ndfc->ndfc_control); ndfc->ofdev = ofdev;dev_set_drvdata (&ofdev->dev, ndfc);
drivers/mtd/nand/pxa3xx_nand.c +1 -2
@@ -1810,8 +1810,7 @@ static int alloc_nand_resource(struct platform_device *pdev) chip->cmdfunc = nand_cmdfunc; } -spin_lock_init (&chip->controller->lock); -init_waitqueue_head (&chip->controller->wq); +nand_hw_control_init (chip->controller); info->clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->clk)) {dev_err (&pdev->dev,"failed to get nand clock\n" );
drivers/mtd/nand/qcom_nandc.c +1 -2
@@ -1957,8 +1957,7 @@ static int qcom_nandc_alloc(struct qcom_nand_controller *nandc)INIT_LIST_HEAD (&nandc->desc_list);INIT_LIST_HEAD (&nandc->host_list); -spin_lock_init (&nandc->controller.lock); -init_waitqueue_head (&nandc->controller.wq); +nand_hw_control_init (&nandc->controller);return 0 ; }
drivers/mtd/nand/s3c2410.c +1 -2
@@ -977,8 +977,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)platform_set_drvdata (pdev, info); -spin_lock_init (&info->controller.lock); -init_waitqueue_head (&info->controller.wq); +nand_hw_control_init (&info->controller);/* get the clock source and enable it */
drivers/mtd/nand/sunxi_nand.c +1 -2
@@ -1835,8 +1835,7 @@ static int sunxi_nfc_probe(struct platform_device *pdev)return -ENOMEM ; nfc->dev = dev; -spin_lock_init (&nfc->controller.lock); -init_waitqueue_head (&nfc->controller.wq); +nand_hw_control_init (&nfc->controller);INIT_LIST_HEAD (&nfc->chips); r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );
drivers/mtd/nand/txx9ndfmc.c +1 -2
@@ -303,8 +303,7 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)dev_info (&dev->dev,"CLK:%ldMHz HOLD:%d SPW:%d\n" , (gbusclk +500000 ) /1000000 , hold, spw); -spin_lock_init (&drvdata->hw_control.lock); -init_waitqueue_head (&drvdata->hw_control.wq); +nand_hw_control_init (&drvdata->hw_control);platform_set_drvdata (dev, drvdata);txx9ndfmc_initialize (dev);
include/linux/mtd/nand.h +7 -0
@@ -460,6 +460,13 @@ struct nand_hw_control {wait_queue_head_t wq; }; +static inline void nand_hw_control_init (struct nand_hw_control *nfc) +{ + nfc->active =NULL ; +spin_lock_init (&nfc->lock); +init_waitqueue_head (&nfc->wq); +} +/** * struct nand_ecc_ctrl - Control structure for ECC * @mode: ECC mode
Signature · 1 line
2.9.0
Boris Brezillon
AppliedQuoted 4 lines · On Wed, 27 Jul 2016 11:23:52 +0200 Marc Gonzalez…
The code to initialize a struct
nand_hw_controlis duplicated across several drivers. Factorize it using an inline function.Signed-off-by Marc Gonzalez <[email protected]>
Applied.
Thanks,
Boris
Quoted 222 lines
---
I hackeddrivers/mtd/nand/Makefileto forcefully compile the modified drivers, but some have dependencies. I'd be grateful if anyone could compile-test this change.--- drivers/mtd/nand/bf5xx_nand.c | 3 +-- drivers/mtd/nand/brcmnand/brcmnand.c | 3 +-- drivers/mtd/nand/docg4.c | 3 +-- drivers/mtd/nand/fsl_elbc_nand.c | 3 +-- drivers/mtd/nand/fsl_ifc_nand.c | 3 +-- drivers/mtd/nand/jz4780_nand.c | 3 +-- drivers/mtd/nand/nand_base.c | 3 +-- drivers/mtd/nand/ndfc.c | 3 +-- drivers/mtd/nand/pxa3xx_nand.c | 3 +-- drivers/mtd/nand/qcom_nandc.c | 3 +-- drivers/mtd/nand/s3c2410.c | 3 +-- drivers/mtd/nand/sunxi_nand.c | 3 +-- drivers/mtd/nand/txx9ndfmc.c | 3 +-- include/linux/mtd/nand.h | 7 +++++++ 14 files changed, 20 insertions(+), 26 deletions(-)drivers/mtd/nand/bf5xx_nand.c +1
-2@@ -761,8 +761,7 @@ static int bf5xx_nand_probe(struct platform_device *pdev)platform_set_drvdata (pdev, info); -spin_lock_init (&info->controller.lock); -init_waitqueue_head (&info->controller.wq); +nand_hw_control_init (&info->controller); info->device = &pdev->dev; info->platform = plat;drivers/mtd/nand/brcmnand/brcmnand.c +1
-2@@ -2227,8 +2227,7 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)init_completion (&ctrl->done);init_completion (&ctrl->dma_done); -spin_lock_init (&ctrl->controller.lock); -init_waitqueue_head (&ctrl->controller.wq); +nand_hw_control_init (&ctrl->controller);INIT_LIST_HEAD (&ctrl->host_list);/* NAND register range */ drivers/mtd/nand/docg4.c +1
-2@@ -1249,8 +1249,7 @@ static void __init init_mtd_structs(struct mtd_info *mtd) nand->options =NAND_BUSWIDTH_16 |NAND_NO_SUBPAGE_WRITE ; nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr +DOC_IOSPACE_DATA ; nand->controller = &nand->hwcontrol; -spin_lock_init (&nand->controller->lock); -init_waitqueue_head (&nand->controller->wq); +nand_hw_control_init (nand->controller);/* methods */ nand->cmdfunc = docg4_command;drivers/mtd/nand/fsl_elbc_nand.c +1
-2@@ -879,8 +879,7 @@ static int fsl_elbc_nand_probe(struct platform_device *pdev) } elbc_fcm_ctrl->counter++; -spin_lock_init (&elbc_fcm_ctrl->controller.lock); -init_waitqueue_head (&elbc_fcm_ctrl->controller.wq); +nand_hw_control_init (&elbc_fcm_ctrl->controller); fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; }else { elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;drivers/mtd/nand/fsl_ifc_nand.c +1
-2@@ -987,8 +987,7 @@ static int fsl_ifc_nand_probe(struct platform_device *dev) ifc_nand_ctrl->addr =NULL ; fsl_ifc_ctrl_dev->nand = ifc_nand_ctrl; -spin_lock_init (&ifc_nand_ctrl->controller.lock); -init_waitqueue_head (&ifc_nand_ctrl->controller.wq); +nand_hw_control_init (&ifc_nand_ctrl->controller); }else { ifc_nand_ctrl = fsl_ifc_ctrl_dev->nand; }drivers/mtd/nand/jz4780_nand.c +1
-2@@ -368,9 +368,8 @@ static int jz4780_nand_probe(struct platform_device *pdev) nfc->dev = dev; nfc->num_banks = num_banks; -spin_lock_init (&nfc->controller.lock); +nand_hw_control_init (&nfc->controller);INIT_LIST_HEAD (&nfc->chips); -init_waitqueue_head (&nfc->controller.wq); ret =jz4780_nand_init_chips (nfc, pdev);if (ret) {drivers/mtd/nand/nand_base.c +1
-2@@ -3191,8 +3191,7 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)if (!chip->controller) { chip->controller = &chip->hwcontrol; -spin_lock_init (&chip->controller->lock); -init_waitqueue_head (&chip->controller->wq); +nand_hw_control_init (chip->controller); } }drivers/mtd/nand/ndfc.c +1
-2@@ -218,8 +218,7 @@ static int ndfc_probe(struct platform_device *ofdev) ndfc = &ndfc_ctrl[cs]; ndfc->chip_select = cs; -spin_lock_init (&ndfc->ndfc_control.lock); -init_waitqueue_head (&ndfc->ndfc_control.wq); +nand_hw_control_init (&ndfc->ndfc_control); ndfc->ofdev = ofdev;dev_set_drvdata (&ofdev->dev, ndfc);drivers/mtd/nand/pxa3xx_nand.c +1
-2@@ -1810,8 +1810,7 @@ static int alloc_nand_resource(struct platform_device *pdev) chip->cmdfunc = nand_cmdfunc; } -spin_lock_init (&chip->controller->lock); -init_waitqueue_head (&chip->controller->wq); +nand_hw_control_init (chip->controller); info->clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->clk)) {dev_err (&pdev->dev,"failed to get nand clock\n" );drivers/mtd/nand/qcom_nandc.c +1
-2@@ -1957,8 +1957,7 @@ static int qcom_nandc_alloc(struct qcom_nand_controller *nandc)INIT_LIST_HEAD (&nandc->desc_list);INIT_LIST_HEAD (&nandc->host_list); -spin_lock_init (&nandc->controller.lock); -init_waitqueue_head (&nandc->controller.wq); +nand_hw_control_init (&nandc->controller);return 0 ; }drivers/mtd/nand/s3c2410.c +1
-2@@ -977,8 +977,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)platform_set_drvdata (pdev, info); -spin_lock_init (&info->controller.lock); -init_waitqueue_head (&info->controller.wq); +nand_hw_control_init (&info->controller);/* get the clock source and enable it */ drivers/mtd/nand/sunxi_nand.c +1
-2@@ -1835,8 +1835,7 @@ static int sunxi_nfc_probe(struct platform_device *pdev)return -ENOMEM ; nfc->dev = dev; -spin_lock_init (&nfc->controller.lock); -init_waitqueue_head (&nfc->controller.wq); +nand_hw_control_init (&nfc->controller);INIT_LIST_HEAD (&nfc->chips); r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );drivers/mtd/nand/txx9ndfmc.c +1
-2@@ -303,8 +303,7 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)dev_info (&dev->dev,"CLK:%ldMHz HOLD:%d SPW:%d\n" , (gbusclk +500000 ) /1000000 , hold, spw); -spin_lock_init (&drvdata->hw_control.lock); -init_waitqueue_head (&drvdata->hw_control.wq); +nand_hw_control_init (&drvdata->hw_control);platform_set_drvdata (dev, drvdata);txx9ndfmc_initialize (dev);include/linux/mtd/nand.h +7
-0@@ -460,6 +460,13 @@ struct nand_hw_control {wait_queue_head_t wq; }; +static inline void nand_hw_control_init (struct nand_hw_control *nfc) +{ + nfc->active =NULL ; +spin_lock_init (&nfc->lock); +init_waitqueue_head (&nfc->wq); +} +/** * struct nand_ecc_ctrl - Control structure for ECC * @mode: ECC mode