ARMADA espressobin SATA drive detection failure

Pali Rohár pali at kernel.org
Sat Aug 13 05:01:08 PDT 2022


On Saturday 13 August 2022 11:53:39 Shinichiro Kawasaki wrote:
> On Aug 13, 2022 / 11:32, Pali Rohár wrote:
> > On Saturday 13 August 2022 01:35:35 Shinichiro Kawasaki wrote:
> 
> [...]
> 
> > Ok, thanks for testing. It looks like that reset code has some issues.
> > 
> > Could you please test this change?
> > 
> > @@ -1393,7 +1436,8 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev)
> >  		 * To avoid relying on the bootloader/firmware configuration,
> >  		 * power off all comphys.
> >  		 */
> > -		mvebu_a3700_comphy_reset(phy);
> > +//		mvebu_a3700_comphy_reset(phy);
> > +		mvebu_a3700_comphy_power_off(phy);
> >  		lane->needs_reset = false;
> >  	}
> >  
> > 
> > It should replace reset code by power off at beginning / probe time.
> 
> This change also avoided the "ata1: SATA link down (SStatus 0 SControl 300)"
> message, and my SSD was detected as /dev/sda. Good symptoms for me. FYI, I
> attach the console log with this change. (This time, following messages were
> printed. Not sure if they are important or not.)
> 
> [    2.937376] mvebu-a3700-comphy d0018300.phy: invalid COMPHY mode
> [    2.943581] mvebu-a3700-comphy d0018300.phy: invalid COMPHY mode
> [    2.949679] mvebu-a3700-comphy d0018300.phy: invalid COMPHY mode

Those errors are important, it means that power_off did nothing and was
skipped. So test did nothing.

Could you please replace mvebu_a3700_comphy_power_off implementation
with this one and try it again?

static int mvebu_a3700_comphy_power_off(struct phy *phy)
{
	struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);

	switch (lane->id) {
	case 0:
		mvebu_a3700_comphy_usb3_power_off(lane);
		mvebu_a3700_comphy_ethernet_power_off(lane);
		return 0;
	case 1:
		mvebu_a3700_comphy_pcie_power_off(lane);
		mvebu_a3700_comphy_ethernet_power_off(lane);
		return 0;
	case 2:
		mvebu_a3700_comphy_usb3_power_off(lane);
		mvebu_a3700_comphy_sata_power_off(lane);
		return 0;
	default:
		dev_err(lane->dev, "invalid COMPHY mode\n");
		return -EINVAL;
	}
}



More information about the linux-phy mailing list