summaryrefslogtreecommitdiffstats
path: root/sys/dev/mdio/mdio_if.m
blob: 83308bc64f97f965f64115e7843643818f76aea4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# $FreeBSD$

#include <sys/bus.h>

INTERFACE mdio;

CODE {
	#include <dev/mdio/mdio.h>

	static int
	mdio_null_readextreg(device_t dev, int phy, int devad, int reg)
	{
		if (devad == MDIO_DEVADDR_NONE)
			return (MDIO_READREG(dev, phy, reg));
		return (~0U);
	}

	static int
	mdio_null_writeextreg(device_t dev, int phy, int devad, int reg,
	    int val)
	{
		if (devad == MDIO_DEVADDR_NONE)
			return (MDIO_WRITEREG(dev, phy, reg, val));

		return (EINVAL);
	}
}

/**
 * @brief Read register from device on MDIO bus.
 *
 * @param dev	MDIO bus device.
 * @param phy	PHY address.
 * @param reg	The PHY register offset.
 */
METHOD int readreg {
	device_t		dev;
	int			phy;
	int			reg;
};

/**
 * @brief Write register to device on MDIO bus.
 *
 * @param dev	MDIO bus device.
 * @param phy	PHY address.
 * @param reg	The PHY register offset.
 * @param val	The value to write at offset @p reg.
 */
METHOD int writereg {
	device_t		dev;
	int			phy;
	int			reg;
	int			val;
};


/**
 * @brief Read extended register from device on MDIO bus.
 *
 * @param dev	MDIO bus device.
 * @param phy	PHY address.
 * @param devad The MDIO IEEE 802.3 Clause 45 device address, or
 *		MDIO_DEVADDR_NONE to request Clause 22 register addressing.
 * @param reg	The PHY register offset.
 */
METHOD int readextreg {
	device_t		dev;
	int			phy;
	int			devad;
	int			reg;
} DEFAULT mdio_null_readextreg;


/**
 * @brief Write extended register to device on MDIO bus.
 *
 * @param dev	MDIO bus device.
 * @param phy	PHY address.
 * @param devad The MDIO IEEE 802.3 Clause 45 device address, or
 *		MDIO_DEVADDR_NONE to request Clause 22 register addressing.
 * @param reg	The PHY register offset.
 * @param val	The value to write at offset @p reg.
 */
METHOD int writeextreg {
	device_t		dev;
	int			phy;
	int			devad;
	int			reg;
	int			val;
} DEFAULT mdio_null_writeextreg;
OpenPOWER on IntegriCloud