AM243x INDUSTRIAL COMMUNICATIONS SDK  09.02.00
tiescbsp.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef TIESC_BSP_H_
34 #define TIESC_BSP_H_
35 
92 /* ========================================================================== */
93 /* Include Files */
94 /* ========================================================================== */
95 
96 #ifndef DISABLE_UART_PRINT
97 #include <stdio.h>
98 #endif
99 
100 #include <industrial_comms/ethercat_slave/icss_fwhal/tiesc_pruss_intc_mapping.h>
101 #include <drivers/pruicss.h>
102 #include <industrial_comms/ethercat_slave/icss_fwhal/tiesc_def.h>
103 
104 #ifdef __cplusplus
105 extern "C" {
106 #endif
107 
108 /* ========================================================================== */
109 /* Macros & Typedefs */
110 /* ========================================================================== */
111 
112 
117 #define TIESC_MAX_FRAME_SIZE (0x7CF)
118 
119 /*Single datagram accessing contiguous multiple FMMU mapped areas in a single slave for process data
120 is supported now by TI ESC firmware.
121 Process path latency in TI ESC is high when this support is active
122 For specific use cases (4SM with 3 FMMUs or multiple FMMUs (in a given ESC) are not accessed in a single datagram)
123 process path latency improvement can be achieved by disabling below define */
124 #define ENABLE_MULTIPLE_SM_ACCESS_IN_SINGLE_DATAGRAM 0
125 
126 #define MAX_SYNC_MAN 8
127 #define SIZEOF_SM_REGISTER 8
128 
129 #define TIESC_EEPROM_SIZE 0x800
130 
131 #define MAILBOX_WRITE 0
132 #define MAILBOX_READ 1
133 #define PROCESS_DATA_OUT 2
134 #define PROCESS_DATA_IN 3
135 
136 #define MBX_WRITE_EVENT ((uint16_t) 0x0100)
137 #define MBX_READ_EVENT ((uint16_t) 0x0200)
138 
139 //Below constants are not defined in esc.h
140 #define ESC_ADDR_REV_TYPE 0x000
141 #define ESC_ADDR_BUILD 0x002
142 
143 #define ESC_ADDR_CONFIG_STATION_ALIAS 0x012
144 #define ESC_ADDR_DLSTATUS 0x110
145 #define ESC_ADDR_ALCONTROL 0x120
146 #define ESC_ADDR_ALSTATUS 0x130
147 #define ESC_ADDR_PDI_CONTROL 0x140
148 #define ESC_PDI_CONTROL_ELD_ALL_PORTS_MASK (1 << 1)
149 #define ESC_ADDR_PDI_CONFIG 0x150
150 #define ESC_ADDR_AL_EVENT_MASK 0x204
151 #define ESC_ADDR_AL_EVENT_REQ 0x220
152 #define ESC_ADDR_SM_WD_STATUS 0x440
153 #define ESC_ADDR_EEPROM_CTRL 0x502
154 #define ESC_ADDR_MI_ECAT_ACCESS 0x516
155 #define ESC_ADDR_MI_PDI_ACCESS 0x517
156 
157 #define ESC_EEPROM_CMD_MASK 0x0700 //Description (0x502.8:10): Command bit mask
158 #define ESC_EEPROM_CMD_READ_MASK 0x0100 //Description (0x502.8): Currently executed read command
159 #define ESC_EEPROM_CMD_WRITE_MASK 0x0200 //Description (0x502.9): Initialize Write Command
160 #define ESC_EEPROM_CMD_RELOAD_MASK 0x0400 //Description (0x502.10): Trigger EEPROM reload
161 #define ESC_EEPROM_ERROR_MASK 0x7800 //Description : Mask all EEPROM error bits; Checksum error (0x0502.11); EEPROM not loaded (0x0502.12); Missing EEPROM Acknowledge (0x0502.13); Write Error (0x0502.14)
162 #define ESC_EEPROM_ERROR_CRC 0x0800 //Description (0x502.11): EEPROM CRC Error
163 #define ESC_EEPROM_ERROR_CMD_ACK 0x2000 //Description (0x502.13): EEPROM Busy
164 #define ESC_EEPROM_BUSY_MASK 0x8000 //Description (0x502.15): EEPROM Busy
165 
166 #define ESC_ADDR_SYNCMAN 0x800
167 
168 #define ESC_ADDR_SM1_STATUS 0x80D
169 #define SM_STATUS_MBX_FULL 0x08
170 
171 #define ESC_ADDR_SM0_STATUS 0x805
172 #define ESC_ADDR_SM0_ACTIVATE 0x806
173 #define ESC_ADDR_SM1_ACTIVATE 0x806+8
174 #define ESC_ADDR_SM2_ACTIVATE 0x806+8*2
175 #define ESC_ADDR_SM3_ACTIVATE 0x806+8*3
176 #define ESC_ADDR_SM4_ACTIVATE 0x806+8*4
177 #define ESC_ADDR_SM5_ACTIVATE 0x806+8*5
178 #define ESC_ADDR_SM6_ACTIVATE 0x806+8*6
179 #define ESC_ADDR_SM7_ACTIVATE 0x806+8*7
180 #define ESC_ADDR_SM0_PDI_CONTROL 0x807
181 #define ESC_ADDR_SM1_PDI_CONTROL 0x807+8
182 #define ESC_ADDR_SM2_PDI_CONTROL 0x807+8*2
183 #define ESC_ADDR_SM3_PDI_CONTROL 0x807+8*3
184 #define ESC_ADDR_SM4_PDI_CONTROL 0x807+8*4
185 #define ESC_ADDR_SM5_PDI_CONTROL 0x807+8*5
186 #define ESC_ADDR_SM6_PDI_CONTROL 0x807+8*6
187 #define ESC_ADDR_SM7_PDI_CONTROL 0x807+8*7
188 
189 #define SM_PDI_CONTROL_SM_DISABLE 1
190 
191 #define ESC_ADDR_SYSTIME 0x910
192 #define ESC_ADDR_SYSTIME_HIGH 0x914
193 #define ESC_ADDR_SYSTIME_OFFSET 0x920
194 #define ESC_ADDR_SYSTIME_DELAY 0x928
195 #define ESC_ADDR_SPEEDCOUNTER_START 0x930
196 #define ESC_ADDR_TIMEDIFF_FILTDEPTH 0x934
197 #define ESC_ADDR_SPEEDDIFF_FILTDEPTH 0x935
198 #define ESC_ADDR_SYNC_PULSE_LENGTH 0x982
199 #define ESC_ADDR_SYNC_STATUS 0x98E
200 #define ESC_ADDR_LATCH0_CONTROL 0x9A8
201 #define ESC_ADDR_LATCH1_CONTROL 0x9A9
202 #define ESC_ADDR_LATCH0_POS_EDGE 0x9B0
203 #define ESC_ADDR_LATCH0_NEG_EDGE 0x9B8
204 #define ESC_ADDR_LATCH1_POS_EDGE 0x9C0
205 #define ESC_ADDR_LATCH1_NEG_EDGE 0x9C8
206 #define ESC_ADDR_TI_PORT0_ACTIVITY 0xE00
207 #define ESC_ADDR_TI_PORT1_ACTIVITY 0xE04
208 #define ESC_ADDR_TI_PORT0_PHYADDR 0xE08
209 #define ESC_ADDR_TI_PORT1_PHYADDR 0xE09
210 #define ESC_ADDR_TI_PDI_ISR_PINSEL 0xE0A
211 #define ESC_ADDR_TI_PHY_LINK_POLARITY 0XE0C
212 #define ESC_ADDR_TI_PORT0_TX_START_DELAY 0xE10
213 #define ESC_ADDR_TI_PORT1_TX_START_DELAY 0xE12
214 #define ESC_ADDR_TI_ESC_RESET 0xE14
215 #define ESC_ADDR_TI_EDMA_LATENCY_ENHANCEMENT 0xE24
216 #define ESC_ADDR_TI_PHY_RX_ER_REG 0xE28
217 #define ESC_ADDR_TI_PRU_CLK_FREQUENCY 0xE34
218 #define ESC_ADDR_TI_MDIO_MANUAL_MODE 0xE35
219 #define ESC_ADDR_TI_ENHANCED_LINK_DETECT 0xE36
220 #define TI_ESC_RST_CMD_U 0x545352
221 #define TI_ESC_RST_CMD_L 0x747372
222 
223 #define ESC_ADDR_MEMORY 0x1000
224 
225 #define CMD_DL_USER_CLEAR_AL_EVENT_HIGH 0x0
226 #define CMD_DL_USER_GET_BUFFER_READ_ADDR 0x1
227 #define CMD_DL_USER_GET_BUFFER_WRITE_ADDR 0x2
228 #define CMD_DL_USER_SET_BUFFER_WRITE_DONE 0x3
229 
233 #define CMD_DL_USER_ACK_MBX_READ 0x4
234 
238 #define CMD_DL_USER_ACK_MBX_WRITE 0x5
239 
243 #define CMD_DL_USER_EEPROM_CMD_ACK 0x6
244 
248 #define CMD_DL_USER_READ_SYNC_STATUS 0x7
249 #define SYNC0 0
250 #define SYNC1 1
251 
255 #define CMD_DL_USER_READ_AL_CONTROL 0x8
256 
260 #define CMD_DL_USER_WRITE_AL_STATUS 0x9
261 
265 #define CMD_DL_USER_READ_PD_WD_STATUS 0xA
266 
270 #define CMD_DL_USER_READ_SM_ACTIVATE 0xB
271 
275 #define CMD_DL_USER_WRITE_SM_PDI_CTRL 0xC
276 
280 #define CMD_DL_USER_READ_LATCH_TIME 0xD
281 #define LATCH0_POS_EDGE 0
282 #define LATCH0_NEG_EDGE 1
283 #define LATCH1_POS_EDGE 2
284 #define LATCH1_NEG_EDGE 3
285 
290 #define CMD_DL_USER_READ_SYS_TIME 0xE
291 
295 #define CMD_DL_USER_CLEAR_AL_EVENT_LOW 0xF
296 #ifdef SYSTEM_TIME_PDI_CONTROLLED
297 
301 #define CMD_DL_USER_SYSTIME_PDI_CONTROL 0x10
302 #define WRITE_SYSTIME 0
303 #define WRITE_SYSTIME_OFFSET 1
304 #define WRITE_FILTER_CONFIG 2
305 #endif
306 
307 #define SWAPWORD
308 #define SWAPDWORD
309 
310 #define ICSS_MDIO_USRPHYSEL_LINKINT_ENABLE 0x40
311 #define ICSS_MDIO_USRPHYSEL_LINKSTAT_MLINK 0x80
312 
313 #define TIESC_PERM_RW 0x0
314 #define TIESC_PERM_WRITE_ONLY 0x1
315 #define TIESC_PERM_READ_ONLY 0x2
316 
317 #define TIESC_PERM_WRITE TIESC_PERM_WRITE_ONLY
318 #define TIESC_PERM_READ TIESC_PERM_READ_ONLY
319 
320 #define PDI_PERM_RW 0x0
321 #define PDI_PERM_READ_ONLY 0x1
322 
323 #define PDI_PERM_WRITE PDI_PERM_RW
324 #define PDI_PERM_READ PDI_PERM_READ_ONLY
325 
326 #define TIESC_MDIO_CLKDIV 79 //For 2.5MHz MDIO clock: 200/(TIESC_MDIO_CLKDIV+1)
327 
328 /* For EtherCAT, Fast link detection using MLINK mode is required to support complete functionality */
329 #define TIESC_MDIO_RX_LINK_DISABLE 0 //Slow MDIO state m/c based link detection
330 #define TIESC_MDIO_RX_LINK_ENABLE 1 //Fast link detect using RXLINK forward from PHY to MDIO MLINK
331 #define TIESC_LINK_POL_ACTIVE_LOW 1
332 #define TIESC_LINK_POL_ACTIVE_HIGH 0
333 
338 #define PDI_WD_TRIGGER_RX_SOF (0 << 4)
339 
344 #define PDI_WD_TRIGGER_LATCH_IN (1 << 4)
345 
350 #define PDI_WD_TRIGGER_SYNC0_OUT (2 << 4)
351 
356 #define PDI_WD_TRIGGER_SYNC1_OUT (3 << 4)
357 
358 #if ENABLE_MULTIPLE_SM_ACCESS_IN_SINGLE_DATAGRAM
359 #define TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK 0x98
360 #else
361 #define TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK 0x48
362 #endif
363 #define TIESC_PORT1_TX_DELAY_200_MHZ_CLOCK TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK
364 
365 #if ENABLE_MULTIPLE_SM_ACCESS_IN_SINGLE_DATAGRAM
366 #define TIESC_PORT0_TX_DELAY_333_MHZ_CLOCK 0xA0
367 #else
368 #define TIESC_PORT0_TX_DELAY_333_MHZ_CLOCK 0x50
369 #endif
370 #define TIESC_PORT1_TX_DELAY_333_MHZ_CLOCK TIESC_PORT0_TX_DELAY_333_MHZ_CLOCK
371 
372 #define PDI_ISR_EDIO_NUM 7 //GPMC_CSN(2) -> pr1_edio_data_out7 for ICEv2.J4.Pin21
373 
374 /* PDI side register protection using register permission table (4KB) in memory - disable if you care for performance and memory foot print */
375 /* #define ENABLE_PDI_REG_PERMISSIONS */
376 
377 /* Use ESC system time instead of SYS/BIOS Timestamp_get32 for timing info */
378 #define USE_ECAT_TIMER
379 
380 
381 /* Uncomment following to enable DC feature of system time compensation via PDI interface instead of ECAT interface
382  for synchronizing two independent EtherCAT networks */
383 //#define SYSTEM_TIME_PDI_CONTROLLED
384 /*Comment to following to enable PDI ISR and SYNC ISR in HWI context */
385 #define ENABLE_PDI_TASK
386 #define ENABLE_SYNC_TASK
387 
394 /* #define SUPPORT_CMDACK_POLL_MODE */
395 
396 #if defined (__aarch64__)
397 #define ASSERT_DMB() __asm__(" dmb ISH")
398 #define ASSERT_DSB() __asm__(" dsb ISH")
399 #else
400 #define ASSERT_DMB() __asm__ __volatile__ (" dmb" "\n\t": : : "memory")
401 #define ASSERT_DSB() __asm__ __volatile__ (" dsb" "\n\t": : : "memory")
402 #endif
403 
404 #ifdef USE_ECAT_TIMER
405 #define ECAT_TIMER_INC_P_MS 1000000
406 #else
407 #define ECAT_TIMER_INC_P_MS ecat_timer_inc_p_ms /* ARM frequency: Will be detected during bsp_init*/
408 extern volatile uint32_t ecat_timer_inc_p_ms;
409 #endif
410 
411 #define ESC_SYSTEMTIME_OFFSET_OFFSET 0x0920
412 #define ESC_SPEED_COUNTER_START_OFFSET 0x0930
413 #define ESC_DC_START_TIME_CYCLIC_OFFSET 0x0990
414 
415 #define DRIFTCTRL_TASK_SYNC_ZERO_CROSS_ADJUST 0xE0 //PRU_DMEM0
416 
421 #define LOCK_PD_BUF_AVAILABLE_FOR_HOST 0
422 
426 #define LOCK_PD_BUF_HOST_ACCESS_START 1
427 
431 #define LOCK_PD_BUF_HOST_ACCESS_FINISH 2
432 
439 #define LOCK_PD_BUF_CHECK_AVAILABILITY_RETRY_COUNT (10U)
440 
445 #define TIESC_PRUICSS_CLOCK_FREQUENCY_200_MHZ (0)
446 
451 #define TIESC_PRUICSS_CLOCK_FREQUENCY_333_MHZ (1)
452 
457 #define TIESC_MDIO_HW_MODE (0)
458 
463 #define TIESC_MDIO_MANUAL_MODE_FW (1)
464 
465 typedef int32_t (*bsp_eeprom_read_t)(uint8_t *buf, uint32_t len);
466 typedef int32_t (*bsp_eeprom_write_t)(uint8_t *buf, uint32_t len);
467 typedef void (*bsp_init_spinlock_t)(void);
468 typedef uint32_t (*bsp_hwspinlock_lock_t)(int num);
469 typedef void (*bsp_hwspinlock_unlock_t)(int num);
470 typedef void (*bsp_ethphy_init_t)(PRUICSS_Handle pruIcssHandle, uint8_t phy0addr, uint8_t phy1addr, uint8_t enhancedlink_enable);
471 typedef int8_t (*bsp_get_phy_address_t)(uint8_t instance, uint8_t portNumber);
472 typedef void (*bsp_ethercat_stack_isr_function)(void);
473 
474 /* ========================================================================== */
475 /* Structure Declarations */
476 /* ========================================================================== */
477 
481 typedef struct bsp_params_s
482 {
483  PRUICSS_Handle pruicss_handle;
505  uint32_t link0_polarity;
507  uint32_t link1_polarity;
509  uint32_t phy0_address;
511  uint32_t phy1_address;
513  const unsigned char *default_tiesc_eeprom;
524  uint16_t phy_rx_err_reg;
527  uint8_t pruicssClkFreq;
531  uint8_t mdioManualMode;
535 } bsp_params;
536 
540 typedef struct
541 {
542  uint8_t sm_buf_index;
543  uint8_t lock_state;
544  uint16_t addr;
546 
551 typedef struct
552 {
553  uint8_t reserved1[0x90];
554  uint32_t system_time_low;
555  uint32_t system_time_high;
557  uint8_t reserved2[7];
558  uint16_t cmdlow;
559  uint16_t cmdlow_ack;
560  uint16_t param1low;
561  uint16_t param2low;
562  uint16_t resp1low;
563  uint16_t resp2low;
564 #ifndef SYSTEM_TIME_PDI_CONTROLLED
565  uint8_t reserved3[212];
566 #else
567  uint8_t reserved3[24];
568  uint32_t systime_offset_low;
569  uint32_t systime_offset_high;
570  uint8_t reserved4[180];
571 #endif
572  t_sm_processdata sm_processdata[6];
574 
578 typedef struct
579 {
580  uint8_t reserved[1024];
581  uint8_t reg_properties[4096];
583 
584 typedef struct
585 {
587  uint16_t length;
589 
593 typedef struct
594 {
595  uint16_t clkdiv;
596  uint8_t addr0;
597  uint8_t addr1;
598  uint8_t link0pol; /* LINK_MII signal polarity of PHY hooked to PRU-ICSS MII0. 1: Active lLow 0: Active High */
599  uint8_t link1pol; /* LINK_MII signal polarity of PHY hooked to PRU-ICSS MII1. 1: Active lLow 0: Active High */
601 } t_mdio_params;
602 
603 /* ========================================================================== */
604 /* Function Declarations */
605 /* ========================================================================== */
606 
616 void bsp_params_init(bsp_params *init_params);
617 
633 extern int32_t bsp_init(bsp_params *init_params);
634 
661 extern void bsp_esc_reg_perm_init(PRUICSS_Handle
662  pruIcssHandle); //Internal API - invoked by bsp_init
663 
671 extern void bsp_start_esc_isr(PRUICSS_Handle pruIcssHandle);
672 
683 extern void bsp_exit(PRUICSS_Handle pruIcssHandle);
684 
699 extern void bsp_set_pdi_wd_trigger_mode(PRUICSS_Handle pruIcssHandle,
700  uint32_t mode);
742 extern void bsp_send_command_to_firmware(PRUICSS_Handle pruIcssHandle,
743  uint32_t command, uint16_t param1, uint16_t param2);
758 extern void bsp_eeprom_emulation_init(void);
759 
769 extern int32_t bsp_eeprom_load_esc_registers(PRUICSS_Handle pruIcssHandle,
770  int32_t reload_flag);
771 
780 extern int32_t bsp_eeprom_emulation_reload(PRUICSS_Handle pruIcssHandle);
781 
788 extern void bsp_eeprom_emulation_command_ack(PRUICSS_Handle pruIcssHandle);
789 
795 extern void bsp_eeprom_emulation_flush(void);
796 
802 extern void bsp_eeprom_emulation_exit(void);
803 
810 extern uint8_t *bsp_get_eeprom_cache_base(void);
811 
817 
825 
833 extern void bsp_set_eeprom_update_status(uint8_t status);
834 
842 extern uint8_t bsp_get_eeprom_update_status(void);
843 
862 extern void bsp_set_sm_properties(PRUICSS_Handle pruIcssHandle, uint8_t sm,
863  uint16_t address, uint16_t len);
875 
876 extern int16_t bsp_get_sm_index(uint16_t address, uint16_t len);
892 extern uint8_t bsp_pdi_sm_config_ongoing(PRUICSS_Handle pruIcssHandle);
905 extern void bsp_pdi_mbx_read_start(PRUICSS_Handle pruIcssHandle);
906 
912 extern void bsp_pdi_mbx_read_complete(PRUICSS_Handle pruIcssHandle);
913 
920 extern void bsp_pdi_mbx_write_start(PRUICSS_Handle pruIcssHandle);
921 
928 extern void bsp_pdi_mbx_write_complete(PRUICSS_Handle pruIcssHandle);
929 
949 extern uint16_t bsp_get_process_data_address(PRUICSS_Handle pruIcssHandle,
950  uint16_t address, uint16_t len, int16_t *p_sm_index);
951 
963 extern void bsp_process_data_access_complete(PRUICSS_Handle pruIcssHandle,
964  uint16_t address, uint16_t len, int16_t sm_index);
965 
982 extern uint8_t bsp_read_byte(PRUICSS_Handle pruIcssHandle, uint16_t address);
983 
994 extern uint16_t bsp_read_word(PRUICSS_Handle pruIcssHandle, uint16_t address);
995 
1006 extern uint32_t bsp_read_dword(PRUICSS_Handle pruIcssHandle, uint16_t address);
1007 
1017 extern void bsp_read(PRUICSS_Handle pruIcssHandle, uint8_t *pdata,
1018  uint16_t address,
1019  uint16_t len);
1020 
1030 extern uint8_t bsp_read_byte_isr(PRUICSS_Handle pruIcssHandle, uint16_t address);
1031 
1041 extern uint16_t bsp_read_word_isr(PRUICSS_Handle pruIcssHandle,
1042  uint16_t address);
1043 
1053 extern uint32_t bsp_read_dword_isr(PRUICSS_Handle pruIcssHandle,
1054  uint16_t address);
1055 
1072 extern void bsp_pdi_post_read_indication(PRUICSS_Handle pruIcssHandle,
1073  uint16_t address, uint16_t length);
1088 extern void bsp_pdi_write_indication(PRUICSS_Handle pruIcssHandle,
1089  uint16_t address, uint16_t length,
1090  uint16_t value);
1099 extern void bsp_write_byte(PRUICSS_Handle pruIcssHandle, uint8_t val,
1100  uint16_t address);
1101 
1110 extern void bsp_write_word(PRUICSS_Handle pruIcssHandle, uint16_t val,
1111  uint16_t address);
1112 
1121 extern void bsp_write_dword(PRUICSS_Handle pruIcssHandle, uint32_t val,
1122  uint16_t address);
1123 
1133 extern void bsp_write(PRUICSS_Handle pruIcssHandle, uint8_t *pdata,
1134  uint16_t address, uint16_t len);
1135 
1144 extern uint32_t bsp_pruss_mdioreg_read(PRUICSS_Handle pruIcssHandle,
1145  uint32_t regoffset);
1146 
1155 extern void bsp_pruss_mdioreg_write(PRUICSS_Handle pruIcssHandle, uint32_t val,
1156  uint32_t regoffset);
1157 
1166 extern uint32_t bsp_pruss_iepreg_read(PRUICSS_Handle pruIcssHandle,
1167  uint32_t regoffset);
1168 
1177 extern void bsp_pruss_iepreg_write(PRUICSS_Handle pruIcssHandle, uint32_t val,
1178  uint32_t regoffset);
1179 
1187 extern void bsp_pruss_cmd_intfc_write_word(uint16_t val, volatile uint16_t *ptr);
1188 
1196 extern uint16_t bsp_pruss_cmd_intfc_read_word(volatile uint16_t *ptr);
1197 
1207 extern uint8_t bsp_get_pdi_access_perm(uint16_t address, uint8_t access);
1208 
1218 extern uint8_t bsp_pdi_access_perm_word(uint16_t address, uint8_t access);
1219 
1229 extern uint8_t bsp_pdi_access_perm_dword(uint16_t address, uint8_t access);
1230 
1241 extern uint8_t bsp_pdi_access_perm_array(uint16_t address, uint8_t access,
1242  uint16_t size);
1243 
1251 extern void bsp_set_pdi_perm_read_only(uint16_t *perm_array, uint16_t address);
1252 
1260 extern void bsp_set_pdi_perm_read_write(uint16_t *perm_array, uint16_t address);
1261 
1272 extern uint8_t bsp_is_pdi_perm_read_only(uint16_t *perm_array, uint16_t address);
1273 
1281 
1289 
1307 extern int16_t bsp_pruss_mdio_init(PRUICSS_Handle pruIcssHandle,
1308  t_mdio_params *pmdio_params);
1309 
1320 extern int16_t bsp_pruss_mdio_phy_read(PRUICSS_Handle pruIcssHandle,
1321  uint8_t phyaddr, uint8_t regoffset, uint16_t *regval);
1322 
1333 extern int16_t bsp_pruss_mdio_phy_write(PRUICSS_Handle pruIcssHandle,
1334  uint8_t phyaddr, uint8_t regoffset, uint16_t regval);
1335 
1346 extern uint32_t bsp_pruss_mdio_phy_link_state(PRUICSS_Handle pruIcssHandle,
1347  uint8_t phyaddr);
1360 extern void bsp_set_digio_sw_dataout_enable(PRUICSS_Handle pruIcssHandle);
1361 
1368 extern void bsp_set_digio_out(PRUICSS_Handle pruIcssHandle, uint8_t num);
1369 
1376 extern void bsp_clear_digio_out(PRUICSS_Handle pruIcssHandle, uint8_t num);
1377 
1387 extern void bsp_hwspinlock_init(void);
1388 
1395 extern uint32_t bsp_hwspinlock_lock(int num);
1396 
1402 extern void bsp_hwspinlock_unlock(int num);
1403 
1410 #ifdef SYSTEM_TIME_PDI_CONTROLLED
1411 
1418 extern void bsp_pdi_latch0_control(PRUICSS_Handle pruIcssHandle, uint8_t val);
1419 
1427 extern void bsp_pdi_latch1_control(PRUICSS_Handle pruIcssHandle, uint8_t val);
1428 
1435 extern void bsp_pdi_write_system_time(PRUICSS_Handle pruIcssHandle,
1436  uint32_t systime);
1443 extern void bsp_pdi_write_system_timeoffset(PRUICSS_Handle pruIcssHandle,
1444  unsigned long long systime);
1451 extern void bsp_pdi_write_systime_delay(PRUICSS_Handle pruIcssHandle,
1452  uint32_t systime);
1461 extern void bsp_pdi_write_filterconfig(PRUICSS_Handle pruIcssHandle,
1462  uint16_t speedcount_start,
1463  uint8_t speedcount_filtdepth, uint8_t systime_filtdepth);
1464 #endif
1465 
1477 extern uint32_t bsp_get_timer_register(void);
1478 
1483 extern void bsp_clear_timer_register(void);
1490 extern void bsp_get_local_sys_time(uint32_t *systime_low,
1491  uint32_t *systime_high);
1492 
1500 extern void bsp_get_latch0_posedge_time(PRUICSS_Handle pruIcssHandle,
1501  uint32_t *systime_low, uint32_t *systime_high);
1502 
1510 extern void bsp_get_latch0_negedge_time(PRUICSS_Handle pruIcssHandle,
1511  uint32_t *systime_low, uint32_t *systime_high);
1512 
1520 extern void bsp_get_latch1_posedge_time(PRUICSS_Handle pruIcssHandle,
1521  uint32_t *systime_low, uint32_t *systime_high);
1522 
1530 extern void bsp_get_latch1_negedge_time(PRUICSS_Handle pruIcssHandle,
1531  uint32_t *systime_low, uint32_t *systime_high);
1532 
1544 extern void bsp_global_mutex_lock(void);
1545 
1550 extern void bsp_global_mutex_unlock(void);
1560 void Sync0Isr(void *args);
1564 void Sync1Isr(void *args);
1568 void EcatIsr(void *args);
1569 
1570 #ifndef SUPPORT_CMDACK_POLL_MODE
1571 
1574 void EscCmdLowAckIsr(void *args);
1575 #endif
1576 
1593 extern void bsp_set_pru_firmware(uint32_t *frameProc, uint32_t frameProcLen,
1594  uint32_t *hostProc, uint32_t hostProcLen);
1601 #ifdef __cplusplus
1602 }
1603 #endif
1604 
1605 #endif/*TIESC_BSP_H_ */
bsp_set_eeprom_update_status
void bsp_set_eeprom_update_status(uint8_t status)
Indicate to FWHAL whether EEPROM is written for flushing to non-volatile storage. Typically called on...
bsp_params::phy1_address
uint32_t phy1_address
Definition: tiescbsp.h:511
t_sm_processdata::sm_buf_index
uint8_t sm_buf_index
Definition: tiescbsp.h:542
bsp_get_pdi_read_access_fail_cnt
uint32_t bsp_get_pdi_read_access_fail_cnt()
Returns the count of PDI read access failures.
bsp_hwspinlock_lock
uint32_t bsp_hwspinlock_lock(int num)
Acquire selected spinlock instance.
t_host_interface::resp2low
uint16_t resp2low
Definition: tiescbsp.h:563
bsp_pdi_post_read_indication
void bsp_pdi_post_read_indication(PRUICSS_Handle pruIcssHandle, uint16_t address, uint16_t length)
Invoked after reading a register or mailbox buffer from PDI side .
bsp_params::phy_rx_err_reg
uint16_t phy_rx_err_reg
Definition: tiescbsp.h:524
EscCmdLowAckIsr
void EscCmdLowAckIsr(void *args)
ESC CMD Low ACK IRQ Handler.
bsp_eeprom_emulation_exit
void bsp_eeprom_emulation_exit(void)
Call EEPROM flush on exit.
bsp_get_latch0_posedge_time
void bsp_get_latch0_posedge_time(PRUICSS_Handle pruIcssHandle, uint32_t *systime_low, uint32_t *systime_high)
Return latch0 posedge timestamp for application use(nanosec resolution)
bsp_pdi_mbx_write_start
void bsp_pdi_mbx_write_start(PRUICSS_Handle pruIcssHandle)
Indicates to the firmware that PDI side write to read mailbox has started.
bsp_hwspinlock_lock_t
uint32_t(* bsp_hwspinlock_lock_t)(int num)
Definition: tiescbsp.h:468
bsp_global_mutex_lock
void bsp_global_mutex_lock(void)
Critical section enter API using semaphore/mutex/interrupt disable primitives from RTOS....
bsp_pdi_access_perm_dword
uint8_t bsp_pdi_access_perm_dword(uint16_t address, uint8_t access)
Checks if the PDI register [Four bytes] has the requested access permission and returns the result.
bsp_params::eeprom_pointer_for_stack
uint8_t ** eeprom_pointer_for_stack
Definition: tiescbsp.h:515
bsp_eeprom_read_t
int32_t(* bsp_eeprom_read_t)(uint8_t *buf, uint32_t len)
Definition: tiescbsp.h:465
t_host_interface::system_time_low
uint32_t system_time_low
Definition: tiescbsp.h:554
t_host_interface::cmdlow_ack
uint16_t cmdlow_ack
Definition: tiescbsp.h:559
bsp_eeprom_write_t
int32_t(* bsp_eeprom_write_t)(uint8_t *buf, uint32_t len)
Definition: tiescbsp.h:466
t_sm_processdata
Struct for host to PRU-ICSS command interface.
Definition: tiescbsp.h:541
t_mdio_params::addr0
uint8_t addr0
Definition: tiescbsp.h:596
bsp_process_data_access_complete
void bsp_process_data_access_complete(PRUICSS_Handle pruIcssHandle, uint16_t address, uint16_t len, int16_t sm_index)
This API is invoked after PDI side completes read/write to PD address returned by bsp_get_process_dat...
bsp_params::ethphy_init
bsp_ethphy_init_t ethphy_init
Definition: tiescbsp.h:500
bsp_read_word
uint16_t bsp_read_word(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a 16-bit value at 'Address' from ESC memory: SM mailbox (single buffer) mapped or register area.
t_sm_processdata::lock_state
uint8_t lock_state
Definition: tiescbsp.h:543
bsp_get_latch1_posedge_time
void bsp_get_latch1_posedge_time(PRUICSS_Handle pruIcssHandle, uint32_t *systime_low, uint32_t *systime_high)
Return latch1 posedge timestamp for application use(nanosec resolution)
bsp_get_phy_address_t
int8_t(* bsp_get_phy_address_t)(uint8_t instance, uint8_t portNumber)
Definition: tiescbsp.h:471
bsp_hwspinlock_unlock
void bsp_hwspinlock_unlock(int num)
Release selected spinlock instance.
bsp_is_pdi_perm_read_only
uint8_t bsp_is_pdi_perm_read_only(uint16_t *perm_array, uint16_t address)
Checks if the PDI register [byte] has read only access permission and returns the result.
bsp_send_command_to_firmware
void bsp_send_command_to_firmware(PRUICSS_Handle pruIcssHandle, uint32_t command, uint16_t param1, uint16_t param2)
Send command and parameters from stack to firmware to perform some action based on stack state or in ...
bsp_read_byte
uint8_t bsp_read_byte(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a byte value at 'Address' from ESC memory: SM mailbox (single buffer) mapped or register area.
bsp_pdi_write_indication
void bsp_pdi_write_indication(PRUICSS_Handle pruIcssHandle, uint16_t address, uint16_t length, uint16_t value)
Invoked after writing a register or mailbox buffer from PDI side .
t_sm_properties::length
uint16_t length
Definition: tiescbsp.h:587
bsp_params_init
void bsp_params_init(bsp_params *init_params)
Initialize the members of bsp_params with default values.
t_sm_properties
Definition: tiescbsp.h:585
bsp_pruss_iepreg_write
void bsp_pruss_iepreg_write(PRUICSS_Handle pruIcssHandle, uint32_t val, uint32_t regoffset)
Write a 32-bit value from PRU-ICSS IEP register at 'regoffset'.
bsp_pruss_mdioreg_read
uint32_t bsp_pruss_mdioreg_read(PRUICSS_Handle pruIcssHandle, uint32_t regoffset)
Read a 32-bit value from PRU-ICSS MDIO register at 'regoffset'.
bsp_read_dword_isr
uint32_t bsp_read_dword_isr(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a 32-bit value at 'Address' from ESC process data memory: SM buffer (3-buffer) mapped area.
bsp_eeprom_emulation_reload
int32_t bsp_eeprom_emulation_reload(PRUICSS_Handle pruIcssHandle)
Perform reload operation after validating EEPROM CRC.
bsp_set_pdi_wd_trigger_mode
void bsp_set_pdi_wd_trigger_mode(PRUICSS_Handle pruIcssHandle, uint32_t mode)
Configure PDI WD trigger mode, PDI WD is triggered automatically by h/w on RX_SOF(port0/port1),...
bsp_eeprom_emulation_flush
void bsp_eeprom_emulation_flush(void)
Flush the EEPROM cache to non-volatile storage. Write is performed using eeprom_write callback from b...
bsp_read
void bsp_read(PRUICSS_Handle pruIcssHandle, uint8_t *pdata, uint16_t address, uint16_t len)
Read a byte array at 'address' from ESC memory.
bsp_get_process_data_address
uint16_t bsp_get_process_data_address(PRUICSS_Handle pruIcssHandle, uint16_t address, uint16_t len, int16_t *p_sm_index)
Get the actual address of the buffer for PDI side read/write from host in 3-buffer mode.
bsp_read_word_isr
uint16_t bsp_read_word_isr(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a 16-bit value at 'Address' from ESC process data memory: SM buffer (3-buffer) mapped area.
bsp_set_sm_properties
void bsp_set_sm_properties(PRUICSS_Handle pruIcssHandle, uint8_t sm, uint16_t address, uint16_t len)
Set the address, length info from register to FWHAL layer. During INIT to PREOP transition in Mailbox...
t_host_interface::system_time_high
uint32_t system_time_high
Definition: tiescbsp.h:555
bsp_params::pdi_isr
bsp_ethercat_stack_isr_function pdi_isr
Definition: tiescbsp.h:518
bsp_ethercat_stack_isr_function
void(* bsp_ethercat_stack_isr_function)(void)
Definition: tiescbsp.h:472
bsp_pruss_mdio_phy_write
int16_t bsp_pruss_mdio_phy_write(PRUICSS_Handle pruIcssHandle, uint8_t phyaddr, uint8_t regoffset, uint16_t regval)
API to write PHY register via PRU-ICSS MDIO.
bsp_params::spinlock_base_address
uint32_t spinlock_base_address
Definition: tiescbsp.h:497
t_register_properties
Struct for register permission array.
Definition: tiescbsp.h:579
bsp_get_latch1_negedge_time
void bsp_get_latch1_negedge_time(PRUICSS_Handle pruIcssHandle, uint32_t *systime_low, uint32_t *systime_high)
Return latch0 negedge timestamp for application use(nanosec resolution)
bsp_set_pru_firmware
void bsp_set_pru_firmware(uint32_t *frameProc, uint32_t frameProcLen, uint32_t *hostProc, uint32_t hostProcLen)
This function internally sets the location from which PRU firmwares can be loaded.
bsp_pdi_access_perm_word
uint8_t bsp_pdi_access_perm_word(uint16_t address, uint8_t access)
Checks if the PDI register [Two bytes] has the requested access permission and returns the result.
bsp_set_pdi_perm_read_only
void bsp_set_pdi_perm_read_only(uint16_t *perm_array, uint16_t address)
Set the PDI register [byte] access permission to read only.
t_mdio_params::enhancedlink_enable
uint8_t enhancedlink_enable
Definition: tiescbsp.h:600
bsp_set_eeprom_updated_time
void bsp_set_eeprom_updated_time(void)
Set EEPROM update time.
bsp_write_byte
void bsp_write_byte(PRUICSS_Handle pruIcssHandle, uint8_t val, uint16_t address)
Write a byte value at 'address' in ESC memory.
bsp_eeprom_load_esc_registers
int32_t bsp_eeprom_load_esc_registers(PRUICSS_Handle pruIcssHandle, int32_t reload_flag)
For loading ESC registers from EEPROM during first boot/reload after validating CRC.
bsp_esc_reg_perm_init
void bsp_esc_reg_perm_init(PRUICSS_Handle pruIcssHandle)
Sets up register permissions for ECAT side access for TI ESC, if ENABLE_PDI_REG_PERMISSIONS is define...
bsp_write
void bsp_write(PRUICSS_Handle pruIcssHandle, uint8_t *pdata, uint16_t address, uint16_t len)
Write 'len' bytes from pdata to 'address' in ESC memory.
t_mdio_params::addr1
uint8_t addr1
Definition: tiescbsp.h:597
t_host_interface::resp1low
uint16_t resp1low
Definition: tiescbsp.h:562
bsp_write_word
void bsp_write_word(PRUICSS_Handle pruIcssHandle, uint16_t val, uint16_t address)
Write a 16-bit value at 'address' in ESC memory.
bsp_eeprom_emulation_command_ack
void bsp_eeprom_emulation_command_ack(PRUICSS_Handle pruIcssHandle)
Perform reload operation after validating EEPROM CRC, Wrapper API for SSC.
bsp_pruss_mdio_phy_read
int16_t bsp_pruss_mdio_phy_read(PRUICSS_Handle pruIcssHandle, uint8_t phyaddr, uint8_t regoffset, uint16_t *regval)
API to read PHY register via PRU-ICSS MDIO.
t_mdio_params::link1pol
uint8_t link1pol
Definition: tiescbsp.h:599
t_mdio_params
Struct for MDIO initialization parameters.
Definition: tiescbsp.h:594
bsp_hwspinlock_unlock_t
void(* bsp_hwspinlock_unlock_t)(int num)
Definition: tiescbsp.h:469
bsp_set_digio_out
void bsp_set_digio_out(PRUICSS_Handle pruIcssHandle, uint8_t num)
Set selected digital output pin.
bsp_get_pdi_access_perm
uint8_t bsp_get_pdi_access_perm(uint16_t address, uint8_t access)
Checks if the PDI register [byte] has the requested access permission and returns the result.
bsp_global_mutex_unlock
void bsp_global_mutex_unlock(void)
Critical section leave API using semaphore/mutex/interrupt enable primitives from RTOS....
t_host_interface::param2low
uint16_t param2low
Definition: tiescbsp.h:561
bsp_params::interrupt_offset
int32_t interrupt_offset
Definition: tiescbsp.h:485
bsp_exit
void bsp_exit(PRUICSS_Handle pruIcssHandle)
Cleanup of EtherCAT FWHAL It does following things: .
t_host_interface
Struct for host to PRU-ICSS command interface Starts at PRU0 DMEM.
Definition: tiescbsp.h:552
bsp_params::link0_polarity
uint32_t link0_polarity
Definition: tiescbsp.h:505
bsp_init
int32_t bsp_init(bsp_params *init_params)
Initialize the EtherCAT FWHAL It does following things: .
bsp_read_dword
uint32_t bsp_read_dword(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a 32-bit value at 'Address' from ESC memory: SM mailbox (single buffer) mapped or register area.
bsp_start_esc_isr
void bsp_start_esc_isr(PRUICSS_Handle pruIcssHandle)
Register IRQ handlers for various PRU-ICSS interrupts from firmware to host to clear corresponding ev...
bsp_get_timer_register
uint32_t bsp_get_timer_register(void)
Returns the time difference from last call of bsp_clear_timer_register to this bsp_get_timer_register...
bsp_get_eeprom_updated_time
uint32_t bsp_get_eeprom_updated_time(void)
Get EEPROM Updated time.
bsp_params::pruicss_handle
PRUICSS_Handle pruicss_handle
Definition: tiescbsp.h:483
bsp_pruss_cmd_intfc_write_word
void bsp_pruss_cmd_intfc_write_word(uint16_t val, volatile uint16_t *ptr)
Read a 16-bit value from PRU-ICSS IEP command interface.
t_host_interface::param1low
uint16_t param1low
Definition: tiescbsp.h:560
t_mdio_params::link0pol
uint8_t link0pol
Definition: tiescbsp.h:598
bsp_params::pruicssClkFreq
uint8_t pruicssClkFreq
Definition: tiescbsp.h:527
bsp_get_local_sys_time
void bsp_get_local_sys_time(uint32_t *systime_low, uint32_t *systime_high)
Return EtherCAT time base for application use.
bsp_write_dword
void bsp_write_dword(PRUICSS_Handle pruIcssHandle, uint32_t val, uint16_t address)
Write a 32-bit value at 'address' in ESC memory.
bsp_pruss_cmd_intfc_read_word
uint16_t bsp_pruss_cmd_intfc_read_word(volatile uint16_t *ptr)
Read a 16-bit value from PRU-ICSS IEP command interface.
bsp_pruss_iepreg_read
uint32_t bsp_pruss_iepreg_read(PRUICSS_Handle pruIcssHandle, uint32_t regoffset)
Read a 32-bit value from PRU-ICSS IEP register at 'regoffset'.
bsp_eeprom_emulation_init
void bsp_eeprom_emulation_init(void)
Initialize the EEPROM cache in volatile RAM. If the non-volatile storage has valid data(read is perfo...
bsp_pdi_access_perm_array
uint8_t bsp_pdi_access_perm_array(uint16_t address, uint8_t access, uint16_t size)
Checks if all PDI registers starting from 'address' has the requested access permission and returns t...
t_sm_processdata::addr
uint16_t addr
Definition: tiescbsp.h:544
bsp_set_pdi_perm_read_write
void bsp_set_pdi_perm_read_write(uint16_t *perm_array, uint16_t address)
Set the PDI register [byte] access permission to read and write.
bsp_params::phy0_address
uint32_t phy0_address
Definition: tiescbsp.h:509
bsp_params::eeprom_write
bsp_eeprom_write_t eeprom_write
Definition: tiescbsp.h:495
bsp_clear_timer_register
void bsp_clear_timer_register(void)
Update the time when bsp_clear_timer_register last invoked. This is a wrapper API used by SSC.
Sync1Isr
void Sync1Isr(void *args)
SYNC1 IRQ Handler.
bsp_pdi_mbx_read_start
void bsp_pdi_mbx_read_start(PRUICSS_Handle pruIcssHandle)
Indicates to the firmware that PDI side read from write mailbox has started.
t_mdio_params::clkdiv
uint16_t clkdiv
Definition: tiescbsp.h:595
bsp_get_pdi_write_access_fail_cnt
uint32_t bsp_get_pdi_write_access_fail_cnt()
Returns the count of PDI write access failures.
bsp_pdi_mbx_read_complete
void bsp_pdi_mbx_read_complete(PRUICSS_Handle pruIcssHandle)
Indicates to the firmware that PDI side read from write mailbox has completed.
Sync0Isr
void Sync0Isr(void *args)
SYNC0 IRQ handler.
bsp_pruss_mdio_init
int16_t bsp_pruss_mdio_init(PRUICSS_Handle pruIcssHandle, t_mdio_params *pmdio_params)
Initializes PRU-ICSS MDIO for EtherCAT firmware to communicate with PHYs. Must be called after poweri...
bsp_pdi_mbx_write_complete
void bsp_pdi_mbx_write_complete(PRUICSS_Handle pruIcssHandle)
Indicates to the firmware that PDI side write to read mailbox has completed.
bsp_clear_digio_out
void bsp_clear_digio_out(PRUICSS_Handle pruIcssHandle, uint8_t num)
Clear selected digital output pin.
bsp_get_sm_properties
t_sm_properties * bsp_get_sm_properties(uint8_t sm)
Get the pointer to requested SM properties. It is used for Buffer/Mailbox read/write detection from H...
bsp_params::mdioManualMode
uint8_t mdioManualMode
Definition: tiescbsp.h:531
bsp_params::sync1_isr
bsp_ethercat_stack_isr_function sync1_isr
Definition: tiescbsp.h:522
bsp_get_eeprom_update_status
uint8_t bsp_get_eeprom_update_status(void)
Read the EEPROM update status from FWHAL. Typically called from low priority task periodically check ...
t_host_interface::cmdlow
uint16_t cmdlow
Definition: tiescbsp.h:558
bsp_params::enhancedlink_enable
uint8_t enhancedlink_enable
Definition: tiescbsp.h:502
bsp_get_sm_index
int16_t bsp_get_sm_index(uint16_t address, uint16_t len)
bsp_init_spinlock_t
void(* bsp_init_spinlock_t)(void)
Definition: tiescbsp.h:467
bsp_read_byte_isr
uint8_t bsp_read_byte_isr(PRUICSS_Handle pruIcssHandle, uint16_t address)
Read a byte value at 'Address' from ESC process data memory: SM buffer (3-buffer) mapped area.
bsp_set_digio_sw_dataout_enable
void bsp_set_digio_sw_dataout_enable(PRUICSS_Handle pruIcssHandle)
Configure digio for sw controlled dataout mode.
EcatIsr
void EcatIsr(void *args)
ECAT IRQ Handler.
bsp_ethphy_init_t
void(* bsp_ethphy_init_t)(PRUICSS_Handle pruIcssHandle, uint8_t phy0addr, uint8_t phy1addr, uint8_t enhancedlink_enable)
Definition: tiescbsp.h:470
bsp_params
Struct for FWHAL initialization Parameters.
Definition: tiescbsp.h:482
bsp_get_eeprom_cache_base
uint8_t * bsp_get_eeprom_cache_base(void)
Return pointer to volatile EEPROM cache in FWHAL for processing to access the EEPROM.
bsp_pruss_mdioreg_write
void bsp_pruss_mdioreg_write(PRUICSS_Handle pruIcssHandle, uint32_t val, uint32_t regoffset)
Write a 32-bit value from PRU-ICSS MDIO register at 'regoffset'.
bsp_params::link1_polarity
uint32_t link1_polarity
Definition: tiescbsp.h:507
bsp_pdi_sm_config_ongoing
uint8_t bsp_pdi_sm_config_ongoing(PRUICSS_Handle pruIcssHandle)
Checks whether firmware has finished updating internal state for SM configuration change initiated by...
bsp_params::sync0_isr
bsp_ethercat_stack_isr_function sync0_isr
Definition: tiescbsp.h:520
bsp_params::eeprom_read
bsp_eeprom_read_t eeprom_read
Definition: tiescbsp.h:493
t_host_interface::sm_config_ongoing
uint8_t sm_config_ongoing
Definition: tiescbsp.h:556
bsp_pruss_mdio_phy_link_state
uint32_t bsp_pruss_mdio_phy_link_state(PRUICSS_Handle pruIcssHandle, uint8_t phyaddr)
Get the link status for selected PHY, this API considers MII_link signal polarity differences and rec...
t_sm_properties::physical_start_addr
uint16_t physical_start_addr
Definition: tiescbsp.h:586
bsp_params::default_tiesc_eeprom
const unsigned char * default_tiesc_eeprom
Definition: tiescbsp.h:513
bsp_get_latch0_negedge_time
void bsp_get_latch0_negedge_time(PRUICSS_Handle pruIcssHandle, uint32_t *systime_low, uint32_t *systime_high)
Return latch0 negedge timestamp for application use(nanosec resolution)
bsp_hwspinlock_init
void bsp_hwspinlock_init(void)
Initialize SOC spinlock, enable clocks and init spinlock instance 0 through 7 to unlocked state.