Changeset 30940


Ignore:
Timestamp:
Dec 12, 2016, 10:27:51 PM (7 months ago)
Author:
brainslayer
Message:

fix bad patch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.4/drivers/net/phy/at803x.c

    r30907 r30940  
    6666        bool phy_reset:1;
    6767        struct gpio_desc *gpiod_reset;
     68        int prev_speed;
    6869};
    6970
     
    243244static int at803x_probe(struct phy_device *phydev)
    244245{
    245         struct at803x_platform_data *pdata;
    246246        struct device *dev = &phydev->dev;
    247247        struct at803x_priv *priv;
     
    255255            phydev->drv->phy_id != ATH8032_PHY_ID)
    256256                goto does_not_require_reset_workaround;
    257 
    258         pdata = dev_get_platdata(&phydev->dev);
    259         if (pdata && pdata->has_reset_gpio) {
    260                 devm_gpio_request(dev, pdata->reset_gpio, "reset");
    261                 gpio_direction_output(pdata->reset_gpio, 1);
    262         }
    263257
    264258        gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
     
    373367{
    374368        struct at803x_priv *priv = phydev->priv;
     369        struct at803x_platform_data *pdata;
     370        pdata = dev_get_platdata(&phydev->dev);
    375371
    376372        /*
     
    382378         */
    383379        if (phydev->state == PHY_NOLINK) {
    384                 if ((priv->gpiod_reset || pdata->has_reset_gpio) &&
    385                     !priv->phy_reset) {
     380                if (priv->gpiod_reset && !priv->phy_reset) {
    386381                        struct at803x_context context;
    387382
    388383                        at803x_context_save(phydev, &context);
    389384
    390                         if (pdata->has_reset_gpio) {
    391                                 gpio_set_value_cansleep(pdata->reset_gpio, 0);
    392                                 msleep(1);
    393                                 gpio_set_value_cansleep(pdata->reset_gpio, 1);
    394                                 msleep(1);
    395                         } else {
    396                                 gpiod_set_value(priv->gpiod_reset, 1);
    397                                 msleep(1);
    398                                 gpiod_set_value(priv->gpiod_reset, 0);
    399                                 msleep(1);
    400                         }
     385                        gpiod_set_value(priv->gpiod_reset, 1);
     386                        msleep(1);
     387                        gpiod_set_value(priv->gpiod_reset, 0);
     388                        msleep(1);
    401389
    402390                        at803x_context_restore(phydev, &context);
     
    409397                priv->phy_reset = false;
    410398        }
     399        if (pdata && pdata->fixup_rgmii_tx_delay &&
     400            phydev->speed != priv->prev_speed) {
     401                switch (phydev->speed) {
     402                case SPEED_10:
     403                case SPEED_100:
     404                        at803x_dbg_reg_set(phydev,
     405                                AT803X_DEBUG_SYSTEM_MODE_CTRL,
     406                                AT803X_DEBUG_RGMII_TX_CLK_DLY);
     407                        break;
     408                case SPEED_1000:
     409                        at803x_dbg_reg_clr(phydev,
     410                                AT803X_DEBUG_SYSTEM_MODE_CTRL,
     411                                AT803X_DEBUG_RGMII_TX_CLK_DLY);
     412                        break;
     413                default:
     414                        break;
     415                }
     416
     417                priv->prev_speed = phydev->speed;
     418        }
    411419}
    412420
     
    419427        .probe                  = at803x_probe,
    420428        .config_init            = at803x_config_init,
    421         .link_change_notify     = at803x_link_change_notify,
    422429        .set_wol                = at803x_set_wol,
    423430        .get_wol                = at803x_get_wol,
     
    440447        .probe                  = at803x_probe,
    441448        .config_init            = at803x_config_init,
     449        .link_change_notify     = at803x_link_change_notify,
    442450        .set_wol                = at803x_set_wol,
    443451        .get_wol                = at803x_get_wol,
Note: See TracChangeset for help on using the changeset viewer.