From: Hau <hau@realtek.com>
To: Heiner Kallweit <hkallweit1@gmail.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
nic_swsd <nic_swsd@realtek.com>,
"kuba@kernel.org" <kuba@kernel.org>,
"davem@davemloft.net" <davem@davemloft.net>
Subject: RE: [PATCH v3 net-next] r8169: add support for rtl8168h(revid 0x2a) + rtl8211fs fiber application
Date: Tue, 23 Aug 2022 15:34:58 +0000 [thread overview]
Message-ID: <180133e86ad8413ba1c760480108ef34@realtek.com> (raw)
In-Reply-To: <6018e2ca-a02f-f70f-cf9a-f635680a02ba@gmail.com>
> > +#define MDIO_READ 2
> > +#define MDIO_WRITE 1
> > +/* MDIO bus init function */
> > +static int rtl_mdio_bitbang_init(struct rtl8169_private *tp) {
> > + struct bb_info *bitbang;
> > + struct device *d = tp_to_dev(tp);
> > + struct mii_bus *new_bus;
> > +
> > + /* create bit control struct for PHY */
> > + bitbang = devm_kzalloc(d, sizeof(struct bb_info), GFP_KERNEL);
> > + if (!bitbang)
> > + return -ENOMEM;
> > +
> > + /* bitbang init */
> > + bitbang->tp = tp;
> > + bitbang->ctrl.ops = &bb_ops;
> > + bitbang->ctrl.op_c22_read = MDIO_READ;
> > + bitbang->ctrl.op_c22_write = MDIO_WRITE;
> > +
> > + /* MII controller setting */
> > + new_bus = devm_mdiobus_alloc(d);
> > + if (!new_bus)
> > + return -ENOMEM;
> > +
> > + new_bus->read = mdiobb_read;
> > + new_bus->write = mdiobb_write;
> > + new_bus->priv = &bitbang->ctrl;
> > +
>
> This looks like an open-coded version of alloc_mdio_bitbang().
>
Yes, it is part of alloc_mdio_bitbang().
> > + tp->mii_bus = new_bus;
> > +
> > + return 0;
> > +}
> > +
> > +static void rtl_sfp_bitbang_init(struct rtl8169_private *tp,
> > + struct rtl_sfp_if_mask *sfp_mask) {
> > + struct mii_bus *bus = tp->mii_bus;
> > + struct bb_info *bitbang = container_of(bus->priv, struct bb_info,
> > +ctrl);
> > +
> > + r8168_mac_ocp_modify(tp, PINPU, sfp_mask->pin_mask, 0);
> > + r8168_mac_ocp_modify(tp, PINOE, 0, sfp_mask->pin_mask);
> > + bitbang->pinoe_value = r8168_mac_ocp_read(tp, PINOE);
> > + bitbang->pin_i_sel_1_value = r8168_mac_ocp_read(tp,
> PIN_I_SEL_1);
> > + bitbang->pin_i_sel_2_value = r8168_mac_ocp_read(tp,
> PIN_I_SEL_2);
> > + memcpy(&bitbang->sfp_mask, sfp_mask, sizeof(struct
> > +rtl_sfp_if_mask)); }
> > +
> > +static void rtl_sfp_mdio_write(struct rtl8169_private *tp,
> > + u8 reg,
> > + u16 val)
> > +{
> > + struct mii_bus *bus = tp->mii_bus;
> > + struct bb_info *bitbang;
> > +
> > + if (!bus)
> > + return;
> > +
> > + bitbang = container_of(bus->priv, struct bb_info, ctrl);
> > + bus->write(bus, bitbang->sfp_mask.phy_addr, reg, val); }
> > +
> > +static u16 rtl_sfp_mdio_read(struct rtl8169_private *tp,
> > + u8 reg)
> > +{
> > + struct mii_bus *bus = tp->mii_bus;
> > + struct bb_info *bitbang;
> > +
> > + if (!bus)
> > + return ~0;
> > +
> > + bitbang = container_of(bus->priv, struct bb_info, ctrl);
> > +
> > + return bus->read(bus, bitbang->sfp_mask.phy_addr, reg); }
> > +
> > +static void rtl_sfp_mdio_modify(struct rtl8169_private *tp, u32 reg, u16
> mask,
> > + u16 set)
> > +{
> > + u16 data = rtl_sfp_mdio_read(tp, reg);
> > +
> > + rtl_sfp_mdio_write(tp, reg, (data & ~mask) | set); }
> > +
> > +#define RTL8211FS_PHY_ID_1 0x001c
> > +#define RTL8211FS_PHY_ID_2 0xc916
> > +
>
> There shouldn't be a dependency on a specific PHY type. It may not reflect
> your use cases, but it should be perfectly possible to combine this MAC with
> other PHY types, also from other vendors, supporting fiber.
>
This is a special use case. rtl8168h is not designed as MAC to connect to other PHY.
Thanks,
Hau
------Please consider the environment before printing this e-mail.
prev parent reply other threads:[~2022-08-23 17:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-22 16:07 [PATCH v3 net-next] r8169: add support for rtl8168h(revid 0x2a) + rtl8211fs fiber application Chunhao Lin
2022-08-22 19:58 ` Andrew Lunn
2022-08-23 15:17 ` Hau
2022-08-23 15:31 ` Andrew Lunn
2022-08-23 15:48 ` Hau
2022-08-23 17:16 ` Andrew Lunn
2022-08-24 19:20 ` Hau
2022-08-22 20:19 ` Heiner Kallweit
2022-08-23 15:34 ` Hau [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=180133e86ad8413ba1c760480108ef34@realtek.com \
--to=hau@realtek.com \
--cc=davem@davemloft.net \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.