AM62D FreeRTOS SDK  11.02.00
enet_mod_phy.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 
40 #ifndef ENET_MOD_PHY_H_
41 #define ENET_MOD_PHY_H_
42 
43 /* ========================================================================== */
44 /* Include Files */
45 /* ========================================================================== */
46 
47 #include <stdint.h>
50 #include <include/phy/enetphy.h>
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
56 /* ========================================================================== */
57 /* Macros */
58 /* ========================================================================== */
59 
61 #define ENET_PHY_PUBLIC_IOCTL(x) (ENET_IOCTL_TYPE_PUBLIC | \
62  ENET_IOCTL_PHY_BASE | \
63  ENET_IOCTL_MIN(x))
64 
65 /* ========================================================================== */
66 /* Structures and Enums */
67 /* ========================================================================== */
68 
73 {
82 
91 
100 
109 
119 
129 
138 
147 
156 
165 
174 
183 
192 
201 
210 
219 
228 
237 
246 
255 
264 
273 
282 
291 
300 
309 
318 
329 
338 
347 };
348 
352 typedef struct EnetPhy_GenericInArgs_s
353 {
357 
361 typedef struct EnetPhy_ReadRegInArgs_s
362 {
365 
367  uint16_t reg;
369 
373 typedef struct EnetPhy_WriteRegInArgs_s
374 {
377 
379  uint16_t reg;
380 
382  uint16_t val;
384 
388 typedef struct EnetPhy_C45ReadRegInArgs_s
389 {
392 
394  uint8_t mmd;
395 
397  uint16_t reg;
399 
403 typedef struct EnetPhy_C45WriteRegInArgs_s
404 {
407 
409  uint8_t mmd;
410 
412  uint16_t reg;
413 
415  uint16_t val;
417 
421 typedef struct EnetPhy_PtpPktTimestampInArgs_s
422 {
424  uint32_t domain;
425  uint32_t msgType;
426  uint32_t seqId;
428 
432 typedef struct EnetPhy_AdjPtpFreqInArgs_s
433 {
435  int64_t ppb;
437 
441 typedef struct EnetPhy_AdjPtpPhaseInArgs_s
442 {
444  int64_t offset;
446 
450 typedef struct EnetPhy_SetPtpTimeInArgs_s
451 {
453  uint64_t ts64;
455 
459 typedef struct EnetPhy_ProcStatusFrameInArgs_s
460 {
462  uint8_t *frame;
463  uint32_t size;
465 
469 typedef struct EnetPhy_ProcStatusFrameOutArgs_s
470 {
471  /* combination of any #ENETPHY_STATUS_FRAME_TYPE_x */
472  uint32_t types;
474 
478 typedef struct EnetPhy_GetStatusFrameEthdrOutArgs_s
479 {
480  uint8_t *ethhdr;
481  uint32_t size;
483 
487 typedef struct EnetPhy_EnablePtpInArgs_s
488 {
490  bool on;
491  /* This PHY-specific parameter is used to distinguish status frames
492  * among multiple PHYs connected to the same SoC.
493  * Please check the PHY datasheet for supported value. */
496 
500 typedef struct EnetPhy_EnableEventCaptureInArgs_s
501 {
503  uint32_t eventIdx;
504  bool falling;
505  bool on;
507 
511 typedef struct EnetPhy_EnableTriggerOutputInArgs_s
512 {
514  uint32_t triggerIdx;
515  uint64_t startNsec;
516  uint64_t periodNsec;
517  bool repeat;
519 
523 typedef struct EnetPhy_GetEventTimestampOutArgs_s
524 {
525  uint32_t eventIdx;
526  uint32_t seqId;
527  uint64_t ts64;
532 typedef struct EnetPhy_ConfigMediaClockInArgs_s
533 {
535  bool isMaster;
537  bool enTrigOut;
539 
543 typedef struct EnetPhy_NudgeCodecClockInArgs_s
544 {
546  int8_t nudgeValue;
548 
549 /* ========================================================================== */
550 /* Global Variables Declarations */
551 /* ========================================================================== */
552 
553 /* None */
554 
555 /* ========================================================================== */
556 /* Function Declarations */
557 /* ========================================================================== */
558 
559 /* None */
560 
561 /* ========================================================================== */
562 /* Deprecated Function Declarations */
563 /* ========================================================================== */
564 
565 /* None */
566 
567 /* ========================================================================== */
568 /* Static Function Definitions */
569 /* ========================================================================== */
570 
571 /* None */
572 
573 #ifdef __cplusplus
574 }
575 #endif
576 
577 #endif /* ENET_MOD_PHY_H_ */
EnetPhy_GenericInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:355
ENET_PHY_IOCTL_GET_LINK_STATUS
@ ENET_PHY_IOCTL_GET_LINK_STATUS
Get Phy Link status. This IOTCL will not have longterm support and this functionality will eventually...
Definition: enet_mod_phy.h:328
EnetPhy_Ioctl_e
EnetPhy_Ioctl_e
PHY IOCTL commands.
Definition: enet_mod_phy.h:73
EnetPhy_WriteRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:379
EnetPhy_GetStatusFrameEthdrOutArgs::ethhdr
uint8_t * ethhdr
Definition: enet_mod_phy.h:480
ENET_PHY_IOCTL_READ_REG
@ ENET_PHY_IOCTL_READ_REG
Read PHY register.
Definition: enet_mod_phy.h:146
ENET_PHY_IOCTL_NUDGE_CODEC_CLOCK
@ ENET_PHY_IOCTL_NUDGE_CODEC_CLOCK
Nudge Codec Clock.
Definition: enet_mod_phy.h:346
EnetPhy_AdjPtpPhaseInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_PHASE command.
Definition: enet_mod_phy.h:442
ENET_PHY_IOCTL_GET_LINK_MODE
@ ENET_PHY_IOCTL_GET_LINK_MODE
Get the link speed and duplexity state after the state machine has reached the LINKED state.
Definition: enet_mod_phy.h:128
EnetPhy_EnableEventCaptureInArgs::eventIdx
uint32_t eventIdx
Definition: enet_mod_phy.h:503
EnetPhy_ProcStatusFrameInArgs::size
uint32_t size
Definition: enet_mod_phy.h:463
EnetPhy_NudgeCodecClockInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:545
EnetPhy_ProcStatusFrameInArgs::frame
uint8_t * frame
Definition: enet_mod_phy.h:462
EnetPhy_AdjPtpPhaseInArgs::offset
int64_t offset
Definition: enet_mod_phy.h:444
ENET_PHY_IOCTL_C45_WRITE_REG
@ ENET_PHY_IOCTL_C45_WRITE_REG
Write PHY register using Clause-45 frame.
Definition: enet_mod_phy.h:191
EnetPhy_C45WriteRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:406
ENET_PHY_IOCTL_GET_ID
@ ENET_PHY_IOCTL_GET_ID
Get PHY identification.
Definition: enet_mod_phy.h:81
EnetPhy_WriteRegInArgs
Input args for ENET_PHY_IOCTL_WRITE_EXT_REG command.
Definition: enet_mod_phy.h:374
ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR
@ ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR
Get PHY status frame header.
Definition: enet_mod_phy.h:281
ENET_PHY_IOCTL_WRITE_REG
@ ENET_PHY_IOCTL_WRITE_REG
Write PHY register.
Definition: enet_mod_phy.h:155
EnetPhy_EnablePtpInArgs::srcMacStatusFrameType
uint32_t srcMacStatusFrameType
Definition: enet_mod_phy.h:494
EnetPhy_C45ReadRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:397
ENET_PHY_IOCTL_RESET
@ ENET_PHY_IOCTL_RESET
Reset PHY.
Definition: enet_mod_phy.h:137
ENET_PHY_IOCTL_READ_EXT_REG
@ ENET_PHY_IOCTL_READ_EXT_REG
Read PHY extended register.
Definition: enet_mod_phy.h:164
EnetPhy_C45WriteRegInArgs::val
uint16_t val
Definition: enet_mod_phy.h:415
ENET_PHY_IOCTL_GET_SUPPORTED_MODES
@ ENET_PHY_IOCTL_GET_SUPPORTED_MODES
Get PHY supported modes by local PHY device.
Definition: enet_mod_phy.h:90
enet_types.h
This file contains the basic types using across the Enet driver.
EnetPhy_EnableTriggerOutputInArgs
Input args for ENET_PHY_IOCTL_ENABLE_TRIGGER_OUTPUT command.
Definition: enet_mod_phy.h:512
EnetPhy_GenericInArgs
Generic input args.
Definition: enet_mod_phy.h:353
Enet_MacPort
Enet_MacPort
MAC port.
Definition: enet_types.h:412
ENET_PHY_IOCTL_ENABLE_EVENT_CAPTURE
@ ENET_PHY_IOCTL_ENABLE_EVENT_CAPTURE
Enable/Disable an event capture on a PHY GPIO pin.
Definition: enet_mod_phy.h:299
EnetPhy_AdjPtpPhaseInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:443
EnetPhy_WriteRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:376
EnetPhy_PtpPktTimestampInArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:426
enet_ioctl.h
This file contains the type definitions and helper macros for the Enet IOCTL interface.
EnetPhy_ReadRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:367
EnetPhy_EnableTriggerOutputInArgs::startNsec
uint64_t startNsec
Definition: enet_mod_phy.h:515
EnetPhy_C45ReadRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:391
EnetPhy_NudgeCodecClockInArgs
Input args for ENET_PHY_IOCTL_NUDGE_CODEC_CLOCK command.
Definition: enet_mod_phy.h:544
EnetPhy_AdjPtpFreqInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_FREQ command.
Definition: enet_mod_phy.h:433
EnetPhy_ConfigMediaClockInArgs::enTrigOut
bool enTrigOut
Definition: enet_mod_phy.h:537
EnetPhy_EnableEventCaptureInArgs::falling
bool falling
Definition: enet_mod_phy.h:504
EnetPhy_C45WriteRegInArgs
Input args for ENET_PHY_IOCTL_C45_WRITE_REG command.
Definition: enet_mod_phy.h:404
EnetPhy_ConfigMediaClockInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:534
EnetPhy_C45ReadRegInArgs
Input args for ENET_PHY_IOCTL_C45_READ_REG command.
Definition: enet_mod_phy.h:389
ENET_PHY_IOCTL_GET_PTP_TXTS
@ ENET_PHY_IOCTL_GET_PTP_TXTS
Get PHY PTP TX packet timestamp.
Definition: enet_mod_phy.h:245
enetphy.h
This file contains the type definitions and helper macros for the Ethernet PHY interface.
ENET_PHY_IOCTL_GET_PTP_TIME
@ ENET_PHY_IOCTL_GET_PTP_TIME
Get current PHY PTP clock time.
Definition: enet_mod_phy.h:227
ENET_PHY_IOCTL_WRITE_EXT_REG
@ ENET_PHY_IOCTL_WRITE_EXT_REG
Write PHY extended register.
Definition: enet_mod_phy.h:173
EnetPhy_GetStatusFrameEthdrOutArgs::size
uint32_t size
Definition: enet_mod_phy.h:481
EnetPhy_GetEventTimestampOutArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:527
EnetPhy_PtpPktTimestampInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:423
EnetPhy_C45WriteRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:409
EnetPhy_GetEventTimestampOutArgs
Output args for ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP command.
Definition: enet_mod_phy.h:524
ENET_PHY_IOCTL_CONFIG_MEDIA_CLOCK
@ ENET_PHY_IOCTL_CONFIG_MEDIA_CLOCK
Config Media Clock.
Definition: enet_mod_phy.h:337
EnetPhy_ProcStatusFrameInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:461
EnetPhy_EnableTriggerOutputInArgs::periodNsec
uint64_t periodNsec
Definition: enet_mod_phy.h:516
EnetPhy_AdjPtpFreqInArgs::ppb
int64_t ppb
Definition: enet_mod_phy.h:435
EnetPhy_ProcStatusFrameInArgs
Input args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:460
ENET_PHY_IOCTL_IS_ALIVE
@ ENET_PHY_IOCTL_IS_ALIVE
Check PHY alive status.
Definition: enet_mod_phy.h:108
EnetPhy_EnableTriggerOutputInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:513
ENET_PHY_IOCTL_ADJ_PTP_PHASE
@ ENET_PHY_IOCTL_ADJ_PTP_PHASE
Adjust PHY PTP clock Phase.
Definition: enet_mod_phy.h:218
ENET_PHY_IOCTL_IS_LINKED
@ ENET_PHY_IOCTL_IS_LINKED
Check state-machine link state, that is, whether the state machine has reached the LINKED state.
Definition: enet_mod_phy.h:118
EnetPhy_WriteRegInArgs::val
uint16_t val
Definition: enet_mod_phy.h:382
EnetPhy_EnablePtpInArgs::on
bool on
Definition: enet_mod_phy.h:490
EnetPhy_EnableEventCaptureInArgs::on
bool on
Definition: enet_mod_phy.h:505
EnetPhy_SetPtpTimeInArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:453
ENET_PHY_IOCTL_SET_PTP_TIME
@ ENET_PHY_IOCTL_SET_PTP_TIME
Set PHY PTP clock time.
Definition: enet_mod_phy.h:236
EnetPhy_ReadRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:364
ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP
@ ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP
Get event timestamp.
Definition: enet_mod_phy.h:317
EnetPhy_PtpPktTimestampInArgs
Input args for ENET_PHY_IOCTL_GET_PTP_TXTS command.
Definition: enet_mod_phy.h:422
ENET_PHY_IOCTL_ADJ_PTP_FREQ
@ ENET_PHY_IOCTL_ADJ_PTP_FREQ
Adjust PHY PTP clock Frequency.
Definition: enet_mod_phy.h:209
EnetPhy_GetStatusFrameEthdrOutArgs
Input args for ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR command.
Definition: enet_mod_phy.h:479
EnetPhy_ConfigMediaClockInArgs::isMaster
bool isMaster
Definition: enet_mod_phy.h:535
EnetPhy_EnableTriggerOutputInArgs::triggerIdx
uint32_t triggerIdx
Definition: enet_mod_phy.h:514
EnetPhy_ProcStatusFrameOutArgs::types
uint32_t types
Definition: enet_mod_phy.h:472
EnetPhy_EnableEventCaptureInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:502
ENET_PHY_IOCTL_PRINT_REGS
@ ENET_PHY_IOCTL_PRINT_REGS
Print PHY registers.
Definition: enet_mod_phy.h:200
EnetPhy_EnableEventCaptureInArgs
Input args for ENET_PHY_IOCTL_ENABLE_EVENT_CAPTURE command.
Definition: enet_mod_phy.h:501
EnetPhy_GetEventTimestampOutArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:526
EnetPhy_PtpPktTimestampInArgs::msgType
uint32_t msgType
Definition: enet_mod_phy.h:425
EnetPhy_C45ReadRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:394
ENET_PHY_IOCTL_WAIT_PTP_TXTS
@ ENET_PHY_IOCTL_WAIT_PTP_TXTS
Add PHY PTP TX packet info to a waiting TX timestamp list.
Definition: enet_mod_phy.h:263
EnetPhy_ReadRegInArgs
Input args for ENET_PHY_IOCTL_READ_EXT_REG command.
Definition: enet_mod_phy.h:362
EnetPhy_EnablePtpInArgs
Input args for ENET_PHY_IOCTL_ENABLE_PTP command.
Definition: enet_mod_phy.h:488
EnetPhy_SetPtpTimeInArgs
Input args for ENET_PHY_IOCTL_SET_PTP_TIME command.
Definition: enet_mod_phy.h:451
ENET_PHY_PUBLIC_IOCTL
#define ENET_PHY_PUBLIC_IOCTL(x)
Helper macro to create PHY IOCTL commands.
Definition: enet_mod_phy.h:61
ENET_PHY_IOCTL_C45_READ_REG
@ ENET_PHY_IOCTL_C45_READ_REG
Read PHY register using Clause-45 frame.
Definition: enet_mod_phy.h:182
EnetPhy_ConfigMediaClockInArgs
Input args for ENET_PHY_IOCTL_CONFIG_MEDIA_CLOCK command.
Definition: enet_mod_phy.h:533
EnetPhy_PtpPktTimestampInArgs::domain
uint32_t domain
Definition: enet_mod_phy.h:424
EnetPhy_ProcStatusFrameOutArgs
Output args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:470
ENET_PHY_IOCTL_GET_PTP_RXTS
@ ENET_PHY_IOCTL_GET_PTP_RXTS
Get PHY PTP RX packet timestamp.
Definition: enet_mod_phy.h:254
EnetPhy_EnableTriggerOutputInArgs::repeat
bool repeat
Definition: enet_mod_phy.h:517
EnetPhy_EnablePtpInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:489
EnetPhy_ConfigMediaClockInArgs::streamIDMatchValue
uint8_t * streamIDMatchValue
Definition: enet_mod_phy.h:536
EnetPhy_SetPtpTimeInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:452
ENET_PHY_IOCTL_ENABLE_TRIGGER_OUTPUT
@ ENET_PHY_IOCTL_ENABLE_TRIGGER_OUTPUT
Enable/Disable clock trigger on a GPIO pin.
Definition: enet_mod_phy.h:308
EnetPhy_NudgeCodecClockInArgs::nudgeValue
int8_t nudgeValue
Definition: enet_mod_phy.h:546
EnetPhy_GetEventTimestampOutArgs::eventIdx
uint32_t eventIdx
Definition: enet_mod_phy.h:525
EnetPhy_C45WriteRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:412
ENET_PHY_IOCTL_ENABLE_PTP
@ ENET_PHY_IOCTL_ENABLE_PTP
Enable/Disable PHY PTP module.
Definition: enet_mod_phy.h:290
ENET_PHY_IOCTL_GET_LOOPBACK_STATE
@ ENET_PHY_IOCTL_GET_LOOPBACK_STATE
Check if PHY is in loopback or not.
Definition: enet_mod_phy.h:99
EnetPhy_AdjPtpFreqInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:434
ENET_PHY_IOCTL_PROC_STATUS_FRAME
@ ENET_PHY_IOCTL_PROC_STATUS_FRAME
Process PHY status frame.
Definition: enet_mod_phy.h:272