Re: [PATCH 1/2] ARM: dts: arria10: update NAND clocking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 07/18/2018 09:22 PM, Masahiro Yamada wrote:
> 2018-07-11 23:51 GMT+09:00 Dinh Nguyen <dinh.linux@xxxxxxxxx>:
>> Hi Masahiro,
>>
>> On Tue, Jul 10, 2018 at 9:45 PM Masahiro Yamada
>> <yamada.masahiro@xxxxxxxxxxxxx> wrote:
>>>
>>> 2018-07-10 22:35 GMT+09:00 Dinh Nguyen <dinguyen@xxxxxxxxxx>:
>>>>
>>>>
>>>> On 07/09/2018 08:31 PM, Masahiro Yamada wrote:
>>>>> 2018-07-10 7:41 GMT+09:00 Dinh Nguyen <dinguyen@xxxxxxxxxx>:
>>>>>> The NAND IP needs 2 clocks(nand_x_clk and nand_clk). This patch adds a
>>>>>> nand_x_clk, which is derived from the nand_clk, but has a fixed divider
>>>>>> of 4.
>>>>>>
>>>>>> Update the NAND node to use the additional clock.
>>>>>>
>>>>>> Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxx>
>>>>>> ---
>>>>>>  arch/arm/boot/dts/socfpga_arria10.dtsi | 13 +++++++++++--
>>>>>>  1 file changed, 11 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/arm/boot/dts/socfpga_arria10.dtsi b/arch/arm/boot/dts/socfpga_arria10.dtsi
>>>>>> index a4dcb68..558b5ea 100644
>>>>>> --- a/arch/arm/boot/dts/socfpga_arria10.dtsi
>>>>>> +++ b/arch/arm/boot/dts/socfpga_arria10.dtsi
>>>>>> @@ -377,13 +377,21 @@
>>>>>>                                                 clk-gate = <0xC8 11>;
>>>>>>                                         };
>>>>>>
>>>>>> -                                       nand_clk: nand_clk {
>>>>>> +                                       nand_x_clk: nand_x_clk {
>>>>>>                                                 #clock-cells = <0>;
>>>>>>                                                 compatible = "altr,socfpga-a10-gate-clk";
>>>>>>                                                 clocks = <&l4_mp_clk>;
>>>>>>                                                 clk-gate = <0xC8 10>;
>>>>>>                                         };
>>>>>>
>>>>>> +                                       nand_clk: nand_clk {
>>>>>> +                                               #clock-cells = <0>;
>>>>>> +                                               compatible = "altr,socfpga-a10-gate-clk";
>>>>>> +                                               clocks = <&nand_x_clk>;
>>>>>> +                                               fixed-divider = <4>;
>>>>>> +                                               clk-gate = <0xC8 10>;
>>>>>> +                                       };
>>>>>> +
>>>>>>                                         spi_m_clk: spi_m_clk {
>>>>>>                                                 #clock-cells = <0>;
>>>>>>                                                 compatible = "altr,socfpga-a10-gate-clk";
>>>>>> @@ -650,7 +658,8 @@
>>>>>>                         reg-names = "nand_data", "denali_reg";
>>>>>>                         interrupts = <0 99 4>;
>>>>>>                         dma-mask = <0xffffffff>;
>>>>>> -                       clocks = <&nand_clk>;
>>>>>> +                       clocks = <&nand_clk>, <&nand_x_clk>;
>>>>>> +                       clock-names = "nand", "nand_x";
>>>>>
>>>>>
>>>>> Doesn't SOCFPGA really need the ECC clock?
>>>>>
>>>>
>>>> I don't see any mentions of an ECC clock in any of the SoCFPGA
>>>> documentation for the NAND IP.
>>>
>>>
>>> I'd like you to check the IP documentation
>>> published by Denali (or Cadence),
>>> not published by Altera.
>>>
>>> Is it available for you?
>>>
>>>
>>>
>>> In my SoCs, the same clock signal (nand-clk-200m)
>>> is connected to clk_x and ecc_clk, like this:
>>>
>>>                                          -------------
>>> --------------                           | DENALI IP |
>>> |            |                           |           |
>>> | clk        |---(nand-clk-50m)--------->| clk       |
>>> | controller |                           |           |
>>> |            |---(nand-clk-200m)-------->| clk_x     |
>>> --------------                       |   |           |
>>>                                      --->| ecc_clk   |
>>>                                          |           |
>>>                                          -------------

Here's a diagram of the clocking for the NAND IP on SOCFPGA.

                                      -------------
--------------                        | DENALI IP    |
|            |                        |              |
| clk        |                        | |-->clk(/4)  |
| controller |                        | |            |
|            |---(nand_clk)-------------|-->clk_x    |
-------------                         | |	     |
                                      | |-->ecc_clk  |
                                      |              |
                                      ---------------

>From the clock controller, it provides a single 200MHz clock to the NAND
IP. Inside the NAND IP, there is a /4 for the clk. The 200MHz clock is
used for the clk_x and ecc_clk.

The nand-clk is the only clock that can be gated.

>>>
>>>
>>> Some clock lines are often tied-up,
>>> but such low-level information does not appear in
>>> user documents.
>>> I talked to a hardware engineer to get this information.
>>>
>>>
>>>
>>> I guess the situation is similar for your case,
>>> but I do not have information enough to argue this.
>>>
>>
>> I don't disagree with this representation. But after asking around,
>> I'm getting the impression that the ECC clock is not exposed to the
>> clock manager. This implies that the clock is always turned on and
>> there doesn't seem to be any software control for it. I tested ECC
>> with this patch and it looks to be working correctly, without any ecc
>> clock representation.
>>
>> I'm not sure if I should expose a dummy ecc_clk to satisfy the binding?
> 
> 
> DT should represent the real HW.
> If the Denali IP in SOCFPGA needs ecc_clk input,
> DT should describe it.
> 
> 
> I do not have knowledge about the SOCFPGA internals.
> I do not know which is correct:
> 
>   - The Denali IP in SOCFPGA needs ecc_clk,
>     but there is no software control for it.
> 
>   - The Denali IP in SOCFPGA does not need ecc_clk.
> 

So should I be representing the clocks even though it doesn't come from
the clock controller?

Dinh
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux