[PATCH 3/4] riscv: dts: sophgo: add reset generator for Sophgo CV1800 series SoC

Chen Wang unicorn_wang at outlook.com
Sun Feb 9 18:56:30 PST 2025


On 2025/2/10 9:20, Yixun Lan wrote:
> Hi Chen:
>
> On 08:55 Mon 10 Feb     , Chen Wang wrote:
>> On 2025/2/9 20:29, Inochi Amaoto wrote:
>>> Add reset generator node for all CV18XX series SoC.
>>>
>>> Signed-off-by: Inochi Amaoto <inochiama at gmail.com>
>>> ---
>>>    arch/riscv/boot/dts/sophgo/cv18xx-reset.h | 98 +++++++++++++++++++++++
>> Why it's not include/dt-bindings/reset/sophgo,cv18xx-reset.h?
>>
> then first need to answer if it's really a binding, there are some disucssions
> I personally favor Inochi's way here
>
> https://lore.kernel.org/linux-devicetree/c7e243e3-3f61-4d63-8727-3837838bdfcc@linaro.org
> https://lore.kernel.org/linux-devicetree/c088e01c-0714-82be-8347-6140daf56640@linaro.org/

Well, it's fine if you don't want to define it as binding just because 
the ids are not continuous. In fact, for simple-reset, I think there is 
no big problem to define it as bindings.

Actually, in the first link upon, I see Krzysztof also said 
"simple-reset is an exception."

I recall we ever discussed this when Jisheng submitted the first version 
of reset driver for cv18xx. FYI. See 
https://lore.kernel.org/linux-riscv/42ad3f60-2755-4d3b-a766-8e4404f76a7c@linaro.org/.

>> Regards,
>>
>> Chen
>>
>>>    arch/riscv/boot/dts/sophgo/cv18xx.dtsi    |  7 ++
>>>    2 files changed, 105 insertions(+)
>>>    create mode 100644 arch/riscv/boot/dts/sophgo/cv18xx-reset.h
>>>
>>> diff --git a/arch/riscv/boot/dts/sophgo/cv18xx-reset.h b/arch/riscv/boot/dts/sophgo/cv18xx-reset.h
>>> new file mode 100644
>>> index 000000000000..3d9aa9ec7e90
>>> --- /dev/null
>>> +++ b/arch/riscv/boot/dts/sophgo/cv18xx-reset.h
>>> @@ -0,0 +1,98 @@
>>> +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
>>> +/*
>>> + * Copyright (C) 2025 Inochi Amaoto <inochiama at outlook.com>
>>> + */
>>> +
>>> +#ifndef _SOPHGO_CV18XX_RESET
>>> +#define _SOPHGO_CV18XX_RESET
>>> +
>>> +#define RST_DDR				2
>>> +#define RST_H264C			3
>>> +#define RST_JPEG			4
>>> +#define RST_H265C			5
>>> +#define RST_VIPSYS			6
>>> +#define RST_TDMA			7
>>> +#define RST_TPU				8
>>> +#define RST_TPUSYS			9
>>> +#define RST_USB				11
>>> +#define RST_ETH0			12
>>> +#define RST_ETH1			13
>>> +#define RST_NAND			14
>>> +#define RST_EMMC			15
>>> +#define RST_SD0				16
>>> +#define RST_SDMA			18
>>> +#define RST_I2S0			19
>>> +#define RST_I2S1			20
>>> +#define RST_I2S2			21
>>> +#define RST_I2S3			22
>>> +#define RST_UART0			23
>>> +#define RST_UART1			24
>>> +#define RST_UART2			25
>>> +#define RST_UART3			26
>>> +#define RST_I2C0			27
>>> +#define RST_I2C1			28
>>> +#define RST_I2C2			29
>>> +#define RST_I2C3			30
>>> +#define RST_I2C4			31
>>> +#define RST_PWM0			32
>>> +#define RST_PWM1			33
>>> +#define RST_PWM2			34
>>> +#define RST_PWM3			35
>>> +#define RST_SPI0			40
>>> +#define RST_SPI1			41
>>> +#define RST_SPI2			42
>>> +#define RST_SPI3			43
>>> +#define RST_GPIO0			44
>>> +#define RST_GPIO1			45
>>> +#define RST_GPIO2			46
>>> +#define RST_EFUSE			47
>>> +#define RST_WDT				48
>>> +#define RST_AHB_ROM			49
>>> +#define RST_SPIC			50
>>> +#define RST_TEMPSEN			51
>>> +#define RST_SARADC			52
>>> +#define RST_COMBO_PHY0			58
>>> +#define RST_SPI_NAND			61
>>> +#define RST_SE				62
>>> +#define RST_UART4			74
>>> +#define RST_GPIO3			75
>>> +#define RST_SYSTEM			76
>>> +#define RST_TIMER			77
>>> +#define RST_TIMER0			78
>>> +#define RST_TIMER1			79
>>> +#define RST_TIMER2			80
>>> +#define RST_TIMER3			81
>>> +#define RST_TIMER4			82
>>> +#define RST_TIMER5			83
>>> +#define RST_TIMER6			84
>>> +#define RST_TIMER7			85
>>> +#define RST_WGN0			86
>>> +#define RST_WGN1			87
>>> +#define RST_WGN2			88
>>> +#define RST_KEYSCAN			89
>>> +#define RST_AUDDAC			91
>>> +#define RST_AUDDAC_APB			92
>>> +#define RST_AUDADC			93
>>> +#define RST_VCSYS			95
>>> +#define RST_ETHPHY			96
>>> +#define RST_ETHPHY_APB			97
>>> +#define RST_AUDSRC			98
>>> +#define RST_VIP_CAM0			99
>>> +#define RST_WDT1			100
>>> +#define RST_WDT2			101
>>> +#define RST_AUTOCLEAR_CPUCORE0		128
>>> +#define RST_AUTOCLEAR_CPUCORE1		129
>>> +#define RST_AUTOCLEAR_CPUCORE2		130
>>> +#define RST_AUTOCLEAR_CPUCORE3		131
>>> +#define RST_AUTOCLEAR_CPUSYS0		132
>>> +#define RST_AUTOCLEAR_CPUSYS1		133
>>> +#define RST_AUTOCLEAR_CPUSYS2		134
>>> +#define RST_CPUCORE0			160
>>> +#define RST_CPUCORE1			161
>>> +#define RST_CPUCORE2			162
>>> +#define RST_CPUCORE3			163
>>> +#define RST_CPUSYS0			164
>>> +#define RST_CPUSYS1			165
>>> +#define RST_CPUSYS2			166
>>> +
>>> +#endif /* _SOPHGO_CV18XX_RESET */
>>> diff --git a/arch/riscv/boot/dts/sophgo/cv18xx.dtsi b/arch/riscv/boot/dts/sophgo/cv18xx.dtsi
>>> index c18822ec849f..9aa28ade73a4 100644
>>> --- a/arch/riscv/boot/dts/sophgo/cv18xx.dtsi
>>> +++ b/arch/riscv/boot/dts/sophgo/cv18xx.dtsi
>>> @@ -7,6 +7,7 @@
>>>    #include <dt-bindings/clock/sophgo,cv1800.h>
>>>    #include <dt-bindings/gpio/gpio.h>
>>>    #include <dt-bindings/interrupt-controller/irq.h>
>>> +#include "cv18xx-reset.h"
>>>    
>>>    / {
>>>    	#address-cells = <1>;
>>> @@ -61,6 +62,12 @@ clk: clock-controller at 3002000 {
>>>    			#clock-cells = <1>;
>>>    		};
>>>    
>>> +		rst: reset-controller at 3003000 {
>>> +			compatible = "sophgo,cv1800b-reset";
>>> +			reg = <0x3003000 0x1000>;
>>> +			#reset-cells = <1>;
>>> +		};
>>> +
>>>    		gpio0: gpio at 3020000 {
>>>    			compatible = "snps,dw-apb-gpio";
>>>    			reg = <0x3020000 0x1000>;



More information about the linux-riscv mailing list