1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #ifndef __LINUX_MDIO_BITBANG_H 1 #ifndef __LINUX_MDIO_BITBANG_H 3 #define __LINUX_MDIO_BITBANG_H 2 #define __LINUX_MDIO_BITBANG_H 4 3 5 #include <linux/phy.h> 4 #include <linux/phy.h> 6 5 7 struct module; 6 struct module; 8 7 9 struct mdiobb_ctrl; 8 struct mdiobb_ctrl; 10 9 11 struct mdiobb_ops { 10 struct mdiobb_ops { 12 struct module *owner; 11 struct module *owner; 13 12 14 /* Set the Management Data Clock high 13 /* Set the Management Data Clock high if level is one, 15 * low if level is zero. 14 * low if level is zero. 16 */ 15 */ 17 void (*set_mdc)(struct mdiobb_ctrl *ct 16 void (*set_mdc)(struct mdiobb_ctrl *ctrl, int level); 18 17 19 /* Configure the Management Data I/O p 18 /* Configure the Management Data I/O pin as an input if 20 * "output" is zero, or an output if " 19 * "output" is zero, or an output if "output" is one. 21 */ 20 */ 22 void (*set_mdio_dir)(struct mdiobb_ctr 21 void (*set_mdio_dir)(struct mdiobb_ctrl *ctrl, int output); 23 22 24 /* Set the Management Data I/O pin hig 23 /* Set the Management Data I/O pin high if value is one, 25 * low if "value" is zero. This may o 24 * low if "value" is zero. This may only be called 26 * when the MDIO pin is configured as 25 * when the MDIO pin is configured as an output. 27 */ 26 */ 28 void (*set_mdio_data)(struct mdiobb_ct 27 void (*set_mdio_data)(struct mdiobb_ctrl *ctrl, int value); 29 28 30 /* Retrieve the state Management Data 29 /* Retrieve the state Management Data I/O pin. */ 31 int (*get_mdio_data)(struct mdiobb_ctr 30 int (*get_mdio_data)(struct mdiobb_ctrl *ctrl); 32 }; 31 }; 33 32 34 struct mdiobb_ctrl { 33 struct mdiobb_ctrl { 35 const struct mdiobb_ops *ops; 34 const struct mdiobb_ops *ops; 36 unsigned int override_op_c22; !! 35 /* reset callback */ 37 u8 op_c22_read; !! 36 int (*reset)(struct mii_bus *bus); 38 u8 op_c22_write; << 39 }; 37 }; 40 << 41 int mdiobb_read_c22(struct mii_bus *bus, int p << 42 int mdiobb_write_c22(struct mii_bus *bus, int << 43 int mdiobb_read_c45(struct mii_bus *bus, int d << 44 int mdiobb_write_c45(struct mii_bus *bus, int << 45 38 46 /* The returned bus is not yet registered with 39 /* The returned bus is not yet registered with the phy layer. */ 47 struct mii_bus *alloc_mdio_bitbang(struct mdio 40 struct mii_bus *alloc_mdio_bitbang(struct mdiobb_ctrl *ctrl); 48 41 49 /* The bus must already have been unregistered 42 /* The bus must already have been unregistered. */ 50 void free_mdio_bitbang(struct mii_bus *bus); 43 void free_mdio_bitbang(struct mii_bus *bus); 51 44 52 #endif 45 #endif 53 46
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.