AM62x MCU+ SDK  10.01.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>
48 #include <include/core/enet_mod.h>
49 #include <include/phy/enetphy.h>
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 /* ========================================================================== */
56 /* Macros */
57 /* ========================================================================== */
58 
60 #define ENET_PHY_PUBLIC_IOCTL(x) (ENET_IOCTL_TYPE_PUBLIC | \
61  ENET_IOCTL_PHY_BASE | \
62  ENET_IOCTL_MIN(x))
63 
64 /* ========================================================================== */
65 /* Structures and Enums */
66 /* ========================================================================== */
67 
72 {
81 
90 
99 
108 
118 
128 
137 
146 
155 
164 
173 
182 
191 
200 
209 
218 
227 
236 
245 
254 
263 
272 
281 
290 
299 
308 
317 };
318 
322 typedef struct EnetPhy_GenericInArgs_s
323 {
327 
331 typedef struct EnetPhy_ReadRegInArgs_s
332 {
335 
337  uint16_t reg;
339 
343 typedef struct EnetPhy_WriteRegInArgs_s
344 {
347 
349  uint16_t reg;
350 
352  uint16_t val;
354 
358 typedef struct EnetPhy_C45ReadRegInArgs_s
359 {
362 
364  uint8_t mmd;
365 
367  uint16_t reg;
369 
373 typedef struct EnetPhy_C45WriteRegInArgs_s
374 {
377 
379  uint8_t mmd;
380 
382  uint16_t reg;
383 
385  uint16_t val;
387 
391 typedef struct EnetPhy_PtpPktTimestampInArgs_s
392 {
394  uint32_t domain;
395  uint32_t msgType;
396  uint32_t seqId;
398 
402 typedef struct EnetPhy_AdjPtpFreqInArgs_s
403 {
405  int64_t ppb;
407 
411 typedef struct EnetPhy_AdjPtpPhaseInArgs_s
412 {
414  int64_t offset;
416 
420 typedef struct EnetPhy_SetPtpTimeInArgs_s
421 {
423  uint64_t ts64;
425 
429 typedef struct EnetPhy_ProcStatusFrameInArgs_s
430 {
432  uint8_t *frame;
433  uint32_t size;
435 
439 typedef struct EnetPhy_ProcStatusFrameOutArgs_s
440 {
441  /* combination of any #ENETPHY_STATUS_FRAME_TYPE_x */
442  uint32_t types;
444 
448 typedef struct EnetPhy_GetStatusFrameEthdrOutArgs_s
449 {
450  uint8_t *ethhdr;
451  uint32_t size;
453 
457 typedef struct EnetPhy_EnablePtpInArgs_s
458 {
460  bool on;
461  /* This PHY-specific parameter is used to distinguish status frames
462  * among multiple PHYs connected to the same SoC.
463  * Please check the PHY datasheet for supported value. */
466 
470 typedef struct EnetPhy_EnableEventCaptureInArgs_s
471 {
473  uint32_t eventIdx;
474  bool falling;
475  bool on;
477 
481 typedef struct EnetPhy_EnableTriggerOutputInArgs_s
482 {
484  uint32_t triggerIdx;
485  uint64_t startNsec;
486  uint64_t periodNsec;
487  bool repeat;
489 
493 typedef struct EnetPhy_GetEventTimestampOutArgs_s
494 {
495  uint32_t eventIdx;
496  uint32_t seqId;
497  uint64_t ts64;
499 
500 /* ========================================================================== */
501 /* Global Variables Declarations */
502 /* ========================================================================== */
503 
504 /* None */
505 
506 /* ========================================================================== */
507 /* Function Declarations */
508 /* ========================================================================== */
509 
510 /* None */
511 
512 /* ========================================================================== */
513 /* Deprecated Function Declarations */
514 /* ========================================================================== */
515 
516 /* None */
517 
518 /* ========================================================================== */
519 /* Static Function Definitions */
520 /* ========================================================================== */
521 
522 /* None */
523 
524 #ifdef __cplusplus
525 }
526 #endif
527 
528 #endif /* ENET_MOD_PHY_H_ */
EnetPhy_GenericInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:325
EnetPhy_Ioctl_e
EnetPhy_Ioctl_e
PHY IOCTL commands.
Definition: enet_mod_phy.h:72
EnetPhy_WriteRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:349
EnetPhy_GetStatusFrameEthdrOutArgs::ethhdr
uint8_t * ethhdr
Definition: enet_mod_phy.h:450
ENET_PHY_IOCTL_READ_REG
@ ENET_PHY_IOCTL_READ_REG
Read PHY register.
Definition: enet_mod_phy.h:145
EnetPhy_AdjPtpPhaseInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_PHASE command.
Definition: enet_mod_phy.h:412
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:127
EnetPhy_EnableEventCaptureInArgs::eventIdx
uint32_t eventIdx
Definition: enet_mod_phy.h:473
EnetPhy_ProcStatusFrameInArgs::size
uint32_t size
Definition: enet_mod_phy.h:433
EnetPhy_ProcStatusFrameInArgs::frame
uint8_t * frame
Definition: enet_mod_phy.h:432
EnetPhy_AdjPtpPhaseInArgs::offset
int64_t offset
Definition: enet_mod_phy.h:414
ENET_PHY_IOCTL_C45_WRITE_REG
@ ENET_PHY_IOCTL_C45_WRITE_REG
Write PHY register using Clause-45 frame.
Definition: enet_mod_phy.h:190
EnetPhy_C45WriteRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:376
ENET_PHY_IOCTL_GET_ID
@ ENET_PHY_IOCTL_GET_ID
Get PHY identification.
Definition: enet_mod_phy.h:80
EnetPhy_WriteRegInArgs
Input args for ENET_PHY_IOCTL_WRITE_EXT_REG command.
Definition: enet_mod_phy.h:344
ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR
@ ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR
Get PHY status frame header.
Definition: enet_mod_phy.h:280
ENET_PHY_IOCTL_WRITE_REG
@ ENET_PHY_IOCTL_WRITE_REG
Write PHY register.
Definition: enet_mod_phy.h:154
EnetPhy_EnablePtpInArgs::srcMacStatusFrameType
uint32_t srcMacStatusFrameType
Definition: enet_mod_phy.h:464
EnetPhy_C45ReadRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:367
ENET_PHY_IOCTL_RESET
@ ENET_PHY_IOCTL_RESET
Reset PHY.
Definition: enet_mod_phy.h:136
ENET_PHY_IOCTL_READ_EXT_REG
@ ENET_PHY_IOCTL_READ_EXT_REG
Read PHY extended register.
Definition: enet_mod_phy.h:163
EnetPhy_C45WriteRegInArgs::val
uint16_t val
Definition: enet_mod_phy.h:385
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:89
EnetPhy_EnableTriggerOutputInArgs
Input args for ENET_PHY_IOCTL_ENABLE_TRIGGER_OUTPUT command.
Definition: enet_mod_phy.h:482
EnetPhy_GenericInArgs
Generic input args.
Definition: enet_mod_phy.h:323
Enet_MacPort
Enet_MacPort
MAC port.
Definition: enet_types.h:409
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:298
EnetPhy_AdjPtpPhaseInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:413
EnetPhy_WriteRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:346
EnetPhy_PtpPktTimestampInArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:396
EnetPhy_ReadRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:337
EnetPhy_EnableTriggerOutputInArgs::startNsec
uint64_t startNsec
Definition: enet_mod_phy.h:485
EnetPhy_C45ReadRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:361
EnetPhy_AdjPtpFreqInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_FREQ command.
Definition: enet_mod_phy.h:403
EnetPhy_EnableEventCaptureInArgs::falling
bool falling
Definition: enet_mod_phy.h:474
EnetPhy_C45WriteRegInArgs
Input args for ENET_PHY_IOCTL_C45_WRITE_REG command.
Definition: enet_mod_phy.h:374
EnetPhy_C45ReadRegInArgs
Input args for ENET_PHY_IOCTL_C45_READ_REG command.
Definition: enet_mod_phy.h:359
ENET_PHY_IOCTL_GET_PTP_TXTS
@ ENET_PHY_IOCTL_GET_PTP_TXTS
Get PHY PTP TX packet timestamp.
Definition: enet_mod_phy.h:244
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:226
ENET_PHY_IOCTL_WRITE_EXT_REG
@ ENET_PHY_IOCTL_WRITE_EXT_REG
Write PHY extended register.
Definition: enet_mod_phy.h:172
EnetPhy_GetStatusFrameEthdrOutArgs::size
uint32_t size
Definition: enet_mod_phy.h:451
EnetPhy_GetEventTimestampOutArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:497
EnetPhy_PtpPktTimestampInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:393
EnetPhy_C45WriteRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:379
EnetPhy_GetEventTimestampOutArgs
Output args for ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP command.
Definition: enet_mod_phy.h:494
EnetPhy_ProcStatusFrameInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:431
EnetPhy_EnableTriggerOutputInArgs::periodNsec
uint64_t periodNsec
Definition: enet_mod_phy.h:486
EnetPhy_AdjPtpFreqInArgs::ppb
int64_t ppb
Definition: enet_mod_phy.h:405
EnetPhy_ProcStatusFrameInArgs
Input args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:430
ENET_PHY_IOCTL_IS_ALIVE
@ ENET_PHY_IOCTL_IS_ALIVE
Check PHY alive status.
Definition: enet_mod_phy.h:107
EnetPhy_EnableTriggerOutputInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:483
ENET_PHY_IOCTL_ADJ_PTP_PHASE
@ ENET_PHY_IOCTL_ADJ_PTP_PHASE
Adjust PHY PTP clock Phase.
Definition: enet_mod_phy.h:217
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:117
EnetPhy_WriteRegInArgs::val
uint16_t val
Definition: enet_mod_phy.h:352
EnetPhy_EnablePtpInArgs::on
bool on
Definition: enet_mod_phy.h:460
EnetPhy_EnableEventCaptureInArgs::on
bool on
Definition: enet_mod_phy.h:475
EnetPhy_SetPtpTimeInArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:423
ENET_PHY_IOCTL_SET_PTP_TIME
@ ENET_PHY_IOCTL_SET_PTP_TIME
Set PHY PTP clock time.
Definition: enet_mod_phy.h:235
EnetPhy_ReadRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:334
ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP
@ ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP
Get event timestamp.
Definition: enet_mod_phy.h:316
EnetPhy_PtpPktTimestampInArgs
Input args for ENET_PHY_IOCTL_GET_PTP_TXTS command.
Definition: enet_mod_phy.h:392
ENET_PHY_IOCTL_ADJ_PTP_FREQ
@ ENET_PHY_IOCTL_ADJ_PTP_FREQ
Adjust PHY PTP clock Frequency.
Definition: enet_mod_phy.h:208
EnetPhy_GetStatusFrameEthdrOutArgs
Input args for ENET_PHY_IOCTL_GET_STATUS_FRAME_ETHDR command.
Definition: enet_mod_phy.h:449
EnetPhy_EnableTriggerOutputInArgs::triggerIdx
uint32_t triggerIdx
Definition: enet_mod_phy.h:484
EnetPhy_ProcStatusFrameOutArgs::types
uint32_t types
Definition: enet_mod_phy.h:442
EnetPhy_EnableEventCaptureInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:472
ENET_PHY_IOCTL_PRINT_REGS
@ ENET_PHY_IOCTL_PRINT_REGS
Print PHY registers.
Definition: enet_mod_phy.h:199
EnetPhy_EnableEventCaptureInArgs
Input args for ENET_PHY_IOCTL_ENABLE_EVENT_CAPTURE command.
Definition: enet_mod_phy.h:471
EnetPhy_GetEventTimestampOutArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:496
EnetPhy_PtpPktTimestampInArgs::msgType
uint32_t msgType
Definition: enet_mod_phy.h:395
EnetPhy_C45ReadRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:364
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:262
EnetPhy_ReadRegInArgs
Input args for ENET_PHY_IOCTL_READ_EXT_REG command.
Definition: enet_mod_phy.h:332
enet_mod.h
This file contains the type definitions and helper macros for the Enet Module interface.
EnetPhy_EnablePtpInArgs
Input args for ENET_PHY_IOCTL_ENABLE_PTP command.
Definition: enet_mod_phy.h:458
EnetPhy_SetPtpTimeInArgs
Input args for ENET_PHY_IOCTL_SET_PTP_TIME command.
Definition: enet_mod_phy.h:421
ENET_PHY_PUBLIC_IOCTL
#define ENET_PHY_PUBLIC_IOCTL(x)
Helper macro to create PHY IOCTL commands.
Definition: enet_mod_phy.h:60
ENET_PHY_IOCTL_C45_READ_REG
@ ENET_PHY_IOCTL_C45_READ_REG
Read PHY register using Clause-45 frame.
Definition: enet_mod_phy.h:181
EnetPhy_PtpPktTimestampInArgs::domain
uint32_t domain
Definition: enet_mod_phy.h:394
EnetPhy_ProcStatusFrameOutArgs
Output args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:440
ENET_PHY_IOCTL_GET_PTP_RXTS
@ ENET_PHY_IOCTL_GET_PTP_RXTS
Get PHY PTP RX packet timestamp.
Definition: enet_mod_phy.h:253
EnetPhy_EnableTriggerOutputInArgs::repeat
bool repeat
Definition: enet_mod_phy.h:487
EnetPhy_EnablePtpInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:459
EnetPhy_SetPtpTimeInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:422
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:307
EnetPhy_GetEventTimestampOutArgs::eventIdx
uint32_t eventIdx
Definition: enet_mod_phy.h:495
EnetPhy_C45WriteRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:382
ENET_PHY_IOCTL_ENABLE_PTP
@ ENET_PHY_IOCTL_ENABLE_PTP
Enable/Disable PHY PTP module.
Definition: enet_mod_phy.h:289
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:98
EnetPhy_AdjPtpFreqInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:404
ENET_PHY_IOCTL_PROC_STATUS_FRAME
@ ENET_PHY_IOCTL_PROC_STATUS_FRAME
Process PHY status frame.
Definition: enet_mod_phy.h:271