[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f861ec6f0911100120j12d86b0cs3ef9c2816019eaf9@mail.gmail.com>
Date: Tue, 10 Nov 2009 10:20:25 +0100
From: Manuel Lauss <manuel.lauss@...glemail.com>
To: Florian Fainelli <florian@...nwrt.org>
Cc: Ralf Baechle <ralf@...ux-mips.org>,
linux-mips <linux-mips@...ux-mips.org>, netdev@...r.kernel.org,
David Miller <davem@...emloft.net>
Subject: Re: [PATCH 2/2] au1000-eth: convert to platform_driver model
Hi Florian,
On Tue, Nov 10, 2009 at 1:13 AM, Florian Fainelli <florian@...nwrt.org> wrote:
> This patch converts the au1000-eth driver to become a full
> platform-driver as it ought to be. We now pass PHY-speficic
> configurations through platform_data but for compatibility
> the driver still assumes the default settings (search for PHY1 on
> MAC0) when no platform_data is passed. Tested on my MTX-1 board.
>
> Acked-by: David S. Miller <davem@...emloft.net>
> Signed-off-by: Florian Fainelli <florian@...nwrt.org>
> ---
> diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
> index ce6f1ac..6d5a2cb 100644
> --- a/drivers/net/au1000_eth.c
> +++ b/drivers/net/au1000_eth.c
> -# if defined(AU1XXX_PHY1_SEARCH_ON_MAC0)
> - /* try harder to find a PHY */
> - if (!phydev && (aup->mac_id == 1)) {
> - /* no PHY found, maybe we have a dual PHY? */
> - printk (KERN_INFO DRV_NAME ": no PHY found on MAC1, "
> - "let's see if it's attached to MAC0...\n");
> -
> - BUG_ON(!au_macs[0]);
> - /* find the first (lowest address) non-attached PHY on
> - * the MAC0 MII bus */
> - for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) {
> - struct phy_device *const tmp_phydev =
> - au_macs[0]->mii_bus->phy_map[phy_addr];
> -
> - if (!tmp_phydev)
> - continue; /* no PHY here... */
> -
> - if (tmp_phydev->attached_dev)
> - continue; /* already claimed by MAC0 */
> + } else {
> + int phy_addr;
> +
> + /* find the first (lowest address) PHY on the current MAC's MII bus */
> + for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++)
> + if (aup->mii_bus->phy_map[phy_addr]) {
> + phydev = aup->mii_bus->phy_map[phy_addr];
> + if (!aup->phy_search_highest_addr)
> + break; /* break out with first one found */
> + }
>
> - phydev = tmp_phydev;
> - break; /* found it */
> + if (aup->phy1_search_mac0) {
> + /* try harder to find a PHY */
> + if (!phydev && (aup->mac_id == 1)) {
> + /* no PHY found, maybe we have a dual PHY? */
> + printk (KERN_INFO DRV_NAME ": no PHY found on MAC1, "
> + "let's see if it's attached to MAC0...\n");
> +
> + /* find the first (lowest address) non-attached PHY on
> + * the MAC0 MII bus */
> + for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) {
> + if (aup->mac_id == 1)
> + break;
aup->mac_id needs to be 1 for this loop to be executed in the first
place, and here
you immediately bail out if it is.
Also, how do you access the phy map of the other controller without use of the
au_macs[] structure? (which is unused after this patch and could be
removed, along
with the NUM_ETH_INTERFACES constant)
> + struct phy_device *const tmp_phydev =
> + aup->mii_bus->phy_map[phy_addr];
My compiler complains about mixed code/declarations.
Thanks!
Manuel Lauss
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists