no-OS
Loading...
Searching...
No Matches
no_os_mdio.h File Reference

Header file for MDIO interface driver. More...

#include <stdbool.h>
#include <stdint.h>
#include "no_os_util.h"
Include dependency graph for no_os_mdio.h:

Classes

struct  no_os_mdio_init_param
 Parameters for an MDIO slave. More...
 
struct  no_os_mdio_desc
 MDIO device descriptor created with no_os_mdio_init(). More...
 
struct  no_os_mdio_ops
 Collection of MDIO ops that point to specific implementations. More...
 

Macros

#define NO_OS_MDIO_C22_REGS   32
 
#define NO_OS_MDIO_C45_START   0
 
#define NO_OS_MDIO_C22_START   1
 
#define NO_OS_MDIO_START_MASK   NO_OS_GENMASK(31, 30)
 
#define NO_OS_MDIO_OP_ADDRESS   0
 
#define NO_OS_MDIO_OP_WRITE   1
 
#define NO_OS_MDIO_OP_READ   2
 
#define NO_OS_MDIO_OP_MASK   NO_OS_GENMASK(29, 28)
 
#define NO_OS_MDIO_PHYADDR_MASK   NO_OS_GENMASK(27, 23)
 
#define NO_OS_MDIO_REGADDR_MASK   NO_OS_GENMASK(22, 18)
 
#define NO_OS_MDIO_TURNAROUND   2
 
#define NO_OS_MDIO_TURNAROUND_MASK   NO_OS_GENMASK(17, 16)
 
#define NO_OS_MDIO_DATA_MASK   NO_OS_GENMASK(15, 0)
 
#define NO_OS_MDIO_C45_DEVADDR_MASK   NO_OS_GENMASK(20, 16)
 
#define NO_OS_MDIO_C45_ADDR(dev, reg)
 

Functions

int no_os_mdio_init (struct no_os_mdio_desc **desc, const struct no_os_mdio_init_param *param)
 Initialize the MDIO interface.
 
int no_os_mdio_remove (struct no_os_mdio_desc *desc)
 Free the resources allocated by no_os_mdio_init().
 
int no_os_mdio_write (struct no_os_mdio_desc *desc, uint32_t reg, uint16_t val)
 Write a register using MDIO.
 
int no_os_mdio_read (struct no_os_mdio_desc *desc, uint32_t reg, uint16_t *val)
 Read a register using MDIO.
 

Detailed Description

Header file for MDIO interface driver.

Author
Darius Berghe (dariu.nosp@m.s.be.nosp@m.rghe@.nosp@m.anal.nosp@m.og.co.nosp@m.m)

Copyright 2023(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ NO_OS_MDIO_C22_REGS

#define NO_OS_MDIO_C22_REGS   32

◆ NO_OS_MDIO_C22_START

#define NO_OS_MDIO_C22_START   1

◆ NO_OS_MDIO_C45_ADDR

#define NO_OS_MDIO_C45_ADDR ( dev,
reg )
Value:
#define NO_OS_MDIO_C45_DEVADDR_MASK
Definition no_os_mdio.h:30
#define NO_OS_BIT(x)
Definition no_os_util.h:23
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)

◆ NO_OS_MDIO_C45_DEVADDR_MASK

#define NO_OS_MDIO_C45_DEVADDR_MASK   NO_OS_GENMASK(20, 16)

◆ NO_OS_MDIO_C45_START

#define NO_OS_MDIO_C45_START   0

◆ NO_OS_MDIO_DATA_MASK

#define NO_OS_MDIO_DATA_MASK   NO_OS_GENMASK(15, 0)

◆ NO_OS_MDIO_OP_ADDRESS

#define NO_OS_MDIO_OP_ADDRESS   0

◆ NO_OS_MDIO_OP_MASK

#define NO_OS_MDIO_OP_MASK   NO_OS_GENMASK(29, 28)

◆ NO_OS_MDIO_OP_READ

#define NO_OS_MDIO_OP_READ   2

◆ NO_OS_MDIO_OP_WRITE

#define NO_OS_MDIO_OP_WRITE   1

◆ NO_OS_MDIO_PHYADDR_MASK

#define NO_OS_MDIO_PHYADDR_MASK   NO_OS_GENMASK(27, 23)

◆ NO_OS_MDIO_REGADDR_MASK

#define NO_OS_MDIO_REGADDR_MASK   NO_OS_GENMASK(22, 18)

◆ NO_OS_MDIO_START_MASK

#define NO_OS_MDIO_START_MASK   NO_OS_GENMASK(31, 30)

◆ NO_OS_MDIO_TURNAROUND

#define NO_OS_MDIO_TURNAROUND   2

◆ NO_OS_MDIO_TURNAROUND_MASK

#define NO_OS_MDIO_TURNAROUND_MASK   NO_OS_GENMASK(17, 16)

Function Documentation

◆ no_os_mdio_init()

int no_os_mdio_init ( struct no_os_mdio_desc ** desc,
const struct no_os_mdio_init_param * param )

Initialize the MDIO interface.

Parameters
desc- The MDIO descriptor.
param- MDIO parameters.
Returns
0 in case of success, error code otherwise.

◆ no_os_mdio_read()

int no_os_mdio_read ( struct no_os_mdio_desc * desc,
uint32_t reg,
uint16_t * val )

Read a register using MDIO.

Parameters
desc- The MDIO descriptor.
reg- Register address. For clause 45 reg is constructed using NO_OS_MDIO_C45_ADDR macro. It is otherwise the plain clause 22 address (0...31).
val- Value read from register.
Returns
0 in case of success, error code otherwise.

◆ no_os_mdio_remove()

int no_os_mdio_remove ( struct no_os_mdio_desc * desc)

Free the resources allocated by no_os_mdio_init().

Parameters
desc- The MDIO descriptor.
Returns
0 in case of success, error code otherwise.

◆ no_os_mdio_write()

int no_os_mdio_write ( struct no_os_mdio_desc * desc,
uint32_t reg,
uint16_t val )

Write a register using MDIO.

Parameters
desc- The MDIO descriptor.
reg- Register address. For clause 45 reg is constructed using NO_OS_MDIO_C45_ADDR macro. It is otherwise the plain clause 22 address (0...31).
val- Value to write into register.
Returns
0 in case of success, error code otherwise.