diff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c index a4d7d9bd100d..064be967a58b 100644 --- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c +++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c @@ -1171,8 +1171,12 @@ static int mvebu_a3700_comphy_set_mode(struct phy *phy, enum phy_mode mode, (lane->mode != mode || lane->submode != submode)) return -EBUSY; - /* If changing mode, ensure reset is called */ - if (lane->mode != PHY_MODE_INVALID && lane->mode != mode) + /* If changing mode, ensure reset is called. + * Reset can currently break support for some SATA disks, so don't do it + * for PHY_MODE_SATA. + */ + if (lane->mode != PHY_MODE_INVALID && lane->mode != mode && + mode != PHY_MODE_SATA) lane->needs_reset = true; /* Just remember the mode, ->power_on() will do the real setup */ @@ -1388,13 +1392,6 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev) lane->invert_tx = false; lane->invert_rx = false; phy_set_drvdata(phy, lane); - - /* - * To avoid relying on the bootloader/firmware configuration, - * power off all comphys. - */ - mvebu_a3700_comphy_reset(phy); - lane->needs_reset = false; } provider = devm_of_phy_provider_register(&pdev->dev,