devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Norris <computersforpeace@gmail.com>
To: Simon Arlott <simon@fire.lp0.eu>
Cc: Jonas Gorski <jogo@openwrt.org>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Rob Herring <robh@kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	David Woodhouse <dwmw2@infradead.org>,
	MTD Maling List <linux-mtd@lists.infradead.org>,
	Pawel Moll <pawel.moll@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	bcm-kernel-feedback-list@broadcom.com,
	Kamal Dasu <kdasu.kdev@gmail.com>
Subject: Re: [PATCH (v7) 2/2] mtd: brcmnand: Add support for the BCM63268
Date: Wed, 2 Dec 2015 12:10:58 -0800	[thread overview]
Message-ID: <20151202201058.GM64635@google.com> (raw)
In-Reply-To: <565F4C89.5030609@simon.arlott.org.uk>

Hi,

On Wed, Dec 02, 2015 at 07:54:49PM +0000, Simon Arlott wrote:
> On 02/12/15 19:18, Brian Norris wrote:
> > On Wed, Nov 25, 2015 at 07:49:13PM +0000, Simon Arlott wrote:
> >> +static int bcm63268_nand_probe(struct platform_device *pdev)
> >> +{
> >> +	struct device *dev = &pdev->dev;
> >> +	struct bcm63268_nand_soc *priv;
> >> +	struct brcmnand_soc *soc;
> >> +	struct resource *res;
> >> +	int ret;
> >> +
> >> +	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> >> +	if (!priv)
> >> +		return -ENOMEM;
> >> +	soc = &priv->soc;
> >> +
> >> +	res = platform_get_resource_byname(pdev,
> >> +		IORESOURCE_MEM, "nand-intr-base");
> >> +	if (!res)
> >> +		return -EINVAL;
> >> +
> >> +	priv->base = devm_ioremap_resource(dev, res);
> >> +	if (IS_ERR(priv->base))
> >> +		return PTR_ERR(priv->base);
> >> +
> >> +	priv->clk = devm_clk_get(&pdev->dev, "nand");
> >> +	if (IS_ERR(priv->clk))
> >> +		return PTR_ERR(priv->clk);
> > 
> > Perhaps we should put this clock handling in brcmnand.c? Just have it
> > treat the clock as optional (i.e., ignore errors except for
> > EPROBE_DEFER?), so we don't fail if no clock was provided? This could
> > help other platforms too, if they gain clock support.
> 
> Unless most soc variants have clocks I'd prefer to leave it in this
> module.

I'm quite confident your SoC is not the only one with clocks.

> > If we do this, you'll want to document the clock in the common binding,
> > not the bcm63268-specific part.
> > 
> > Also, could it help to disable/enable the clock during suspend/resume?
> > If you move it to brcmnand.c, this would also be pretty simple.
> 
> Alternatively, it could proxy the brcmnand_pm_ops functions. I don't
> have any way to test suspend/resume.

OK, no need to add it now then. It can be added if/when it's needed.

> >> +
> >> +	ret = clk_prepare_enable(priv->clk);
> >> +	if (ret)
> >> +		return ret;
> >> +
> >> +	soc->ctlrdy_ack = bcm63268_nand_intc_ack;
> >> +	soc->ctlrdy_set_enabled = bcm63268_nand_intc_set;
> >> +
> >> +	/* Disable and ack all interrupts  */
> >> +	brcmnand_writel(0, priv->base + BCM63268_NAND_INT);
> >> +	brcmnand_writel(BCM63268_NAND_STATUS_MASK,
> >> +			priv->base + BCM63268_NAND_INT);
> >> +
> >> +	ret = brcmnand_probe(pdev, soc);
> >> +	if (ret)
> >> +		clk_disable_unprepare(priv->clk);
> >> +
> >> +	return ret;
> >> +}

> >> diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c
> >> index 2c8f67f..5f26b8a 100644
> >> --- a/drivers/mtd/nand/brcmnand/brcmnand.c
> >> +++ b/drivers/mtd/nand/brcmnand/brcmnand.c
> >> @@ -2262,6 +2262,14 @@ 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;
> >> +}
> >> +EXPORT_SYMBOL_GPL(brcmnand_get_socdata);
> > 
> > If you move the clk handling to the core brcmnand.c, then you won't need
> > this still.
> 
> Would you prefer a clock name in the soc data structure that is used to
> call devm_clk_get()?

Not really. If we specify a clock name now, we can suggest other SoC's
to use the same name (where possible). So we wouldn't need any new code
or documentation, and we definitely don't need each snowflake sub-driver
to pass a new name.

Brian

  reply	other threads:[~2015-12-02 20:10 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-21 13:10 [PATCH 1/2] mtd: brcmnand: Add brcm,nand-bcm63268 device tree binding Simon Arlott
     [not found] ` <56506D55.3000907-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-11-21 13:12   ` [PATCH 2/2] mtd: brcmnand: Add support for BCM63268 interrupts Simon Arlott
2015-11-21 17:04     ` [PATCH 2/2 (v2)] mtd: brcmnand: Add support for the BCM63268 Simon Arlott
     [not found]       ` <5650A402.7030404-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-11-22 14:34         ` [PATCH (v3) 2/2] " Simon Arlott
2015-11-22 21:59 ` [PATCH 1/2] mtd: brcmnand: Add brcm,nand-bcm63268 device tree binding Rob Herring
2015-11-22 22:15   ` [PATCH (v4) 1/2] mtd: brcmnand: Add brcm,bcm63268-nand " Simon Arlott
2015-11-22 22:17     ` [PATCH (v4) 2/2] mtd: brcmnand: Add support for the BCM63268 Simon Arlott
2015-11-23 15:42       ` Jonas Gorski
2015-11-23 18:38         ` Simon Arlott
     [not found]       ` <56523EFF.9050502-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-11-23 18:22         ` Florian Fainelli
2015-11-24  8:12           ` Simon Arlott
     [not found]             ` <56541BD3.4070202-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-11-24 18:15               ` [PATCH (v5) " Simon Arlott
2015-11-24 18:41             ` [PATCH (v4) " Florian Fainelli
     [not found]               ` <5654AF69.7040901-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-11-24 20:19                 ` [PATCH (v6) 1/2] mtd: brcmnand: Add brcm,bcm63268-nand device tree binding Simon Arlott
2015-11-24 20:21                   ` [PATCH (v6) 2/2] mtd: brcmnand: Add support for the BCM63268 Simon Arlott
2015-11-25 10:44                     ` Jonas Gorski
2015-11-25 12:37                       ` Simon Arlott
2015-11-25 12:53                         ` Jonas Gorski
2015-11-25 19:49                           ` [PATCH (v7) " Simon Arlott
     [not found]                             ` <565610B9.5040407-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-12-02 19:18                               ` Brian Norris
2015-12-02 19:54                                 ` Simon Arlott
2015-12-02 20:10                                   ` Brian Norris [this message]
2015-11-25 20:06                   ` [PATCH (v6) 1/2] mtd: brcmnand: Add brcm,bcm63268-nand device tree binding Rob Herring
     [not found]                   ` <afc6fb02d51a5378e315ade84a134eaf7a58a94f-dyyJQ+qCPjsfFgGGEbPnq5KvX+y0N6jJ2mWzQvkZbzCn6nfhxgf73RdaaeUjXGGo@public.gmane.org>
2015-12-02 19:05                     ` Brian Norris
     [not found]                       ` <20151202190555.GJ64635-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2015-12-02 19:36                         ` Jonas Gorski
2015-12-02 19:38                       ` Florian Fainelli
2015-12-02 20:02                         ` Simon Arlott
     [not found]                           ` <565F4E63.3030100-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-12-02 21:44                             ` Florian Fainelli
2015-12-02 19:41                       ` Simon Arlott
2015-12-02 20:00                         ` Brian Norris
2015-12-02 20:12                           ` Simon Arlott
2015-12-02 20:21                             ` Brian Norris
2015-12-02 20:24                               ` Brian Norris
     [not found]                               ` <20151202202127.GN64635-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2015-12-02 20:34                                 ` Simon Arlott
2015-12-02 20:48                                   ` Brian Norris
     [not found]     ` <56523E85.905-qdVf85lJwsCyrPCCpiK2c/XRex20P6io@public.gmane.org>
2015-11-22 22:23       ` [PATCH (v4) " Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151202201058.GM64635@google.com \
    --to=computersforpeace@gmail.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=f.fainelli@gmail.com \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jogo@openwrt.org \
    --cc=kdasu.kdev@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=robh@kernel.org \
    --cc=simon@fire.lp0.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).