AM263Px MCU+ SDK  11.00.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 };
319 
323 typedef struct EnetPhy_GenericInArgs_s
324 {
328 
332 typedef struct EnetPhy_ReadRegInArgs_s
333 {
336 
338  uint16_t reg;
340 
344 typedef struct EnetPhy_WriteRegInArgs_s
345 {
348 
350  uint16_t reg;
351 
353  uint16_t val;
355 
359 typedef struct EnetPhy_C45ReadRegInArgs_s
360 {
363 
365  uint8_t mmd;
366 
368  uint16_t reg;
370 
374 typedef struct EnetPhy_C45WriteRegInArgs_s
375 {
378 
380  uint8_t mmd;
381 
383  uint16_t reg;
384 
386  uint16_t val;
388 
392 typedef struct EnetPhy_PtpPktTimestampInArgs_s
393 {
395  uint32_t domain;
396  uint32_t msgType;
397  uint32_t seqId;
399 
403 typedef struct EnetPhy_AdjPtpFreqInArgs_s
404 {
406  int64_t ppb;
408 
412 typedef struct EnetPhy_AdjPtpPhaseInArgs_s
413 {
415  int64_t offset;
417 
421 typedef struct EnetPhy_SetPtpTimeInArgs_s
422 {
424  uint64_t ts64;
426 
430 typedef struct EnetPhy_ProcStatusFrameInArgs_s
431 {
433  uint8_t *frame;
434  uint32_t size;
436 
440 typedef struct EnetPhy_ProcStatusFrameOutArgs_s
441 {
442  /* combination of any #ENETPHY_STATUS_FRAME_TYPE_x */
443  uint32_t types;
445 
449 typedef struct EnetPhy_GetStatusFrameEthdrOutArgs_s
450 {
451  uint8_t *ethhdr;
452  uint32_t size;
454 
458 typedef struct EnetPhy_EnablePtpInArgs_s
459 {
461  bool on;
462  /* This PHY-specific parameter is used to distinguish status frames
463  * among multiple PHYs connected to the same SoC.
464  * Please check the PHY datasheet for supported value. */
467 
471 typedef struct EnetPhy_EnableEventCaptureInArgs_s
472 {
474  uint32_t eventIdx;
475  bool falling;
476  bool on;
478 
482 typedef struct EnetPhy_EnableTriggerOutputInArgs_s
483 {
485  uint32_t triggerIdx;
486  uint64_t startNsec;
487  uint64_t periodNsec;
488  bool repeat;
490 
494 typedef struct EnetPhy_GetEventTimestampOutArgs_s
495 {
496  uint32_t eventIdx;
497  uint32_t seqId;
498  uint64_t ts64;
500 
501 /* ========================================================================== */
502 /* Global Variables Declarations */
503 /* ========================================================================== */
504 
505 /* None */
506 
507 /* ========================================================================== */
508 /* Function Declarations */
509 /* ========================================================================== */
510 
511 /* None */
512 
513 /* ========================================================================== */
514 /* Deprecated Function Declarations */
515 /* ========================================================================== */
516 
517 /* None */
518 
519 /* ========================================================================== */
520 /* Static Function Definitions */
521 /* ========================================================================== */
522 
523 /* None */
524 
525 #ifdef __cplusplus
526 }
527 #endif
528 
529 #endif /* ENET_MOD_PHY_H_ */
EnetPhy_GenericInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:326
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:350
EnetPhy_GetStatusFrameEthdrOutArgs::ethhdr
uint8_t * ethhdr
Definition: enet_mod_phy.h:451
ENET_PHY_IOCTL_READ_REG
@ ENET_PHY_IOCTL_READ_REG
Read PHY register.
Definition: enet_mod_phy.h:146
EnetPhy_AdjPtpPhaseInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_PHASE command.
Definition: enet_mod_phy.h:413
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:474
EnetPhy_ProcStatusFrameInArgs::size
uint32_t size
Definition: enet_mod_phy.h:434
EnetPhy_ProcStatusFrameInArgs::frame
uint8_t * frame
Definition: enet_mod_phy.h:433
EnetPhy_AdjPtpPhaseInArgs::offset
int64_t offset
Definition: enet_mod_phy.h:415
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:377
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:345
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:465
EnetPhy_C45ReadRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:368
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:386
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:483
EnetPhy_GenericInArgs
Generic input args.
Definition: enet_mod_phy.h:324
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:414
EnetPhy_WriteRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:347
EnetPhy_PtpPktTimestampInArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:397
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:338
EnetPhy_EnableTriggerOutputInArgs::startNsec
uint64_t startNsec
Definition: enet_mod_phy.h:486
EnetPhy_C45ReadRegInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:362
EnetPhy_AdjPtpFreqInArgs
Input args for ENET_PHY_IOCTL_ADJ_PTP_FREQ command.
Definition: enet_mod_phy.h:404
EnetPhy_EnableEventCaptureInArgs::falling
bool falling
Definition: enet_mod_phy.h:475
EnetPhy_C45WriteRegInArgs
Input args for ENET_PHY_IOCTL_C45_WRITE_REG command.
Definition: enet_mod_phy.h:375
EnetPhy_C45ReadRegInArgs
Input args for ENET_PHY_IOCTL_C45_READ_REG command.
Definition: enet_mod_phy.h:360
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:452
EnetPhy_GetEventTimestampOutArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:498
EnetPhy_PtpPktTimestampInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:394
EnetPhy_C45WriteRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:380
EnetPhy_GetEventTimestampOutArgs
Output args for ENET_PHY_IOCTL_GET_EVENT_TIMESTAMP command.
Definition: enet_mod_phy.h:495
EnetPhy_ProcStatusFrameInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:432
EnetPhy_EnableTriggerOutputInArgs::periodNsec
uint64_t periodNsec
Definition: enet_mod_phy.h:487
EnetPhy_AdjPtpFreqInArgs::ppb
int64_t ppb
Definition: enet_mod_phy.h:406
EnetPhy_ProcStatusFrameInArgs
Input args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:431
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:484
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:353
EnetPhy_EnablePtpInArgs::on
bool on
Definition: enet_mod_phy.h:461
EnetPhy_EnableEventCaptureInArgs::on
bool on
Definition: enet_mod_phy.h:476
EnetPhy_SetPtpTimeInArgs::ts64
uint64_t ts64
Definition: enet_mod_phy.h:424
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:335
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:393
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:450
EnetPhy_EnableTriggerOutputInArgs::triggerIdx
uint32_t triggerIdx
Definition: enet_mod_phy.h:485
EnetPhy_ProcStatusFrameOutArgs::types
uint32_t types
Definition: enet_mod_phy.h:443
EnetPhy_EnableEventCaptureInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:473
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:472
EnetPhy_GetEventTimestampOutArgs::seqId
uint32_t seqId
Definition: enet_mod_phy.h:497
EnetPhy_PtpPktTimestampInArgs::msgType
uint32_t msgType
Definition: enet_mod_phy.h:396
EnetPhy_C45ReadRegInArgs::mmd
uint8_t mmd
Definition: enet_mod_phy.h:365
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:333
EnetPhy_EnablePtpInArgs
Input args for ENET_PHY_IOCTL_ENABLE_PTP command.
Definition: enet_mod_phy.h:459
EnetPhy_SetPtpTimeInArgs
Input args for ENET_PHY_IOCTL_SET_PTP_TIME command.
Definition: enet_mod_phy.h:422
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_PtpPktTimestampInArgs::domain
uint32_t domain
Definition: enet_mod_phy.h:395
EnetPhy_ProcStatusFrameOutArgs
Output args for ENET_PHY_IOCTL_PROC_STATUS_FRAME command.
Definition: enet_mod_phy.h:441
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:488
EnetPhy_EnablePtpInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:460
EnetPhy_SetPtpTimeInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_phy.h:423
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_GetEventTimestampOutArgs::eventIdx
uint32_t eventIdx
Definition: enet_mod_phy.h:496
EnetPhy_C45WriteRegInArgs::reg
uint16_t reg
Definition: enet_mod_phy.h:383
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:405
ENET_PHY_IOCTL_PROC_STATUS_FRAME
@ ENET_PHY_IOCTL_PROC_STATUS_FRAME
Process PHY status frame.
Definition: enet_mod_phy.h:272