diff mbox

net: phy: at803x: support interrupt on 8030 and 8035

Message ID 1447350020-27969-1-git-send-email-mans@mansr.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Måns Rullgård Nov. 12, 2015, 5:40 p.m. UTC
Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
added interrupt support for the 8031 PHY but left out the other two
chips supported by this driver.

This patch sets the .ack_interrupt and .config_intr functions for the
8030 and 8035 drivers as well.

Signed-off-by: Mans Rullgard <mans@mansr.com>
---
I have only tested this with an 8035.  I can't find a datasheet for
the 8030, but since 8031, 8032, and 8035 all have the same register
layout, there's a good chance 8030 does as well.
---
 drivers/net/phy/at803x.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Mason Nov. 12, 2015, 7:06 p.m. UTC | #1
On 12/11/2015 18:40, Mans Rullgard wrote:
> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
> added interrupt support for the 8031 PHY but left out the other two
> chips supported by this driver.
> 
> This patch sets the .ack_interrupt and .config_intr functions for the
> 8030 and 8035 drivers as well.
> 
> Signed-off-by: Mans Rullgard <mans@mansr.com>
> ---
> I have only tested this with an 8035.  I can't find a datasheet for
> the 8030, but since 8031, 8032, and 8035 all have the same register
> layout, there's a good chance 8030 does as well.
> ---
>  drivers/net/phy/at803x.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
> index fabf11d..2d020a3 100644
> --- a/drivers/net/phy/at803x.c
> +++ b/drivers/net/phy/at803x.c
> @@ -308,6 +308,8 @@ static struct phy_driver at803x_driver[] = {
>  	.flags			= PHY_HAS_INTERRUPT,
>  	.config_aneg		= genphy_config_aneg,
>  	.read_status		= genphy_read_status,
> +	.ack_interrupt		= at803x_ack_interrupt,
> +	.config_intr		= at803x_config_intr,
>  	.driver			= {
>  		.owner = THIS_MODULE,
>  	},
> @@ -327,6 +329,8 @@ static struct phy_driver at803x_driver[] = {
>  	.flags			= PHY_HAS_INTERRUPT,
>  	.config_aneg		= genphy_config_aneg,
>  	.read_status		= genphy_read_status,
> +	.ack_interrupt		= at803x_ack_interrupt,
> +	.config_intr		= at803x_config_intr,
>  	.driver			= {
>  		.owner = THIS_MODULE,
>  	},

Shouldn't we take the opportunity to clean up the duplicated register
definitions? (I'll send an informal patch to spur discussion.)

Regards.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Måns Rullgård Nov. 12, 2015, 7:09 p.m. UTC | #2
On 12 November 2015 19:06:23 GMT+00:00, Mason <slash.tmp@free.fr> wrote:
>On 12/11/2015 18:40, Mans Rullgard wrote:
>> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt
>mode"
>> added interrupt support for the 8031 PHY but left out the other two
>> chips supported by this driver.
>> 
>> This patch sets the .ack_interrupt and .config_intr functions for the
>> 8030 and 8035 drivers as well.
>> 
>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>> ---
>> I have only tested this with an 8035.  I can't find a datasheet for
>> the 8030, but since 8031, 8032, and 8035 all have the same register
>> layout, there's a good chance 8030 does as well.
>> ---
>>  drivers/net/phy/at803x.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>> 
>> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
>> index fabf11d..2d020a3 100644
>> --- a/drivers/net/phy/at803x.c
>> +++ b/drivers/net/phy/at803x.c
>> @@ -308,6 +308,8 @@ static struct phy_driver at803x_driver[] = {
>>  	.flags			= PHY_HAS_INTERRUPT,
>>  	.config_aneg		= genphy_config_aneg,
>>  	.read_status		= genphy_read_status,
>> +	.ack_interrupt		= at803x_ack_interrupt,
>> +	.config_intr		= at803x_config_intr,
>>  	.driver			= {
>>  		.owner = THIS_MODULE,
>>  	},
>> @@ -327,6 +329,8 @@ static struct phy_driver at803x_driver[] = {
>>  	.flags			= PHY_HAS_INTERRUPT,
>>  	.config_aneg		= genphy_config_aneg,
>>  	.read_status		= genphy_read_status,
>> +	.ack_interrupt		= at803x_ack_interrupt,
>> +	.config_intr		= at803x_config_intr,
>>  	.driver			= {
>>  		.owner = THIS_MODULE,
>>  	},
>
>Shouldn't we take the opportunity to clean up the duplicated register
>definitions? (I'll send an informal patch to spur discussion.)
>
>Regards.

That can be done independently. Feel free to send a patch.
Florian Fainelli Nov. 12, 2015, 7:14 p.m. UTC | #3
On 12/11/15 11:09, Måns Rullgård wrote:
> On 12 November 2015 19:06:23 GMT+00:00, Mason <slash.tmp@free.fr> wrote:
>> On 12/11/2015 18:40, Mans Rullgard wrote:
>>> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt
>> mode"
>>> added interrupt support for the 8031 PHY but left out the other two
>>> chips supported by this driver.
>>>
>>> This patch sets the .ack_interrupt and .config_intr functions for the
>>> 8030 and 8035 drivers as well.
>>>
>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>> ---
>>> I have only tested this with an 8035.  I can't find a datasheet for
>>> the 8030, but since 8031, 8032, and 8035 all have the same register
>>> layout, there's a good chance 8030 does as well.
>>> ---
>>>  drivers/net/phy/at803x.c | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
>>> index fabf11d..2d020a3 100644
>>> --- a/drivers/net/phy/at803x.c
>>> +++ b/drivers/net/phy/at803x.c
>>> @@ -308,6 +308,8 @@ static struct phy_driver at803x_driver[] = {
>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>  	.config_aneg		= genphy_config_aneg,
>>>  	.read_status		= genphy_read_status,
>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>> +	.config_intr		= at803x_config_intr,
>>>  	.driver			= {
>>>  		.owner = THIS_MODULE,
>>>  	},
>>> @@ -327,6 +329,8 @@ static struct phy_driver at803x_driver[] = {
>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>  	.config_aneg		= genphy_config_aneg,
>>>  	.read_status		= genphy_read_status,
>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>> +	.config_intr		= at803x_config_intr,
>>>  	.driver			= {
>>>  		.owner = THIS_MODULE,
>>>  	},
>>
>> Shouldn't we take the opportunity to clean up the duplicated register
>> definitions? (I'll send an informal patch to spur discussion.)
>>
>> Regards.
> 
> That can be done independently. Feel free to send a patch.

Agreed, that deserve a separate patch.
Florian Fainelli Nov. 12, 2015, 7:15 p.m. UTC | #4
On 12/11/15 09:40, Mans Rullgard wrote:
> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
> added interrupt support for the 8031 PHY but left out the other two
> chips supported by this driver.
> 
> This patch sets the .ack_interrupt and .config_intr functions for the
> 8030 and 8035 drivers as well.
> 
> Signed-off-by: Mans Rullgard <mans@mansr.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Mason Nov. 12, 2015, 10:14 p.m. UTC | #5
On 12/11/2015 20:14, Florian Fainelli wrote:
> On 12/11/15 11:09, Måns Rullgård wrote:
>> On 12 November 2015 19:06:23 GMT+00:00, Mason wrote:
>>> On 12/11/2015 18:40, Mans Rullgard wrote:
>>>> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
>>>> added interrupt support for the 8031 PHY but left out the other two
>>>> chips supported by this driver.
>>>>
>>>> This patch sets the .ack_interrupt and .config_intr functions for the
>>>> 8030 and 8035 drivers as well.
>>>>
>>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>>> ---
>>>> I have only tested this with an 8035.  I can't find a datasheet for
>>>> the 8030, but since 8031, 8032, and 8035 all have the same register
>>>> layout, there's a good chance 8030 does as well.
>>>> ---
>>>>  drivers/net/phy/at803x.c | 4 ++++
>>>>  1 file changed, 4 insertions(+)
>>>>
>>>> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
>>>> index fabf11d..2d020a3 100644
>>>> --- a/drivers/net/phy/at803x.c
>>>> +++ b/drivers/net/phy/at803x.c
>>>> @@ -308,6 +308,8 @@ static struct phy_driver at803x_driver[] = {
>>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>>  	.config_aneg		= genphy_config_aneg,
>>>>  	.read_status		= genphy_read_status,
>>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>>> +	.config_intr		= at803x_config_intr,
>>>>  	.driver			= {
>>>>  		.owner = THIS_MODULE,
>>>>  	},
>>>> @@ -327,6 +329,8 @@ static struct phy_driver at803x_driver[] = {
>>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>>  	.config_aneg		= genphy_config_aneg,
>>>>  	.read_status		= genphy_read_status,
>>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>>> +	.config_intr		= at803x_config_intr,
>>>>  	.driver			= {
>>>>  		.owner = THIS_MODULE,
>>>>  	},
>>>
>>> Shouldn't we take the opportunity to clean up the duplicated register
>>> definitions? (I'll send an informal patch to spur discussion.)
>>>
>>> Regards.
>>
>> That can be done independently. Feel free to send a patch.
> 
> Agreed, that deserve a separate patch.

Isn't there a problem when at803x_set_wol() sets the AT803X_WOL_ENABLE
bit, but a DISABLE/ENABLE cycle through at803x_config_intr() will
discard that bit?

Regards.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Måns Rullgård Nov. 12, 2015, 10:28 p.m. UTC | #6
Mason <slash.tmp@free.fr> writes:

> On 12/11/2015 20:14, Florian Fainelli wrote:
>> On 12/11/15 11:09, Måns Rullgård wrote:
>>> On 12 November 2015 19:06:23 GMT+00:00, Mason wrote:
>>>> On 12/11/2015 18:40, Mans Rullgard wrote:
>>>>> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
>>>>> added interrupt support for the 8031 PHY but left out the other two
>>>>> chips supported by this driver.
>>>>>
>>>>> This patch sets the .ack_interrupt and .config_intr functions for the
>>>>> 8030 and 8035 drivers as well.
>>>>>
>>>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>>>> ---
>>>>> I have only tested this with an 8035.  I can't find a datasheet for
>>>>> the 8030, but since 8031, 8032, and 8035 all have the same register
>>>>> layout, there's a good chance 8030 does as well.
>>>>> ---
>>>>>  drivers/net/phy/at803x.c | 4 ++++
>>>>>  1 file changed, 4 insertions(+)
>>>>>
>>>>> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
>>>>> index fabf11d..2d020a3 100644
>>>>> --- a/drivers/net/phy/at803x.c
>>>>> +++ b/drivers/net/phy/at803x.c
>>>>> @@ -308,6 +308,8 @@ static struct phy_driver at803x_driver[] = {
>>>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>>>  	.config_aneg		= genphy_config_aneg,
>>>>>  	.read_status		= genphy_read_status,
>>>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>>>> +	.config_intr		= at803x_config_intr,
>>>>>  	.driver			= {
>>>>>  		.owner = THIS_MODULE,
>>>>>  	},
>>>>> @@ -327,6 +329,8 @@ static struct phy_driver at803x_driver[] = {
>>>>>  	.flags			= PHY_HAS_INTERRUPT,
>>>>>  	.config_aneg		= genphy_config_aneg,
>>>>>  	.read_status		= genphy_read_status,
>>>>> +	.ack_interrupt		= at803x_ack_interrupt,
>>>>> +	.config_intr		= at803x_config_intr,
>>>>>  	.driver			= {
>>>>>  		.owner = THIS_MODULE,
>>>>>  	},
>>>>
>>>> Shouldn't we take the opportunity to clean up the duplicated register
>>>> definitions? (I'll send an informal patch to spur discussion.)
>>>>
>>>> Regards.
>>>
>>> That can be done independently. Feel free to send a patch.
>> 
>> Agreed, that deserve a separate patch.
>
> Isn't there a problem when at803x_set_wol() sets the AT803X_WOL_ENABLE
> bit, but a DISABLE/ENABLE cycle through at803x_config_intr() will
> discard that bit?

Possibly, but fixing that should be yet another patch.
David Miller Nov. 16, 2015, 7:19 p.m. UTC | #7
From: Mans Rullgard <mans@mansr.com>
Date: Thu, 12 Nov 2015 17:40:20 +0000

> Commit 77a993942 "phy/at8031: enable at8031 to work on interrupt mode"
> added interrupt support for the 8031 PHY but left out the other two
> chips supported by this driver.
> 
> This patch sets the .ack_interrupt and .config_intr functions for the
> 8030 and 8035 drivers as well.
> 
> Signed-off-by: Mans Rullgard <mans@mansr.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
index fabf11d..2d020a3 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -308,6 +308,8 @@  static struct phy_driver at803x_driver[] = {
 	.flags			= PHY_HAS_INTERRUPT,
 	.config_aneg		= genphy_config_aneg,
 	.read_status		= genphy_read_status,
+	.ack_interrupt		= at803x_ack_interrupt,
+	.config_intr		= at803x_config_intr,
 	.driver			= {
 		.owner = THIS_MODULE,
 	},
@@ -327,6 +329,8 @@  static struct phy_driver at803x_driver[] = {
 	.flags			= PHY_HAS_INTERRUPT,
 	.config_aneg		= genphy_config_aneg,
 	.read_status		= genphy_read_status,
+	.ack_interrupt		= at803x_ack_interrupt,
+	.config_intr		= at803x_config_intr,
 	.driver			= {
 		.owner = THIS_MODULE,
 	},