Re: [PATCH v5 5/9] media: staging: rkisp1: remove unecessary clocks

From: Helen Koike
Date: Wed Oct 21 2020 - 09:54:36 EST


Hi Rob,

On 10/20/20 12:14 PM, Rob Herring wrote:
> On Wed, Oct 14, 2020 at 11:46 AM Helen Koike <helen.koike@xxxxxxxxxxxxx> wrote:
>>
>> Hi Rob,
>>
>> Thnaks for your reply.
>>
>> On 9/22/20 11:24 AM, Rob Herring wrote:
>>> On Wed, Jul 22, 2020 at 9:56 AM Helen Koike <helen.koike@xxxxxxxxxxxxx> wrote:
>>>>
>>>> aclk_isp_wrap is a child of aclk_isp, and hclk_isp_wrap is a child of
>>>> hclk_isp, thus we can remove parents from the list.
>>>>
>>>> Also, for the isp0, we only need the ISP clock, ACLK and HCLK.
>>>> In the future we'll need a pixel clock for RK3288 and RK3399, and a JPEG
>>>> clock for RK3288.
>>>>
>>>> So with the goal to cleanup the dt-bindings and remove it from staging,
>>>> simplify clock names to isp, aclk and hclk.
>>>>
>>>> Assigned clocks are meant to refer to the full path in the clock tree,
>>>> i.e. the leaf in the tree.
>>>> For instance, in RK3399, the clock responsible for ACLK (ISP AXI CLOCK)
>>>> is aclk_isp0_wrapper.
>>>>
>>>> For reference, this is the isp clock topology on RK3399:
>>>>
>>>> xin24m
>>>> pll_npll
>>>> npll
>>>> clk_isp1
>>>> clk_isp0
>>>> pll_cpll
>>>> cpll
>>>> aclk_isp1
>>>> aclk_isp1_noc
>>>> hclk_isp1
>>>> aclk_isp1_wrapper
>>>> hclk_isp1_noc
>>>> aclk_isp0
>>>> hclk_isp1_wrapper
>>>> aclk_isp0_wrapper
>>>> aclk_isp0_noc
>>>> hclk_isp0
>>>> hclk_isp0_wrapper
>>>> hclk_isp0_noc
>>>> pclkin_isp1_wrapper
>>>>
>>>> Signed-off-by: Helen Koike <helen.koike@xxxxxxxxxxxxx>
>>>>
>>>> ---
>>>> Changes in V5:
>>>> - Use if/then schema as suggested by Rob Herring on
>>>> https://patchwork.linuxtv.org/project/linux-media/patch/20200702191322.2639681-6-helen.koike@xxxxxxxxxxxxx/#119729
>>>>
>>>> Changes in V4:
>>>> - update binding according to suggestion by Robin Murphy
>>>> on https://patchwork.kernel.org/patch/11475007/
>>>>
>>>> Changes in V3:
>>>> - this is a new patch in the series
>>>> ---
>>>> .../bindings/media/rockchip-isp1.yaml | 50 ++++++++++++-------
>>>> drivers/staging/media/rkisp1/rkisp1-dev.c | 8 ++-
>>>> 2 files changed, 36 insertions(+), 22 deletions(-)
>>>>
>>>> diff --git a/drivers/staging/media/rkisp1/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/drivers/staging/media/rkisp1/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>>> index 62a6b9c959498..23c677d15037a 100644
>>>> --- a/drivers/staging/media/rkisp1/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>>> +++ b/drivers/staging/media/rkisp1/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>>> @@ -24,20 +24,10 @@ properties:
>>>> maxItems: 1
>>>>
>>>> clocks:
>>>> - items:
>>>> - - description: ISP clock
>>>> - - description: ISP AXI clock clock
>>>> - - description: ISP AXI clock wrapper clock
>>>> - - description: ISP AHB clock clock
>>>> - - description: ISP AHB wrapper clock
>>>> + minItems: 3
>>>
>>> You need maxItems here too or it will always be 3.
>>>
>>>>
>>>> clock-names:
>>>> - items:
>>>> - - const: clk_isp
>>>> - - const: aclk_isp
>>>> - - const: aclk_isp_wrap
>>>> - - const: hclk_isp
>>>> - - const: hclk_isp_wrap
>>>> + minItems: 3
>>>>
>>>> iommus:
>>>> maxItems: 1
>>>> @@ -116,6 +106,34 @@ required:
>>>> - power-domains
>>>> - ports
>>>>
>>>> +if:
>>>> + properties:
>>>> + compatible:
>>>> + contains:
>>>> + const: rockchip,rk3399-cif-isp
>>>> +then:
>>>> + properties:
>>>> + clocks:
>>>> + maxItems: 4
>>>> + minItems: 3
>>>
>>> For a single compatible you shouldn't really have a variable number of clocks.
>>
>> I'm not entirely sure how to make this separation, since isp0 and isp1 (not yet supported)
>> would use the same compatible.
>> Unless if we separate in two compatibles, but maybe this is an overhead just for an extra clock.
>> What do you think?
>
> In that case, it's fine.
>
>>
>>>
>>>> + items:
>>>> + # isp0 and isp1
>>>> + - description: ISP clock
>>>> + - description: ISP AXI clock
>>>> + - description: ISP AHB clock
>>>> + # only for isp1
>>>> + - description: ISP Pixel clock
>>>> + clock-names:
>>>> + maxItems: 4
>>>> + minItems: 3
>>>> + items:
>>>> + # isp0 and isp1
>>>> + - const: isp
>>>> + - const: aclk
>>>> + - const: hclk
>>>> + # only for isp1
>>>> + - const: pclk_isp
>>>
>>> Don't you need an 'else' clause. For not rockchip,rk3399-cif-isp,
>>> there's no definition of what clocks there are.
>>
>> There is only one compatible defined for now, rk3288 will be added later.
>> The idea to add if/then is to make it easier to add rk3288:
>>
>> https://patchwork.kernel.org/project/linux-media/patch/20200406073017.19462-4-karthik.poduval@xxxxxxxxx/
>
> Hopefully, the clock names will be aligned? Looks like they are the
> same with just 1 additional clock. Ideally, you define them all at the
> top level and the if/then schema just defines how many clocks for each
> compatible.

I submitted another version, where I try to capture what you suggested here,
please check if I got it right this time (or not).
Maybe I misunderstood which kind of alignment you are expecting for the clock names,
should they be each in a different line?

https://patchwork.linuxtv.org/project/linux-media/patch/20201020193850.1460644-6-helen.koike@xxxxxxxxxxxxx/

Thanks
Helen