aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mtd/nand/bf5xx_nand.c3
-rw-r--r--drivers/mtd/nand/brcmnand/brcmnand.c3
-rw-r--r--drivers/mtd/nand/docg4.c3
-rw-r--r--drivers/mtd/nand/fsl_elbc_nand.c3
-rw-r--r--drivers/mtd/nand/fsl_ifc_nand.c3
-rw-r--r--drivers/mtd/nand/jz4780_nand.c3
-rw-r--r--drivers/mtd/nand/nand_base.c3
-rw-r--r--drivers/mtd/nand/ndfc.c3
-rw-r--r--drivers/mtd/nand/pxa3xx_nand.c3
-rw-r--r--drivers/mtd/nand/qcom_nandc.c3
-rw-r--r--drivers/mtd/nand/s3c2410.c3
-rw-r--r--drivers/mtd/nand/sunxi_nand.c3
-rw-r--r--drivers/mtd/nand/txx9ndfmc.c3
-rw-r--r--include/linux/mtd/nand.h7
14 files changed, 20 insertions, 26 deletions
diff --git a/drivers/mtd/nand/bf5xx_nand.c b/drivers/mtd/nand/bf5xx_nand.c
index 37da4236ab90..3962f55bd034 100644
--- a/drivers/mtd/nand/bf5xx_nand.c
+++ b/drivers/mtd/nand/bf5xx_nand.c
@@ -761,8 +761,7 @@ static int bf5xx_nand_probe(struct platform_device *pdev)
761 761
762 platform_set_drvdata(pdev, info); 762 platform_set_drvdata(pdev, info);
763 763
764 spin_lock_init(&info->controller.lock); 764 nand_hw_control_init(&info->controller);
765 init_waitqueue_head(&info->controller.wq);
766 765
767 info->device = &pdev->dev; 766 info->device = &pdev->dev;
768 info->platform = plat; 767 info->platform = plat;
diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c
index 8eb2c64df38c..82ec36bb8296 100644
--- a/drivers/mtd/nand/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/brcmnand/brcmnand.c
@@ -2370,8 +2370,7 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)
2370 2370
2371 init_completion(&ctrl->done); 2371 init_completion(&ctrl->done);
2372 init_completion(&ctrl->dma_done); 2372 init_completion(&ctrl->dma_done);
2373 spin_lock_init(&ctrl->controller.lock); 2373 nand_hw_control_init(&ctrl->controller);
2374 init_waitqueue_head(&ctrl->controller.wq);
2375 INIT_LIST_HEAD(&ctrl->host_list); 2374 INIT_LIST_HEAD(&ctrl->host_list);
2376 2375
2377 /* NAND register range */ 2376 /* NAND register range */
diff --git a/drivers/mtd/nand/docg4.c b/drivers/mtd/nand/docg4.c
index 47316998017f..7af2a3cd949e 100644
--- a/drivers/mtd/nand/docg4.c
+++ b/drivers/mtd/nand/docg4.c
@@ -1249,8 +1249,7 @@ static void __init init_mtd_structs(struct mtd_info *mtd)
1249 nand->options = NAND_BUSWIDTH_16 | NAND_NO_SUBPAGE_WRITE; 1249 nand->options = NAND_BUSWIDTH_16 | NAND_NO_SUBPAGE_WRITE;
1250 nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr + DOC_IOSPACE_DATA; 1250 nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr + DOC_IOSPACE_DATA;
1251 nand->controller = &nand->hwcontrol; 1251 nand->controller = &nand->hwcontrol;
1252 spin_lock_init(&nand->controller->lock); 1252 nand_hw_control_init(nand->controller);
1253 init_waitqueue_head(&nand->controller->wq);
1254 1253
1255 /* methods */ 1254 /* methods */
1256 nand->cmdfunc = docg4_command; 1255 nand->cmdfunc = docg4_command;
diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
index 60a88f24c6b3..113f76e59937 100644
--- a/drivers/mtd/nand/fsl_elbc_nand.c
+++ b/drivers/mtd/nand/fsl_elbc_nand.c
@@ -879,8 +879,7 @@ static int fsl_elbc_nand_probe(struct platform_device *pdev)
879 } 879 }
880 elbc_fcm_ctrl->counter++; 880 elbc_fcm_ctrl->counter++;
881 881
882 spin_lock_init(&elbc_fcm_ctrl->controller.lock); 882 nand_hw_control_init(&elbc_fcm_ctrl->controller);
883 init_waitqueue_head(&elbc_fcm_ctrl->controller.wq);
884 fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; 883 fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl;
885 } else { 884 } else {
886 elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand; 885 elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;
diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
index 4e9e5fd8faf3..0a177b1bfe3e 100644
--- a/drivers/mtd/nand/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/fsl_ifc_nand.c
@@ -987,8 +987,7 @@ static int fsl_ifc_nand_probe(struct platform_device *dev)
987 ifc_nand_ctrl->addr = NULL; 987 ifc_nand_ctrl->addr = NULL;
988 fsl_ifc_ctrl_dev->nand = ifc_nand_ctrl; 988 fsl_ifc_ctrl_dev->nand = ifc_nand_ctrl;
989 989
990 spin_lock_init(&ifc_nand_ctrl->controller.lock); 990 nand_hw_control_init(&ifc_nand_ctrl->controller);
991 init_waitqueue_head(&ifc_nand_ctrl->controller.wq);
992 } else { 991 } else {
993 ifc_nand_ctrl = fsl_ifc_ctrl_dev->nand; 992 ifc_nand_ctrl = fsl_ifc_ctrl_dev->nand;
994 } 993 }
diff --git a/drivers/mtd/nand/jz4780_nand.c b/drivers/mtd/nand/jz4780_nand.c
index 175f67da25af..a39bb70175ee 100644
--- a/drivers/mtd/nand/jz4780_nand.c
+++ b/drivers/mtd/nand/jz4780_nand.c
@@ -368,9 +368,8 @@ static int jz4780_nand_probe(struct platform_device *pdev)
368 nfc->dev = dev; 368 nfc->dev = dev;
369 nfc->num_banks = num_banks; 369 nfc->num_banks = num_banks;
370 370
371 spin_lock_init(&nfc->controller.lock); 371 nand_hw_control_init(&nfc->controller);
372 INIT_LIST_HEAD(&nfc->chips); 372 INIT_LIST_HEAD(&nfc->chips);
373 init_waitqueue_head(&nfc->controller.wq);
374 373
375 ret = jz4780_nand_init_chips(nfc, pdev); 374 ret = jz4780_nand_init_chips(nfc, pdev);
376 if (ret) { 375 if (ret) {
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 77533f7f2429..53ea79628dde 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3191,8 +3191,7 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)
3191 3191
3192 if (!chip->controller) { 3192 if (!chip->controller) {
3193 chip->controller = &chip->hwcontrol; 3193 chip->controller = &chip->hwcontrol;
3194 spin_lock_init(&chip->controller->lock); 3194 nand_hw_control_init(chip->controller);
3195 init_waitqueue_head(&chip->controller->wq);
3196 } 3195 }
3197 3196
3198} 3197}
diff --git a/drivers/mtd/nand/ndfc.c b/drivers/mtd/nand/ndfc.c
index 218c789ca7ab..28e6118362f7 100644
--- a/drivers/mtd/nand/ndfc.c
+++ b/drivers/mtd/nand/ndfc.c
@@ -218,8 +218,7 @@ static int ndfc_probe(struct platform_device *ofdev)
218 ndfc = &ndfc_ctrl[cs]; 218 ndfc = &ndfc_ctrl[cs];
219 ndfc->chip_select = cs; 219 ndfc->chip_select = cs;
220 220
221 spin_lock_init(&ndfc->ndfc_control.lock); 221 nand_hw_control_init(&ndfc->ndfc_control);
222 init_waitqueue_head(&ndfc->ndfc_control.wq);
223 ndfc->ofdev = ofdev; 222 ndfc->ofdev = ofdev;
224 dev_set_drvdata(&ofdev->dev, ndfc); 223 dev_set_drvdata(&ofdev->dev, ndfc);
225 224
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 436dd6dc11f4..b121bf4ed73a 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -1810,8 +1810,7 @@ static int alloc_nand_resource(struct platform_device *pdev)
1810 chip->cmdfunc = nand_cmdfunc; 1810 chip->cmdfunc = nand_cmdfunc;
1811 } 1811 }
1812 1812
1813 spin_lock_init(&chip->controller->lock); 1813 nand_hw_control_init(chip->controller);
1814 init_waitqueue_head(&chip->controller->wq);
1815 info->clk = devm_clk_get(&pdev->dev, NULL); 1814 info->clk = devm_clk_get(&pdev->dev, NULL);
1816 if (IS_ERR(info->clk)) { 1815 if (IS_ERR(info->clk)) {
1817 dev_err(&pdev->dev, "failed to get nand clock\n"); 1816 dev_err(&pdev->dev, "failed to get nand clock\n");
diff --git a/drivers/mtd/nand/qcom_nandc.c b/drivers/mtd/nand/qcom_nandc.c
index de7d28e62d4e..57d483ac5765 100644
--- a/drivers/mtd/nand/qcom_nandc.c
+++ b/drivers/mtd/nand/qcom_nandc.c
@@ -1957,8 +1957,7 @@ static int qcom_nandc_alloc(struct qcom_nand_controller *nandc)
1957 INIT_LIST_HEAD(&nandc->desc_list); 1957 INIT_LIST_HEAD(&nandc->desc_list);
1958 INIT_LIST_HEAD(&nandc->host_list); 1958 INIT_LIST_HEAD(&nandc->host_list);
1959 1959
1960 spin_lock_init(&nandc->controller.lock); 1960 nand_hw_control_init(&nandc->controller);
1961 init_waitqueue_head(&nandc->controller.wq);
1962 1961
1963 return 0; 1962 return 0;
1964} 1963}
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
index d9309cf0ce2e..b1734d76cbc1 100644
--- a/drivers/mtd/nand/s3c2410.c
+++ b/drivers/mtd/nand/s3c2410.c
@@ -977,8 +977,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
977 977
978 platform_set_drvdata(pdev, info); 978 platform_set_drvdata(pdev, info);
979 979
980 spin_lock_init(&info->controller.lock); 980 nand_hw_control_init(&info->controller);
981 init_waitqueue_head(&info->controller.wq);
982 981
983 /* get the clock source and enable it */ 982 /* get the clock source and enable it */
984 983
diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c
index e414b31b71c1..8b5dadc9cd26 100644
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -2175,8 +2175,7 @@ static int sunxi_nfc_probe(struct platform_device *pdev)
2175 return -ENOMEM; 2175 return -ENOMEM;
2176 2176
2177 nfc->dev = dev; 2177 nfc->dev = dev;
2178 spin_lock_init(&nfc->controller.lock); 2178 nand_hw_control_init(&nfc->controller);
2179 init_waitqueue_head(&nfc->controller.wq);
2180 INIT_LIST_HEAD(&nfc->chips); 2179 INIT_LIST_HEAD(&nfc->chips);
2181 2180
2182 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 2181 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
diff --git a/drivers/mtd/nand/txx9ndfmc.c b/drivers/mtd/nand/txx9ndfmc.c
index 04d63f56baa4..0a14fda2e41b 100644
--- a/drivers/mtd/nand/txx9ndfmc.c
+++ b/drivers/mtd/nand/txx9ndfmc.c
@@ -303,8 +303,7 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)
303 dev_info(&dev->dev, "CLK:%ldMHz HOLD:%d SPW:%d\n", 303 dev_info(&dev->dev, "CLK:%ldMHz HOLD:%d SPW:%d\n",
304 (gbusclk + 500000) / 1000000, hold, spw); 304 (gbusclk + 500000) / 1000000, hold, spw);
305 305
306 spin_lock_init(&drvdata->hw_control.lock); 306 nand_hw_control_init(&drvdata->hw_control);
307 init_waitqueue_head(&drvdata->hw_control.wq);
308 307
309 platform_set_drvdata(dev, drvdata); 308 platform_set_drvdata(dev, drvdata);
310 txx9ndfmc_initialize(dev); 309 txx9ndfmc_initialize(dev);
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 8dd6e01f45c0..f6a2d5e7313c 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -460,6 +460,13 @@ struct nand_hw_control {
460 wait_queue_head_t wq; 460 wait_queue_head_t wq;
461}; 461};
462 462
463static inline void nand_hw_control_init(struct nand_hw_control *nfc)
464{
465 nfc->active = NULL;
466 spin_lock_init(&nfc->lock);
467 init_waitqueue_head(&nfc->wq);
468}
469
463/** 470/**
464 * struct nand_ecc_ctrl - Control structure for ECC 471 * struct nand_ecc_ctrl - Control structure for ECC
465 * @mode: ECC mode 472 * @mode: ECC mode