Skip to content

Commit f115402

Browse files
author
Wayne Ren
authored
Merge pull request #109 from IRISZZW/spi_cs_fix
spi cs fix and remove rw009 and esp_slip
2 parents 4ff71fe + 6b35a2d commit f115402

File tree

19 files changed

+128
-3074
lines changed

19 files changed

+128
-3074
lines changed

board/emsdp/drivers/ip/designware/spi/dw_spi_obj.c

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ static void dw_spi_0_isr(void *ptr);
4444

4545
static DEV_SPI dw_spi_0; /*!< designware spi object */
4646
static DW_SPI_CTRL dw_spi_0_ctrl; /*!< designware spi 0 ctrl */
47+
static uint32_t dw_spi_0_cs_status;
4748

4849
static int32_t dw_spi_0_open (uint32_t mode, uint32_t param)
4950
{
@@ -57,7 +58,17 @@ static int32_t dw_spi_0_close (void)
5758

5859
static int32_t dw_spi_0_control (uint32_t ctrl_cmd, void *param)
5960
{
60-
return dw_spi_control(&dw_spi_0, ctrl_cmd, param);
61+
int32_t ercd;
62+
63+
ercd = dw_spi_control(&dw_spi_0, ctrl_cmd, param);
64+
65+
if (ctrl_cmd == SPI_CMD_MST_SEL_DEV) {
66+
dw_spi_0_cs_status = cpu_lock_save();
67+
} else if (ctrl_cmd == SPI_CMD_MST_DSEL_DEV) {
68+
cpu_unlock_restore(dw_spi_0_cs_status);
69+
}
70+
71+
return ercd;
6172
}
6273

6374
static int32_t dw_spi_0_write (const void *data, uint32_t len)
@@ -137,7 +148,7 @@ static void dw_spi_1_isr(void *ptr);
137148

138149
static DEV_SPI dw_spi_1; /*!< designware spi 1 object */
139150
static DW_SPI_CTRL dw_spi_1_ctrl; /*!< designware spi 1 ctrl */
140-
151+
static uint32_t dw_spi_1_cs_status;
141152

142153
static int32_t dw_spi_1_open (uint32_t mode, uint32_t param)
143154
{
@@ -151,7 +162,17 @@ static int32_t dw_spi_1_close (void)
151162

152163
static int32_t dw_spi_1_control (uint32_t ctrl_cmd, void *param)
153164
{
154-
return dw_spi_control(&dw_spi_1, ctrl_cmd, param);
165+
int32_t ercd;
166+
167+
ercd = dw_spi_control(&dw_spi_1, ctrl_cmd, param);
168+
169+
if (ctrl_cmd == SPI_CMD_MST_SEL_DEV) {
170+
dw_spi_1_cs_status = cpu_lock_save();
171+
} else if (ctrl_cmd == SPI_CMD_MST_DSEL_DEV) {
172+
cpu_unlock_restore(dw_spi_1_cs_status);
173+
}
174+
175+
return ercd;
155176
}
156177

157178
static int32_t dw_spi_1_write (const void *data, uint32_t len)

board/emsdp/drivers/pmwifi/pmwifi.c

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545

4646
#include "pmwifi.h"
4747

48-
// #define PMWIFI_CHECK_EXP(EXPR, ERROR_CODE) CHECK_EXP(EXPR, ercd, ERROR_CODE, error_exit)
4948

5049
#if (USE_EMSDP_RSWIFI_0)
5150
/** PMOD WIFI SPI FREQ & CLK MODE SETTINGS */
@@ -58,12 +57,9 @@
5857
#if defined(WIFI_RS9113)
5958
#include "rs9113_adapter.h"
6059

61-
6260
/* WF OPERATIONS */
6361
#define EMSDP_RSWIFI_0_TIMER_ID TIMER_0
6462

65-
#define EMSDP_RSWIFI_0_SPI_CPULOCK_ENABLE
66-
6763
/** install wnic 0 to system */
6864
#define RSWIFI_0_NAME "RS9113"
6965
#define RSWIFI_0_IFNAME0 'r'
@@ -78,7 +74,6 @@ const uint8_t rswifi_0_mac_addr[WNIC_HDR_LEN] = {
7874
EMSDP_RSWIFI_0_MAC_ADDR5
7975
};
8076

81-
8277
static int32_t rswifi_0_wnic_get_info(uint32_t cmd, void *rinfo)
8378
{
8479
return rs9113_wnic_get_info(&rswifi_0_wnic, cmd, rinfo);
@@ -252,32 +247,32 @@ static void rswifi_0_install(void)
252247
rswifi_wnic_on_ops_ptr->on_dev_asserted = NULL;
253248

254249

255-
rswifi_wnic_ptr->wnic_get_info = rswifi_0_wnic_get_info ;
256-
rswifi_wnic_ptr->wnic_control = rswifi_0_wnic_control ;
257-
rswifi_wnic_ptr->wnic_init = rswifi_0_wnic_init ;
258-
rswifi_wnic_ptr->poll_init_status = rswifi_0_poll_init_status ;
259-
rswifi_wnic_ptr->poll_busy_status = rswifi_0_poll_busy_status ;
260-
rswifi_wnic_ptr->set_network_type = rswifi_0_set_network_type ;
261-
rswifi_wnic_ptr->set_macaddr = rswifi_0_set_macaddr ;
262-
rswifi_wnic_ptr->get_macaddr = rswifi_0_get_macaddr ;
263-
rswifi_wnic_ptr->start_scan = rswifi_0_start_scan ;
264-
rswifi_wnic_ptr->stop_scan = rswifi_0_stop_scan ;
265-
rswifi_wnic_ptr->poll_scan_status = rswifi_0_poll_scan_status ;
250+
rswifi_wnic_ptr->wnic_get_info = rswifi_0_wnic_get_info;
251+
rswifi_wnic_ptr->wnic_control = rswifi_0_wnic_control;
252+
rswifi_wnic_ptr->wnic_init = rswifi_0_wnic_init;
253+
rswifi_wnic_ptr->poll_init_status = rswifi_0_poll_init_status;
254+
rswifi_wnic_ptr->poll_busy_status = rswifi_0_poll_busy_status;
255+
rswifi_wnic_ptr->set_network_type = rswifi_0_set_network_type;
256+
rswifi_wnic_ptr->set_macaddr = rswifi_0_set_macaddr;
257+
rswifi_wnic_ptr->get_macaddr = rswifi_0_get_macaddr;
258+
rswifi_wnic_ptr->start_scan = rswifi_0_start_scan;
259+
rswifi_wnic_ptr->stop_scan = rswifi_0_stop_scan;
260+
rswifi_wnic_ptr->poll_scan_status = rswifi_0_poll_scan_status;
266261
rswifi_wnic_ptr->get_scan_result_cnt = rswifi_0_get_scan_result_cnt;
267-
rswifi_wnic_ptr->get_scan_result = rswifi_0_get_scan_result ;
268-
rswifi_wnic_ptr->wnic_connect = rswifi_0_wnic_connect ;
269-
rswifi_wnic_ptr->poll_conn_status = rswifi_0_poll_conn_status ;
270-
rswifi_wnic_ptr->wnic_disconnect = rswifi_0_wnic_disconnect ;
271-
rswifi_wnic_ptr->prepare_tx = rswifi_0_prepare_tx ;
272-
rswifi_wnic_ptr->add_tx_data = rswifi_0_add_tx_data ;
273-
rswifi_wnic_ptr->commit_tx = rswifi_0_commit_tx ;
274-
rswifi_wnic_ptr->prepare_rx = rswifi_0_prepare_rx ;
275-
rswifi_wnic_ptr->get_rx_data = rswifi_0_get_rx_data ;
276-
rswifi_wnic_ptr->accept_rx = rswifi_0_accept_rx ;
277-
rswifi_wnic_ptr->config_power_mode = rswifi_0_config_power_mode;
278-
rswifi_wnic_ptr->poll_power_mode = rswifi_0_poll_power_mode ;
279-
rswifi_wnic_ptr->wnic_reset = rswifi_0_wnic_reset ;
280-
rswifi_wnic_ptr->period_process = rswifi_0_period_process ;
262+
rswifi_wnic_ptr->get_scan_result = rswifi_0_get_scan_result;
263+
rswifi_wnic_ptr->wnic_connect = rswifi_0_wnic_connect;
264+
rswifi_wnic_ptr->poll_conn_status = rswifi_0_poll_conn_status;
265+
rswifi_wnic_ptr->wnic_disconnect = rswifi_0_wnic_disconnect;
266+
rswifi_wnic_ptr->prepare_tx = rswifi_0_prepare_tx;
267+
rswifi_wnic_ptr->add_tx_data = rswifi_0_add_tx_data;
268+
rswifi_wnic_ptr->commit_tx = rswifi_0_commit_tx;
269+
rswifi_wnic_ptr->prepare_rx = rswifi_0_prepare_rx;
270+
rswifi_wnic_ptr->get_rx_data = rswifi_0_get_rx_data;
271+
rswifi_wnic_ptr->accept_rx = rswifi_0_accept_rx;
272+
rswifi_wnic_ptr->config_power_mode = rswifi_0_config_power_mode;
273+
rswifi_wnic_ptr->poll_power_mode = rswifi_0_poll_power_mode;
274+
rswifi_wnic_ptr->wnic_reset = rswifi_0_wnic_reset;
275+
rswifi_wnic_ptr->period_process = rswifi_0_period_process;
281276
}
282277

283278
#else /* WIFI_RSI */

board/emsk/drivers/ip/designware/spi/dw_spi_obj.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ static void dw_spi_0_isr(void *ptr);
7575

7676
DEV_SPI dw_spi_0; /*!< designware spi object */
7777
DW_SPI_CTRL dw_spi_0_ctrl; /*!< designware spi 0 ctrl */
78-
#if HW_VERSION >= 22
79-
static uint32_t spi_mst_cs_ctrl_creg = 0;
78+
#if HW_VERSION < 22
79+
static uint32_t dw_spi_0_cs_status;
8080
#endif
8181

8282
/** designware spi 0 open */
@@ -92,18 +92,22 @@ static int32_t dw_spi_0_close (void)
9292
/** designware spi 0 control */
9393
static int32_t dw_spi_0_control (uint32_t ctrl_cmd, void *param)
9494
{
95-
#if HW_VERSION >= 22
9695
int32_t ercd;
9796
ercd = dw_spi_control(&dw_spi_0, ctrl_cmd, param);
97+
#if HW_VERSION >= 22
9898
if (ctrl_cmd == SPI_CMD_MST_SEL_DEV) {
99-
_arc_write_uncached_32((void *)spi_mst_cs_ctrl_creg, 1 << ((uint32_t)param));
99+
_arc_write_uncached_32((void *)(PERIPHERAL_BASE + REL_REGBASE_SPI_MST_CS_CTRL), 1 << ((uint32_t)param));
100100
} else if (ctrl_cmd == SPI_CMD_MST_DSEL_DEV) {
101-
_arc_write_uncached_32((void *)spi_mst_cs_ctrl_creg, 0);
101+
_arc_write_uncached_32((void *)(PERIPHERAL_BASE + REL_REGBASE_SPI_MST_CS_CTRL), 0);
102102
}
103-
return ercd;
104103
#else
105-
return dw_spi_control(&dw_spi_0, ctrl_cmd, param);
104+
if (ctrl_cmd == SPI_CMD_MST_SEL_DEV) {
105+
dw_spi_0_cs_status = cpu_lock_save();
106+
} else if (ctrl_cmd == SPI_CMD_MST_DSEL_DEV) {
107+
cpu_unlock_restore(dw_spi_0_cs_status);
108+
}
106109
#endif
110+
return ercd;
107111
}
108112
/** designware spi 0 write */
109113
static int32_t dw_spi_0_write (const void *data, uint32_t len)
@@ -134,10 +138,6 @@ static void dw_spi_0_install(void)
134138
*/
135139
spi_abs_base = (uint32_t)PERIPHERAL_BASE + DW_SPI_0_RELBASE;
136140

137-
#if HW_VERSION >= 22
138-
spi_mst_cs_ctrl_creg = spi_abs_base + REL_REGBASE_SPI_MST_CS_CTRL;
139-
#endif
140-
141141
dw_spi_reg_ptr = (DW_SPI_REG *)spi_abs_base;
142142

143143
/** spi info init */

0 commit comments

Comments
 (0)