}
#ifdef CONFIG_OF
+#define GPIO_SOMDEVICES_PHY_1 138
+#define GPIO_SOMDEVICES_PHY_2 139
+static void fec_reset_phy_init_SOMDEVICES(void)
+{
+ int ret = 0;
+ ret = gpio_request(GPIO_SOMDEVICES_PHY_1, "RESET_PHY_1");
+ if (!ret) {
+ gpio_direction_output(GPIO_SOMDEVICES_PHY_1, 1);
+ gpio_free(GPIO_SOMDEVICES_PHY_1);
+ }
+ ret = gpio_request(GPIO_SOMDEVICES_PHY_2, "RESET_PHY_2");
+ if (!ret) {
+ ret = gpio_direction_output(GPIO_SOMDEVICES_PHY_2, 1);
+ gpio_free(GPIO_SOMDEVICES_PHY_2);
+ }
+}
+
static int fec_reset_phy_init(struct platform_device *pdev)
{
int err;
dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
return err;
}
- fep->phy_reset_in_suspend = of_find_property(np,
- "phy-reset-in-suspend",
- NULL);
+ fep->phy_reset_in_suspend = of_property_read_bool(np,
+ "phy-reset-in-suspend");
/* Enable PHY and wait for stabilization */
gpio_set_value_cansleep(fep->phy_reset_gpio, !fep->active_high);
if (fep->phy_reset_duration < 20)
int num_tx_qs;
int num_rx_qs;
+ fec_reset_phy_init_SOMDEVICES();
of_dma_configure(&pdev->dev, np);
fec_enet_get_queue_num(pdev, &num_tx_qs, &num_rx_qs);
ret = pm_runtime_force_suspend(dev);
if (ret < 0)
return ret;
- } else if (fep->mii_bus_share && !ndev->phydev) {
+ } else {
pinctrl_pm_select_sleep_state(&fep->pdev->dev);
if (fep->phy_reset_in_suspend)
gpio_set_value_cansleep(fep->phy_reset_gpio, fep->active_high);
netif_tx_unlock_bh(ndev);
napi_enable(&fep->napi);
phy_start(ndev->phydev);
- } else if (fep->mii_bus_share && !ndev->phydev) {
+ } else {
pinctrl_pm_select_default_state(&fep->pdev->dev);
if (fep->phy_reset_in_suspend)
gpio_set_value_cansleep(fep->phy_reset_gpio, !fep->active_high);