AM64x MCU+ SDK  08.02.00
cpsw_cpts.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2020
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 
66 #ifndef CPSW_CPTS_H_
67 #define CPSW_CPTS_H_
68 
69 /* ========================================================================== */
70 /* Include Files */
71 /* ========================================================================== */
72 
74 
75 #ifdef __cplusplus
76 extern "C" {
77 #endif
78 
79 /* ========================================================================== */
80 /* Macros */
81 /* ========================================================================== */
82 
84 #define CPSW_CPTS_PUBLIC_IOCTL(x) (ENET_IOCTL_TYPE_PUBLIC | \
85  ENET_IOCTL_TIMESYNC_BASE | \
86  ENET_IOCTL_PER_CPSW | \
87  ENET_IOCTL_MIN(x))
88 
90 #define CPSW_CPTS_NUDGE_MIN_VAL (-128)
91 
93 #define CPSW_CPTS_NUDGE_MAX_VAL (127)
94 
95 /* ========================================================================== */
96 /* Structures and Enums */
97 /* ========================================================================== */
98 
102 typedef enum CpswCpts_Ioctl_s
103 {
112 
121 
130 
139 
151 
160 
169 
178 
187 
196 
205 
214 
224 
228 typedef enum CpswCpts_RftClkFreq_e
229 {
232 
235 
238 
241 
244 
247 
250 
254 
258 typedef enum CpswCpts_EventType_e
259 {
262 
265 
268 
271 
274 
277 
280 
283 
287 
291 typedef enum CpswCpts_OutputBitSel_e
292 {
295 
298 
301 
304 
307 
310 
313 
316 
319 
322 
325 
328 
331 
334 
337 
341 
345 typedef enum CpswCpts_HwPush_e
346 {
349 
352 
355 
358 
361 
364 
367 
370 
373 
376 
380 
382 #define CPSW_CPTS_HWPUSH_COUNT_MAX ((uint32_t)CPSW_CPTS_HWPUSH_LAST)
383 
385 #define CPSW_CPTS_HWPUSH_NORM(x) ((uint32_t)((x) - CPSW_CPTS_HWPUSH_FIRST))
386 
390 typedef struct CpswCpts_Event_s
391 {
393  uint64_t tsVal;
394 
397 
400 
402  uint32_t seqId;
403 
405  uint32_t portNum;
406 
408  uint32_t domain;
409 
413 
421 typedef void (*CpswCpts_EventNotifyCb)(void *eventNotifyCbArg,
422  CpswCpts_Event *eventInfo);
423 
431 typedef void (*CpswCpts_HwPushNotifyCb)(void *hwPushNotifyCbArg,
432  CpswCpts_HwPush hwPushNum);
433 
439 typedef struct CpswCpts_StackConfig_s
440 {
443 
447 
451 typedef struct CpswCpts_RegisterHwPushCbInArgs_s
452 {
455 
458 
462 
466 typedef struct CpswCpts_SetCompValInArgs_s
467 {
469  uint64_t tsCompVal;
470 
472  uint32_t tsCompLen;
473 
479 
484 typedef struct CpswCpts_SetFxnGenInArgs_s
485 {
487  uint32_t index;
488 
490  uint32_t length;
491 
493  uint64_t compare;
494 
499 
501  uint64_t ppmVal;
502 
505 
511 
516 typedef struct CpswCpts_SetFxnGenNudgeInArgs_s
517 {
519  uint32_t index;
520 
523  int32_t tsNudge;
525 
531 typedef struct CpswCpts_Cfg_s
532 {
536 
541 
544 
551 
554 } CpswCpts_Cfg;
555 
556 /* ========================================================================== */
557 /* Global Variables Declarations */
558 /* ========================================================================== */
559 
560 /* None */
561 
562 /* ========================================================================== */
563 /* Function Declarations */
564 /* ========================================================================== */
565 
572 
573 /* ========================================================================== */
574 /* Deprecated Function Declarations */
575 /* ========================================================================== */
576 
577 /* None */
578 
579 /* ========================================================================== */
580 /* Static Function Definitions */
581 /* ========================================================================== */
582 
583 /* None */
584 
585 #ifdef __cplusplus
586 }
587 #endif
588 
589 #endif /* CPSW_CPTS_H_ */
590 
CpswCpts_RegisterStackInArgs
Input args for CPSW_CPTS_IOCTL_REGISTER_STACK command.
Definition: cpsw_cpts.h:440
CpswCpts_SetFxnGenNudgeInArgs::index
uint32_t index
Definition: cpsw_cpts.h:519
CPSW_CPTS_IOCTL_SET_GENF_NUDGE
@ CPSW_CPTS_IOCTL_SET_GENF_NUDGE
CPTS set GenFn stamp nudge.
Definition: cpsw_cpts.h:186
CPSW_CPTS_HWPUSH_5
@ CPSW_CPTS_HWPUSH_5
Definition: cpsw_cpts.h:363
CpswCpts_Cfg::tsCompPolarity
bool tsCompPolarity
Definition: cpsw_cpts.h:540
CPSW_CPTS_IOCTL_SET_GENF
@ CPSW_CPTS_IOCTL_SET_GENF
CPTS set function generator.
Definition: cpsw_cpts.h:177
CpswCpts_RegisterStackInArgs::eventNotifyCbArg
void * eventNotifyCbArg
Definition: cpsw_cpts.h:445
CPSW_CPTS_IOCTL_UNREGISTER_STACK
@ CPSW_CPTS_IOCTL_UNREGISTER_STACK
CPTS unregister stack.
Definition: cpsw_cpts.h:120
CPSW_CPTS_RFTCLK_FREQ_125MHZ
@ CPSW_CPTS_RFTCLK_FREQ_125MHZ
Definition: cpsw_cpts.h:252
CpswCpts_Cfg::tsRxEventsDis
bool tsRxEventsDis
Definition: cpsw_cpts.h:543
CPSW_CPTS_EVENTTYPE_ETH_RECEIVE
@ CPSW_CPTS_EVENTTYPE_ETH_RECEIVE
Definition: cpsw_cpts.h:273
CPSW_CPTS_EVENTTYPE_TS_ROLLOVER
@ CPSW_CPTS_EVENTTYPE_TS_ROLLOVER
Definition: cpsw_cpts.h:264
CPSW_CPTS_HWPUSH_INVALID
@ CPSW_CPTS_HWPUSH_INVALID
Definition: cpsw_cpts.h:378
CpswCpts_SetCompValInArgs
Input args for CPSW_CPTS_IOCTL_SET_COMP command.
Definition: cpsw_cpts.h:467
CpswCpts_EventNotifyCb
void(* CpswCpts_EventNotifyCb)(void *eventNotifyCbArg, CpswCpts_Event *eventInfo)
CPTS event notify callback.
Definition: cpsw_cpts.h:421
CPSW_CPTS_TS_OUTPUT_BIT_29
@ CPSW_CPTS_TS_OUTPUT_BIT_29
Definition: cpsw_cpts.h:333
CPSW_CPTS_HWPUSH_FIRST
@ CPSW_CPTS_HWPUSH_FIRST
Definition: cpsw_cpts.h:348
CpswCpts_SetFxnGenInArgs::ppmVal
uint64_t ppmVal
Definition: cpsw_cpts.h:501
CPSW_CPTS_EVENTTYPE_INVALID
@ CPSW_CPTS_EVENTTYPE_INVALID
Definition: cpsw_cpts.h:285
CPSW_CPTS_TS_OUTPUT_BIT_23
@ CPSW_CPTS_TS_OUTPUT_BIT_23
Definition: cpsw_cpts.h:315
CPSW_CPTS_RFTCLK_FREQ_1000MHZ
@ CPSW_CPTS_RFTCLK_FREQ_1000MHZ
Definition: cpsw_cpts.h:231
CpswCpts_RegisterHwPushCbInArgs::hwPushNum
CpswCpts_HwPush hwPushNum
Definition: cpsw_cpts.h:454
CpswCpts_SetFxnGenInArgs::polarityInv
bool polarityInv
Definition: cpsw_cpts.h:498
CpswCpts_SetFxnGenNudgeInArgs::tsNudge
int32_t tsNudge
Definition: cpsw_cpts.h:523
CPSW_CPTS_IOCTL_REGISTER_HWPUSH_CALLBACK
@ CPSW_CPTS_IOCTL_REGISTER_HWPUSH_CALLBACK
CPTS register hardware push event callback.
Definition: cpsw_cpts.h:129
CpswCpts_Event::msgType
EnetTimeSync_MsgType msgType
Definition: cpsw_cpts.h:399
CPSW_CPTS_TS_OUTPUT_BIT_28
@ CPSW_CPTS_TS_OUTPUT_BIT_28
Definition: cpsw_cpts.h:330
CPSW_CPTS_TS_OUTPUT_BIT_17
@ CPSW_CPTS_TS_OUTPUT_BIT_17
Definition: cpsw_cpts.h:297
CPSW_CPTS_HWPUSH_1
@ CPSW_CPTS_HWPUSH_1
Definition: cpsw_cpts.h:351
CPSW_CPTS_RFTCLK_FREQ_200MHZ
@ CPSW_CPTS_RFTCLK_FREQ_200MHZ
Definition: cpsw_cpts.h:243
CPSW_CPTS_EVENTTYPE_TS_PUSH
@ CPSW_CPTS_EVENTTYPE_TS_PUSH
Definition: cpsw_cpts.h:261
CPSW_CPTS_EVENTTYPE_TS_HOST_TX
@ CPSW_CPTS_EVENTTYPE_TS_HOST_TX
Definition: cpsw_cpts.h:282
CPSW_CPTS_IOCTL_SET_ESTF_NUDGE
@ CPSW_CPTS_IOCTL_SET_ESTF_NUDGE
CPTS set ESTFn stamp nudge.
Definition: cpsw_cpts.h:204
CpswCpts_RegisterHwPushCbInArgs::hwPushNotifyCb
CpswCpts_HwPushNotifyCb hwPushNotifyCb
Definition: cpsw_cpts.h:457
CPSW_CPTS_HWPUSH_LAST
@ CPSW_CPTS_HWPUSH_LAST
Definition: cpsw_cpts.h:375
CPSW_CPTS_TS_OUTPUT_BIT_25
@ CPSW_CPTS_TS_OUTPUT_BIT_25
Definition: cpsw_cpts.h:321
CpswCpts_OutputBitSel
CpswCpts_OutputBitSel
CPTS time stamp output bit.
Definition: cpsw_cpts.h:292
CPSW_CPTS_HWPUSH_3
@ CPSW_CPTS_HWPUSH_3
Definition: cpsw_cpts.h:357
CPSW_CPTS_TS_OUTPUT_BIT_26
@ CPSW_CPTS_TS_OUTPUT_BIT_26
Definition: cpsw_cpts.h:324
CPSW_CPTS_IOCTL_SET_ESTF
@ CPSW_CPTS_IOCTL_SET_ESTF
CPTS set EST function generator.
Definition: cpsw_cpts.h:195
CpswCpts_SetFxnGenInArgs::length
uint32_t length
Definition: cpsw_cpts.h:490
CPSW_CPTS_IOCTL_REGISTER_STACK
@ CPSW_CPTS_IOCTL_REGISTER_STACK
CPTS register stack.
Definition: cpsw_cpts.h:111
CPSW_CPTS_HWPUSH_2
@ CPSW_CPTS_HWPUSH_2
Definition: cpsw_cpts.h:354
CpswCpts_Cfg::hostRxTsEn
bool hostRxTsEn
Definition: cpsw_cpts.h:535
CpswCpts_SetFxnGenInArgs
Input args for CPSW_CPTS_IOCTL_SET_GENF and CPSW_CPTS_IOCTL_SET_ESTF commands.
Definition: cpsw_cpts.h:485
CpswCpts_Cfg
CPTS configuration.
Definition: cpsw_cpts.h:532
CpswCpts_RegisterHwPushCbInArgs::hwPushNotifyCbArg
void * hwPushNotifyCbArg
Definition: cpsw_cpts.h:460
CpswCpts_Event::tsVal
uint64_t tsVal
Definition: cpsw_cpts.h:393
CPSW_CPTS_IOCTL_UNREGISTER_HWPUSH_CALLBACK
@ CPSW_CPTS_IOCTL_UNREGISTER_HWPUSH_CALLBACK
CPTS unregister hardware push event callback.
Definition: cpsw_cpts.h:138
CPSW_CPTS_TS_OUTPUT_BIT_30
@ CPSW_CPTS_TS_OUTPUT_BIT_30
Definition: cpsw_cpts.h:336
CpswCpts_RegisterStackInArgs::eventNotifyCb
CpswCpts_EventNotifyCb eventNotifyCb
Definition: cpsw_cpts.h:442
CPSW_CPTS_EVENTTYPE_TS_HALFROLLOVER
@ CPSW_CPTS_EVENTTYPE_TS_HALFROLLOVER
Definition: cpsw_cpts.h:267
CPSW_CPTS_PUBLIC_IOCTL
#define CPSW_CPTS_PUBLIC_IOCTL(x)
Helper macro to create IOCTL commands for CPSW CPTS module.
Definition: cpsw_cpts.h:84
CpswCpts_SetCompValInArgs::tsCompVal
uint64_t tsCompVal
Definition: cpsw_cpts.h:469
CpswCpts_Event::hwPushNum
CpswCpts_HwPush hwPushNum
Definition: cpsw_cpts.h:411
CpswCpts_HwPush
CpswCpts_HwPush
CPTS Hardware push instances.
Definition: cpsw_cpts.h:346
CpswCpts_SetFxnGenInArgs::index
uint32_t index
Definition: cpsw_cpts.h:487
CPSW_CPTS_IOCTL_SET_COMP
@ CPSW_CPTS_IOCTL_SET_COMP
CPTS set compare value.
Definition: cpsw_cpts.h:159
CPSW_CPTS_TS_OUTPUT_BIT_24
@ CPSW_CPTS_TS_OUTPUT_BIT_24
Definition: cpsw_cpts.h:318
CpswCpts_Event::portNum
uint32_t portNum
Definition: cpsw_cpts.h:405
CpswCpts_initCfg
void CpswCpts_initCfg(CpswCpts_Cfg *cptsCfg)
Initialize CPSW CPTS configuration parameters.
CpswCpts_Ioctl
CpswCpts_Ioctl
CPSW CPTS IOCTL commands.
Definition: cpsw_cpts.h:103
CPSW_CPTS_HWPUSH_7
@ CPSW_CPTS_HWPUSH_7
Definition: cpsw_cpts.h:369
CPSW_CPTS_EVENTTYPE_HW_TS_PUSH
@ CPSW_CPTS_EVENTTYPE_HW_TS_PUSH
Definition: cpsw_cpts.h:270
CPSW_CPTS_TS_OUTPUT_BIT_DISABLED
@ CPSW_CPTS_TS_OUTPUT_BIT_DISABLED
Definition: cpsw_cpts.h:294
CPSW_CPTS_HWPUSH_8
@ CPSW_CPTS_HWPUSH_8
Definition: cpsw_cpts.h:372
CPSW_CPTS_HWPUSH_4
@ CPSW_CPTS_HWPUSH_4
Definition: cpsw_cpts.h:360
CpswCpts_RegisterHwPushCbInArgs
Input args for CPSW_CPTS_IOCTL_REGISTER_HWPUSH_CALLBACK command.
Definition: cpsw_cpts.h:452
CPSW_CPTS_TS_OUTPUT_BIT_22
@ CPSW_CPTS_TS_OUTPUT_BIT_22
Definition: cpsw_cpts.h:312
CPSW_CPTS_TS_OUTPUT_BIT_31
@ CPSW_CPTS_TS_OUTPUT_BIT_31
Definition: cpsw_cpts.h:339
CPSW_CPTS_RFTCLK_FREQ_500MHZ
@ CPSW_CPTS_RFTCLK_FREQ_500MHZ
Definition: cpsw_cpts.h:234
CPSW_CPTS_TS_OUTPUT_BIT_20
@ CPSW_CPTS_TS_OUTPUT_BIT_20
Definition: cpsw_cpts.h:306
CPSW_CPTS_IOCTL_LOOKUP_EVENT
@ CPSW_CPTS_IOCTL_LOOKUP_EVENT
CPTS lookup event.
Definition: cpsw_cpts.h:222
EnetTimeSync_AdjMode
EnetTimeSync_AdjMode
TimeSync adjustment mode.
Definition: enet_mod_timesync.h:205
CPSW_CPTS_RFTCLK_FREQ_250MHZ
@ CPSW_CPTS_RFTCLK_FREQ_250MHZ
Definition: cpsw_cpts.h:240
CPSW_CPTS_TS_OUTPUT_BIT_21
@ CPSW_CPTS_TS_OUTPUT_BIT_21
Definition: cpsw_cpts.h:309
CpswCpts_SetFxnGenInArgs::ppmDir
EnetTimeSync_AdjDir ppmDir
Definition: cpsw_cpts.h:504
CpswCpts_SetFxnGenInArgs::compare
uint64_t compare
Definition: cpsw_cpts.h:493
CPSW_CPTS_HWPUSH_6
@ CPSW_CPTS_HWPUSH_6
Definition: cpsw_cpts.h:366
enet_mod_timesync.h
This file contains the type definitions and helper macros for the Enet Time Synchronization module in...
CPSW_CPTS_EVENTTYPE_ETH_TRANSMIT
@ CPSW_CPTS_EVENTTYPE_ETH_TRANSMIT
Definition: cpsw_cpts.h:276
CpswCpts_EventType
CpswCpts_EventType
CPTS event type.
Definition: cpsw_cpts.h:259
CpswCpts_Event::eventType
CpswCpts_EventType eventType
Definition: cpsw_cpts.h:396
CPSW_CPTS_EVENTTYPE_TS_COMP
@ CPSW_CPTS_EVENTTYPE_TS_COMP
Definition: cpsw_cpts.h:279
CpswCpts_Event::domain
uint32_t domain
Definition: cpsw_cpts.h:408
CpswCpts_SetFxnGenNudgeInArgs
Input args for CPSW_CPTS_IOCTL_SET_GENF_NUDGE and CPSW_CPTS_IOCTL_SET_ESTF_NUDGE commands.
Definition: cpsw_cpts.h:517
EnetTimeSync_AdjDir
EnetTimeSync_AdjDir
TimeSync adjustment direction.
Definition: enet_mod_timesync.h:220
CPSW_CPTS_RFTCLK_FREQ_333_33MHZ
@ CPSW_CPTS_RFTCLK_FREQ_333_33MHZ
Definition: cpsw_cpts.h:237
CpswCpts_HwPushNotifyCb
void(* CpswCpts_HwPushNotifyCb)(void *hwPushNotifyCbArg, CpswCpts_HwPush hwPushNum)
CPTS hardware push notify callback/.
Definition: cpsw_cpts.h:431
CPSW_CPTS_TS_OUTPUT_BIT_18
@ CPSW_CPTS_TS_OUTPUT_BIT_18
Definition: cpsw_cpts.h:300
CPSW_CPTS_IOCTL_SET_COMP_NUDGE
@ CPSW_CPTS_IOCTL_SET_COMP_NUDGE
CPTS set compare nudge.
Definition: cpsw_cpts.h:168
CPSW_CPTS_TS_OUTPUT_BIT_19
@ CPSW_CPTS_TS_OUTPUT_BIT_19
Definition: cpsw_cpts.h:303
CPSW_CPTS_IOCTL_SELECT_TS_OUTPUT_BIT
@ CPSW_CPTS_IOCTL_SELECT_TS_OUTPUT_BIT
CPTS TS output bit select.
Definition: cpsw_cpts.h:213
CPSW_CPTS_RFTCLK_FREQ_142_85MHZ
@ CPSW_CPTS_RFTCLK_FREQ_142_85MHZ
Definition: cpsw_cpts.h:249
EnetTimeSync_MsgType
EnetTimeSync_MsgType
TimeSync Ethernet message type.
Definition: enet_mod_timesync.h:166
CpswCpts_SetCompValInArgs::tsCompToggle
bool tsCompToggle
Definition: cpsw_cpts.h:477
CpswCpts_RftClkFreq
CpswCpts_RftClkFreq
CPTS clock frequency add value.
Definition: cpsw_cpts.h:229
CPSW_CPTS_RFTCLK_FREQ_166_66MHZ
@ CPSW_CPTS_RFTCLK_FREQ_166_66MHZ
Definition: cpsw_cpts.h:246
CpswCpts_Cfg::cptsRftClkFreq
CpswCpts_RftClkFreq cptsRftClkFreq
Definition: cpsw_cpts.h:553
CpswCpts_SetCompValInArgs::tsCompLen
uint32_t tsCompLen
Definition: cpsw_cpts.h:472
CPSW_CPTS_TS_OUTPUT_BIT_27
@ CPSW_CPTS_TS_OUTPUT_BIT_27
Definition: cpsw_cpts.h:327
CpswCpts_Event
CPTS event.
Definition: cpsw_cpts.h:391
CpswCpts_Cfg::tsGenfClrEn
bool tsGenfClrEn
Definition: cpsw_cpts.h:550
CpswCpts_SetFxnGenInArgs::ppmMode
EnetTimeSync_AdjMode ppmMode
Definition: cpsw_cpts.h:509
CPSW_CPTS_IOCTL_SET_TS_NUDGE
@ CPSW_CPTS_IOCTL_SET_TS_NUDGE
CPTS set timestamp nudge.
Definition: cpsw_cpts.h:150
CpswCpts_Event::seqId
uint32_t seqId
Definition: cpsw_cpts.h:402