Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <marc_gonzalez@sigmadesigns.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>

authored by

Marc Gonzalez and committed by
Boris Brezillon
d45bc58d 29b4817d

+20 -26
+1 -2
drivers/mtd/nand/bf5xx_nand.c
··· 761 761 762 762 platform_set_drvdata(pdev, info); 763 763 764 - spin_lock_init(&info->controller.lock); 765 - init_waitqueue_head(&info->controller.wq); 764 + nand_hw_control_init(&info->controller); 766 765 767 766 info->device = &pdev->dev; 768 767 info->platform = plat;
+1 -2
drivers/mtd/nand/brcmnand/brcmnand.c
··· 2370 2370 2371 2371 init_completion(&ctrl->done); 2372 2372 init_completion(&ctrl->dma_done); 2373 - spin_lock_init(&ctrl->controller.lock); 2374 - init_waitqueue_head(&ctrl->controller.wq); 2373 + nand_hw_control_init(&ctrl->controller); 2375 2374 INIT_LIST_HEAD(&ctrl->host_list); 2376 2375 2377 2376 /* NAND register range */
+1 -2
drivers/mtd/nand/docg4.c
··· 1249 1249 nand->options = NAND_BUSWIDTH_16 | NAND_NO_SUBPAGE_WRITE; 1250 1250 nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr + DOC_IOSPACE_DATA; 1251 1251 nand->controller = &nand->hwcontrol; 1252 - spin_lock_init(&nand->controller->lock); 1253 - init_waitqueue_head(&nand->controller->wq); 1252 + nand_hw_control_init(nand->controller); 1254 1253 1255 1254 /* methods */ 1256 1255 nand->cmdfunc = docg4_command;
+1 -2
drivers/mtd/nand/fsl_elbc_nand.c
··· 879 879 } 880 880 elbc_fcm_ctrl->counter++; 881 881 882 - spin_lock_init(&elbc_fcm_ctrl->controller.lock); 883 - init_waitqueue_head(&elbc_fcm_ctrl->controller.wq); 882 + nand_hw_control_init(&elbc_fcm_ctrl->controller); 884 883 fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; 885 884 } else { 886 885 elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;
+1 -2
drivers/mtd/nand/fsl_ifc_nand.c
··· 987 987 ifc_nand_ctrl->addr = NULL; 988 988 fsl_ifc_ctrl_dev->nand = ifc_nand_ctrl; 989 989 990 - spin_lock_init(&ifc_nand_ctrl->controller.lock); 991 - init_waitqueue_head(&ifc_nand_ctrl->controller.wq); 990 + nand_hw_control_init(&ifc_nand_ctrl->controller); 992 991 } else { 993 992 ifc_nand_ctrl = fsl_ifc_ctrl_dev->nand; 994 993 }
+1 -2
drivers/mtd/nand/jz4780_nand.c
··· 368 368 nfc->dev = dev; 369 369 nfc->num_banks = num_banks; 370 370 371 - spin_lock_init(&nfc->controller.lock); 371 + nand_hw_control_init(&nfc->controller); 372 372 INIT_LIST_HEAD(&nfc->chips); 373 - init_waitqueue_head(&nfc->controller.wq); 374 373 375 374 ret = jz4780_nand_init_chips(nfc, pdev); 376 375 if (ret) {
+1 -2
drivers/mtd/nand/nand_base.c
··· 3191 3191 3192 3192 if (!chip->controller) { 3193 3193 chip->controller = &chip->hwcontrol; 3194 - spin_lock_init(&chip->controller->lock); 3195 - init_waitqueue_head(&chip->controller->wq); 3194 + nand_hw_control_init(chip->controller); 3196 3195 } 3197 3196 3198 3197 }
+1 -2
drivers/mtd/nand/ndfc.c
··· 218 218 ndfc = &ndfc_ctrl[cs]; 219 219 ndfc->chip_select = cs; 220 220 221 - spin_lock_init(&ndfc->ndfc_control.lock); 222 - init_waitqueue_head(&ndfc->ndfc_control.wq); 221 + nand_hw_control_init(&ndfc->ndfc_control); 223 222 ndfc->ofdev = ofdev; 224 223 dev_set_drvdata(&ofdev->dev, ndfc); 225 224
+1 -2
drivers/mtd/nand/pxa3xx_nand.c
··· 1810 1810 chip->cmdfunc = nand_cmdfunc; 1811 1811 } 1812 1812 1813 - spin_lock_init(&chip->controller->lock); 1814 - init_waitqueue_head(&chip->controller->wq); 1813 + nand_hw_control_init(chip->controller); 1815 1814 info->clk = devm_clk_get(&pdev->dev, NULL); 1816 1815 if (IS_ERR(info->clk)) { 1817 1816 dev_err(&pdev->dev, "failed to get nand clock\n");
+1 -2
drivers/mtd/nand/qcom_nandc.c
··· 1957 1957 INIT_LIST_HEAD(&nandc->desc_list); 1958 1958 INIT_LIST_HEAD(&nandc->host_list); 1959 1959 1960 - spin_lock_init(&nandc->controller.lock); 1961 - init_waitqueue_head(&nandc->controller.wq); 1960 + nand_hw_control_init(&nandc->controller); 1962 1961 1963 1962 return 0; 1964 1963 }
+1 -2
drivers/mtd/nand/s3c2410.c
··· 977 977 978 978 platform_set_drvdata(pdev, info); 979 979 980 - spin_lock_init(&info->controller.lock); 981 - init_waitqueue_head(&info->controller.wq); 980 + nand_hw_control_init(&info->controller); 982 981 983 982 /* get the clock source and enable it */ 984 983
+1 -2
drivers/mtd/nand/sunxi_nand.c
··· 2175 2175 return -ENOMEM; 2176 2176 2177 2177 nfc->dev = dev; 2178 - spin_lock_init(&nfc->controller.lock); 2179 - init_waitqueue_head(&nfc->controller.wq); 2178 + nand_hw_control_init(&nfc->controller); 2180 2179 INIT_LIST_HEAD(&nfc->chips); 2181 2180 2182 2181 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+1 -2
drivers/mtd/nand/txx9ndfmc.c
··· 303 303 dev_info(&dev->dev, "CLK:%ldMHz HOLD:%d SPW:%d\n", 304 304 (gbusclk + 500000) / 1000000, hold, spw); 305 305 306 - spin_lock_init(&drvdata->hw_control.lock); 307 - init_waitqueue_head(&drvdata->hw_control.wq); 306 + nand_hw_control_init(&drvdata->hw_control); 308 307 309 308 platform_set_drvdata(dev, drvdata); 310 309 txx9ndfmc_initialize(dev);
+7
include/linux/mtd/nand.h
··· 460 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 471 * struct nand_ecc_ctrl - Control structure for ECC 465 472 * @mode: ECC mode