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