126 lines
3.8 KiB
C
126 lines
3.8 KiB
C
/*
|
|
* Copyright 2020 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
#ifndef _FSL_MDIO_H_
|
|
#define _FSL_MDIO_H_
|
|
|
|
#include "fsl_common.h"
|
|
|
|
/*******************************************************************************
|
|
* Definitions
|
|
******************************************************************************/
|
|
|
|
/*! @brief Defines the timeout macro. */
|
|
#if defined(MDIO_TIMEOUT_COUNT_NUMBER) && MDIO_TIMEOUT_COUNT_NUMBER
|
|
#define MDIO_TIMEOUT_COUNT MDIO_TIMEOUT_COUNT_NUMBER
|
|
#endif
|
|
|
|
/*! @brief Defines the PHY status. */
|
|
enum _mdio_status
|
|
{
|
|
kStatus_PHY_SMIVisitTimeout = MAKE_STATUS(kStatusGroup_PHY, 0), /*!< ENET PHY SMI visit timeout. */
|
|
};
|
|
|
|
typedef struct _mdio_operations mdio_operations_t;
|
|
|
|
/*! @brief MDIO resource. */
|
|
typedef struct _mdio_resource
|
|
{
|
|
void *base; /*!< ENET Ip register base. */
|
|
uint32_t csrClock_Hz; /*!< ENET CSR clock. */
|
|
} mdio_resource_t;
|
|
|
|
/*! @brief MDIO handle. */
|
|
typedef struct _mdio_handle
|
|
{
|
|
mdio_resource_t resource;
|
|
const mdio_operations_t *ops;
|
|
} mdio_handle_t;
|
|
|
|
/*! @brief Camera receiver operations. */
|
|
struct _mdio_operations
|
|
{
|
|
void (*mdioInit)(mdio_handle_t *handle); /*!< MDIO interface init. */
|
|
status_t (*mdioWrite)(mdio_handle_t *handle,
|
|
uint32_t phyAddr,
|
|
uint32_t devAddr,
|
|
uint32_t data); /*!< MDIO write data. */
|
|
status_t (*mdioRead)(mdio_handle_t *handle,
|
|
uint32_t phyAddr,
|
|
uint32_t devAddr,
|
|
uint32_t *dataPtr); /*!< MDIO read data. */
|
|
status_t (*mdioWriteExt)(mdio_handle_t *handle,
|
|
uint32_t phyAddr,
|
|
uint32_t devAddr,
|
|
uint32_t data); /*!< MDIO write data. */
|
|
status_t (*mdioReadExt)(mdio_handle_t *handle,
|
|
uint32_t phyAddr,
|
|
uint32_t devAddr,
|
|
uint32_t *dataPtr); /*!< MDIO read data. */
|
|
};
|
|
|
|
/*******************************************************************************
|
|
* API
|
|
******************************************************************************/
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
/*!
|
|
* @name MDIO Driver
|
|
* @{
|
|
*/
|
|
|
|
/*!
|
|
* @brief MDIO Write function. This function write data over the SMI to
|
|
* the specified MDIO register. This function is called by all MDIO interfaces.
|
|
*
|
|
* @param handle MDIO device handle.
|
|
* @retval kStatus_Success MDIO write success
|
|
* @retval kStatus_MDIO_SMIVisitTimeout MDIO SMI visit time out
|
|
*/
|
|
static inline void MDIO_Init(mdio_handle_t *handle) {
|
|
handle->ops->mdioInit(handle);
|
|
}
|
|
|
|
/*!
|
|
* @brief MDIO Write function. This function write data over the SMI to
|
|
* the specified MDIO register. This function is called by all MDIO interfaces.
|
|
*
|
|
* @param handle MDIO device handle.
|
|
* @param phyAddr MDIO PHY address handle.
|
|
* @param devAddr The PHY device register.
|
|
* @param data The data written to the MDIO register.
|
|
* @retval kStatus_Success MDIO write success
|
|
* @retval kStatus_MDIO_SMIVisitTimeout MDIO SMI visit time out
|
|
*/
|
|
static inline status_t MDIO_Write(mdio_handle_t *handle, uint32_t phyAddr, uint32_t devAddr, uint32_t data) {
|
|
return handle->ops->mdioWrite(handle, phyAddr, devAddr, data);
|
|
}
|
|
|
|
/*!
|
|
* @brief MDIO Read function. This interface read data over the SMI from the
|
|
* specified MDIO register. This function is called by all MDIO interfaces.
|
|
*
|
|
* @param handle MDIO device handle.
|
|
* @param phyAddr MDIO PHY address handle.
|
|
* @param devAddr The PHY device register.
|
|
* @param dataPtr The address to store the data read from the MDIO register.
|
|
* @retval kStatus_Success MDIO read success
|
|
* @retval kStatus_MDIO_SMIVisitTimeout MDIO SMI visit time out
|
|
*/
|
|
static inline status_t MDIO_Read(mdio_handle_t *handle, uint32_t phyAddr, uint32_t devAddr, uint32_t *dataPtr) {
|
|
return handle->ops->mdioRead(handle, phyAddr, devAddr, dataPtr);
|
|
}
|
|
|
|
/* @} */
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|