Re: [PATCH 2/3] drm/etnaviv: Don't ignore errors on getting clocks

From: Lucas Stach
Date: Thu May 14 2020 - 04:41:04 EST


Am Donnerstag, den 14.05.2020, 09:27 +0100 schrieb Russell King - ARM Linux admin:
> On Thu, May 14, 2020 at 10:18:02AM +0200, Lucas Stach wrote:
> > Am Mittwoch, den 13.05.2020, 23:41 -0300 schrieb Fabio Estevam:
> > > On Wed, May 13, 2020 at 2:09 PM Fabio Estevam <festevam@xxxxxxxxx> wrote:
> > >
> > > > The binding doc Documentation/devicetree/bindings/gpu/vivante,gc.yaml
> > > > says that only the 'reg' clock could be optional, the others are
> > > > required.
> > >
> > > arch/arm/boot/dts/dove.dtsi only uses the 'core' clock.
> > > arch/arm/boot/dts/stm32mp157.dtsi uses 'bus' and 'core'
> > >
> > > Maybe the binding needs to be updated and it seems that using
> > > devm_clk_get_optional() like you propose is safe.
> >
> > The binding is correct as-is. We want to require those clocks to be
> > present, but the dove DT was added before the binding was finalized, so
> > the driver still treats the clocks as optional to not break
> > compatibility with old DTs. Maybe this warrants a comment in the
> > code...
>
> The binding doc in mainline says:
>
> clocks:
> items:
> - description: AXI/master interface clock
> - description: GPU core clock
> - description: Shader clock (only required if GPU has feature PIPE_3D)
> - description: AHB/slave interface clock (only required if GPU can gate slave interface independently)
> minItems: 1
> maxItems: 4
>
> clock-names:
> items:
> enum: [ bus, core, shader, reg ]
> minItems: 1
> maxItems: 4
>
> which looks correct to me - and means that Dove is compliant with that.

The YAML binding actually did loose something in translation here,
which I didn't notice. Previously all those clocks were listed under
"Required properties", with the exceptions listed in parenthesis. So
the Dove GPU, which is a combined 2D/3D core should have axi, core and
shader clocks specified.

Regards,
Lucas