Date: Thu, 23 Aug 2012 10:12:52 -0400 From: John Baldwin <jhb@freebsd.org> To: Marius Strobl <marius@freebsd.org>, Bjoern Zeeb <bz@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r227687 - head/sys/dev/mii Message-ID: <201208231012.52720.jhb@freebsd.org> In-Reply-To: <201111182239.pAIMdkCr003347@svn.freebsd.org> References: <201111182239.pAIMdkCr003347@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, November 18, 2011 5:39:46 pm Marius Strobl wrote: > Author: marius > Date: Fri Nov 18 22:39:46 2011 > New Revision: 227687 > URL: http://svn.freebsd.org/changeset/base/227687 > > Log: > - Add a hint.miibus.X.phymask hint, allowing do individually exclude PHY > addresses from being probed and attaching something including ukphy(4) > to it. This is mainly necessarily for PHY switches that create duplicate > or fake PHYs on the bus that can corrupt the PHY state when accessed or > simply cause problems when ukphy(4) isolates the additional instances. > - Change miibus(4) to be a hinted bus, allowing to add child devices via > hints and to set their attach arguments (including for automatically > probed PHYs). This is mainly needed for PHY switches that violate IEEE > 802.3 and don't even implement the basic register set so we can't probe > them automatically. However, the ability to alter the attach arguments > for automatically probed PHYs is also useful as for example it allows > to test (or tell a user to test) new variant of a PHY with a specific > driver by letting an existing driver attach to it via manipulating the > IDs without the need to touch the source code or to limit a Gigabit > Ethernet PHY to only announce up to Fast Ethernet in order to save > energy by limiting the capability mask. Generally, a driver has to > be hinted via hint.phydrv.X.at="miibusY" and hint.phydrv.X.phyno="Z" > (which already is sufficient to add phydrvX at miibusY at PHY address > Z). Then optionally the following attach arguments additionally can > be configured: > hint.phydrv.X.id1 > hint.phydrv.X.id2 > hint.phydrv.X.capmask > - Some minor cleanup. I was looking at this today with bz to try to figure out how to use this. It strikes me that in a case of a bus with devices that have IDs it can be useful to not hardcode the driver name and unit number, but to be able to create a device and let the normal driver probe mechanics work. The existing miibus_hinted_child() routine already largely enforces that by ensuring that any new child has a unique phyno address. Two approaches I can think of are: 1) Never hardcode the name and unit number. 2) Don't hardcode the name and unit number if the name is "phy". This would let you do something like: hint.phy.0.at="miibus0" hint.phy.0.phyno="1" hint.phy.0.id1="xxx" hint.phy.0.id2="yyy" And then 'e1000phy' or 'brphy' or whoever could manage the phy. Though perhaps in the case of hinted children you want to always force the phy driver? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208231012.52720.jhb>