Lines Matching +full:mdio +full:- +full:bus

1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * linux/mdio.h: definitions for MDIO (clause 45) transceivers
4 * Copyright 2006-2009 Solarflare Communications Inc.
9 #include <uapi/linux/mdio.h>
31 struct mii_bus *bus; member
38 /* Bus address of the MDIO device (0-31) */
53 /* struct mdio_driver_common: Common to all MDIO drivers */
66 /* struct mdio_driver: Generic MDIO driver */
72 * up device-specific structures, if any
91 static inline void mdiodev_set_drvdata(struct mdio_device *mdio, void *data) in mdiodev_set_drvdata() argument
93 dev_set_drvdata(&mdio->dev, data); in mdiodev_set_drvdata()
96 static inline void *mdiodev_get_drvdata(struct mdio_device *mdio) in mdiodev_get_drvdata() argument
98 return dev_get_drvdata(&mdio->dev); in mdiodev_get_drvdata()
102 struct mdio_device *mdio_device_create(struct mii_bus *bus, int addr);
112 get_device(&mdiodev->dev); in mdio_device_get()
136 * struct mdio_if_info - Ethernet controller MDIO interface
139 * non-zero unless @prtad = %MDIO_PRTAD_NONE.
140 * @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then
161 #define MDIO_PRTAD_NONE (-1)
162 #define MDIO_DEVAD_NONE (-1)
169 extern int mdio45_probe(struct mdio_if_info *mdio, int prtad);
170 extern int mdio_set_flag(const struct mdio_if_info *mdio,
173 extern int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmds);
174 extern int mdio45_nway_restart(const struct mdio_if_info *mdio);
175 extern void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio,
179 mdio45_ethtool_ksettings_get_npage(const struct mdio_if_info *mdio,
184 * mdio45_ethtool_gset - get settings for ETHTOOL_GSET
185 * @mdio: MDIO interface
188 * Since the CSRs for auto-negotiation using next pages are not fully
193 static inline void mdio45_ethtool_gset(const struct mdio_if_info *mdio, in mdio45_ethtool_gset() argument
196 mdio45_ethtool_gset_npage(mdio, ecmd, 0, 0); in mdio45_ethtool_gset()
200 * mdio45_ethtool_ksettings_get - get settings for ETHTOOL_GLINKSETTINGS
201 * @mdio: MDIO interface
204 * Since the CSRs for auto-negotiation using next pages are not fully
210 mdio45_ethtool_ksettings_get(const struct mdio_if_info *mdio, in mdio45_ethtool_ksettings_get() argument
213 mdio45_ethtool_ksettings_get_npage(mdio, cmd, 0, 0); in mdio45_ethtool_ksettings_get()
216 extern int mdio_mii_ioctl(const struct mdio_if_info *mdio,
308 * 10GBASE-T AN CONTROL (7.32) register.
330 * @lpa: value of the C45 10GBASE-T AN STATUS register
332 * A small helper function that translates C45 10GBASE-T AN STATUS register bits
349 * @lpa: value of the BASE-T1 Autonegotiation Advertisement [15:0] Register
351 * A small helper function that translates BASE-T1 Autonegotiation
366 * @lpa: value of the BASE-T1 Autonegotiation Advertisement [31:16] Register
368 * A small helper function that translates BASE-T1 Autonegotiation
384 * BASE-T1 Autonegotiation Advertisement [15:0] Register.
404 * BASE-T1 Autonegotiation Advertisement [31:16] Register.
422 * IEEE 802.3-2018 45.2.3.10 "EEE control and capability 1" register (3.20)
423 * IEEE 802.3-2018 45.2.7.13 "EEE advertisement 1" register (7.60)
424 * IEEE 802.3-2018 45.2.7.14 "EEE link partner ability 1" register (7.61)
446 * A function that translates linkmode to value for IEEE 802.3-2018 45.2.7.13
474 * A function that translates IEEE 802.3cg-2019 45.2.7.26 "10BASE-T1 AN status"
487 * A function that translates the linkmode to IEEE 802.3cg-2019 45.2.7.25
488 * "10BASE-T1 AN control" register (7.526) value.
501 * mii_c73_mod_linkmode - convert a Clause 73 advertisement to linkmodes
539 int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum);
540 int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val);
541 int __mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
543 int __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
546 int mdiobus_read(struct mii_bus *bus, int addr, u32 regnum);
547 int mdiobus_read_nested(struct mii_bus *bus, int addr, u32 regnum);
548 int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val);
549 int mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val);
550 int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
552 int mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
554 int __mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum);
555 int mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum);
556 int mdiobus_c45_read_nested(struct mii_bus *bus, int addr, int devad,
558 int __mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum,
560 int mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum,
562 int mdiobus_c45_write_nested(struct mii_bus *bus, int addr, int devad,
564 int mdiobus_c45_modify(struct mii_bus *bus, int addr, int devad, u32 regnum,
567 int mdiobus_c45_modify_changed(struct mii_bus *bus, int addr, int devad,
572 return __mdiobus_read(mdiodev->bus, mdiodev->addr, regnum); in __mdiodev_read()
578 return __mdiobus_write(mdiodev->bus, mdiodev->addr, regnum, val); in __mdiodev_write()
584 return __mdiobus_modify(mdiodev->bus, mdiodev->addr, regnum, mask, set); in __mdiodev_modify()
590 return __mdiobus_modify_changed(mdiodev->bus, mdiodev->addr, regnum, in __mdiodev_modify_changed()
596 return mdiobus_read(mdiodev->bus, mdiodev->addr, regnum); in mdiodev_read()
602 return mdiobus_write(mdiodev->bus, mdiodev->addr, regnum, val); in mdiodev_write()
608 return mdiobus_modify(mdiodev->bus, mdiodev->addr, regnum, mask, set); in mdiodev_modify()
614 return mdiobus_modify_changed(mdiodev->bus, mdiodev->addr, regnum, in mdiodev_modify_changed()
621 return mdiobus_c45_modify(mdiodev->bus, mdiodev->addr, devad, regnum, in mdiodev_c45_modify()
629 return mdiobus_c45_modify_changed(mdiodev->bus, mdiodev->addr, devad, in mdiodev_c45_modify_changed()
636 return mdiobus_c45_read(mdiodev->bus, mdiodev->addr, devad, regnum); in mdiodev_c45_read()
642 return mdiobus_c45_write(mdiodev->bus, mdiodev->addr, devad, regnum, in mdiodev_c45_write()
648 bool mdiobus_is_registered_device(struct mii_bus *bus, int addr);
649 struct phy_device *mdiobus_get_phy(struct mii_bus *bus, int addr);
652 * mdio_module_driver() - Helper macro for registering mdio drivers
655 * Helper macro for MDIO drivers which do not do anything special in module