From: Florian Fainelli <f.fainelli@gmail.com> To: Eric Anholt <eric@anholt.net>, dri-devel@lists.freedesktop.org, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3 v2] drm/vc4: Turn the V3D clock on at runtime. Date: Tue, 18 Apr 2017 16:48:56 -0700 [thread overview] Message-ID: <7906db2f-cfb8-e2e6-5869-b6e829dd8c6f@gmail.com> (raw) In-Reply-To: <20170418233805.15767-1-eric@anholt.net> On 04/18/2017 04:38 PM, Eric Anholt wrote: > For the Raspberry Pi's bindings, the power domain also implicitly > turns on the clock and deasserts reset, but for the new Cygnus port we > start representing the clock in the devicetree. > > v2: Document the clock-names property, check for -ENOENT for no clock > in DT. > > Signed-off-by: Eric Anholt <eric@anholt.net> > --- > + if (v3d->clk) > + clk_disable_unprepare(v3d->clk); The clock API allows you to pass a NULL clk and do nothing in these cases which is what you seem to have done a few lines below, you could simplify these checks? > + > return 0; > } > > @@ -318,6 +322,13 @@ static int vc4_v3d_runtime_resume(struct device *dev) > if (ret) > return ret; > > + if (v3d->clk) { > + int ret = clk_prepare_enable(v3d->clk); > + > + if (ret != 0) > + return ret; > + } > + > vc4_v3d_init_hw(vc4->dev); > vc4_irq_postinstall(vc4->dev); > > @@ -348,15 +359,40 @@ static int vc4_v3d_bind(struct device *dev, struct device *master, void *data) > vc4->v3d = v3d; > v3d->vc4 = vc4; > > + v3d->clk = devm_clk_get(dev, "v3d_clk"); > + if (IS_ERR(v3d->clk)) { > + int ret = PTR_ERR(v3d->clk); > + > + if (ret == -ENOENT) { > + /* bcm2835 didn't have a clock reference in the DT. */ > + ret = 0; > + v3d->clk = NULL; > + } else { > + if (ret != -EPROBE_DEFER) > + dev_err(dev, "Failed to get V3D clock: %d\n", > + ret); > + return ret; > + } > + } > + > if (V3D_READ(V3D_IDENT0) != V3D_EXPECTED_IDENT0) { > DRM_ERROR("V3D_IDENT0 read 0x%08x instead of 0x%08x\n", > V3D_READ(V3D_IDENT0), V3D_EXPECTED_IDENT0); > return -EINVAL; > } > > + if (v3d->clk) { > + ret = clk_prepare_enable(v3d->clk); > + if (ret != 0) > + return ret; > + } > + > ret = vc4_allocate_bin_bo(drm); > - if (ret) > + if (ret) { > + if (v3d->clk) > + clk_disable_unprepare(v3d->clk); > return ret; > + } > > /* Reset the binner overflow address/size at setup, to be sure > * we don't reuse an old one. > -- Florian
WARNING: multiple messages have this Message-ID (diff)
From: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> To: Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: Re: [PATCH 1/3 v2] drm/vc4: Turn the V3D clock on at runtime. Date: Tue, 18 Apr 2017 16:48:56 -0700 [thread overview] Message-ID: <7906db2f-cfb8-e2e6-5869-b6e829dd8c6f@gmail.com> (raw) In-Reply-To: <20170418233805.15767-1-eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org> On 04/18/2017 04:38 PM, Eric Anholt wrote: > For the Raspberry Pi's bindings, the power domain also implicitly > turns on the clock and deasserts reset, but for the new Cygnus port we > start representing the clock in the devicetree. > > v2: Document the clock-names property, check for -ENOENT for no clock > in DT. > > Signed-off-by: Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org> > --- > + if (v3d->clk) > + clk_disable_unprepare(v3d->clk); The clock API allows you to pass a NULL clk and do nothing in these cases which is what you seem to have done a few lines below, you could simplify these checks? > + > return 0; > } > > @@ -318,6 +322,13 @@ static int vc4_v3d_runtime_resume(struct device *dev) > if (ret) > return ret; > > + if (v3d->clk) { > + int ret = clk_prepare_enable(v3d->clk); > + > + if (ret != 0) > + return ret; > + } > + > vc4_v3d_init_hw(vc4->dev); > vc4_irq_postinstall(vc4->dev); > > @@ -348,15 +359,40 @@ static int vc4_v3d_bind(struct device *dev, struct device *master, void *data) > vc4->v3d = v3d; > v3d->vc4 = vc4; > > + v3d->clk = devm_clk_get(dev, "v3d_clk"); > + if (IS_ERR(v3d->clk)) { > + int ret = PTR_ERR(v3d->clk); > + > + if (ret == -ENOENT) { > + /* bcm2835 didn't have a clock reference in the DT. */ > + ret = 0; > + v3d->clk = NULL; > + } else { > + if (ret != -EPROBE_DEFER) > + dev_err(dev, "Failed to get V3D clock: %d\n", > + ret); > + return ret; > + } > + } > + > if (V3D_READ(V3D_IDENT0) != V3D_EXPECTED_IDENT0) { > DRM_ERROR("V3D_IDENT0 read 0x%08x instead of 0x%08x\n", > V3D_READ(V3D_IDENT0), V3D_EXPECTED_IDENT0); > return -EINVAL; > } > > + if (v3d->clk) { > + ret = clk_prepare_enable(v3d->clk); > + if (ret != 0) > + return ret; > + } > + > ret = vc4_allocate_bin_bo(drm); > - if (ret) > + if (ret) { > + if (v3d->clk) > + clk_disable_unprepare(v3d->clk); > return ret; > + } > > /* Reset the binner overflow address/size at setup, to be sure > * we don't reuse an old one. > -- Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-04-18 23:49 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-18 19:11 [PATCH 1/3] drm/vc4: Turn the V3D clock on at runtime Eric Anholt 2017-04-18 19:11 ` Eric Anholt 2017-04-18 19:11 ` [PATCH 2/3] drm/vc4: Don't try to initialize FBDEV if we're only bound to V3D Eric Anholt 2017-04-18 19:11 ` Eric Anholt 2017-04-19 4:59 ` Daniel Vetter 2017-04-19 4:59 ` Daniel Vetter 2017-04-19 17:55 ` Eric Anholt 2017-04-19 17:55 ` Eric Anholt 2017-04-19 19:36 ` Daniel Vetter 2017-04-19 19:36 ` Daniel Vetter 2017-04-21 22:53 ` Eric Anholt 2017-04-21 22:53 ` Eric Anholt 2017-04-24 14:26 ` Alex Deucher 2017-04-24 14:26 ` Alex Deucher 2017-05-02 8:16 ` Daniel Vetter 2017-05-02 8:16 ` Daniel Vetter 2017-04-18 19:11 ` [PATCH 3/3] drm/vc4: Add specific compatible strings for Cygnus Eric Anholt 2017-04-18 19:11 ` Eric Anholt 2017-04-20 20:33 ` Rob Herring 2017-04-20 20:33 ` Rob Herring 2017-04-18 19:23 ` [PATCH 1/3] drm/vc4: Turn the V3D clock on at runtime Eric Anholt 2017-04-18 19:23 ` Eric Anholt 2017-04-18 23:38 ` [PATCH 1/3 v2] " Eric Anholt 2017-04-18 23:38 ` Eric Anholt 2017-04-18 23:48 ` Florian Fainelli [this message] 2017-04-18 23:48 ` Florian Fainelli 2017-04-19 0:02 ` Eric Anholt 2017-04-19 0:02 ` Eric Anholt 2017-04-19 0:02 ` Eric Anholt 2017-04-19 0:02 ` Eric Anholt 2017-04-24 20:12 ` [PATCH 1/3 v3] " Eric Anholt 2017-04-24 20:12 ` Eric Anholt 2017-04-28 18:29 ` Rob Herring 2017-04-28 18:29 ` Rob Herring 2017-04-28 21:41 ` Eric Anholt 2017-04-28 21:41 ` Eric Anholt
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=7906db2f-cfb8-e2e6-5869-b6e829dd8c6f@gmail.com \ --to=f.fainelli@gmail.com \ --cc=devicetree@vger.kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=eric@anholt.net \ --cc=linux-kernel@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=robh+dt@kernel.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.