Re: 83xx HDLC Driver Dev - Multiple PHYs?
From: Andy Fleming <hidden>
Date: 2008-02-05 00:40:33
On Jan 29, 2008, at 23:10, Russell McGuire wrote:
All, I have gotten my HDLC driver up to the point where it can register itself with the Linux kernel. However now I am faced with a dilemma and style question, that is probably best answered by you driver developers that have more experience. I am putting support for multiple PHY's into the HDLC driver, but after converting it to use the of_device tree, and inserting a UCC@5000 for a single UCC HDLC driver, it occurred to me that if I insert more devices (UCC@6000, UCC@7000, UCC@8000) that the driver will attempt to load multiple times.
There is already a mechanism to ensure modules aren't loaded again when a new device is found. Look at the gianfar support again. The mpc8548 CDS has 4 eTSEC devices and one driver which handles them all (gianfar). The driver is initialized once. The probe function will be called for each instance of the device. You need to make sure your driver's probe function can be called once per device.
Solution 3: Have phy-count=4; defined in the driver header, or a module parameter, and have a single module instance of the driver itself responsible for creating a single private data structure and setting up multiple UCC's and PHY's?
No, please. If the PHYs aren't discoverable, you might need something like that. But I suspect you just have one PHY per device. If you have more, how is that configured? Is the hardware aware of the number of PHYs? Or are you just selecting between different PHY addresses?
This also feeds into a question on SET_NETDEV_DEV. How does it react to multiple net devices attached to a single base driver?
SET_NETDEV_DEV declares the base *device* of the net device. The driver is a separate issue. And it shouldn't be a problem, because each device instance has its own private structure. Andy