diff options
| -rw-r--r-- | drivers/mtd/nand/bf5xx_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/brcmnand/brcmnand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/docg4.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/fsl_elbc_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/fsl_ifc_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/jz4780_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/ndfc.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/pxa3xx_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/qcom_nandc.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/s3c2410.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/sunxi_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/txx9ndfmc.c | 3 | ||||
| -rw-r--r-- | include/linux/mtd/nand.h | 7 |
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 | ||
| 463 | static 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 |
