Skip to content

Commit 46b8269

Browse files
committed
hal: telink: add support for 60M Mspi
- add clock setting for 60M mspi. - select 60M mspi can save power. - adjust power table for buteo and tercel. Signed-off-by: Haiwen Xia <haiwen.xia@telink-semi.com>
1 parent 9e39d9f commit 46b8269

File tree

5 files changed

+46
-13
lines changed

5 files changed

+46
-13
lines changed

boards/telink/tl721x/tl7218x-common.dtsi

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
};
126126

127127
&cpu0 {
128-
clock-frequency = <60000000>;
128+
clock-frequency = <80000000>;
129129
};
130130

131131
&ram_ilm {

dts/riscv/telink/telink_tl721x.dtsi

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#size-cells = <0>;
2222
cpu0: cpu@0 {
2323
reg = <0>;
24-
clock-frequency = <60000000>;
24+
clock-frequency = <80000000>;
2525
compatible ="telink,tlx", "riscv";
2626
riscv,isa = "rv32imac_zicsr_zifencei";
2727
hlic: interrupt-controller {
@@ -81,7 +81,7 @@
8181
power: power@80140180 {
8282
compatible = "telink,tl721x-power";
8383
reg = <0x80140180 0x40>;
84-
power-mode = "LDO_0P94_LDO_1P8";
84+
power-mode = "DCDC_0P94_DCDC_1P8";
8585
vbat-type = "VBAT_MAX_VALUE_GREATER_THAN_3V6";
8686
status = "okay";
8787
};

soc/telink/tlsr/telink_tlx/init.ld

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66

77
. += CONFIG_ROM_START_OFFSET;
88
KEEP(*(.init.*))
9+
KEEP(*(.flash_data))

soc/telink/tlsr/telink_tlx/soc.c

+41-9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#define CLK_60MHZ 60000000u
3333
#define CLK_80MHZ 80000000u
3434
#define CLK_120MHZ 120000000u
35+
#define CLK_240MHZ 240000000u
3536
#endif
3637

3738
/* MID register flash size */
@@ -70,18 +71,19 @@
7071

7172
/* Check System Clock value. */
7273
#if CONFIG_SOC_RISCV_TELINK_TL321X
73-
#if ((DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_24MHZ) && \
74-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_48MHZ) && \
75-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_96MHZ))
74+
#if ((DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_24MHZ) && \
75+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_48MHZ) && \
76+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_96MHZ))
7677
#error "Invalid clock-frequency. Supported values: 24, 48, 96 MHz"
7778
#endif
7879
#elif CONFIG_SOC_RISCV_TELINK_TL721X
79-
#if ((DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_40MHZ) && \
80-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_48MHZ) && \
81-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_60MHZ) && \
82-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_80MHZ) && \
83-
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_120MHZ))
84-
#error "Invalid clock-frequency. Supported values: 24, 40, 48, 60, 80 and 120 MHz"
80+
#if ((DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_40MHZ) && \
81+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_48MHZ) && \
82+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_60MHZ) && \
83+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_80MHZ) && \
84+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_120MHZ) && \
85+
(DT_PROP(DT_PATH(cpus, cpu_0), clock_frequency) != CLK_240MHZ))
86+
#error "Invalid clock-frequency. Supported values: 24, 40, 48, 60, 80, 120, 240 MHz"
8587
#endif
8688
#endif
8789

@@ -136,6 +138,13 @@ void soc_early_init_hook(void)
136138
/* system init */
137139
sys_init(POWER_MODE, VBAT_TYPE, INTERNAL_CAP_XTAL24M);
138140

141+
#if CONFIG_SOC_RISCV_TELINK_TL721X
142+
if (cclk == CLK_240MHZ) {
143+
pm_set_dvdd(CORE_0P9V_SRAM_0P9V_BB_0P9V, DMA1, 1000);
144+
}
145+
pm_set_ret_ldo_voltage(RET_LDO_TRIM_0P65V);
146+
#endif
147+
139148
#if CONFIG_PM
140149
gpio_shutdown(GPIO_ALL);
141150
#endif /* CONFIG_PM */
@@ -162,12 +171,24 @@ void soc_early_init_hook(void)
162171
case CLK_60MHZ:
163172
PLL_240M_CCLK_60M_HCLK_60M_PCLK_15M_MSPI_48M;
164173
break;
174+
case CLK_80MHZ:
175+
PLL_240M_CCLK_80M_HCLK_40M_PCLK_40M_MSPI_48M;
176+
break;
165177
#endif /* CONFIG_SOC_RISCV_TELINK_TL721X */
178+
166179
#if CONFIG_SOC_RISCV_TELINK_TL321X
167180
case CLK_96MHZ:
168181
PLL_192M_CCLK_96M_HCLK_48M_PCLK_48M_MSPI_48M;
169182
break;
170183
#endif /* CONFIG_SOC_RISCV_TELINK_TL321X */
184+
#if CONFIG_SOC_RISCV_TELINK_TL721X
185+
case CLK_120MHZ:
186+
PLL_240M_CCLK_120M_HCLK_60M_PCLK_60M_MSPI_48M;
187+
break;
188+
case CLK_240MHZ:
189+
PLL_240M_CCLK_240M_HCLK_120M_PCLK_120M_MSPI_48M;
190+
break;
191+
#endif
171192
}
172193

173194
/* Init Machine Timer source clock: 32 KHz RC */
@@ -224,12 +245,23 @@ void soc_tlx_restore(void)
224245
case CLK_60MHZ:
225246
PLL_240M_CCLK_60M_HCLK_60M_PCLK_15M_MSPI_48M;
226247
break;
248+
case CLK_80MHZ:
249+
PLL_240M_CCLK_80M_HCLK_40M_PCLK_40M_MSPI_48M;
250+
break;
227251
#endif /* CONFIG_SOC_RISCV_TELINK_TL721X */
228252
#if CONFIG_SOC_RISCV_TELINK_TL321X
229253
case CLK_96MHZ:
230254
PLL_192M_CCLK_96M_HCLK_48M_PCLK_48M_MSPI_48M;
231255
break;
232256
#endif /* CONFIG_SOC_RISCV_TELINK_TL321X */
257+
#if CONFIG_SOC_RISCV_TELINK_TL721X
258+
case CLK_120MHZ:
259+
PLL_240M_CCLK_120M_HCLK_60M_PCLK_60M_MSPI_48M;
260+
break;
261+
case CLK_240MHZ:
262+
PLL_240M_CCLK_240M_HCLK_120M_PCLK_120M_MSPI_48M;
263+
break;
264+
#endif
233265
}
234266
}
235267

west.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ manifest:
239239
- hal
240240
- name: hal_telink
241241
url: https://github.com/telink-semi/hal_telink
242-
revision: d45ad1d5772528d8e3efc23fdcf8478cab7956f9
242+
revision: 8e116bb74c344c043500425793d76c4d3ae21565
243243
path: modules/hal/telink
244244
groups:
245245
- hal

0 commit comments

Comments
 (0)