Re: [PATCH] net: phy: marvell: Add soft reset for 88E1510

From: Ben Brown

Date: Tue Jul 07 2026 - 18:01:22 EST




On 7/4/26 00:53, Andrew Lunn wrote:
> On Fri, Jul 03, 2026 at 12:14:26AM +0000, Ben Brown wrote:
>>
>>
>> On 7/3/26 11:04, Andrew Lunn wrote:
>>> On Fri, Jul 03, 2026 at 10:50:34AM +1200, Ben Brown wrote:
>>>> When bringing down then up the link on a 88e1512 phy a link is not
>>>> getting established. This is because the phy is coming out of reset then
>>>> immediately getting configured. During configuration the page is
>>>> unsuccessfully updated causing writes to the wrong registers.
>>>>
>>>> Add the soft reset function that does a reset then polling read waiting
>>>> for the phy to come back online, at which stage the page register can be
>>>> updated successfully.
>>>>
>>>> This was tested on a 88E1512 phy, using ip link to bring up/down the
>>>> link.
>>>
>>> What makes the 88E1512 special that it needs this, but no other
>>> Marvell PHY does?
>>>
>>> Andrew
>>
>> This may be needed on the other marvell phys, but I only have access to
>> a 88E1512 phy so I am only updating what I have seen this on.
>
> The Marvell driver is used a lot, so i would of expected somebody else
> to of noticed.
>
> Lets take a step back.
>
> What sort of reset are we talking about? Software or hardware?
>
> Andrew

It is doing a hardware reset using a GPIO line.

When linked down the phy gets put into reset using a hardware GPIO line,
during link up the phy initializes the hardware using phy_init_hw(),
which de-asserts that reset GPIO. Then trivial setup is done before
the driver specific config_init().

When we are doing the marvell m88e1510_config_init() the first page
write is not applying so it ends up writing configuration to the wrong
registers. When testing fixes adding a 15us sleep before changing the
page also meant the page was updated correctly.