On Wed, November 25, 2015 10:44, Jonas Gorski wrote: > On Tue, Nov 24, 2015 at 9:21 PM, Simon Arlott <simon@xxxxxxxxxxx> wrote: >> The BCM63268 has a NAND interrupt register with combined status and enable >> registers. It also has a clock for the NAND controller that needs to be >> enabled. >> >> Set up the device by enabling the clock, disabling and acking all >> interrupts, then handle the CTRL_READY interrupt. >> >> Add a brcmnand_get_socdata() function so that bcm63268_nand can obtain its >> data and disable the clock when the device is removed. > > To me this now mostly looks good, one thing though ... > (snip) >> diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c >> index 2c8f67f..99ca69e 100644 >> --- a/drivers/mtd/nand/brcmnand/brcmnand.c >> +++ b/drivers/mtd/nand/brcmnand/brcmnand.c >> @@ -2262,6 +2262,13 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc) >> } >> EXPORT_SYMBOL_GPL(brcmnand_probe); >> >> +struct brcmnand_soc *brcmnand_get_socdata(struct platform_device *pdev) >> +{ >> + struct brcmnand_controller *ctrl = dev_get_drvdata(&pdev->dev); >> + >> + return ctrl ? ctrl->soc : NULL; >> +} >> + > > Don't you need to EXPORT_SYMBOL_GPL this one in case you build > brcmnand as module? No, because all of the code is built into the one object file: obj-$(CONFIG_MTD_NAND_BRCMNAND) += iproc_nand.o obj-$(CONFIG_MTD_NAND_BRCMNAND) += bcm63138_nand.o obj-$(CONFIG_MTD_NAND_BRCMNAND) += bcm63268_nand.o obj-$(CONFIG_MTD_NAND_BRCMNAND) += brcmstb_nand.o obj-$(CONFIG_MTD_NAND_BRCMNAND) += brcmnand.o They almost have to be otherwise you could load separate parts as different modules in the wrong order. The existing exported symbols are not required either. -- Simon Arlott -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html