Linux Audio

Check our new training course

Loading...
v5.9
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef __LINUX_MDIO_BITBANG_H
 3#define __LINUX_MDIO_BITBANG_H
 4
 5#include <linux/phy.h>
 6
 7struct module;
 8
 9struct mdiobb_ctrl;
10
11struct mdiobb_ops {
12	struct module *owner;
13
14	/* Set the Management Data Clock high if level is one,
15	 * low if level is zero.
16	 */
17	void (*set_mdc)(struct mdiobb_ctrl *ctrl, int level);
18
19	/* Configure the Management Data I/O pin as an input if
20	 * "output" is zero, or an output if "output" is one.
21	 */
22	void (*set_mdio_dir)(struct mdiobb_ctrl *ctrl, int output);
23
24	/* Set the Management Data I/O pin high if value is one,
25	 * low if "value" is zero.  This may only be called
26	 * when the MDIO pin is configured as an output.
27	 */
28	void (*set_mdio_data)(struct mdiobb_ctrl *ctrl, int value);
29
30	/* Retrieve the state Management Data I/O pin. */
31	int (*get_mdio_data)(struct mdiobb_ctrl *ctrl);
32};
33
34struct mdiobb_ctrl {
35	const struct mdiobb_ops *ops;
36};
37
38/* The returned bus is not yet registered with the phy layer. */
39struct mii_bus *alloc_mdio_bitbang(struct mdiobb_ctrl *ctrl);
40
41/* The bus must already have been unregistered. */
42void free_mdio_bitbang(struct mii_bus *bus);
43
44#endif
v3.1
 
 1#ifndef __LINUX_MDIO_BITBANG_H
 2#define __LINUX_MDIO_BITBANG_H
 3
 4#include <linux/phy.h>
 5#include <linux/module.h>
 
 6
 7struct mdiobb_ctrl;
 8
 9struct mdiobb_ops {
10	struct module *owner;
11
12	/* Set the Management Data Clock high if level is one,
13	 * low if level is zero.
14	 */
15	void (*set_mdc)(struct mdiobb_ctrl *ctrl, int level);
16
17	/* Configure the Management Data I/O pin as an input if
18	 * "output" is zero, or an output if "output" is one.
19	 */
20	void (*set_mdio_dir)(struct mdiobb_ctrl *ctrl, int output);
21
22	/* Set the Management Data I/O pin high if value is one,
23	 * low if "value" is zero.  This may only be called
24	 * when the MDIO pin is configured as an output.
25	 */
26	void (*set_mdio_data)(struct mdiobb_ctrl *ctrl, int value);
27
28	/* Retrieve the state Management Data I/O pin. */
29	int (*get_mdio_data)(struct mdiobb_ctrl *ctrl);
30};
31
32struct mdiobb_ctrl {
33	const struct mdiobb_ops *ops;
34};
35
36/* The returned bus is not yet registered with the phy layer. */
37struct mii_bus *alloc_mdio_bitbang(struct mdiobb_ctrl *ctrl);
38
39/* The bus must already have been unregistered. */
40void free_mdio_bitbang(struct mii_bus *bus);
41
42#endif