HPM SDK
HPMicro Software Development Kit
hpm_dp83867.c File Reference
#include "hpm_enet_drv.h"
#include "hpm_dp83867_regs.h"
#include "hpm_dp83867.h"

Functions

static bool dp83867_check_id (ENET_Type *ptr, uint32_t phy_addr)
 
static void dp83867_write_phy_ext (ENET_Type *ptr, uint32_t phy_addr, uint32_t addr, uint32_t data)
 
static uint16_t dp83867_read_phy_ext (ENET_Type *ptr, uint32_t phy_addr, uint32_t addr)
 
bool dp83867_reset (ENET_Type *ptr, uint32_t phy_addr)
 Reset DP83867 PHY chip. More...
 
void dp83867_basic_mode_default_config (ENET_Type *ptr, dp83867_config_t *config)
 Set default configuration for DP83867 PHY basic mode. More...
 
bool dp83867_basic_mode_init (ENET_Type *ptr, uint32_t phy_addr, dp83867_config_t *config)
 Initialize DP83867 PHY chip in basic mode. More...
 
void dp83867_get_phy_status (ENET_Type *ptr, uint32_t phy_addr, enet_phy_status_t *status)
 Get DP83867 PHY status. More...
 
void dp83867_set_mdi_crossover_mode (ENET_Type *ptr, uint32_t phy_addr, enet_phy_crossover_mode_t mode)
 Set MDI crossover mode for DP83867 PHY. More...
 

Function Documentation

◆ dp83867_basic_mode_default_config()

void dp83867_basic_mode_default_config ( ENET_Type ptr,
dp83867_config_t config 
)

Set default configuration for DP83867 PHY basic mode.

Parameters
[in]ptrPointer to the ENET peripheral base address
[out]configPointer to the configuration structure to be initialized

This function initializes the configuration structure with default values:

  • Loopback: disabled
  • Auto-negotiation: enabled (unless __DISABLE_AUTO_NEGO is defined)
  • Speed: 1000 Mbps (when auto-negotiation is disabled)
  • Duplex: full duplex (when auto-negotiation is disabled)

◆ dp83867_basic_mode_init()

bool dp83867_basic_mode_init ( ENET_Type ptr,
uint32_t  phy_addr,
dp83867_config_t config 
)

Initialize DP83867 PHY chip in basic mode.

Parameters
[in]ptrPointer to the ENET peripheral base address
[in]phy_addrPHY address
[in]configPointer to the PHY configuration structure
Return values
trueInitialization completed successfully
falseInitialization failed (PHY ID check failed)

This function performs the following operations:

  • Verifies the PHY ID to ensure it's a DP83867 chip
  • Configures the PHY according to the provided configuration
  • Sets up loopback mode, auto-negotiation, speed, and duplex settings

◆ dp83867_check_id()

static bool dp83867_check_id ( ENET_Type ptr,
uint32_t  phy_addr 
)
static

◆ dp83867_get_phy_status()

void dp83867_get_phy_status ( ENET_Type ptr,
uint32_t  phy_addr,
enet_phy_status_t status 
)

Get DP83867 PHY status.

Parameters
[in]ptrPointer to the ENET peripheral base address
[in]phy_addrPHY address
[out]statusPointer to the status structure to store PHY status

This function reads the PHY status register and extracts:

  • Link status (up/down)
  • Port speed (10 Mbps, 100 Mbps, or 1000 Mbps)
  • Duplex mode (half or full)

◆ dp83867_read_phy_ext()

static uint16_t dp83867_read_phy_ext ( ENET_Type ptr,
uint32_t  phy_addr,
uint32_t  addr 
)
static

◆ dp83867_reset()

bool dp83867_reset ( ENET_Type ptr,
uint32_t  phy_addr 
)

Reset DP83867 PHY chip.

Parameters
[in]ptrPointer to the ENET peripheral base address
[in]phy_addrPHY address
Return values
trueReset operation completed successfully
falseReset operation failed (timeout)

◆ dp83867_set_mdi_crossover_mode()

void dp83867_set_mdi_crossover_mode ( ENET_Type ptr,
uint32_t  phy_addr,
enet_phy_crossover_mode_t  mode 
)

Set MDI crossover mode for DP83867 PHY.

Parameters
[in]ptrPointer to the ENET peripheral base address
[in]phy_addrPHY address
[in]modeCrossover mode: enet_phy_crossover_mode_t

This function configures the MDI/MDIX crossover mode for the PHY. The crossover mode determines how the PHY handles cable connections.

◆ dp83867_write_phy_ext()

static void dp83867_write_phy_ext ( ENET_Type ptr,
uint32_t  phy_addr,
uint32_t  addr,
uint32_t  data 
)
static