Skip to content

Commit 71b7101

Browse files
ChiHuaLcarlescufi
authored andcommitted
driver: espi: npcx: enable the Serial Port
Initialize and enable the Serial Port/Host UART when CONFIG_ESPI_PERIPHERAL_UART=y. Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
1 parent b5f8b4b commit 71b7101

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

drivers/espi/host_subs_npcx.c

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ struct host_sub_npcx_data host_sub_data;
191191
#define NPCX_C2H_TRANSACTION_TIMEOUT_US 200
192192

193193
/* Logical Device Number Assignments */
194+
#define EC_CFG_LDN_SP 0x03
194195
#define EC_CFG_LDN_MOUSE 0x05
195196
#define EC_CFG_LDN_KBC 0x06
196197
#define EC_CFG_LDN_SHM 0x0F
@@ -205,6 +206,13 @@ struct host_sub_npcx_data host_sub_data;
205206
#define EC_CFG_IDX_DATA_IO_ADDR_H 0x62
206207
#define EC_CFG_IDX_DATA_IO_ADDR_L 0x63
207208

209+
/* LDN Activation Enable */
210+
#define EC_CFG_IDX_CTRL_LDN_ENABLE 0x01
211+
212+
/* Index of SuperI/O Control and Configuration Registers */
213+
#define EC_CFG_IDX_SUPERIO_SIOCF9 0x29
214+
#define EC_CFG_IDX_SUPERIO_SIOCF9_CKEN 2
215+
208216
/* Index of Special Logical Device Configuration (Shared Memory Module) */
209217
#define EC_CFG_IDX_SHM_CFG 0xF1
210218
#define EC_CFG_IDX_SHM_WND1_ADDR_0 0xF4
@@ -217,6 +225,11 @@ struct host_sub_npcx_data host_sub_data;
217225
#define EC_CFG_IDX_SHM_WND2_ADDR_3 0xFB
218226
#define EC_CFG_IDX_SHM_DP80_ADDR_RANGE 0xFD
219227

228+
/* Index of Special Logical Device Configuration (Serial Port/Host UART) */
229+
#define EC_CFG_IDX_SP_CFG 0xF0
230+
/* Enable selection of bank 2 and 3 for the Serial Port */
231+
#define EC_CFG_IDX_SP_CFG_BK_SL_ENABLE 7
232+
220233
/* Host sub-device local inline functions */
221234
static inline uint8_t host_shd_mem_wnd_size_sl(uint32_t size)
222235
{
@@ -995,10 +1008,10 @@ void npcx_host_init_subs_host_domain(void)
9951008
* modules by setting bit 0 in its Control (index is 0x30) reg.
9961009
*/
9971010
host_c2h_write_io_cfg_reg(EC_CFG_IDX_LDN, EC_CFG_LDN_KBC);
998-
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, 0x01);
1011+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
9991012

10001013
host_c2h_write_io_cfg_reg(EC_CFG_IDX_LDN, EC_CFG_LDN_MOUSE);
1001-
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, 0x01);
1014+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
10021015
}
10031016

10041017
if (IS_ENABLED(CONFIG_ESPI_PERIPHERAL_HOST_IO)) {
@@ -1007,7 +1020,7 @@ void npcx_host_init_subs_host_domain(void)
10071020
* module by setting bit 0 in its Control (index is 0x30) reg.
10081021
*/
10091022
host_c2h_write_io_cfg_reg(EC_CFG_IDX_LDN, EC_CFG_LDN_ACPI);
1010-
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, 0x01);
1023+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
10111024
}
10121025

10131026
if (IS_ENABLED(CONFIG_ESPI_PERIPHERAL_EC_HOST_CMD) ||
@@ -1028,7 +1041,7 @@ void npcx_host_init_subs_host_domain(void)
10281041
(CONFIG_ESPI_PERIPHERAL_HOST_CMD_DATA_PORT_NUM + 4) & 0xff);
10291042
#endif
10301043
/* Enable 'Host Command' io port (PM Channel 2) */
1031-
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, 0x01);
1044+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
10321045

10331046
/* Select 'Shared Memory' bank which LDN are 0x0F */
10341047
host_c2h_write_io_cfg_reg(EC_CFG_IDX_LDN, EC_CFG_LDN_SHM);
@@ -1053,8 +1066,23 @@ void npcx_host_init_subs_host_domain(void)
10531066
host_c2h_write_io_cfg_reg(EC_CFG_IDX_SHM_DP80_ADDR_RANGE, 0x0f);
10541067
}
10551068
/* Enable SHM direct memory access */
1056-
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, 0x01);
1069+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
10571070
}
1071+
1072+
if (IS_ENABLED(CONFIG_ESPI_PERIPHERAL_UART)) {
1073+
/* Select Serial Port banks which LDN are 0x03. */
1074+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_LDN, EC_CFG_LDN_SP);
1075+
/* Enable SIO_CLK */
1076+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_SUPERIO_SIOCF9,
1077+
host_c2h_read_io_cfg_reg(EC_CFG_IDX_SUPERIO_SIOCF9) |
1078+
BIT(EC_CFG_IDX_SUPERIO_SIOCF9_CKEN));
1079+
/* Enable Bank Select */
1080+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_SP_CFG,
1081+
host_c2h_read_io_cfg_reg(EC_CFG_IDX_SP_CFG) |
1082+
BIT(EC_CFG_IDX_SP_CFG_BK_SL_ENABLE));
1083+
host_c2h_write_io_cfg_reg(EC_CFG_IDX_CTRL, EC_CFG_IDX_CTRL_LDN_ENABLE);
1084+
}
1085+
10581086
LOG_DBG("Hos sub-modules configurations are done!");
10591087
}
10601088

0 commit comments

Comments
 (0)