[PATCH v3 11/12] riscv: Add device tree for K210

Sean Anderson seanga2 at gmail.com
Tue Feb 4 15:23:32 CET 2020


On 2/4/20 6:32 AM, Bin Meng wrote:
> Hi Sean,
> 
> On Mon, Feb 3, 2020 at 4:10 AM Sean Anderson <seanga2 at gmail.com> wrote:
>>
>> Where possible, I have tried to find compatible drivers based on the layout of
>> registers. However, I have not tested most of this functionality, and most
>> devices should be considered descriptive at best. I would appreciate if anyone
>> could help identify possibly compatible devices, especially for the timers
>> and rtc.
>>
>> Should the size of a reg be the size of the documented registers, or the size
>> of the address space which will be routed to that device?
> 
> Perhaps we need use the size of the address space routed to that
> device, in case there is some undocumented registers we need handle.

Ok, I'll go with the whole address space then.

>> diff --git a/arch/riscv/dts/k210.dtsi b/arch/riscv/dts/k210.dtsi
>> new file mode 100644
>> index 0000000000..cc46b692e6
>> --- /dev/null
>> +++ b/arch/riscv/dts/k210.dtsi
>> @@ -0,0 +1,496 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * Copyright (C) 2019 Sean Anderson <seanga2 at gmail.com>
>> + */
>> +
>> +#include <dt-bindings/clock/k210-sysctl.h>
>> +#include <dt-bindings/mfd/k210-sysctl.h>
>> +#include <dt-bindings/reset/k210-sysctl.h>
>> +
>> +/ {
>> +       /*
>> +        * Although the K210 is a 64-bit CPU, the address bus is only 32-bits
>> +        * wide, and the upper half of all addresses is ignored.
>> +        */
>> +       #address-cells = <1>;
>> +       #size-cells = <1>;
>> +       compatible = "kendryte,k210";
>> +
>> +       aliases {
>> +               serial0 = &uarths0;
>> +               serial1 = &uart1;
>> +               serial2 = &uart2;
>> +               serial3 = &uart3;
>> +               spi0 = &spi0;
>> +               spi1 = &spi1;
>> +               spi2 = &spi2;
>> +               spi3 = &spi3;
>> +       };
>> +
>> +       clocks {
>> +               in0: oscillator {
>> +                       compatible = "fixed-clock";
>> +                       #clock-cells = <0>;
>> +                       clock-frequency = <26000000>;
>> +               };
>> +       };
>> +
>> +       cpus {
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               timebase-frequency = <7800000>;
>> +               cpu0: cpu at 0 {
>> +                       device_type = "cpu";
>> +                       reg = <0>;
>> +                       compatible = "riscv";
>> +                       riscv,isa = "rv64acdfimsu";
>> +                       mmu-type = "sv39";
>> +                       i-cache-size = <0x8000>;
>> +                       d-cache-size = <0x8000>;
>> +                       clocks = <&sysclk K210_CLK_CPU>;
>> +                       clock-frequency = <390000000>;
> 
> I wonder there is already clocks property, why do we have another
> clock-frequency property to provide duplicated information?

This is for compatibility with the existing riscv cpu driver. There is a
patch [1] to move the driver over to using clocks, but I think you
already expressed that it should be merged into this series (not as a
separate series).

[1] https://patchwork.ozlabs.org/project/uboot/list/?series=156381

--Sean


More information about the U-Boot mailing list