no-OS
no_os_mdio.h
Go to the documentation of this file.
1 /***************************************************************************/
39 #ifndef _NO_OS_MDIO_H_
40 #define _NO_OS_MDIO_H_
41 
42 #include <stdbool.h>
43 #include <stdint.h>
44 #include "no_os_util.h"
45 
46 #define NO_OS_MDIO_C22_REGS 32
47 #define NO_OS_MDIO_C45_START 0
48 #define NO_OS_MDIO_C22_START 1
49 #define NO_OS_MDIO_START_MASK NO_OS_GENMASK(31, 30)
50 #define NO_OS_MDIO_OP_ADDRESS 0
51 #define NO_OS_MDIO_OP_WRITE 1
52 #define NO_OS_MDIO_OP_READ 2
53 #define NO_OS_MDIO_OP_MASK NO_OS_GENMASK(29, 28)
54 #define NO_OS_MDIO_PHYADDR_MASK NO_OS_GENMASK(27, 23)
55 #define NO_OS_MDIO_REGADDR_MASK NO_OS_GENMASK(22, 18)
56 #define NO_OS_MDIO_TURNAROUND 2
57 #define NO_OS_MDIO_TURNAROUND_MASK NO_OS_GENMASK(17, 16)
58 #define NO_OS_MDIO_DATA_MASK NO_OS_GENMASK(15, 0)
59 #define NO_OS_MDIO_C45_DEVADDR_MASK NO_OS_GENMASK(20, 16)
60 #define NO_OS_MDIO_C45_ADDR(dev, reg) (NO_OS_BIT(31) | no_os_field_prep(NO_OS_MDIO_C45_DEVADDR_MASK, dev) | (uint16_t)reg)
61 
68  int id;
71  bool c45;
73  uint8_t addr;
77  void *extra;
78 };
79 
85  int id;
86  bool c45;
87  uint8_t addr;
89  void *extra;
90 };
91 
98  int (*init)(struct no_os_mdio_desc **, struct no_os_mdio_init_param *);
100  int (*write)(struct no_os_mdio_desc *, uint32_t, uint16_t);
102  int (*read)(struct no_os_mdio_desc *, uint32_t, uint16_t *);
104  int (*remove)(struct no_os_mdio_desc *);
105 };
106 
107 int no_os_mdio_init(struct no_os_mdio_desc **desc,
108  struct no_os_mdio_init_param *param);
109 int no_os_mdio_remove(struct no_os_mdio_desc *desc);
110 int no_os_mdio_write(struct no_os_mdio_desc *desc, uint32_t reg, uint16_t val);
111 int no_os_mdio_read(struct no_os_mdio_desc *desc, uint32_t reg, uint16_t *val);
112 
113 #endif
no_os_mdio_init_param
Parameters for an MDIO slave.
Definition: no_os_mdio.h:66
no_os_mdio_init_param::c45
bool c45
Definition: no_os_mdio.h:71
no_os_mdio_desc::addr
uint8_t addr
Definition: no_os_mdio.h:87
no_os_mdio_ops::remove
int(* remove)(struct no_os_mdio_desc *)
Definition: no_os_mdio.h:104
no_os_mdio_ops::read
int(* read)(struct no_os_mdio_desc *, uint32_t, uint16_t *)
Definition: no_os_mdio.h:102
no_os_mdio_init_param::ops
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:75
no_os_mdio_init_param::id
int id
Definition: no_os_mdio.h:68
no_os_mdio_init_param::extra
void * extra
Definition: no_os_mdio.h:77
no_os_mdio_desc::id
int id
Definition: no_os_mdio.h:85
no_os_mdio_init
int no_os_mdio_init(struct no_os_mdio_desc **desc, struct no_os_mdio_init_param *param)
Initialize the MDIO interface.
Definition: no_os_mdio.c:48
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.
Definition: no_os_mdio.c:96
no_os_mdio_desc::c45
bool c45
Definition: no_os_mdio.h:86
no_os_mdio_ops::write
int(* write)(struct no_os_mdio_desc *, uint32_t, uint16_t)
Definition: no_os_mdio.h:100
no_os_mdio_ops::init
int(* init)(struct no_os_mdio_desc **, struct no_os_mdio_init_param *)
Definition: no_os_mdio.h:98
no_os_mdio_remove
int no_os_mdio_remove(struct no_os_mdio_desc *desc)
Free the resources allocated by no_os_mdio_init().
Definition: no_os_mdio.c:76
no_os_mdio_desc
MDIO device descriptor created with no_os_mdio_init().
Definition: no_os_mdio.h:84
no_os_mdio_desc::extra
void * extra
Definition: no_os_mdio.h:89
no_os_mdio_init_param::addr
uint8_t addr
Definition: no_os_mdio.h:73
no_os_mdio_ops
Collection of MDIO ops that point to specific implementations.
Definition: no_os_mdio.h:96
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.
Definition: no_os_mdio.c:116
no_os_util.h
Header file of utility functions.
no_os_mdio_desc::ops
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:88