Re: [PATCH 2/2] au1000-eth: convert to platform_driver model

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Florian,

On Tue, Nov 10, 2009 at 1:13 AM, Florian Fainelli <florian@xxxxxxxxxxx> 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@xxxxxxxxxxxxx>
> Signed-off-by: Florian Fainelli <florian@xxxxxxxxxxx>
> ---
> 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


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux