diff mbox series

[2/4] arm64: dts: rockchip: Add RGA support to the PX30

Message ID 20200416115047.233720-3-paul.kocialkowski@bootlin.com (mailing list archive)
State New, archived
Headers show
Series media: rockchip: rga: PX30 support and YUV2YUV fix | expand

Commit Message

Paul Kocialkowski April 16, 2020, 11:50 a.m. UTC
The PX30 features a RGA block: add the necessary node to support it.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Johan Jonker April 16, 2020, 1:02 p.m. UTC | #1
Hi Paul,

The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
has been approved by robh.
Maybe place dts patches at the end of a patch serie.
Could you include a &rga patch if your device is supported in mainline,
so we can test with:
make ARCH=arm64 dtbs_check
DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml

Johan

On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> The PX30 features a RGA block: add the necessary node to support it.
> 
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> ---
>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> index 75908c587511..4bfbee9d4123 100644
> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
>  		status = "disabled";
>  	};
>  
> +	rga: rga@ff480000 {
> +		compatible = "rockchip,px30-rga";
> +		reg = <0x0 0xff480000 0x0 0x10000>;
> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> +		clock-names = "aclk", "hclk", "sclk";
> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> +		reset-names = "core", "axi", "ahb";
> +		power-domains = <&power PX30_PD_VO>;

		status = "disabled";

> +	};
> +
>  	qos_gmac: qos@ff518000 {
>  		compatible = "syscon";
>  		reg = <0x0 0xff518000 0x0 0x20>;
>
Paul Kocialkowski April 16, 2020, 1:24 p.m. UTC | #2
Hi,

On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
> Hi Paul,
> 
> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
> has been approved by robh.

Huh, I looked around for ongoing related work but missed it.
I'll definitely rebase on top of your series and use the yaml description
instead. Thanks!

> Maybe place dts patches at the end of a patch serie.
> Could you include a &rga patch if your device is supported in mainline,
> so we can test with:
> make ARCH=arm64 dtbs_check
> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml

I tested with the PX30 EVB so I can surely add a node there if that turns
out necessary (see below).

> Johan
> 
> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> > The PX30 features a RGA block: add the necessary node to support it.
> > 
> > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > ---
> >  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > index 75908c587511..4bfbee9d4123 100644
> > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
> >  		status = "disabled";
> >  	};
> >  
> > +	rga: rga@ff480000 {
> > +		compatible = "rockchip,px30-rga";
> > +		reg = <0x0 0xff480000 0x0 0x10000>;
> > +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> > +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> > +		clock-names = "aclk", "hclk", "sclk";
> > +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> > +		reset-names = "core", "axi", "ahb";
> > +		power-domains = <&power PX30_PD_VO>;
> 
> 		status = "disabled";

As of 5.6, the rk3399 has the node enabled by default. Did that change?

Since it's a standalone block that has no I/O dependency, I don't really see
the point of disabling it by default.

What do you think?

Cheers,

Paul

> > +	};
> > +
> >  	qos_gmac: qos@ff518000 {
> >  		compatible = "syscon";
> >  		reg = <0x0 0xff518000 0x0 0x20>;
> > 
>
Johan Jonker April 16, 2020, 1:44 p.m. UTC | #3
On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
> Hi,
> 
> On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
>> Hi Paul,
>>
>> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
>> has been approved by robh.
> 
> Huh, I looked around for ongoing related work but missed it.
> I'll definitely rebase on top of your series and use the yaml description
> instead. Thanks!
> 
>> Maybe place dts patches at the end of a patch serie.
>> Could you include a &rga patch if your device is supported in mainline,
>> so we can test with:
>> make ARCH=arm64 dtbs_check
>> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
> 
> I tested with the PX30 EVB so I can surely add a node there if that turns
> out necessary (see below).
> 
>> Johan
>>
>> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
>>> The PX30 features a RGA block: add the necessary node to support it.
>>>
>>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
>>> ---
>>>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
>>>  1 file changed, 11 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>> index 75908c587511..4bfbee9d4123 100644
>>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
>>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
>>>  		status = "disabled";
>>>  	};
>>>  
>>> +	rga: rga@ff480000 {
>>> +		compatible = "rockchip,px30-rga";
>>> +		reg = <0x0 0xff480000 0x0 0x10000>;
>>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
>>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
>>> +		clock-names = "aclk", "hclk", "sclk";
>>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
>>> +		reset-names = "core", "axi", "ahb";
>>> +		power-domains = <&power PX30_PD_VO>;
>>
>> 		status = "disabled";
> 
> As of 5.6, the rk3399 has the node enabled by default. Did that change?

'status' disappeared during review for rk3399 between v2 and v3, but
doesn't mention the reason. If someone can give more info here?

https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/

https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/

> 
> Since it's a standalone block that has no I/O dependency, I don't really see
> the point of disabling it by default.

Vop, hdmi and other video devices are also disabled.
Follow the rest I think...

> 
> What do you think?
> 
> Cheers,
> 
> Paul
> 
>>> +	};
>>> +
>>>  	qos_gmac: qos@ff518000 {
>>>  		compatible = "syscon";
>>>  		reg = <0x0 0xff518000 0x0 0x20>;
>>>
>>
>
Paul Kocialkowski April 16, 2020, 1:55 p.m. UTC | #4
Hi,

On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
> On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
> > Hi,
> > 
> > On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
> >> Hi Paul,
> >>
> >> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
> >> has been approved by robh.
> > 
> > Huh, I looked around for ongoing related work but missed it.
> > I'll definitely rebase on top of your series and use the yaml description
> > instead. Thanks!
> > 
> >> Maybe place dts patches at the end of a patch serie.
> >> Could you include a &rga patch if your device is supported in mainline,
> >> so we can test with:
> >> make ARCH=arm64 dtbs_check
> >> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
> > 
> > I tested with the PX30 EVB so I can surely add a node there if that turns
> > out necessary (see below).
> > 
> >> Johan
> >>
> >> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> >>> The PX30 features a RGA block: add the necessary node to support it.
> >>>
> >>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> >>> ---
> >>>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
> >>>  1 file changed, 11 insertions(+)
> >>>
> >>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>> index 75908c587511..4bfbee9d4123 100644
> >>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
> >>>  		status = "disabled";
> >>>  	};
> >>>  
> >>> +	rga: rga@ff480000 {
> >>> +		compatible = "rockchip,px30-rga";
> >>> +		reg = <0x0 0xff480000 0x0 0x10000>;
> >>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> >>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> >>> +		clock-names = "aclk", "hclk", "sclk";
> >>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> >>> +		reset-names = "core", "axi", "ahb";
> >>> +		power-domains = <&power PX30_PD_VO>;
> >>
> >> 		status = "disabled";
> > 
> > As of 5.6, the rk3399 has the node enabled by default. Did that change?
> 
> 'status' disappeared during review for rk3399 between v2 and v3, but
> doesn't mention the reason. If someone can give more info here?
> 
> https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
> 
> https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
> 
> > 
> > Since it's a standalone block that has no I/O dependency, I don't really see
> > the point of disabling it by default.
> 
> Vop, hdmi and other video devices are also disabled.
> Follow the rest I think...

Well, these blocks do have related I/O ports so it makes sense not to enable
them by default because of pinmux, or because there might be no connector
populated/routed.

For a memory to memory internal block, I don't see any reason why.
It's definitely not board-specific and having to add these nodes for every board
that has them is kind of a pain and might be overlooked. This will easily result
in the feature not being available for end users without having to change the
dt.

Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
I think these are better examples to follow.

Cheers,

Paul

> > 
> > What do you think?
> > 
> > Cheers,
> > 
> > Paul
> > 
> >>> +	};
> >>> +
> >>>  	qos_gmac: qos@ff518000 {
> >>>  		compatible = "syscon";
> >>>  		reg = <0x0 0xff518000 0x0 0x20>;
> >>>
> >>
> > 
>
Johan Jonker April 16, 2020, 2:02 p.m. UTC | #5
On 4/16/20 3:55 PM, Paul Kocialkowski wrote:
> Hi,
> 
> On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
>> On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
>>> Hi,
>>>
>>> On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
>>>> Hi Paul,
>>>>
>>>> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
>>>> has been approved by robh.
>>>
>>> Huh, I looked around for ongoing related work but missed it.
>>> I'll definitely rebase on top of your series and use the yaml description
>>> instead. Thanks!
>>>
>>>> Maybe place dts patches at the end of a patch serie.
>>>> Could you include a &rga patch if your device is supported in mainline,
>>>> so we can test with:
>>>> make ARCH=arm64 dtbs_check
>>>> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
>>>
>>> I tested with the PX30 EVB so I can surely add a node there if that turns
>>> out necessary (see below).
>>>
>>>> Johan
>>>>
>>>> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
>>>>> The PX30 features a RGA block: add the necessary node to support it.
>>>>>
>>>>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
>>>>> ---
>>>>>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
>>>>>  1 file changed, 11 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> index 75908c587511..4bfbee9d4123 100644
>>>>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
>>>>>  		status = "disabled";
>>>>>  	};
>>>>>  
>>>>> +	rga: rga@ff480000 {
>>>>> +		compatible = "rockchip,px30-rga";
>>>>> +		reg = <0x0 0xff480000 0x0 0x10000>;
>>>>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
>>>>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
>>>>> +		clock-names = "aclk", "hclk", "sclk";
>>>>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
>>>>> +		reset-names = "core", "axi", "ahb";
>>>>> +		power-domains = <&power PX30_PD_VO>;
>>>>
>>>> 		status = "disabled";
>>>
>>> As of 5.6, the rk3399 has the node enabled by default. Did that change?
>>
>> 'status' disappeared during review for rk3399 between v2 and v3, but
>> doesn't mention the reason. If someone can give more info here?
>>
>> https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
>>
>> https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
>>
>>>
>>> Since it's a standalone block that has no I/O dependency, I don't really see
>>> the point of disabling it by default.
>>
>> Vop, hdmi and other video devices are also disabled.
>> Follow the rest I think...
> 
> Well, these blocks do have related I/O ports so it makes sense not to enable
> them by default because of pinmux, or because there might be no connector
> populated/routed.
> 
> For a memory to memory internal block, I don't see any reason why.
> It's definitely not board-specific and having to add these nodes for every board
> that has them is kind of a pain and might be overlooked. This will easily result
> in the feature not being available for end users without having to change the
> dt.
> 
> Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
> I think these are better examples to follow.

From PX30 TRM-Part1:

Power domain is shared by vop and dsi.
It's up to the user what blocks he/she enables and what power it uses.

PD_VO: VOP_M, VOP_S, RGA and DSI

> 
> Cheers,
> 
> Paul
> 
>>>
>>> What do you think?
>>>
>>> Cheers,
>>>
>>> Paul
>>>
>>>>> +	};
>>>>> +
>>>>>  	qos_gmac: qos@ff518000 {
>>>>>  		compatible = "syscon";
>>>>>  		reg = <0x0 0xff518000 0x0 0x20>;
>>>>>
>>>>
>>>
>>
>
Ezequiel Garcia April 16, 2020, 2:11 p.m. UTC | #6
On Thu, 2020-04-16 at 15:55 +0200, Paul Kocialkowski wrote:
> Hi,
> 
> On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
> > On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
> > > Hi,
> > > 
> > > On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
> > > > Hi Paul,
> > > > 
> > > > The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
> > > > has been approved by robh.
> > > 
> > > Huh, I looked around for ongoing related work but missed it.
> > > I'll definitely rebase on top of your series and use the yaml description
> > > instead. Thanks!
> > > 
> > > > Maybe place dts patches at the end of a patch serie.
> > > > Could you include a &rga patch if your device is supported in mainline,
> > > > so we can test with:
> > > > make ARCH=arm64 dtbs_check
> > > > DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
> > > 
> > > I tested with the PX30 EVB so I can surely add a node there if that turns
> > > out necessary (see below).
> > > 
> > > > Johan
> > > > 
> > > > On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> > > > > The PX30 features a RGA block: add the necessary node to support it.
> > > > > 
> > > > > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > > > > ---
> > > > >  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
> > > > >  1 file changed, 11 insertions(+)
> > > > > 
> > > > > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > > index 75908c587511..4bfbee9d4123 100644
> > > > > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > > @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
> > > > >  		status = "disabled";
> > > > >  	};
> > > > >  
> > > > > +	rga: rga@ff480000 {
> > > > > +		compatible = "rockchip,px30-rga";
> > > > > +		reg = <0x0 0xff480000 0x0 0x10000>;
> > > > > +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> > > > > +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> > > > > +		clock-names = "aclk", "hclk", "sclk";
> > > > > +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> > > > > +		reset-names = "core", "axi", "ahb";
> > > > > +		power-domains = <&power PX30_PD_VO>;
> > > > 
> > > > 		status = "disabled";
> > > 
> > > As of 5.6, the rk3399 has the node enabled by default. Did that change?
> > 
> > 'status' disappeared during review for rk3399 between v2 and v3, but
> > doesn't mention the reason. If someone can give more info here?
> > 
> > https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
> > 
> > https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
> > 
> > > Since it's a standalone block that has no I/O dependency, I don't really see
> > > the point of disabling it by default.
> > 
> > Vop, hdmi and other video devices are also disabled.
> > Follow the rest I think...
> 
> Well, these blocks do have related I/O ports so it makes sense not to enable
> them by default because of pinmux, or because there might be no connector
> populated/routed.
> 
> For a memory to memory internal block, I don't see any reason why.
> It's definitely not board-specific and having to add these nodes for every board
> that has them is kind of a pain and might be overlooked. This will easily result
> in the feature not being available for end users without having to change the
> dt.
> 
> Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
> I think these are better examples to follow.
> 

It's exactly as Paul just said :-)

Not board specific, no reason to disable, and also
no way to know under what condition you'd enable.

Thanks,
Ezequiel
Paul Kocialkowski April 16, 2020, 2:12 p.m. UTC | #7
On Thu 16 Apr 20, 16:02, Johan Jonker wrote:
> On 4/16/20 3:55 PM, Paul Kocialkowski wrote:
> > Hi,
> > 
> > On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
> >> On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
> >>> Hi,
> >>>
> >>> On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
> >>>> Hi Paul,
> >>>>
> >>>> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
> >>>> has been approved by robh.
> >>>
> >>> Huh, I looked around for ongoing related work but missed it.
> >>> I'll definitely rebase on top of your series and use the yaml description
> >>> instead. Thanks!
> >>>
> >>>> Maybe place dts patches at the end of a patch serie.
> >>>> Could you include a &rga patch if your device is supported in mainline,
> >>>> so we can test with:
> >>>> make ARCH=arm64 dtbs_check
> >>>> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
> >>>
> >>> I tested with the PX30 EVB so I can surely add a node there if that turns
> >>> out necessary (see below).
> >>>
> >>>> Johan
> >>>>
> >>>> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> >>>>> The PX30 features a RGA block: add the necessary node to support it.
> >>>>>
> >>>>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> >>>>> ---
> >>>>>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
> >>>>>  1 file changed, 11 insertions(+)
> >>>>>
> >>>>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>>>> index 75908c587511..4bfbee9d4123 100644
> >>>>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>>>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> >>>>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
> >>>>>  		status = "disabled";
> >>>>>  	};
> >>>>>  
> >>>>> +	rga: rga@ff480000 {
> >>>>> +		compatible = "rockchip,px30-rga";
> >>>>> +		reg = <0x0 0xff480000 0x0 0x10000>;
> >>>>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> >>>>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> >>>>> +		clock-names = "aclk", "hclk", "sclk";
> >>>>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> >>>>> +		reset-names = "core", "axi", "ahb";
> >>>>> +		power-domains = <&power PX30_PD_VO>;
> >>>>
> >>>> 		status = "disabled";
> >>>
> >>> As of 5.6, the rk3399 has the node enabled by default. Did that change?
> >>
> >> 'status' disappeared during review for rk3399 between v2 and v3, but
> >> doesn't mention the reason. If someone can give more info here?
> >>
> >> https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
> >>
> >> https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
> >>
> >>>
> >>> Since it's a standalone block that has no I/O dependency, I don't really see
> >>> the point of disabling it by default.
> >>
> >> Vop, hdmi and other video devices are also disabled.
> >> Follow the rest I think...
> > 
> > Well, these blocks do have related I/O ports so it makes sense not to enable
> > them by default because of pinmux, or because there might be no connector
> > populated/routed.
> > 
> > For a memory to memory internal block, I don't see any reason why.
> > It's definitely not board-specific and having to add these nodes for every board
> > that has them is kind of a pain and might be overlooked. This will easily result
> > in the feature not being available for end users without having to change the
> > dt.
> > 
> > Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
> > I think these are better examples to follow.
> 
> From PX30 TRM-Part1:
> 
> Power domain is shared by vop and dsi.
> It's up to the user what blocks he/she enables and what power it uses.
> 
> PD_VO: VOP_M, VOP_S, RGA and DSI

Hum, there is no direct correlation between "node is enabled in dt" and "related
hardware block consumes power". And removing nodes from dt is certainly not an
appropriate way to do power management! Device-tree is a way to represent the
hardware, not a configuration interface (well, besides the /chosen node).

Besides, the RGA driver seems to have good runtime pm support, so be assured
that its clocks will be off when unused.

Cheers,

Paul

> > 
> > Cheers,
> > 
> > Paul
> > 
> >>>
> >>> What do you think?
> >>>
> >>> Cheers,
> >>>
> >>> Paul
> >>>
> >>>>> +	};
> >>>>> +
> >>>>>  	qos_gmac: qos@ff518000 {
> >>>>>  		compatible = "syscon";
> >>>>>  		reg = <0x0 0xff518000 0x0 0x20>;
> >>>>>
> >>>>
> >>>
> >>
> > 
>
Robin Murphy April 16, 2020, 2:24 p.m. UTC | #8
On 2020-04-16 2:55 pm, Paul Kocialkowski wrote:
> Hi,
> 
> On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
>> On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
>>> Hi,
>>>
>>> On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
>>>> Hi Paul,
>>>>
>>>> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
>>>> has been approved by robh.
>>>
>>> Huh, I looked around for ongoing related work but missed it.
>>> I'll definitely rebase on top of your series and use the yaml description
>>> instead. Thanks!
>>>
>>>> Maybe place dts patches at the end of a patch serie.
>>>> Could you include a &rga patch if your device is supported in mainline,
>>>> so we can test with:
>>>> make ARCH=arm64 dtbs_check
>>>> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
>>>
>>> I tested with the PX30 EVB so I can surely add a node there if that turns
>>> out necessary (see below).
>>>
>>>> Johan
>>>>
>>>> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
>>>>> The PX30 features a RGA block: add the necessary node to support it.
>>>>>
>>>>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
>>>>> ---
>>>>>   arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
>>>>>   1 file changed, 11 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> index 75908c587511..4bfbee9d4123 100644
>>>>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
>>>>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
>>>>>   		status = "disabled";
>>>>>   	};
>>>>>   
>>>>> +	rga: rga@ff480000 {
>>>>> +		compatible = "rockchip,px30-rga";
>>>>> +		reg = <0x0 0xff480000 0x0 0x10000>;
>>>>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
>>>>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
>>>>> +		clock-names = "aclk", "hclk", "sclk";
>>>>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
>>>>> +		reset-names = "core", "axi", "ahb";
>>>>> +		power-domains = <&power PX30_PD_VO>;
>>>>
>>>> 		status = "disabled";
>>>
>>> As of 5.6, the rk3399 has the node enabled by default. Did that change?
>>
>> 'status' disappeared during review for rk3399 between v2 and v3, but
>> doesn't mention the reason. If someone can give more info here?
>>
>> https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
>>
>> https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
>>
>>>
>>> Since it's a standalone block that has no I/O dependency, I don't really see
>>> the point of disabling it by default.
>>
>> Vop, hdmi and other video devices are also disabled.
>> Follow the rest I think...
> 
> Well, these blocks do have related I/O ports so it makes sense not to enable
> them by default because of pinmux, or because there might be no connector
> populated/routed.
> 
> For a memory to memory internal block, I don't see any reason why.
> It's definitely not board-specific and having to add these nodes for every board
> that has them is kind of a pain and might be overlooked. This will easily result
> in the feature not being available for end users without having to change the
> dt.
> 
> Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
> I think these are better examples to follow.

Yes, as far as I'm aware the general preference for things that are 
entirely internal to the SoC and don't have any external dependencies 
like regulators or pinctrl settings is to leave them enabled by default. 
There's nothing to gain from disabling them, and in fact if the hardware 
would otherwise just sit there idle in its out-of-reset state then 
allowing a driver to bind and enable power management may be a distinct 
benefit.

Whether a board wires up video output or not is also largely orthogonal 
to whether internal graphics/video accelerators are useful. Consider how 
many people use their NAS box for media transcoding, vs. how many would 
ever plug a display directly into said box if it even has a connector. 
If the RGA can be wired into some software format 
conversion/scaling/whatever pipeline then it's useful full stop.

Robin.
Heiko Stübner April 16, 2020, 2:30 p.m. UTC | #9
Am Donnerstag, 16. April 2020, 15:55:19 CEST schrieb Paul Kocialkowski:
> Hi,
> 
> On Thu 16 Apr 20, 15:44, Johan Jonker wrote:
> > On 4/16/20 3:24 PM, Paul Kocialkowski wrote:
> > > Hi,
> > > 
> > > On Thu 16 Apr 20, 15:02, Johan Jonker wrote:
> > >> Hi Paul,
> > >>
> > >> The conversion of rockchip-rga.txt to rockchip-rga.yaml by myself just
> > >> has been approved by robh.
> > > 
> > > Huh, I looked around for ongoing related work but missed it.
> > > I'll definitely rebase on top of your series and use the yaml description
> > > instead. Thanks!
> > > 
> > >> Maybe place dts patches at the end of a patch serie.
> > >> Could you include a &rga patch if your device is supported in mainline,
> > >> so we can test with:
> > >> make ARCH=arm64 dtbs_check
> > >> DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-rga.yaml
> > > 
> > > I tested with the PX30 EVB so I can surely add a node there if that turns
> > > out necessary (see below).
> > > 
> > >> Johan
> > >>
> > >> On 4/16/20 1:50 PM, Paul Kocialkowski wrote:
> > >>> The PX30 features a RGA block: add the necessary node to support it.
> > >>>
> > >>> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > >>> ---
> > >>>  arch/arm64/boot/dts/rockchip/px30.dtsi | 11 +++++++++++
> > >>>  1 file changed, 11 insertions(+)
> > >>>
> > >>> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > >>> index 75908c587511..4bfbee9d4123 100644
> > >>> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > >>> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > >>> @@ -1104,6 +1104,17 @@ vopl_mmu: iommu@ff470f00 {
> > >>>  		status = "disabled";
> > >>>  	};
> > >>>  
> > >>> +	rga: rga@ff480000 {
> > >>> +		compatible = "rockchip,px30-rga";
> > >>> +		reg = <0x0 0xff480000 0x0 0x10000>;
> > >>> +		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
> > >>> +		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
> > >>> +		clock-names = "aclk", "hclk", "sclk";
> > >>> +		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
> > >>> +		reset-names = "core", "axi", "ahb";
> > >>> +		power-domains = <&power PX30_PD_VO>;
> > >>
> > >> 		status = "disabled";
> > > 
> > > As of 5.6, the rk3399 has the node enabled by default. Did that change?
> > 
> > 'status' disappeared during review for rk3399 between v2 and v3, but
> > doesn't mention the reason. If someone can give more info here?
> > 
> > https://lore.kernel.org/lkml/1500101920-24039-5-git-send-email-jacob-chen@iotwrt.com/
> > 
> > https://lore.kernel.org/lkml/1501470460-12014-5-git-send-email-jacob-chen@iotwrt.com/
> > 
> > > 
> > > Since it's a standalone block that has no I/O dependency, I don't really see
> > > the point of disabling it by default.
> > 
> > Vop, hdmi and other video devices are also disabled.
> > Follow the rest I think...
> 
> Well, these blocks do have related I/O ports so it makes sense not to enable
> them by default because of pinmux, or because there might be no connector
> populated/routed.
> 
> For a memory to memory internal block, I don't see any reason why.
> It's definitely not board-specific and having to add these nodes for every board
> that has them is kind of a pain and might be overlooked. This will easily result
> in the feature not being available for end users without having to change the
> dt.
> 
> Also, the vpu node is always enabled on rockchip (and sunxi) platforms.
> I think these are better examples to follow.

just to add my me too ... what Paul, Ezequiel and Robin said - so no status
for soc internal components without any board-specifics


Heiko
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
index 75908c587511..4bfbee9d4123 100644
--- a/arch/arm64/boot/dts/rockchip/px30.dtsi
+++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
@@ -1104,6 +1104,17 @@  vopl_mmu: iommu@ff470f00 {
 		status = "disabled";
 	};
 
+	rga: rga@ff480000 {
+		compatible = "rockchip,px30-rga";
+		reg = <0x0 0xff480000 0x0 0x10000>;
+		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH 0>;
+		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
+		clock-names = "aclk", "hclk", "sclk";
+		resets = <&cru SRST_RGA>, <&cru SRST_RGA_A>, <&cru SRST_RGA_H>;
+		reset-names = "core", "axi", "ahb";
+		power-domains = <&power PX30_PD_VO>;
+	};
+
 	qos_gmac: qos@ff518000 {
 		compatible = "syscon";
 		reg = <0x0 0xff518000 0x0 0x20>;