Skip to content

Commit 7e23f8b

Browse files
alvsunkartben
authored andcommitted
soc: add npck soc driver
For npck3m8k: 1. Update code ram from 320KB to 416KB (0x1005_8000~0x100B_FFFF). 2. Update data ram from 32KB to 64KB. 3. Move fiudiv from hfcbcd1 to hfcbcd2 register Signed-off-by: Alvis Sun <[email protected]> Signed-off-by: Mulin Chao <[email protected]>
1 parent 4885261 commit 7e23f8b

File tree

19 files changed

+2532
-39
lines changed

19 files changed

+2532
-39
lines changed

include/zephyr/dt-bindings/clock/npcx_clock.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@
2323
#define NPCX_CLOCK_BUS_MCLKD 12
2424

2525
/* clock enable/disable references */
26-
#define NPCX_PWDWN_CTL1 0
27-
#define NPCX_PWDWN_CTL2 1
28-
#define NPCX_PWDWN_CTL3 2
29-
#define NPCX_PWDWN_CTL4 3
30-
#define NPCX_PWDWN_CTL5 4
31-
#define NPCX_PWDWN_CTL6 5
32-
#define NPCX_PWDWN_CTL7 6
33-
#define NPCX_PWDWN_CTL8 7
34-
#define NPCX_PWDWN_CTL9 8
35-
#define NPCX_PWDWN_CTL_COUNT 9
26+
#define NPCX_PWDWN_CTL0 0
27+
#define NPCX_PWDWN_CTL1 1
28+
#define NPCX_PWDWN_CTL2 2
29+
#define NPCX_PWDWN_CTL3 3
30+
#define NPCX_PWDWN_CTL4 4
31+
#define NPCX_PWDWN_CTL5 5
32+
#define NPCX_PWDWN_CTL6 6
33+
#define NPCX_PWDWN_CTL7 7
34+
#define NPCX_PWDWN_CTL8 8
35+
#define NPCX_PWDWN_CTL9 9
36+
#define NPCX_PWDWN_CTL_COUNT 10
3637

3738
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCX_CLOCK_H_ */

soc/nuvoton/npcx/Kconfig

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ config NPCX_IMAGE_OUTPUT_HEX
3131

3232
config NPCX_HEADER_CHIP
3333
string
34+
default "npck3m8" if SOC_NPCK3M8K
3435
default "npcx7m6" if SOC_NPCX7M6FB || SOC_NPCX7M6FC
3536
default "npcx7m7" if SOC_NPCX7M7FC
3637
default "npcx9m3" if SOC_NPCX9M3F
@@ -136,7 +137,8 @@ config NPCX_HEADER_ENABLE_FIRMWARE_CRC
136137
choice NPCX_HEADER_FLASH_SIZE_CHOICE
137138
prompt "Flash size"
138139
default NPCX_HEADER_FLASH_SIZE_0P5M_1M if SOC_SERIES_NPCX7 || \
139-
SOC_SERIES_NPCX9
140+
SOC_SERIES_NPCX9 || \
141+
SOC_SERIES_NPCK3
140142
default NPCX_HEADER_FLASH_SIZE_16M
141143
help
142144
This sets the SPI flash size.

soc/nuvoton/npcx/common/ecst/ecst.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def _check_chip(output, ecst_args):
214214
if ecst_args.chip_name == INVALID_INPUT:
215215
message = f'Invalid chip name, '
216216
message += "should be npcx4m3, npcx4m8, npcx9m8, npcx9m7, npcx9m6, " \
217-
"npcx7m7, npcx7m6, npcx7m5."
217+
"npcx7m7, npcx7m6, npcx7m5, npck3m8k."
218218
_exit_with_failure_delete_file(output, message)
219219

220220
def _set_anchor(output, ecst_args):

soc/nuvoton/npcx/common/ecst/ecst_args.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
# Chips: convert from name to index.
4949
CHIPS_INFO = {
50+
'npck3m8': {'ram_address': 0x10058000, 'ram_size': 0x68000},
5051
'npcx7m5': {'ram_address': 0x100a8000, 'ram_size': 0x20000},
5152
'npcx7m6': {'ram_address': 0x10090000, 'ram_size': 0x40000},
5253
'npcx7m7': {'ram_address': 0x10070000, 'ram_size': 0x60000},
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*
2+
* Copyright (c) 2025 Nuvoton Technology Corporation.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#ifndef _NUVOTON_NPCX_CLOCK_DEF_H_
8+
#define _NUVOTON_NPCX_CLOCK_DEF_H_
9+
10+
#include <stdbool.h>
11+
#include <stdint.h>
12+
13+
#include <zephyr/devicetree.h>
14+
#include <soc_clock.h>
15+
16+
/* FMUL clock */
17+
#if (OFMCLK > (MAX_OFMCLK / 2))
18+
#define FMCLK (OFMCLK / 2) /* FMUL clock = OFMCLK/2 */
19+
#else
20+
#define FMCLK OFMCLK /* FMUL clock = OFMCLK */
21+
#endif
22+
23+
/* APBs source clock */
24+
#define APBSRC_CLK OFMCLK
25+
26+
/* AHB6 clock */
27+
#if (CORE_CLK > (MAX_OFMCLK / 2))
28+
#define AHB6DIV_VAL 1 /* AHB6_CLK = CORE_CLK/2 */
29+
#else
30+
#define AHB6DIV_VAL 0 /* AHB6_CLK = CORE_CLK */
31+
#endif
32+
33+
/* FIU clock divider */
34+
#if (CORE_CLK > (MAX_OFMCLK / 2))
35+
#define FIUDIV_VAL 1 /* FIU_CLK = CORE_CLK/2 */
36+
#else
37+
#define FIUDIV_VAL 0 /* FIU_CLK = CORE_CLK */
38+
#endif
39+
40+
#if defined(CONFIG_CLOCK_CONTROL_NPCX_SUPP_FIU1)
41+
#if (CORE_CLK > (MAX_OFMCLK / 2))
42+
#define FIU1DIV_VAL 1 /* FIU1_CLK = CORE_CLK/2 */
43+
#else
44+
#define FIU1DIV_VAL 0 /* FIU1_CLK = CORE_CLK */
45+
#endif
46+
#endif /* CONFIG_CLOCK_CONTROL_NPCX_SUPP_FIU1 */
47+
48+
/* I3C clock divider */
49+
#if (OFMCLK == MHZ(120)) /* MCLkD must between 40 mhz to 50 mhz*/
50+
#define MCLKD_SL 2 /* I3C_CLK = (MCLK / 3) */
51+
#elif (OFMCLK <= MHZ(100) && OFMCLK >= MHZ(80))
52+
#define MCLKD_SL 1 /* I3C_CLK = (MCLK / 2) */
53+
#else
54+
#define MCLKD_SL 0 /* I3C_CLK = MCLK */
55+
#endif
56+
57+
/* Get APB clock freq */
58+
#define NPCX_APB_CLOCK(no) (APBSRC_CLK / (APB##no##DIV_VAL + 1))
59+
60+
/*
61+
* Frequency multiplier M/N value definitions according to the requested
62+
* OFMCLK (Unit:Hz).
63+
*/
64+
#if (OFMCLK > (MAX_OFMCLK / 2))
65+
#define HFCGN_VAL 0x82 /* Set XF_RANGE as 1 */
66+
#else
67+
#define HFCGN_VAL 0x02
68+
#endif
69+
#if (OFMCLK == 120000000)
70+
#define HFCGMH_VAL 0x0E
71+
#define HFCGML_VAL 0x4E
72+
#elif (OFMCLK == 100000000)
73+
#define HFCGMH_VAL 0x0B
74+
#define HFCGML_VAL 0xEC
75+
#elif (OFMCLK == 96000000)
76+
#define HFCGMH_VAL 0x0B
77+
#define HFCGML_VAL 0x72
78+
#elif (OFMCLK == 90000000)
79+
#define HFCGMH_VAL 0x0A
80+
#define HFCGML_VAL 0xBA
81+
#elif (OFMCLK == 80000000)
82+
#define HFCGMH_VAL 0x09
83+
#define HFCGML_VAL 0x89
84+
#elif (OFMCLK == 66000000)
85+
#define HFCGMH_VAL 0x07
86+
#define HFCGML_VAL 0xDE
87+
#elif (OFMCLK == 50000000)
88+
#define HFCGMH_VAL 0x0B
89+
#define HFCGML_VAL 0xEC
90+
#elif (OFMCLK == 48000000)
91+
#define HFCGMH_VAL 0x0B
92+
#define HFCGML_VAL 0x72
93+
#else
94+
#error "Unsupported OFMCLK Frequency"
95+
#endif
96+
97+
#endif /* _NUVOTON_NPCX_CLOCK_DEF_H_ */

0 commit comments

Comments
 (0)