[v2,2/2] riscv: dts: sophgo: separate sg2042 mtime and mtimecmp to fit aclint format

Message ID IA1PR20MB4953B943AF1B43CD1EFD7BC4BBB2A@IA1PR20MB4953.namprd20.prod.outlook.com
State New
Headers
Series Change the sg2042 timer layout to fit aclint format |

Commit Message

Inochi Amaoto Nov. 14, 2023, 12:45 a.m. UTC
  Change the timer layout in the dtb to fit the format that needed by
the SBI.

Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
---
 arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
 1 file changed, 48 insertions(+), 32 deletions(-)

--
2.42.1
  

Comments

Chen Wang Nov. 14, 2023, 1:06 a.m. UTC | #1
On 2023/11/14 8:45, Inochi Amaoto wrote:
> Change the timer layout in the dtb to fit the format that needed by
> the SBI.
>
> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
> Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
> ---
>   arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
>   1 file changed, 48 insertions(+), 32 deletions(-)
>
> diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> index 93256540d078..0b5d93b5c783 100644
> --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> @@ -93,144 +93,160 @@ clint_mswi: interrupt-controller@7094000000 {
>   					      <&cpu63_intc 3>;
>   		};
>
> -		clint_mtimer0: timer@70ac000000 {
> +		clint_mtimer0: timer@70ac004000 {

The address of timer register is changed,  and I guess it is another 
change not directly related to the topic of this patch.

Can you please add some comments in the commit message?

>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
Why the length of first item is zero? Can you please add some 
clarification in commit message?
> +			      <0x00000070 0xac004000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu0_intc 7>,
>   					      <&cpu1_intc 7>,
>   					      <&cpu2_intc 7>,
>   					      <&cpu3_intc 7>;
>   		};
>
> -		clint_mtimer1: timer@70ac010000 {
> +		clint_mtimer1: timer@70ac014000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac010000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac014000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac014000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu4_intc 7>,
>   					      <&cpu5_intc 7>,
>   					      <&cpu6_intc 7>,
>   					      <&cpu7_intc 7>;
>   		};
>
> -		clint_mtimer2: timer@70ac020000 {
> +		clint_mtimer2: timer@70ac024000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac020000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac024000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac024000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu8_intc 7>,
>   					      <&cpu9_intc 7>,
>   					      <&cpu10_intc 7>,
>   					      <&cpu11_intc 7>;
>   		};
>
> -		clint_mtimer3: timer@70ac030000 {
> +		clint_mtimer3: timer@70ac034000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac030000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac034000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac034000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu12_intc 7>,
>   					      <&cpu13_intc 7>,
>   					      <&cpu14_intc 7>,
>   					      <&cpu15_intc 7>;
>   		};
>
> -		clint_mtimer4: timer@70ac040000 {
> +		clint_mtimer4: timer@70ac044000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac040000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac044000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac044000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu16_intc 7>,
>   					      <&cpu17_intc 7>,
>   					      <&cpu18_intc 7>,
>   					      <&cpu19_intc 7>;
>   		};
>
> -		clint_mtimer5: timer@70ac050000 {
> +		clint_mtimer5: timer@70ac054000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac050000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac054000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac054000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu20_intc 7>,
>   					      <&cpu21_intc 7>,
>   					      <&cpu22_intc 7>,
>   					      <&cpu23_intc 7>;
>   		};
>
> -		clint_mtimer6: timer@70ac060000 {
> +		clint_mtimer6: timer@70ac064000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac060000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac064000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac064000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu24_intc 7>,
>   					      <&cpu25_intc 7>,
>   					      <&cpu26_intc 7>,
>   					      <&cpu27_intc 7>;
>   		};
>
> -		clint_mtimer7: timer@70ac070000 {
> +		clint_mtimer7: timer@70ac074000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac070000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac074000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac074000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu28_intc 7>,
>   					      <&cpu29_intc 7>,
>   					      <&cpu30_intc 7>,
>   					      <&cpu31_intc 7>;
>   		};
>
> -		clint_mtimer8: timer@70ac080000 {
> +		clint_mtimer8: timer@70ac084000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac080000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac084000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac084000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu32_intc 7>,
>   					      <&cpu33_intc 7>,
>   					      <&cpu34_intc 7>,
>   					      <&cpu35_intc 7>;
>   		};
>
> -		clint_mtimer9: timer@70ac090000 {
> +		clint_mtimer9: timer@70ac094000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac090000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac094000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac094000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu36_intc 7>,
>   					      <&cpu37_intc 7>,
>   					      <&cpu38_intc 7>,
>   					      <&cpu39_intc 7>;
>   		};
>
> -		clint_mtimer10: timer@70ac0a0000 {
> +		clint_mtimer10: timer@70ac0a4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0a0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0a4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu40_intc 7>,
>   					      <&cpu41_intc 7>,
>   					      <&cpu42_intc 7>,
>   					      <&cpu43_intc 7>;
>   		};
>
> -		clint_mtimer11: timer@70ac0b0000 {
> +		clint_mtimer11: timer@70ac0b4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0b0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0b4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu44_intc 7>,
>   					      <&cpu45_intc 7>,
>   					      <&cpu46_intc 7>,
>   					      <&cpu47_intc 7>;
>   		};
>
> -		clint_mtimer12: timer@70ac0c0000 {
> +		clint_mtimer12: timer@70ac0c4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0c0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0c4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu48_intc 7>,
>   					      <&cpu49_intc 7>,
>   					      <&cpu50_intc 7>,
>   					      <&cpu51_intc 7>;
>   		};
>
> -		clint_mtimer13: timer@70ac0d0000 {
> +		clint_mtimer13: timer@70ac0d4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0d0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0d4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu52_intc 7>,
>   					      <&cpu53_intc 7>,
>   					      <&cpu54_intc 7>,
>   					      <&cpu55_intc 7>;
>   		};
>
> -		clint_mtimer14: timer@70ac0e0000 {
> +		clint_mtimer14: timer@70ac0e4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0e0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0e4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu56_intc 7>,
>   					      <&cpu57_intc 7>,
>   					      <&cpu58_intc 7>,
>   					      <&cpu59_intc 7>;
>   		};
>
> -		clint_mtimer15: timer@70ac0f0000 {
> +		clint_mtimer15: timer@70ac0f4000 {
>   			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> -			reg = <0x00000070 0xac0f0000 0x00000000 0x00007ff8>;
> +			reg = <0x00000070 0xac0f4000 0x00000000 0x00000000>,
> +			      <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
>   			interrupts-extended = <&cpu60_intc 7>,
>   					      <&cpu61_intc 7>,
>   					      <&cpu62_intc 7>,
> --
> 2.42.1
>
  
Inochi Amaoto Nov. 14, 2023, 1:47 a.m. UTC | #2
>On 2023/11/14 8:45, Inochi Amaoto wrote:
>> Change the timer layout in the dtb to fit the format that needed by
>> the SBI.
>>
>> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
>> Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
>> ---
>>   arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
>>   1 file changed, 48 insertions(+), 32 deletions(-)
>>
>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>> index 93256540d078..0b5d93b5c783 100644
>> --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>> +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>> @@ -93,144 +93,160 @@ clint_mswi: interrupt-controller@7094000000 {
>>                             <&cpu63_intc 3>;
>>           };
>>
>> -        clint_mtimer0: timer@70ac000000 {
>> +        clint_mtimer0: timer@70ac004000 {
>
>The address of timer register is changed,  and I guess it is another change not directly related to the topic of this patch.
>
>Can you please add some comments in the commit message?
>

As it needs to follow aclint format, the timer offset is applied to
identify the actual timer. So there is a change.

>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
>Why the length of first item is zero? Can you please add some clarification in commit message?

I uses length zero to address that the mtimer is not supported, so the
SBI can know there is no mtimer in the timer.

>> +                  <0x00000070 0xac004000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu0_intc 7>,
>>                             <&cpu1_intc 7>,
>>                             <&cpu2_intc 7>,
>>                             <&cpu3_intc 7>;
>>           };
>>
>> -        clint_mtimer1: timer@70ac010000 {
>> +        clint_mtimer1: timer@70ac014000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac010000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac014000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac014000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu4_intc 7>,
>>                             <&cpu5_intc 7>,
>>                             <&cpu6_intc 7>,
>>                             <&cpu7_intc 7>;
>>           };
>>
>> -        clint_mtimer2: timer@70ac020000 {
>> +        clint_mtimer2: timer@70ac024000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac020000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac024000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac024000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu8_intc 7>,
>>                             <&cpu9_intc 7>,
>>                             <&cpu10_intc 7>,
>>                             <&cpu11_intc 7>;
>>           };
>>
>> -        clint_mtimer3: timer@70ac030000 {
>> +        clint_mtimer3: timer@70ac034000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac030000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac034000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac034000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu12_intc 7>,
>>                             <&cpu13_intc 7>,
>>                             <&cpu14_intc 7>,
>>                             <&cpu15_intc 7>;
>>           };
>>
>> -        clint_mtimer4: timer@70ac040000 {
>> +        clint_mtimer4: timer@70ac044000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac040000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac044000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac044000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu16_intc 7>,
>>                             <&cpu17_intc 7>,
>>                             <&cpu18_intc 7>,
>>                             <&cpu19_intc 7>;
>>           };
>>
>> -        clint_mtimer5: timer@70ac050000 {
>> +        clint_mtimer5: timer@70ac054000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac050000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac054000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac054000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu20_intc 7>,
>>                             <&cpu21_intc 7>,
>>                             <&cpu22_intc 7>,
>>                             <&cpu23_intc 7>;
>>           };
>>
>> -        clint_mtimer6: timer@70ac060000 {
>> +        clint_mtimer6: timer@70ac064000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac060000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac064000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac064000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu24_intc 7>,
>>                             <&cpu25_intc 7>,
>>                             <&cpu26_intc 7>,
>>                             <&cpu27_intc 7>;
>>           };
>>
>> -        clint_mtimer7: timer@70ac070000 {
>> +        clint_mtimer7: timer@70ac074000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac070000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac074000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac074000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu28_intc 7>,
>>                             <&cpu29_intc 7>,
>>                             <&cpu30_intc 7>,
>>                             <&cpu31_intc 7>;
>>           };
>>
>> -        clint_mtimer8: timer@70ac080000 {
>> +        clint_mtimer8: timer@70ac084000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac080000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac084000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac084000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu32_intc 7>,
>>                             <&cpu33_intc 7>,
>>                             <&cpu34_intc 7>,
>>                             <&cpu35_intc 7>;
>>           };
>>
>> -        clint_mtimer9: timer@70ac090000 {
>> +        clint_mtimer9: timer@70ac094000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac090000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac094000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac094000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu36_intc 7>,
>>                             <&cpu37_intc 7>,
>>                             <&cpu38_intc 7>,
>>                             <&cpu39_intc 7>;
>>           };
>>
>> -        clint_mtimer10: timer@70ac0a0000 {
>> +        clint_mtimer10: timer@70ac0a4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0a0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0a4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu40_intc 7>,
>>                             <&cpu41_intc 7>,
>>                             <&cpu42_intc 7>,
>>                             <&cpu43_intc 7>;
>>           };
>>
>> -        clint_mtimer11: timer@70ac0b0000 {
>> +        clint_mtimer11: timer@70ac0b4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0b0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0b4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu44_intc 7>,
>>                             <&cpu45_intc 7>,
>>                             <&cpu46_intc 7>,
>>                             <&cpu47_intc 7>;
>>           };
>>
>> -        clint_mtimer12: timer@70ac0c0000 {
>> +        clint_mtimer12: timer@70ac0c4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0c0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0c4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu48_intc 7>,
>>                             <&cpu49_intc 7>,
>>                             <&cpu50_intc 7>,
>>                             <&cpu51_intc 7>;
>>           };
>>
>> -        clint_mtimer13: timer@70ac0d0000 {
>> +        clint_mtimer13: timer@70ac0d4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0d0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0d4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu52_intc 7>,
>>                             <&cpu53_intc 7>,
>>                             <&cpu54_intc 7>,
>>                             <&cpu55_intc 7>;
>>           };
>>
>> -        clint_mtimer14: timer@70ac0e0000 {
>> +        clint_mtimer14: timer@70ac0e4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0e0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0e4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu56_intc 7>,
>>                             <&cpu57_intc 7>,
>>                             <&cpu58_intc 7>,
>>                             <&cpu59_intc 7>;
>>           };
>>
>> -        clint_mtimer15: timer@70ac0f0000 {
>> +        clint_mtimer15: timer@70ac0f4000 {
>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>> -            reg = <0x00000070 0xac0f0000 0x00000000 0x00007ff8>;
>> +            reg = <0x00000070 0xac0f4000 0x00000000 0x00000000>,
>> +                  <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
>>               interrupts-extended = <&cpu60_intc 7>,
>>                             <&cpu61_intc 7>,
>>                             <&cpu62_intc 7>,
>> --
>> 2.42.1
>>
>
  
Inochi Amaoto Nov. 14, 2023, 2:10 a.m. UTC | #3
>
>>On 2023/11/14 8:45, Inochi Amaoto wrote:
>>> Change the timer layout in the dtb to fit the format that needed by
>>> the SBI.
>>>
>>> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
>>> Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
>>> ---
>>>   arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
>>>   1 file changed, 48 insertions(+), 32 deletions(-)
>>>
>>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>> index 93256540d078..0b5d93b5c783 100644
>>> --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>> +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>> @@ -93,144 +93,160 @@ clint_mswi: interrupt-controller@7094000000 {
>>>                             <&cpu63_intc 3>;
>>>           };
>>>
>>> -        clint_mtimer0: timer@70ac000000 {
>>> +        clint_mtimer0: timer@70ac004000 {
>>
>>The address of timer register is changed,  and I guess it is another change not directly related to the topic of this patch.
>>
>>Can you please add some comments in the commit message?
>>
>
>As it needs to follow aclint format, the timer offset is applied to
>identify the actual timer. So there is a change.
>
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
>>Why the length of first item is zero? Can you please add some clarification in commit message?
>
>I uses length zero to address that the mtimer is not supported, so the
>SBI can know there is no mtimer in the timer.
>

There is a misspell: mtimer -> mtime.

>>> +                  <0x00000070 0xac004000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu0_intc 7>,
>>>                             <&cpu1_intc 7>,
>>>                             <&cpu2_intc 7>,
>>>                             <&cpu3_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer1: timer@70ac010000 {
>>> +        clint_mtimer1: timer@70ac014000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac010000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac014000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac014000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu4_intc 7>,
>>>                             <&cpu5_intc 7>,
>>>                             <&cpu6_intc 7>,
>>>                             <&cpu7_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer2: timer@70ac020000 {
>>> +        clint_mtimer2: timer@70ac024000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac020000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac024000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac024000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu8_intc 7>,
>>>                             <&cpu9_intc 7>,
>>>                             <&cpu10_intc 7>,
>>>                             <&cpu11_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer3: timer@70ac030000 {
>>> +        clint_mtimer3: timer@70ac034000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac030000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac034000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac034000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu12_intc 7>,
>>>                             <&cpu13_intc 7>,
>>>                             <&cpu14_intc 7>,
>>>                             <&cpu15_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer4: timer@70ac040000 {
>>> +        clint_mtimer4: timer@70ac044000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac040000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac044000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac044000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu16_intc 7>,
>>>                             <&cpu17_intc 7>,
>>>                             <&cpu18_intc 7>,
>>>                             <&cpu19_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer5: timer@70ac050000 {
>>> +        clint_mtimer5: timer@70ac054000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac050000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac054000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac054000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu20_intc 7>,
>>>                             <&cpu21_intc 7>,
>>>                             <&cpu22_intc 7>,
>>>                             <&cpu23_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer6: timer@70ac060000 {
>>> +        clint_mtimer6: timer@70ac064000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac060000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac064000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac064000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu24_intc 7>,
>>>                             <&cpu25_intc 7>,
>>>                             <&cpu26_intc 7>,
>>>                             <&cpu27_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer7: timer@70ac070000 {
>>> +        clint_mtimer7: timer@70ac074000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac070000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac074000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac074000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu28_intc 7>,
>>>                             <&cpu29_intc 7>,
>>>                             <&cpu30_intc 7>,
>>>                             <&cpu31_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer8: timer@70ac080000 {
>>> +        clint_mtimer8: timer@70ac084000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac080000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac084000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac084000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu32_intc 7>,
>>>                             <&cpu33_intc 7>,
>>>                             <&cpu34_intc 7>,
>>>                             <&cpu35_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer9: timer@70ac090000 {
>>> +        clint_mtimer9: timer@70ac094000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac090000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac094000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac094000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu36_intc 7>,
>>>                             <&cpu37_intc 7>,
>>>                             <&cpu38_intc 7>,
>>>                             <&cpu39_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer10: timer@70ac0a0000 {
>>> +        clint_mtimer10: timer@70ac0a4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0a0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0a4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu40_intc 7>,
>>>                             <&cpu41_intc 7>,
>>>                             <&cpu42_intc 7>,
>>>                             <&cpu43_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer11: timer@70ac0b0000 {
>>> +        clint_mtimer11: timer@70ac0b4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0b0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0b4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu44_intc 7>,
>>>                             <&cpu45_intc 7>,
>>>                             <&cpu46_intc 7>,
>>>                             <&cpu47_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer12: timer@70ac0c0000 {
>>> +        clint_mtimer12: timer@70ac0c4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0c0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0c4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu48_intc 7>,
>>>                             <&cpu49_intc 7>,
>>>                             <&cpu50_intc 7>,
>>>                             <&cpu51_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer13: timer@70ac0d0000 {
>>> +        clint_mtimer13: timer@70ac0d4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0d0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0d4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu52_intc 7>,
>>>                             <&cpu53_intc 7>,
>>>                             <&cpu54_intc 7>,
>>>                             <&cpu55_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer14: timer@70ac0e0000 {
>>> +        clint_mtimer14: timer@70ac0e4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0e0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0e4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu56_intc 7>,
>>>                             <&cpu57_intc 7>,
>>>                             <&cpu58_intc 7>,
>>>                             <&cpu59_intc 7>;
>>>           };
>>>
>>> -        clint_mtimer15: timer@70ac0f0000 {
>>> +        clint_mtimer15: timer@70ac0f4000 {
>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>> -            reg = <0x00000070 0xac0f0000 0x00000000 0x00007ff8>;
>>> +            reg = <0x00000070 0xac0f4000 0x00000000 0x00000000>,
>>> +                  <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
>>>               interrupts-extended = <&cpu60_intc 7>,
>>>                             <&cpu61_intc 7>,
>>>                             <&cpu62_intc 7>,
>>> --
>>> 2.42.1
>>>
>>
>
  
Conor Dooley Nov. 14, 2023, 3:24 p.m. UTC | #4
On Tue, Nov 14, 2023 at 09:47:19AM +0800, Inochi Amaoto wrote:
> >On 2023/11/14 8:45, Inochi Amaoto wrote:
> >> Change the timer layout in the dtb to fit the format that needed by
> >> the SBI.
> >>
> >> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
> >> Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
> >> ---
> >>   arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
> >>   1 file changed, 48 insertions(+), 32 deletions(-)
> >>
> >> diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> >> index 93256540d078..0b5d93b5c783 100644
> >> --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> >> +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
> >> @@ -93,144 +93,160 @@ clint_mswi: interrupt-controller@7094000000 {
> >>                             <&cpu63_intc 3>;
> >>           };
> >>
> >> -        clint_mtimer0: timer@70ac000000 {
> >> +        clint_mtimer0: timer@70ac004000 {
> >
> >The address of timer register is changed,  and I guess it is another change not directly related to the topic of this patch.
> >
> >Can you please add some comments in the commit message?
> >
> 
> As it needs to follow aclint format, the timer offset is applied to
> identify the actual timer. So there is a change.
> 
> >>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
> >> -            reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
> >> +            reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
> >Why the length of first item is zero? Can you please add some clarification in commit message?
> 
> I uses length zero to address that the mtimer is not supported, so the
> SBI can know there is no mtimer in the timer.

No, that's unacceptably hacky. If there is only one of the two registers
present, then you need to provide only one of them, not spoof the
presence of two. I suppose that means you need to add reg-names to the
binding & get your registers by name in the SBI implementation, not by
index.
  
Inochi Amaoto Nov. 14, 2023, 11:13 p.m. UTC | #5
>On Tue, Nov 14, 2023 at 09:47:19AM +0800, Inochi Amaoto wrote:
>>> On 2023/11/14 8:45, Inochi Amaoto wrote:
>>>> Change the timer layout in the dtb to fit the format that needed by
>>>> the SBI.
>>>>
>>>> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
>>>> Fixes: 967a94a92aaa ("riscv: dts: add initial Sophgo SG2042 SoC device tree")
>>>> ---
>>>>   arch/riscv/boot/dts/sophgo/sg2042.dtsi | 80 +++++++++++++++-----------
>>>>   1 file changed, 48 insertions(+), 32 deletions(-)
>>>>
>>>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>>> index 93256540d078..0b5d93b5c783 100644
>>>> --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>>> +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
>>>> @@ -93,144 +93,160 @@ clint_mswi: interrupt-controller@7094000000 {
>>>>                             <&cpu63_intc 3>;
>>>>           };
>>>>
>>>> -        clint_mtimer0: timer@70ac000000 {
>>>> +        clint_mtimer0: timer@70ac004000 {
>>>
>>> The address of timer register is changed,  and I guess it is another change not directly related to the topic of this patch.
>>>
>>> Can you please add some comments in the commit message?
>>>
>>
>> As it needs to follow aclint format, the timer offset is applied to
>> identify the actual timer. So there is a change.
>>
>>>>               compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
>>>> -            reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
>>>> +            reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
>>> Why the length of first item is zero? Can you please add some clarification in commit message?
>>
>> I uses length zero to address that the mtimer is not supported, so the
>> SBI can know there is no mtimer in the timer.
>
>No, that's unacceptably hacky. If there is only one of the two registers
>present, then you need to provide only one of them, not spoof the
>presence of two. I suppose that means you need to add reg-names to the
>binding & get your registers by name in the SBI implementation, not by
>index.
>

Yes, this is more clear. And it can fully utilize the change from DT
binding. I will figure out how to improve this with reg-names.
  

Patch

diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
index 93256540d078..0b5d93b5c783 100644
--- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi
+++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi
@@ -93,144 +93,160 @@  clint_mswi: interrupt-controller@7094000000 {
 					      <&cpu63_intc 3>;
 		};

-		clint_mtimer0: timer@70ac000000 {
+		clint_mtimer0: timer@70ac004000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac000000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac004000 0x00000000 0x00000000>,
+			      <0x00000070 0xac004000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu0_intc 7>,
 					      <&cpu1_intc 7>,
 					      <&cpu2_intc 7>,
 					      <&cpu3_intc 7>;
 		};

-		clint_mtimer1: timer@70ac010000 {
+		clint_mtimer1: timer@70ac014000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac010000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac014000 0x00000000 0x00000000>,
+			      <0x00000070 0xac014000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu4_intc 7>,
 					      <&cpu5_intc 7>,
 					      <&cpu6_intc 7>,
 					      <&cpu7_intc 7>;
 		};

-		clint_mtimer2: timer@70ac020000 {
+		clint_mtimer2: timer@70ac024000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac020000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac024000 0x00000000 0x00000000>,
+			      <0x00000070 0xac024000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu8_intc 7>,
 					      <&cpu9_intc 7>,
 					      <&cpu10_intc 7>,
 					      <&cpu11_intc 7>;
 		};

-		clint_mtimer3: timer@70ac030000 {
+		clint_mtimer3: timer@70ac034000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac030000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac034000 0x00000000 0x00000000>,
+			      <0x00000070 0xac034000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu12_intc 7>,
 					      <&cpu13_intc 7>,
 					      <&cpu14_intc 7>,
 					      <&cpu15_intc 7>;
 		};

-		clint_mtimer4: timer@70ac040000 {
+		clint_mtimer4: timer@70ac044000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac040000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac044000 0x00000000 0x00000000>,
+			      <0x00000070 0xac044000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu16_intc 7>,
 					      <&cpu17_intc 7>,
 					      <&cpu18_intc 7>,
 					      <&cpu19_intc 7>;
 		};

-		clint_mtimer5: timer@70ac050000 {
+		clint_mtimer5: timer@70ac054000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac050000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac054000 0x00000000 0x00000000>,
+			      <0x00000070 0xac054000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu20_intc 7>,
 					      <&cpu21_intc 7>,
 					      <&cpu22_intc 7>,
 					      <&cpu23_intc 7>;
 		};

-		clint_mtimer6: timer@70ac060000 {
+		clint_mtimer6: timer@70ac064000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac060000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac064000 0x00000000 0x00000000>,
+			      <0x00000070 0xac064000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu24_intc 7>,
 					      <&cpu25_intc 7>,
 					      <&cpu26_intc 7>,
 					      <&cpu27_intc 7>;
 		};

-		clint_mtimer7: timer@70ac070000 {
+		clint_mtimer7: timer@70ac074000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac070000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac074000 0x00000000 0x00000000>,
+			      <0x00000070 0xac074000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu28_intc 7>,
 					      <&cpu29_intc 7>,
 					      <&cpu30_intc 7>,
 					      <&cpu31_intc 7>;
 		};

-		clint_mtimer8: timer@70ac080000 {
+		clint_mtimer8: timer@70ac084000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac080000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac084000 0x00000000 0x00000000>,
+			      <0x00000070 0xac084000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu32_intc 7>,
 					      <&cpu33_intc 7>,
 					      <&cpu34_intc 7>,
 					      <&cpu35_intc 7>;
 		};

-		clint_mtimer9: timer@70ac090000 {
+		clint_mtimer9: timer@70ac094000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac090000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac094000 0x00000000 0x00000000>,
+			      <0x00000070 0xac094000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu36_intc 7>,
 					      <&cpu37_intc 7>,
 					      <&cpu38_intc 7>,
 					      <&cpu39_intc 7>;
 		};

-		clint_mtimer10: timer@70ac0a0000 {
+		clint_mtimer10: timer@70ac0a4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0a0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0a4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu40_intc 7>,
 					      <&cpu41_intc 7>,
 					      <&cpu42_intc 7>,
 					      <&cpu43_intc 7>;
 		};

-		clint_mtimer11: timer@70ac0b0000 {
+		clint_mtimer11: timer@70ac0b4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0b0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0b4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu44_intc 7>,
 					      <&cpu45_intc 7>,
 					      <&cpu46_intc 7>,
 					      <&cpu47_intc 7>;
 		};

-		clint_mtimer12: timer@70ac0c0000 {
+		clint_mtimer12: timer@70ac0c4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0c0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0c4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu48_intc 7>,
 					      <&cpu49_intc 7>,
 					      <&cpu50_intc 7>,
 					      <&cpu51_intc 7>;
 		};

-		clint_mtimer13: timer@70ac0d0000 {
+		clint_mtimer13: timer@70ac0d4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0d0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0d4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu52_intc 7>,
 					      <&cpu53_intc 7>,
 					      <&cpu54_intc 7>,
 					      <&cpu55_intc 7>;
 		};

-		clint_mtimer14: timer@70ac0e0000 {
+		clint_mtimer14: timer@70ac0e4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0e0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0e4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu56_intc 7>,
 					      <&cpu57_intc 7>,
 					      <&cpu58_intc 7>,
 					      <&cpu59_intc 7>;
 		};

-		clint_mtimer15: timer@70ac0f0000 {
+		clint_mtimer15: timer@70ac0f4000 {
 			compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
-			reg = <0x00000070 0xac0f0000 0x00000000 0x00007ff8>;
+			reg = <0x00000070 0xac0f4000 0x00000000 0x00000000>,
+			      <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
 			interrupts-extended = <&cpu60_intc 7>,
 					      <&cpu61_intc 7>,
 					      <&cpu62_intc 7>,